diff --git a/.github/workflows/validate-embedded-examples.yml b/.github/workflows/validate-embedded-examples.yml
new file mode 100644
index 00000000..e7873899
--- /dev/null
+++ b/.github/workflows/validate-embedded-examples.yml
@@ -0,0 +1,23 @@
+name: Validate Embedded Examples in asyncapi.md
+
+on:
+ pull_request_target:
+ types: [opened, reopened, synchronize, edited, ready_for_review]
+
+jobs:
+ validate-examples:
+ name: Validate Examples
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+ - name: Install Dependencies
+ run: npm install
+ working-directory: ./scripts/validation/
+ - name: Validate AsyncAPI documents
+ run: npm run validate:examples
+ working-directory: ./scripts/validation/
\ No newline at end of file
diff --git a/scripts/validation/base-doc-combined.json b/scripts/validation/base-doc-combined.json
new file mode 100644
index 00000000..07270a4b
--- /dev/null
+++ b/scripts/validation/base-doc-combined.json
@@ -0,0 +1,711 @@
+{
+ "asyncapi": "3.0.0",
+ "info": {
+ "title": "AsyncAPI",
+ "version": "1.x.x",
+ "description": "This is a very good base doc, probably.",
+ "termsOfService": "https://asyncapi.org/terms/",
+ "license": {
+ "name": "Apache 2.0",
+ "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
+ },
+ "externalDocs": {
+ "description": "Find more info here",
+ "url": "https://www.asyncapi.org"
+ },
+ "tags": [
+ {
+ "name": "e-commerce"
+ }
+ ]
+ },
+ "servers": {
+ "production": {
+ "host": "rabbitmq.in.mycompany.com:5672",
+ "pathname": "/v1",
+ "protocol": "amqp",
+ "protocolVersion": "1.0",
+ "description": "Production RabbitMQ broker (uses the `production` vhost).",
+ "title": "Production Server",
+ "summary": "Production environment server",
+ "security": [
+ {
+ "type": "http",
+ "scheme": "bearer"
+ }
+ ],
+ "tags": [
+ {
+ "name": "production",
+ "description": "Production environment"
+ }
+ ],
+ "externalDocs": {
+ "description": "Additional documentation for the production server",
+ "url": "https://example.com/docs/production"
+ },
+ "bindings": {
+ "amqp": {
+ "exchange": "my-exchange",
+ "queue": "my-queue"
+ }
+ }
+ },
+ "staging": {
+ "host": "rabbitmq.in.mycompany.com:5672",
+ "pathname": "/v1",
+ "protocol": "amqp",
+ "protocolVersion": "1.0",
+ "description": "Staging RabbitMQ broker (uses the `staging` vhost).",
+ "title": "Staging Server",
+ "summary": "Staging environment server",
+ "security": [
+ {
+ "type": "apiKey",
+ "in": "user",
+ "description": "Provide your API key as the user and leave the password empty."
+ }
+ ],
+ "tags": [
+ {
+ "name": "staging",
+ "description": "Staging environment"
+ }
+ ],
+ "externalDocs": {
+ "description": "Additional documentation for the staging server",
+ "url": "https://example.com/docs/staging"
+ },
+ "bindings": {
+ "amqp": {
+ "exchange": "my-exchange",
+ "queue": "my-queue"
+ }
+ }
+ },
+ "rabbitmqInProd": {
+ "host": "{prod}.in.mycompany.com",
+ "protocol": "amqp",
+ "description": "Production server"
+ },
+ "rabbitmqInStaging": {
+ "host": "{stage}.in.mycompany.com",
+ "protocol": "amqp",
+ "description": "Staging server"
+ }
+ },
+ "channels": {
+ "user": {
+ "address": "users.{userId}",
+ "title": "Users channel",
+ "description": "This channel is used to exchange messages about user events.",
+ "messages": {
+ "userSignedUp": {
+ "$ref": "#/components/messages/userSignedUp"
+ },
+ "userCompletedOrder": {
+ "$ref": "#/components/messages/userCompletedOrder"
+ }
+ },
+ "parameters": {
+ "userId": {
+ "$ref": "#/components/parameters/userId"
+ }
+ },
+ "servers": [
+ {
+ "$ref": "#/servers/production"
+ }
+ ],
+ "bindings": {
+ "amqp": {
+ "is": "queue",
+ "queue": {
+ "exclusive": true
+ }
+ }
+ },
+ "tags": [
+ {
+ "name": "user",
+ "description": "User-related messages"
+ }
+ ],
+ "externalDocs": {
+ "description": "Find more info here",
+ "url": "https://example.com"
+ }
+ },
+ "userSignup": {
+ "address": "users.signup",
+ "description": "Channel for user signups",
+ "messages": {
+ "userSignedUp": {
+ "$ref": "#/components/messages/userSignedUp"
+ }
+ }
+ },
+ "userSignupReply": {
+ "address": "users.signup.reply",
+ "description": "Channel for user signup replies",
+ "messages": {
+ "userSignedUpReply": {
+ "summary": "User signup reply message",
+ "payload": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "description": "Status of the signup process"
+ },
+ "message": {
+ "type": "string",
+ "description": "Additional information"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": {
+ "sendUserSignUp": {
+ "action": "send",
+ "title": "User sign up",
+ "summary": "Action to sign a user up.",
+ "description": "A longer description",
+ "channel": {
+ "$ref": "#/channels/user"
+ },
+ "security": [
+ {
+ "type": "oauth2",
+ "description": "The oauth security descriptions",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://example.com/api/oauth/dialog",
+ "availableScopes": {
+ "subscribe:auth_revocations": "Scope required for authorization revocation topic"
+ }
+ }
+ },
+ "scopes": [
+ "subscribe:auth_revocations"
+ ]
+ }
+ ],
+ "tags": [
+ {
+ "name": "user"
+ },
+ {
+ "name": "signup"
+ },
+ {
+ "name": "register"
+ }
+ ],
+ "bindings": {
+ "amqp": {
+ "ack": false
+ }
+ },
+ "messages": [
+ {
+ "$ref": "#/channels/user/messages/userSignedUp"
+ }
+ ],
+ "reply": {
+ "address": {
+ "location": "$message.header#/replyTo"
+ },
+ "channel": {
+ "$ref": "#/channels/userSignupReply"
+ },
+ "messages": [
+ {
+ "$ref": "#/channels/userSignupReply/messages/userSignedUpReply"
+ }
+ ]
+ },
+ "traits":[]
+ }
+ },
+ "components": {
+ "schemas": {
+ "Category": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64"
+ }
+ }
+ },
+ "AvroExample": {
+ "schemaFormat": "application/vnd.apache.avro+json;version=1.9.0",
+ "schema": {
+ "type": "record",
+ "name": "UserCreate",
+ "namespace": "com.example",
+ "fields": [
+ {
+ "name": "id",
+ "type": "int"
+ },
+ {
+ "name": "name",
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "userCreate": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the user"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the user"
+ },
+ "email": {
+ "type": "string",
+ "format": "email",
+ "description": "The email of the user"
+ }
+ },
+ "required": ["id", "name", "email"]
+ },
+ "signup": {
+ "type": "object",
+ "properties": {
+ "timestamp": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The timestamp of the signup"
+ },
+ "source": {
+ "type": "string",
+ "description": "The source of the signup"
+ }
+ },
+ "required": ["timestamp", "source"]
+ },
+ "ComplexModel": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "Address": {
+ "type": "object",
+ "properties": {
+ "street": {
+ "type": "string"
+ },
+ "city": {
+ "type": "string"
+ },
+ "state": {
+ "type": "string"
+ },
+ "zip": {
+ "type": "string"
+ }
+ }
+ },
+ "ErrorModel": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
+ "Pet": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "name": {
+ "type": "string"
+ },
+ "tag": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "servers": {
+ "development": {
+ "host": "{stage}.in.mycompany.com",
+ "protocol": "amqp",
+ "description": "RabbitMQ broker",
+ "bindings": {
+ "$ref": "#/components/serverBindings/devAmqp"
+ },
+ "variables": {
+ "stage": {
+ "$ref": "#/components/serverVariables/stage"
+ }
+ },
+ "security": [
+ {
+ "$ref": "#/components/securitySchemes/oauth"
+ }
+ ]
+ }
+ },
+ "serverVariables": {
+ "stage": {
+ "default": "demo",
+ "description": "This value is assigned by the service provider in this example of `mycompany.com`"
+ }
+ },
+ "channels": {
+ "user": {
+ "address": "users.{userId}",
+ "title": "Users channel",
+ "description": "This channel is used to exchange messages about user events.",
+ "messages": {
+ "userSignedUp": {
+ "$ref": "#/components/messages/userSignUp"
+ }
+ },
+ "parameters": {
+ "userId": {
+ "$ref": "#/components/parameters/userId"
+ }
+ },
+ "servers": [
+ {
+ "$ref": "#/components/servers/development"
+ }
+ ],
+ "bindings": {
+ "$ref": "#/components/channelBindings/user"
+ },
+ "tags": [
+ {
+ "$ref": "#/components/tags/user"
+ }
+ ],
+ "externalDocs": {
+ "$ref": "#/components/externalDocs/infoDocs"
+ }
+ }
+ },
+ "messages": {
+ "userSignUp": {
+ "summary": "Action to sign a user up.",
+ "traits": [
+ {
+ "$ref": "#/components/messageTraits/commonHeaders"
+ }
+ ],
+ "payload": {
+ "$ref": "#/components/schemas/Category"
+ },
+ "correlationId": {
+ "$ref": "#/components/correlationIds/default"
+ },
+ "bindings": {
+ "$ref": "#/components/messageBindings/user"
+ },
+ "examples":[]
+ },
+ "userSignedUp": {
+ "name": "UserSignup",
+ "title": "User signup",
+ "summary": "Action to sign a user up.",
+ "description": "A longer description",
+ "contentType": "application/json",
+ "tags": [
+ { "name": "user" },
+ { "name": "signup" },
+ { "name": "register" }
+ ],
+ "headers": {
+ "type": "object",
+ "properties": {
+ "correlationId": {
+ "description": "Correlation ID set by application",
+ "type": "string"
+ },
+ "applicationInstanceId": {
+ "description": "Unique identifier for a given instance of the publishing application",
+ "type": "string"
+ }
+ }
+ },
+ "payload": {
+ "type": "object",
+ "properties": {
+ "user": {
+ "$ref": "#/components/schemas/userCreate"
+ },
+ "signup": {
+ "$ref": "#/components/schemas/signup"
+ }
+ }
+ },
+ "correlationId": {
+ "description": "Default Correlation ID",
+ "location": "$message.header#/correlationId"
+ },
+ "traits": [
+ { "$ref": "#/components/messageTraits/commonHeaders" }
+ ],
+ "examples": [
+ {
+ "name": "SimpleSignup",
+ "summary": "A simple UserSignup example message",
+ "headers": {
+ "correlationId": "my-correlation-id",
+ "applicationInstanceId": "myInstanceId"
+ },
+ "payload": {
+ "user": {
+ "someUserKey": "someUserValue"
+ },
+ "signup": {
+ "someSignupKey": "someSignupValue"
+ }
+ }
+ }
+ ]
+ },
+ "userSignedUpReply":{
+ "name": "UserSignupReply",
+ "title": "User signup reply",
+ "summary": "User signup reply message",
+ "contentType": "application/json",
+ "payload": {
+ "type": "object",
+ "properties": {
+ "status": {
+ "type": "string",
+ "description": "Status of the signup process"
+ },
+ "message": {
+ "type": "string",
+ "description": "Additional information"
+ }
+ }
+ }
+ },
+ "userCompletedOrder": {
+ "summary": "User completed order event",
+ "contentType": "application/json",
+ "payload": {
+ "type": "object",
+ "properties": {
+ "orderId": {
+ "type": "string",
+ "description": "The ID of the order"
+ },
+ "userId": {
+ "type": "string",
+ "description": "The ID of the user"
+ },
+ "amount": {
+ "type": "number",
+ "description": "The total amount of the order"
+ }
+ }
+ }
+ }
+ },
+ "parameters": {
+ "userId": {
+ "description": "Id of the user."
+ }
+ },
+ "correlationIds": {
+ "default": {
+ "description": "Default Correlation ID",
+ "location": "$message.header#/correlationId"
+ }
+ },
+ "operations": {
+ "sendUserSignUp": {
+ "action": "send",
+ "title": "User sign up",
+ "channel": {
+ "$ref": "#/channels/user"
+ },
+ "bindings": {
+ "$ref": "#/components/operationBindings/sendUser"
+ },
+ "traits": [
+ {
+ "$ref": "#/components/operationTraits/binding"
+ }
+ ],
+ "reply": {
+ "$ref": "#/components/replies/signupReply"
+ }
+ }
+ },
+ "replies": {
+ "signupReply": {
+ "address": {
+ "$ref": "#/components/replyAddresses/signupReply"
+ },
+ "channel": {
+ "$ref": "#/channels/userSignupReply"
+ }
+ }
+ },
+ "replyAddresses": {
+ "signupReply": {
+ "location": "$message.header#/replyTo"
+ }
+ },
+ "securitySchemes": {
+ "userPasswordAuth": {
+ "type": "userPassword",
+ "description": "User password security scheme"
+ },
+ "apiKeyAuth": {
+ "type": "apiKey",
+ "description": "API key security scheme",
+ "in": "user"
+ },
+ "X509Auth": {
+ "type": "X509",
+ "description": "X509 security scheme"
+ },
+ "symmetricEncryptionAuth": {
+ "type": "symmetricEncryption",
+ "description": "Symmetric encryption security scheme"
+ },
+ "basicAuth": {
+ "type": "http",
+ "description": "Basic security scheme",
+ "scheme": "basic"
+ },
+ "httpApiAuth": {
+ "type": "httpApiKey",
+ "name":"API Key Sample",
+ "description": "api_key",
+ "in":"header"
+ },
+ "JWTAuth": {
+ "type": "http",
+ "scheme": "bearer",
+ "bearerFormat": "JWT"
+ },
+ "saslAuth": {
+ "type": "scramSha256",
+ "description": "SASL security scheme"
+ },
+ "oauth": {
+ "type": "oauth2",
+ "description": "The oauth security descriptions",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://example.com/api/oauth/dialog",
+ "availableScopes": {
+ "subscribe:auth_revocations": "Scope required for authorization revocation topic"
+ }
+ }
+ },
+ "scopes": [
+ "subscribe:auth_revocations"
+ ]
+ }
+ },
+ "operationTraits": {
+ "binding": {
+ "bindings": {
+ "amqp": {
+ "ack": false
+ }
+ }
+ },
+ "kafka": {
+ "bindings": {
+ "kafka": {
+ "groupId": false
+ }
+ }
+ }
+ },
+ "messageTraits": {
+ "commonHeaders": {
+ "headers": {
+ "type": "object",
+ "properties": {
+ "my-app-header": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 100
+ }
+ }
+ }
+ }
+ },
+ "tags": {
+ "user": {
+ "name": "user",
+ "description": "User-related messages"
+ }
+ },
+ "externalDocs": {
+ "infoDocs": {
+ "url": "https://example.com/docs",
+ "description": "Find more info here"
+ }
+ },
+ "serverBindings": {
+ "devAmqp": {
+ "amqp": {
+ "exchange": "my-exchange",
+ "queue": "my-queue"
+ }
+ }
+ },
+ "channelBindings": {
+ "user": {
+ "amqp": {
+ "is": "queue",
+ "queue": {
+ "exclusive": true
+ }
+ }
+ }
+ },
+ "operationBindings": {
+ "sendUser": {
+ "amqp": {
+ "ack": false
+ }
+ }
+ },
+ "messageBindings": {
+ "user": {
+ "amqp": {
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "0.3.0"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/scripts/validation/embedded-examples-validation.js b/scripts/validation/embedded-examples-validation.js
new file mode 100644
index 00000000..467f093f
--- /dev/null
+++ b/scripts/validation/embedded-examples-validation.js
@@ -0,0 +1,117 @@
+const fs = require('fs');
+const yaml = require('js-yaml');
+const { Parser } = require('@asyncapi/parser');
+const mergePatch = require('json-merge-patch');
+const jsonpointer = require('jsonpointer');
+const parser = new Parser();
+
+// Read the markdown file
+const markdownContent = fs.readFileSync('../../spec/asyncapi.md', 'utf8');
+
+// Function to extract comments and examples from the markdown content
+function extractCommentsAndExamples(content) {
+ const combinedRegex = /\s*\n```(.*)?\n([\s\S]*?)\n```/g;
+ let match;
+ const combinedData = [];
+
+ while ((match = combinedRegex.exec(content)) !== null) {
+ try {
+ const json = JSON.parse(match[1]);
+ const format = match[2].trim();
+ const exampleContent = match[3].trim();
+
+ let example;
+ if (format === 'json') {
+ example = JSON.parse(exampleContent);
+ } else if (format === 'yaml') {
+ example = yaml.load(exampleContent);
+ } else {
+ throw new Error(`Unsupported format: ${format}`);
+ }
+
+ combinedData.push({
+ name: json.name,
+ json_pointer: json.json_pointer,
+ example: example,
+ format: format,
+ });
+ } catch (e) {
+ console.error("Failed to parse comment JSON or example:", match[1], e);
+ process.exit(1);
+ }
+ }
+
+ return combinedData;
+}
+
+// Extract comments and examples from the markdown file
+const combinedData = extractCommentsAndExamples(markdownContent);
+
+// Function to apply JSON Merge Patch updates to the document
+function applyUpdates(updates, baseDoc) {
+ updates.forEach(update => {
+ try {
+ // Handle root document case
+ if (update.json_pointer === '') {
+ baseDoc = mergePatch.apply(baseDoc, update.example);
+ return;
+ }
+
+ // For non-root cases, use jsonpointer to get and set the correct location
+ const targetObject = jsonpointer.get(baseDoc, update.json_pointer);
+ const updatedObject = mergePatch.apply(targetObject || {}, update.example);
+ jsonpointer.set(baseDoc, update.json_pointer, updatedObject);
+
+ } catch (e) {
+ console.error(`\nError processing update for '${update.name}' at path '${update.json_pointer}'`, e);
+ process.exit(1);
+ }
+ });
+ return baseDoc;
+}
+
+// Function to validate a document using AsyncAPI parser
+async function validateParser(document, name) {
+ try {
+ const diagnostics = await parser.validate(document);
+
+ if (diagnostics.length > 0) {
+ diagnostics.forEach(diagnostic => {
+ const errorMessage = `\x1b[31mError in ${name}: ${diagnostic.message}\x1b[0m`;
+ if (diagnostic.level === 'error') {
+ console.error(errorMessage);
+ process.exit(1);
+ } else {
+ console.log(errorMessage);
+ }
+ });
+ } else {
+ console.log(`${name} is valid.`);
+ }
+ } catch (error) {
+ console.error(`\x1b[31mValidation failed for ${name}: ${error.message}\x1b[0m`);
+ process.exit(1);
+ }
+}
+
+// Iterate over the combinedData array, apply updates, and validate each document
+const baseDocPath = './base-doc-combined.json';
+
+const baseDoc = JSON.parse(fs.readFileSync(baseDocPath, 'utf8'));
+
+const validationPromises = combinedData.map(async (item) => {
+ const updatedDocument = applyUpdates([item], baseDoc);
+
+ await validateParser(updatedDocument, `${item.name}-${item.format}-format`);
+});
+
+console.log(`\nNumber of examples extracted: ${combinedData.length}\n`);
+
+Promise.all(validationPromises)
+ .then(() => {
+ console.log('\n\nValidation process complete!\nCheck logs for any errors.');
+ })
+ .catch((error) => {
+ console.error('Error during validations:', error);
+ process.exit(1);
+ });
\ No newline at end of file
diff --git a/scripts/validation/package-lock.json b/scripts/validation/package-lock.json
new file mode 100644
index 00000000..e2ea2a35
--- /dev/null
+++ b/scripts/validation/package-lock.json
@@ -0,0 +1,1921 @@
+{
+ "name": "validation",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "validation",
+ "version": "1.0.0",
+ "license": "Apache 2.0",
+ "devDependencies": {
+ "@asyncapi/parser": "^3.1.0",
+ "js-yaml": "^4.1.0",
+ "json-merge-patch": "^1.0.2",
+ "jsonpointer": "^5.0.1"
+ }
+ },
+ "node_modules/@asyncapi/parser": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.1.0.tgz",
+ "integrity": "sha512-rUd+fsPRE68o+F3gLqk7OaBj5J5VgBiLk9eJBGEXolNmKbVd45mxJm2aBpMkphQEmYHuBvxZyiNYlSCyr1D2fA==",
+ "dev": true,
+ "dependencies": {
+ "@asyncapi/specs": "^6.7.1",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json": "^3.20.2",
+ "@stoplight/json-ref-readers": "^1.2.2",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@stoplight/spectral-ref-resolver": "^1.0.3",
+ "@stoplight/types": "^13.12.0",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7"
+ }
+ },
+ "node_modules/@asyncapi/parser/node_modules/jsonpath-plus": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz",
+ "integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@asyncapi/specs": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.7.1.tgz",
+ "integrity": "sha512-jEaW2vgAwD9GboCdO/TI1zN2k+iowL8YFYwiZwTIr4U4KDmsgo3BLypScl6Jl4+IvY9RdsWE67nuzVX7jooiqQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "node_modules/@jsep-plugin/regex": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.3.tgz",
+ "integrity": "sha512-XfZgry4DwEZvSFtS/6Y+R48D7qJYJK6R9/yJFyUFHCIUMEEHuJ4X95TDgJp5QkmzfLYvapMPzskV5HpIDrREug==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.16.0"
+ },
+ "peerDependencies": {
+ "jsep": "^0.4.0||^1.0.0"
+ }
+ },
+ "node_modules/@jsep-plugin/ternary": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.3.tgz",
+ "integrity": "sha512-qtLGzCNzPVJ3kdH6/zoLWDPjauHIKiLSBAR71Wa0+PWvGA8wODUQvRgxtpUA5YqAYL3CQ8S4qXhd/9WuWTZirg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.16.0"
+ },
+ "peerDependencies": {
+ "jsep": "^0.4.0||^1.0.0"
+ }
+ },
+ "node_modules/@openapi-contrib/openapi-schema-to-json-schema": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.2.0.tgz",
+ "integrity": "sha512-Gj6C0JwCr8arj0sYuslWXUBSP/KnUlEGnPW4qxlXvAl543oaNQgMgIgkQUA6vs5BCCvwTEiL8m/wdWzfl4UvSw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "node_modules/@stoplight/better-ajv-errors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz",
+ "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==",
+ "dev": true,
+ "dependencies": {
+ "jsonpointer": "^5.0.0",
+ "leven": "^3.1.0"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ },
+ "peerDependencies": {
+ "ajv": ">=8"
+ }
+ },
+ "node_modules/@stoplight/json": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.0.tgz",
+ "integrity": "sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/ordered-object-literal": "^1.0.3",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^13.6.0",
+ "jsonc-parser": "~2.2.1",
+ "lodash": "^4.17.21",
+ "safe-stable-stringify": "^1.1"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-readers": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz",
+ "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==",
+ "dev": true,
+ "dependencies": {
+ "node-fetch": "^2.6.0",
+ "tslib": "^1.14.1"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-resolver": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz",
+ "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/json": "^3.21.0",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^12.3.0 || ^13.0.0",
+ "@types/urijs": "^1.19.19",
+ "dependency-graph": "~0.11.0",
+ "fast-memoize": "^2.5.2",
+ "immer": "^9.0.6",
+ "lodash": "^4.17.21",
+ "tslib": "^2.6.0",
+ "urijs": "^1.19.11"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-resolver/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@stoplight/ordered-object-literal": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz",
+ "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stoplight/path": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz",
+ "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stoplight/spectral-core": {
+ "version": "1.18.3",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.18.3.tgz",
+ "integrity": "sha512-YY8x7X2SWJIhGTLPol+eFiQpWPz0D0mJdkK2i4A0QJG68KkNhypP6+JBC7/Kz3XWjqr0L/RqAd+N5cQLPOKZGQ==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/better-ajv-errors": "1.0.3",
+ "@stoplight/json": "~3.21.0",
+ "@stoplight/path": "1.3.2",
+ "@stoplight/spectral-parsers": "^1.0.0",
+ "@stoplight/spectral-ref-resolver": "^1.0.0",
+ "@stoplight/spectral-runtime": "^1.0.0",
+ "@stoplight/types": "~13.6.0",
+ "@types/es-aggregate-error": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "ajv": "^8.6.0",
+ "ajv-errors": "~3.0.0",
+ "ajv-formats": "~2.1.0",
+ "es-aggregate-error": "^1.0.7",
+ "jsonpath-plus": "7.1.0",
+ "lodash": "~4.17.21",
+ "lodash.topath": "^4.5.2",
+ "minimatch": "3.1.2",
+ "nimma": "0.2.2",
+ "pony-cause": "^1.0.0",
+ "simple-eval": "1.0.0",
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-core/node_modules/@stoplight/types": {
+ "version": "13.6.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.6.0.tgz",
+ "integrity": "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-core/node_modules/jsonpath-plus": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.1.0.tgz",
+ "integrity": "sha512-gTaNRsPWO/K2KY6MrqaUFClF9kmuM6MFH5Dhg1VYDODgFbByw1yb7xu3hrViE/sz+dGOeMWgCzwUwQtAnCTE9g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@stoplight/spectral-core/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@stoplight/spectral-formats": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.6.0.tgz",
+ "integrity": "sha512-X27qhUfNluiduH0u/QwJqhOd8Wk5YKdxVmKM03Aijlx0AH1H5mYt3l9r7t2L4iyJrsBaFPnMGt7UYJDGxszbNA==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/json": "^3.17.0",
+ "@stoplight/spectral-core": "^1.8.0",
+ "@types/json-schema": "^7.0.7",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-formats/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@stoplight/spectral-functions": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.7.2.tgz",
+ "integrity": "sha512-f+61/FtIkQeIo+a269CeaeqjpyRsgDyIk6DGr7iS4hyuk1PPk7Uf6MNRDs9FEIBh7CpdEJ+HSHbMLwgpymWTIw==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/better-ajv-errors": "1.0.3",
+ "@stoplight/json": "^3.17.1",
+ "@stoplight/spectral-core": "^1.7.0",
+ "@stoplight/spectral-formats": "^1.0.0",
+ "@stoplight/spectral-runtime": "^1.1.0",
+ "ajv": "^8.6.3",
+ "ajv-draft-04": "~1.0.0",
+ "ajv-errors": "~3.0.0",
+ "ajv-formats": "~2.1.0",
+ "lodash": "~4.17.21",
+ "tslib": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-functions/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@stoplight/spectral-parsers": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.4.tgz",
+ "integrity": "sha512-nCTVvtX6q71M8o5Uvv9kxU31Gk1TRmgD6/k8HBhdCmKG6FWcwgjiZouA/R3xHLn/VwTI/9k8SdG5Mkdy0RBqbQ==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/json": "~3.21.0",
+ "@stoplight/types": "^14.1.1",
+ "@stoplight/yaml": "~4.3.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-parsers/node_modules/@stoplight/types": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz",
+ "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/spectral-parsers/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@stoplight/spectral-ref-resolver": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.4.tgz",
+ "integrity": "sha512-5baQIYL0NJTSVy8v6RxOR4U51xOUYM8wJri1YvlAT6bPN8m0EIxMwfVYi0xUZEMVeHcWx869nIkoqyWmOutF2A==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/json-ref-readers": "1.2.2",
+ "@stoplight/json-ref-resolver": "~3.1.6",
+ "@stoplight/spectral-runtime": "^1.1.2",
+ "dependency-graph": "0.11.0",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-ref-resolver/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@stoplight/spectral-runtime": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.2.tgz",
+ "integrity": "sha512-fr5zRceXI+hrl82yAVoME+4GvJie8v3wmOe9tU+ZLRRNonizthy8qDi0Z/z4olE+vGreSDcuDOZ7JjRxFW5kTw==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/json": "^3.17.0",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^12.3.0",
+ "abort-controller": "^3.0.0",
+ "lodash": "^4.17.21",
+ "node-fetch": "^2.6.7",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@stoplight/spectral-runtime/node_modules/@stoplight/types": {
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-12.5.0.tgz",
+ "integrity": "sha512-dwqYcDrGmEyUv5TWrDam5TGOxU72ufyQ7hnOIIDdmW5ezOwZaBFoR5XQ9AsH49w7wgvOqB2Bmo799pJPWnpCbg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@stoplight/spectral-runtime/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@stoplight/types": {
+ "version": "13.20.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.20.0.tgz",
+ "integrity": "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/yaml": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.3.0.tgz",
+ "integrity": "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==",
+ "dev": true,
+ "dependencies": {
+ "@stoplight/ordered-object-literal": "^1.0.5",
+ "@stoplight/types": "^14.1.1",
+ "@stoplight/yaml-ast-parser": "0.0.50",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.8"
+ }
+ },
+ "node_modules/@stoplight/yaml-ast-parser": {
+ "version": "0.0.50",
+ "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz",
+ "integrity": "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==",
+ "dev": true
+ },
+ "node_modules/@stoplight/yaml/node_modules/@stoplight/types": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz",
+ "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.4",
+ "utility-types": "^3.10.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ }
+ },
+ "node_modules/@stoplight/yaml/node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/@types/es-aggregate-error": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz",
+ "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.12.13",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.13.tgz",
+ "integrity": "sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==",
+ "dev": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/urijs": {
+ "version": "1.19.25",
+ "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.25.tgz",
+ "integrity": "sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg==",
+ "dev": true
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dev": true,
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz",
+ "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.4.1"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-draft-04": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz",
+ "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": "^8.5.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/astring": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz",
+ "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==",
+ "dev": true,
+ "bin": {
+ "astring": "bin/astring"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/avsc": {
+ "version": "5.7.7",
+ "resolved": "https://registry.npmjs.org/avsc/-/avsc-5.7.7.tgz",
+ "integrity": "sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.11"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/dependency-graph": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
+ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dev": true,
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.3",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-aggregate-error": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.13.tgz",
+ "integrity": "sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.2",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-memoize": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz",
+ "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==",
+ "dev": true
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/immer": {
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
+ "dev": true,
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsep": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.3.8.tgz",
+ "integrity": "sha512-qofGylTGgYj9gZFsHuyWAN4jr35eJ66qJCK4eKDnldohuUoQFbU3iZn2zjvEbd9wOAhP9Wx5DsAAduTyE1PSWQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.16.0"
+ }
+ },
+ "node_modules/json-merge-patch": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-1.0.2.tgz",
+ "integrity": "sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/jsonc-parser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz",
+ "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==",
+ "dev": true
+ },
+ "node_modules/jsonpointer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
+ "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.topath": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz",
+ "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==",
+ "dev": true
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/nimma": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/nimma/-/nimma-0.2.2.tgz",
+ "integrity": "sha512-V52MLl7BU+tH2Np9tDrIXK8bql3MVUadnMIl/0/oZSGC9keuro0O9UUv9QKp0aMvtN8HRew4G7byY7H4eWsxaQ==",
+ "dev": true,
+ "dependencies": {
+ "@jsep-plugin/regex": "^1.0.1",
+ "@jsep-plugin/ternary": "^1.0.2",
+ "astring": "^1.8.1",
+ "jsep": "^1.2.0"
+ },
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ },
+ "optionalDependencies": {
+ "jsonpath-plus": "^6.0.1",
+ "lodash.topath": "^4.5.2"
+ }
+ },
+ "node_modules/nimma/node_modules/jsonpath-plus": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz",
+ "integrity": "sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/pony-cause": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz",
+ "integrity": "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-stable-stringify": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz",
+ "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==",
+ "dev": true
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/simple-eval": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/simple-eval/-/simple-eval-1.0.0.tgz",
+ "integrity": "sha512-kpKJR+bqTscgC0xuAl2xHN6bB12lHjC2DCUfqjAx19bQyO3R2EVLOurm3H9AUltv/uFVcSCVNc6faegR+8NYLw==",
+ "dev": true,
+ "dependencies": {
+ "jsep": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urijs": {
+ "version": "1.19.11",
+ "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz",
+ "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
+ "dev": true
+ },
+ "node_modules/utility-types": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz",
+ "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ }
+ }
+}
diff --git a/scripts/validation/package.json b/scripts/validation/package.json
new file mode 100644
index 00000000..af4b95a1
--- /dev/null
+++ b/scripts/validation/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "validation",
+ "version": "1.0.0",
+ "description": "for validation of embedded examples in asyncapi.md file",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "validate:examples": "node embedded-examples-validation.js"
+ },
+ "author": "Animesh Kumar",
+ "license": "Apache-2.0",
+ "devDependencies": {
+ "@asyncapi/parser": "^3.1.0",
+ "js-yaml": "^4.1.0",
+ "json-merge-patch": "^1.0.2",
+ "jsonpointer": "^5.0.1"
+ }
+}
diff --git a/scripts/validation/user-create.avsc b/scripts/validation/user-create.avsc
new file mode 100644
index 00000000..85e3214b
--- /dev/null
+++ b/scripts/validation/user-create.avsc
@@ -0,0 +1,15 @@
+{
+ "type": "record",
+ "name": "UserCreate",
+ "namespace": "com.example",
+ "fields": [
+ {
+ "name": "id",
+ "type": "int"
+ },
+ {
+ "name": "name",
+ "type": "string"
+ }
+ ]
+}
diff --git a/spec/asyncapi.md b/spec/asyncapi.md
index 4611f3b9..04a595d3 100644
--- a/spec/asyncapi.md
+++ b/spec/asyncapi.md
@@ -26,7 +26,7 @@ operations:
onUserSignedUp:
action: receive
channel:
- $ref: "#/channels/userSignedUp"
+ $ref: '#/channels/userSignedUp'
```
It means that the [application](#definitionsApplication) will receive messages from the `userSignedUp` [channel](#definitionsChannel).
@@ -42,7 +42,7 @@ operations:
description: Event received when a user signed up on the product.
action: receive
channel:
- $ref: "#/channels/userSignedUp"
+ $ref: '#/channels/userSignedUp'
```
We can't automatically assume that an _opposite_ application exists by simply replacing `receive` with `send`:
@@ -54,7 +54,7 @@ operations:
description: Event received when a user signed up on the product. # <-- This doesn't make sense now. Should speak about sending an event, not receiving it.
action: send
channel:
- $ref: "#/channels/userSignedUp"
+ $ref: '#/channels/userSignedUp'
```
Aside from the issues mentioned above, there may also be infrastructure configuration that is not represented here. For instance, a system may use a read-only channel for receiving messages, a different one for sending them, and an intermediary process that will forward messages from one channel to the other.
@@ -273,6 +273,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Info Object Example
+
```json
{
"title": "AsyncAPI Sample App",
@@ -300,6 +301,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
title: AsyncAPI Sample App
version: 1.0.1
@@ -335,6 +337,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Contact Object Example
+
```json
{
"name": "API Support",
@@ -343,6 +346,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
name: API Support
url: https://www.example.com/support
@@ -364,6 +368,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### License Object Example
+
```json
{
"name": "Apache 2.0",
@@ -371,6 +376,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
@@ -388,6 +394,7 @@ Field Pattern | Type | Description
##### Servers Object Example
+
```json
{
"development": {
@@ -429,6 +436,7 @@ Field Pattern | Type | Description
}
```
+
```yaml
development:
host: localhost:5672
@@ -436,24 +444,24 @@ development:
protocol: amqp
protocolVersion: 0-9-1
tags:
- - name: "env:development"
- description: "This environment is meant for developers to run their own tests."
+ - name: 'env:development'
+ description: 'This environment is meant for developers to run their own tests.'
staging:
host: rabbitmq-staging.in.mycompany.com:5672
description: RabbitMQ broker for the staging environment.
protocol: amqp
protocolVersion: 0-9-1
tags:
- - name: "env:staging"
- description: "This environment is a replica of the production environment."
+ - name: 'env:staging'
+ description: 'This environment is a replica of the production environment.'
production:
host: rabbitmq.in.mycompany.com:5672
description: RabbitMQ broker for the production environment.
protocol: amqp
protocolVersion: 0-9-1
tags:
- - name: "env:production"
- description: "This environment is the live environment available for final users."
+ - name: 'env:production'
+ description: 'This environment is the live environment available for final users.'
```
#### Server Object
@@ -481,6 +489,7 @@ Field Name | Type | Description
A single server would be described as:
+
```json
{
"host": "kafka.in.mycompany.com:9092",
@@ -490,6 +499,7 @@ A single server would be described as:
}
```
+
```yaml
host: kafka.in.mycompany.com:9092
description: Production Kafka broker.
@@ -499,6 +509,7 @@ protocolVersion: '3.2'
An example of a server that has a `pathname`:
+
```json
{
"host": "rabbitmq.in.mycompany.com:5672",
@@ -508,6 +519,7 @@ An example of a server that has a `pathname`:
}
```
+
```yaml
host: rabbitmq.in.mycompany.com:5672
pathname: /production
@@ -532,6 +544,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Server Variable Object Example
+
```json
{
"host": "rabbitmq.in.mycompany.com:5672",
@@ -550,6 +563,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
host: 'rabbitmq.in.mycompany.com:5672'
pathname: '/{env}'
@@ -571,12 +585,14 @@ In case a message can't be encoded/decoded using this value, schema parsers MUST
##### Default Content Type Example
+
```json
{
"defaultContentType": "application/json"
}
```
+
```yaml
defaultContentType: application/json
```
@@ -593,6 +609,7 @@ Field Pattern | Type | Description
##### Channels Object Example
+
```json
{
"userSignedUp": {
@@ -606,6 +623,7 @@ Field Pattern | Type | Description
}
```
+
```yaml
userSignedUp:
address: 'user.signedup'
@@ -637,6 +655,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Channel Object Example
+
```json
{
"address": "users.{userId}",
@@ -678,6 +697,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
address: 'users.{userId}'
title: Users channel
@@ -724,6 +744,7 @@ Field Pattern | Type | Description
##### Messages Object Example
+
```json
{
"userSignedUp": {
@@ -735,6 +756,7 @@ Field Pattern | Type | Description
}
```
+
```yaml
userSignedUp:
$ref: '#/components/messages/userSignedUp'
@@ -756,6 +778,7 @@ Field Pattern | Type | Description
##### Operations Object Example
+
```json
{
"onUserSignUp": {
@@ -783,6 +806,7 @@ Field Pattern | Type | Description
}
```
+
```yaml
onUserSignUp:
title: User sign up
@@ -827,6 +851,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Operation Object Example
+
```json
{
"title": "User sign up",
@@ -838,6 +863,19 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
"action": "send",
"security": [
{
+ "type": "oauth2",
+ "description": "The oauth security descriptions",
+ "flows": {
+ "clientCredentials": {
+ "tokenUrl": "https://example.com/api/oauth/dialog",
+ "availableScopes": {
+ "subscribe:auth_revocations": "Scope required for authorization revocation topic"
+ }
+ }
+ },
+ "scopes": [
+ "subscribe:auth_revocations"
+ ],
"petstore_auth": [
"write:pets",
"read:pets"
@@ -858,7 +896,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
{ "$ref": "#/components/operationTraits/kafka" }
],
"messages": [
- { "$ref": "/components/messages/userSignedUp" }
+ { "$ref": "#/channels/userSignup/messages/userSignedUp" }
],
"reply": {
"address": {
@@ -868,12 +906,13 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
"$ref": "#/channels/userSignupReply"
},
"messages": [
- { "$ref": "/components/messages/userSignedUpReply" }
- ],
+ { "$ref": "#/channels/userSignupReply/messages/userSignedUpReply" }
+ ]
}
}
```
+
```yaml
title: User sign up
summary: Action to sign a user up.
@@ -882,9 +921,18 @@ channel:
$ref: '#/channels/userSignup'
action: send
security:
- - petstore_auth:
- - write:pets
- - read:pets
+ - type: oauth2
+ description: The oauth security descriptions
+ flows:
+ clientCredentials:
+ tokenUrl: 'https://example.com/api/oauth/dialog'
+ availableScopes:
+ 'subscribe:auth_revocations': Scope required for authorization revocation topic
+ scopes:
+ - 'subscribe:auth_revocations'
+ petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
tags:
- name: user
- name: signup
@@ -893,16 +941,16 @@ bindings:
amqp:
ack: false
traits:
- - $ref: "#/components/operationTraits/kafka"
+ - $ref: '#/components/operationTraits/kafka'
messages:
- - $ref: '#/components/messages/userSignedUp'
+ - $ref: '#/channels/userSignup/messages/userSignedUp'
reply:
address:
location: '$message.header#/replyTo'
channel:
$ref: '#/channels/userSignupReply'
messages:
- - $ref: '#/components/messages/userSignedUpReply'
+ - $ref: '#/channels/userSignupReply/messages/userSignedUpReply'
```
#### Operation Trait Object
@@ -927,6 +975,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Operation Trait Object Example
+
```json
{
"bindings": {
@@ -937,6 +986,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
bindings:
amqp:
@@ -974,6 +1024,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Examples
+
```json
{
"description": "Consumer inbox",
@@ -981,6 +1032,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
description: Consumer Inbox
location: $message.header#/replyTo
@@ -1000,6 +1052,7 @@ Field Pattern | Type | Description
##### Parameters Object Example
+
```json
{
"address": "user/{userId}/signedup",
@@ -1011,6 +1064,7 @@ Field Pattern | Type | Description
}
```
+
```yaml
address: user/{userId}/signedup
parameters:
@@ -1036,6 +1090,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Parameter Object Example
+
```json
{
"address": "user/{userId}/signedup",
@@ -1048,6 +1103,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
address: user/{userId}/signedup
parameters:
@@ -1202,6 +1258,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Message Object Example
+
```json
{
"name": "UserSignup",
@@ -1266,6 +1323,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
name: UserSignup
title: User signup
@@ -1289,14 +1347,14 @@ payload:
type: object
properties:
user:
- $ref: "#/components/schemas/userCreate"
+ $ref: '#/components/schemas/userCreate'
signup:
- $ref: "#/components/schemas/signup"
+ $ref: '#/components/schemas/signup'
correlationId:
description: Default Correlation ID
location: $message.header#/correlationId
traits:
- - $ref: "#/components/messageTraits/commonHeaders"
+ - $ref: '#/components/messageTraits/commonHeaders'
examples:
- name: SimpleSignup
summary: A simple UserSignup example message
@@ -1312,6 +1370,7 @@ examples:
Example using Avro to define the payload:
+
```json
{
"name": "UserSignup",
@@ -1326,12 +1385,13 @@ Example using Avro to define the payload:
"payload": {
"schemaFormat": "application/vnd.apache.avro+json;version=1.9.0",
"schema": {
- "$ref": "path/to/user-create.avsc#/UserCreate"
+ "$ref": "./user-create.avsc"
}
}
}
```
+
```yaml
name: UserSignup
title: User signup
@@ -1344,7 +1404,7 @@ tags:
payload:
schemaFormat: 'application/vnd.apache.avro+yaml;version=1.9.0'
schema:
- $ref: 'path/to/user-create.avsc/#UserCreate'
+ $ref: './user-create.avsc'
```
#### Message Trait Object
@@ -1373,12 +1433,14 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Message Trait Object Example
+
```json
{
"contentType": "application/json"
}
```
+
```yaml
contentType: application/json
```
@@ -1400,6 +1462,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Message Example Object Example
+
```json
{
"name": "SimpleSignup",
@@ -1419,6 +1482,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
name: SimpleSignup
summary: A simple UserSignup example message
@@ -1452,6 +1516,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Tag Object Example
+
```json
{
"name": "user",
@@ -1459,6 +1524,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
name: user
description: User-related messages
@@ -1479,6 +1545,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### External Documentation Object Example
+
```json
{
"description": "Find more info here",
@@ -1486,6 +1553,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
description: Find more info here
url: https://example.com
@@ -1509,12 +1577,14 @@ This object cannot be extended with additional properties and any properties add
##### Reference Object Example
+
```json
{
"$ref": "#/components/schemas/Pet"
}
```
+
```yaml
$ref: '#/components/schemas/Pet'
```
@@ -1564,6 +1634,7 @@ my.org.User
##### Components Object Example
+
```json
{
"components": {
@@ -1595,7 +1666,7 @@ my.org.User
"AvroExample": {
"schemaFormat": "application/vnd.apache.avro+json;version=1.9.0",
"schema": {
- "$ref": "path/to/user-create.avsc#/UserCreate"
+ "$ref": "./user-create.avsc"
}
}
},
@@ -1697,6 +1768,7 @@ my.org.User
}
```
+
```yaml
components:
schemas:
@@ -1717,32 +1789,36 @@ components:
name:
type: string
AvroExample:
- schemaFormat: application/vnd.apache.avro+json;version=1.9.0
+ schemaFormat: 'application/vnd.apache.avro+json;version=1.9.0'
schema:
- $ref: 'path/to/user-create.avsc/#UserCreate'
+ $ref: './user-create.avsc'
servers:
development:
- host: "{stage}.in.mycompany.com:{port}"
+ host: '{stage}.in.mycompany.com:{port}'
description: RabbitMQ broker
protocol: amqp
protocolVersion: 0-9-1
variables:
stage:
- $ref: "#/components/serverVariables/stage"
+ $ref: '#/components/serverVariables/stage'
port:
- $ref: "#/components/serverVariables/port"
+ $ref: '#/components/serverVariables/port'
serverVariables:
stage:
default: demo
- description: This value is assigned by the service provider, in this example `mycompany.com`
+ description: |
+ This value is assigned by the service provider, in this example
+ `mycompany.com`
port:
- enum: ["5671", "5672"]
- default: "5672"
+ enum:
+ - '5671'
+ - '5672'
+ default: '5672'
channels:
user/signedup:
subscribe:
message:
- $ref: "#/components/messages/userSignUp"
+ $ref: '#/components/messages/userSignUp'
messages:
userSignUp:
summary: Action to sign a user up.
@@ -1756,22 +1832,24 @@ components:
type: object
properties:
applicationInstanceId:
- description: Unique identifier for a given instance of the publishing application
+ description: |
+ Unique identifier for a given instance of the publishing
+ application
type: string
payload:
type: object
properties:
user:
- $ref: "#/components/schemas/userCreate"
+ $ref: '#/components/schemas/userCreate'
signup:
- $ref: "#/components/schemas/signup"
+ $ref: '#/components/schemas/signup'
parameters:
userId:
description: Id of the user.
correlationIds:
default:
description: Default Correlation ID
- location: $message.header#/correlationId
+ location: '$message.header#/correlationId'
messageTraits:
commonHeaders:
headers:
@@ -1818,6 +1896,7 @@ Name | Allowed values | Notes
###### Multi Format Schema Object Example with Avro
+
```yaml
channels:
example:
@@ -1923,6 +2002,7 @@ As such, inline schema definitions, which do not have a given id, _cannot_ be us
###### Primitive Sample
+
```json
{
"type": "string",
@@ -1930,6 +2010,7 @@ As such, inline schema definitions, which do not have a given id, _cannot_ be us
}
```
+
```yaml
type: string
format: email
@@ -1937,6 +2018,7 @@ format: email
###### Simple Model
+
```json
{
"type": "object",
@@ -1959,6 +2041,7 @@ format: email
}
```
+
```yaml
type: object
required:
@@ -1978,6 +2061,7 @@ properties:
For a simple string to string mapping:
+
```json
{
"type": "object",
@@ -1987,6 +2071,7 @@ For a simple string to string mapping:
}
```
+
```yaml
type: object
additionalProperties:
@@ -1995,6 +2080,7 @@ additionalProperties:
For a string to model mapping:
+
```json
{
"type": "object",
@@ -2004,6 +2090,7 @@ For a string to model mapping:
}
```
+
```yaml
type: object
additionalProperties:
@@ -2012,6 +2099,7 @@ additionalProperties:
###### Model with Example
+
```json
{
"type": "object",
@@ -2036,6 +2124,7 @@ additionalProperties:
}
```
+
```yaml
type: object
properties:
@@ -2053,6 +2142,7 @@ examples:
###### Model with Boolean Schemas
+
```json
{
"type": "object",
@@ -2066,6 +2156,7 @@ examples:
}
```
+
```yaml
type: object
required:
@@ -2077,6 +2168,7 @@ properties:
###### Models with Composition
+
```json
{
"schemas": {
@@ -2119,6 +2211,7 @@ properties:
}
```
+
```yaml
schemas:
ErrorModel:
@@ -2146,6 +2239,7 @@ schemas:
###### Models with Polymorphism Support
+
```json
{
"schemas": {
@@ -2239,6 +2333,7 @@ schemas:
}
```
+
```yaml
schemas:
Pet:
@@ -2336,18 +2431,21 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
###### User/Password Authentication Sample
+
```json
{
"type": "userPassword"
}
```
+
```yaml
type: userPassword
```
###### API Key Authentication Sample
+
```json
{
"type": "apiKey",
@@ -2355,6 +2453,7 @@ type: userPassword
}
```
+
```yaml
type: apiKey
in: user
@@ -2362,30 +2461,35 @@ in: user
###### X.509 Authentication Sample
+
```json
{
"type": "X509"
}
```
+
```yaml
type: X509
```
###### End-to-end Encryption Authentication Sample
+
```json
{
"type": "symmetricEncryption"
}
```
+
```yaml
type: symmetricEncryption
```
###### Basic Authentication Sample
+
```json
{
"type": "http",
@@ -2393,6 +2497,7 @@ type: symmetricEncryption
}
```
+
```yaml
type: http
scheme: basic
@@ -2400,6 +2505,7 @@ scheme: basic
###### API Key Sample
+
```json
{
"type": "httpApiKey",
@@ -2408,6 +2514,7 @@ scheme: basic
}
```
+
```yaml
type: httpApiKey
name: api_key
@@ -2416,6 +2523,7 @@ in: header
###### JWT Bearer Sample
+
```json
{
"type": "http",
@@ -2424,6 +2532,7 @@ in: header
}
```
+
```yaml
type: http
scheme: bearer
@@ -2432,6 +2541,7 @@ bearerFormat: JWT
###### Implicit OAuth2 Sample
+
```json
{
"type": "oauth2",
@@ -2450,6 +2560,7 @@ bearerFormat: JWT
}
```
+
```yaml
type: oauth2
flows:
@@ -2464,12 +2575,14 @@ scopes:
###### SASL Sample
+
```json
{
"type": "scramSha512"
}
```
+
```yaml
type: scramSha512
```
@@ -2506,9 +2619,11 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### OAuth Flow Object Examples
-```JSON
+###### clientCredentials Oauth Flow Object Example
+
+
+```json
{
- "authorizationUrl": "https://example.com/api/oauth/dialog",
"tokenUrl": "https://example.com/api/oauth/token",
"availableScopes": {
"write:pets": "modify pets in your account",
@@ -2516,9 +2631,8 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
}
```
-
-```YAML
-authorizationUrl: https://example.com/api/oauth/dialog
+
+```yaml
tokenUrl: https://example.com/api/oauth/token
availableScopes:
write:pets: modify pets in your account
@@ -2542,6 +2656,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
##### Examples
+
```json
{
"description": "Default Correlation ID",
@@ -2549,6 +2664,7 @@ This object MAY be extended with [Specification Extensions](#specificationExtens
}
```
+
```yaml
description: Default Correlation ID
location: $message.header#/correlationId