Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ca0487f
feat: add package for apidom-ns-async-api-3
ShikhaSaboo Oct 19, 2025
f4da8c8
feat: async v3 refractor specification
lukaszzazulak Oct 20, 2025
35a3a8b
feat(ls): async v3 refractor specification
lukaszzazulak Oct 20, 2025
e058a6f
feat: async v3 refractor specification
lukaszzazulak Oct 20, 2025
03d731d
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
410875d
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
33995da
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
baa0c78
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
9540dad
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
7eb7bf1
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
71cc9fa
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
c28df59
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
a262c01
feat: async v3 binding elements
lukaszzazulak Oct 21, 2025
395cae6
feat: async v3 license, contact visitor
lukaszzazulak Oct 21, 2025
ced8787
feat: async v3 Servers hint
lukaszzazulak Oct 21, 2025
dbf0d83
feat: add visitors
ShikhaSaboo Oct 27, 2025
2f9420b
feat: add missing visitors for async-api-3
ShikhaSaboo Oct 28, 2025
1488b4a
Merge branch 'main' into feat/OSS-247-namespace-for-apidom-ns-async-a…
ShikhaSaboo Oct 29, 2025
909e34e
feat: add specification
ShikhaSaboo Oct 29, 2025
6b6a72e
feat: add missing refractor files
ShikhaSaboo Nov 3, 2025
172a537
feat: update namespace and public tags
ShikhaSaboo Nov 4, 2025
7a81ba0
feat: fix lint issues
ShikhaSaboo Nov 4, 2025
b072f5f
feat: fix eslint issue
ShikhaSaboo Nov 4, 2025
d2854f8
chore: resolve review comments
ShikhaSaboo Nov 6, 2025
62d11cf
chore: update ts type
ShikhaSaboo Nov 7, 2025
19980fd
test(ns-asyncapi-3): add tests for AsyncAPI 3 namespace (#5039)
glowcloud Nov 7, 2025
ec9471c
Merge branch 'main' into feat/OSS-247-namespace-for-apidom-ns-async-a…
ShikhaSaboo Nov 10, 2025
b66b50a
chore: update dependency version
ShikhaSaboo Nov 10, 2025
33a7028
chore: fix lint issue
ShikhaSaboo Nov 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 18 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 28 additions & 28 deletions packages/apidom-ns-asyncapi-2/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export type { Format } from './media-types.ts';
// eslint-disable-next-line no-restricted-exports
export { default } from './namespace.ts';

export type { default as specificationObj } from './refractor/specification.ts';
export { default as specificationObj } from './refractor/specification.ts';

export { default as refractorPluginReplaceEmptyElement } from './refractor/plugins/replace-empty-element.ts';

Expand Down Expand Up @@ -646,8 +646,8 @@ export type {
PropertiesVisitorOptions as SchemaPropertiesVisitorOptions,
JSONSchemaPropertiesVisitor,
} from './refractor/visitors/async-api-2/schema/PropertiesVisitor.ts';
export { default as SchemaOrReferenceVisitor } from './refractor/visitors/async-api-2/schema/SchemaOrReferenceVisitor.ts';
export type {
default as SchemaOrReferenceVisitor,
SchemaOrReferenceVisitorOptions,
JSONSchemaOrJSONReferenceVisitor,
} from './refractor/visitors/async-api-2/schema/SchemaOrReferenceVisitor.ts';
Expand Down Expand Up @@ -859,29 +859,29 @@ export {
WebSocketServerBindingElement,
} from './refractor/registration.ts';

export type { default as ChannelItemsServersElement } from './elements/nces/ChannelItemsServers.ts';
export type { default as ComponentsChannelBindingsElement } from './elements/nces/ComponentsChannelBindings.ts';
export type { default as ComponentsChannelsElement } from './elements/nces/ComponentsChannels.ts';
export type { default as ComponentsCorrelationIDsElement } from './elements/nces/ComponentsCorrelationIDs.ts';
export type { default as ComponentsMessageBindingsElement } from './elements/nces/ComponentsMessageBindings.ts';
export type { default as ComponentsMessagesElement } from './elements/nces/ComponentsMessages.ts';
export type { default as ComponentsMessageTraitsElement } from './elements/nces/ComponentsMessageTraits.ts';
export type { default as ComponentsOperationBindingsElement } from './elements/nces/ComponentsOperationBindings.ts';
export type { default as ComponentsOperationTraitsElement } from './elements/nces/ComponentsOperationTraits.ts';
export type { default as ComponentsParametersElement } from './elements/nces/ComponentsParameters.ts';
export type { default as ComponentsSchemasElement } from './elements/nces/ComponentsSchemas.ts';
export type { default as ComponentsSecuritySchemesElement } from './elements/nces/ComponentsSecuritySchemes.ts';
export type { default as ComponentsServerBindingsElement } from './elements/nces/ComponentsServerBindings.ts';
export type { default as ComponentsServersElement } from './elements/nces/ComponentsServers.ts';
export type { default as ComponentsServerVariablesElement } from './elements/nces/ComponentsServerVariables.ts';
export type { default as MessageExamplesElement } from './elements/nces/MessageExamples.ts';
export type { default as MessageTraitExamplesElement } from './elements/nces/MessageTraitExamples.ts';
export type { default as MessageTraitsElement } from './elements/nces/MessageTraits.ts';
export type { default as OAuthFlowScopesElement } from './elements/nces/OAuthFlowScopes.ts';
export type { default as OperationMessageElement } from './elements/nces/OperationMessage.ts';
export type { default as OperationMessageMapElement } from './elements/nces/OperationMessageMap.ts';
export type { default as OperationSecurityElement } from './elements/nces/OperationSecurity.ts';
export type { default as OperationTraitsElement } from './elements/nces/OperationTraits.ts';
export type { default as OperationTraitSecurityElement } from './elements/nces/OperationTraitSecurity.ts';
export type { default as ServerSecurityElement } from './elements/nces/ServerSecurity.ts';
export type { default as ServerVariablesElement } from './elements/nces/ServerVariables.ts';
export { default as ChannelItemsServersElement } from './elements/nces/ChannelItemsServers.ts';
export { default as ComponentsChannelBindingsElement } from './elements/nces/ComponentsChannelBindings.ts';
export { default as ComponentsChannelsElement } from './elements/nces/ComponentsChannels.ts';
export { default as ComponentsCorrelationIDsElement } from './elements/nces/ComponentsCorrelationIDs.ts';
export { default as ComponentsMessageBindingsElement } from './elements/nces/ComponentsMessageBindings.ts';
export { default as ComponentsMessagesElement } from './elements/nces/ComponentsMessages.ts';
export { default as ComponentsMessageTraitsElement } from './elements/nces/ComponentsMessageTraits.ts';
export { default as ComponentsOperationBindingsElement } from './elements/nces/ComponentsOperationBindings.ts';
export { default as ComponentsOperationTraitsElement } from './elements/nces/ComponentsOperationTraits.ts';
export { default as ComponentsParametersElement } from './elements/nces/ComponentsParameters.ts';
export { default as ComponentsSchemasElement } from './elements/nces/ComponentsSchemas.ts';
export { default as ComponentsSecuritySchemesElement } from './elements/nces/ComponentsSecuritySchemes.ts';
export { default as ComponentsServerBindingsElement } from './elements/nces/ComponentsServerBindings.ts';
export { default as ComponentsServersElement } from './elements/nces/ComponentsServers.ts';
export { default as ComponentsServerVariablesElement } from './elements/nces/ComponentsServerVariables.ts';
export { default as MessageExamplesElement } from './elements/nces/MessageExamples.ts';
export { default as MessageTraitsElement } from './elements/nces/MessageTraits.ts';
export { default as MessageTraitExamplesElement } from './elements/nces/MessageTraitExamples.ts';
export { default as OAuthFlowScopesElement } from './elements/nces/OAuthFlowScopes.ts';
export { default as OperationMessageElement } from './elements/nces/OperationMessage.ts';
export { default as OperationMessageMapElement } from './elements/nces/OperationMessageMap.ts';
export { default as OperationSecurityElement } from './elements/nces/OperationSecurity.ts';
export { default as ServerVariablesElement } from './elements/nces/ServerVariables.ts';
export { default as OperationTraitsElement } from './elements/nces/OperationTraits.ts';
export { default as OperationTraitSecurityElement } from './elements/nces/OperationTraitSecurity.ts';
export { default as ServerSecurityElement } from './elements/nces/ServerSecurity.ts';
7 changes: 7 additions & 0 deletions packages/apidom-ns-asyncapi-3/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/src/**/*.mjs
/src/**/*.cjs
/test/**/*.mjs
/dist
/types
/NOTICE
/swagger-api-apidom-ns-asyncapi-3-*.tgz
8 changes: 8 additions & 0 deletions packages/apidom-ns-asyncapi-3/.mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"extensions": ["ts"],
"loader": "ts-node/esm",
"recursive": true,
"spec": "test/**/*.ts",
"file": ["test/mocha-bootstrap.ts"],
"ignore": ["test/perf/**/*.ts"]
}
5 changes: 5 additions & 0 deletions packages/apidom-ns-asyncapi-3/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# apidom-ns-asyncapi-3

AsyncAPI 3.x.y namespace for ApiDOM.

This is a starter scaffold. Implement element classes, predicates and refractor visitors following the pattern from `apidom-ns-asyncapi-2`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"extends": "../../../../api-extractor.json"
}
75 changes: 75 additions & 0 deletions packages/apidom-ns-asyncapi-3/config/webpack/browser.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import path from 'node:path';

import { nonMinimizeTrait, minimizeTrait } from './traits.config.js';

const browser = {
mode: 'production',
entry: ['./src/index.ts'],
target: 'web',
performance: {
maxEntrypointSize: 2200000,
maxAssetSize: 2200000,
},
output: {
path: path.resolve('./dist'),
filename: 'apidom-ns-asyncapi-3.browser.js',
libraryTarget: 'umd',
library: 'apidomNsAsyncApi3',
},
resolve: {
extensions: ['.ts', '.mjs', '.js', '.json'],
},
module: {
rules: [
{
test: /\.(ts|js)?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
babelrc: true,
rootMode: 'upward',
},
},
},
],
},
...nonMinimizeTrait,
};

const browserMin = {
mode: 'production',
entry: ['./src/index.ts'],
target: 'web',
performance: {
maxEntrypointSize: 310000,
maxAssetSize: 310000,
},
output: {
path: path.resolve('./dist'),
filename: 'apidom-ns-asyncapi-3.browser.min.js',
libraryTarget: 'umd',
library: 'apidomNsAsyncApi3',
},
resolve: {
extensions: ['.ts', '.mjs', '.js', '.json'],
},
module: {
rules: [
{
test: /\.(ts|js)?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
babelrc: true,
rootMode: 'upward',
},
},
},
],
},
...minimizeTrait,
};

export default [browser, browserMin];
32 changes: 32 additions & 0 deletions packages/apidom-ns-asyncapi-3/config/webpack/traits.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import webpack from 'webpack';
import TerserPlugin from 'terser-webpack-plugin';

export const nonMinimizeTrait = {
optimization: {
minimize: false,
usedExports: false,
concatenateModules: false,
},
};

export const minimizeTrait = {
plugins: [
new webpack.LoaderOptionsPlugin({
minimize: true,
}),
],
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
warnings: false,
},
output: {
comments: false,
},
},
}),
],
},
};
58 changes: 58 additions & 0 deletions packages/apidom-ns-asyncapi-3/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"name": "@swagger-api/apidom-ns-asyncapi-3",
"version": "1.0.0-beta.0",
"description": "AsyncAPI 3.x.y namespace for ApiDOM.",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org"
},
"type": "module",
"sideEffects": [],
"main": "./src/index.cjs",
"exports": {
"types": "./types/apidom-ns-asyncapi-3.d.ts",
"import": "./src/index.mjs",
"require": "./src/index.cjs"
},
"types": "./types/apidom-ns-asyncapi-3.d.ts",
"scripts": {
"build": "npm run clean && run-p --max-parallel ${CPU_CORES:-2} typescript:declaration build:es build:cjs build:umd:browser",
"build:es": "cross-env BABEL_ENV=es babel src --out-dir src --extensions '.ts' --out-file-extension '.mjs' --root-mode 'upward'",
"build:cjs": "cross-env BABEL_ENV=cjs babel src --out-dir src --extensions '.ts' --out-file-extension '.cjs' --root-mode 'upward'",
"build:umd:browser": "cross-env BABEL_ENV=browser webpack --config config/webpack/browser.config.js --progress",
"lint": "eslint ./",
"lint:fix": "eslint ./ --fix",
"clean": "rimraf --glob 'src/**/*.mjs' 'src/**/*.cjs' ./dist ./types",
"test": "NODE_ENV=test ts-mocha --exit",
"test:update-snapshots": "cross-env UPDATE_SNAPSHOT=1 BABEL_ENV=cjs mocha",
"perf": "cross-env BABEL_ENV=es babel ./test/perf --out-dir ./test/perf --extensions '.ts' --out-file-extension '.mjs' --root-mode 'upward' && cross-env NODE_ENV=test node ./test/perf/index.mjs",
"perf:visitor-shortcut": "cross-env BABEL_ENV=es babel ./test/perf/visitor-shortcut.ts --out-file ./test/perf/visitor-shortcut.mjs --root-mode 'upward' && cross-env NODE_ENV=test node ./test/perf/visitor-shortcut.mjs",
"typescript:check-types": "tsc --noEmit && tsc -p ./test/tsconfig.json --noEmit",
"typescript:declaration": "tsc -p tsconfig.declaration.json && api-extractor run -l -c ./config/api-extractor/api-extractor.json 2>&1 | shx grep -v 'Visitor_base'"
},
"repository": {
"type": "git",
"url": "git+https://github.com/swagger-api/apidom.git"
},
"author": "apidom team",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-rc.3",
"@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-rc.3",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
"ts-mixer": "^6.0.3"
},
"files": [
"src/**/*.mjs",
"src/**/*.cjs",
"dist/",
"types/apidom-ns-asyncapi-3.d.ts",
"LICENSES",
"NOTICE",
"README.md",
"CHANGELOG.md"
]
}
47 changes: 47 additions & 0 deletions packages/apidom-ns-asyncapi-3/src/elements/AsyncApi3.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { Attributes, Meta } from '@swagger-api/apidom-core';
import { UnsupportedOperationError } from '@swagger-api/apidom-error';
import {
ExternalDocumentationElement,
AsyncApi2Element,
TagsElement,
} from '@swagger-api/apidom-ns-asyncapi-2';

import OperationsElement from './Operations.ts';

/* eslint-disable class-methods-use-this */

/**
* @public
*/
class AsyncApi3 extends AsyncApi2Element {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'asyncApi3';
}

get tags(): TagsElement | undefined {
throw new UnsupportedOperationError('tags keyword has been moved to info');
}

set tags(tags: TagsElement | undefined) {
throw new UnsupportedOperationError('tags keyword has been moved to info');
}

get externalDocs(): ExternalDocumentationElement | undefined {
throw new UnsupportedOperationError('externalDocs keyword has been moved to info.');
}

set externalDocs(externalDocs: ExternalDocumentationElement | undefined) {
throw new UnsupportedOperationError('externalDocs keyword has been moved to info.');
}

get operations(): OperationsElement | undefined {
return this.get('operations');
}

set operations(operations: OperationsElement | undefined) {
this.set('operations', operations);
}
}

export default AsyncApi3;
8 changes: 8 additions & 0 deletions packages/apidom-ns-asyncapi-3/src/elements/AsyncApiVersion.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { AsyncApiVersionElement } from '@swagger-api/apidom-ns-asyncapi-2';

/**
* @public
*/
class AsyncApiVersion extends AsyncApiVersionElement {}

export default AsyncApiVersion;
Loading
Loading