Skip to content

Commit 9cdf14a

Browse files
committed
feat: Add overlay versioning support and enforce compatibility rules
1 parent 67816f7 commit 9cdf14a

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
"typescript": "^5.9.3"
5050
},
5151
"engines": {
52-
"node": ">=18"c
52+
"node": ">=18"
5353
},
5454
"files": [
5555
"README.md",

test/overlay.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,19 @@ describe('openapi-format CLI overlay tests', () => {
464464
expect(result.resultData.totalUsedActions).toBe(1);
465465
expect(result.resultData.totalUnusedActions).toBe(0);
466466
});
467+
468+
it('should treat blank overlay version as latest and allow copy', async () => {
469+
const baseOAS = {info: {title: 'Sample API', version: '1.0.0'}};
470+
const overlaySet = {
471+
overlay: ' ',
472+
actions: [{target: '$.info.title', copy: true, from: '$.info.version'}]
473+
};
474+
475+
const result = await openapiOverlay(baseOAS, {overlaySet});
476+
expect(result.data.info.title).toBe('1.0.0');
477+
expect(result.resultData.totalUsedActions).toBe(1);
478+
expect(result.resultData.totalUnusedActions).toBe(0);
479+
});
467480
});
468481

469482
describe('primitive targeting compatibility', () => {

utils/overlay.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,12 @@ function isSupportedOverlayVersion(version) {
112112
return false;
113113
}
114114

115-
return /^1\.(0|1)\.\d+$/.test(version);
115+
const normalized = version.trim();
116+
if (normalized === '') {
117+
return true;
118+
}
119+
120+
return /^1\.(0|1)\.\d+$/.test(normalized);
116121
}
117122

118123
function isOverlay11x(version) {

0 commit comments

Comments
 (0)