@@ -36,7 +36,21 @@ internals.createPackageLoader = async (packageName) => {
36
36
37
37
const repository = internals . parseRepository ( packument ) ;
38
38
39
- return internals . createRepositoryLoader ( repository ) ;
39
+ const repositoryLoader = internals . createRepositoryLoader ( repository ) ;
40
+
41
+ return {
42
+ ...repositoryLoader ,
43
+ loadFile : async ( filename , options ) => {
44
+
45
+ const result = await repositoryLoader . loadFile ( filename , options ) ;
46
+
47
+ if ( filename === 'package.json' && result . name !== packageName ) {
48
+ throw new Error ( `${ repository } does not contain ${ packageName } ` ) ;
49
+ }
50
+
51
+ return result ;
52
+ }
53
+ } ;
40
54
}
41
55
catch ( err ) {
42
56
@@ -64,7 +78,7 @@ internals.createRepositoryLoader = (repository) => {
64
78
65
79
return head ;
66
80
} ,
67
- loadFile : async ( filename ) => {
81
+ loadFile : async ( filename , options ) => {
68
82
69
83
if ( parsedRepository . source !== 'github.com' ) {
70
84
throw new Error ( 'Only github.com paths supported, feel free to PR at https://github.com/pkgjs/node-support' ) ;
@@ -73,7 +87,7 @@ internals.createRepositoryLoader = (repository) => {
73
87
const url = `https://raw.githubusercontent.com/${ parsedRepository . full_name } /HEAD/${ filename } ` ;
74
88
75
89
try {
76
- const { payload } = await Wreck . get ( url ) ;
90
+ const { payload } = await Wreck . get ( url , options ) ;
77
91
78
92
return payload ;
79
93
}
@@ -108,15 +122,21 @@ internals.createPathLoader = async (path) => {
108
122
109
123
return simpleGit . revparse ( [ 'HEAD' ] ) ;
110
124
} ,
111
- loadFile : ( filename ) => {
125
+ loadFile : ( filename , options = { } ) => {
112
126
113
127
const fullPath = Path . join ( path , filename ) ;
114
128
115
129
if ( ! Fs . existsSync ( fullPath ) ) {
116
130
return ;
117
131
}
118
132
119
- return Fs . readFileSync ( fullPath ) ;
133
+ const buffer = Fs . readFileSync ( fullPath ) ;
134
+
135
+ if ( options . json ) {
136
+ return JSON . parse ( buffer . toString ( ) ) ;
137
+ }
138
+
139
+ return buffer ;
120
140
}
121
141
} ;
122
142
} ;
0 commit comments