@@ -6,7 +6,11 @@ function getGenericDefaults (generator) {
66 return {
77 defaultRoot : generator . root ,
88
9- generateKey ( schema , file , hash ) {
9+ generateKey ( schema , file , hash , pathFromRoot ) {
10+ if ( generator . isUnderDirectRoot ( pathFromRoot ) ) {
11+ return null ;
12+ }
13+
1014 if ( ! url . isFileSystemPath ( file ) && ! url . isHttp ( file ) ) {
1115 return null ;
1216 }
@@ -22,7 +26,7 @@ function getGenericDefaults (generator) {
2226 return null ;
2327 }
2428
25- return generator . generateKeyForPointer ( schema , existingGeneratedKey + hash . slice ( 1 ) ) ;
29+ return generator . generateKeyForPointer ( schema , existingGeneratedKey === undefined ? pathFromRoot : existingGeneratedKey + hash . slice ( 1 ) ) ;
2630 }
2731
2832 if ( url . isHttp ( file ) ) {
@@ -31,9 +35,6 @@ function getGenericDefaults (generator) {
3135
3236 return generator . generateKeyForFilepath ( schema , file ) ;
3337 } ,
34- shouldInline ( ) {
35- return false ;
36- } ,
3738 } ;
3839}
3940
@@ -50,39 +51,22 @@ module.exports.getDefaultsForNewJsonSchema = function (defaults = getGenericDefa
5051module . exports . getDefaultsForOAS2 = function ( defaults = getGenericDefaults ( new KeyGenerator ( "#/definitions" ) ) ) {
5152 return {
5253 ...defaults ,
53- generateKey ( schema , file , hash ) {
54+ generateKey ( schema , file , hash , pathFromRoot ) {
55+ pathFromRoot = normalizeOasSchemasHash ( pathFromRoot , defaults . defaultRoot ) ;
56+
5457 if ( hash !== "#" && hash !== null ) {
55- return defaults . generateKey ( schema , file , hash . replace ( / \/ c o m p o n e n t s \/ s c h e m a s \/ / g , "/definitions/" ) ) ;
58+ return defaults . generateKey ( schema , file , normalizeOasSchemasHash ( hash , defaults . defaultRoot ) , pathFromRoot ) ;
5659 }
5760
58- return defaults . generateKey ( schema , file , hash ) ;
61+ return defaults . generateKey ( schema , file , hash , pathFromRoot ) ;
5962 } ,
60- shouldInline ( pathFromRoot ) {
61- const parsed = url . safePointerToPath ( pathFromRoot ) ;
62- return parsed . length === 0 || ( parsed [ 0 ] !== "definitions" && ! parsed . includes ( "schema" ) ) ;
63- }
6463 } ;
6564} ;
6665
6766module . exports . getDefaultsForOAS3 = function ( defaults = getGenericDefaults ( new KeyGenerator ( "#/components/schemas" ) ) ) {
68- return {
69- ...defaults ,
70- generateKey ( schema , file , hash ) {
71- if ( hash !== "#" && hash !== null ) {
72- return defaults . generateKey ( schema , file , hash . replace ( / \/ d e f i n i t i o n s \/ / g, "/components/schemas/" ) ) ;
73- }
74-
75- return defaults . generateKey ( schema , file , hash ) ;
76- } ,
77- shouldInline ( pathFromRoot ) {
78- if ( pathFromRoot . startsWith ( "#/components/schemas" ) ) {
79- return false ;
80- }
81-
82- const parsed = url . safePointerToPath ( pathFromRoot ) ;
83-
84- return parsed . length === 0 || ! parsed . includes ( "schema" ) ;
85- }
86- } ;
67+ return module . exports . getDefaultsForOAS2 ( defaults ) ;
8768} ;
8869
70+ function normalizeOasSchemasHash ( hash , root ) {
71+ return hash . replace ( / \/ (?: c o m p o n e n t s \/ s c h e m a s | d e f i n i t i o n s ) \/ / g, root . slice ( 1 ) + "/" ) ;
72+ }
0 commit comments