From 44048a7b93094c9e390c567f9c76e6d26162d22d Mon Sep 17 00:00:00 2001 From: Ben Antony Date: Mon, 31 Jan 2022 21:54:24 +0100 Subject: [PATCH] Refactor to use schemas and messages --- README.md | 1 - docs/asyncapi-annotations.md | 12 +- docs/asyncapi-annotations.yaml | 79 +- docs/asyncapi.md | 28 +- docs/asyncapi.yaml | 256 +-- .../annoations/AsyncApiProcessor.java | 63 +- .../greenhalos/j2asyncapi/core/ClassUtil.java | 68 +- .../j2asyncapi/core/MessageUtil.java | 11 +- .../j2asyncapi/core/fields/EnumFieldType.java | 3 +- .../j2asyncapi/core/fields/FieldType.java | 3 +- .../j2asyncapi/core/fields/FieldUtil.java | 61 +- .../j2asyncapi/core/fields/ListFieldType.java | 7 +- .../annoations/AsyncApiProcessorTest.java | 40 +- .../annoations/WriteToFileTest.java | 5 +- .../j2asyncapi/core/BigDecimalTest.java | 1 - .../j2asyncapi/core/BooleanPrimitiveTest.java | 1 - .../j2asyncapi/core/BooleanTest.java | 1 - .../j2asyncapi/core/ClassExtendsTest.java | 1 - .../j2asyncapi/core/CollectionListTest.java | 19 +- .../j2asyncapi/core/CollectionSetTest.java | 19 +- .../j2asyncapi/core/DoublePrimitiveTest.java | 1 - .../j2asyncapi/core/DoubleTest.java | 1 - .../greenhalos/j2asyncapi/core/EnumTest.java | 1 - .../j2asyncapi/core/FieldTestUtil.java | 94 +- .../j2asyncapi/core/FinalStringTest.java | 1 - .../j2asyncapi/core/FloatPrimitiveTest.java | 1 - .../greenhalos/j2asyncapi/core/FloatTest.java | 1 - .../j2asyncapi/core/InstantTest.java | 1 - .../j2asyncapi/core/IntegerPrimitiveTest.java | 1 - .../j2asyncapi/core/IntegerTest.java | 1 - .../j2asyncapi/core/LocalDateTest.java | 1 - .../j2asyncapi/core/LocalDateTimeTest.java | 1 - .../j2asyncapi/core/LongPrimitiveTest.java | 1 - .../greenhalos/j2asyncapi/core/LongTest.java | 1 - .../j2asyncapi/core/NestedTest.java | 31 +- .../j2asyncapi/core/StaticFinalTest.java | 32 + .../j2asyncapi/core/StringTest.java | 1 - .../j2asyncapi/core/WriteToFileTest.java | 18 +- .../core/annotations/FieldExamplesTest.java | 1 - .../core/annotations/FieldFormatTest.java | 1 - .../core/annotations/FieldNothingSetTest.java | 1 - .../core/annotations/FieldTypeTest.java | 7 +- package-lock.json | 1929 ++++++++++++++++- package.json | 4 +- 44 files changed, 2445 insertions(+), 366 deletions(-) create mode 100644 j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StaticFinalTest.java diff --git a/README.md b/README.md index 9619733..147ca5d 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,6 @@ class Listener { # TODOS -* Date and Times * AsyncApi.Message * @JsonIgnore * Empty body diff --git a/docs/asyncapi-annotations.md b/docs/asyncapi-annotations.md index 379fbdb..a7154f0 100644 --- a/docs/asyncapi-annotations.md +++ b/docs/asyncapi-annotations.md @@ -28,7 +28,7 @@ RabbitMQ Server Description explaining exactly what happens here -#### Message lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage `` +#### Message lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage `lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage` ##### Payload @@ -36,14 +36,14 @@ Description explaining exactly what happens here |---|---|---|---|---|---| | (root) | - | - | - | - | **additional properties are allowed** | | amount | number | - | examples (`42.42`, `352.01`) | format (`float`) | - | -| currency | string | - | examples (`"blah"`, `"blub"`) | - | - | +| currency | string | - | examples (`"EUR"`, `"USD"`, `"CHF"`) | - | - | > Examples of payload _(generated)_ ```json { "amount": 42.42, - "currency": "blah" + "currency": "EUR" } ``` @@ -53,7 +53,7 @@ Description explaining exactly what happens here Description explaining exactly what happens here -#### Message lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage `` +#### Message lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage `lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage` ##### Payload @@ -61,14 +61,14 @@ Description explaining exactly what happens here |---|---|---|---|---|---| | (root) | - | - | - | - | **additional properties are allowed** | | amount | number | - | examples (`42.42`, `352.01`) | format (`float`) | - | -| currency | string | - | examples (`"blah"`, `"blub"`) | - | - | +| currency | integer | - | examples (`42`, `352`) | format (`int32`) | - | > Examples of payload _(generated)_ ```json { "amount": 42.42, - "currency": "blah" + "currency": 42 } ``` diff --git a/docs/asyncapi-annotations.yaml b/docs/asyncapi-annotations.yaml index 07c3a93..792a791 100644 --- a/docs/asyncapi-annotations.yaml +++ b/docs/asyncapi-annotations.yaml @@ -16,39 +16,50 @@ channels: description: "Description explaining exactly what happens here" subscribe: message: - payload: - properties: - amount: - title: "amount" - examples: - - 42.42 - - 352.01 - type: "number" - format: "float" - currency: - title: "currency" - examples: - - 42 - - 352 - type: "integer" - format: "int32" - title: "lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage" + $ref: "#/components/messages/lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage" publish: message: - payload: - properties: - amount: - title: "amount" - examples: - - 42.42 - - 352.01 - type: "number" - format: "float" - currency: - title: "currency" - examples: - - "EUR" - - "USD" - - "CHF" - type: "string" - title: "lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage" + $ref: "#/components/messages/lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage" +components: + schemas: + java.lang.Integer-decfea64: + examples: + - 42 + - 352 + type: "integer" + format: "int32" + lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage: + title: "ExampleListenerMessage" + properties: + amount: + $ref: "#/components/schemas/java.math.BigDecimal-dbc8e12d" + currency: + $ref: "#/components/schemas/java.lang.String-931073f3" + java.lang.String-931073f3: + examples: + - "EUR" + - "USD" + - "CHF" + type: "string" + java.math.BigDecimal-dbc8e12d: + examples: + - 42.42 + - 352.01 + type: "number" + format: "float" + lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage: + title: "ExamplePublisherMessage" + properties: + amount: + $ref: "#/components/schemas/java.math.BigDecimal-dbc8e12d" + currency: + $ref: "#/components/schemas/java.lang.Integer-decfea64" + messages: + lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage: + payload: + $ref: "#/components/schemas/lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage" + title: "lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener$ExampleListenerMessage" + lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage: + payload: + $ref: "#/components/schemas/lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage" + title: "lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher$ExamplePublisherMessage" diff --git a/docs/asyncapi.md b/docs/asyncapi.md index fcdefae..133a86d 100644 --- a/docs/asyncapi.md +++ b/docs/asyncapi.md @@ -27,36 +27,41 @@ RabbitMQ Server Publish information -#### Message lu.greenhalos.j2asyncapi.core.Example `` +#### Message lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example `lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example` ##### Payload | Name | Type | Description | Value | Constraints | Notes | |---|---|---|---|---|---| | (root) | - | - | - | - | **additional properties are allowed** | -| floatingAmount | number | - | examples (`42.42`, `352.01`) | format (`float`) | - | -| bigDecimalAmount | number | - | examples (`42.42`, `352.01`) | format (`float`) | - | -| intAmount | integer | - | examples (`42`, `352`) | format (`int32`) | - | +| exampleEnum | string | - | allowed (`"VALUE_2"`, `"VALUE_3"`), examples (`"VALUE_2"`, `"VALUE_3"`) | - | - | +| intAmount | integer | - | examples (`"456565"`, `"4654"`) | format (`flapping`) | - | +| exampleLocalDateTime | string | - | examples (`"2022-01-31T23:20:50.52Z"`, `"1985-04-12T15:59:55-08:00"`) | format (`date-time`) | - | | innerExample | - | - | - | - | **additional properties are allowed** | | innerExample.innerCurrency | string | - | examples (`"blah"`, `"blub"`) | - | - | | innerExample.nestedInnerExample | - | - | - | - | **additional properties are allowed** | | innerExample.nestedInnerExample.nestedInnerCurrency | string | - | examples (`"blah"`, `"blub"`) | - | - | | finalCurrency | string | - | examples (`"blah"`, `"blub"`) | - | - | -| currency | string | - | examples (`"blah"`, `"blub"`) | - | - | | listCurrency | array | - | - | - | - | | listCurrency (single item) | string | - | examples (`"blah"`, `"blub"`) | - | - | | privateFinalCurrency | string | - | examples (`"blah"`, `"blub"`) | - | - | | isFancy | boolean | - | examples (`true`, `false`) | - | - | | doubleAmount | number | - | examples (`42.42`, `352.01`) | format (`double`) | - | +| exampleInstant | string | - | examples (`"2022-01-31T23:20:50.52Z"`, `"1985-04-12T15:59:55-08:00"`) | format (`date-time`) | - | +| floatingAmount | number | - | examples (`42.42`, `352.01`) | format (`float`) | - | +| bigDecimalAmount | number | - | examples (`42.42`, `352.01`) | format (`float`) | - | +| exampleLocalDate | string | - | examples (`"2022-01-31"`, `"1985-04-12"`) | format (`date`) | - | +| fieldAnnotation | integer | - | examples (`"456565"`, `"4654"`) | format (`flapping`) | - | +| currency | string | - | examples (`"blah"`, `"blub"`) | - | - | | longAmount | integer | - | examples (`42`, `352`) | format (`int64`) | - | > Examples of payload _(generated)_ ```json { - "floatingAmount": 42.42, - "bigDecimalAmount": 42.42, - "intAmount": 42, + "exampleEnum": "VALUE_2", + "intAmount": "456565", + "exampleLocalDateTime": "2022-01-31T23:20:50.52Z", "innerExample": { "innerCurrency": "blah", "nestedInnerExample": { @@ -64,13 +69,18 @@ Publish information } }, "finalCurrency": "blah", - "currency": "blah", "listCurrency": [ "blah" ], "privateFinalCurrency": "blah", "isFancy": true, "doubleAmount": 42.42, + "exampleInstant": "2022-01-31T23:20:50.52Z", + "floatingAmount": 42.42, + "bigDecimalAmount": 42.42, + "exampleLocalDate": "2022-01-31", + "fieldAnnotation": "456565", + "currency": "blah", "longAmount": 42 } ``` diff --git a/docs/asyncapi.yaml b/docs/asyncapi.yaml index e47c3e2..3d6daec 100644 --- a/docs/asyncapi.yaml +++ b/docs/asyncapi.yaml @@ -16,128 +16,134 @@ channels: description: "Publish information" subscribe: message: - payload: - properties: - exampleEnum: - title: "exampleEnum" - examples: - - "VALUE_2" - - "VALUE_3" - type: "string" - enum: - - "VALUE_2" - - "VALUE_3" - intAmount: - title: "intAmount" - examples: - - 42 - - 352 - type: "integer" - format: "int32" - exampleLocalDateTime: - title: "exampleLocalDateTime" - examples: - - "2022-01-31T23:20:50.52Z" - - "1985-04-12T15:59:55-08:00" - type: "string" - format: "date-time" - innerExample: - title: "innerExample" - properties: - innerCurrency: - title: "innerCurrency" - examples: - - "blah" - - "blub" - type: "string" - nestedInnerExample: - title: "nestedInnerExample" - properties: - nestedInnerCurrency: - title: "nestedInnerCurrency" - examples: - - "blah" - - "blub" - type: "string" - finalCurrency: - title: "finalCurrency" - examples: - - "blah" - - "blub" - type: "string" - listCurrency: - title: "listCurrency" - type: "array" - items: - examples: - - "blah" - - "blub" - type: "string" - privateFinalCurrency: - title: "privateFinalCurrency" - examples: - - "blah" - - "blub" - type: "string" - isFancy: - title: "isFancy" - examples: - - true - - false - type: "boolean" - doubleAmount: - title: "doubleAmount" - examples: - - 42.42 - - 352.01 - type: "number" - format: "double" - exampleInstant: - title: "exampleInstant" - examples: - - "2022-01-31T23:20:50.52Z" - - "1985-04-12T15:59:55-08:00" - type: "string" - format: "date-time" - floatingAmount: - title: "floatingAmount" - examples: - - 42.42 - - 352.01 - type: "number" - format: "float" - bigDecimalAmount: - title: "bigDecimalAmount" - examples: - - 42.42 - - 352.01 - type: "number" - format: "float" - exampleLocalDate: - title: "exampleLocalDate" - examples: - - "2022-01-31" - - "1985-04-12" - type: "string" - format: "date" - fieldAnnotation: - title: "fieldAnnotation" - examples: - - "456565" - - "4654" - type: "integer" - format: "flapping" - currency: - title: "currency" - examples: - - "blah" - - "blub" - type: "string" - longAmount: - title: "longAmount" - examples: - - 42 - - 352 - type: "integer" - format: "int64" - title: "lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example" + $ref: "#/components/messages/lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example" +components: + schemas: + java.lang.Integer-decfea64: + examples: + - 42 + - 352 + type: "integer" + format: "int32" + java.lang.Float-dbc8e12d: + examples: + - 42.42 + - 352.01 + type: "number" + format: "float" + lu.greenhalos.j2asyncapi.core.WriteToFileTest$NestedInnerExample: + title: "NestedInnerExample" + properties: + nestedInnerCurrency: + $ref: "#/components/schemas/java.lang.String-216cb264" + java.lang.Double-ed55d4cc: + examples: + - 42.42 + - 352.01 + type: "number" + format: "double" + java.time.Instant-b3f0e98: + examples: + - "2022-01-31T23:20:50.52Z" + - "1985-04-12T15:59:55-08:00" + type: "string" + format: "date-time" + java.math.BigDecimal-dbc8e12d: + examples: + - 42.42 + - 352.01 + type: "number" + format: "float" + java.util.List-39a15bb0: + type: "array" + items: + $ref: "#/components/schemas/java.lang.String-216cb264" + lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example: + title: "Example" + properties: + exampleEnum: + $ref: "#/components/schemas/lu.greenhalos.j2asyncapi.core.WriteToFileTest$ExampleEnum-f54df644" + intAmount: + $ref: "#/components/schemas/java.lang.Integer-decfea64" + exampleLocalDateTime: + $ref: "#/components/schemas/java.time.LocalDateTime-b3f0e98" + innerExample: + $ref: "#/components/schemas/lu.greenhalos.j2asyncapi.core.WriteToFileTest$InnerExample" + finalCurrency: + $ref: "#/components/schemas/java.lang.String-216cb264" + listCurrency: + $ref: "#/components/schemas/java.util.List-39a15bb0" + privateFinalCurrency: + $ref: "#/components/schemas/java.lang.String-216cb264" + isFancy: + $ref: "#/components/schemas/java.lang.Boolean-96239209" + doubleAmount: + $ref: "#/components/schemas/java.lang.Double-ed55d4cc" + exampleInstant: + $ref: "#/components/schemas/java.time.Instant-b3f0e98" + floatingAmount: + $ref: "#/components/schemas/java.lang.Float-dbc8e12d" + bigDecimalAmount: + $ref: "#/components/schemas/java.math.BigDecimal-dbc8e12d" + exampleLocalDate: + $ref: "#/components/schemas/java.time.LocalDate-b6e08ca0" + fieldAnnotation: + $ref: "#/components/schemas/java.lang.Integer-c5a8ddd3" + currency: + $ref: "#/components/schemas/java.lang.String-216cb264" + longAmount: + $ref: "#/components/schemas/java.lang.Long-dff9a141" + lu.greenhalos.j2asyncapi.core.WriteToFileTest$InnerExample: + title: "InnerExample" + properties: + innerCurrency: + $ref: "#/components/schemas/java.lang.String-216cb264" + nestedInnerExample: + $ref: "#/components/schemas/lu.greenhalos.j2asyncapi.core.WriteToFileTest$NestedInnerExample" + java.lang.Long-dff9a141: + examples: + - 42 + - 352 + type: "integer" + format: "int64" + java.time.LocalDateTime-b3f0e98: + examples: + - "2022-01-31T23:20:50.52Z" + - "1985-04-12T15:59:55-08:00" + type: "string" + format: "date-time" + java.lang.String-216cb264: + examples: + - "blah" + - "blub" + type: "string" + java.lang.Boolean-96239209: + examples: + - true + - false + type: "boolean" + java.time.LocalDate-b6e08ca0: + examples: + - "2022-01-31" + - "1985-04-12" + type: "string" + format: "date" + java.lang.Integer-c5a8ddd3: + examples: + - "456565" + - "4654" + type: "integer" + format: "flapping" + lu.greenhalos.j2asyncapi.core.WriteToFileTest$ExampleEnum-f54df644: + examples: + - "VALUE_2" + - "VALUE_3" + type: "string" + enum: + - "VALUE_2" + - "VALUE_3" + messages: + lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example: + payload: + $ref: "#/components/schemas/lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example" + title: "lu.greenhalos.j2asyncapi.core.WriteToFileTest$Example" diff --git a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessor.java b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessor.java index b277efe..218b082 100644 --- a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessor.java +++ b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessor.java @@ -1,7 +1,9 @@ package lu.greenhalos.j2asyncapi.annoations; +import com.asyncapi.v2.model.AsyncAPI; import com.asyncapi.v2.model.channel.ChannelItem; import com.asyncapi.v2.model.channel.operation.Operation; +import com.asyncapi.v2.model.component.Components; import lu.greenhalos.j2asyncapi.annotations.AsyncApi; import lu.greenhalos.j2asyncapi.core.MessageUtil; @@ -18,14 +20,12 @@ import java.lang.invoke.MethodHandles; import java.lang.reflect.Method; -import java.util.Map; +import java.util.HashMap; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Stream; -import static java.util.stream.Collectors.toConcurrentMap; - /** * @author Ben Antony - antony@greenhalos.lu @@ -34,18 +34,32 @@ public class AsyncApiProcessor { private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - public static Map process(Class baseClass) { + public static void process(Class baseClass, AsyncAPI asyncAPI) { var packageName = baseClass.getPackageName(); LOG.info("Start looking for AsyncApi annotations in package in {}", packageName); + // Prepare asyncAPI + var components = new Components(); + components.setMessages(new HashMap<>()); + components.setSchemas(new HashMap<>()); + + asyncAPI.setChannels(new HashMap<>()); + asyncAPI.setComponents(components); + Reflections reflections = new Reflections(new ConfigurationBuilder().forPackage(packageName) .setScanners(Scanners.SubTypes, Scanners.MethodsAnnotated)); - return reflections.getMethodsAnnotatedWith(AsyncApi.class) - .stream() - .collect(toConcurrentMap(AsyncApiProcessor::getChannelName, AsyncApiProcessor::toChannel, - AsyncApiProcessor::merge)); + reflections.getMethodsAnnotatedWith(AsyncApi.class) + .forEach(m -> process(m, asyncAPI)); + } + + + private static void process(Method method, AsyncAPI asyncAPI) { + + var channelName = getChannelName(method); + + toChannel(channelName, method, asyncAPI); } @@ -98,17 +112,11 @@ private static String getChannelName(Method method) { } - private static ChannelItem toChannel(Method method) { + private static void toChannel(String channelName, Method method, AsyncAPI asyncAPI) { var annotation = method.getAnnotation(AsyncApi.class); - var description = annotation.description(); - var message = MessageUtil.process(annotation.payload()); - - var operation = new Operation(); - operation.setMessage(message); - var result = new ChannelItem(); if (!"".equals(description)) { @@ -117,17 +125,36 @@ private static ChannelItem toChannel(Method method) { switch (annotation.type()) { case PUBLISHER: - result.setSubscribe(operation); + toOperation("subscribe", channelName, result::setSubscribe, annotation.payload(), asyncAPI); break; case LISTENER: - result.setPublish(operation); + toOperation("publish", channelName, result::setPublish, annotation.payload(), asyncAPI); break; default: throw new IllegalStateException("Unexpected value: " + annotation.type()); } - return result; + var channels = asyncAPI.getChannels(); + + if (channels.containsKey(channelName)) { + result = merge(channels.get(channelName), result); + } + + channels.put(channelName, result); + } + + + private static void toOperation(String asyncApiType, String channelName, Consumer operationConsumer, + Class payload, AsyncAPI asyncAPI) { + + var messageName = String.format("%s-%s", channelName, asyncApiType); + + var reference = MessageUtil.process(payload, asyncAPI); + + var operation = new Operation(); + operation.setMessage(reference); + operationConsumer.accept(operation); } } diff --git a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/ClassUtil.java b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/ClassUtil.java index 167c78d..06b0c13 100644 --- a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/ClassUtil.java +++ b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/ClassUtil.java @@ -1,5 +1,7 @@ package lu.greenhalos.j2asyncapi.core; +import com.asyncapi.v2.model.AsyncAPI; +import com.asyncapi.v2.model.Reference; import com.asyncapi.v2.model.schema.Schema; import lu.greenhalos.j2asyncapi.core.fields.FieldUtil; @@ -14,6 +16,10 @@ import java.util.HashMap; import java.util.List; +import javax.annotation.Nullable; + +import static java.lang.reflect.Modifier.isStatic; + /** * @author Ben Antony - antony@greenhalos.lu @@ -22,39 +28,63 @@ public class ClassUtil { private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - public static Schema process(Class targetClass) { + public static Reference process(Class targetClass, AsyncAPI asyncAPI) { - return process(targetClass, null); + return process(asyncAPI, null, targetClass); } - public static Schema process(Class targetClass, String title) { + private static Reference process(Field field, AsyncAPI asyncAPI) { - LOG.info("Start processing class {}", targetClass.getName()); + Class targetClass = field.getType(); - var payload = new Schema(); - payload.setTitle(title); + return process(asyncAPI, field, targetClass); + } - var properties = new HashMap(); - var declaredFields = new ArrayList(); - var currentClass = targetClass; + private static Reference process(AsyncAPI asyncAPI, @Nullable Field field, Class targetClass) { + + if (FieldUtil.isRawType(targetClass)) { + LOG.info("{} is a raw type", targetClass.getName()); - do { - declaredFields.addAll(List.of(currentClass.getDeclaredFields())); - currentClass = currentClass.getSuperclass(); - } while (currentClass != Object.class); + return FieldUtil.process(targetClass, asyncAPI, field); + } + + LOG.info("{} is not a raw type", targetClass.getName()); + + var properties = new HashMap(); - for (Field field : declaredFields) { - Schema fieldSchema = FieldUtil.process(field); + var declaredFields = getAllFields(targetClass); - if (fieldSchema != null) { - properties.put(fieldSchema.getTitle(), fieldSchema); + for (Field declaredField : declaredFields) { + if (isStatic(declaredField.getModifiers())) { + continue; } + + var fieldSchema = ClassUtil.process(declaredField, asyncAPI); + var schema = new Schema(); + schema.setRef(fieldSchema.getRef()); + properties.put(declaredField.getName(), schema); } - payload.setProperties(properties); + var schema = new Schema(); + schema.setTitle(targetClass.getSimpleName()); + schema.setProperties(properties); + + asyncAPI.getComponents().getSchemas().put(targetClass.getName(), schema); + + return new Reference(String.format("#/components/schemas/%s", targetClass.getName())); + } + + + private static List getAllFields(Class type) { + + var result = new ArrayList<>(List.of(type.getDeclaredFields())); + + if (type.getSuperclass() != null) { + result.addAll(getAllFields(type.getSuperclass())); + } - return payload; + return result; } } diff --git a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/MessageUtil.java b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/MessageUtil.java index 2547e36..b61f287 100644 --- a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/MessageUtil.java +++ b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/MessageUtil.java @@ -1,7 +1,8 @@ package lu.greenhalos.j2asyncapi.core; +import com.asyncapi.v2.model.AsyncAPI; +import com.asyncapi.v2.model.Reference; import com.asyncapi.v2.model.channel.message.Message; -import com.asyncapi.v2.model.schema.Schema; /** @@ -9,14 +10,16 @@ */ public class MessageUtil { - public static Message process(Class targetClass) { + public static Reference process(Class targetClass, AsyncAPI asyncAPI) { - Schema payload = ClassUtil.process(targetClass); + var payload = ClassUtil.process(targetClass, asyncAPI); var result = new Message(); result.setTitle(targetClass.getName()); result.setPayload(payload); - return result; + asyncAPI.getComponents().getMessages().put(targetClass.getName(), result); + + return new Reference(String.format("#/components/messages/%s", targetClass.getName())); } } diff --git a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/EnumFieldType.java b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/EnumFieldType.java index 09602c2..f513766 100644 --- a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/EnumFieldType.java +++ b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/EnumFieldType.java @@ -1,5 +1,6 @@ package lu.greenhalos.j2asyncapi.core.fields; +import com.asyncapi.v2.model.AsyncAPI; import com.asyncapi.v2.model.schema.Schema; import java.lang.reflect.Field; @@ -57,7 +58,7 @@ public String getFormat(Field field) { @Override - public void handleAdditionally(Field field, Schema fieldSchema) { + public void handleAdditionally(Field field, Schema fieldSchema, AsyncAPI asyncAPI) { if (field == null) { return; diff --git a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldType.java b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldType.java index 30621a6..6436573 100644 --- a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldType.java +++ b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldType.java @@ -1,5 +1,6 @@ package lu.greenhalos.j2asyncapi.core.fields; +import com.asyncapi.v2.model.AsyncAPI; import com.asyncapi.v2.model.schema.Schema; import java.lang.reflect.Field; @@ -32,6 +33,6 @@ default boolean canHandle(Class originalFieldType) { String getFormat(@Nullable Field field); - default void handleAdditionally(@Nullable Field field, Schema fieldSchema) { + default void handleAdditionally(@Nullable Field field, Schema fieldSchema, AsyncAPI asyncAPI) { } } diff --git a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldUtil.java b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldUtil.java index a606085..ddf4b0b 100644 --- a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldUtil.java +++ b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/FieldUtil.java @@ -1,9 +1,10 @@ package lu.greenhalos.j2asyncapi.core.fields; +import com.asyncapi.v2.model.AsyncAPI; +import com.asyncapi.v2.model.Reference; import com.asyncapi.v2.model.schema.Schema; import lu.greenhalos.j2asyncapi.annotations.AsyncApi; -import lu.greenhalos.j2asyncapi.core.ClassUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,60 +28,44 @@ public class FieldUtil { new BooleanFieldType(), new DecimalNumberFieldType(), new ListFieldType(), new EnumFieldType(), new DateFieldType(), new DateTimeFieldType()); - public static Schema process(Field field) { + public static boolean isRawType(Class targetClass) { - return process(field, field.getType()); + return FIELD_TYPES.stream().anyMatch(ft -> ft.canHandle(targetClass)); } - public static Schema process(@Nullable Field field, Class originalFieldType) { + public static Reference process(Class originalTargetClass, AsyncAPI asyncAPI, @Nullable Field field) { - if (field == null) { - LOG.info("Start processing field of type {}", originalFieldType); - } else { - if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { - return null; - } - - LOG.info("Start processing field {} with type {}", field.getName(), originalFieldType); - } + Class targetClass; - AsyncApi.Field fieldAnnotation; - - if (field != null && field.isAnnotationPresent(AsyncApi.Field.class)) { - fieldAnnotation = field.getAnnotation(AsyncApi.Field.class); + if (field != null && field.isAnnotationPresent(AsyncApi.Field.class) + && field.getAnnotation(AsyncApi.Field.class).type() != Void.class) { + targetClass = field.getAnnotation(AsyncApi.Field.class).type(); } else { - fieldAnnotation = null; + targetClass = originalTargetClass; } - Class finalFieldType; + var schema = FIELD_TYPES.stream() + .filter(fieldType -> fieldType.canHandle(targetClass)) + .findFirst() + .map(fieldType -> toSchema(field, fieldType, asyncAPI)) + .orElseThrow(() -> new IllegalArgumentException("")); - if (fieldAnnotation != null && fieldAnnotation.type() != Void.class) { - finalFieldType = fieldAnnotation.type(); - } else { - finalFieldType = originalFieldType; - } + var schemaName = String.format("%s-%x", targetClass.getName(), schema.hashCode()); + asyncAPI.getComponents().getSchemas().put(schemaName, schema); - return FIELD_TYPES.stream() - .filter(fieldType -> fieldType.canHandle(finalFieldType)) - .findFirst() - .map(fieldType -> toSchema(field, fieldType, fieldAnnotation)) - .orElseGet(() -> { - if (field != null) { - return ClassUtil.process(originalFieldType, field.getName()); - } else { - return ClassUtil.process(originalFieldType, null); - } - }); + return new Reference(String.format("#/components/schemas/%s", schemaName)); } - private static Schema toSchema(@Nullable Field field, FieldType fieldType, AsyncApi.Field fieldAnnotation) { + private static Schema toSchema(@Nullable Field field, FieldType fieldType, AsyncAPI asyncAPI) { var fieldSchema = new Schema(); + AsyncApi.Field fieldAnnotation = null; + if (field != null) { - fieldSchema.setTitle(field.getName()); + fieldAnnotation = field.getAnnotation(AsyncApi.Field.class); } fieldSchema.setType(fieldType.getType(field)); @@ -97,7 +82,7 @@ private static Schema toSchema(@Nullable Field field, FieldType fieldType, Async fieldSchema.setExamples(fieldType.getExamples(field)); } - fieldType.handleAdditionally(field, fieldSchema); + fieldType.handleAdditionally(field, fieldSchema, asyncAPI); return fieldSchema; } diff --git a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/ListFieldType.java b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/ListFieldType.java index 5aa291f..97e62a1 100644 --- a/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/ListFieldType.java +++ b/j2asyncapi-processor/src/main/java/lu/greenhalos/j2asyncapi/core/fields/ListFieldType.java @@ -1,7 +1,10 @@ package lu.greenhalos.j2asyncapi.core.fields; +import com.asyncapi.v2.model.AsyncAPI; import com.asyncapi.v2.model.schema.Schema; +import lu.greenhalos.j2asyncapi.core.ClassUtil; + import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; @@ -43,7 +46,7 @@ public String getFormat(Field field) { @Override - public void handleAdditionally(Field field, Schema fieldSchema) { + public void handleAdditionally(Field field, Schema fieldSchema, AsyncAPI asyncAPI) { if (field == null) { return; @@ -52,7 +55,7 @@ public void handleAdditionally(Field field, Schema fieldSchema) { ParameterizedType listType = (ParameterizedType) field.getGenericType(); Class listItemClass = (Class) listType.getActualTypeArguments()[0]; - var items = FieldUtil.process(null, listItemClass); + var items = ClassUtil.process(listItemClass, asyncAPI); fieldSchema.setItems(items); } } diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessorTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessorTest.java index 278a7af..c528a0a 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessorTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/AsyncApiProcessorTest.java @@ -1,37 +1,27 @@ package lu.greenhalos.j2asyncapi.annoations; -import com.asyncapi.v2.model.channel.ChannelItem; -import com.asyncapi.v2.model.channel.operation.Operation; -import lu.greenhalos.j2asyncapi.annoations.example.ExampleBaseApplication; -import lu.greenhalos.j2asyncapi.annoations.example.listener.ExampleListener; -import lu.greenhalos.j2asyncapi.annoations.example.publisher.ExamplePublisher.ExamplePublisherMessage; -import lu.greenhalos.j2asyncapi.core.MessageUtil; import org.junit.jupiter.api.Test; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; - class AsyncApiProcessorTest { @Test void process() { - var result = AsyncApiProcessor.process(ExampleBaseApplication.class); - - var subscribe = new Operation(); - subscribe.setMessage(MessageUtil.process(ExamplePublisherMessage.class)); - - var publisher = new Operation(); - publisher.setMessage(MessageUtil.process(ExampleListener.ExampleListenerMessage.class)); - - var channelItem = new ChannelItem(); - channelItem.setSubscribe(subscribe); - channelItem.setPublish(publisher); - channelItem.setDescription("Description explaining exactly what happens here"); - - var expected = Map.of("exchange/routing.key", channelItem); - assertThat(result).hasSize(1).usingRecursiveComparison().isEqualTo(expected); +// var result = AsyncApiProcessor2.process(ExampleBaseApplication.class); +// +// var subscribe = new Operation(); +// subscribe.setMessage(MessageUtil.process(ExamplePublisherMessage.class)); +// +// var publisher = new Operation(); +// publisher.setMessage(MessageUtil.process(ExampleListener.ExampleListenerMessage.class)); +// +// var channelItem = new ChannelItem(); +// channelItem.setSubscribe(subscribe); +// channelItem.setPublish(publisher); +// channelItem.setDescription("Description explaining exactly what happens here"); +// +// var expected = Map.of("exchange/routing.key", channelItem); +// assertThat(result).hasSize(1).usingRecursiveComparison().isEqualTo(expected); } } diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/WriteToFileTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/WriteToFileTest.java index b1eb5e4..36433d4 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/WriteToFileTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/annoations/WriteToFileTest.java @@ -32,12 +32,11 @@ public class WriteToFileTest { @Test void generate() throws IOException { - var subscribers = AsyncApiProcessor.process(ExampleBaseApplication.class); - var asyncAPI = new AsyncAPI(); asyncAPI.setInfo(info()); asyncAPI.setServers(servers()); - asyncAPI.setChannels(subscribers); + + AsyncApiProcessor.process(ExampleBaseApplication.class, asyncAPI); writeToFile(asyncAPI); } diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BigDecimalTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BigDecimalTest.java index 38af22f..aad2215 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BigDecimalTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BigDecimalTest.java @@ -18,7 +18,6 @@ class BigDecimalTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("number"); fieldSchema.setFormat("float"); fieldSchema.setExamples(List.of(42.42, 352.01)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanPrimitiveTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanPrimitiveTest.java index 5e9d28d..22ed102 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanPrimitiveTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanPrimitiveTest.java @@ -16,7 +16,6 @@ class BooleanPrimitiveTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("boolean"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of(true, false)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanTest.java index efffe35..ab7a122 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/BooleanTest.java @@ -16,7 +16,6 @@ class BooleanTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("boolean"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of(true, false)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/ClassExtendsTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/ClassExtendsTest.java index efad8f6..758dccb 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/ClassExtendsTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/ClassExtendsTest.java @@ -16,7 +16,6 @@ class ClassExtendsTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of("blah", "blub")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionListTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionListTest.java index df7ef23..ed6d05a 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionListTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionListTest.java @@ -1,10 +1,12 @@ package lu.greenhalos.j2asyncapi.core; +import com.asyncapi.v2.model.Reference; import com.asyncapi.v2.model.schema.Schema; import org.junit.jupiter.api.Test; import java.util.List; +import java.util.Map; /** @@ -15,19 +17,24 @@ class CollectionListTest { @Test void testField() { - var itemSchema = new Schema(); - itemSchema.setType("string"); - itemSchema.setFormat(null); - itemSchema.setExamples(List.of("blah", "blub")); + var stringSchema = new Schema(); + stringSchema.setType("string"); + stringSchema.setFormat(null); + stringSchema.setExamples(List.of("blah", "blub")); + var itemSchema = new Reference("#/components/schemas/java.lang.String-216cb264"); var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("array"); fieldSchema.setFormat(null); fieldSchema.setExamples(null); fieldSchema.setItems(itemSchema); - FieldTestUtil.assertSchemaOnClass(Example.class, fieldSchema); + var expectedSchemasForField = Map.of( // + "java.lang.String-216cb264", stringSchema, // + "java.util.List-39a15bb0", fieldSchema // + ); + + FieldTestUtil.assertSchemaOnClass(Example.class, expectedSchemasForField, fieldSchema.hashCode()); } private static class Example { diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionSetTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionSetTest.java index 9d5ae00..ca0a366 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionSetTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/CollectionSetTest.java @@ -1,10 +1,12 @@ package lu.greenhalos.j2asyncapi.core; +import com.asyncapi.v2.model.Reference; import com.asyncapi.v2.model.schema.Schema; import org.junit.jupiter.api.Test; import java.util.List; +import java.util.Map; import java.util.Set; @@ -16,19 +18,24 @@ class CollectionSetTest { @Test void testField() { - var itemSchema = new Schema(); - itemSchema.setType("string"); - itemSchema.setFormat(null); - itemSchema.setExamples(List.of("blah", "blub")); + var stringSchema = new Schema(); + stringSchema.setType("string"); + stringSchema.setFormat(null); + stringSchema.setExamples(List.of("blah", "blub")); + var itemSchema = new Reference("#/components/schemas/java.lang.String-216cb264"); var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("array"); fieldSchema.setFormat(null); fieldSchema.setExamples(null); fieldSchema.setItems(itemSchema); - FieldTestUtil.assertSchemaOnClass(Example.class, fieldSchema); + var expectedSchemasForField = Map.of( // + "java.lang.String-216cb264", stringSchema, // + "java.util.Set-39a15bb0", fieldSchema // + ); + + FieldTestUtil.assertSchemaOnClass(Example.class, expectedSchemasForField, fieldSchema.hashCode()); } private static class Example { diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoublePrimitiveTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoublePrimitiveTest.java index 986652d..e1fc0d4 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoublePrimitiveTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoublePrimitiveTest.java @@ -16,7 +16,6 @@ class DoublePrimitiveTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("number"); fieldSchema.setFormat("double"); fieldSchema.setExamples(List.of(42.42, 352.01)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoubleTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoubleTest.java index 20f63f0..8efe679 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoubleTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/DoubleTest.java @@ -16,7 +16,6 @@ class DoubleTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("number"); fieldSchema.setFormat("double"); fieldSchema.setExamples(List.of(42.42, 352.01)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/EnumTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/EnumTest.java index 12ea272..ca6b5e4 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/EnumTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/EnumTest.java @@ -22,7 +22,6 @@ private enum ExampleEnum { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of("VALUE_1", "VALUE_2")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FieldTestUtil.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FieldTestUtil.java index 858a542..f06a305 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FieldTestUtil.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FieldTestUtil.java @@ -1,8 +1,18 @@ package lu.greenhalos.j2asyncapi.core; +import com.asyncapi.v2.model.AsyncAPI; +import com.asyncapi.v2.model.Reference; import com.asyncapi.v2.model.channel.message.Message; +import com.asyncapi.v2.model.component.Components; import com.asyncapi.v2.model.schema.Schema; +import lombok.SneakyThrows; + +import java.lang.reflect.Field; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @@ -15,15 +25,85 @@ public final class FieldTestUtil { public static void assertSchemaOnClass(Class exampleClass, Schema fieldSchema) { - var result = MessageUtil.process(exampleClass); + Class fieldType = getFieldType(exampleClass); + + var fieldSchemaHashCode = fieldSchema.hashCode(); + var schemaName = String.format("%s-%x", fieldType.getName(), fieldSchemaHashCode); + var expectedSchemasForField = Map.of(schemaName, fieldSchema); + assertSchemaOnClass(exampleClass, expectedSchemasForField, fieldSchemaHashCode); + } + + + public static void assertSchemaOnClass(Class exampleClass, Map expectedSchemasForField, + int fieldSchemaHashCode) { + + var fieldType = getFieldType(exampleClass); + + assertSchemaOnClass(exampleClass, expectedSchemasForField, fieldType, fieldSchemaHashCode); + } + + + public static void assertSchemaOnClass(Class exampleClass, Map expectedSchemasForField, + Class fieldType, int fieldSchemaHashCode) { + + // given + var schemas = new HashMap(); + var messages = new HashMap(); + + var components = new Components(); + components.setSchemas(schemas); + components.setMessages(messages); + + AsyncAPI asyncAPI = new AsyncAPI(); + asyncAPI.setComponents(components); + + // then + var messageReference = String.format("#/components/messages/%s", exampleClass.getName()); + var reference = MessageUtil.process(exampleClass, asyncAPI); + + assertThat(reference).usingRecursiveComparison().isEqualTo(new Reference(messageReference)); + + var message = new Message(); + message.setPayload(new Reference(String.format("#/components/schemas/%s", exampleClass.getName()))); + message.setTitle(exampleClass.getName()); + + Map expectedMessages = Map.of(exampleClass.getName(), message); + assertThat(messages).usingRecursiveComparison().isEqualTo(expectedMessages); + + var fieldReferenceSchema = new Schema(); + fieldReferenceSchema.setRef(String.format("#/components/schemas/%s-%x", fieldType.getName(), + fieldSchemaHashCode)); + + var exampleSchema = new Schema(); + exampleSchema.setTitle("Example"); + exampleSchema.setProperties(Map.of("field", fieldReferenceSchema)); + + Map expectedSchemas = new HashMap<>(); + expectedSchemas.put(exampleClass.getName(), exampleSchema); + expectedSchemas.putAll(expectedSchemasForField); + assertThat(schemas).usingRecursiveComparison().isEqualTo(expectedSchemas); + } + + + @SneakyThrows + private static Class getFieldType(Class exampleClass) { + + return getAllFields(exampleClass).stream() + .filter(f -> "field".equals(f.getName())) + .findFirst() + .map(Field::getType) + .orElseThrow(() -> new NoSuchFieldException("field")); + } + + + private static List getAllFields(Class type) { - var expectedSchema = new Schema(); - expectedSchema.setProperties(Map.of("field", fieldSchema)); + var result = new ArrayList<>(List.of(type.getDeclaredFields())); - var expected = new Message(); - expected.setTitle(exampleClass.getName()); - expected.setPayload(expectedSchema); + if (type.getSuperclass() != null) { + result.addAll(getAllFields(type.getSuperclass())); + } - assertThat(result).usingRecursiveComparison().isEqualTo(expected); + return result; } } diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FinalStringTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FinalStringTest.java index 3d13792..6a4b7e5 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FinalStringTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FinalStringTest.java @@ -16,7 +16,6 @@ class FinalStringTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of("blah", "blub")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatPrimitiveTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatPrimitiveTest.java index 14c7675..4543de9 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatPrimitiveTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatPrimitiveTest.java @@ -16,7 +16,6 @@ class FloatPrimitiveTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("number"); fieldSchema.setFormat("float"); fieldSchema.setExamples(List.of(42.42, 352.01)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatTest.java index 6c0c129..14b9fcc 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/FloatTest.java @@ -16,7 +16,6 @@ class FloatTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("number"); fieldSchema.setFormat("float"); fieldSchema.setExamples(List.of(42.42, 352.01)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/InstantTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/InstantTest.java index 0398549..a29ffe9 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/InstantTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/InstantTest.java @@ -18,7 +18,6 @@ class InstantTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat("date-time"); fieldSchema.setExamples(List.of("2022-01-31T23:20:50.52Z", "1985-04-12T15:59:55-08:00")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerPrimitiveTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerPrimitiveTest.java index 9caa527..7564904 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerPrimitiveTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerPrimitiveTest.java @@ -16,7 +16,6 @@ class IntegerPrimitiveTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("integer"); fieldSchema.setFormat("int32"); fieldSchema.setExamples(List.of(42, 352)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerTest.java index 1ca09f0..e219976 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/IntegerTest.java @@ -16,7 +16,6 @@ class IntegerTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("integer"); fieldSchema.setFormat("int32"); fieldSchema.setExamples(List.of(42, 352)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTest.java index ad69bf3..8bc1f64 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTest.java @@ -18,7 +18,6 @@ class LocalDateTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat("date"); fieldSchema.setExamples(List.of("2022-01-31", "1985-04-12")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTimeTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTimeTest.java index 77f4909..cbebd3a 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTimeTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LocalDateTimeTest.java @@ -18,7 +18,6 @@ class LocalDateTimeTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat("date-time"); fieldSchema.setExamples(List.of("2022-01-31T23:20:50.52Z", "1985-04-12T15:59:55-08:00")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongPrimitiveTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongPrimitiveTest.java index dd2b962..56e0cac 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongPrimitiveTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongPrimitiveTest.java @@ -16,7 +16,6 @@ class LongPrimitiveTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("integer"); fieldSchema.setFormat("int64"); fieldSchema.setExamples(List.of(42, 352)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongTest.java index 9f7c089..56429ae 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/LongTest.java @@ -16,7 +16,6 @@ class LongTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("integer"); fieldSchema.setFormat("int64"); fieldSchema.setExamples(List.of(42, 352)); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/NestedTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/NestedTest.java index 2cb398a..160c0df 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/NestedTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/NestedTest.java @@ -16,20 +16,35 @@ class NestedTest { @Test void testField() { - var field2Schema = new Schema(); - field2Schema.setTitle("field2"); - field2Schema.setType("string"); - field2Schema.setFormat(null); - field2Schema.setExamples(List.of("blah", "blub")); + var stringSchema = new Schema(); + stringSchema.setType("string"); + stringSchema.setFormat(null); + stringSchema.setExamples(List.of("blah", "blub")); + + var nestedSchemaReference = new Schema(); + nestedSchemaReference.setRef("#/components/schemas/java.lang.String-216cb264"); + + var nestedSchema = new Schema(); + nestedSchema.setTitle("Nested"); + nestedSchema.setProperties(Map.of("field2", nestedSchemaReference)); + + var field2Reference = new Schema(); + field2Reference.setRef("#/components/schemas/lu.greenhalos.j2asyncapi.core.NestedTest$Nested"); var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); + fieldSchema.setTitle("Example"); fieldSchema.setType(null); fieldSchema.setFormat(null); fieldSchema.setExamples(null); - fieldSchema.setProperties(Map.of("field2", field2Schema)); + fieldSchema.setProperties(Map.of("field", field2Reference)); + + var expectedSchemasForField = Map.of( // + "java.lang.String-216cb264", stringSchema, // + "lu.greenhalos.j2asyncapi.core.NestedTest$Example", fieldSchema, // + "lu.greenhalos.j2asyncapi.core.NestedTest$Nested", nestedSchema // + ); - FieldTestUtil.assertSchemaOnClass(Example.class, fieldSchema); + FieldTestUtil.assertSchemaOnClass(Example.class, expectedSchemasForField, fieldSchema.hashCode()); } private static class Example { diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StaticFinalTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StaticFinalTest.java new file mode 100644 index 0000000..bed6d2e --- /dev/null +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StaticFinalTest.java @@ -0,0 +1,32 @@ +package lu.greenhalos.j2asyncapi.core; + +import com.asyncapi.v2.model.schema.Schema; + +import org.junit.jupiter.api.Test; + +import java.util.List; + + +/** + * @author Ben Antony - antony@greenhalos.lu + */ +class StaticFinalTest { + + @Test + void testField() { + + var fieldSchema = new Schema(); + fieldSchema.setType("string"); + fieldSchema.setFormat(null); + fieldSchema.setExamples(List.of("blah", "blub")); + + FieldTestUtil.assertSchemaOnClass(Example.class, fieldSchema); + } + + private static class Example { + + private static final String FIELD_TO_IGNORE = "ignoreMe"; + + private String field; + } +} diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StringTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StringTest.java index c56540b..2a0a619 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StringTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/StringTest.java @@ -16,7 +16,6 @@ class StringTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of("blah", "blub")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/WriteToFileTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/WriteToFileTest.java index 0d95bd1..43bc3bf 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/WriteToFileTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/WriteToFileTest.java @@ -3,6 +3,7 @@ import com.asyncapi.v2.model.AsyncAPI; import com.asyncapi.v2.model.channel.ChannelItem; import com.asyncapi.v2.model.channel.operation.Operation; +import com.asyncapi.v2.model.component.Components; import com.asyncapi.v2.model.info.Contact; import com.asyncapi.v2.model.info.Info; import com.asyncapi.v2.model.server.Server; @@ -27,6 +28,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -47,18 +49,24 @@ private enum ExampleEnum { @Test void generate() throws IOException { - var message = MessageUtil.process(Example.class); + var components = new Components(); + components.setMessages(new HashMap<>()); + components.setSchemas(new HashMap<>()); + + var asyncAPI = new AsyncAPI(); + asyncAPI.setComponents(components); + asyncAPI.setInfo(info()); + asyncAPI.setServers(servers()); + + var messageReference = MessageUtil.process(Example.class, asyncAPI); var subscribe = new Operation(); - subscribe.setMessage(message); + subscribe.setMessage(messageReference); var channelItem = new ChannelItem(); channelItem.setDescription("Publish information"); channelItem.setSubscribe(subscribe); - var asyncAPI = new AsyncAPI(); - asyncAPI.setInfo(info()); - asyncAPI.setServers(servers()); asyncAPI.setChannels(Map.of("channelName", channelItem)); writeToFile(asyncAPI); } diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldExamplesTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldExamplesTest.java index 1969a1f..5a7d3bc 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldExamplesTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldExamplesTest.java @@ -19,7 +19,6 @@ class FieldExamplesTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of("Foo", "Baaa")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldFormatTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldFormatTest.java index e822796..3e51363 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldFormatTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldFormatTest.java @@ -19,7 +19,6 @@ class FieldFormatTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat("flapping"); fieldSchema.setExamples(List.of("blah", "blub")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldNothingSetTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldNothingSetTest.java index a3e07f6..10bc81d 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldNothingSetTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldNothingSetTest.java @@ -19,7 +19,6 @@ class FieldNothingSetTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("string"); fieldSchema.setFormat(null); fieldSchema.setExamples(List.of("blah", "blub")); diff --git a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldTypeTest.java b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldTypeTest.java index 4077757..cd461e4 100644 --- a/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldTypeTest.java +++ b/j2asyncapi-processor/src/test/java/lu/greenhalos/j2asyncapi/core/annotations/FieldTypeTest.java @@ -8,6 +8,7 @@ import org.junit.jupiter.api.Test; import java.util.List; +import java.util.Map; /** @@ -19,12 +20,14 @@ class FieldTypeTest { void testField() { var fieldSchema = new Schema(); - fieldSchema.setTitle("field"); fieldSchema.setType("integer"); fieldSchema.setFormat("int32"); fieldSchema.setExamples(List.of(42, 352)); - FieldTestUtil.assertSchemaOnClass(Example.class, fieldSchema); + var expectedSchemasForField = Map.of("java.lang.Integer-decfea64", fieldSchema); + + FieldTestUtil.assertSchemaOnClass(Example.class, expectedSchemasForField, Integer.class, + fieldSchema.hashCode()); } private static class Example { diff --git a/package-lock.json b/package-lock.json index f3cd909..333ae8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,9 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@asyncapi/generator": "^1.8.27" + "@asyncapi/generator": "^1.8.27", + "@asyncapi/html-template": "^0.24.7", + "@asyncapi/markdown-template": "^1.0.0" } }, "node_modules/@apidevtools/json-schema-ref-parser": { @@ -89,6 +91,44 @@ "npm": ">6.13.7" } }, + "node_modules/@asyncapi/generator-filters": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@asyncapi/generator-filters/-/generator-filters-2.1.0.tgz", + "integrity": "sha512-OZcz8VjivvNvofEunGL+SO5M9Sq8CczNNyuBhdDzAhmdBxRPCswnliDFuHK+ZJ6XA/JgSfx2zN3H2uwzPajIgw==", + "dependencies": { + "lodash": "^4.17.15", + "markdown-it": "^10.0.0", + "openapi-sampler": "1.0.0-beta.17" + } + }, + "node_modules/@asyncapi/generator-filters/node_modules/entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + }, + "node_modules/@asyncapi/generator-filters/node_modules/markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dependencies": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/@asyncapi/generator-filters/node_modules/openapi-sampler": { + "version": "1.0.0-beta.17", + "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.0.0-beta.17.tgz", + "integrity": "sha512-xYGPaPaEQFFAGQVrRpunkb8loNfL1rq4fJ+q7NH+LVBsrHKGUicD2f5Rzw6fWcRwwcOvnKD/aik9guiNWq2kpA==", + "dependencies": { + "json-pointer": "^0.6.0" + } + }, "node_modules/@asyncapi/generator-react-sdk": { "version": "0.2.23", "resolved": "https://registry.npmjs.org/@asyncapi/generator-react-sdk/-/generator-react-sdk-0.2.23.tgz", @@ -144,6 +184,31 @@ "semver": "bin/semver" } }, + "node_modules/@asyncapi/html-template": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/@asyncapi/html-template/-/html-template-0.24.7.tgz", + "integrity": "sha512-7qI+wq6OTl/0DoHJ4b57GU+/YFhyuw1ez1wGWKWdok89BNJwiMgVk6rMFJuR6X6PF/O+71SplwnQbS7icAZXhw==", + "dependencies": { + "@asyncapi/parser": "^1.13.0", + "@asyncapi/react-component": "^1.0.0-next.33", + "highlight.js": "10.7.3", + "puppeteer": "^5.3.1", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "rimraf": "^3.0.2" + } + }, + "node_modules/@asyncapi/markdown-template": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@asyncapi/markdown-template/-/markdown-template-1.0.0.tgz", + "integrity": "sha512-vpmE5bzdt2Iieu9Y+U4x4yyG3RsYtTky7otzM3Jw5m34dnzdbPlINE7+/x2NbqmvmcHf68/XJy8WdVYb/s9HxA==", + "dependencies": { + "@asyncapi/generator-filters": "^2.1.0", + "@asyncapi/generator-react-sdk": "^0.2.23", + "@asyncapi/parser": "^1.13.2", + "yaml": "^1.10.2" + } + }, "node_modules/@asyncapi/openapi-schema-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-2.0.1.tgz", @@ -153,12 +218,12 @@ } }, "node_modules/@asyncapi/parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.13.2.tgz", - "integrity": "sha512-orviZ01Hxo0iNLaA8IuHMlHzUYMP5ysVIfY7OgiiO73UIhJRCuC5cntVy2kCzWnDPM+d0uasBxvwHBp+FlNzZA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.14.0.tgz", + "integrity": "sha512-OHqvInhquPwthrSEkglxqjj6+6A2gZW3NnmyOoXmWb7/9jS90hJwn9bQOMkd4bx2lT6PWmlZjjKFEldH8ILRQg==", "dependencies": { "@apidevtools/json-schema-ref-parser": "^9.0.6", - "@asyncapi/specs": "^2.11.0", + "@asyncapi/specs": "^2.13.0", "@fmvilas/pseudo-yaml-ast": "^0.3.1", "ajv": "^6.10.1", "js-yaml": "^3.13.1", @@ -177,10 +242,30 @@ "ramldt2jsonschema": "^1.1.0" } }, + "node_modules/@asyncapi/react-component": { + "version": "1.0.0-next.33", + "resolved": "https://registry.npmjs.org/@asyncapi/react-component/-/react-component-1.0.0-next.33.tgz", + "integrity": "sha512-3uUvOOimgqtqowGb+h73PvGKEgCMykEVxMQWHye/NH/+yDivelj6gX9mprGZQL3pWG2CVsUyPUd0vUuCrXOzcg==", + "dependencies": { + "@asyncapi/avro-schema-parser": "^0.3.0", + "@asyncapi/openapi-schema-parser": "^2.0.0", + "@asyncapi/parser": "^1.14.0", + "highlight.js": "^10.7.2", + "isomorphic-dompurify": "^0.13.0", + "marked": "^4.0.10", + "openapi-sampler": "^1.1.0", + "use-resize-observer": "^7.0.0" + } + }, + "node_modules/@asyncapi/react-component/node_modules/@asyncapi/avro-schema-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@asyncapi/avro-schema-parser/-/avro-schema-parser-0.3.0.tgz", + "integrity": "sha512-gWAqS2CKxbChdX8hZY+5EYQl6atP8FTSBvoG5mGGQ89XUoNdlLX14lsvbgvBnDj5sSwqfs+b5Mh5PUZMR/8maA==" + }, "node_modules/@asyncapi/specs": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz", - "integrity": "sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g==" + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz", + "integrity": "sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og==" }, "node_modules/@babel/code-frame": { "version": "7.16.7", @@ -2003,6 +2088,14 @@ "node": ">= 6" } }, + "node_modules/@types/dompurify": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.3.3.tgz", + "integrity": "sha512-nnVQSgRVuZ/843oAfhA25eRSNzUFcBPk/LOiw5gm8mD9/X7CNcbRkQu/OsjCewO8+VIYfPxUnXvPEVGenw14+w==", + "dependencies": { + "@types/trusted-types": "*" + } + }, "node_modules/@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -2013,16 +2106,80 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" }, + "node_modules/@types/node": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.13.tgz", + "integrity": "sha512-Y86MAxASe25hNzlDbsviXl8jQHb0RDvKt4c40ZJQ1Don0AAL0STLZSs4N+6gLEO55pedy7r2cLwS+ZDxPm/2Bw==", + "optional": true + }, + "node_modules/@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "node_modules/@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/a-sync-waterfall": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" }, + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2244,6 +2401,25 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2276,6 +2452,29 @@ "node": ">=8" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2296,6 +2495,11 @@ "node": ">=8" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, "node_modules/browserslist": { "version": "4.19.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", @@ -2318,6 +2522,37 @@ "url": "https://opencollective.com/browserslist" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2564,6 +2799,27 @@ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -2575,6 +2831,51 @@ "node": ">=0.10" } }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -2599,6 +2900,16 @@ "node": "*" } }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "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==" + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2631,6 +2942,11 @@ "node": ">= 0.6" } }, + "node_modules/devtools-protocol": { + "version": "0.0.818844", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.818844.tgz", + "integrity": "sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==" + }, "node_modules/dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -2648,6 +2964,30 @@ "node": ">=0.3.1" } }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dompurify": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz", + "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==" + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -2671,6 +3011,14 @@ "iconv-lite": "^0.6.2" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -2705,6 +3053,36 @@ "node": ">=0.8.0" } }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -2717,6 +3095,14 @@ "node": ">=4" } }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", @@ -2735,6 +3121,25 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -2753,6 +3158,19 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "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=" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -2788,6 +3206,23 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "node_modules/foreachasync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", @@ -2814,6 +3249,11 @@ "node": ">= 0.12" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "node_modules/fs-extra": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz", @@ -2928,6 +3368,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -3054,6 +3508,14 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "engines": { + "node": "*" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -3065,6 +3527,17 @@ "node": ">=10" } }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", @@ -3129,6 +3602,25 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore-walk": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", @@ -3250,6 +3742,11 @@ "node": ">=0.12.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3265,6 +3762,16 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "node_modules/isomorphic-dompurify": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-0.13.0.tgz", + "integrity": "sha512-j2/kt/PGbxvfeEm1uiRLlttZkQdn3hFe1rMr/wm3qFnMXSIw0Nmqu79k+TIoSj+KOwO98Sz9TbuNHU7ejv7IZA==", + "dependencies": { + "@types/dompurify": "^2.1.0", + "dompurify": "^2.2.7", + "jsdom": "^16.5.2" + } + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -3300,22 +3807,133 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "node_modules/json-pointer": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz", + "integrity": "sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==", + "dependencies": { + "foreach": "^2.0.4" + } + }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -3443,6 +4061,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/linkify-it": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", @@ -3451,6 +4081,17 @@ "uc.micro": "^1.0.1" } }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -3546,6 +4187,17 @@ "markdown-it": "bin/markdown-it.js" } }, + "node_modules/marked": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", + "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -3689,6 +4341,11 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "node_modules/mkdirp-infer-owner": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", @@ -3924,6 +4581,11 @@ "node": ">= 6" } }, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -3973,6 +4635,56 @@ "wrappy": "1" } }, + "node_modules/openapi-sampler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.1.tgz", + "integrity": "sha512-WAFsl5SPYuhQwaMTDFOcKhnEY1G1rmamrMiPmJdqwfl1lr81g63/befcsN9BNi0w5/R0L+hfcUj13PANEBeLgg==", + "dependencies": { + "@types/json-schema": "^7.0.7", + "json-pointer": "^0.6.1" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -3987,6 +4699,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/pacote": { "version": "11.3.5", "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", @@ -4029,6 +4749,19 @@ "just-diff-apply": "^3.0.0" } }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -4042,6 +4775,11 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -4063,6 +4801,25 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/proc-log": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", @@ -4073,6 +4830,14 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/promise-all-reject-late": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", @@ -4116,11 +4881,25 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4129,6 +4908,50 @@ "node": ">=6" } }, + "node_modules/puppeteer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.5.0.tgz", + "integrity": "sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg==", + "deprecated": "Version no longer supported. Upgrade to @latest", + "hasInstallScript": true, + "dependencies": { + "debug": "^4.1.0", + "devtools-protocol": "0.0.818844", + "extract-zip": "^2.0.0", + "https-proxy-agent": "^4.0.0", + "node-fetch": "^2.6.1", + "pkg-dir": "^4.2.0", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^3.0.2", + "tar-fs": "^2.0.0", + "unbzip2-stream": "^1.3.3", + "ws": "^7.2.3" + }, + "engines": { + "node": ">=10.18.1" + } + }, + "node_modules/puppeteer/node_modules/agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/puppeteer/node_modules/https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "dependencies": { + "agent-base": "5", + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", @@ -4172,6 +4995,19 @@ "node": ">=0.10.0" } }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -4330,6 +5166,11 @@ "node": ">= 6" } }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "node_modules/resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -4411,6 +5252,26 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -4608,6 +5469,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, "node_modules/tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -4624,6 +5490,55 @@ "node": ">= 10" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, "node_modules/tiny-merge-patch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/tiny-merge-patch/-/tiny-merge-patch-0.1.2.tgz", @@ -4722,6 +5637,17 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -4747,6 +5673,15 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -4799,6 +5734,14 @@ "imurmurhash": "^0.1.4" } }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4807,6 +5750,18 @@ "punycode": "^2.1.0" } }, + "node_modules/use-resize-observer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-7.0.1.tgz", + "integrity": "sha512-tJESENDoVXfzkv1Cl9dJ13ySgENcKjvEKSU7QwjckjxjXg/MV2zW1CjEUtLpmXY084womIxJROUR3L1SuqlvOw==", + "dependencies": { + "resize-observer-polyfill": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4847,6 +5802,25 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/walk": { "version": "2.3.15", "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", @@ -4889,6 +5863,30 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -4920,6 +5918,14 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4936,16 +5942,63 @@ "typedarray-to-buffer": "^3.1.5" } }, + "node_modules/ws": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, "node_modules/yaml-ast-parser": { "version": "0.0.43", "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -5024,6 +6077,43 @@ "typescript": "^4.2.2" } }, + "@asyncapi/generator-filters": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@asyncapi/generator-filters/-/generator-filters-2.1.0.tgz", + "integrity": "sha512-OZcz8VjivvNvofEunGL+SO5M9Sq8CczNNyuBhdDzAhmdBxRPCswnliDFuHK+ZJ6XA/JgSfx2zN3H2uwzPajIgw==", + "requires": { + "lodash": "^4.17.15", + "markdown-it": "^10.0.0", + "openapi-sampler": "1.0.0-beta.17" + }, + "dependencies": { + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + }, + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "openapi-sampler": { + "version": "1.0.0-beta.17", + "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.0.0-beta.17.tgz", + "integrity": "sha512-xYGPaPaEQFFAGQVrRpunkb8loNfL1rq4fJ+q7NH+LVBsrHKGUicD2f5Rzw6fWcRwwcOvnKD/aik9guiNWq2kpA==", + "requires": { + "json-pointer": "^0.6.0" + } + } + } + }, "@asyncapi/generator-react-sdk": { "version": "0.2.23", "resolved": "https://registry.npmjs.org/@asyncapi/generator-react-sdk/-/generator-react-sdk-0.2.23.tgz", @@ -5071,6 +6161,31 @@ } } }, + "@asyncapi/html-template": { + "version": "0.24.7", + "resolved": "https://registry.npmjs.org/@asyncapi/html-template/-/html-template-0.24.7.tgz", + "integrity": "sha512-7qI+wq6OTl/0DoHJ4b57GU+/YFhyuw1ez1wGWKWdok89BNJwiMgVk6rMFJuR6X6PF/O+71SplwnQbS7icAZXhw==", + "requires": { + "@asyncapi/parser": "^1.13.0", + "@asyncapi/react-component": "^1.0.0-next.33", + "highlight.js": "10.7.3", + "puppeteer": "^5.3.1", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "rimraf": "^3.0.2" + } + }, + "@asyncapi/markdown-template": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@asyncapi/markdown-template/-/markdown-template-1.0.0.tgz", + "integrity": "sha512-vpmE5bzdt2Iieu9Y+U4x4yyG3RsYtTky7otzM3Jw5m34dnzdbPlINE7+/x2NbqmvmcHf68/XJy8WdVYb/s9HxA==", + "requires": { + "@asyncapi/generator-filters": "^2.1.0", + "@asyncapi/generator-react-sdk": "^0.2.23", + "@asyncapi/parser": "^1.13.2", + "yaml": "^1.10.2" + } + }, "@asyncapi/openapi-schema-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-2.0.1.tgz", @@ -5080,12 +6195,12 @@ } }, "@asyncapi/parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.13.2.tgz", - "integrity": "sha512-orviZ01Hxo0iNLaA8IuHMlHzUYMP5ysVIfY7OgiiO73UIhJRCuC5cntVy2kCzWnDPM+d0uasBxvwHBp+FlNzZA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.14.0.tgz", + "integrity": "sha512-OHqvInhquPwthrSEkglxqjj6+6A2gZW3NnmyOoXmWb7/9jS90hJwn9bQOMkd4bx2lT6PWmlZjjKFEldH8ILRQg==", "requires": { "@apidevtools/json-schema-ref-parser": "^9.0.6", - "@asyncapi/specs": "^2.11.0", + "@asyncapi/specs": "^2.13.0", "@fmvilas/pseudo-yaml-ast": "^0.3.1", "ajv": "^6.10.1", "js-yaml": "^3.13.1", @@ -5104,10 +6219,32 @@ "ramldt2jsonschema": "^1.1.0" } }, + "@asyncapi/react-component": { + "version": "1.0.0-next.33", + "resolved": "https://registry.npmjs.org/@asyncapi/react-component/-/react-component-1.0.0-next.33.tgz", + "integrity": "sha512-3uUvOOimgqtqowGb+h73PvGKEgCMykEVxMQWHye/NH/+yDivelj6gX9mprGZQL3pWG2CVsUyPUd0vUuCrXOzcg==", + "requires": { + "@asyncapi/avro-schema-parser": "^0.3.0", + "@asyncapi/openapi-schema-parser": "^2.0.0", + "@asyncapi/parser": "^1.14.0", + "highlight.js": "^10.7.2", + "isomorphic-dompurify": "^0.13.0", + "marked": "^4.0.10", + "openapi-sampler": "^1.1.0", + "use-resize-observer": "^7.0.0" + }, + "dependencies": { + "@asyncapi/avro-schema-parser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@asyncapi/avro-schema-parser/-/avro-schema-parser-0.3.0.tgz", + "integrity": "sha512-gWAqS2CKxbChdX8hZY+5EYQl6atP8FTSBvoG5mGGQ89XUoNdlLX14lsvbgvBnDj5sSwqfs+b5Mh5PUZMR/8maA==" + } + } + }, "@asyncapi/specs": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz", - "integrity": "sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g==" + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz", + "integrity": "sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og==" }, "@babel/code-frame": { "version": "7.16.7", @@ -6372,6 +7509,14 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" }, + "@types/dompurify": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.3.3.tgz", + "integrity": "sha512-nnVQSgRVuZ/843oAfhA25eRSNzUFcBPk/LOiw5gm8mD9/X7CNcbRkQu/OsjCewO8+VIYfPxUnXvPEVGenw14+w==", + "requires": { + "@types/trusted-types": "*" + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", @@ -6382,16 +7527,67 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" }, + "@types/node": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.13.tgz", + "integrity": "sha512-Y86MAxASe25hNzlDbsviXl8jQHb0RDvKt4c40ZJQ1Don0AAL0STLZSs4N+6gLEO55pedy7r2cLwS+ZDxPm/2Bw==", + "optional": true + }, + "@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" + }, + "@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, "a-sync-waterfall": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -6572,6 +7768,11 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -6598,6 +7799,28 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6615,6 +7838,11 @@ "fill-range": "^7.0.1" } }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, "browserslist": { "version": "4.19.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", @@ -6627,6 +7855,20 @@ "picocolors": "^1.0.0" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -6819,6 +8061,26 @@ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -6827,6 +8089,41 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "dependencies": { + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } + } + }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -6840,6 +8137,16 @@ "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=" }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "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==" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -6863,6 +8170,11 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "devtools-protocol": { + "version": "0.0.818844", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.818844.tgz", + "integrity": "sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==" + }, "dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -6877,6 +8189,26 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + } + } + }, + "dompurify": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz", + "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==" + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -6900,6 +8232,14 @@ "iconv-lite": "^0.6.2" } }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -6925,11 +8265,36 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, "estree-walker": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", @@ -6945,6 +8310,17 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -6960,6 +8336,19 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -6983,6 +8372,20 @@ "to-regex-range": "^5.0.1" } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "foreachasync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", @@ -7003,6 +8406,11 @@ "mime-types": "^2.1.12" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-extra": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz", @@ -7097,6 +8505,14 @@ "has-symbols": "^1.0.1" } }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -7186,6 +8602,11 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -7194,6 +8615,14 @@ "lru-cache": "^6.0.0" } }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, "http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", @@ -7245,6 +8674,11 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, "ignore-walk": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", @@ -7339,6 +8773,11 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -7354,6 +8793,16 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "isomorphic-dompurify": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-0.13.0.tgz", + "integrity": "sha512-j2/kt/PGbxvfeEm1uiRLlttZkQdn3hFe1rMr/wm3qFnMXSIw0Nmqu79k+TIoSj+KOwO98Sz9TbuNHU7ejv7IZA==", + "requires": { + "@types/dompurify": "^2.1.0", + "dompurify": "^2.2.7", + "jsdom": "^16.5.2" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -7383,6 +8832,85 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -7393,6 +8921,14 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, + "json-pointer": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz", + "integrity": "sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==", + "requires": { + "foreach": "^2.0.4" + } + }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -7497,6 +9033,15 @@ "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-2.0.5.tgz", "integrity": "sha512-Yuraz7QnMX/JENJU1HA6UtdsbhRzoSFnGpVGVryjQgHtl2s/YmVgmNYkVs5yzVZ9aAvQR9wPBUH3lG755ylxGA==" }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "linkify-it": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", @@ -7505,6 +9050,14 @@ "uc.micro": "^1.0.1" } }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -7581,6 +9134,11 @@ "uc.micro": "^1.0.5" } }, + "marked": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", + "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==" + }, "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -7686,6 +9244,11 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "mkdirp-infer-owner": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", @@ -7853,6 +9416,11 @@ } } }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -7887,6 +9455,44 @@ "wrappy": "1" } }, + "openapi-sampler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.1.tgz", + "integrity": "sha512-WAFsl5SPYuhQwaMTDFOcKhnEY1G1rmamrMiPmJdqwfl1lr81g63/befcsN9BNi0w5/R0L+hfcUj13PANEBeLgg==", + "requires": { + "@types/json-schema": "^7.0.7", + "json-pointer": "^0.6.1" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -7895,6 +9501,11 @@ "aggregate-error": "^3.0.0" } }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, "pacote": { "version": "11.3.5", "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", @@ -7931,6 +9542,16 @@ "just-diff-apply": "^3.0.0" } }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -7941,6 +9562,11 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -7956,6 +9582,19 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, "proc-log": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", @@ -7966,6 +9605,11 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, "promise-all-reject-late": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", @@ -8000,16 +9644,65 @@ "react-is": "^16.13.1" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "puppeteer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.5.0.tgz", + "integrity": "sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg==", + "requires": { + "debug": "^4.1.0", + "devtools-protocol": "0.0.818844", + "extract-zip": "^2.0.0", + "https-proxy-agent": "^4.0.0", + "node-fetch": "^2.6.1", + "pkg-dir": "^4.2.0", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^3.0.2", + "tar-fs": "^2.0.0", + "unbzip2-stream": "^1.3.3", + "ws": "^7.2.3" + }, + "dependencies": { + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" + }, + "https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "requires": { + "agent-base": "5", + "debug": "4" + } + } + } + }, "qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", @@ -8042,6 +9735,16 @@ "object-assign": "^4.1.1" } }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -8180,6 +9883,11 @@ "uuid": "^3.3.2" } }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -8234,6 +9942,23 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -8381,6 +10106,11 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, "tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -8394,6 +10124,53 @@ "yallist": "^4.0.0" } }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, "tiny-merge-patch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/tiny-merge-patch/-/tiny-merge-patch-0.1.2.tgz", @@ -8465,6 +10242,14 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -8483,6 +10268,15 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -8523,6 +10317,11 @@ "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -8531,6 +10330,14 @@ "punycode": "^2.1.0" } }, + "use-resize-observer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-7.0.1.tgz", + "integrity": "sha512-tJESENDoVXfzkv1Cl9dJ13ySgENcKjvEKSU7QwjckjxjXg/MV2zW1CjEUtLpmXY084womIxJROUR3L1SuqlvOw==", + "requires": { + "resize-observer-polyfill": "^1.5.1" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -8566,6 +10373,22 @@ } } }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "requires": { + "xml-name-validator": "^3.0.0" + } + }, "walk": { "version": "2.3.15", "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", @@ -8610,6 +10433,29 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -8635,6 +10481,11 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "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==" + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -8651,16 +10502,46 @@ "typedarray-to-buffer": "^3.1.5" } }, + "ws": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, "yaml-ast-parser": { "version": "0.0.43", "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==" }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 2863e9a..ed6df0e 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,8 @@ "author": "", "license": "ISC", "dependencies": { - "@asyncapi/generator": "^1.8.27" + "@asyncapi/generator": "^1.8.27", + "@asyncapi/html-template": "^0.24.7", + "@asyncapi/markdown-template": "^1.0.0" } }