diff --git a/package-lock.json b/package-lock.json index 92c524ffa..fbf2b89a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7951,6 +7951,10 @@ "resolved": "packages/apidom-ns-json-schema-draft-7", "link": true }, + "node_modules/@swagger-api/apidom-ns-openapi-2": { + "resolved": "packages/apidom-ns-openapi-2", + "link": true + }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { "resolved": "packages/apidom-ns-openapi-3-0", "link": true @@ -34807,6 +34811,19 @@ "stampit": "^4.3.2" } }, + "packages/apidom-ns-openapi-2": { + "version": "0.77.0", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^0.77.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.77.0", + "@types/ramda": "~0.29.3", + "ramda": "~0.29.0", + "ramda-adjunct": "^4.1.1", + "stampit": "^4.3.2" + } + }, "packages/apidom-ns-openapi-3-0": { "name": "@swagger-api/apidom-ns-openapi-3-0", "version": "0.77.0", diff --git a/packages/apidom-ns-openapi-2/.eslintignore b/packages/apidom-ns-openapi-2/.eslintignore new file mode 100644 index 000000000..189000271 --- /dev/null +++ b/packages/apidom-ns-openapi-2/.eslintignore @@ -0,0 +1,9 @@ +/dist +/es +/cjs +/config +/types +/.eslintrc.js +/.nyc_output +/node_modules +/**/*.js diff --git a/packages/apidom-ns-openapi-2/.gitignore b/packages/apidom-ns-openapi-2/.gitignore new file mode 100644 index 000000000..d4c830108 --- /dev/null +++ b/packages/apidom-ns-openapi-2/.gitignore @@ -0,0 +1,6 @@ +/dist +/es +/cjs +/types +/NOTICE +/swagger-api-apidom-ns-openapi-2-*.tgz diff --git a/packages/apidom-ns-openapi-2/.mocharc.json b/packages/apidom-ns-openapi-2/.mocharc.json new file mode 100644 index 000000000..e923c2411 --- /dev/null +++ b/packages/apidom-ns-openapi-2/.mocharc.json @@ -0,0 +1,5 @@ +{ + "recursive": true, + "spec": "test/**/*.ts", + "file": ["test/mocha-bootstrap.cjs"] +} diff --git a/packages/apidom-ns-openapi-2/.npmrc b/packages/apidom-ns-openapi-2/.npmrc new file mode 100644 index 000000000..4b82d2e7b --- /dev/null +++ b/packages/apidom-ns-openapi-2/.npmrc @@ -0,0 +1,2 @@ +save-prefix="=" +save=false diff --git a/packages/apidom-ns-openapi-2/README.md b/packages/apidom-ns-openapi-2/README.md new file mode 100644 index 000000000..711f9d674 --- /dev/null +++ b/packages/apidom-ns-openapi-2/README.md @@ -0,0 +1,214 @@ +# @swagger-api/apidom-ns-openapi-2 + +`@swagger-api/apidom-ns-openapi-2` contains ApiDOM namespace supports following OpenAPI specification versions: + +- [OpenAPI 2.0 specification](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md) + +## Installation + +You can install this package via [npm CLI](https://docs.npmjs.com/cli) by running the following command: + +```sh + $ npm install @swagger-api/apidom-ns-openapi-2 +``` + +## OpenApi 2.0 namespace + +OpenApi 2.0 namespace consists of [number of elements](https://github.com/swagger-api/apidom/tree/main/packages/apidom-ns-openapi-2/src/elements) implemented on top +of [primitive ones](https://github.com/refractproject/minim/tree/master/lib/primitives). + +```js +import { createNamespace } from '@swagger-api/apidom-core'; +import openApi2Namespace from '@swagger-api/apidom-ns-openapi-2'; + +const namespace = createNamespace(openApi2Namespace); + +const objectElement = new namespace.elements.Object(); +const openApiElement = new namespace.elements.Swagger(); +``` + +When namespace instance is created in this way, it will extend the base namespace +with the namespace provided as an argument. + +Elements from the namespace can also be used directly by importing them. + +```js +import { SwaggerElement, InfoElement } from '@swagger-api/apidom-ns-openapi-2'; + +const infoElement = new InfoElement(); +const swaggerElement = new SwaggerElement(); +``` + +## Predicates + +This package exposes [predicates](https://github.com/swagger-api/apidom/blob/main/packages/apidom-ns-openapi-2/src/predicates.ts) +for all higher order elements that are part of this namespace. + +```js +import { isSwaggerElement, SwaggerElement } from '@swagger-api/apidom-ns-openapi-2'; + +const swaggerElement = new SwaggerElement(); + +isSwaggerElement(swaggerElement); // => true +``` + +## Traversal + +Traversing ApiDOM in this namespace is possible by using `visit` function from `apidom` package. +This package comes with its own [keyMap](https://github.com/swagger-api/apidom/blob/main/packages/apidom-ns-openapi-2/src/traversal/visitor.ts#L11) and [nodeTypeGetter](https://github.com/swagger-api/apidom/blob/main/packages/apidom-ns-openapi-2/src/traversal/visitor.ts#L4). +To learn more about these `visit` configuration options please refer to [@swagger-api/apidom-ast documentation](https://github.com/swagger-api/apidom/blob/main/packages/apidom-ast/README.md#visit). + +```js +import { visit } from '@swagger-api/apidom-core'; +import { SwaggerElement, keyMap, getNodeType } from '@swagger-api/apidom-ns-openapi-2'; + +const element = new SwaggerElement(); + +const visitor = { + SwaggerElement(swaggerElement) { + console.dir(swaggerElement); + }, +}; + +visit(element, visitor, { keyMap, nodeTypeGetter: getNodeType }); +``` + +## Refractors + +Refractor is a special layer inside the namespace that can transform either JavaScript structures +or generic ApiDOM structures into structures built from elements of this namespace. + +**Refracting JavaScript structures**: + +```js +import { InfoElement } from '@swagger-api/apidom-ns-openapi-2'; + +const object = { + title: 'my title', + description: 'my description', + version: '0.1.0', +}; + +InfoElement.refract(object); // => InfoElement({ title, description, version }) +``` + +**Refracting generic ApiDOM structures**: + +```js +import { ObjectElement } from '@swagger-api/apidom-core'; +import { InfoElement } from '@swagger-api/apidom-ns-openapi-2'; + +const objectElement = new ObjectElement({ + title: 'my title', + description: 'my description', + version: '0.1.0', +}); + +InfoElement.refract(objectElement); // => InfoElement({ title = 'my title', description = 'my description', version = '0.1.0' }) +``` + +### Refractor plugins + +Refractors can accept plugins as a second argument of refract static method. + +```js +import { ObjectElement } from '@swagger-api/apidom-core'; +import { InfoElement } from '@swagger-api/apidom-ns-openapi-2'; + +const objectElement = new ObjectElement({ + title: 'my title', + description: 'my description', + version: '0.1.0', +}); + +const plugin = ({ predicates, namespace }) => ({ + name: 'plugin', + pre() { + console.dir('runs before traversal'); + }, + visitor: { + InfoElement(infoElement) { + infoElement.version = '2.0.0'; + }, + }, + post() { + console.dir('runs after traversal'); + }, +}); + +InfoElement.refract(objectElement, { plugins: [plugin] }); // => InfoElement({ title = 'my title', description = 'my description', version = '2.0.0' }) +``` + +You can define as many plugins as needed to enhance the resulting namespaced ApiDOM structure. +If multiple plugins with the same visitor method are defined, they run in parallel (just like in Babel). + +#### Replace Empty Element plugin + +This plugin is specific to YAML 1.2 format, which allows defining key-value pairs with empty key, +empty value, or both. If the value is not provided in YAML format, this plugin compensates for +this missing value with the most appropriate semantic element type. + +```js +import { parse } from '@swagger-api/apidom-parser-adapter-yaml-1-2'; +import { refractorPluginReplaceEmptyElement, SwaggerElement } from '@swagger-api/apidom-ns-openapi-2'; + +const yamlDefinition = ` +openapi: 2.0 +info: +`; +const apiDOM = await parse(yamlDefinition); +const swaggerElement = SwaggerElement.refract(apiDOM.result, { + plugins: [refractorPluginReplaceEmptyElement()], +}); + +// => +// (SwaggerElement +// (MemberElement +// (StringElement) +// (OpenapiElement)) +// (MemberElement +// (StringElement) +// (InfoElement))) + +// => without the plugin the result would be as follows: +// (SwaggerElement +// (MemberElement +// (StringElement) +// (OpenapiElement)) +// (MemberElement +// (StringElement) +// (StringElement))) +``` + +## Implementation progress + +Only fully implemented specification objects should be checked here. + +- [ ] [Swagger Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-swagger-object) +- [ ] [Info Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-info-object) +- [ ] [Contact Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-contact-object) +- [ ] [License Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-license-object) +- [ ] [Paths Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-paths-object) +- [ ] [Path Item Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-path-item-object) +- [ ] [Operation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-operation-object) +- [ ] [External Documentation Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-external-documentation-object) +- [ ] [Parameter Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-parameter-object) +- [ ] [Items Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-items-object) +- [ ] [Responses Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-responses-object) +- [ ] [Response Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-response-object) +- [ ] [Headers Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-headers-object) +- [ ] [Example Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-example-object) +- [ ] [Header Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-header-object) +- [ ] [Tag Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-tag-object) +- [ ] [Reference Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-reference-object) +- [ ] [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-schema-object) +- [ ] [XML Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-xml-object) +- [ ] [Definitions Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-definitions-object) +- [ ] [Parameters Definitions Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-paramters-definitions-object) +- [ ] [Responses Definitions Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-responses-definitions-object) +- [ ] [Security Definitions Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-security-definitions-object) +- [ ] [Security Scheme Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-security-scheme-object) +- [ ] [Scopes Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-scopes-object) +- [ ] [Security Requirement Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-security-requirement-object) +- [ ] [Specification extensions](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#user-content-specification-extensions) + diff --git a/packages/apidom-ns-openapi-2/config/rollup/types.dist.js b/packages/apidom-ns-openapi-2/config/rollup/types.dist.js new file mode 100644 index 000000000..308fe6535 --- /dev/null +++ b/packages/apidom-ns-openapi-2/config/rollup/types.dist.js @@ -0,0 +1,11 @@ +import dts from 'rollup-plugin-dts'; + +const config = [ + { + input: './types/index.d.ts', + output: [{ file: 'types/dist.d.ts', format: 'es' }], + plugins: [dts()], + }, +]; + +export default config; diff --git a/packages/apidom-ns-openapi-2/config/webpack/browser.config.js b/packages/apidom-ns-openapi-2/config/webpack/browser.config.js new file mode 100644 index 000000000..4555f23cd --- /dev/null +++ b/packages/apidom-ns-openapi-2/config/webpack/browser.config.js @@ -0,0 +1,70 @@ +import path from 'node:path'; +import { nonMinimizeTrait, minimizeTrait } from './traits.config.js'; + +const browser = { + mode: 'production', + entry: ['./src/index.ts'], + target: 'web', + performance: { + maxEntrypointSize: 1800000, + maxAssetSize: 1800000, + }, + output: { + path: path.resolve('./dist'), + filename: 'apidom-ns-openapi-2.browser.js', + libraryTarget: 'umd', + library: 'apidomNsOpenApi2', + }, + 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', + output: { + path: path.resolve('./dist'), + filename: 'apidom-ns-openapi-2.browser.min.js', + libraryTarget: 'umd', + library: 'apidomNsOpenApi2', + }, + 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]; diff --git a/packages/apidom-ns-openapi-2/config/webpack/traits.config.js b/packages/apidom-ns-openapi-2/config/webpack/traits.config.js new file mode 100644 index 000000000..904352117 --- /dev/null +++ b/packages/apidom-ns-openapi-2/config/webpack/traits.config.js @@ -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, + }, + }, + }), + ], + }, +}; diff --git a/packages/apidom-ns-openapi-2/declaration.tsconfig.json b/packages/apidom-ns-openapi-2/declaration.tsconfig.json new file mode 100644 index 000000000..5697fa3e8 --- /dev/null +++ b/packages/apidom-ns-openapi-2/declaration.tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "exclude": [ + "test/**/*" + ], + "compilerOptions": { + "declaration": true, + "declarationDir": "types", + "noEmit": false, + "emitDeclarationOnly": true + } +} diff --git a/packages/apidom-ns-openapi-2/package.json b/packages/apidom-ns-openapi-2/package.json new file mode 100644 index 000000000..8ca4908d0 --- /dev/null +++ b/packages/apidom-ns-openapi-2/package.json @@ -0,0 +1,63 @@ +{ + "name": "@swagger-api/apidom-ns-openapi-2", + "version": "0.77.0", + "description": "OpenAPI 2.0 namespace for ApiDOM.", + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + }, + "private": true, + "type": "module", + "sideEffects": [ + "./es/refractor/registration.mjs", + "./cjs/refractor/registration.cjs" + ], + "unpkg": "./dist/apidom-ns-openapi-2.browser.min.js", + "main": "./cjs/index.cjs", + "exports": { + "types": "./types/dist.d.ts", + "import": "./es/index.mjs", + "require": "./cjs/index.cjs" + }, + "types": "./types/dist.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 es --extensions '.ts' --out-file-extension '.mjs' --root-mode 'upward'", + "build:cjs": "cross-env BABEL_ENV=cjs babel src --out-dir cjs --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 ./es ./cjs ./dist ./types", + "test": "cross-env NODE_ENV=test BABEL_ENV=cjs mocha", + "test:update-snapshots": "cross-env UPDATE_SNAPSHOT=1 BABEL_ENV=cjs mocha", + "typescript:check-types": "tsc --noEmit", + "typescript:declaration": "tsc -p declaration.tsconfig.json && rollup -c config/rollup/types.dist.js", + "prepack": "copyfiles -u 3 ../../LICENSES/* LICENSES && copyfiles -u 2 ../../NOTICE .", + "postpack": "rimraf NOTICE LICENSES" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/swagger-api/apidom.git" + }, + "author": "Vladimir Gorej", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^0.77.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.77.0", + "@types/ramda": "~0.29.3", + "ramda": "~0.29.0", + "ramda-adjunct": "^4.1.1", + "stampit": "^4.3.2" + }, + "files": [ + "cjs/", + "dist/", + "es/", + "types/dist.d.ts", + "LICENSES", + "NOTICE", + "README.md", + "CHANGELOG.md" + ] +} diff --git a/packages/apidom-ns-openapi-2/src/index.ts b/packages/apidom-ns-openapi-2/src/index.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/packages/apidom-ns-openapi-2/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/apidom-ns-openapi-2/test/.eslintrc b/packages/apidom-ns-openapi-2/test/.eslintrc new file mode 100644 index 000000000..83e7c4080 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/.eslintrc @@ -0,0 +1,41 @@ +{ + "env": { + "mocha": true + }, + "globals": { + "document": true + }, + "plugins": [ + "mocha" + ], + "rules": { + "no-void": 0, + "no-underscore-dangle": 0, + "func-names": 0, + "prefer-arrow-callback": 0, + "no-array-constructor": 0, + "prefer-rest-params": 0, + "no-new-wrappers": 0, + "mocha/no-skipped-tests": 2, + "mocha/handle-done-callback": 2, + "mocha/valid-suite-description": 2, + "mocha/no-mocha-arrows": 2, + "mocha/no-hooks-for-single-case": 2, + "mocha/no-sibling-hooks": 2, + "mocha/no-top-level-hooks": 2, + "mocha/no-identical-title": 2, + "mocha/no-nested-tests": 2, + "mocha/no-exclusive-tests": 2, + "max-classes-per-file": 0, + "@typescript-eslint/no-unused-expressions": 0 + }, + "overrides": [{ + "files": ["mocha-bootstrap.cjs"], + "parserOptions": { + "sourceType": "script" + }, + "rules": { + "@typescript-eslint/no-var-requires": 0 + } + }] +} diff --git a/packages/apidom-ns-openapi-2/test/mocha-bootstrap.cjs b/packages/apidom-ns-openapi-2/test/mocha-bootstrap.cjs new file mode 100644 index 000000000..d98d06451 --- /dev/null +++ b/packages/apidom-ns-openapi-2/test/mocha-bootstrap.cjs @@ -0,0 +1,11 @@ +require('@babel/register')({ extensions: ['.js', '.ts'], rootMode: 'upward' }); + +const chai = require('chai'); +const { jestSnapshotPlugin, addSerializer } = require('mocha-chai-jest-snapshot'); + +const jestApiDOMSerializer = require('../../../scripts/jest-serializer-apidom.cjs'); +const jestStringSerializer = require('../../../scripts/jest-serializer-string.cjs'); + +chai.use(jestSnapshotPlugin()); +addSerializer(jestApiDOMSerializer); +addSerializer(jestStringSerializer); diff --git a/packages/apidom-ns-openapi-2/tsconfig.json b/packages/apidom-ns-openapi-2/tsconfig.json new file mode 100644 index 000000000..4081635a0 --- /dev/null +++ b/packages/apidom-ns-openapi-2/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "include": [ + "src/**/*", + "test/**/*" + ] +} diff --git a/packages/apidom-ns-openapi-3-0/README.md b/packages/apidom-ns-openapi-3-0/README.md index 5985f518a..ee468b198 100644 --- a/packages/apidom-ns-openapi-3-0/README.md +++ b/packages/apidom-ns-openapi-3-0/README.md @@ -52,7 +52,7 @@ import { isOpenApi3_0Element, OpenApi3_0Element } from '@swagger-api/apidom-ns-o const openApiElement = new OpenApi3_0Element(); -OpenApi3_0Element(openApiElement); // => true +isOpenApi3_0Element(openApiElement); // => true ``` ## Traversal @@ -160,7 +160,7 @@ openapi: 3.0.3 info: `; const apiDOM = await parse(yamlDefinition); -const apenApiElement = OpenApi3_0Element.refract(apiDOM.result, { +const openApiElement = OpenApi3_0Element.refract(apiDOM.result, { plugins: [refractorPluginReplaceEmptyElement()], }); diff --git a/packages/apidom-ns-openapi-3-0/package.json b/packages/apidom-ns-openapi-3-0/package.json index c60069475..c2004e588 100644 --- a/packages/apidom-ns-openapi-3-0/package.json +++ b/packages/apidom-ns-openapi-3-0/package.json @@ -1,7 +1,7 @@ { "name": "@swagger-api/apidom-ns-openapi-3-0", "version": "0.77.0", - "description": "Parser adapter for parsing JSON documents into OpenAPI 3.0.x namespace.", + "description": "OpenAPI 3.0.x namespace for ApiDOM.", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/apidom-ns-openapi-3-1/package.json b/packages/apidom-ns-openapi-3-1/package.json index 4ab3ac378..cc4d6adeb 100644 --- a/packages/apidom-ns-openapi-3-1/package.json +++ b/packages/apidom-ns-openapi-3-1/package.json @@ -1,7 +1,7 @@ { "name": "@swagger-api/apidom-ns-openapi-3-1", "version": "0.77.0", - "description": "Parser adapter for parsing JSON documents into AsyncAPI 2.x.y namespace.", + "description": "OpenAPI 3.1.x namespace for ApiDOM.", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org" diff --git a/packages/apidom-ns-workflows-1/package.json b/packages/apidom-ns-workflows-1/package.json index 9a145084e..447c1ef82 100644 --- a/packages/apidom-ns-workflows-1/package.json +++ b/packages/apidom-ns-workflows-1/package.json @@ -1,7 +1,7 @@ { "name": "@swagger-api/apidom-ns-workflows-1", "version": "0.68.1", - "description": "Parser adapter for parsing JSON documents into Workflows 1.x.y namespace.", + "description": "Workflows Specification 1.0.0 namespace for ApiDOM.", "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org"