@ebarahona/loopback-openapi-v3 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +132 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/keys.d.ts +6 -0
- package/dist/keys.js +10 -0
- package/dist/keys.js.map +1 -0
- package/dist/openapi-version.component.d.ts +4 -0
- package/dist/openapi-version.component.js +18 -0
- package/dist/openapi-version.component.js.map +1 -0
- package/dist/openapi-version.enhancer.d.ts +8 -0
- package/dist/openapi-version.enhancer.js +46 -0
- package/dist/openapi-version.enhancer.js.map +1 -0
- package/dist/transform.d.ts +19 -0
- package/dist/transform.js +500 -0
- package/dist/transform.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +72 -0
- package/src/__tests__/openapi-version.enhancer.spec.ts +456 -0
- package/src/__tests__/transform.spec.ts +879 -0
- package/src/index.ts +10 -0
- package/src/keys.ts +9 -0
- package/src/openapi-version.component.ts +27 -0
- package/src/openapi-version.enhancer.ts +61 -0
- package/src/transform.ts +702 -0
- package/src/types.ts +20 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ed Barahona
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# @ebarahona/loopback-openapi-v3
|
|
2
|
+
|
|
3
|
+
OpenAPI version compatibility enhancer for LoopBack 4. Supports emitting OpenAPI Specification (OAS) 3.0.x, 3.1.x, and 3.2.x specs from LoopBack-generated OpenAPI output, with nullable conversion and lossy downgrade diagnostics.
|
|
4
|
+
|
|
5
|
+
LoopBack 4 generates OpenAPI 3.0 specs by default. This component transforms the output to OpenAPI 3.1 or 3.2, enabling JSON Schema compatibility (3.1) and SSE streaming support (3.2). It also handles downgrading from higher versions to lower ones for backward compatibility.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @ebarahona/loopback-openapi-v3
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import {OpenApiVersionComponent, OpenApiVersionBindings} from '@ebarahona/loopback-openapi-v3';
|
|
17
|
+
|
|
18
|
+
const app = new RestApplication();
|
|
19
|
+
app.component(OpenApiVersionComponent);
|
|
20
|
+
app.bind(OpenApiVersionBindings.CONFIG).to({version: '3.1.0'});
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The spec served at `/openapi.json` will output `"openapi": "3.1.0"`.
|
|
24
|
+
|
|
25
|
+
## Configuration
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
app.bind(OpenApiVersionBindings.CONFIG).to({
|
|
29
|
+
// Target version: '3.0.0' (default, no-op), '3.1.0', or '3.2.0'
|
|
30
|
+
version: '3.1.0',
|
|
31
|
+
|
|
32
|
+
// Transform nullable fields from 3.0 format to 3.1+ format
|
|
33
|
+
// { type: 'string', nullable: true } -> { type: ['string', 'null'] }
|
|
34
|
+
// Defaults to true for 3.1+
|
|
35
|
+
transformNullable: true,
|
|
36
|
+
});
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Supported Versions
|
|
40
|
+
|
|
41
|
+
| Version | Status | Spec |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| 3.0.0 | Default (no-op) | [spec.openapis.org/oas/v3.0.3](https://spec.openapis.org/oas/v3.0.3.html) |
|
|
44
|
+
| 3.1.0 | Supported | [spec.openapis.org/oas/v3.1.0](https://spec.openapis.org/oas/v3.1.0.html) |
|
|
45
|
+
| 3.2.0 | Supported | [spec.openapis.org/oas/v3.2.0](https://spec.openapis.org/oas/v3.2.0.html) |
|
|
46
|
+
|
|
47
|
+
## How It Works
|
|
48
|
+
|
|
49
|
+
The component registers an OAS Enhancer that runs once at boot after LoopBack assembles the spec. The original spec is deep-cloned to prevent mutation. The transformed spec is cached by LoopBack and served on subsequent requests without re-processing.
|
|
50
|
+
|
|
51
|
+
### Upgrades (3.0 -> 3.1/3.2)
|
|
52
|
+
|
|
53
|
+
- `nullable: true` transformed to type arrays (`{ type: ['string', 'null'] }`)
|
|
54
|
+
- Handles nullable with `oneOf`, `anyOf`, `allOf`, and no type
|
|
55
|
+
|
|
56
|
+
### Downgrades (3.2 -> 3.0/3.1)
|
|
57
|
+
|
|
58
|
+
Downgrades are lossy. Features that have no equivalent in lower versions are stripped with diagnostic warnings.
|
|
59
|
+
|
|
60
|
+
**3.1 features stripped when targeting 3.0:**
|
|
61
|
+
|
|
62
|
+
| Feature | Field |
|
|
63
|
+
|---|---|
|
|
64
|
+
| JSON Schema dialect | `jsonSchemaDialect` |
|
|
65
|
+
| Webhooks | `webhooks` |
|
|
66
|
+
| Reusable path items | `components.pathItems` |
|
|
67
|
+
| SPDX license identifier | `info.license.identifier` |
|
|
68
|
+
| Type arrays | `type: ['string', 'null']` reverted to `nullable: true` |
|
|
69
|
+
|
|
70
|
+
**3.2 features stripped when targeting 3.0 or 3.1:**
|
|
71
|
+
|
|
72
|
+
| Feature | Field |
|
|
73
|
+
|---|---|
|
|
74
|
+
| Document identity | `$self` |
|
|
75
|
+
| Server name | `servers[].name` |
|
|
76
|
+
| QUERY HTTP method | `paths.*. query` |
|
|
77
|
+
| Additional HTTP methods | `paths.*.additionalOperations` |
|
|
78
|
+
| Tag nesting | `tags[].summary`, `.parent`, `.kind` |
|
|
79
|
+
| Querystring parameter | `parameters[].in: 'querystring'` converted to `'query'` |
|
|
80
|
+
| OAuth2 device flow | `securitySchemes.*.flows.device` |
|
|
81
|
+
| SSE streaming schema | `content.*.itemSchema` |
|
|
82
|
+
| SSE streaming encoding | `content.*.itemEncoding`, `.prefixEncoding` |
|
|
83
|
+
| Example formats | `examples.*.dataValue`, `.serializedValue` |
|
|
84
|
+
| Reusable media types | `components.mediaTypes` |
|
|
85
|
+
| XML text nodes | `xml.text` |
|
|
86
|
+
|
|
87
|
+
### Diagnostics
|
|
88
|
+
|
|
89
|
+
The transformer emits warnings for every stripped feature:
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import {transformOpenApiSpec} from '@ebarahona/loopback-openapi-v3';
|
|
93
|
+
|
|
94
|
+
const {spec, warnings} = transformOpenApiSpec(inputSpec, {version: '3.0.0'});
|
|
95
|
+
for (const w of warnings) {
|
|
96
|
+
console.log(`[${w.field}] ${w.message}`);
|
|
97
|
+
}
|
|
98
|
+
// [webhooks] Removed webhooks because target version is 3.0.x (webhooks require 3.1+)
|
|
99
|
+
// [$self] Removed $self because target version is 3.0.x
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Pure Function API
|
|
103
|
+
|
|
104
|
+
The transformer is available as a standalone pure function for use outside LoopBack:
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import {transformOpenApiSpec, parseVersion} from '@ebarahona/loopback-openapi-v3';
|
|
108
|
+
|
|
109
|
+
const {spec, warnings} = transformOpenApiSpec(inputSpec, {version: '3.1.0'});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Requirements
|
|
113
|
+
|
|
114
|
+
- Node.js >= 18 (for `structuredClone`)
|
|
115
|
+
- LoopBack 4 (`@loopback/core` >= 7.0.0)
|
|
116
|
+
- `@loopback/openapi-v3` >= 11.0.0
|
|
117
|
+
- `@loopback/rest` >= 15.0.0
|
|
118
|
+
|
|
119
|
+
## Spec References
|
|
120
|
+
|
|
121
|
+
- [OpenAPI 3.0.3](https://spec.openapis.org/oas/v3.0.3.html)
|
|
122
|
+
- [OpenAPI 3.1.0](https://spec.openapis.org/oas/v3.1.0.html)
|
|
123
|
+
- [OpenAPI 3.2.0](https://spec.openapis.org/oas/v3.2.0.html)
|
|
124
|
+
- [OpenAPI Specification Repository](https://github.com/OAI/OpenAPI-Specification)
|
|
125
|
+
|
|
126
|
+
## Contributing
|
|
127
|
+
|
|
128
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { OpenApiVersionComponent } from './openapi-version.component';
|
|
2
|
+
export { OpenApiVersionEnhancer } from './openapi-version.enhancer';
|
|
3
|
+
export { OpenApiVersionBindings } from './keys';
|
|
4
|
+
export { OpenApiVersion, OpenApiVersionConfig } from './types';
|
|
5
|
+
export { transformOpenApiSpec, parseVersion, TransformResult, TransformWarning, } from './transform';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseVersion = exports.transformOpenApiSpec = exports.OpenApiVersionBindings = exports.OpenApiVersionEnhancer = exports.OpenApiVersionComponent = void 0;
|
|
4
|
+
var openapi_version_component_1 = require("./openapi-version.component");
|
|
5
|
+
Object.defineProperty(exports, "OpenApiVersionComponent", { enumerable: true, get: function () { return openapi_version_component_1.OpenApiVersionComponent; } });
|
|
6
|
+
var openapi_version_enhancer_1 = require("./openapi-version.enhancer");
|
|
7
|
+
Object.defineProperty(exports, "OpenApiVersionEnhancer", { enumerable: true, get: function () { return openapi_version_enhancer_1.OpenApiVersionEnhancer; } });
|
|
8
|
+
var keys_1 = require("./keys");
|
|
9
|
+
Object.defineProperty(exports, "OpenApiVersionBindings", { enumerable: true, get: function () { return keys_1.OpenApiVersionBindings; } });
|
|
10
|
+
var transform_1 = require("./transform");
|
|
11
|
+
Object.defineProperty(exports, "transformOpenApiSpec", { enumerable: true, get: function () { return transform_1.transformOpenApiSpec; } });
|
|
12
|
+
Object.defineProperty(exports, "parseVersion", { enumerable: true, get: function () { return transform_1.parseVersion; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yEAAoE;AAA5D,oIAAA,uBAAuB,OAAA;AAC/B,uEAAkE;AAA1D,kIAAA,sBAAsB,OAAA;AAC9B,+BAA8C;AAAtC,8GAAA,sBAAsB,OAAA;AAE9B,yCAKqB;AAJnB,iHAAA,oBAAoB,OAAA;AACpB,yGAAA,YAAY,OAAA"}
|
package/dist/keys.d.ts
ADDED
package/dist/keys.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenApiVersionBindings = void 0;
|
|
4
|
+
const core_1 = require("@loopback/core");
|
|
5
|
+
var OpenApiVersionBindings;
|
|
6
|
+
(function (OpenApiVersionBindings) {
|
|
7
|
+
OpenApiVersionBindings.CONFIG = core_1.BindingKey.create('openapi-version.config');
|
|
8
|
+
OpenApiVersionBindings.COMPONENT = 'openapi-version.component';
|
|
9
|
+
})(OpenApiVersionBindings || (exports.OpenApiVersionBindings = OpenApiVersionBindings = {}));
|
|
10
|
+
//# sourceMappingURL=keys.js.map
|
package/dist/keys.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAG1C,IAAiB,sBAAsB,CAKtC;AALD,WAAiB,sBAAsB;IACxB,6BAAM,GAAG,iBAAU,CAAC,MAAM,CACrC,wBAAwB,CACzB,CAAC;IACW,gCAAS,GAAG,2BAA2B,CAAC;AACvD,CAAC,EALgB,sBAAsB,sCAAtB,sBAAsB,QAKtC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenApiVersionComponent = void 0;
|
|
4
|
+
const core_1 = require("@loopback/core");
|
|
5
|
+
const openapi_v3_1 = require("@loopback/openapi-v3");
|
|
6
|
+
const keys_1 = require("./keys");
|
|
7
|
+
const openapi_version_enhancer_1 = require("./openapi-version.enhancer");
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
class OpenApiVersionComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.bindings = [
|
|
12
|
+
core_1.Binding.bind(keys_1.OpenApiVersionBindings.CONFIG).to(types_1.DEFAULT_CONFIG),
|
|
13
|
+
(0, core_1.createBindingFromClass)(openapi_version_enhancer_1.OpenApiVersionEnhancer).apply(openapi_v3_1.asSpecEnhancer),
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.OpenApiVersionComponent = OpenApiVersionComponent;
|
|
18
|
+
//# sourceMappingURL=openapi-version.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-version.component.js","sourceRoot":"","sources":["../src/openapi-version.component.ts"],"names":[],"mappings":";;;AAAA,yCAIwB;AACxB,qDAAoD;AACpD,iCAA8C;AAC9C,yEAAkE;AAClE,mCAAuC;AAavC,MAAa,uBAAuB;IAApC;QACE,aAAQ,GAAc;YACpB,cAAO,CAAC,IAAI,CAAC,6BAAsB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,sBAAc,CAAC;YAC9D,IAAA,6BAAsB,EAAC,iDAAsB,CAAC,CAAC,KAAK,CAAC,2BAAc,CAAC;SACrE,CAAC;IACJ,CAAC;CAAA;AALD,0DAKC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { OASEnhancer, OpenApiSpec } from '@loopback/openapi-v3';
|
|
2
|
+
import { OpenApiVersionConfig } from './types';
|
|
3
|
+
export declare class OpenApiVersionEnhancer implements OASEnhancer {
|
|
4
|
+
private options;
|
|
5
|
+
name: string;
|
|
6
|
+
constructor(options?: OpenApiVersionConfig);
|
|
7
|
+
modifySpec(spec: OpenApiSpec): OpenApiSpec;
|
|
8
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OpenApiVersionEnhancer = void 0;
|
|
16
|
+
const core_1 = require("@loopback/core");
|
|
17
|
+
const debug_1 = require("debug");
|
|
18
|
+
const keys_1 = require("./keys");
|
|
19
|
+
const transform_1 = require("./transform");
|
|
20
|
+
const types_1 = require("./types");
|
|
21
|
+
const debug = (0, debug_1.default)('loopback:openapi-version');
|
|
22
|
+
let OpenApiVersionEnhancer = class OpenApiVersionEnhancer {
|
|
23
|
+
constructor(options = types_1.DEFAULT_CONFIG) {
|
|
24
|
+
this.options = options;
|
|
25
|
+
this.name = 'openapi-version';
|
|
26
|
+
}
|
|
27
|
+
modifySpec(spec) {
|
|
28
|
+
const opts = { ...types_1.DEFAULT_CONFIG, ...this.options };
|
|
29
|
+
debug('configured target OpenAPI version: %s (transformNullable=%s)', opts.version, opts.transformNullable !== false);
|
|
30
|
+
const result = (0, transform_1.transformOpenApiSpec)(spec, opts);
|
|
31
|
+
if (result.warnings.length > 0) {
|
|
32
|
+
debug('emitted %d OpenAPI compatibility warnings', result.warnings.length);
|
|
33
|
+
for (const w of result.warnings) {
|
|
34
|
+
debug('warning [%s]: %s', w.field, w.message);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return result.spec;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.OpenApiVersionEnhancer = OpenApiVersionEnhancer;
|
|
41
|
+
exports.OpenApiVersionEnhancer = OpenApiVersionEnhancer = __decorate([
|
|
42
|
+
(0, core_1.injectable)(),
|
|
43
|
+
__param(0, (0, core_1.config)({ fromBinding: keys_1.OpenApiVersionBindings.CONFIG, optional: true })),
|
|
44
|
+
__metadata("design:paramtypes", [Object])
|
|
45
|
+
], OpenApiVersionEnhancer);
|
|
46
|
+
//# sourceMappingURL=openapi-version.enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-version.enhancer.js","sourceRoot":"","sources":["../src/openapi-version.enhancer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAkD;AAKlD,iCAAiC;AACjC,iCAA8C;AAC9C,2CAAiD;AACjD,mCAA6D;AAE7D,MAAM,KAAK,GAAG,IAAA,eAAY,EAAC,0BAA0B,CAAC,CAAC;AAqBhD,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAGjC,YAEE,UAAwC,sBAAc;QAA9C,YAAO,GAAP,OAAO,CAAuC;QAJxD,SAAI,GAAG,iBAAiB,CAAC;IAKtB,CAAC;IAEJ,UAAU,CAAC,IAAiB;QAC1B,MAAM,IAAI,GAAG,EAAC,GAAG,sBAAc,EAAE,GAAG,IAAI,CAAC,OAAO,EAAC,CAAC;QAClD,KAAK,CACH,8DAA8D,EAC9D,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,iBAAiB,KAAK,KAAK,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,gCAAoB,EACjC,IAA+B,EAC/B,IAAI,CACL,CAAC;QAEF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,KAAK,CAAC,2CAA2C,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE;gBAC/B,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;aAC/C;SACF;QAED,OAAO,MAAM,CAAC,IAAmB,CAAC;IACpC,CAAC;CACF,CAAA;AA7BY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,iBAAU,GAAE;IAKR,WAAA,IAAA,aAAM,EAAC,EAAC,WAAW,EAAE,6BAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;;GAJ5D,sBAAsB,CA6BlC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OpenApiVersionConfig } from './types';
|
|
2
|
+
interface Obj {
|
|
3
|
+
[key: string]: unknown;
|
|
4
|
+
}
|
|
5
|
+
export interface TransformWarning {
|
|
6
|
+
field: string;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export interface TransformResult {
|
|
10
|
+
spec: Obj;
|
|
11
|
+
warnings: TransformWarning[];
|
|
12
|
+
}
|
|
13
|
+
export declare function parseVersion(version: string): {
|
|
14
|
+
major: number;
|
|
15
|
+
minor: number;
|
|
16
|
+
patch: number;
|
|
17
|
+
};
|
|
18
|
+
export declare function transformOpenApiSpec(spec: Obj, config?: OpenApiVersionConfig): TransformResult;
|
|
19
|
+
export {};
|