@@ -28,6 +28,11 @@ import {
2828 transformModule ,
2929} from '../utils/sandbox' ;
3030import apiFactory , { Api , ApiConfig } from './apiFactory' ;
31+ import {
32+ SandboxAPIResponse ,
33+ IModuleAPIResponse ,
34+ IDirectoryAPIResponse ,
35+ } from './types' ;
3136
3237let api : Api ;
3338
@@ -67,7 +72,7 @@ export default {
6772 return api . get ( `/dependencies/${ name } @latest` ) ;
6873 } ,
6974 async getSandbox ( id : string ) : Promise < Sandbox > {
70- const sandbox = await api . get < Sandbox > ( `/sandboxes/${ id } ` ) ;
75+ const sandbox = await api . get < SandboxAPIResponse > ( `/sandboxes/${ id } ` ) ;
7176
7277 // We need to add client side properties for tracking
7378 return transformSandbox ( sandbox ) ;
@@ -77,13 +82,13 @@ export default {
7782 ? `/sandboxes/fork/${ id } `
7883 : `/sandboxes/${ id } /fork` ;
7984
80- const sandbox = await api . post < Sandbox > ( url , body || { } ) ;
85+ const sandbox = await api . post < SandboxAPIResponse > ( url , body || { } ) ;
8186
8287 return transformSandbox ( sandbox ) ;
8388 } ,
8489 createModule ( sandboxId : string , module : Module ) : Promise < Module > {
8590 return api
86- . post ( `/sandboxes/${ sandboxId } /modules` , {
91+ . post < IModuleAPIResponse > ( `/sandboxes/${ sandboxId } /modules` , {
8792 module : {
8893 title : module . title ,
8994 directoryShortid : module . directoryShortid ,
@@ -93,14 +98,19 @@ export default {
9398 } )
9499 . then ( transformModule ) ;
95100 } ,
96- deleteModule ( sandboxId : string , moduleShortid : string ) : Promise < void > {
97- return api . delete ( `/sandboxes/${ sandboxId } /modules/${ moduleShortid } ` ) ;
101+ async deleteModule ( sandboxId : string , moduleShortid : string ) : Promise < void > {
102+ await api . delete < IModuleAPIResponse > (
103+ `/sandboxes/${ sandboxId } /modules/${ moduleShortid } `
104+ ) ;
98105 } ,
99106 saveModuleCode ( sandboxId : string , module : Module ) : Promise < Module > {
100107 return api
101- . put ( `/sandboxes/${ sandboxId } /modules/${ module . shortid } ` , {
102- module : { code : module . code } ,
103- } )
108+ . put < IModuleAPIResponse > (
109+ `/sandboxes/${ sandboxId } /modules/${ module . shortid } ` ,
110+ {
111+ module : { code : module . code } ,
112+ }
113+ )
104114 . then ( transformModule ) ;
105115 } ,
106116 saveModules ( sandboxId : string , modules : Module [ ] ) {
@@ -131,14 +141,14 @@ export default {
131141 } ) ;
132142 } ,
133143 savePrivacy ( sandboxId : string , privacy : 0 | 1 | 2 ) {
134- return api . patch ( `/sandboxes/${ sandboxId } /privacy` , {
144+ return api . patch < SandboxAPIResponse > ( `/sandboxes/${ sandboxId } /privacy` , {
135145 sandbox : {
136146 privacy,
137147 } ,
138148 } ) ;
139149 } ,
140150 saveFrozen ( sandboxId : string , isFrozen : boolean ) {
141- return api . put ( `/sandboxes/${ sandboxId } ` , {
151+ return api . put < SandboxAPIResponse > ( `/sandboxes/${ sandboxId } ` , {
142152 sandbox : {
143153 is_frozen : isFrozen ,
144154 } ,
@@ -176,9 +186,12 @@ export default {
176186 ) ;
177187 } ,
178188 saveModuleTitle ( sandboxId : string , moduleShortid : string , title : string ) {
179- return api . put ( `/sandboxes/${ sandboxId } /modules/${ moduleShortid } ` , {
180- module : { title } ,
181- } ) ;
189+ return api . put < IModuleAPIResponse > (
190+ `/sandboxes/${ sandboxId } /modules/${ moduleShortid } ` ,
191+ {
192+ module : { title } ,
193+ }
194+ ) ;
182195 } ,
183196 getPopularSandboxes ( date : string ) : Promise < PopularSandboxes > {
184197 return api . get ( `/sandboxes/popular?start_date=${ date } ` ) ;
@@ -202,7 +215,7 @@ export default {
202215 title : string
203216 ) : Promise < Directory > {
204217 return api
205- . post ( `/sandboxes/${ sandboxId } /directories` , {
218+ . post < IDirectoryAPIResponse > ( `/sandboxes/${ sandboxId } /directories` , {
206219 directory : {
207220 title,
208221 directoryShortid,
@@ -215,16 +228,19 @@ export default {
215228 moduleShortid : string ,
216229 directoryShortid : string
217230 ) {
218- return api . put ( `/sandboxes/${ sandboxId } /modules/${ moduleShortid } ` , {
219- module : { directoryShortid } ,
220- } ) ;
231+ return api . put < IDirectoryAPIResponse > (
232+ `/sandboxes/${ sandboxId } /modules/${ moduleShortid } ` ,
233+ {
234+ module : { directoryShortid } ,
235+ }
236+ ) ;
221237 } ,
222238 saveDirectoryDirectory (
223239 sandboxId : string ,
224240 sourceDirectoryShortid : string ,
225241 targetDirectoryShortId : string
226242 ) {
227- return api . put (
243+ return api . put < IDirectoryAPIResponse > (
228244 `/sandboxes/${ sandboxId } /directories/${ sourceDirectoryShortid } ` ,
229245 {
230246 directory : { directoryShortid : targetDirectoryShortId } ,
@@ -241,9 +257,12 @@ export default {
241257 directoryShortid : string ,
242258 title : string
243259 ) {
244- return api . put ( `/sandboxes/${ sandboxId } /directories/${ directoryShortid } ` , {
245- directory : { title } ,
246- } ) ;
260+ return api . put < IDirectoryAPIResponse > (
261+ `/sandboxes/${ sandboxId } /directories/${ directoryShortid } ` ,
262+ {
263+ directory : { title } ,
264+ }
265+ ) ;
247266 } ,
248267 getUploads ( ) : Promise < UploadedFilesInfo > {
249268 return api . get ( '/users/current_user/uploads' ) ;
@@ -271,13 +290,14 @@ export default {
271290 modules,
272291 directories,
273292 } ) ) as {
274- modules : Module [ ] ;
275- directories : Directory [ ] ;
293+ modules : IModuleAPIResponse [ ] ;
294+ directories : IDirectoryAPIResponse [ ] ;
276295 } ;
277296
278- data . modules = data . modules . map ( transformModule ) ;
279- data . directories = data . directories . map ( transformDirectory ) ;
280- return data ;
297+ return {
298+ modules : data . modules . map ( transformModule ) ,
299+ directories : data . directories . map ( transformDirectory ) ,
300+ } ;
281301 } ,
282302 createGit (
283303 sandboxId : string ,
0 commit comments