From 87cb3e0db6ff1067d60457e7b3e1920f3f0cdee9 Mon Sep 17 00:00:00 2001 From: Jonas Lagoni Date: Wed, 13 Apr 2022 10:31:27 +0200 Subject: [PATCH 001/117] Initial page --- pages/docs/migration/_section.md | 4 ++++ pages/docs/migration/migrating-to-v3.md | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 pages/docs/migration/_section.md create mode 100644 pages/docs/migration/migrating-to-v3.md diff --git a/pages/docs/migration/_section.md b/pages/docs/migration/_section.md new file mode 100644 index 00000000000..12839bbb260 --- /dev/null +++ b/pages/docs/migration/_section.md @@ -0,0 +1,4 @@ +--- +title: Migrations +weight: 3 +--- \ No newline at end of file diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md new file mode 100644 index 00000000000..5f0d4c4780a --- /dev/null +++ b/pages/docs/migration/migrating-to-v3.md @@ -0,0 +1,20 @@ +--- +title: "Migrating to v3" +--- +Migration to version 3. +--- + + From 2880b085ae86ab35eebac023964b8f61fd7bb516 Mon Sep 17 00:00:00 2001 From: "jonas-lt@live.dk" Date: Tue, 9 May 2023 15:43:17 +0200 Subject: [PATCH 002/117] add comparisons --- components/Asyncapi3Comparison.js | 434 ++++++++++++++++++++++++ pages/docs/migration/migrating-to-v3.md | 97 +++++- 2 files changed, 515 insertions(+), 16 deletions(-) create mode 100644 components/Asyncapi3Comparison.js diff --git a/components/Asyncapi3Comparison.js b/components/Asyncapi3Comparison.js new file mode 100644 index 00000000000..feb4220ed02 --- /dev/null +++ b/components/Asyncapi3Comparison.js @@ -0,0 +1,434 @@ +import React, { useState } from 'react'; + +// eslint-disable-next-line react/prop-types +export function Asyncapi3Comparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Info: false, + Servers: false, + Paths: false, + PathItem: true, + Summary: false, + Operation: false, + Message: false, + Tags: false, + External: false, + Components: false, + Id: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ Info: false })}> + Info +
+
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
+
setHoverState(prevState => ({ ...prevState, Servers: true }))} onMouseLeave={() => setHoverState({ Servers: false })}> + Servers (hosts + security) +
+
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
+
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item + +
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operation (Publish and Subscribe) + +
+
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ Message: false })}> + Messages +
+ Message + +
+ Headers +
+
+ Payload +
+
+
+
+
+
+
+
+
+
+
setHoverState(prevState => ({ ...prevState, Components: true }))} onMouseLeave={() => setHoverState({ Components: false })}> + Components +
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ Info: false })}> + Info +
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
+
setHoverState(prevState => ({ ...prevState, Servers: true }))} onMouseLeave={() => setHoverState({ Servers: false })}> + Servers (hosts + security) +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item +
+
+ address +
+
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ Message: false })}> + Messages +
+ Message + +
+ Headers +
+
+ Payload +
+
+
+
+
+
+
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operations +
+
+ Operation + +
+
+ action (send or receive) +
+
+ channel +
+
+ messages +
+
+ reply +
+
+
+
+
+
setHoverState(prevState => ({ ...prevState, Components: true }))} onMouseLeave={() => setHoverState({ Components: false })}> + Components +
+
+
+
+ ) +} + +// eslint-disable-next-line react/prop-types +export function Asyncapi3ChannelComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Info: false, + Servers: false, + Paths: false, + PathItem: true, + Summary: false, + Operation: false, + Message: false, + Tags: false, + External: false, + Components: false, + Id: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
+
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item + +
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operation (Publish and Subscribe) + +
+
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ Message: false })}> + Messages +
+ Message + +
+ Headers +
+
+ Payload +
+
+
+
+
+
+
+
+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item +
+
setHoverState(prevState => ({ ...prevState, Message: true }))} onMouseLeave={() => setHoverState({ Message: false })}> + Messages +
+ Message + +
+ Headers +
+
+ Payload +
+
+
+
+
+
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operations +
+
+ Operation +
+
+ action (send or receive) +
+
setHoverState(prevState => ({ ...prevState, Summary: true }))} onMouseLeave={() => setHoverState({ Summary: false })} > + channel +
+
setHoverState(prevState => ({ ...prevState, Summary: true }))} onMouseLeave={() => setHoverState({ Summary: false })} > + messages +
+
+
+
+
+
+
+
+ ) +} + +// eslint-disable-next-line react/prop-types +export function Asyncapi3IdAndAddressComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Info: false, + Servers: false, + Paths: false, + PathItem: true, + Summary: false, + Operation: false, + Message: false, + Tags: false, + External: false, + Components: false, + Id: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels +
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item +
+
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item + +
+
+ address +
+
+
+
+
+
+
+ ) +} + +export function Asyncapi3MetaComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Info: false, + Servers: false, + Paths: false, + PathItem: true, + Summary: false, + Operation: false, + Message: false, + Tags: false, + External: false, + Components: false, + Id: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ Info: false })}> + Info +
+
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Info: true }))} onMouseLeave={() => setHoverState({ Info: false })}> + Info +
+
setHoverState(prevState => ({ ...prevState, Tags: true }))} onMouseLeave={() => setHoverState({ Tags: false })}> +

Tags

+
+
setHoverState(prevState => ({ ...prevState, External: true }))} onMouseLeave={() => setHoverState({ External: false })}> +

External Docs

+
+
+
+
+
+
+ ) +} + + +// eslint-disable-next-line react/prop-types +export function Asyncapi3OperationComparison({ className = '' }) { + const [hoverState, setHoverState] = useState({ + Info: false, + Servers: false, + Paths: false, + PathItem: true, + Summary: false, + Operation: false, + Message: false, + Tags: false, + External: false, + Components: false, + Id: false + }); + + return ( +
+
+

AsyncAPI 2.x

+ +
+
setHoverState(prevState => ({ ...prevState, Paths: true }))} onMouseLeave={() => setHoverState({ Paths: false })}> + Channels + +
+
setHoverState(prevState => ({ ...prevState, PathItem: true }))} onMouseLeave={() => setHoverState({ PathItem: false })}> + Channel Item + +
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operation (Publish and Subscribe) +
+
+
+
+
+
+
+
+

AsyncAPI 3.0

+ +
+
setHoverState(prevState => ({ ...prevState, Operation: true }))} onMouseLeave={() => setHoverState({ Operation: false })}> + Operations +
+
+ Operation + +
+
+ action (send or receive) +
+
+
+
+
+
+
+
+ ) +} diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md index 5f0d4c4780a..8a5c3da92af 100644 --- a/pages/docs/migration/migrating-to-v3.md +++ b/pages/docs/migration/migrating-to-v3.md @@ -1,20 +1,85 @@ --- title: "Migrating to v3" --- -Migration to version 3. ---- +Migration to any new version is always difficult, and AsyncAPI is no exception, but we want to provide as smooth a transition as possible, and this is where this document comes in. It shows the breaking changes between AsyncAPI v2 and v3 in an interactive manner. + + +import {Asyncapi3Comparison, Asyncapi3ChannelComparison, Asyncapi3IdAndAddressComparison, Asyncapi3MetaComparison, Asyncapi3OperationComparison} from '../../../components/Asyncapi3Comparison' + + + +### Operation, Channel and message decoupling + +This is by far the most intrusive breaking change in v3 that completely splits out how operations, channels and messages are related to each other. + + + +In v2, it was impossible to reuse channels, and impossible to have more then one operation per channel, i.e. operation variants. + +In v3, this is now possible, with the mindset, a channel and message should be detached from the operations performed. + +For any message broker, for example kafka, this is the same as defining topics and the messages it contains. For REST interfaces it's all the paths and corresponding messages across all request types. For WebSocket, it's all the messages flowing through the WebSocket server. For Socket.Io, it defines all the rooms and messages therein. + +### Channel address and object id's + +Another breaking change is that the object id of a channel, is no longer the channel path, instead it's an arbitrary unique id, and instead channel paths are described in `address` property. + + + +### Operation keywords + +Another breaking change is that operations no longer are defined with `publish` and `subscribe`and their opposite meaning for your application. Instead you define your application behavior directly, with `send` and `receive` through an `action` property. + + + +#### Subscribe -> Send +``` +asyncapi: 2.6.0 +... +channels: + test/path: + subscribe: + ... +``` + +``` +asyncapi: 3.0.0 +channels: + testPathChannel: + address: test/path + ... +operations: + publishToTestPath: + action: send + channel: + $ref: #/channels/test/ +``` +#### Publish -> Receive + +``` +asyncapi: 2.6.0 +... +channels: + test/path: + publish: + ... +``` + +``` +asyncapi: 3.0.0 +channels: + testPathChannel: + address: test/path + ... +operations: + consumeFromTestPath: + action: receive + channel: + $ref: #/channels/test/ +``` + +### Meta data being moved + +In v2 two properties, `tags` and `externalDocs` was placed outside of the meta information object `info`, this has been moved in v3 to stay consistent. - + From 8bc3949c49e07036b5886f466cfa83752fd3c212 Mon Sep 17 00:00:00 2001 From: "jonas-lt@live.dk" Date: Tue, 9 May 2023 16:47:14 +0200 Subject: [PATCH 003/117] add more sections --- components/Asyncapi3Comparison.js | 9 -- pages/docs/migration/migrating-to-v3.md | 107 +++++++++++++++++++++++- 2 files changed, 104 insertions(+), 12 deletions(-) diff --git a/components/Asyncapi3Comparison.js b/components/Asyncapi3Comparison.js index feb4220ed02..6f948ba2b11 100644 --- a/components/Asyncapi3Comparison.js +++ b/components/Asyncapi3Comparison.js @@ -71,9 +71,6 @@ export function Asyncapi3Comparison({ className = '' }) { -
setHoverState(prevState => ({ ...prevState, Components: true }))} onMouseLeave={() => setHoverState({ Components: false })}> - Components -
@@ -137,16 +134,10 @@ export function Asyncapi3Comparison({ className = '' }) {
messages
-
- reply -
-
setHoverState(prevState => ({ ...prevState, Components: true }))} onMouseLeave={() => setHoverState({ Components: false })}> - Components -
diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md index 8a5c3da92af..ee5f159da59 100644 --- a/pages/docs/migration/migrating-to-v3.md +++ b/pages/docs/migration/migrating-to-v3.md @@ -1,7 +1,7 @@ --- title: "Migrating to v3" --- -Migration to any new version is always difficult, and AsyncAPI is no exception, but we want to provide as smooth a transition as possible, and this is where this document comes in. It shows the breaking changes between AsyncAPI v2 and v3 in an interactive manner. +Migration to any new version is always difficult, and AsyncAPI is no exception, but we want to provide as smooth a transition as possible, and this is where this document comes in. It shows the breaking changes between AsyncAPI v2 and v3 in an interactive manner as well as providing some guidance on why it happened. import {Asyncapi3Comparison, Asyncapi3ChannelComparison, Asyncapi3IdAndAddressComparison, Asyncapi3MetaComparison, Asyncapi3OperationComparison} from '../../../components/Asyncapi3Comparison' @@ -20,19 +20,44 @@ In v3, this is now possible, with the mindset, a channel and message should be d For any message broker, for example kafka, this is the same as defining topics and the messages it contains. For REST interfaces it's all the paths and corresponding messages across all request types. For WebSocket, it's all the messages flowing through the WebSocket server. For Socket.Io, it defines all the rooms and messages therein. +This change makes the channels reusable across multiple AsyncAPI documents, each performing a slightly different action. + ### Channel address and object id's Another breaking change is that the object id of a channel, is no longer the channel path, instead it's an arbitrary unique id, and instead channel paths are described in `address` property. +``` +asyncapi: 2.6.0 +... +channels: + test/path: + ... +``` + +``` +asyncapi: 3.0.0 +channels: + testPathChannel: + address: test/path +``` + ### Operation keywords Another breaking change is that operations no longer are defined with `publish` and `subscribe`and their opposite meaning for your application. Instead you define your application behavior directly, with `send` and `receive` through an `action` property. +For more information about this publish and subscribe confusion here is some more reading materials: +- Fran Méndez's [Proposal to solve publish/subscribe confusion](https://github.com/asyncapi/spec/issues/618) +- Nic Townsend's blog post [Demystifying the Semantics of Publish and Subscribe](https://www.asyncapi.com/blog/publish-subscribe-semantics) + + #### Subscribe -> Send + +Any `subscribe` operation become an action `send`. + ``` asyncapi: 2.6.0 ... @@ -52,10 +77,12 @@ operations: publishToTestPath: action: send channel: - $ref: #/channels/test/ + $ref: #/channels/testPathChannel ``` + #### Publish -> Receive +Any `publish` operation become an action `receive`. ``` asyncapi: 2.6.0 ... @@ -75,7 +102,7 @@ operations: consumeFromTestPath: action: receive channel: - $ref: #/channels/test/ + $ref: #/channels/testPathChannel ``` ### Meta data being moved @@ -83,3 +110,77 @@ operations: In v2 two properties, `tags` and `externalDocs` was placed outside of the meta information object `info`, this has been moved in v3 to stay consistent. + + +``` +asyncapi: 2.6.0 +info: + ... +externalDocs: + description: Find more info here + url: https://www.asyncapi.org +tags: + - name: e-commerce + +``` + +``` +asyncapi: 3.0.0 +info: + externalDocs: + description: Find more info here + url: https://www.asyncapi.org + tags: + - name: e-commerce +``` + +### Unifying explicit and implicit references + +In v2, it was possible to do implicit references, for server security configuration, by name referencing security requirement Object in components, for channels to reference global servers by name. + +In v3, this information MUST be explicit references. The server security information is also now an array instead of an object. + +``` +asyncapi: 2.6.0 +servers: + production: + ... + security: + user_pass: [] +... +channels: + test/path: + severs: + - production +components: + securitySchemes: + user_pass: + ... +``` + +``` +asyncapi: 3.0.0 +servers: + production: + ... + security: + - $ref: "#/components/securitySchemes/user_pass" +... +channels: + test/path: + severs: + - $ref: "#/servers/production" +components: + securitySchemes: + user_pass: + ... + scopes: [] +``` + +### New trait behavior + +TODO + +### Schema format and payload definition + +TODO From b84b1332424a7bd6cca55c71d43f3efc2e86ab58 Mon Sep 17 00:00:00 2001 From: "jonas-lt@live.dk" Date: Tue, 9 May 2023 16:56:07 +0200 Subject: [PATCH 004/117] add more sections --- pages/docs/migration/migrating-to-v3.md | 38 +++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md index ee5f159da59..5dbca37bd3e 100644 --- a/pages/docs/migration/migrating-to-v3.md +++ b/pages/docs/migration/migrating-to-v3.md @@ -22,6 +22,44 @@ For any message broker, for example kafka, this is the same as defining topics a This change makes the channels reusable across multiple AsyncAPI documents, each performing a slightly different action. +``` +asyncapi: 2.6.0 +... +channels: + user/signedup: + publish: + message: + payload: + type: object + properties: + displayName: + type: string + description: Name of the user +``` + +``` +asyncapi: 3.0.0 +... +channels: + UserSignup: + address: user/signedup + messages: + UserMessage: + payload: + type: object + properties: + displayName: + type: string + description: Name of the user +operations: + ConsumeUserSignups: + action: receive + channel: + $ref: "#/channels/UserSignup" +``` + +Read more about the publish and subscribe confusion under [Operation keywords](#operation-keywords). + ### Channel address and object id's Another breaking change is that the object id of a channel, is no longer the channel path, instead it's an arbitrary unique id, and instead channel paths are described in `address` property. From e7e4976f17b3fdc42ffdb2c76f8c549cea3975fa Mon Sep 17 00:00:00 2001 From: "jonas-lt@live.dk" Date: Tue, 9 May 2023 17:13:52 +0200 Subject: [PATCH 005/117] add ref to other docs --- pages/docs/migration/migrating-to-v3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/pages/docs/migration/migrating-to-v3.md b/pages/docs/migration/migrating-to-v3.md index 5dbca37bd3e..ffcf8eb0167 100644 --- a/pages/docs/migration/migrating-to-v3.md +++ b/pages/docs/migration/migrating-to-v3.md @@ -3,6 +3,7 @@ title: "Migrating to v3" --- Migration to any new version is always difficult, and AsyncAPI is no exception, but we want to provide as smooth a transition as possible, and this is where this document comes in. It shows the breaking changes between AsyncAPI v2 and v3 in an interactive manner as well as providing some guidance on why it happened. +For a detailed read through about all the changes (non-breaking as well), please do read X before this, at it might give you some more context about the full list of features in v3. import {Asyncapi3Comparison, Asyncapi3ChannelComparison, Asyncapi3IdAndAddressComparison, Asyncapi3MetaComparison, Asyncapi3OperationComparison} from '../../../components/Asyncapi3Comparison' From 6ab6cc64fd2eeeb8b6bd4a5d58f01a5f5b40bca5 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 17 Jun 2023 02:30:57 +0200 Subject: [PATCH 006/117] chore: update meetings.json and newsrooom_videos.json (#1799) --- config/meetings.json | 6 -- dashboard.json | 185 ++++++++++++++++--------------------------- 2 files changed, 70 insertions(+), 121 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 80432da1f84..6dc62d86fb4 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -5,12 +5,6 @@ "url": "https://github.com/asyncapi/community/issues/624", "date": "2023-03-15T16:00:00.000Z" }, - { - "title": "Career Empowerment and Embracing Equity in Tech", - "calLink": "https://www.google.com/calendar/event?eid=aGc1cDIybTM5MWtsdGFmMjNhOWdqY2MwYzggY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/625", - "date": "2023-03-08T14:00:00.000Z" - }, { "title": "Spec 3.0 Meeting", "calLink": "https://www.google.com/calendar/event?eid=bjE2ZTdnZGJ1bHNxMWhrcW9rcjh0bGRxN3MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", diff --git a/dashboard.json b/dashboard.json index a6eb4638d01..8a91a1cf5c6 100644 --- a/dashboard.json +++ b/dashboard.json @@ -11,6 +11,17 @@ "labels": [], "score": 22.68679251119144 }, + { + "id": "I_kwDOBGu-185CELGB", + "isPR": false, + "isAssigned": false, + "title": "Work on 3.0 release", + "author": "jonaslagoni", + "resourcePath": "/asyncapi/spec/issues/691", + "repo": "asyncapi/spec", + "labels": [], + "score": 21.538094156194408 + }, { "id": "MDU6SXNzdWU5OTMxODc5ODM=", "isPR": false, @@ -27,17 +38,6 @@ ], "score": 20.96374497869589 }, - { - "id": "I_kwDOBGu-185CELGB", - "isPR": false, - "isAssigned": false, - "title": "Work on 3.0 release", - "author": "jonaslagoni", - "resourcePath": "/asyncapi/spec/issues/691", - "repo": "asyncapi/spec", - "labels": [], - "score": 20.67657038994663 - }, { "id": "I_kwDOGJ23c85V9C3c", "isPR": false, @@ -54,17 +54,6 @@ ], "score": 19.815046623698855 }, - { - "id": "PR_kwDOE8Qh385SnNFz", - "isPR": true, - "isAssigned": false, - "title": "chore(website): add info for the general options", - "author": "SumantxD", - "resourcePath": "/asyncapi/modelina/pull/1398", - "repo": "asyncapi/modelina", - "labels": [], - "score": 19 - }, { "id": "I_kwDODou01c5AqLB8", "isPR": false, @@ -81,30 +70,6 @@ ], "score": 18.37917367995256 }, - { - "id": "I_kwDOG115t85D93P0", - "isPR": false, - "isAssigned": true, - "title": "Website UI Kit design/dev project", - "author": "mcturco", - "resourcePath": "/asyncapi/design-system/issues/4", - "repo": "asyncapi/design-system", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - }, - { - "name": "gsoc", - "color": "F4D03F" - }, - { - "name": "🎨 design", - "color": "0D67D3" - } - ], - "score": 17.517649913704783 - }, { "id": "PR_kwDOBW5R_c5KIyGW", "isPR": true, @@ -113,28 +78,8 @@ "author": "sambhavgupta0705", "resourcePath": "/asyncapi/website/pull/1349", "repo": "asyncapi/website", - "labels": [ - { - "name": "📑 docs", - "color": "E50E99" - }, - { - "name": "area/docs", - "color": "e50e99" - } - ], - "score": 15.220253203710714 - }, - { - "id": "PR_kwDOCoBobc5I0WzT", - "isPR": true, - "isAssigned": false, - "title": "docs: document rules", - "author": "magicmatatjahu", - "resourcePath": "/asyncapi/parser-js/pull/700", - "repo": "asyncapi/parser-js", "labels": [], - "score": 14.645904026212197 + "score": 16.36895155870775 }, { "id": "PR_kwDODCuNRs5Nh35U", @@ -147,6 +92,37 @@ "labels": [], "score": 14.358729437462937 }, + { + "id": "PR_kwDOBW5R_c5Jw5C6", + "isPR": true, + "isAssigned": true, + "title": "docs: new style guide - Inclusive Language", + "author": "BhaswatiRoy", + "resourcePath": "/asyncapi/website/pull/1327", + "repo": "asyncapi/website", + "labels": [], + "score": 14.07155484871368 + }, + { + "id": "PR_kwDOBW5R_c5J9Eji", + "isPR": true, + "isAssigned": true, + "title": "docs: new style guide - Grammar", + "author": "Arya-Gupta", + "resourcePath": "/asyncapi/website/pull/1343", + "repo": "asyncapi/website", + "labels": [ + { + "name": "📑 docs", + "color": "E50E99" + }, + { + "name": "area/docs", + "color": "e50e99" + } + ], + "score": 13.78438025996442 + }, { "id": "PR_kwDOFDnrNc5RUbi_", "isPR": true, @@ -159,18 +135,39 @@ "score": 13.497205671215161 }, { - "id": "PR_kwDOE8Qh385SsTxJ", + "id": "I_kwDOCVQpZM5M_dcV", + "isPR": false, + "isAssigned": false, + "title": "DocsUI: Messages Object output", + "author": "mcturco", + "resourcePath": "/asyncapi/asyncapi-react/issues/618", + "repo": "asyncapi/asyncapi-react", + "labels": [], + "score": 12.922856493716644 + }, + { + "id": "PR_kwDOBGu-185KHmXZ", "isPR": true, "isAssigned": false, - "title": "chore: added java options to playground #1396", - "author": "SumantxD", - "resourcePath": "/asyncapi/modelina/pull/1400", - "repo": "asyncapi/modelina", + "title": "feat: new traits merge mechanism", + "author": "magicmatatjahu", + "resourcePath": "/asyncapi/spec/pull/907", + "repo": "asyncapi/spec", "labels": [], - "score": 13 + "score": 12.061332727468868 } ], "goodFirstIssues": [ + { + "id": "I_kwDOFLhIt85o9dDJ", + "title": "Add 2023 mentorship directory", + "isAssigned": false, + "resourcePath": "/asyncapi/community/issues/753", + "repo": "asyncapi/community", + "author": "AceTheCreator", + "area": "Unknown", + "labels": [] + }, { "id": "I_kwDOFLhIt85oSfWg", "title": "As A user, the CI should prevent me schedule an adhoc meeting in the past", @@ -186,29 +183,6 @@ } ] }, - { - "id": "I_kwDOE8Qh385oPFUl", - "title": "Add Java options to the playground", - "isAssigned": false, - "resourcePath": "/asyncapi/modelina/issues/1396", - "repo": "asyncapi/modelina", - "author": "jonaslagoni", - "area": "Unknown", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - }, - { - "name": "Java generator", - "color": "d4c5f9" - }, - { - "name": "website", - "color": "57A793" - } - ] - }, { "id": "I_kwDOE8Qh385nTDiB", "title": "Add descriptions for options in playground", @@ -653,25 +627,6 @@ } ] }, - { - "id": "I_kwDOCoBobc5KYpv0", - "title": "Document how to fix randomly failing tests during development", - "isAssigned": false, - "resourcePath": "/asyncapi/parser-js/issues/558", - "repo": "asyncapi/parser-js", - "author": "derberg", - "area": "docs", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - }, - { - "name": "stale", - "color": "ededed" - } - ] - }, { "id": "I_kwDOBW5R_c5IRxcq", "title": "[📑 Docs]: update docs issues in ALL repos that are missing the `area/docs` label ", From 0b0ab18cf55ae6fb2bb022f717f66897e88a89b6 Mon Sep 17 00:00:00 2001 From: Aadrika Bhargava <64789514+reachaadrika@users.noreply.github.com> Date: Sat, 17 Jun 2023 16:28:36 +0530 Subject: [PATCH 007/117] feat: adding unit tests for typography component (#1793) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com> --- components/typography/Paragraph.js | 2 +- components/typography/TextLink.js | 2 +- cypress/test/typography/Heading.cy.js | 25 +++++++++++++++++++ cypress/test/typography/Paragraph.cy.js | 32 ++++++++++++++++++++++++ cypress/test/typography/TextLink.cy.js | 33 +++++++++++++++++++++++++ 5 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 cypress/test/typography/Heading.cy.js create mode 100644 cypress/test/typography/Paragraph.cy.js create mode 100644 cypress/test/typography/TextLink.cy.js diff --git a/components/typography/Paragraph.js b/components/typography/Paragraph.js index 6da9faa1b63..c99b621d5d7 100644 --- a/components/typography/Paragraph.js +++ b/components/typography/Paragraph.js @@ -23,6 +23,6 @@ export default function Paragraph({ } return ( -

{children}

+

{children}

) } \ No newline at end of file diff --git a/components/typography/TextLink.js b/components/typography/TextLink.js index 2810218811e..a9782b91548 100644 --- a/components/typography/TextLink.js +++ b/components/typography/TextLink.js @@ -14,7 +14,7 @@ export default function TextLink({ <> {' '} - + {children} diff --git a/cypress/test/typography/Heading.cy.js b/cypress/test/typography/Heading.cy.js new file mode 100644 index 00000000000..9081127df4b --- /dev/null +++ b/cypress/test/typography/Heading.cy.js @@ -0,0 +1,25 @@ +import { mount } from '@cypress/react'; +import Heading from '../../../components/typography/Heading' +describe('Heading Component', () => { + beforeEach(() => { + cy.mount(Default Heading); + }); + + it('renders the heading with the default props', () => { + cy.get('h2').should('have.class', 'text-primary-800'); + cy.get('h2').should( 'have.class','font-heading text-heading-md font-bold tracking-heading md:text-heading-lg' ); + cy.get('h2').should('contain', 'Default Heading'); + }); + + it('renders the heading with custom props', () => { + cy.mount( + + Heading with custom styles + + ); + cy.get('h3').should('have.class', 'text-red-500'); + cy.get('h3').should( 'have.class','font-heading text-heading-sm font-semibold tracking-heading'); + cy.get('h3').should('contain', 'Heading with custom styles'); + }); + }); + \ No newline at end of file diff --git a/cypress/test/typography/Paragraph.cy.js b/cypress/test/typography/Paragraph.cy.js new file mode 100644 index 00000000000..2d30074acd8 --- /dev/null +++ b/cypress/test/typography/Paragraph.cy.js @@ -0,0 +1,32 @@ +import { mount } from '@cypress/react'; +import Paragraph from '../../../components/typography/Paragraph'; +describe('Paragraph Component', () => { + beforeEach(() => { + cy.mount( + + Default Paragraph + + ); + }); + + it('renders the paragraph with the default props', () => { + cy.get('[data-testid="Paragraph-test" ]').should('have.class', 'text-gray-700'); + cy.get('[data-testid="Paragraph-test" ]').should('have.class', 'text-lg'); + cy.get('[data-testid="Paragraph-test" ]').should('have.class', 'font-bold'); + cy.get('[data-testid="Paragraph-test" ]').should('contain', 'Default Paragraph'); + }); + + it('renders the paragraph with custom props', () => { + cy.mount( + + Paragraph with custom styles + + ); + + cy.get('[data-testid="Paragraph-test" ]').should('have.class', 'text-blue-500'); + cy.get('[data-testid="Paragraph-test" ]').should('have.class', 'text-md'); + cy.get('[data-testid="Paragraph-test" ]').should('have.class', 'font-semibold'); + cy.get('[data-testid="Paragraph-test" ]').should('contain', 'Paragraph with custom styles'); + }); + }); + \ No newline at end of file diff --git a/cypress/test/typography/TextLink.cy.js b/cypress/test/typography/TextLink.cy.js new file mode 100644 index 00000000000..4e19c7f23e8 --- /dev/null +++ b/cypress/test/typography/TextLink.cy.js @@ -0,0 +1,33 @@ +import { mount } from '@cypress/react'; +import TextLink from '../../../components/typography/TextLink' +describe('TextLink Component', () => { + it('renders a Textlink with the provided props and content', () => { + const href = '/test'; + const className = 'custom-class'; + const target = '_blank'; + const id = 'test-link'; + const children = 'Test Link'; + + cy.mount( + + {children} + + ); + + cy.get('[data-testid="TextLink-href" ]') + .should('have.attr', 'href', href) + .should('have.class', 'text-secondary-500') + .should('have.class', 'underline') + .should('have.class', 'hover:text-gray-800') + .should('have.class', 'font-medium') + .should('have.class', 'transition') + .should('have.class', 'ease-in-out') + .should('have.class', 'duration-300') + .should('have.class', className) + .should('have.attr', 'target', target) + .should('have.attr', 'rel', 'noreferrer noopener') + .should('have.attr', 'id', id) + .should('contain', children); + }); + }); + \ No newline at end of file From 0e6fcabad00352b9ef79e5df8cb6c7ad12d351ca Mon Sep 17 00:00:00 2001 From: Aadrika Bhargava <64789514+reachaadrika@users.noreply.github.com> Date: Sat, 17 Jun 2023 17:58:49 +0530 Subject: [PATCH 008/117] feat: adding unit tests for docsCards and feature folders (#1763) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com> --- components/docs/DocsCards.js | 12 +++--- components/features/FeatureList.js | 50 ++++++++++++++++++++++++ components/features/index.jsx | 62 ++++-------------------------- cypress/test/docs/DocsCards.cy.js | 46 ++++++++++++++++++++++ cypress/test/features/index.cy.js | 29 ++++++++++++++ 5 files changed, 139 insertions(+), 60 deletions(-) create mode 100644 components/features/FeatureList.js create mode 100644 cypress/test/docs/DocsCards.cy.js create mode 100644 cypress/test/features/index.cy.js diff --git a/components/docs/DocsCards.js b/components/docs/DocsCards.js index 39aa1bd733a..8262e37ac97 100644 --- a/components/docs/DocsCards.js +++ b/components/docs/DocsCards.js @@ -6,10 +6,12 @@ import { buckets } from '../data/buckets'; export function DocsCards() { return ( -
+
{buckets.map(card => ( + ))} +
); } @@ -17,17 +19,17 @@ export function DocsCards() { function Card({ title, description, link, className, Icon }) { return ( - +
-
+
-
- +
+
{title}
diff --git a/components/features/FeatureList.js b/components/features/FeatureList.js new file mode 100644 index 00000000000..c8fec12b78c --- /dev/null +++ b/components/features/FeatureList.js @@ -0,0 +1,50 @@ +export const features = [ + { + name: "Specification", + description: + "Allows you to define the interfaces of asynchronous APIs and is protocol agnostic.", + links: [{ label: "Documentation", href: "docs/specifications/latest", id:'whyasyncapi-spec-documentation-link' }], + }, + { + name: "Document APIs", + description: + "Use our tools to generate documentation at the build level, on a server, and on a client.", + links: [ + { + label: "HTML Template", + href: "https://github.com/asyncapi/html-template", + id:'whyasyncapi-apis-htmltemplate-link' + }, + { + label: "React Component", + href: "https://github.com/asyncapi/asyncapi-react/", + id:'whyasyncapi-apis-reactcomponents-link' + }, + ], + }, + { + name: "Code Generation", + description: + "Generate documentation, Code (TypeScript, Java, C#, etc), and more out of your AsyncAPI files.", + links: [{ label: "Generator", href: "tools/generator", id:'whyasyncapi-generation-generator-link' }, { label: "Modelina", href: "tools/modelina", id:'whyasyncapi-generation-modelina-link' }], + }, + { + name: "Community", + description: "We're a community of great people who are passionate about AsyncAPI and event-driven architectures.", + links: [ + { label: "Join our Slack", href: "https://asyncapi.com/slack-invite", id:'whyasyncapi-community-slack-link' }, + ], + }, + { + name: "Open Governance", + description: + "Our Open-Source project is part of Linux Foundation and works under an Open Governance model.", + links: [{ label: "Read more about Open Governance", href: "blog/governance-motivation", id:'whyasyncapi-governance-more-link' }, { label: "TSC Members", href: "community/tsc", id:'whyasyncapi-governance-tsc-link' }], + }, + { + name: "And much more...", + description: + "We have many different tools and welcome you to explore our ideas and propose new ideas to AsyncAPI.", + links: [{ label: "View GitHub Discussions", href: "https://github.com/asyncapi/community/discussions", id:'whyasyncapi-muchmore-github-link' }], + }, + ]; \ No newline at end of file diff --git a/components/features/index.jsx b/components/features/index.jsx index f6c2627ebc9..3ec6b0d00fb 100644 --- a/components/features/index.jsx +++ b/components/features/index.jsx @@ -2,57 +2,7 @@ import Heading from "../typography/Heading"; import Paragraph from "../typography/Paragraph"; import TextLink from "../typography/TextLink"; import Link from 'next/link' - -const features = [ - { - name: "Specification", - description: - "Allows you to define the interfaces of asynchronous APIs and is protocol agnostic.", - links: [{ label: "Documentation", href: "docs/specifications/latest", id:'whyasyncapi-spec-documentation-link' }], - }, - { - name: "Document APIs", - description: - "Use our tools to generate documentation at the build level, on a server, and on a client.", - links: [ - { - label: "HTML Template", - href: "https://github.com/asyncapi/html-template", - id:'whyasyncapi-apis-htmltemplate-link' - }, - { - label: "React Component", - href: "https://github.com/asyncapi/asyncapi-react/", - id:'whyasyncapi-apis-reactcomponents-link' - }, - ], - }, - { - name: "Code Generation", - description: - "Generate documentation, Code (TypeScript, Java, C#, etc), and more out of your AsyncAPI files.", - links: [{ label: "Generator", href: "tools/generator", id:'whyasyncapi-generation-generator-link' }, { label: "Modelina", href: "tools/modelina", id:'whyasyncapi-generation-modelina-link' }], - }, - { - name: "Community", - description: "We're a community of great people who are passionate about AsyncAPI and event-driven architectures.", - links: [ - { label: "Join our Slack", href: "https://asyncapi.com/slack-invite", id:'whyasyncapi-community-slack-link' }, - ], - }, - { - name: "Open Governance", - description: - "Our Open-Source project is part of Linux Foundation and works under an Open Governance model.", - links: [{ label: "Read more about Open Governance", href: "blog/governance-motivation", id:'whyasyncapi-governance-more-link' }, { label: "TSC Members", href: "community/tsc", id:'whyasyncapi-governance-tsc-link' }], - }, - { - name: "And much more...", - description: - "We have many different tools and welcome you to explore our ideas and propose new ideas to AsyncAPI.", - links: [{ label: "View GitHub Discussions", href: "https://github.com/asyncapi/community/discussions", id:'whyasyncapi-muchmore-github-link' }], - }, -]; +import { features } from "./FeatureList"; export default function Features() { return ( @@ -69,14 +19,16 @@ export default function Features() { Improving the current state of Event-Driven Architectures (EDA)
-
    +
      {features.map((feature) => ( -
    • -
      +
    • +
      {feature.name} @@ -86,7 +38,7 @@ export default function Features() { )}
      -
      +
      {feature.links.map((link) => { return ( diff --git a/cypress/test/docs/DocsCards.cy.js b/cypress/test/docs/DocsCards.cy.js new file mode 100644 index 00000000000..8814b497c59 --- /dev/null +++ b/cypress/test/docs/DocsCards.cy.js @@ -0,0 +1,46 @@ +import React from 'react'; +import { mount } from '@cypress/react'; +import { DocsCards } from '../../../components/docs/DocsCards'; +import { buckets } from '../../../components/data/buckets'; + +describe('DocsCards', () => { + beforeEach(() => { + mount(); + }); + + const cards = buckets.map((bucket) => ({ + title: bucket.title, + description: bucket.description, + link: bucket.link, + className: bucket.className, + Icon: bucket.Icon, + })); + + it('renders the correct number of cards', () => { + cy.get('[data-testid="Docs-main-div"] [data-testid="Docs-link"]').should('have.length', cards.length); + }); + + it('renders card titles and descriptions correctly', () => { + cy.get('[data-testid="Docs-main-div"] ').each(($card, index) => { + const card = cards[index]; + cy.wrap($card).within(() => { + cy.get('[data-testid="Docs-div-contents"]').should('contain', card.title); + cy.get('[data-testid="Docs-div-contents"]').should('contain', card.description); + }); + }); + }); + + it('navigates to the correct link on card click', () => { + cy.get('[data-testid="Docs-main-div"]').each(($card, index) => { + const card = cards[index]; + cy.wrap($card).get('[data-testid="Docs-link"]').should('have.attr', 'href', card.link); + }); + }); + + it('renders each icon correctly', () => { + cy.get('[data-testid="Docs-main-div"] ').each(($card, index) => { + const card = cards[index]; + cy.wrap($card).get('[data-testid="Docs-icon"]').should('exist'); + }); + }); +}); diff --git a/cypress/test/features/index.cy.js b/cypress/test/features/index.cy.js new file mode 100644 index 00000000000..71eecd31068 --- /dev/null +++ b/cypress/test/features/index.cy.js @@ -0,0 +1,29 @@ +import React from 'react'; +import { mount } from 'cypress/react'; +import Features from '../../../components/features/index'; +import { features } from '../../../components/features/FeatureList'; +describe('Features Component', () => { + it('renders all features with their names, descriptions, and links', () => { + mount(); + + //check number of features rendered is equal to features array + cy.get('[data-testid="Feature-ul"] [data-testid="Feature-li"]').should('have.length', features.length); // there are 6 features in the list + + features.forEach((feature, index) => { + cy.get('[data-testid="Feature-ul"] [data-testid="Feature-li"]').eq(index).as('feature'); + + cy.get('@feature').within(() => { + cy.get('h3').should('have.text', feature.name); + cy.get('p').should('have.text', feature.description); + + feature.links.forEach((link, linkIndex) => { + cy.get('a').eq(linkIndex).should('have.attr', 'href').then((hrefValue) => { + const formattedHrefValue = hrefValue.replace(/^\//, ''); // remove this / so that the value is equal to link.href + expect(formattedHrefValue).to.equal(link.href); + }); + }); + + }); + }); + }); +}); From e1c31b60e0cf3a88e623eebfd7719e1262dd58cb Mon Sep 17 00:00:00 2001 From: Aadrika Bhargava <64789514+reachaadrika@users.noreply.github.com> Date: Sat, 17 Jun 2023 18:16:25 +0530 Subject: [PATCH 009/117] feat: adding unit tests for community folder (#1761) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com> --- components/community/Card.js | 10 ++--- components/community/Header.js | 9 +++-- components/community/Hero.js | 14 +++---- components/community/HomeCard.js | 9 +++-- cypress/test/community/Card.cy.js | 55 +++++++++++++++++++++++++++ cypress/test/community/Header.cy.js | 31 +++++++++++++++ cypress/test/community/Hero.cy.js | 30 +++++++++++++++ cypress/test/community/HomeCard.cy.js | 24 ++++++++++++ 8 files changed, 162 insertions(+), 20 deletions(-) create mode 100644 cypress/test/community/Card.cy.js create mode 100644 cypress/test/community/Header.cy.js create mode 100644 cypress/test/community/Hero.cy.js create mode 100644 cypress/test/community/HomeCard.cy.js diff --git a/components/community/Card.js b/components/community/Card.js index 8fdbe1828d1..b5be16046b9 100644 --- a/components/community/Card.js +++ b/components/community/Card.js @@ -15,12 +15,12 @@ export default function SmallHomeCards({icon, tagline, taglineBg, type="large",
      {icon} {tagline}
      -
      +
      {heading}
      -
      +
      -
      +
      @@ -48,7 +48,7 @@ export default function SmallHomeCards({icon, tagline, taglineBg, type="large", {icon} {tagline}
      -
      +
      -
      +
      {description}
      diff --git a/components/community/Header.js b/components/community/Header.js index be4cf8af8ca..b2e092e81a3 100644 --- a/components/community/Header.js +++ b/components/community/Header.js @@ -5,7 +5,7 @@ import Button from '../buttons/Button'; export default function Header({className = ''}) { return ( -
      +
      AsyncAPI Community -
      +
      Welcome to the @@ -21,12 +21,13 @@ export default function Header({className = ''}) {
      -
      +
      We're an OSS community that's passionate about AsyncAPI. Join us in building the future of Event Driven APIs by asking questions, @@ -39,7 +40,7 @@ export default function Header({className = ''}) { text="AsyncAPI Discussions" href="https://github.com/orgs/asyncapi/discussions" target="_blank" - icon={} + icon={} />
      diff --git a/components/community/Hero.js b/components/community/Hero.js index 2efe879338f..64905917ffc 100644 --- a/components/community/Hero.js +++ b/components/community/Hero.js @@ -5,28 +5,28 @@ export default function Hero({ className = '' }) { return ( <>
      -
      -
      +
      +
      {orbitData[0].map((orbit) => (
      - {orbit.alt} + {orbit.alt}
      ))}
      -
      +
      {orbitData[1].map((orbit) => (
      - {orbit.alt} + {orbit.alt}
      ))}
      -
      +
      {orbitData[2].map((orbit) => (
      - {orbit.alt} + {orbit.alt}
      ))}
      diff --git a/components/community/HomeCard.js b/components/community/HomeCard.js index 5a3394d3242..910937de986 100644 --- a/components/community/HomeCard.js +++ b/components/community/HomeCard.js @@ -6,17 +6,18 @@ export default function HomeCards({headline, title, description, btnText, link, return (
      -
      +
      {headline}
      -
      - +
      + {title} {description} -
      +
      diff --git a/cypress/test/community/Card.cy.js b/cypress/test/community/Card.cy.js new file mode 100644 index 00000000000..eaea9262428 --- /dev/null +++ b/cypress/test/community/Card.cy.js @@ -0,0 +1,55 @@ +import { mount } from 'cypress/react'; +import SmallHomeCards from '../../../components/community/Card'; +import React from 'react'; +import IconArrowUp from '../../../components/icons/ArrowUp'; + +describe('SmallHomeCards', () => { + it('renders small card correctly', () => { + const props = { + type: 'small', + icon: , + tagline: 'Tagline', + taglineBg: 'bg-gray-100', + heading: 'Heading', + description: 'Description', + bg: 'bg-white', + btnText: 'Button', + btnBg: 'bg-gray-200', + link: '/path' + }; + + mount( ); + // Testing for small prop classes and styles + + cy.get('[data-testid="Card-heading"]').contains('Heading').should('exist'); + cy.get('[data-testid="Card-desc"]').contains('Description').should('exist'); + cy.get('[data-testid="Card-heading"]').should('have.class','mt-3'); + cy.get('[data-testid="Card-desc"]').should('have.class','mt-2'); + }); + + it('renders large card correctly', () => { + const props = { + type: 'large', + icon: , + tagline: 'Tagline', + taglineBg: 'bg-gray-100', + heading: 'Heading', + description: 'Description', + bg: 'bg-blue-500', + btnText: 'Button', + btnBg: 'bg-gray-200', + link: '/path' + }; + + mount(); + + // Testing for large prop classes and styles + cy.get('[data-testid="Card-heading-lg"]').contains('Heading').should('exist'); + cy.get('[data-testid="Card-desc-lg"]').contains('Description').should('exist'); + cy.get('[data-testid="Card-heading-lg"]').should('have.class','mt-10'); + cy.get('[data-testid="Card-desc-lg"]').should('have.class','mt-6'); + + + }); +}); +// note : props passed can be changed according to the user \ No newline at end of file diff --git a/cypress/test/community/Header.cy.js b/cypress/test/community/Header.cy.js new file mode 100644 index 00000000000..bc99d3bf585 --- /dev/null +++ b/cypress/test/community/Header.cy.js @@ -0,0 +1,31 @@ +import React from 'react'; +import { mount } from 'cypress/react'; +import Header from '../../../components/community/Header'; + +describe('Header Component', () => { + it('renders the Header component correctly', () => { + mount(
      ); + cy.get('[data-testid="Header-hero-heading"]').should('exist'); + cy.get('[data-testid="Header-heading-1"]').should('exist'); + cy.get('[data-testid="Header-heading-2"]').should('exist'); + cy.contains('AsyncAPI Discussions').should('exist'); + + }); + + it('displays the correct text in the Heading components and styles ', () => { + mount(
      ); + cy.get('[data-testid="Header-hero-heading"]').contains('AsyncAPI Community').should('have.class', 'font-bold'); + cy.get('[data-testid="Header-heading-1"]').contains('Welcome to the AsyncAPI Community').should('have.class','title block md:-mt-1 leading-[3rem]'); + cy.get('[data-testid="Header-heading-2"]').contains('We\'re an OSS community').should('have.class','text-slate-500 text-sm') + }); + + it('contains a Button component with the correct props', () => { + mount(
      ); + + cy.contains('AsyncAPI Discussions') + .should('have.attr', 'href', 'https://github.com/orgs/asyncapi/discussions') + .and('have.attr', 'target', '_blank'); + cy.get('[data-testid="Header-IconRocket"]').should('exist'); + + }); +}); diff --git a/cypress/test/community/Hero.cy.js b/cypress/test/community/Hero.cy.js new file mode 100644 index 00000000000..54c80d31cf3 --- /dev/null +++ b/cypress/test/community/Hero.cy.js @@ -0,0 +1,30 @@ +import React from 'react'; +import { mount } from 'cypress/react'; +import Hero from '../../../components/community/Hero' +import orbitData from '../../../config/orbitData.json' + +describe('Hero Component', () => { + beforeEach(() => { + mount(); + }); + + it('renders the complete component' ,() => { + cy.get('[data-testid="orbit-div"]').should('exist') + }) + it('renders the first orbit with orbitData', () => { + cy.get('[data-testid="Hero-first"]').should('exist'); + cy.get('[data-testid="Hero-firstimg"]').should('have.length', orbitData[0].length); + }); + + it('renders the second orbit with orbitData', () => { + cy.get('[data-testid="Hero-second"]').should('exist'); + cy.get('[data-testid="Hero-secondimg"]').should('have.length', orbitData[1].length); + }); + + it('renders the third orbit with orbitData', () => { + cy.get('[data-testid="Hero-third"]').should('exist'); + cy.get('[data-testid="Hero-thirdimg"]').should('have.length', orbitData[2].length); + }); + + +}); diff --git a/cypress/test/community/HomeCard.cy.js b/cypress/test/community/HomeCard.cy.js new file mode 100644 index 00000000000..5ef50f812c4 --- /dev/null +++ b/cypress/test/community/HomeCard.cy.js @@ -0,0 +1,24 @@ +import React from 'react'; +import { mount } from '@cypress/react'; +import HomeCards from '../../../components/community/HomeCard'; + +describe('HomeCards Component', () => { + it('renders correctly', () => { + const props = { + headline: 'Heading Hero', + title: 'Title', + description: ' Description', + btnText: 'Button', + link: 'https://sample.com', + className: 'sample-class', + }; + + mount(); + cy.get('[data-testid="HomeCard-main"]').should('exist'); + cy.get('[data-testid="HomeCard-title"]').should('exist'); + cy.get('[data-testid="HomeCard-button"]').should('exist'); + cy.get(`[href="https://sample.com"]`).should('exist'); + cy.get('.sample-class').should('exist'); + }); +}); +// note : props passed can be changed according to the user \ No newline at end of file From a4006fcbfc023a94ff706621751e984a64b4a19d Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sun, 18 Jun 2023 02:35:12 +0200 Subject: [PATCH 010/117] chore: update meetings.json and newsrooom_videos.json (#1800) --- dashboard.json | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/dashboard.json b/dashboard.json index 8a91a1cf5c6..d0106c02b51 100644 --- a/dashboard.json +++ b/dashboard.json @@ -608,25 +608,6 @@ } ] }, - { - "id": "I_kwDODou01c5TDLWP", - "title": "Unnecessary assertion since it does not change the type of the expression.", - "isAssigned": true, - "resourcePath": "/asyncapi/studio/issues/447", - "repo": "asyncapi/studio", - "author": "AceTheCreator", - "area": "typescript", - "labels": [ - { - "name": "stale", - "color": "ededed" - }, - { - "name": "hacktoberfest", - "color": "5B0291" - } - ] - }, { "id": "I_kwDOBW5R_c5IRxcq", "title": "[📑 Docs]: update docs issues in ALL repos that are missing the `area/docs` label ", From 8bb6f91e73c46039dd6d8e46c6c20f2cdc00f275 Mon Sep 17 00:00:00 2001 From: Aadrika Bhargava <64789514+reachaadrika@users.noreply.github.com> Date: Sun, 18 Jun 2023 15:38:17 +0530 Subject: [PATCH 011/117] feat: adding stylesheets to cypress components (#1802) --- cypress/support/component.js | 1 + 1 file changed, 1 insertion(+) diff --git a/cypress/support/component.js b/cypress/support/component.js index 0d9eef9057d..74a4436ff16 100644 --- a/cypress/support/component.js +++ b/cypress/support/component.js @@ -20,6 +20,7 @@ import './commands' // require('./commands') import { mount } from 'cypress/react' +import '../../styles/globals.css' Cypress.Commands.add('mount', mount) From ebdcd3f2f7f7b3ce14c167e1781c711d69d590dd Mon Sep 17 00:00:00 2001 From: Jonas Lagoni Date: Tue, 20 Jun 2023 16:03:38 +0200 Subject: [PATCH 012/117] chore: adjust address for reply (#1807) --- pages/blog/the-new-era-approaches.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/blog/the-new-era-approaches.md b/pages/blog/the-new-era-approaches.md index 576936e2a82..0f051ecb2ed 100644 --- a/pages/blog/the-new-era-approaches.md +++ b/pages/blog/the-new-era-approaches.md @@ -64,7 +64,7 @@ channels: - $ref: "#/servers/websocket" turnStreetlightOnReplyChannel: - address: null + address: "/" messages: turnOnReply: $ref: "#/components/messages/turnOnReply" From 75da4fbd47c9ef6694055e026657a896136758cb Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 21 Jun 2023 13:38:44 +0200 Subject: [PATCH 013/117] docs(generator): update latest generator documentation (#1816) --- .../docs/tools/generator/asyncapi-document.md | 38 ++++++------ pages/docs/tools/generator/parser.md | 60 +++++++++---------- 2 files changed, 51 insertions(+), 47 deletions(-) diff --git a/pages/docs/tools/generator/asyncapi-document.md b/pages/docs/tools/generator/asyncapi-document.md index 8e487ab74e2..82d1a7d717c 100644 --- a/pages/docs/tools/generator/asyncapi-document.md +++ b/pages/docs/tools/generator/asyncapi-document.md @@ -5,24 +5,25 @@ weight: 40 The **AsyncAPI document** defines a standard, protocol-agnostic interface that describes message-based or event-driven APIs. The AsyncAPI document allows people or machines communicating with one another, to understand the capabilities of an event-driven API without requiring access to the source code, documentation, or inspecting the network traffic. -This document allows you to define your API structures and formats, including channels the end user can subscribe to and the message formats they receive. +This document allows you to define your API structures and formats, including channels the end user can subscribe to and the message formats they receive. The documents describing the message-driven API under the AsyncAPI specification are represented as JSON objects and conform to JSON standards. YAML, a superset of JSON, can also be used to represent an API. -> - To learn how to create an AsyncAPI document or refresh your knowledge about the syntax and structure of the AsyncAPI document, check out our [latest specification documentation](https://www.asyncapi.com/docs/reference/specification/latest). +> - To learn how to create an AsyncAPI document or refresh your knowledge about the syntax and structure of the AsyncAPI document, check out our [latest specification documentation](https://www.asyncapi.com/docs/reference/specification/latest). > - You can develop, validate, and convert the AsyncAPI document to the latest version or preview your AsyncAPI document in a more readable way using the [AsyncAPI Studio](https://studio.asyncapi.com/). In the following sections, you'll learn about the inner working of the generator, what happens once the AsyncAPI document is fed to the generator, and how you can access the content of the document in your template. ## AsyncAPI document generation process -1. The **Generator** receives the **AsyncAPI Document** as input. + +1. The **Generator** receives the **AsyncAPI Document** as input. 2. The **Generator** sends to the **[Parser](parser)** the **asyncapiString** is a stringified version of the original **AsyncAPI Document** to validate and parse it. -3. The **Parser** validates the **AsyncAPI Document** using additional schema-related plugins, either the OpenAPI schema, RAML data types, or Avro schema. -4. If the **Parser** determines that the **AsyncAPI Document** is valid, it manipulates the original JSON/YAML document and provides a set of helper functions in return, bundling them together into an **asyncapi** variable that is an instance of [**AsyncAPIDocument**](https://github.com/asyncapi/parser-js/blob/master/API.md#module_@asyncapi/parser+AsyncAPIDocument). -5. At this point, the **Generator** passes the **originalAsyncAPI** and the **asyncapi** which make up part of the **[Template Context](asyncapi-context)** to the **Render Engine**. +3. The **Parser** validates the **AsyncAPI Document** using additional schema-related plugins, either the OpenAPI schema, RAML data types, or Avro schema. +4. If the **Parser** determines that the **AsyncAPI Document** is valid, it manipulates the original JSON/YAML document and provides a set of helper functions in return, bundling them together into an **asyncapi** variable that is an instance of [**AsyncAPIDocument**](https://github.com/asyncapi/parser-js/blob/master/API.md#module_@asyncapi/parser+AsyncAPIDocument). +5. At this point, the **Generator** passes the **originalAsyncAPI** and the **asyncapi** which make up part of the **[Template Context](template-context)** to the **Render Engine**. 6. The **Template Context** is accessible to the template files that are passed to either the [react](react-render-engine) or [nunjucks](nunjucks-render-engine) **Render Engines**. - -``` mermaid + +```mermaid graph LR A[Template Context] B{Generator} @@ -35,14 +36,17 @@ graph LR B--> | originalAsyncAPI -> Stringified document | A A --> D end - ``` +``` + The AsyncAPI document's content is accessible to you while writing your template in two distinct ways: -* The `originalAsyncAPI`, which is a stringified version of the AsyncAPI document provided as input, without any modifications. -* The `asyncapi` (`AsyncAPIDocument`) which is an object with a set of helper functions, that comes as a result of the `Parser` manipulating the `originalAyncAPI` .The `asyncapi` functions make it easier to access the contents of AsyncAPI documents in your templates. + +- The `originalAsyncAPI`, which is a stringified version of the AsyncAPI document provided as input, without any modifications. +- The `asyncapi` (`AsyncAPIDocument`) which is an object with a set of helper functions, that comes as a result of the `Parser` manipulating the `originalAyncAPI` .The `asyncapi` functions make it easier to access the contents of AsyncAPI documents in your templates. In the following sections, you will learn how to use either the **originalAsyncAPI** or the **asyncapi** in your template. -### Method 1: `originalAsyncAPI` and template +### Method 1: `originalAsyncAPI` and template + One way of using the contents of the AsyncAPI document inside your template files is by using its stringified version that reflects the same contents as the AsyncAPI document provided as input to the generator. You can access it directly in your templates using the `originalAsyncAPI` variable. You also access it via the [hooks](hooks) `generator.originalAsyncAPI` because `originalAsyncAPI` is also a part of the generator instance that is passed to hooks. ```js @@ -54,7 +58,7 @@ const path = require('path'); function createAsyncapiFile(generator) { const asyncapi = generator.originalAsyncAPI; let extension; - + try { JSON.parse(asyncapi); extension = 'json'; @@ -69,9 +73,9 @@ function createAsyncapiFile(generator) { fs.writeFileSync(asyncapiOutputLocation, asyncapi); ``` - ### Method 2: `asyncapi` and template -A major advantage of using `asyncapi` (which is an instance of `AsyncAPIDocument`) is that it enables the developer to easily access the AsyncAPI documents' content by simply invoking a function. + +A major advantage of using `asyncapi` (which is an instance of `AsyncAPIDocument`) is that it enables the developer to easily access the AsyncAPI documents' content by simply invoking a function. Once the specification YAML or JSON document is passed as input to the generator, it is passed on to the [Parser](parser) library, which then manipulates the asyncAPI document to a more structured document called the `AsyncAPIDocument`. Once the parser returns the document to the generator, the generator passes it to the render engine. The render engine makes the `AsyncAPIDocument` object accessible to your template through the `asyncapi` variable. @@ -80,8 +84,8 @@ For example, if you want to extract the version of your API from AsyncAPI docume In the sample code snippet below, notice how you can access the contents of the AsyncAPI document in your template using `asyncapi` variable from the context: ```js - const apiName = asyncapi.info().title(); - const channels = asyncapi.channels(); +const apiName = asyncapi.info().title(); +const channels = asyncapi.channels(); ``` > To learn about the various instances you can use to access the documents' content, look at the API of the AsyncAPI JavaScript Parser and the structure of [AsyncAPIDocument](https://github.com/asyncapi/parser-js/blob/master/API.md#module_@asyncapi/parser+AsyncAPIDocument) diff --git a/pages/docs/tools/generator/parser.md b/pages/docs/tools/generator/parser.md index 2ff57070ade..1e9a060fde5 100644 --- a/pages/docs/tools/generator/parser.md +++ b/pages/docs/tools/generator/parser.md @@ -5,9 +5,9 @@ weight: 60 ## Parser -The AsyncAPI Parser is a package used to parse and validate the [AsyncAPI documents](asyncapi-document.md) in your Node.js or browser application. These documents can be either in YAML or JSON format. +The AsyncAPI Parser is a package used to parse and validate the [AsyncAPI documents](asyncapi-document) in your Node.js or browser application. These documents can be either in YAML or JSON format. -The Parser validates these documents using dedicated schema-supported plugins. +The Parser validates these documents using dedicated schema-supported plugins. Supported schemas: @@ -19,15 +19,15 @@ Supported schemas: The Parser allows the template developer to easily access schemas provided in the above supported formats. This is because the JavaScript parser converts all of them into JSON schema. -If the document is valid, the Parser returns an `AsyncAPIDocument instance` with a set of helper functions that enable easier access to the contents of the AsyncAPI document. The parser provides dereferenced output. During the dereference process, the AsyncAPI parser substitutes a reference with a full definition. The dereferenced output is always in JSON format. The parser provides a message listing all errors if a document is invalid. The original AsyncAPI document is part of the [Template Context](template-context.md) as the generator also passes the original AsyncAPI document to the template context. +If the document is valid, the Parser returns an `AsyncAPIDocument instance` with a set of helper functions that enable easier access to the contents of the AsyncAPI document. The parser provides dereferenced output. During the dereference process, the AsyncAPI parser substitutes a reference with a full definition. The dereferenced output is always in JSON format. The parser provides a message listing all errors if a document is invalid. The original AsyncAPI document is part of the [Template Context](template-context) as the generator also passes the original AsyncAPI document to the template context. The following AsyncAPI document example has two channels: `channelOne` and `channelTwo`. Each channel has one operation and a single message: ```yaml -asyncapi: '2.5.0' +asyncapi: "2.5.0" info: title: Demo API - version: '1.0.0' + version: "1.0.0" channels: channelOne: publish: @@ -36,14 +36,14 @@ channels: message: name: FirstMessage payload: - id: - type: integer - minimum: 0 - description: Id of the channel - sentAt: - type: string - format: date-time - description: Date and time when the message was sent. + id: + type: integer + minimum: 0 + description: Id of the channel + sentAt: + type: string + format: date-time + description: Date and time when the message was sent. channelTwo: publish: summary: This is the second sample channel @@ -51,36 +51,37 @@ channels: message: name: SecondMessage payload: - id: - type: integer - minimum: 0 - description: Id of the channel - sentAt: - type: string - format: date-time - description: Date and time when the message was sent. + id: + type: integer + minimum: 0 + description: Id of the channel + sentAt: + type: string + format: date-time + description: Date and time when the message was sent. ``` + We can use helper functions provided by the Parser to operate on the above JSON file. For example, we can use the helper method `asyncAPIDocument.channelNames()`, which returns an array of all channel names currently present in the AsyncAPI document. Another example where you can use a helper function is to list out messages present in your JSON file. Instead of fetching a single message one at a time, you can use the function `asyncAPIDocument.allMessages()` that returns the map of all messages in your AsyncAPI document. ```js - const channelNames = asyncAPIDocument.channelNames(); - const messages = asyncAPIDocument.allMessages(); +const channelNames = asyncAPIDocument.channelNames(); +const messages = asyncAPIDocument.allMessages(); ``` -> The Parser gives you access to a number of these [helper functions](https://github.com/asyncapi/parser-js/blob/master/API.md) that you can implement to access the contents of your AsyncAPI document. +> The Parser gives you access to a number of these [helper functions](https://github.com/asyncapi/parser-js/blob/master/API.md) that you can implement to access the contents of your AsyncAPI document. ## AsyncAPI document validation process 1. **AsyncAPI document** is fed as an input to the Generator. 1. Generator sends the AsyncAPI document to the Parser as **asyncapiString**; the stringified version of the original AsyncAPI document. 1. The Parser uses additional plugins such as the OpenAPI, RAML, or Avro schemas to validate custom schemas of message payloads defined in the AsyncAPI document. -1. If the AsyncAPI document is invalid, it throws an error based on the encountered failure type. For example, if the AsyncAPI document is not a string nor a JavaScript object, the Parser throws an `invalid-document-type` error. +1. If the AsyncAPI document is invalid, it throws an error based on the encountered failure type. For example, if the AsyncAPI document is not a string nor a JavaScript object, the Parser throws an `invalid-document-type` error. Similarly, you may encounter errors such as: - - `invalid-json` - - `invalid-yaml` - - `impossible-to-convert-to-json` + - `invalid-json` + - `invalid-yaml` + - `impossible-to-convert-to-json` 1. If the document is valid, the Parser modifies the AsyncAPI document, returns a set of helper functions, and bundles them together into the **asyncapi** variable. These helper functions in the form of an **asyncapi** variable are passed to the **Template Context**. -1. The Template Context passes all of these values to the [**Render Engine**](react-render-engine.md) of your choice. Finally, the Render Engine generates whatever output you may have specified in your template. (i.e. code, documentation, diagrams, pdfs, applications, etc.) +1. The Template Context passes all of these values to the [**Render Engine**](react-render-engine) of your choice. Finally, the Render Engine generates whatever output you may have specified in your template. (i.e. code, documentation, diagrams, pdfs, applications, etc.) ```mermaid graph TD @@ -93,4 +94,3 @@ graph TD ``` > To learn more about the Parser and access all of its features, check out the AsyncAPI [Parser’s GitHub repository](https://github.com/asyncapi/parser-js). - From 03170b2c1c6a0f5b1a91635a119940b6bf98101e Mon Sep 17 00:00:00 2001 From: Florence Njeri <40742916+Florence-Njeri@users.noreply.github.com> Date: Wed, 21 Jun 2023 19:10:44 +0300 Subject: [PATCH 014/117] fix: sanitize code from the TOC (#1204) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: Alejandra Quetzalli %0ACo-authored-by: Lukasz Gornicki --- components/TOC.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/TOC.js b/components/TOC.js index 1593c7f8d08..27fd09fd106 100644 --- a/components/TOC.js +++ b/components/TOC.js @@ -47,7 +47,7 @@ export default function TOC({ href={`#${item.slug}`} key={index} > - {item.content} + {item.content.replaceAll('`', '')} )) } From adbae365f6d36117c8846a7605fdba428c0b08dc Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 21 Jun 2023 18:17:24 +0200 Subject: [PATCH 015/117] docs: add Florence-Njeri as a contributor for code (#1817) --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 42f54a7f3cc..a52931c5749 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -454,6 +454,15 @@ "contributions": [ "doc" ] + }, + { + "login": "Florence-Njeri", + "name": "Florence Njeri", + "avatar_url": "https://avatars.githubusercontent.com/u/40742916?v=4", + "profile": "https://florence-njeri.github.io/NjeriPortfolio", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 69905cfd898..cae0247a1dc 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ --- -[![All Contributors](https://img.shields.io/badge/all_contributors-45-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-46-orange.svg?style=flat-square)](#contributors-) [![Netlify Status](https://api.netlify.com/api/v1/badges/b2137407-b765-46c4-95b5-a72d9b1592ab/deploy-status)](https://app.netlify.com/sites/asyncapi-website/deploys) @@ -207,6 +207,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Benjamin Rukundo
      Benjamin Rukundo

      💻
      tthijm
      tthijm

      🚇 Cynthia Peter
      Cynthia Peter

      📖 + Florence Njeri
      Florence Njeri

      💻 From 39314d9745381fe9d31801a3af43bf519e947bbf Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 22 Jun 2023 02:32:18 +0200 Subject: [PATCH 016/117] chore: update meetings.json and newsrooom_videos.json (#1819) --- config/newsroom_videos.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 2cad4f83764..466d9822c25 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/DUB3XL_APgs/hqdefault.jpg", + "title": "Spec 3.0 (July 21th 2023)", + "description": "https://github.com/asyncapi/community/issues/737.", + "videoId": "DUB3XL_APgs" + }, { "image_url": "https://i.ytimg.com/vi/mAISwYCZa2I/hqdefault.jpg", "title": "Studio planning", @@ -22,11 +28,5 @@ "title": "Community Meeting, Tuesday June 13th 2023", "description": "https://github.com/asyncapi/community/issues/738.", "videoId": "_zdXm90KvF0" - }, - { - "image_url": "https://i.ytimg.com/vi/52qqKE8jFlI/hqdefault.jpg", - "title": "Spec 3.0 (June 7th 2023)", - "description": "https://github.com/asyncapi/community/issues/734.", - "videoId": "52qqKE8jFlI" } ] \ No newline at end of file From 0f4dfccc232b7a266bde496c800a7ca7ee7e1217 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 22 Jun 2023 09:32:28 +0200 Subject: [PATCH 017/117] docs(cli): update latest cli documentation (#1820) --- pages/docs/tools/cli/usage.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 08ee3bb9187..2ce01466cea 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.48.5 linux-x64 node-v18.16.0 +@asyncapi/cli/0.48.6 linux-x64 node-v18.16.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -91,7 +91,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/bundle.ts)_ ## `asyncapi config` @@ -105,7 +105,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -234,7 +234,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -270,7 +270,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/diff.ts)_ ## `asyncapi generate` @@ -284,7 +284,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -408,7 +408,7 @@ DESCRIPTION Creates a new asyncapi file ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -496,7 +496,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/optimize.ts)_ ## `asyncapi start` @@ -510,7 +510,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -554,5 +554,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.48.5/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/validate.ts)_ From 4c5f359b18b0808696dd4a8caf74d8fa9049bc58 Mon Sep 17 00:00:00 2001 From: Ansh Goyal Date: Thu, 22 Jun 2023 15:59:17 +0530 Subject: [PATCH 018/117] chore: rm modelina files and folders (#1739) Co-authored-by: Lukasz Gornicki --- components/editor/MonacoEditorWrapper.js | 116 ------------ components/modelina/CSharpGenerator.js | 108 ----------- components/modelina/GoGenerator.js | 36 ---- components/modelina/JavaGenerator.js | 202 --------------------- components/modelina/JavaScriptGenerator.js | 36 ---- components/modelina/TypeScriptGenerator.js | 109 ----------- config/modelina-language-options.json | 22 --- 7 files changed, 629 deletions(-) delete mode 100644 components/editor/MonacoEditorWrapper.js delete mode 100644 components/modelina/CSharpGenerator.js delete mode 100644 components/modelina/GoGenerator.js delete mode 100644 components/modelina/JavaGenerator.js delete mode 100644 components/modelina/JavaScriptGenerator.js delete mode 100644 components/modelina/TypeScriptGenerator.js delete mode 100644 config/modelina-language-options.json diff --git a/components/editor/MonacoEditorWrapper.js b/components/editor/MonacoEditorWrapper.js deleted file mode 100644 index f260efd014a..00000000000 --- a/components/editor/MonacoEditorWrapper.js +++ /dev/null @@ -1,116 +0,0 @@ -import { useEffect, useRef } from 'react' -import PropTypes from 'prop-types'; -import Editor, { monaco } from '@monaco-editor/react' -import { debounce } from 'lodash' - -let editor -let Monaco - -const renderHighlightedLines = (highlightedLines) => { - return renderHighlightedRanges(highlightedLines.map(lineNumber => ({ - startLine: lineNumber, - startCol: 0, - endLine: lineNumber, - endCol: 0, - options: { - isWholeLine: true, - } - }))) -} - -const renderHighlightedRanges = (highlightedRanges) => { - return editor.deltaDecorations(editor.getModel().getAllDecorations(), highlightedRanges.map(range => ({ - range: new Monaco.Range(range.startLine, range.startCol, range.endLine, range.endCol), - options: { - className: 'bg-code-editor-dark', - marginClassName: 'bg-code-editor-dark', - ...range.options - }, - }))) -} - -export default function MonacoEditorWrapper ({ - language, - theme = 'asyncapi-theme', - onChange = () => {}, - value, - highlightedLines = [], - highlightedRanges = [], - updateHighlightOnChange = false, - options, - editorDidMount, - ...props -}) { - const previousValue = useRef(value); - const debouncedOnChange = debounce(onChange, 500) - - const handleEditorDidMount = (getValue, ed) => { - editor = ed - renderHighlightedLines(highlightedLines) - renderHighlightedRanges(highlightedRanges) - - editor.onDidChangeModelContent(ev => { - const currentValue = editor.getValue() - if (currentValue !== previousValue.current) { - previousValue.current = currentValue - const value = debouncedOnChange(ev, currentValue) - - if (typeof value === 'string') { - if (currentValue !== value) { - editor.setValue(value) - } - } - } - }); - - editorDidMount(getValue, editor) - } - - useEffect(() => { - monaco - .init() - .then(monacoInstance => { - Monaco = monacoInstance - monacoInstance.editor.defineTheme('asyncapi-theme', { - base: 'vs-dark', - inherit: true, - rules: [], - colors: { - 'editor.background': '#252f3f', - 'editor.lineHighlightBackground': '#1f2a37', - }, - rules: [{ token: '', background: '#252f3f' }], - }) - }) - .catch(console.error) - }, []) - - useEffect(() => { - if (editor && updateHighlightOnChange) { - renderHighlightedLines(highlightedLines) - renderHighlightedRanges(highlightedRanges) - } - }, [highlightedLines, highlightedRanges]) - - return ( - - ) -} - -MonacoEditorWrapper.propTypes = { - value: PropTypes.string, - editorDidMount: PropTypes.func, - onChange: PropTypes.func, -}; - -MonacoEditorWrapper.defaultProps = { - editorDidMount: () => {}, - onChange: () => {}, -}; diff --git a/components/modelina/CSharpGenerator.js b/components/modelina/CSharpGenerator.js deleted file mode 100644 index ff7a6b0d800..00000000000 --- a/components/modelina/CSharpGenerator.js +++ /dev/null @@ -1,108 +0,0 @@ -import React from 'react'; -import { CSharpGenerator, CSHARP_COMMON_PRESET, CSHARP_JSON_SERIALIZER_PRESET } from "@asyncapi/modelina"; - -export const defaultState = {serialization: false, getHashCode: false, equals: false} - -export function getClassGenerator(state){ - const imports = ['CSharpGenerator'] - const jsPresetCode = []; - const presets = []; - - if (state.equals === true || state.getHashCode === true) { - presets.push({ - preset: CSHARP_COMMON_PRESET, - options: { - equal: state.equals, - hashCode: state.getHashCode - }, - }); - imports.push('CSHARP_COMMON_PRESET'); - jsPresetCode.push(` { - preset: CSHARP_COMMON_PRESET, - options: { - ${state.equals ? 'equals: true,' : ''} - ${state.getHashCode ? 'hashCode: true,' : ''} - } - }`.replace(/^\s*\n/gm, '')); - } - if (state.serialization === true) { - presets.push({ - preset: CSHARP_JSON_SERIALIZER_PRESET - }); - imports.push('CSHARP_JSON_SERIALIZER_PRESET'); - jsPresetCode.push(' CSHARP_JSON_SERIALIZER_PRESET'.replace(/^\s*\n/gm, '')); - } - - const generator = new CSharpGenerator({ - presets: presets - }); - const generatorCode = `import { ${imports.join(', ')} } from '@asyncapi/modelina'; - -const generator = new CSharpGenerator(${presets.length ? `{ - presets: [ -${jsPresetCode.join(',\n')} - ] -}`: ''})`; - - return { generator, generatorCode }; -} - -export function getGeneratorCode(state = defaultState){ - return getClassGenerator(state) -} - -export default class CSharpOptions extends React.Component { - constructor(props) { - super(props) - this.state = defaultState - this.onChangeEquals = this.onChangeEquals.bind(this) - this.onChangeGetHashCode = this.onChangeGetHashCode.bind(this) - this.onChangeSerialization = this.onChangeSerialization.bind(this) - this.onNewSettings = this.onNewSettings.bind(this) - props.onInit(getGeneratorCode(this.state)) - } - - onChangeEquals(event) { - const newState = {...this.state, equals: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeGetHashCode(event) { - const newState = {...this.state, getHashCode: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeSerialization(event) { - const newState = {...this.state, serialization: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - async onNewSettings(state) { - this.props.onGeneratorChange(getGeneratorCode(state)) - } - - render() { - return ( -
        -
      • - -
      • -
      • - -
      • -
      • - -
      • -
      - ); - } -} diff --git a/components/modelina/GoGenerator.js b/components/modelina/GoGenerator.js deleted file mode 100644 index a6734b13ce4..00000000000 --- a/components/modelina/GoGenerator.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import { GoGenerator } from "@asyncapi/modelina"; - -export const defaultState = {} - -export function getClassGenerator(){ - const generator = new GoGenerator(); - - const generatorCode = `import { GoGenerator } from '@asyncapi/modelina'; - -const generator = new GoGenerator()`; - - return { generator, generatorCode }; -} - -export function getGeneratorCode(state = defaultState){ - return getClassGenerator(state) -} - -export default class GoOptions extends React.Component { - constructor(props) { - super(props) - this.state = defaultState - props.onInit(getGeneratorCode(this.state)) - } - - render() { - return ( -
      -
      - No available options -
      -
      - ); - } -} diff --git a/components/modelina/JavaGenerator.js b/components/modelina/JavaGenerator.js deleted file mode 100644 index 87f03bc5f57..00000000000 --- a/components/modelina/JavaGenerator.js +++ /dev/null @@ -1,202 +0,0 @@ -import React from 'react'; -import { JavaGenerator, JAVA_COMMON_PRESET, JAVA_CONSTRAINTS_PRESET, JAVA_DESCRIPTION_PRESET, JAVA_JACKSON_PRESET } from "@asyncapi/modelina" - -import Select from "../form/Select" - -export const defaultState = {equals: false, hashCode: false, classToString: false, includeConstraints: false, includeDescriptions: false, includeJackson: false, collectionType: 'List'} -export const javaCollectionTypes = [ - { - "value": "List", - "text": "List" - }, - { - "value": "Array", - "text": "Array" - } -]; - -export function getClassGenerator(state){ - const imports = ['JavaGenerator', 'JAVA_COMMON_PRESET']; - - const jsPresetCode = []; - const presets = []; - if (state.equals === true || state.hashCode === true || state.classToString === true) { - presets.push({ - preset: JAVA_COMMON_PRESET, - options: { - equal: state.equals, - hashCode: state.hashCode, - classToString: state.classToString - }, - }); - jsPresetCode.push(`{ - preset: JAVA_COMMON_PRESET, - options: { - ${state.equals ? 'equals: true,' : ''} - ${state.hashCode ? 'hashCode: true,' : ''} - ${state.classToString ? 'classToString: true,' : ''} - } - }`.replace(/^\s*\n/gm, '')); - } - if (state.includeConstraints === true) { - presets.push({ - preset: JAVA_CONSTRAINTS_PRESET - }); - imports.push('JAVA_CONSTRAINTS_PRESET'); - jsPresetCode.push(` JAVA_CONSTRAINTS_PRESET`) - } - if (state.includeJackson === true) { - presets.push({ - preset: JAVA_JACKSON_PRESET - }); - imports.push('JAVA_JACKSON_PRESET'); - jsPresetCode.push(` JAVA_JACKSON_PRESET`) - } - if (state.includeDescriptions === true) { - presets.push({ - preset: JAVA_DESCRIPTION_PRESET - }); - imports.push('JAVA_DESCRIPTION_PRESET'); - jsPresetCode.push(` JAVA_DESCRIPTION_PRESET`) - } - - const generateInstanceCode = `const generator = new JavaGenerator({ - collectionType: ${JSON.stringify(state.collectionType)}, - ${presets.length ? `presets: [ - ${jsPresetCode.join(',\n')} - ]`: ''} -});`.replace(/^\s*\n/gm, ''); - - const generator = new JavaGenerator({collectionType: state.collectionType, presets}); - const generatorCode = `import { ${imports.join(', ')} } from '@asyncapi/modelina'; - -${generateInstanceCode}`; - - return { generator, generatorCode } -} - -export function getGeneratorCode(state = defaultState){ - return getClassGenerator(state) -} - -export default class JavaOptions extends React.Component { - constructor(props) { - super(props) - this.state = defaultState - this.onChangeEquals = this.onChangeEquals.bind(this) - this.onChangeHashCode = this.onChangeHashCode.bind(this) - this.onChangeClassToString = this.onChangeClassToString.bind(this) - this.onChangeIncludeDescriptions = this.onChangeIncludeDescriptions.bind(this) - this.onChangeIncludeConstraints = this.onChangeIncludeConstraints.bind(this) - this.onChangeIncludeJackson = this.onChangeIncludeJackson.bind(this) - this.setNewCollectionType = this.setNewCollectionType.bind(this) - this.onNewSettings = this.onNewSettings.bind(this) - props.onInit(getGeneratorCode(this.state)) - } - - onChangeEquals(event) { - const newState = {...this.state, equals: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeHashCode(event) { - const newState = {...this.state, hashCode: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeClassToString(event) { - const newState = {...this.state, classToString: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeIncludeDescriptions(event) { - const newState = {...this.state, includeDescriptions: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeIncludeConstraints(event) { - const newState = {...this.state, includeConstraints: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeIncludeJackson(event) { - const newState = {...this.state, includeJackson: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - setNewCollectionType(selectedCollectionType) { - const newState = {...this.state, collectionType: selectedCollectionType} - this.setState(newState) - this.onNewSettings(newState) - } - onNewSettings(state) { - this.props.onGeneratorChange(getGeneratorCode(state)) - } - onNewGeneralSettings(state) { - this.props.onGeneratorChange(getGeneratorCode(state)) - } - - render() { - const options = [ - ( - <> - Include equals functions - - - ), - ( - <> - Collection type - - - ), - ( - <> - Include toString functions - - - ), - ( - <> - Include descriptions - - - ), - ( - <> - Include constraints - - - ), - ( - <> - Include Jackson annotation - - - ) - ]; - - return ( -
        - {options.map((option, id) => ( -
      • - -
      • - ))} -
      - ) - } -} \ No newline at end of file diff --git a/components/modelina/JavaScriptGenerator.js b/components/modelina/JavaScriptGenerator.js deleted file mode 100644 index 8d78509b98e..00000000000 --- a/components/modelina/JavaScriptGenerator.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import { JavaScriptGenerator } from "@asyncapi/modelina"; - -export const defaultState = {} - -export function getClassGenerator(){ - const generator = new JavaScriptGenerator(); - - const generatorCode = `import { JavaScriptGenerator } from '@asyncapi/modelina'; - -const generator = new JavaScriptGenerator()`; - - return { generator, generatorCode }; -} - -export function getGeneratorCode(state = defaultState){ - return getClassGenerator(state) -} - -export default class JavaScriptOptions extends React.Component { - constructor(props) { - super(props) - this.state = defaultState - props.onInit(getGeneratorCode(this.state)) - } - - render() { - return ( -
      -
      - No available options -
      -
      - ); - } -} diff --git a/components/modelina/TypeScriptGenerator.js b/components/modelina/TypeScriptGenerator.js deleted file mode 100644 index a25ddaea3fe..00000000000 --- a/components/modelina/TypeScriptGenerator.js +++ /dev/null @@ -1,109 +0,0 @@ -import React from 'react'; -import { TS_COMMON_PRESET, TypeScriptGenerator } from "@asyncapi/modelina" -import Select from "../form/Select" - -export const defaultState = { marshalling: false, variant: 'class' } - -export function getClassGenerator(marshalling) { - const generator = new TypeScriptGenerator({ - modelType: 'class', - presets: [ - { - preset: TS_COMMON_PRESET, - options: { - marshalling: marshalling - } - } - ] - }); - - const generateInstanceCode = `const generator = new TypeScriptGenerator({ - modelType: 'class', - ${marshalling ? `presets: [ - { - preset: TS_COMMON_PRESET, - options: { - marshalling: ${JSON.stringify(marshalling)} - } - } - ]` : ''} -});`.replace(/^\s*\n/gm, ''); - - const generatorCode = `import { TypeScriptGenerator, TS_COMMON_PRESET } from '@asyncapi/modelina'; - -${generateInstanceCode}` - - return { generator, generatorCode }; -} - -export function getRegularGenerator(variant) { - const generator = new TypeScriptGenerator({ - modelType: variant - }); - - let generatorCode = `import { TypeScriptGenerator } from '@asyncapi/modelina'; - -const generator = new TypeScriptGenerator({ - modelType: ${JSON.stringify(variant)} -})`; - - return { generator, generatorCode } -} - -export function getGeneratorCode(state = defaultState){ - if (state.variant === 'interface') { - return getRegularGenerator(state.variant) - } - return getClassGenerator(state.marshalling) -} - -export default class TypeScriptOptions extends React.Component { - constructor(props) { - super(props) - this.state = defaultState - this.onChangeMarshalling = this.onChangeMarshalling.bind(this) - this.onChangeVariant = this.onChangeVariant.bind(this) - this.onNewSettings = this.onNewSettings.bind(this) - props.onInit(getGeneratorCode(this.state)) - } - - onChangeMarshalling(event) { - const newState = {...this.state, marshalling: event.target.checked} - this.setState(newState) - this.onNewSettings(newState) - } - onChangeVariant(variant) { - const newState = {...this.state, variant} - this.setState(newState) - this.onNewSettings(newState) - } - async onNewSettings(state) { - this.props.onGeneratorChange(getGeneratorCode(state)) - } - - render() { - return ( -
        -
      • - -
      • - ) : null} -
      - ); - } -} \ No newline at end of file diff --git a/config/modelina-language-options.json b/config/modelina-language-options.json deleted file mode 100644 index b95bede80e5..00000000000 --- a/config/modelina-language-options.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "value": "typescript", - "text": "TypeScript" - }, - { - "value": "java", - "text": "Java" - }, - { - "value": "go", - "text": "Go" - }, - { - "value": "javascript", - "text": "JavaScript" - }, - { - "value": "csharp", - "text": "C#" - } -] \ No newline at end of file From ab09813651d288c7a3ca3ec507148a4de3192ac6 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 22 Jun 2023 12:36:21 +0200 Subject: [PATCH 019/117] docs: add anshgoyalevil as a contributor for code (#1821) --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index a52931c5749..eb16bc4c0ab 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -463,6 +463,15 @@ "contributions": [ "code" ] + }, + { + "login": "anshgoyalevil", + "name": "Ansh Goyal", + "avatar_url": "https://avatars.githubusercontent.com/u/94157520?v=4", + "profile": "https://ansh.live", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index cae0247a1dc..730845bdae1 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ --- -[![All Contributors](https://img.shields.io/badge/all_contributors-46-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-47-orange.svg?style=flat-square)](#contributors-) [![Netlify Status](https://api.netlify.com/api/v1/badges/b2137407-b765-46c4-95b5-a72d9b1592ab/deploy-status)](https://app.netlify.com/sites/asyncapi-website/deploys) @@ -208,6 +208,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d tthijm
      tthijm

      🚇 Cynthia Peter
      Cynthia Peter

      📖 Florence Njeri
      Florence Njeri

      💻 + Ansh Goyal
      Ansh Goyal

      💻 From 86ffbb2a4f6d78871cea9d773543f085b06fa861 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 22 Jun 2023 12:46:38 +0200 Subject: [PATCH 020/117] docs(cli): update latest cli documentation (#1822) --- pages/docs/tools/cli/usage.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 2ce01466cea..8129f2055b9 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.48.6 linux-x64 node-v18.16.0 +@asyncapi/cli/0.48.7 linux-x64 node-v18.16.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -91,7 +91,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/bundle.ts)_ ## `asyncapi config` @@ -105,7 +105,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -234,7 +234,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -270,7 +270,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/diff.ts)_ ## `asyncapi generate` @@ -284,7 +284,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -408,7 +408,7 @@ DESCRIPTION Creates a new asyncapi file ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -496,7 +496,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/optimize.ts)_ ## `asyncapi start` @@ -510,7 +510,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -554,5 +554,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.48.6/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/validate.ts)_ From 8e441e2c1c6212e977891dddd9ab8ab229ac336b Mon Sep 17 00:00:00 2001 From: "Sumant.xD" <65810424+SumantxD@users.noreply.github.com> Date: Thu, 22 Jun 2023 18:39:43 +0530 Subject: [PATCH 021/117] ci: set output has been updated to use GITHUB_OUTPUT #1726 (#1727) Co-authored-by: Lukasz Gornicki --- .github/workflows/lighthouse-ci.yml | 2 +- pages/blog/automated-releases.md | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lighthouse-ci.yml b/.github/workflows/lighthouse-ci.yml index 137d2fb77e8..f8cc63d308d 100644 --- a/.github/workflows/lighthouse-ci.yml +++ b/.github/workflows/lighthouse-ci.yml @@ -32,7 +32,7 @@ jobs: ) id: should_run name: Should Run - run: echo "::set-output name=shouldrun::true" + run: echo "shouldrun=true" >> $GITHUB_OUTPUT - if: steps.should_run.outputs.shouldrun == 'true' uses: actions/checkout@v3 diff --git a/pages/blog/automated-releases.md b/pages/blog/automated-releases.md index 62c9d7fb82d..a23adb9fffe 100644 --- a/pages/blog/automated-releases.md +++ b/pages/blog/automated-releases.md @@ -194,7 +194,9 @@ To share the output, you must assign an `id` to the step and declare a variable ```yaml - name: Get version from package.json after release step id: extractver - run: echo "::set-output name=version::$(npm run get-version --silent)" + run: | + version=$(npm run get-version --silent) + echo "version=$version" >> $GITHUB_OUTPUT ``` You can access the shared value by the `id` and a variable name like `steps.extractver.outputs.version`. We use it, for example, in the condition that specifies if further steps of the workflow should be triggered or not. If the version in `package.json` changed after GitHub and NPM step, this means we should proceed with Docker publishing and pull request creation: @@ -228,9 +230,14 @@ jobs: node-version: 13 - name: Install dependencies run: npm ci + - name: Get version from package.json before release step id: initversion - run: echo "::set-output name=version::$(npm run get-version --silent)" + run: npm run get-version --silent + + - name: Set output + run: echo "version=$(npm run get-version --silent)" >> $GITHUB_OUTPUT + - name: Release to NPM and GitHub id: release env: From 065a0660000ebae88d07a3234bb916dd4a53391e Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 22 Jun 2023 15:17:57 +0200 Subject: [PATCH 022/117] docs: add SumantxD as a contributor for infra (#1823) --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index eb16bc4c0ab..247c4c8125c 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -472,6 +472,15 @@ "contributions": [ "code" ] + }, + { + "login": "SumantxD", + "name": "Sumant.xD", + "avatar_url": "https://avatars.githubusercontent.com/u/65810424?v=4", + "profile": "https://github.com/SumantxD", + "contributions": [ + "infra" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 730845bdae1..e9f047987e9 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ --- -[![All Contributors](https://img.shields.io/badge/all_contributors-47-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-48-orange.svg?style=flat-square)](#contributors-) [![Netlify Status](https://api.netlify.com/api/v1/badges/b2137407-b765-46c4-95b5-a72d9b1592ab/deploy-status)](https://app.netlify.com/sites/asyncapi-website/deploys) @@ -209,6 +209,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Cynthia Peter
      Cynthia Peter

      📖 Florence Njeri
      Florence Njeri

      💻 Ansh Goyal
      Ansh Goyal

      💻 + Sumant.xD
      Sumant.xD

      🚇 From e17401c1eceda6a5490cd2e5390ef0d277bf5c79 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 22 Jun 2023 15:22:44 +0200 Subject: [PATCH 023/117] docs: add anshgoyalevil as a contributor for review (#1824) --- .all-contributorsrc | 3 ++- README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 247c4c8125c..413b39b877e 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -470,7 +470,8 @@ "avatar_url": "https://avatars.githubusercontent.com/u/94157520?v=4", "profile": "https://ansh.live", "contributions": [ - "code" + "code", + "review" ] }, { diff --git a/README.md b/README.md index e9f047987e9..b1e0d423877 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d tthijm
      tthijm

      🚇 Cynthia Peter
      Cynthia Peter

      📖 Florence Njeri
      Florence Njeri

      💻 - Ansh Goyal
      Ansh Goyal

      💻 + Ansh Goyal
      Ansh Goyal

      💻 👀 Sumant.xD
      Sumant.xD

      🚇 From 70d0a025431d4f60b26192a23074a737e53a34e7 Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Thu, 22 Jun 2023 17:31:39 +0200 Subject: [PATCH 024/117] feat: update the banner to promote London CFP on the website (#1825) --- components/campaigns/AnnoucementHero.js | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/components/campaigns/AnnoucementHero.js b/components/campaigns/AnnoucementHero.js index f85a6cca4e7..ba77845b03b 100644 --- a/components/campaigns/AnnoucementHero.js +++ b/components/campaigns/AnnoucementHero.js @@ -4,24 +4,24 @@ import Heading from '../typography/Heading' import Container from '../layout/Container' import AnnouncementRemainingDays from './AnnouncementRamainingDays' -function shouldShowBanner() { - const month = new Date().getUTCMonth(); - const year = new Date().getUTCFullYear(); - - //month=4 is May - if (year > 2023 || month !== 4) { +function shouldShowBanner(cfpDeadline) { + const currentDate = new Date(); // Get the current date + const deadline = new Date(cfpDeadline); // Convert the cfpDeadline string to a Date object + + // Check if the current date is after the deadline + if (currentDate > deadline) { return false; } + return true; } - export default function AnnouncementHero({ className = '', small = false, hideVideo = false }) { //return null; - const showBanner = shouldShowBanner(); + const cfpDeadline = '2023-07-28T06:00:00Z' + const showBanner = shouldShowBanner(cfpDeadline); if (!showBanner) return null; - const cfpDeadline = '2023-05-31T06:00:00Z' return ( @@ -42,15 +42,15 @@ export default function AnnouncementHero({ className = '', small = false, hideVi level="h3" typeStyle="heading-sm" > - Madrid Edition + London Edition - October, 2023 | Madrid, Spain + 20th of September, 2023 | London, UK - +
      -
      From 7fa7114ad276c23a64eeb08fae6d5d0c9d64e17c Mon Sep 17 00:00:00 2001 From: Damir Date: Tue, 27 Jun 2023 00:41:17 +0600 Subject: [PATCH 032/117] docs: add new bundler to tooling page (#1836) Co-authored-by: Lukasz Gornicki --- config/tools-manual.json | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/config/tools-manual.json b/config/tools-manual.json index f33022b4407..2557abfabf4 100644 --- a/config/tools-manual.json +++ b/config/tools-manual.json @@ -356,7 +356,8 @@ "title": "Api-Diff-Viewer", "description": "React component to view the difference between two Json based API documents. Supported specifications: JsonSchema, OpenAPI 3.x, AsyncAPI 2.x.", "links": { - "repoUrl": "https://github.com/udamir/api-diff-viewer" + "repoUrl": "https://github.com/udamir/api-diff-viewer", + "websiteUrl": "https://api-diff-viewer.vercel.app/", }, "filters": { "language": "TypeScript", @@ -613,7 +614,20 @@ }, "Bundlers": { "description": "The following is a list of tools that you can work with to bundle AsyncAPI documents.", - "toolsList": [] + "toolsList": [ + { + "title": "Api-ref-bundler", + "description": "It allows you bundle/dereference external/internal $refs in Json based API document. Supported specifications: OpenAPI, AsyncAPI, JsonSchema.", + "links": { + "repoUrl": "https://github.com/udamir/api-ref-bundler" + }, + "filters": { + "language": "TypeScript", + "technology": ["TypeScript"], + "categories": ["bundler"] + } + } + ] }, "IDE Extensions": { "description": "The following is a list of extensions for different IDEs like VSCode, IntelliJ IDEA and others", From 82b1f6bd8bbbf0467fa2d1c10a70fe72a18ef41e Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 27 Jun 2023 02:34:32 +0200 Subject: [PATCH 033/117] chore: update meetings.json and newsrooom_videos.json (#1844) --- package-lock.json | 347 ++++++++++++++-------------------------------- 1 file changed, 104 insertions(+), 243 deletions(-) diff --git a/package-lock.json b/package-lock.json index a49fdc794e6..d191f0a2c56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -667,7 +667,6 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -684,7 +683,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -700,7 +698,6 @@ "version": "13.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, "dependencies": { "type-fest": "^0.20.2" } @@ -708,14 +705,12 @@ "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, "node_modules/@fec/remark-a11y-emoji": { "version": "1.0.0", @@ -818,7 +813,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -828,8 +822,7 @@ "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "node_modules/@ioredis/commands": { "version": "1.2.0", @@ -2500,8 +2493,7 @@ "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, "node_modules/ansi-escapes": { "version": "4.3.2", @@ -2529,8 +2521,7 @@ "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "node_modules/ansi-styles": { "version": "3.2.1", @@ -2674,8 +2665,7 @@ "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "node_modules/astring": { "version": "1.8.6", @@ -3122,8 +3112,7 @@ "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "node_modules/camelcase-css": { "version": "2.0.1", @@ -3684,7 +3673,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4587,8 +4575,7 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/defaults": { "version": "1.0.3", @@ -4757,7 +4744,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "dependencies": { "esutils": "^2.0.2" } @@ -4885,7 +4871,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, "dependencies": { "ansi-colors": "^4.1.1" } @@ -4972,7 +4957,6 @@ "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -5084,7 +5068,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5093,14 +5076,12 @@ "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "node_modules/eslint-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" } @@ -5108,20 +5089,17 @@ "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" }, "node_modules/eslint/node_modules/@babel/code-frame": { "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, "dependencies": { "@babel/highlight": "^7.10.4" } @@ -5130,7 +5108,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5146,7 +5123,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" } @@ -5155,7 +5131,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -5165,7 +5140,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" } @@ -5173,20 +5147,17 @@ "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "node_modules/eslint/node_modules/globals": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, "dependencies": { "type-fest": "^0.20.2" } @@ -5194,20 +5165,17 @@ "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" } @@ -5215,14 +5183,12 @@ "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -5232,8 +5198,7 @@ "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" }, "node_modules/esprima": { "version": "4.0.1", @@ -5244,7 +5209,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" } @@ -5253,7 +5217,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" } @@ -5261,8 +5224,7 @@ "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "node_modules/estree-util-attach-comments": { "version": "2.1.1", @@ -5529,8 +5491,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "node_modules/fast-text-encoding": { "version": "1.0.3", @@ -5599,7 +5560,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "dependencies": { "flat-cache": "^3.0.4" } @@ -5628,7 +5588,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -5637,8 +5596,7 @@ "node_modules/flatted": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" }, "node_modules/follow-redirects": { "version": "1.15.2", @@ -5768,8 +5726,7 @@ "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "node_modules/functions-have-names": { "version": "1.2.2", @@ -6541,8 +6498,7 @@ "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "node_modules/ignore-loader": { "version": "0.1.2", @@ -6570,7 +6526,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -6592,8 +6547,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "node_modules/indent-string": { "version": "4.0.0", @@ -6977,8 +6931,7 @@ "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "node_modules/is-function": { "version": "1.0.2", @@ -7219,8 +7172,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "node_modules/isobject": { "version": "2.1.0", @@ -7320,8 +7272,7 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -7435,7 +7386,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -7613,8 +7563,7 @@ "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" }, "node_modules/lodash.unescape": { "version": "4.0.1", @@ -9050,8 +8999,7 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, "node_modules/nearley": { "version": "2.20.1", @@ -9434,7 +9382,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -9634,7 +9581,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" } @@ -9752,8 +9698,7 @@ "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "node_modules/path-parse": { "version": "1.0.7", @@ -10503,8 +10448,7 @@ "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "node_modules/pretty-bytes": { "version": "5.6.0", @@ -10534,8 +10478,7 @@ "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "node_modules/promise": { "version": "7.3.1", @@ -11043,8 +10986,7 @@ "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" }, "node_modules/remark-footnotes": { "version": "2.0.0", @@ -11248,8 +11190,7 @@ "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "node_modules/restore-cursor": { "version": "3.1.0", @@ -11293,7 +11234,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" } @@ -11458,7 +11398,6 @@ "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -11509,7 +11448,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" } @@ -11517,8 +11455,7 @@ "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "node_modules/shortid": { "version": "2.2.16", @@ -11617,7 +11554,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -11628,7 +11564,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" } @@ -11637,7 +11572,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" } @@ -11645,8 +11579,7 @@ "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/source-list-map": { "version": "2.0.1", @@ -11768,7 +11701,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11845,7 +11777,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" } @@ -11875,8 +11806,7 @@ "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "node_modules/style-to-object": { "version": "0.4.1", @@ -12037,7 +11967,6 @@ "version": "6.7.5", "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", - "dev": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -12187,8 +12116,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "node_modules/throttleit": { "version": "1.0.0", @@ -12367,7 +12295,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1" } @@ -12802,8 +12729,7 @@ "node_modules/v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, "node_modules/verror": { "version": "1.10.0", @@ -12947,7 +12873,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" } @@ -12971,8 +12896,7 @@ "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -13488,7 +13412,8 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/@cypress/react/-/react-7.0.3.tgz", "integrity": "sha512-YseqnMugTbdPV9YCYEMXVqIf+P7x+pfjXOdjv4dnDFqNCZeHaZfOZVFZ4XfEHVxMv0aDszxlaLiIp3QDPhr12w==", - "dev": true + "dev": true, + "requires": {} }, "@cypress/request": { "version": "2.88.11", @@ -13570,7 +13495,6 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -13587,7 +13511,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -13599,7 +13522,6 @@ "version": "13.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -13607,14 +13529,12 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -13704,7 +13624,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -13714,8 +13633,7 @@ "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "@ioredis/commands": { "version": "1.2.0", @@ -14597,7 +14515,8 @@ "@tailwindcss/aspect-ratio": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz", - "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==" + "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==", + "requires": {} }, "@tailwindcss/forms": { "version": "0.5.3", @@ -14610,7 +14529,8 @@ "@tailwindcss/line-clamp": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.2.tgz", - "integrity": "sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==" + "integrity": "sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==", + "requires": {} }, "@tailwindcss/typography": { "version": "0.5.7", @@ -14881,8 +14801,7 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, "ansi-escapes": { "version": "4.3.2", @@ -14912,8 +14831,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -15022,8 +14940,7 @@ "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "astring": { "version": "1.8.6", @@ -15409,8 +15326,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camelcase-css": { "version": "2.0.1", @@ -15862,7 +15778,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -15885,7 +15800,8 @@ "css-declaration-sorter": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", - "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==" + "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", + "requires": {} }, "css-loader": { "version": "1.0.0", @@ -16065,7 +15981,8 @@ "cssnano-utils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "requires": {} }, "csso": { "version": "4.2.0", @@ -16547,8 +16464,7 @@ "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "defaults": { "version": "1.0.3", @@ -16683,7 +16599,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "requires": { "esutils": "^2.0.2" } @@ -16793,7 +16708,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, "requires": { "ansi-colors": "^4.1.1" } @@ -16868,7 +16782,6 @@ "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -16916,7 +16829,6 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, "requires": { "@babel/highlight": "^7.10.4" } @@ -16925,7 +16837,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -16937,7 +16848,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -16946,7 +16856,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16956,7 +16865,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -16964,20 +16872,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "globals": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==", - "dev": true, "requires": { "type-fest": "^0.20.2" } @@ -16985,20 +16890,17 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -17006,8 +16908,7 @@ "type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -17072,7 +16973,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -17081,8 +16981,7 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" } } }, @@ -17090,7 +16989,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" }, @@ -17098,22 +16996,19 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" } } }, "eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" }, "espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, "requires": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -17123,8 +17018,7 @@ "eslint-visitor-keys": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" } } }, @@ -17137,7 +17031,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, "requires": { "estraverse": "^5.1.0" } @@ -17146,7 +17039,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "requires": { "estraverse": "^5.2.0" } @@ -17154,8 +17046,7 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "estree-util-attach-comments": { "version": "2.1.1", @@ -17371,8 +17262,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fast-text-encoding": { "version": "1.0.3", @@ -17443,7 +17333,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "requires": { "flat-cache": "^3.0.4" } @@ -17472,7 +17361,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -17481,8 +17369,7 @@ "flatted": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" }, "follow-redirects": { "version": "1.15.2", @@ -17575,8 +17462,7 @@ "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "functions-have-names": { "version": "1.2.2", @@ -18224,8 +18110,7 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "ignore-loader": { "version": "0.1.2", @@ -18250,7 +18135,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -18274,8 +18158,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indent-string": { "version": "4.0.0", @@ -18585,8 +18468,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-function": { "version": "1.0.2", @@ -18785,8 +18667,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "2.1.0", @@ -18879,8 +18760,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, "json-stringify-safe": { "version": "5.0.1", @@ -18977,7 +18857,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -19140,8 +19019,7 @@ "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" }, "lodash.unescape": { "version": "4.0.1", @@ -20174,8 +20052,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, "nearley": { "version": "2.20.1", @@ -20476,7 +20353,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -20655,7 +20531,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -20743,8 +20618,7 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", @@ -20853,22 +20727,26 @@ "postcss-discard-comments": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==" + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "requires": {} }, "postcss-discard-duplicates": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "requires": {} }, "postcss-discard-empty": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "requires": {} }, "postcss-discard-overridden": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "requires": {} }, "postcss-import": { "version": "14.1.0", @@ -21117,7 +20995,8 @@ "postcss-normalize-charset": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -21265,8 +21144,7 @@ "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, "pretty-bytes": { "version": "5.6.0", @@ -21287,8 +21165,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "promise": { "version": "7.3.1", @@ -21726,8 +21603,7 @@ "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" }, "remark-footnotes": { "version": "2.0.0", @@ -21909,8 +21785,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "restore-cursor": { "version": "3.1.0", @@ -21947,7 +21822,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -22084,7 +21958,6 @@ "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -22122,7 +21995,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -22130,8 +22002,7 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shortid": { "version": "2.2.16", @@ -22201,7 +22072,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -22212,7 +22082,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -22221,7 +22090,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -22229,8 +22097,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" } } }, @@ -22334,7 +22201,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -22399,7 +22265,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -22423,8 +22288,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "style-to-object": { "version": "0.4.1", @@ -22480,7 +22344,8 @@ "styled-jsx": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz", - "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==" + "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==", + "requires": {} }, "stylehacks": { "version": "5.1.0", @@ -22541,7 +22406,6 @@ "version": "6.7.5", "resolved": "https://registry.npmjs.org/table/-/table-6.7.5.tgz", "integrity": "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==", - "dev": true, "requires": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -22654,8 +22518,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "throttleit": { "version": "1.0.0", @@ -22810,7 +22673,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "requires": { "prelude-ls": "^1.2.1" } @@ -23082,12 +22944,14 @@ "use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "requires": {} }, "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} }, "util-deprecate": { "version": "1.0.2", @@ -23113,8 +22977,7 @@ "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, "verror": { "version": "1.10.0", @@ -23238,7 +23101,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -23259,8 +23121,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrap-ansi": { "version": "7.0.0", From 1505d9b6f4f2c95ed898921ac2b085b5a91f7d7b Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Tue, 27 Jun 2023 11:59:38 +0200 Subject: [PATCH 034/117] docs(generator): update latest generator documentation (#1845) --- .../tools/generator/template-development.md | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/pages/docs/tools/generator/template-development.md b/pages/docs/tools/generator/template-development.md index 28d921526b3..35af42ce462 100644 --- a/pages/docs/tools/generator/template-development.md +++ b/pages/docs/tools/generator/template-development.md @@ -11,20 +11,24 @@ Let's break down the minimum template requirements: the `template` directory and ### `template` directory -The `template` directory stores generated outputs in files. In other words, the generator processes all the files stored in this directory. +The `template` directory holds all the files that will be used for generating the output. The generator will process all the files stored in this directory. +The following code is an example of an `index.js` file inside the `template` folder. ```js import { File, Text } from "@asyncapi/generator-react-sdk"; -export default function({ asyncapi, params, originalAsyncAPI }) { -return ( +export default function ({ asyncapi, params, originalAsyncAPI }) { + return ( - My application's markdown file. - App name: **{ asyncapi.info().title() }** + My application's markdown file. + App name: **{asyncapi.info().title()}** -); + ); } ``` + +The above example will produce an `asyncapi.md` file where usage of the AsyncAPI document information (i.e. the `title`) is demonstrated. + ### `package.json` file Before the generation process begins, the generator installs the template into its dependencies. A `package.json` file is necessary to identify the template name. @@ -43,8 +47,6 @@ The following block shows an example `package.json` file that points to the [Rea } ``` -The above example of a `template/index.js` file shows the generation process result. The user also receives an `asyncapi.md` file with hardcoded and dynamic (application title from the AsyncAPI document) information. - Every template must depend on the [`@asyncapi/generator-react-sdk` package](https://github.com/asyncapi/generator-react-sdk), which contains a template file's basic components. ## Additional configuration options @@ -73,14 +75,16 @@ The following examples show some advanced configurations that we can use in our "name": "myTemplate", "generator": { "renderer": "react", - "supportedProtocols": "mqtt" + "supportedProtocols": [ + "mqtt" + ] }, "dependencies": { "@asyncapi/generator-react-sdk": "^0.2.25" } } ``` -The above `package.json` file has a newly added configuration called `supportedProtocols` which is set to `mqtt`. This configuration displays all the protocols that this template supports. You can have multiple supported protocols in our template. +The above `package.json` file has a newly added configuration called `supportedProtocols` which is set to a list containing only `mqtt`. This configuration displays all the protocols that this template supports. You can have multiple supported protocols in our template. For example, if you want to generate an output using the above template, you need to have an AsyncAPI document with servers that use `mqtt` to generate your desired output. If your AsyncAPI document has server connections with `kafka`, the generation process will be terminated since the only supported protocol mentioned is `mqtt`. @@ -93,7 +97,9 @@ Additionally, we can also have a configuration called `parameters`, which is an "name": "myTemplate", "generator": { "renderer": "react", - "supportedProtocols": "mqtt", + "supportedProtocols": [ + "mqtt" + ], "parameters": { "version": { "description": "Overrides application version under `info.version` in the AsyncAPI document.", From f827ead15488fa3ffb4c98b0d8ab9ad1ea9b70b9 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 28 Jun 2023 02:33:50 +0200 Subject: [PATCH 035/117] chore: update meetings.json and newsrooom_videos.json (#1847) --- config/newsroom_videos.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index d1022fbdcc3..c38908459bc 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/EvC2PZXEM0M/hqdefault.jpg", + "title": "Community Meeting, Tuesday June 27th 2023", + "description": "https://github.com/asyncapi/community/issues/762.", + "videoId": "EvC2PZXEM0M" + }, { "image_url": "https://i.ytimg.com/vi/1jiRDmuA-zg/hqdefault.jpg", "title": "Fran AMA AsyncAPI — 23 June 2023", @@ -22,11 +28,5 @@ "title": "Studio planning", "description": "https://github.com/asyncapi/community/issues/745.", "videoId": "mAISwYCZa2I" - }, - { - "image_url": "https://i.ytimg.com/vi/V3Op2A08UQs/hqdefault.jpg", - "title": "Headless Commerce: Streamlining Architecture", - "description": "https://github.com/asyncapi/community/issues/716.", - "videoId": "V3Op2A08UQs" } ] \ No newline at end of file From 2781946df315dcad9585123d40762b1369f46da4 Mon Sep 17 00:00:00 2001 From: Akintola Rahmat Date: Wed, 28 Jun 2023 01:08:55 +0000 Subject: [PATCH 036/117] chore: new fragment for contributor questions section (#1678) Co-authored-by: Alejandra Quetzalli %0ACo-authored-by: Alejandra Quetzalli %0ACo-authored-by: Lukasz Gornicki --- assets/docs/fragments/how-to-contribute.md | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 assets/docs/fragments/how-to-contribute.md diff --git a/assets/docs/fragments/how-to-contribute.md b/assets/docs/fragments/how-to-contribute.md new file mode 100644 index 00000000000..932347021a1 --- /dev/null +++ b/assets/docs/fragments/how-to-contribute.md @@ -0,0 +1,23 @@ +## How to contribute to AsyncAPI Docs + +Did you know that you can contribute Docs to AsyncAPI as well? Code isn't the only way to contribute to OSS; Dev Docs are a **huge** help that benefit the entire OSS ecosystem. At AsyncAPI, we value Doc contributions as much as every other type of contribution. ❤️ + +To get started as a Docs contributor: + +1. Familiarize yourself with our [project's Contribution Guide](https://github.com/asyncapi/community/blob/master/CONTRIBUTING.md) and our [Code of Conduct](https://github.com/asyncapi/.github/blob/master/CODE_OF_CONDUCT.md). + +2. Head over to our Docs GH Board [here](https://github.com/orgs/asyncapi/projects/12). + +3. Pick an issue you would like to contribute to and leave a comment introducing yourself. This is also the perfect place to leave any questions you may have on how to get started. + +4. If there is no work done in that Docs issue yet, feel free to open a PR and get started! + +### Tag me in your AsyncAPI Doc PRs + +Do you have a documentation contributor question and you're wondering how to tag me into a GitHub discussion or PR? Never fear! + +Tag me in your AsyncAPI Doc PRs or [GitHub Discussions](https://github.com/asyncapi/community/discussions/categories/docs) via my GitHub handle, [`/alequetzalli`](https://github.com/alequetzalli) 🐙. + +### Talk to me + +I want and need to listen 👂🏽 to all of your perspectives and ideas. Please don't be shy to express to me what you think needs to be documented first or what is missing. 📝 There's a lot of good work ahead, but **you** determine _our content roadmap_ because the OSS community needs should always come first.✨ \ No newline at end of file From 995dd6961263a105aa28de7d11c82fcff8751b3f Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 28 Jun 2023 13:00:10 +0200 Subject: [PATCH 037/117] docs(cli): update latest cli documentation (#1849) --- pages/docs/tools/cli/usage.md | 73 ++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 27 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 8129f2055b9..13dc252384f 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.48.7 linux-x64 node-v18.16.0 +@asyncapi/cli/0.48.8 linux-x64 node-v18.16.0 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -91,7 +91,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.48.8/src/commands/bundle.ts)_ ## `asyncapi config` @@ -105,7 +105,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.48.8/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -234,7 +234,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.48.7/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.48.8/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -242,35 +242,54 @@ Find diff between two asyncapi files ``` USAGE - $ asyncapi diff OLD NEW [-h] [-f json|yaml|yml] [-t breaking|non-breaking|unclassified|all] [-o ] - [--no-error] [-w] [--log-diagnostics] [--diagnostics-format json|stylish|junit|html|text|teamcity|pretty] - [--fail-severity error|warn|info|hint] + $ asyncapi diff OLD NEW [-h] [-f json|yaml|yml|md] [-t breaking|non-breaking|unclassified|all] + [--markdownSubtype json|yaml|yml] [-o ] [--no-error] [-w] [--log-diagnostics] [--diagnostics-format + json|stylish|junit|html|text|teamcity|pretty] [--fail-severity error|warn|info|hint] ARGUMENTS OLD old spec path, URL or context-name NEW new spec path, URL or context-name FLAGS - -f, --format=

      diff --git a/scripts/index.js b/scripts/index.js index 182a0a62eea..0634672c55f 100644 --- a/scripts/index.js +++ b/scripts/index.js @@ -19,4 +19,4 @@ async function start() { await buildCaseStudiesList(); } -start(); +start(); \ No newline at end of file From d1af52924be7fcaac2df6199d1abf5713f4c8ab3 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Wed, 5 Jul 2023 16:46:04 +0200 Subject: [PATCH 049/117] docs(community): update latest maintainers list (#1897) --- config/MAINTAINERS.json | 1273 ++++++++++++++++++++------------------- 1 file changed, 649 insertions(+), 624 deletions(-) diff --git a/config/MAINTAINERS.json b/config/MAINTAINERS.json index 23392335a2c..b6df736af66 100644 --- a/config/MAINTAINERS.json +++ b/config/MAINTAINERS.json @@ -1,627 +1,652 @@ [ { - "name": "Aayush Sahu", - "github": "aayushmau5", - "linkedin": "aayushmau5", - "slack": "U01QRHR1ABH", - "twitter": "aayushmau5", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "diff" - ] - }, - { - "name": "Abir Pal", - "linkedin": "imabp", - "slack": "U01S8EQ9LQ2", - "twitter": "imabptweets", - "github": "imabp", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "problem" - ] - }, - { - "name": "Akshat Nema", - "github": "akshatnema", - "linkedin": "akshat-nema", - "slack": "U02TAMG2VKN", - "twitter": "AksNema", - "availableForHire": true, - "isTscMember": true, - "repos": [ - "website" - ] - }, - { - "name": "Anand Sunderraman", - "github": "anandsunderraman", - "linkedin": "anand-sunderraman-a6b7a131", - "slack": "U0231F9KXNK", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "go-watermill-template" - ] - }, - { - "name": "Arjun Garg", - "github": "arjungarg07", - "linkedin": "arjungarg17", - "slack": "U01QX79S734", - "twitter": "ArjunGarg07", - "availableForHire": true, - "isTscMember": true, - "repos": [ - "cupid" - ] - }, - { - "name": "Cameron Rushton", - "github": "CameronRushton", - "slack": "U01DVKKAV5K", - "availableForHire": false, - "company": "Solace", - "isTscMember": true, - "repos": [ - "java-spring-cloud-stream-template", - "python-paho-template", - "bindings" - ] - }, - { - "name": "Dale Lane", - "github": "dalelane", - "linkedin": "dalelane", - "slack": "U01EYAFR5BR", - "twitter": "dalelane", - "availableForHire": false, - "isTscMember": true, - "company": "IBM", - "repos": [ - "avro-schema-parser", - "bindings", - "java-template" - ] - }, - { - "name": "Emiliano Zublena", - "github": "emilianozublena", - "linkedin": "emilianozublena", - "slack": "U01LYC8PW0M", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "asyncapi-php-template" - ] - }, - { - "name": "Fran Méndez", - "github": "fmvilas", - "slack": "U34F2JRRS", - "availableForHire": false, - "company": "Postman", - "linkedin": "fmvilas", - "isTscMember": true, - "repos": [ - "raml-dt-schema-parser", - "avro-schema-parser", - "openapi-schema-parser", - "asyncapi-react", - "glee", - "generator", - "nodejs-template", - "nodejs-ws-template", - "parser-js", - "playground", - "spec", - "spec-json-schemas", - "website", - "bindings" - ] - }, - { - "name": "Gerald Loeffler", - "github": "GeraldLoeffler", - "linkedin": "geraldloeffler", - "slack": "U01P5QDLP0X", - "availableForHire": false, - "company": "Salesforce", - "isTscMember": true, - "repos": [ - "bindings" - ] - }, - { - "name": "Jonas Lagoni", - "github": "jonaslagoni", - "linkedin": "jonaslagoni", - "slack": "UQ2ANBG1E", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "dotnet-nats-template", - "ts-nats-template", - "generator-react-sdk", - "generator", - "modelina", - "parser-js", - "parser-api", - "simulator" - ] - }, - { - "name": "Khuda Dad Nomani", - "github": "KhudaDad414", - "twitter": "KhudaDadNomani", - "linkedin": "khudadadnomani", - "slack": "U01RVRD1TCL", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "optimizer", - "bindings", - "glee", - ".github" - ] - }, - { - "name": "Laurent Broudoux", - "github": "lbroudoux", - "twitter": "lbroudoux", - "linkedin": "laurentbroudoux", - "slack": "U018NLDV5E1", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "bindings" - ] - }, - { - "name": "Ludovic Dussart", - "github": "m3lkior", - "linkedin": "ludovic-dussart-846a8063", - "slack": "U01BM49KL3Z", - "twitter": "ldussart", - "availableForHire": false, - "company": "Ineat", - "isTscMember": true, - "repos": [ - "avro-schema-parser" - ] - }, - { - "name": "Lukasz Gornicki", - "github": "derberg", - "linkedin": "lukasz-gornicki-a621914", - "slack": "UD698Q5LM", - "twitter": "derberq", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "avro-schema-parser", - "openapi-schema-parser", - "chatbot", - "diff", - "cli", - "generator-filters", - "generator-hooks", - "github-action-for-generator", - "generator", - "nodejs-template", - "nodejs-ws-template", - "parser-js", - "playground", - "spec", - "spec-json-schemas", - "template-for-generator-templates", - "website", - "bundler" - ] - }, - { - "name": "Maciej Urbańczyk", - "github": "magicmatatjahu", - "availableForHire": false, - "linkedin": "maciej-urbańczyk-909547164", - "slack": "U01EB02BP7A", - "company": "Postman", - "isTscMember": true, - "repos": [ - "asyncapi-react", - "chatbot", - "cli", - "converter-go", - "event-gateway", - "generator-react-sdk", - "generator", - "html-template", - "markdown-template", - "modelina", - "parser-js", - "parser-go", - "playground", - "server-api", - "template-for-go-projects", - "website" - ] - }, - { - "name": "Azeez Elegbede", - "linkedin": "acebuild", - "github": "AceTheCreator", - "twitter": "_acebuild", - "slack": "U01RWDD69PZ", - "company": "Postman", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "chatbot" - ] - }, - { - "name": "Michael Davis", - "github": "damaru-inc", - "availableForHire": false, - "slack": "UH3B166TD", - "company": "Solace", - "isTscMember": true, - "repos": [ - "java-spring-cloud-stream-template", - "python-paho-template", - "bindings" - ] - }, - { - "name": "Missy Turco", - "github": "mcturco", - "twitter": "missyturco", - "slack": "U02JVEQ6S9W", - "linkedin": "missy-turco-a476a6126", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "brand", - "design-system", - "studio", - "website" - ] - }, - { - "name": "Nektarios Fifes", - "github": "NektariosFifes", - "linkedin": "nektarios-fifes-372740220", - "slack": "U01SE93Q48N", - "availableForHire": true, - "isTscMember": true, - "repos": [ - "simulator" - ] - }, - { - "name": "Pavel Bodiachevskii", - "github": "Pakisan", - "slack": "U0132LQU8C9", - "twitter": "pbodiachevskii", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "jasyncapi" - ] - }, - { - "name": "Philip Schlesinger", - "github": "theschles", - "slack": "U054UUYBNLF", - "twitter": "philschlesinger", - "availableForHire": false, - "isTscMember": true, - "repos": [ - "jasyncapi-idea-plugin" - ] - }, - { - "name": "Pratik Haldankar", - "github": "pratik2315", - "slack": "U03ADC8FD2S", - "linkedin": "pratik-haldankar-1b237a205", - "twitter": "PratikHaldankr", - "availableForHire": true, - "isTscMember": true, - "repos": [ - "generator" - ] - }, - { - "name": "Richard Coppen", - "github": "rcoppen", - "linkedin": "richard-coppen", - "slack": "U01L3FH3BUH", - "availableForHire": false, - "company": "IBM", - "isTscMember": true, - "repos": [ - "bindings" - ] - }, - { - "name": "Sergio Moya", - "github": "smoya", - "linkedin": "smoya", - "slack": "UN22ZTLHG", - "twitter": "smoyac", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "bindings", - "converter-go", - "event-gateway", - "go-watermill-template", - "infra", - "parser-api", - "parser-go", - "server-api", - "spec", - "spec-json-schemas", - "template-for-go-projects" - ] - }, - { - "name": "Souvik De", - "github": "Souvikns", - "slack": "U01SGCZMJKW", - "twitter": "souvik_ns", - "linkedin": "souvik-de-a2b941169", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "cli", - "bundler", - "glee" - ] - }, - { - "name": "Alejandra Quetzalli", - "github": "alequetzalli", - "twitter": "QuetzalliAle", - "slack": "U02AKC14WAJ", - "linkedin": "alejandra-quetzalli", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "website", - "training", - "community" - ] - }, - { - "name": "David Pereira", - "github": "BOLT04", - "twitter": "BOLT2938", - "slack": "U02EC8BT0TX", - "linkedin": "josé-david-pereira-13ba5315a", - "availableForHire": false, - "company": "Create IT", - "isTscMember": true, - "repos": [ - "server-api" - ] - }, - { - "name": "Daniel Raper", - "github": "dan-r", - "slack": "U02FP8WBFQE", - "linkedin": "danielr", - "availableForHire": false, - "company": "IBM", - "isTscMember": true, - "repos": [ - "java-template" - ] - }, - { - "name": "Kieran Murphy", - "github": "KieranM1999", - "linkedin": "kieran-murphy-175b0412b", - "availableForHire": false, - "slack": "U02FT2TKM37", - "company": "IBM", - "isTscMember": true, - "repos": [ - "java-template" - ] - }, - { - "name": "Tom Jefferson", - "github": "JEFFLUFC", - "linkedin": "t-jefferson", - "slack": "U02FPPCEH6H", - "availableForHire": false, - "company": "IBM", - "isTscMember": true, - "repos": [ - "java-template" - ] - }, - { - "name": "Lewis Relph", - "github": "lewis-relph", - "availableForHire": false, - "slack": "U02G8MDDEF3", - "company": "IBM", - "isTscMember": true, - "repos": [ - "java-template" - ] - }, - { - "name": "David Boyne", - "github": "boyney123", - "twitter": "boyney123", - "slack": "U020GN9C6FM", - "availableForHire": false, - "company": "AWS", - "isTscMember": true, - "repos": [ - "studio", - "cli" - ] - }, - { - "name": "Semen Tenishchev", - "github": "Tenischev", - "linkedin": "semen-tenishchev", - "availableForHire": true, - "slack": "U011D1DAU6S", - "isTscMember": true, - "repos": [ - "java-spring-template" - ] - }, - { - "name": "Samridhi Agrawal", - "github": "Samridhi-98", - "slack": "U02T2MY9W5T", - "linkedin": "samridhi-agrawal-1713201ab", - "availableForHire": false, - "company": "ThoughtWorks", - "isTscMember": true, - "repos": [ - "modelina" - ] - }, - { - "name": "Debajyoti Halder", - "github": "ron-debajyoti", - "twitter": "rondebajyoti", - "slack": "U02UK9RUPGQ", - "linkedin": "rondebajyoti", - "availableForHire": false, - "company": "Narvar", - "isTscMember": true, - "repos": [ - "modelina" - ] - }, - { - "name": "Ivan Garcia Sainz-Aja", - "github": "ivangsa", - "linkedin": "ivangarciasainzaja", - "slack": "UTCN3ET4M", - "availableForHire": false, - "company": "SNGULAR", - "isTscMember": true, - "repos": [ - "vs-asyncapi-preview" - ] - }, - { - "name": "Florence Njeri", - "github": "Florence-Njeri", - "linkedin": "florencenjeri", - "slack": "U03D18YKX2M", - "twitter": "njericodes", - "availableForHire": true, - "isTscMember": true, - "repos": [ - "generator" - ] - }, - { - "name": "Jeremy Whitlock", - "github": "whitlockjc", - "linkedin": "whitlockjc", - "slack": "U03HBC08EBB", - "twitter": "whitlockjc", - "availableForHire": false, - "company": "Google", - "isTscMember": true, - "repos": [ - "bindings" - ] - }, - { - "name": "Vladimír Gorej", - "github": "char0n", - "linkedin": "vladimirgorej", - "slack": "U03NV5L4S49", - "twitter": "vladimirgorej", - "availableForHire": false, - "company": "SmartBear", - "isTscMember": true, - "repos": [ - "bindings", - "spec", - "spec-json-schemas" - ] - }, - { - "name": "Alexander Wichmann", - "github": "VisualBean", - "linkedin": "alexcarlsen", - "slack": "U04C58GB8TF", - "availableForHire": false, - "company": "The LEGO Group", - "isTscMember": true, - "repos": [ - "bindings" - ] - }, - { - "name": "Barbaño González", - "linkedin": "barbano-gonzalez-moreno", - "twitter": "BarbanoGonzalez", - "github": "Barbanio", - "slack": "U01J42QDSLU", - "availableForHire": false, - "company": "Postman", - "isTscMember": true, - "repos": [ - "training", - "community" - ] - }, - { - "name": "Kenneth Aasan", - "github": "kennethaasan", - "slack": "U037S2HK4TS", - "twitter": "kennethaasan", - "availableForHire": false, - "company": "Sportradar", - "isTscMember": true, - "repos": [ - "modelina" - ] - }, - { - "name": "Heiko Henning", - "github": "GreenRover", - "slack": "U03AC4G51H8", - "availableForHire": false, - "company": "mtrail GmbH", - "isTscMember": true, - "repos": [ - "protobuf-schema-parser" - ] - }, - { - "name": "connil", - "github": "connil", - "slack": "U03A51H8", - "availableForHire": false, - "company": "GmbH", - "isTscMember": false, - "repos": [ - "dotnet-rabbitmq-template" - ] + "name": "Aayush Sahu", + "github": "aayushmau5", + "linkedin": "aayushmau5", + "slack": "U01QRHR1ABH", + "twitter": "aayushmau5", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "diff" + ] + }, + { + "name": "Abir Pal", + "linkedin": "imabp", + "slack": "U01S8EQ9LQ2", + "twitter": "imabptweets", + "github": "imabp", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "problem" + ] + }, + { + "name": "Akshat Nema", + "github": "akshatnema", + "linkedin": "akshat-nema", + "slack": "U02TAMG2VKN", + "twitter": "AksNema", + "availableForHire": true, + "isTscMember": true, + "repos": [ + "website" + ] + }, + { + "name": "Anand Sunderraman", + "github": "anandsunderraman", + "linkedin": "anand-sunderraman-a6b7a131", + "slack": "U0231F9KXNK", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "go-watermill-template" + ] + }, + { + "name": "Arjun Garg", + "github": "arjungarg07", + "linkedin": "arjungarg17", + "slack": "U01QX79S734", + "twitter": "ArjunGarg07", + "availableForHire": true, + "isTscMember": true, + "repos": [ + "cupid" + ] + }, + { + "name": "Cameron Rushton", + "github": "CameronRushton", + "slack": "U01DVKKAV5K", + "availableForHire": false, + "company": "Solace", + "isTscMember": true, + "repos": [ + "java-spring-cloud-stream-template", + "python-paho-template", + "bindings" + ] + }, + { + "name": "Dale Lane", + "github": "dalelane", + "linkedin": "dalelane", + "slack": "U01EYAFR5BR", + "twitter": "dalelane", + "availableForHire": false, + "isTscMember": true, + "company": "IBM", + "repos": [ + "avro-schema-parser", + "bindings", + "java-template" + ] + }, + { + "name": "Emiliano Zublena", + "github": "emilianozublena", + "linkedin": "emilianozublena", + "slack": "U01LYC8PW0M", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "asyncapi-php-template" + ] + }, + { + "name": "Fran M\u00e9ndez", + "github": "fmvilas", + "slack": "U34F2JRRS", + "availableForHire": false, + "company": "Postman", + "linkedin": "fmvilas", + "isTscMember": true, + "repos": [ + "raml-dt-schema-parser", + "avro-schema-parser", + "openapi-schema-parser", + "asyncapi-react", + "glee", + "generator", + "nodejs-template", + "nodejs-ws-template", + "parser-js", + "playground", + "spec", + "spec-json-schemas", + "website", + "bindings" + ] + }, + { + "name": "Gerald Loeffler", + "github": "GeraldLoeffler", + "linkedin": "geraldloeffler", + "slack": "U01P5QDLP0X", + "availableForHire": false, + "company": "Salesforce", + "isTscMember": true, + "repos": [ + "bindings" + ] + }, + { + "name": "Jonas Lagoni", + "github": "jonaslagoni", + "linkedin": "jonaslagoni", + "slack": "UQ2ANBG1E", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "dotnet-nats-template", + "ts-nats-template", + "generator-react-sdk", + "generator", + "modelina", + "parser-js", + "parser-api", + "simulator" + ] + }, + { + "name": "Khuda Dad Nomani", + "github": "KhudaDad414", + "twitter": "KhudaDadNomani", + "linkedin": "khudadadnomani", + "slack": "U01RVRD1TCL", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "optimizer", + "bindings", + "glee", + ".github" + ] + }, + { + "name": "Laurent Broudoux", + "github": "lbroudoux", + "twitter": "lbroudoux", + "linkedin": "laurentbroudoux", + "slack": "U018NLDV5E1", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "bindings" + ] + }, + { + "name": "Ludovic Dussart", + "github": "m3lkior", + "linkedin": "ludovic-dussart-846a8063", + "slack": "U01BM49KL3Z", + "twitter": "ldussart", + "availableForHire": false, + "company": "Ineat", + "isTscMember": true, + "repos": [ + "avro-schema-parser" + ] + }, + { + "name": "Lukasz Gornicki", + "github": "derberg", + "linkedin": "lukasz-gornicki-a621914", + "slack": "UD698Q5LM", + "twitter": "derberq", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "avro-schema-parser", + "openapi-schema-parser", + "chatbot", + "diff", + "cli", + "generator-filters", + "generator-hooks", + "github-action-for-generator", + "generator", + "nodejs-template", + "nodejs-ws-template", + "parser-js", + "playground", + "spec", + "spec-json-schemas", + "template-for-generator-templates", + "website", + "bundler" + ] + }, + { + "name": "Maciej Urba\u0144czyk", + "github": "magicmatatjahu", + "availableForHire": false, + "linkedin": "maciej-urba\u0144czyk-909547164", + "slack": "U01EB02BP7A", + "company": "Postman", + "isTscMember": true, + "repos": [ + "asyncapi-react", + "chatbot", + "cli", + "converter-go", + "event-gateway", + "generator-react-sdk", + "generator", + "html-template", + "markdown-template", + "modelina", + "parser-js", + "parser-go", + "playground", + "server-api", + "template-for-go-projects", + "website" + ] + }, + { + "name": "Azeez Elegbede", + "linkedin": "acebuild", + "github": "AceTheCreator", + "twitter": "_acebuild", + "slack": "U01RWDD69PZ", + "company": "Postman", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "chatbot" + ] + }, + { + "name": "Michael Davis", + "github": "damaru-inc", + "availableForHire": false, + "slack": "UH3B166TD", + "company": "Solace", + "isTscMember": true, + "repos": [ + "java-spring-cloud-stream-template", + "python-paho-template", + "bindings" + ] + }, + { + "name": "Missy Turco", + "github": "mcturco", + "twitter": "missyturco", + "slack": "U02JVEQ6S9W", + "linkedin": "missy-turco-a476a6126", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "brand", + "design-system", + "studio", + "website" + ] + }, + { + "name": "Nektarios Fifes", + "github": "NektariosFifes", + "linkedin": "nektarios-fifes-372740220", + "slack": "U01SE93Q48N", + "availableForHire": true, + "isTscMember": true, + "repos": [ + "simulator" + ] + }, + { + "name": "Pavel Bodiachevskii", + "github": "Pakisan", + "slack": "U0132LQU8C9", + "twitter": "pbodiachevskii", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "jasyncapi" + ] + }, + { + "name": "Philip Schlesinger", + "github": "theschles", + "slack": "U054UUYBNLF", + "twitter": "philschlesinger", + "availableForHire": false, + "isTscMember": true, + "repos": [ + "jasyncapi-idea-plugin" + ] + }, + { + "name": "Pratik Haldankar", + "github": "pratik2315", + "slack": "U03ADC8FD2S", + "linkedin": "pratik-haldankar-1b237a205", + "twitter": "PratikHaldankr", + "availableForHire": true, + "isTscMember": true, + "repos": [ + "generator" + ] + }, + { + "name": "Richard Coppen", + "github": "rcoppen", + "linkedin": "richard-coppen", + "slack": "U01L3FH3BUH", + "availableForHire": false, + "company": "IBM", + "isTscMember": true, + "repos": [ + "bindings" + ] + }, + { + "name": "Sergio Moya", + "github": "smoya", + "linkedin": "smoya", + "slack": "UN22ZTLHG", + "twitter": "smoyac", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "bindings", + "converter-go", + "event-gateway", + "go-watermill-template", + "infra", + "parser-api", + "parser-go", + "server-api", + "spec", + "spec-json-schemas", + "template-for-go-projects" + ] + }, + { + "name": "Souvik De", + "github": "Souvikns", + "slack": "U01SGCZMJKW", + "twitter": "souvik_ns", + "linkedin": "souvik-de-a2b941169", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "cli", + "bundler", + "glee" + ] + }, + { + "name": "Alejandra Quetzalli", + "github": "alequetzalli", + "twitter": "QuetzalliAle", + "slack": "U02AKC14WAJ", + "linkedin": "alejandra-quetzalli", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "website", + "training", + "community" + ] + }, + { + "name": "David Pereira", + "github": "BOLT04", + "twitter": "BOLT2938", + "slack": "U02EC8BT0TX", + "linkedin": "jos\u00e9-david-pereira-13ba5315a", + "availableForHire": false, + "company": "Create IT", + "isTscMember": true, + "repos": [ + "server-api" + ] + }, + { + "name": "Daniel Raper", + "github": "dan-r", + "slack": "U02FP8WBFQE", + "linkedin": "danielr", + "availableForHire": false, + "company": "IBM", + "isTscMember": true, + "repos": [ + "java-template" + ] + }, + { + "name": "Kieran Murphy", + "github": "KieranM1999", + "linkedin": "kieran-murphy-175b0412b", + "availableForHire": false, + "slack": "U02FT2TKM37", + "company": "IBM", + "isTscMember": true, + "repos": [ + "java-template" + ] + }, + { + "name": "Tom Jefferson", + "github": "JEFFLUFC", + "linkedin": "t-jefferson", + "slack": "U02FPPCEH6H", + "availableForHire": false, + "company": "IBM", + "isTscMember": true, + "repos": [ + "java-template" + ] + }, + { + "name": "Lewis Relph", + "github": "lewis-relph", + "availableForHire": false, + "slack": "U02G8MDDEF3", + "company": "IBM", + "isTscMember": true, + "repos": [ + "java-template" + ] + }, + { + "name": "David Boyne", + "github": "boyney123", + "twitter": "boyney123", + "slack": "U020GN9C6FM", + "availableForHire": false, + "company": "AWS", + "isTscMember": true, + "repos": [ + "studio", + "cli" + ] + }, + { + "name": "Semen Tenishchev", + "github": "Tenischev", + "linkedin": "semen-tenishchev", + "availableForHire": true, + "slack": "U011D1DAU6S", + "isTscMember": true, + "repos": [ + "java-spring-template" + ] + }, + { + "name": "Samridhi Agrawal", + "github": "Samridhi-98", + "slack": "U02T2MY9W5T", + "linkedin": "samridhi-agrawal-1713201ab", + "availableForHire": false, + "company": "ThoughtWorks", + "isTscMember": true, + "repos": [ + "modelina" + ] + }, + { + "name": "Debajyoti Halder", + "github": "ron-debajyoti", + "twitter": "rondebajyoti", + "slack": "U02UK9RUPGQ", + "linkedin": "rondebajyoti", + "availableForHire": false, + "company": "Narvar", + "isTscMember": true, + "repos": [ + "modelina" + ] + }, + { + "name": "Ivan Garcia Sainz-Aja", + "github": "ivangsa", + "linkedin": "ivangarciasainzaja", + "slack": "UTCN3ET4M", + "availableForHire": false, + "company": "SNGULAR", + "isTscMember": true, + "repos": [ + "vs-asyncapi-preview" + ] + }, + { + "name": "Florence Njeri", + "github": "Florence-Njeri", + "linkedin": "florencenjeri", + "slack": "U03D18YKX2M", + "twitter": "njericodes", + "availableForHire": true, + "isTscMember": true, + "repos": [ + "generator" + ] + }, + { + "name": "Jeremy Whitlock", + "github": "whitlockjc", + "linkedin": "whitlockjc", + "slack": "U03HBC08EBB", + "twitter": "whitlockjc", + "availableForHire": false, + "company": "Google", + "isTscMember": true, + "repos": [ + "bindings" + ] + }, + { + "name": "Vladim\u00edr Gorej", + "github": "char0n", + "linkedin": "vladimirgorej", + "slack": "U03NV5L4S49", + "twitter": "vladimirgorej", + "availableForHire": false, + "company": "SmartBear", + "isTscMember": true, + "repos": [ + "bindings", + "spec", + "spec-json-schemas" + ] + }, + { + "name": "Alexander Wichmann", + "github": "VisualBean", + "linkedin": "alexcarlsen", + "slack": "U04C58GB8TF", + "availableForHire": false, + "company": "The LEGO Group", + "isTscMember": true, + "repos": [ + "bindings" + ] + }, + { + "name": "Barba\u00f1o Gonz\u00e1lez", + "linkedin": "barbano-gonzalez-moreno", + "twitter": "BarbanoGonzalez", + "github": "Barbanio", + "slack": "U01J42QDSLU", + "availableForHire": false, + "company": "Postman", + "isTscMember": true, + "repos": [ + "training", + "community" + ] + }, + { + "name": "Kenneth Aasan", + "github": "kennethaasan", + "slack": "U037S2HK4TS", + "twitter": "kennethaasan", + "availableForHire": false, + "company": "Sportradar", + "isTscMember": true, + "repos": [ + "modelina" + ] + }, + { + "name": "Heiko Henning", + "github": "GreenRover", + "slack": "U03AC4G51H8", + "availableForHire": false, + "company": "mtrail GmbH", + "isTscMember": true, + "repos": [ + "protobuf-schema-parser" + ] + }, + { + "name": "connil", + "github": "connil", + "slack": "U03A51H8", + "availableForHire": false, + "company": "GmbH", + "isTscMember": false, + "repos": [ + "dotnet-rabbitmq-template" + ] + }, + { + "name": "mr-nuno", + "github": "mr-nuno", + "slack": "U03A5145", + "availableForHire": false, + "company": "GmbH", + "isTscMember": false, + "repos": [ + "dotnet-rabbitmq-template" + ] + }, + { + "name": "Thulisile Sibanda", + "github": "thulieblack", + "linkedin": "v-thulisile-sibanda", + "twitter": "thulieblack", + "slack": "U03CNJPMT7C", + "availableForHire": false, + "company": "AsyncAPI Initiative", + "isTscMember": true, + "repos": [ + "website", + "community" + ] } - ] \ No newline at end of file +] \ No newline at end of file From d03d6cd393c32838e9ac16b56a11686a401cc68a Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 6 Jul 2023 02:36:56 +0200 Subject: [PATCH 050/117] chore: update meetings.json and newsrooom_videos.json (#1898) --- config/newsroom_videos.json | 12 ++++++------ dashboard.json | 32 +------------------------------- package-lock.json | 2 +- 3 files changed, 8 insertions(+), 38 deletions(-) diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index c38908459bc..38718d10dee 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/hc0Lxr3G8T4/hqdefault.jpg", + "title": "Spec 3.0 (July 5th 2023)", + "description": "https://github.com/asyncapi/community/issues/760.", + "videoId": "hc0Lxr3G8T4" + }, { "image_url": "https://i.ytimg.com/vi/EvC2PZXEM0M/hqdefault.jpg", "title": "Community Meeting, Tuesday June 27th 2023", @@ -22,11 +28,5 @@ "title": "Spec 3.0 (July 21th 2023)", "description": "https://github.com/asyncapi/community/issues/737.", "videoId": "DUB3XL_APgs" - }, - { - "image_url": "https://i.ytimg.com/vi/mAISwYCZa2I/hqdefault.jpg", - "title": "Studio planning", - "description": "https://github.com/asyncapi/community/issues/745.", - "videoId": "mAISwYCZa2I" } ] \ No newline at end of file diff --git a/dashboard.json b/dashboard.json index cde213832e2..b451034d37e 100644 --- a/dashboard.json +++ b/dashboard.json @@ -29,7 +29,7 @@ "resourcePath": "/asyncapi/generator/pull/978", "repo": "asyncapi/generator", "labels": [], - "score": 24.122665454937735 + "score": 24.697014632436254 }, { "id": "PR_kwDODCuNRs4r1oNL", @@ -702,21 +702,6 @@ } ] }, - { - "id": "I_kwDOFi_gUM5gradR", - "title": "add prettier configuration", - "isAssigned": false, - "resourcePath": "/asyncapi/glee/issues/398", - "repo": "asyncapi/glee", - "author": "KhudaDad414", - "area": "typescript", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - } - ] - }, { "id": "I_kwDOFDnrNc5gDKCJ", "title": "Generate example function for TypeScript models", @@ -853,21 +838,6 @@ } ] }, - { - "id": "I_kwDODyzcIc5Gl6TS", - "title": "Validate workflow on PR level", - "isAssigned": false, - "resourcePath": "/asyncapi/.github/issues/150", - "repo": "asyncapi/.github", - "author": "KhudaDad414", - "area": "ci-cd", - "labels": [ - { - "name": "enhancement", - "color": "a2eeef" - } - ] - }, { "id": "I_kwDOFiHaLM5DeQ4y", "title": "Add support for HTML output", diff --git a/package-lock.json b/package-lock.json index d191f0a2c56..0ca4662364d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@floating-ui/react-dom-interactions": "^0.1.1", "@fullhuman/postcss-purgecss": "^2.2.0", "@heroicons/react": "^1.0.5", - "@mdx-js/loader": "^1.6.4", + "@mdx-js/loader": "1.6.4", "@mdx-js/react": "^1.6.4", "@monaco-editor/react": "^3.3.0", "@next/mdx": "^9.4.2", From e5ec8a1344cfcea50701bfe7f69ab500792633d6 Mon Sep 17 00:00:00 2001 From: Shriansh Agarwal <41548480+Shriansh2002@users.noreply.github.com> Date: Thu, 6 Jul 2023 14:47:14 +0530 Subject: [PATCH 051/117] style: dynamic logo colors for brands (#1894) Co-authored-by: Lukasz Gornicki --- components/logos/Adidas.js | 8 ++++---- components/logos/Axway.js | 12 +++++++----- components/logos/SAP.js | 30 ++++++++++++++++++++++-------- components/logos/Salesforce.js | 4 ++-- components/logos/Slack.js | 10 +++++----- pages/index.js | 6 +++--- 6 files changed, 43 insertions(+), 27 deletions(-) diff --git a/components/logos/Adidas.js b/components/logos/Adidas.js index 900b9dddcd0..9c4a10348cb 100644 --- a/components/logos/Adidas.js +++ b/components/logos/Adidas.js @@ -1,8 +1,8 @@ export default function AdidasLogo({ className }) { - return ( - - - + + - - + + + + + - - diff --git a/components/logos/SAP.js b/components/logos/SAP.js index 2980d29f373..91a92b7b3b9 100644 --- a/components/logos/SAP.js +++ b/components/logos/SAP.js @@ -1,12 +1,26 @@ +import { useState } from 'react'; + export default function SapLogo({ className }) { - return ( - - - - - - - + + + + + + - - + + diff --git a/components/logos/Slack.js b/components/logos/Slack.js index e17e5b23260..cdb6a9ec1f0 100644 --- a/components/logos/Slack.js +++ b/components/logos/Slack.js @@ -20,25 +20,25 @@ export default function SlackLogo({ className }) { c18.718,0,36.612-8.433,43.812-20.568v17.483h44.018V338.088H772.978L772.978,338.088z"/> - + - + - + - +
    • - +
    • - +
    • - +
    • From 4d7dbaab36910e60f28eecd028d47d82dda2985c Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 11:19:48 +0200 Subject: [PATCH 052/117] docs: add Shriansh2002 as a contributor for code (#1902) --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 413b39b877e..f94f065a90b 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -482,6 +482,15 @@ "contributions": [ "infra" ] + }, + { + "login": "Shriansh2002", + "name": "Shriansh Agarwal", + "avatar_url": "https://avatars.githubusercontent.com/u/41548480?v=4", + "profile": "http://shrianshagarwal.in", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index b1e0d423877..cdc10510689 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ --- -[![All Contributors](https://img.shields.io/badge/all_contributors-48-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-49-orange.svg?style=flat-square)](#contributors-) [![Netlify Status](https://api.netlify.com/api/v1/badges/b2137407-b765-46c4-95b5-a72d9b1592ab/deploy-status)](https://app.netlify.com/sites/asyncapi-website/deploys) @@ -210,6 +210,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Florence Njeri
      Florence Njeri

      💻 Ansh Goyal
      Ansh Goyal

      💻 👀 Sumant.xD
      Sumant.xD

      🚇 + Shriansh Agarwal
      Shriansh Agarwal

      💻 From 48832ef24d9d2579221ce8d504fd62b2cd77b280 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Thu, 6 Jul 2023 12:37:44 +0200 Subject: [PATCH 053/117] docs(cli): update latest cli documentation (#1903) --- pages/docs/tools/cli/usage.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pages/docs/tools/cli/usage.md b/pages/docs/tools/cli/usage.md index 221181bcd32..1af7135f676 100644 --- a/pages/docs/tools/cli/usage.md +++ b/pages/docs/tools/cli/usage.md @@ -29,7 +29,7 @@ $ npm install -g @asyncapi/cli $ asyncapi COMMAND running command... $ asyncapi (--version) -@asyncapi/cli/0.50.0 linux-x64 node-v18.16.1 +@asyncapi/cli/0.50.1 linux-x64 node-v18.16.1 $ asyncapi --help [COMMAND] USAGE $ asyncapi COMMAND @@ -91,7 +91,7 @@ EXAMPLES $ asyncapi bundle ./asyncapi.yaml ./features.yaml --base ./asyncapi.yaml --reference-into-components ``` -_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/bundle.ts)_ +_See code: [src/commands/bundle.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/bundle.ts)_ ## `asyncapi config` @@ -105,7 +105,7 @@ DESCRIPTION CLI config settings ``` -_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/config/index.ts)_ +_See code: [src/commands/config/index.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/config/index.ts)_ ## `asyncapi config context` @@ -234,7 +234,7 @@ DESCRIPTION Convert asyncapi documents older to newer versions ``` -_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/convert.ts)_ +_See code: [src/commands/convert.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/convert.ts)_ ## `asyncapi diff OLD NEW` @@ -289,7 +289,7 @@ DESCRIPTION Find diff between two asyncapi files ``` -_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/diff.ts)_ +_See code: [src/commands/diff.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/diff.ts)_ ## `asyncapi generate` @@ -303,7 +303,7 @@ DESCRIPTION Generate typed models or other things like clients, applications or docs using AsyncAPI Generator templates. ``` -_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/generate/index.ts)_ +_See code: [src/commands/generate/index.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/generate/index.ts)_ ## `asyncapi generate fromTemplate ASYNCAPI TEMPLATE` @@ -429,7 +429,7 @@ DESCRIPTION Creates a new asyncapi file ``` -_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/new/index.ts)_ +_See code: [src/commands/new/index.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/new/index.ts)_ ## `asyncapi new file` @@ -517,7 +517,7 @@ EXAMPLES $ asyncapi optimize ./asyncapi.yaml --optimization=remove-components,reuse-components,move-to-components --output=terminal --no-tty ``` -_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/optimize.ts)_ +_See code: [src/commands/optimize.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/optimize.ts)_ ## `asyncapi start` @@ -531,7 +531,7 @@ DESCRIPTION Start asyncapi studio ``` -_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/start/index.ts)_ +_See code: [src/commands/start/index.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/start/index.ts)_ ## `asyncapi start studio` @@ -575,5 +575,5 @@ DESCRIPTION validate asyncapi file ``` -_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.50.0/src/commands/validate.ts)_ +_See code: [src/commands/validate.ts](https://github.com/asyncapi/cli/blob/v0.50.1/src/commands/validate.ts)_ From 2cf4ae651295e2759f14126059790c3c6dcce4f3 Mon Sep 17 00:00:00 2001 From: Missy Turco <60163079+mcturco@users.noreply.github.com> Date: Thu, 6 Jul 2023 17:41:04 -0400 Subject: [PATCH 054/117] Remove mcturco from CO (#1904) --- CODEOWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 56d4723855a..cf7a212d7c9 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -5,7 +5,7 @@ # For more details, read the following article on GitHub: https://help.github.com/articles/about-codeowners/. # The default owners are automatically added as reviewers when you open a pull request unless different owners are specified in the file. -* @derberg @mcturco @akshatnema @magicmatatjahu @asyncapi-bot-eve +* @derberg @akshatnema @magicmatatjahu @asyncapi-bot-eve # All .md files *.md @alequetzalli @asyncapi-bot-eve @@ -13,4 +13,4 @@ pages/blog/*.md @thulieblack @alequetzalli pages/community/*.md @thulieblack @alequetzalli -README.md @alequetzalli @derberg @mcturco @akshatnema @magicmatatjahu @asyncapi-bot-eve +README.md @alequetzalli @derberg @akshatnema @magicmatatjahu @asyncapi-bot-eve From ee6fda9fe6eba58733041e822c472c58cc07778f Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Fri, 7 Jul 2023 02:36:06 +0200 Subject: [PATCH 055/117] chore: update meetings.json and newsrooom_videos.json (#1907) --- config/meetings.json | 14 +++++++++ config/newsroom_videos.json | 12 ++++---- dashboard.json | 61 ++++++++++++++++++++----------------- 3 files changed, 53 insertions(+), 34 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 1b9e7cfa8ea..215452d33db 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -212,5 +212,19 @@ "url": "https://github.com/asyncapi/community/issues/784", "banner": "https://user-images.githubusercontent.com/40604284/250981834-3418496b-d123-4e74-a7ff-082b4714c841.png", "date": "2023-07-11T16:00:00.000Z" + }, + { + "title": "Spec 3.0 Docs Meeting", + "calLink": "https://www.google.com/calendar/event?eid=NzU0aGMxOWY5MmYyYzA3OTduazF0MWZqY2MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/790", + "banner": "", + "date": "2023-07-20T14:30:00.000Z" + }, + { + "title": "Spec 3.0 Docs Meeting", + "calLink": "https://www.google.com/calendar/event?eid=aWhzNWwxZWkxdWVlMWhvbGs4aWY2YzU1am8gY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", + "url": "https://github.com/asyncapi/community/issues/791", + "banner": "", + "date": "2023-08-03T14:30:00.000Z" } ] \ No newline at end of file diff --git a/config/newsroom_videos.json b/config/newsroom_videos.json index 38718d10dee..7f757c8ea12 100644 --- a/config/newsroom_videos.json +++ b/config/newsroom_videos.json @@ -1,4 +1,10 @@ [ + { + "image_url": "https://i.ytimg.com/vi/Lunp8eSLONc/hqdefault.jpg", + "title": "Spec 3.0 DOCS Meeting (July 6th 2023)", + "description": "https://github.com/asyncapi/community/issues/774.", + "videoId": "Lunp8eSLONc" + }, { "image_url": "https://i.ytimg.com/vi/hc0Lxr3G8T4/hqdefault.jpg", "title": "Spec 3.0 (July 5th 2023)", @@ -22,11 +28,5 @@ "title": "AsyncAPI Spec 3.0 Docs Meeting", "description": "https://github.com/asyncapi/community/issues/749.", "videoId": "dRu9itGfJ1E" - }, - { - "image_url": "https://i.ytimg.com/vi/DUB3XL_APgs/hqdefault.jpg", - "title": "Spec 3.0 (July 21th 2023)", - "description": "https://github.com/asyncapi/community/issues/737.", - "videoId": "DUB3XL_APgs" } ] \ No newline at end of file diff --git a/dashboard.json b/dashboard.json index b451034d37e..69f966fb9fb 100644 --- a/dashboard.json +++ b/dashboard.json @@ -9,16 +9,32 @@ "resourcePath": "/asyncapi/spec/issues/618", "repo": "asyncapi/spec", "labels": [ - { - "name": "stale", - "color": "819cd3" - }, { "name": "💭 Strawman (RFC 0)", "color": "C2E0C6" } ], - "score": 52.265775152365094 + "score": 52.84012432986361 + }, + { + "id": "I_kwDOFLhIt84-OUI3", + "isPR": false, + "isAssigned": false, + "title": "Create educational & technical video explaining AsyncAPI's main features", + "author": "alequetzalli", + "resourcePath": "/asyncapi/community/issues/155", + "repo": "asyncapi/community", + "labels": [ + { + "name": "enhancement", + "color": "a2eeef" + }, + { + "name": "stale", + "color": "ededed" + } + ], + "score": 32.45072852866624 }, { "id": "PR_kwDOCHlHJM5SLlyl", @@ -29,7 +45,7 @@ "resourcePath": "/asyncapi/generator/pull/978", "repo": "asyncapi/generator", "labels": [], - "score": 24.697014632436254 + "score": 25.55853839868403 }, { "id": "PR_kwDODCuNRs4r1oNL", @@ -107,6 +123,17 @@ "labels": [], "score": 16.65612614745701 }, + { + "id": "PR_kwDOFLhIt85RTiHb", + "isPR": true, + "isAssigned": false, + "title": "docs: add flowchart for GSoC23 project in README.md", + "author": "14Richa", + "resourcePath": "/asyncapi/community/pull/719", + "repo": "asyncapi/community", + "labels": [], + "score": 14.358729437462937 + }, { "id": "PR_kwDOBGu-185KHmXZ", "isPR": true, @@ -128,28 +155,6 @@ "repo": "asyncapi/cli", "labels": [], "score": 14.07155484871368 - }, - { - "id": "PR_kwDOBW5R_c5Jw5C6", - "isPR": true, - "isAssigned": true, - "title": "docs: new style guide - Inclusive Language", - "author": "BhaswatiRoy", - "resourcePath": "/asyncapi/website/pull/1327", - "repo": "asyncapi/website", - "labels": [], - "score": 14.07155484871368 - }, - { - "id": "PR_kwDOB5hCo85NWLAa", - "isPR": true, - "isAssigned": false, - "title": "feat!: allow multi format schemas", - "author": "smoya", - "resourcePath": "/asyncapi/spec-json-schemas/pull/370", - "repo": "asyncapi/spec-json-schemas", - "labels": [], - "score": 13.497205671215161 } ], "goodFirstIssues": [ From 66f948dcf6e7ba57a747bd65be2a2608059bfcf7 Mon Sep 17 00:00:00 2001 From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Date: Fri, 7 Jul 2023 09:26:20 +0200 Subject: [PATCH 056/117] docs(blog): june-2023 community update (#1880) Co-authored-by: Akshat Nema <76521428+akshatnema@users.noreply.github.com>%0ACo-authored-by: Alejandra Quetzalli %0ACo-authored-by: Alejandra Quetzalli %0ACo-authored-by: Lukasz Gornicki --- pages/blog/april-2023.md | 1 - pages/blog/june-2023.md | 61 ++++++++++++++++++ pages/blog/march-2023.md | 1 - pages/blog/may-2023.md | 1 - .../posts/2023-summary/blog-banner-june.webp | Bin 0 -> 320858 bytes 5 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 pages/blog/june-2023.md create mode 100644 public/img/posts/2023-summary/blog-banner-june.webp diff --git a/pages/blog/april-2023.md b/pages/blog/april-2023.md index 5b589085d13..5b4a0dc1be1 100644 --- a/pages/blog/april-2023.md +++ b/pages/blog/april-2023.md @@ -11,7 +11,6 @@ authors: link: https://www.linkedin.com/in/v-thulisile-sibanda/ byline: AsyncAPI Community Manager excerpt: 'April Community Update' -featured: true --- April brought ecstatic news that AsyncAPI is participating in the 2023 Google Season of Docs (GSoD). This achievement is a result of the exceptional work done by [Alejandra Quetzalli](https://www.linkedin.com/in/alejandra-quetzalli/), our lead documentation engineer and author of [Docs-as-Ecosystem: The Community Approach to Engineering](https://docsasecosystem.com/). Alejandra's contributions to the documentation process have been vital in improving the quality of AsyncAPI documentation, and her hard work has not gone unnoticed. As part of the GSoD program, Ale carefully reviewed and selected the best applicants out of the 87 applications received, and she conducted live writing/editing interviews. We are excited to welcome the five selected candidates, Mahfuza, Bhaswati, Rohit, Abhishek, and Hridyesh! We can't wait to see them contribute to AsyncAPI's documentation with Ale's guidance and mentorship. Do check out [Alejandra's Q1 AsyncAPI documentation report](https://www.asyncapi.com/blog/2023-Q1-docs-report) to learn more about our docs community's recent efforts. diff --git a/pages/blog/june-2023.md b/pages/blog/june-2023.md new file mode 100644 index 00000000000..b7556e1ca90 --- /dev/null +++ b/pages/blog/june-2023.md @@ -0,0 +1,61 @@ +--- +title: "Community Update: June 2023" +date: 2023-07-05T06:00:00+01:00 +type: Communication +tags: + - Project Status +cover: /img/posts/2023-summary/blog-banner-june.webp +authors: + - name: Thulisile Sibanda + photo: /img/avatars/thulieblack.webp + link: https://www.linkedin.com/in/v-thulisile-sibanda/ + byline: AsyncAPI Community Manager +excerpt: 'June Community Update' +featured: true +--- + +Over the last few months, we have seen a significant surge in people interested in using AsyncAPI to document and define event-driven architectures. We've received feedback on how it has been challenging to reuse objects effectively, like servers, messages, channels, and even author AsyncAPI documents. If you are one of those individuals, we have excellent news; [Fran Méndez](https://www.linkedin.com/in/fmvilas), [Samir Amzani](https://www.linkedin.com/in/amzani/), and the team have been working on redesigning the AsyncAPI Studio. + +This redesign aims to enhance the developer experience and ensure the quality of AsyncAPI files and tools. Additionally, we are trying out [the Shape Up dashboard](https://shapeit.app/projects/org/asyncapi/16) to coordinate with the development and redesign process. Please [join the AsyncAPI Studio discussion](https://github.com/asyncapi/studio/issues/634) if you wish to keep up with the progress or contribute. + +## AsyncAPI Conf on Tour 2023 (AACoT) Update +AsyncAPI is heading to London on the 20th of September, 2023, and [IBM](https://www.ibm.com/) will be hosting us. We want to give a big shout-out to [Dale Lane](https://www.linkedin.com/in/dalelane) for bringing them on board. + +The [Call for Speakers for AACoT London Edition is now open](https://conference.asyncapi.com/), and we welcome anyone who has a talk that can benefit or wants to share their experience with the AsyncAPI community to submit their session before the deadline on the 28th of July. + +We've been in touch with the speakers for AACoT Madrid Edition and are thrilled to have received exceptional talks from industry experts. We're working on creating a schedule and a rich program that will benefit all attendees. + +## Code of Conduct Committee +During April, we started the [discussion around refreshing the AsyncAPI Code of Conduct (CoC)](https://github.com/orgs/asyncapi/discussions/682), and we have received a positive response from the community thus far. As part of the conversation, we are establishing a CoC Committee that will enforce and ensure that everyone in the community follows the CoC and doesn't violate it. +In line with that, we are encouraging everyone to participate in nominating three individuals who are part of the [Technical Steering Committee](https://www.asyncapi.com/community/tsc) to become our first Code of Conduct Committee. + +> Drop a comment with your nominations to the [AsyncAPI Code of Conduct Refresh discussion](https://github.com/orgs/asyncapi/discussions/682). + +Everyone must be involved, which helps keep our community safe and inclusive. + +## Spec x Tooling +We are thrilled to announce that the [API documentation for Modelina](https://modelina.org/docs/api) is now digitalized. This makes it easier to find information on how to use Modelina's features, and the best part is that it automatically updates when the source code changes. Also, we have added integration tests for TypeScript, PHP, C++, and Kotlin. Please be sure to try them out today and let us know what you think. + +## AsyncAPI Mentorship Program +After receiving an overwhelming response from folks all over the community about the mentorship program application, we are moving closer to the announcements of this year's mentees for the AsyncAPI Mentorship Program Cohort Two. Our gratitude goes out to all our mentors who dedicate their time reviewing applications to select the best candidates to mentor. + +Please keep your eyes on the announcement by following [the AsyncAPI Mentorship discussion](https://github.com/orgs/asyncapi/discussions/689#discussioncomment-6028934). + +## AsyncAPI Bounty Program Update +The trial for the AsyncAPI Bounty Program has been progressing exceptionally well. Most of the issues have been successfully completed and compensated. We anticipate the remaining two issues to be wrapped up within the next few days. + +We are excited to observe the success of this trial and its contribution towards our community goals. + +## In Case You Missed It + +Are you looking to enhance your knowledge about AsyncAPI and its tools? Check out this onboarding video to gain a deeper understanding. + + + +If you missed [Ace's](https://www.linkedin.com/in/acebuild/) workshop on building a headless commerce architecture using the AsyncAPI specification and AMQP, there's no need to worry. You can catch up by watching the recording. + + + +## Coming in July +- **AsyncAPI Community Updates Newsletter** - The next issue will drop in July's first week. Stay informed about the latest community activities by [subscribing to the AsyncAPI Newsletter](https://www.asyncapi.com/newsletter). +- **Open Standards and Private Products, with Valériane Venance** - We will host [Valériane Venance](https://www.linkedin.com/in/vvenance/), Principal Developer Advocate at Bump.sh, on the [13th of July at 9 am UTC as we tackle the topic "Open Standards and Private Products: A DevRel's Dream or Nightmare"](https://github.com/asyncapi/community/issues/775). Mark your calendars, and be sure to join. diff --git a/pages/blog/march-2023.md b/pages/blog/march-2023.md index 720ddf57f1b..ff6600d521e 100644 --- a/pages/blog/march-2023.md +++ b/pages/blog/march-2023.md @@ -11,7 +11,6 @@ authors: link: https://www.linkedin.com/in/v-thulisile-sibanda/ byline: AsyncAPI Community Manager excerpt: 'Community update for March' -featured: true --- March came with some ecstatic news for the AsyncAPI community. We welcomed [Thulisile Sibanda](https://www.linkedin.com/in/v-thulisile-sibanda/) as our new Community Manager. And to top it all, our beloved community guardian, [Lukasz Gornicki](https://www.linkedin.com/in/lukasz-gornicki-a621914/) stepped up to become the new [Executive Director](https://github.com/orgs/asyncapi/discussions/615) for AsyncAPI. This is such an incredible milestone for the community and we can't wait to see the amazing things to follow in the next few months. diff --git a/pages/blog/may-2023.md b/pages/blog/may-2023.md index bc84a79d549..f52797fbc6f 100644 --- a/pages/blog/may-2023.md +++ b/pages/blog/may-2023.md @@ -11,7 +11,6 @@ authors: link: https://www.linkedin.com/in/v-thulisile-sibanda/ byline: AsyncAPI Community Manager excerpt: 'May Community Update' -featured: true --- At AsyncAPI, we strive to provide valuable opportunities for individuals to work on open-source projects and gain real-world experience. diff --git a/public/img/posts/2023-summary/blog-banner-june.webp b/public/img/posts/2023-summary/blog-banner-june.webp new file mode 100644 index 0000000000000000000000000000000000000000..bece7f00f1749e23246c34648ec47546be9b7203 GIT binary patch literal 320858 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

      wR4l89N|?aQNBRb%(b{K6mNN#sS{zi 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�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

      %ZxI7_|TxWCtE4QL=RlpMQZa%M~ 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%0A*=-38usxPX=^`t^Hq>;M-$0SU; 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%0Do)r= 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 literal 0 HcmV?d00001 From 58b714275010302f0b19d17706701dd636099928 Mon Sep 17 00:00:00 2001 From: asyncapi-bot Date: Sat, 8 Jul 2023 02:33:27 +0200 Subject: [PATCH 057/117] chore: update meetings.json and newsrooom_videos.json (#1917) --- config/meetings.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/config/meetings.json b/config/meetings.json index 215452d33db..cb36564351d 100644 --- a/config/meetings.json +++ b/config/meetings.json @@ -1,10 +1,4 @@ [ - { - "title": "Spec 3.0 Meeting", - "calLink": "https://www.google.com/calendar/event?eid=bjE2ZTdnZGJ1bHNxMWhrcW9rcjh0bGRxN3MgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", - "url": "https://github.com/asyncapi/community/issues/635", - "date": "2023-03-29T16:00:00.000Z" - }, { "title": "Community Meeting", "calLink": "https://www.google.com/calendar/event?eid=czRmMG5maHRsYjduM2g3dmwxMDM1Z3R0NzAgY19xOXRzZWlnbG9tZHNqNm5qdWh2YnB0czExY0Bn", From 7541555bbcf70dbae58aae3b4e5df001d3c134e3 Mon Sep 17 00:00:00 2001 From: Aadrika Bhargava <64789514+reachaadrika@users.noreply.github.com> Date: Sat, 8 Jul 2023 16:05:01 +0530 Subject: [PATCH 058/117] feat: adding unit tests for roadmap component (#1791) --- components/roadmap/RoadmapColumn.js | 6 +-- components/roadmap/RoadmapItem.js | 4 +- components/roadmap/RoadmapList.js | 2 +- cypress/test/Roadmap/RoadmapColumn.cy.js | 62 ++++++++++++++++++++++++ cypress/test/Roadmap/RoadmapItem.cy.js | 53 ++++++++++++++++++++ cypress/test/Roadmap/RoadmapList.cy.js | 29 +++++++++++ 6 files changed, 150 insertions(+), 6 deletions(-) create mode 100644 cypress/test/Roadmap/RoadmapColumn.cy.js create mode 100644 cypress/test/Roadmap/RoadmapItem.cy.js create mode 100644 cypress/test/Roadmap/RoadmapList.cy.js diff --git a/components/roadmap/RoadmapColumn.js b/components/roadmap/RoadmapColumn.js index 9c040f5240a..f443cef0961 100644 --- a/components/roadmap/RoadmapColumn.js +++ b/components/roadmap/RoadmapColumn.js @@ -7,12 +7,12 @@ export default function RoadmapColumn({ description, colorClass, items = [], - childrenCollapsed = true, + childrenCollapsed = false, }) { return (

      -
      - {title} +
      + {title} {description}
      +
    • { showConnector && ( {isCollapsible && ( - )} diff --git a/components/roadmap/RoadmapList.js b/components/roadmap/RoadmapList.js index 38367d2eee3..95317fb7ffe 100644 --- a/components/roadmap/RoadmapList.js +++ b/components/roadmap/RoadmapList.js @@ -10,7 +10,7 @@ export default function RoadmapList({ }) { return ( items && items.length && ( -
        +
          { !collapsed && ( items.map((item, index) => ( { + it('renders the RoadmapColumn component with title and description', () => { + const title = 'Test RoadmapColumn'; + const description = 'This is a test RoadmapColumn'; + const colorClass = 'blue'; + const items = []; + const childrenCollapsed = false; + mount( + + ); + cy.get('[data-testid="RoadmapColumn-heading"]').contains('h3',title).should('exist'); + cy.get('[data-testid="RoadmapColumn-heading"]').contains('p',description).should('exist'); + }); + + it('renders the RoadmapList component within RoadmapColumn', () => { + const items = [ + { id: 1, name: 'Item 1' }, + { id: 2, name: 'Item 2' }, + ]; + mount( + + ); + //renders RoadmapList component + cy.get(RoadmapList).should('exist'); + + }); + + it('renders the correct number of items in RoadmapList' , () => { + const items = [ + { id: 1, name: 'Item 1' }, + { id: 2, name: 'Item 2' }, + ]; + mount( + + ); + cy.get('[data-testid="RoadmapItem-list"]').should('have.length', items.length); + }) + +}); + diff --git a/cypress/test/Roadmap/RoadmapItem.cy.js b/cypress/test/Roadmap/RoadmapItem.cy.js new file mode 100644 index 00000000000..c589cb6c17c --- /dev/null +++ b/cypress/test/Roadmap/RoadmapItem.cy.js @@ -0,0 +1,53 @@ +import { mount } from '@cypress/react'; +import RoadmapItem from '../../../components/roadmap/RoadmapItem'; + +describe('RoadmapItem', () => { + const item = { + title: 'Sample Item', + solutions: [{ title: 'Solution 1' }, { title: 'Solution 2' }], + implementations: [ + { title: 'Implementation 1' }, + { title: 'Implementation 2' }, + ], + description: 'Lorem ipsum dolor sit amet.', + }; + + it('renders the collapsed RoadmapItem correctly', () => { + mount(); + + // Assert that the collapsed RoadmapItem is rendered correctly + cy.get('[data-testid="RoadmapItem-list"]').should( + 'have.class', + 'border-l-2 border-dashed border-gray-300' + ); + cy.contains('Sample Item').should('be.visible'); + }); + + it('expands the RoadmapItem when clicked', () => { + mount(); + + + cy.get('[data-testid="RoadmapItem-button"]').click(); + + // Assert that the expanded RoadmapItem is rendered correctly + cy.get('[data-testid="RoadmapItem-list"]').should( + 'have.class', + 'border-l-2 border-dashed border-gray-300' + ); + cy.contains('Sample Item').should('be.visible'); + cy.contains('Solution 1').should('be.visible'); + cy.contains('Solution 2').should('be.visible'); + cy.contains('Implementation 1').should('be.visible'); + cy.contains('Implementation 2').should('be.visible'); + }); + it('opens the description modal when clicked', () => { + mount(); + cy.contains('a', item.title).click(); + + // Assert that the description modal is opened + cy.contains(item.title).should('be.visible'); + cy.contains(item.description).should('be.visible'); + cy.contains(item.title).should('be.visible'); + cy.contains(item.description).should('be.visible'); + }); +}); diff --git a/cypress/test/Roadmap/RoadmapList.cy.js b/cypress/test/Roadmap/RoadmapList.cy.js new file mode 100644 index 00000000000..010f70cbda8 --- /dev/null +++ b/cypress/test/Roadmap/RoadmapList.cy.js @@ -0,0 +1,29 @@ +import React from 'react'; +import { mount } from 'cypress/react'; +import RoadmapList from '../../../components/roadmap/RoadmapList'; +describe('RoadmapList component', () => { + const items = [ + { title: 'Item 1', description: 'Description 1' }, + { title: 'Item 2', description: 'Description 2' }, + { title: 'Item 3', description: 'Description 3' }, + ]; + it('renders the component with items', () => { + mount(); + //check if the length of list matches + cy.get('[data-testid="RoadmapItem-list"]').should('have.length', items.length); + cy.get('[data-testid="RoadmapList-list"]').should('exist'); + cy.get('[data-testid="RoadmapList-list"]').children().should('have.length', items.length); + }); + + it('renders the component with collapsed items', () => { + mount(); + // check if collapsed items are 0 + cy.get('[data-testid="RoadmapItem-list"]').should('have.length',0); + + //component is rendered + cy.get('[data-testid="RoadmapList-list"]').should('exist'); + + //items are not rendered when collapsed + cy.get('[data-testid="RoadmapList-list"]').children().should('not.exist'); + }); +}); From e5e9c78eb726e5cd0597963d005b979c43d59dd7 Mon Sep 17 00:00:00 2001 From: Aadrika Bhargava <64789514+reachaadrika@users.noreply.github.com> Date: Mon, 10 Jul 2023 20:39:09 +0530 Subject: [PATCH 059/117] feat: adding unit tests for sponsors component (#1804) --- components/GoldSponsors.js | 21 ------ components/MDX.js | 2 +- components/SilverSponsors.js | 21 ------ components/Sponsors.js | 78 ---------------------- components/sponsors/GoldSponsors.js | 27 ++++++++ components/sponsors/GoldSponsorsList.js | 8 +++ components/sponsors/SilverSponsors.js | 27 ++++++++ components/sponsors/SilverSponsorsList.js | 8 +++ components/sponsors/Sponsors.js | 44 ++++++++++++ components/sponsors/SponsorsList.js | 30 +++++++++ cypress/test/sponsors/GoldSponsors.cy.js | 22 ++++++ cypress/test/sponsors/SilverSponsors.cy.js | 18 +++++ cypress/test/sponsors/Sponsors.cy.js | 36 ++++++++++ pages/index.js | 6 +- 14 files changed, 224 insertions(+), 124 deletions(-) delete mode 100644 components/GoldSponsors.js delete mode 100644 components/SilverSponsors.js delete mode 100644 components/Sponsors.js create mode 100644 components/sponsors/GoldSponsors.js create mode 100644 components/sponsors/GoldSponsorsList.js create mode 100644 components/sponsors/SilverSponsors.js create mode 100644 components/sponsors/SilverSponsorsList.js create mode 100644 components/sponsors/Sponsors.js create mode 100644 components/sponsors/SponsorsList.js create mode 100644 cypress/test/sponsors/GoldSponsors.cy.js create mode 100644 cypress/test/sponsors/SilverSponsors.cy.js create mode 100644 cypress/test/sponsors/Sponsors.cy.js diff --git a/components/GoldSponsors.js b/components/GoldSponsors.js deleted file mode 100644 index a958de28fd5..00000000000 --- a/components/GoldSponsors.js +++ /dev/null @@ -1,21 +0,0 @@ -export default function GoldSponsors({ className = '', showSupportBanner = true }){ - return( -
          -
          - - Red Hat - -
          -
          - ) - -} diff --git a/components/MDX.js b/components/MDX.js index b35c1a2afba..168e6c8dfb7 100644 --- a/components/MDX.js +++ b/components/MDX.js @@ -10,7 +10,7 @@ import ChapterSuggestions from '../components/buttons/ChapterSuggestions' import CodeBlock from '../components/editor/CodeBlock' import Remember from '../components/Remember' import Warning from '../components/Warning' -import Sponsors from '../components/Sponsors' +import Sponsors from "./sponsors/Sponsors"; import Caption from '../components/Caption' import Row from '../components/layout/Row' import Column from '../components/layout/Column' diff --git a/components/SilverSponsors.js b/components/SilverSponsors.js deleted file mode 100644 index 8159d3116a7..00000000000 --- a/components/SilverSponsors.js +++ /dev/null @@ -1,21 +0,0 @@ -export default function SilverSponsors({ className = '', showSupportBanner = true }){ - return( -
          -
          - - Bump.sh - -
          -
          - ) - -} diff --git a/components/Sponsors.js b/components/Sponsors.js deleted file mode 100644 index cd6c1607995..00000000000 --- a/components/Sponsors.js +++ /dev/null @@ -1,78 +0,0 @@ -export default function Sponsors({ className = '', showSupportBanner = true }) { - return ( -
          - - {showSupportBanner && ( -
          - Want to become a sponsor?{' '} - - Support us! - -
          - )} -
          - ); -} diff --git a/components/sponsors/GoldSponsors.js b/components/sponsors/GoldSponsors.js new file mode 100644 index 00000000000..d8d73bc34bd --- /dev/null +++ b/components/sponsors/GoldSponsors.js @@ -0,0 +1,27 @@ +import {goldSponsors} from './GoldSponsorsList'; +export default function GoldSponsors({ className = '', showSupportBanner = true }) { + return ( +
          +
          + {goldSponsors.map((sponsor, index) => ( + + {sponsor.name} + + ))} +
          +
          + ); + } + diff --git a/components/sponsors/GoldSponsorsList.js b/components/sponsors/GoldSponsorsList.js new file mode 100644 index 00000000000..bf037925cc8 --- /dev/null +++ b/components/sponsors/GoldSponsorsList.js @@ -0,0 +1,8 @@ +export const goldSponsors = [ + { + name: 'Red Hat', + imageSrc: '/img/sponsors/redhat.svg', + website: 'https://www.redhat.com/', + }, + +]; \ No newline at end of file diff --git a/components/sponsors/SilverSponsors.js b/components/sponsors/SilverSponsors.js new file mode 100644 index 00000000000..51aff2d17f7 --- /dev/null +++ b/components/sponsors/SilverSponsors.js @@ -0,0 +1,27 @@ +import { Silversponsors } from "./SilverSponsorsList"; +export default function SilverSponsors({ className = '', showSupportBanner = true }) { + return ( +
          +
          + {Silversponsors.map((sponsor, index) => ( + + {sponsor.name} + + ))} +
          +
          + ); + } + \ No newline at end of file diff --git a/components/sponsors/SilverSponsorsList.js b/components/sponsors/SilverSponsorsList.js new file mode 100644 index 00000000000..ced66590032 --- /dev/null +++ b/components/sponsors/SilverSponsorsList.js @@ -0,0 +1,8 @@ +export const Silversponsors = [ + { + name: 'Bump.sh', + url: 'https://bump.sh/asyncapi?utm_source=asyncapi&utm_medium=referral&utm_campaign=sponsor', + image: '/img/sponsors/bumpsh.svg' + }, + + ]; \ No newline at end of file diff --git a/components/sponsors/Sponsors.js b/components/sponsors/Sponsors.js new file mode 100644 index 00000000000..5777bcea274 --- /dev/null +++ b/components/sponsors/Sponsors.js @@ -0,0 +1,44 @@ +import { sponsors } from "./SponsorsList"; +export default function Sponsors({ className = '', showSupportBanner = true }) { +return ( +
          +
            + {sponsors.map((sponsor, index) => ( +
          • + + {sponsor.altText} + +
          • + ))} +
          + {showSupportBanner && ( +
          + Want to become a sponsor?{' '} + + Support us! + +
          + )} +
          + ); +} diff --git a/components/sponsors/SponsorsList.js b/components/sponsors/SponsorsList.js new file mode 100644 index 00000000000..9170aad48ba --- /dev/null +++ b/components/sponsors/SponsorsList.js @@ -0,0 +1,30 @@ +export const sponsors = [ + { + name: 'IBM', + link: 'https://www.ibm.com', + imageSrc: '/img/sponsors/ibm.png', + altText: 'IBM', + imageClass: 'inline-block px-4 sm:h-14', + }, + { + name: 'IQVIA Technologies', + link: 'https://www.iqvia.com', + imageSrc: '/img/sponsors/iqvia.png', + altText: 'IQVIA Technologies', + imageClass: 'inline-block px-4 sm:h-10', + }, + { + name: 'Postman', + link: 'https://www.postman.com', + imageSrc: '/img/sponsors/postman.png', + altText: 'Postman', + imageClass: 'inline-block px-2 sm:h-18 flex-shrink-0', + }, + { + name: 'Solace', + link: 'https://www.solace.com', + imageSrc: '/img/sponsors/solace.png', + altText: 'Solace', + imageClass: 'inline-block px-4 sm:h-10', + }, + ]; \ No newline at end of file diff --git a/cypress/test/sponsors/GoldSponsors.cy.js b/cypress/test/sponsors/GoldSponsors.cy.js new file mode 100644 index 00000000000..bd2cebeaad8 --- /dev/null +++ b/cypress/test/sponsors/GoldSponsors.cy.js @@ -0,0 +1,22 @@ +import {mount} from 'cypress/react' +import GoldSponsors from '../../../components/sponsors/GoldSponsors'; +import { goldSponsors } from '../../../components/sponsors/GoldSponsorsList'; +describe('GoldSponsors Component', () => { + beforeEach(() => { + mount(); + }); + + it('renders the gold sponsors', () => { + cy.get('.flex-wrap') + .find('[data-testid="GoldSponsors-link"]') + .should('have.length', goldSponsors.length) + .each(($sponsor, index) => { + const sponsor = goldSponsors[index]; + cy.wrap($sponsor) + .should('have.attr', 'href', sponsor.website) + .find('[data-testid="GoldSponsors-img"]') + .should('have.attr', 'src', sponsor.imageSrc) + .should('have.attr', 'alt', sponsor.name); + }); + }); +}); diff --git a/cypress/test/sponsors/SilverSponsors.cy.js b/cypress/test/sponsors/SilverSponsors.cy.js new file mode 100644 index 00000000000..f5b050db79e --- /dev/null +++ b/cypress/test/sponsors/SilverSponsors.cy.js @@ -0,0 +1,18 @@ +import { mount } from 'cypress/react'; +import SilverSponsors from '../../../components/sponsors/SilverSponsors'; +import { Silversponsors } from '../../../components/sponsors/SilverSponsorsList'; + +describe('SilverSponsors', () => { + it('renders silver sponsors correctly', () => { + mount( + + ); + Silversponsors.forEach((sponsor, index) => { + cy.get('[data-testid="SilverSponsors-link"]').eq(index) + .should('have.attr', 'href', sponsor.url) + .find('[data-testid="SilverSponsors-img"]') + .should('have.attr', 'src', sponsor.image) + .should('have.attr', 'alt', sponsor.name); + }); + }); +}); diff --git a/cypress/test/sponsors/Sponsors.cy.js b/cypress/test/sponsors/Sponsors.cy.js new file mode 100644 index 00000000000..feb5e16e021 --- /dev/null +++ b/cypress/test/sponsors/Sponsors.cy.js @@ -0,0 +1,36 @@ +import { mount } from 'cypress/react'; +import Sponsors from '../../../components/sponsors/Sponsors'; +import { sponsors } from '../../../components/sponsors/SponsorsList'; + +describe('Sponsors Component', () => { + it('renders sponsors correctly', () => { + mount(); + + sponsors.forEach((sponsor, index) => { + cy.get('[data-testid="Sponsors-list"]').eq(index).within(() => { + cy.get('[data-testid="Sponsors-link"]') + .should('have.attr', 'href', sponsor.link) + .should('have.attr', 'target', '_blank') + .should('have.attr', 'rel', 'noopener noreferrer'); + + cy.get('[data-testid="Sponsors-img"]') + .should('have.attr', 'src', sponsor.imageSrc) + .should('have.attr', 'alt', sponsor.altText); + }); + }); + }); + it('shows support banner when showSupportBanner prop is true', () => { + mount(); + cy.contains('Want to become a sponsor?'); + cy.contains('Support us!') + .should('have.attr', 'href', 'https://opencollective.com/asyncapi') + .should('have.attr', 'target', '_blank') + .should('have.attr', 'rel', 'noopener noreferrer'); + }); + + it('does not show support banner when showSupportBanner prop is false', () => { + mount(); + cy.contains('Want to become a sponsor?').should('not.exist'); + cy.contains('Support us!').should('not.exist'); + }); +}); diff --git a/pages/index.js b/pages/index.js index dd742175ecb..84a4f06a472 100644 --- a/pages/index.js +++ b/pages/index.js @@ -2,7 +2,7 @@ import Container from '../components/layout/Container' import NavBar from '../components/navigation/NavBar' import Hero from '../components/Hero' import NewsletterSubscribe from '../components/NewsletterSubscribe' -import Sponsors from '../components/Sponsors' +import Sponsors from '../components/sponsors/Sponsors' import Head from '../components/Head' import Slack from '../components/slack' import Button from '../components/buttons/Button' @@ -16,8 +16,8 @@ import Testimonial from '../components/Testimonial' import Heading from '../components/typography/Heading' import Paragraph from '../components/typography/Paragraph' import TextLink from '../components/typography/TextLink' -import GoldSponsors from '../components/GoldSponsors' -import SilverSponsors from '../components/SilverSponsors' +import GoldSponsors from '../components/sponsors/GoldSponsors' +import SilverSponsors from '../components/sponsors/SilverSponsors' import SupportUs from '../components/SupportUs' import StickyNavbar from '../components/navigation/StickyNavbar' import GoogleCalendarButton from '../components/buttons/GoogleCalendarButton'; From 33b24799ac93de263d7f335016540509dbfb7308 Mon Sep 17 00:00:00 2001 From: Aadrika Bhargava <64789514+reachaadrika@users.noreply.github.com> Date: Mon, 10 Jul 2023 23:46:42 +0530 Subject: [PATCH 060/117] feat: adding unit tests for calendar modal and caption component (#1811) --- components/Calendar.js | 4 ++-- components/Caption.js | 2 +- components/Modal.js | 2 +- cypress/test/Calendar.cy.js | 30 ++++++++++++++++++++++++++++++ cypress/test/Caption.cy.js | 19 +++++++++++++++++++ cypress/test/Modal.cy.js | 33 +++++++++++++++++++++++++++++++++ 6 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 cypress/test/Calendar.cy.js create mode 100644 cypress/test/Caption.cy.js create mode 100644 cypress/test/Modal.cy.js diff --git a/components/Calendar.js b/components/Calendar.js index 0a1388d2ccc..f4bd6c1039f 100644 --- a/components/Calendar.js +++ b/components/Calendar.js @@ -16,7 +16,7 @@ export default function Calendar({ className = '', size, text="text-left" }) {
            {getEvents(eventsData, size).map((event, index) => ( -
          • +
          • {eventsExist ? -
            +
            +

            {children}

            ) diff --git a/components/Modal.js b/components/Modal.js index 76d0531a9f2..7eb425a9dd2 100644 --- a/components/Modal.js +++ b/components/Modal.js @@ -26,7 +26,7 @@ export default function Modal({

            {title}

            -