mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 02:46:04 +01:00 
			
		
		
		
	Convert frontend code to typescript (#31559)
None of the frontend js/ts files was touched besides these two commands
(edit: no longer true, I touched one file in
61105d0618
because of a deprecation that was not showing before the rename).
`tsc` currently reports 778 errors, so I have disabled it in CI as
planned.
Everything appears to work fine.
			
			
This commit is contained in:
		
							
								
								
									
										41
									
								
								web_src/js/modules/fetch.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								web_src/js/modules/fetch.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| import {isObject} from '../utils.ts'; | ||||
|  | ||||
| const {csrfToken} = window.config; | ||||
|  | ||||
| // safe HTTP methods that don't need a csrf token | ||||
| const safeMethods = new Set(['GET', 'HEAD', 'OPTIONS', 'TRACE']); | ||||
|  | ||||
| // fetch wrapper, use below method name functions and the `data` option to pass in data | ||||
| // which will automatically set an appropriate headers. For json content, only object | ||||
| // and array types are currently supported. | ||||
| export function request(url, {method = 'GET', data, headers = {}, ...other} = {}) { | ||||
|   let body, contentType; | ||||
|   if (data instanceof FormData || data instanceof URLSearchParams) { | ||||
|     body = data; | ||||
|   } else if (isObject(data) || Array.isArray(data)) { | ||||
|     contentType = 'application/json'; | ||||
|     body = JSON.stringify(data); | ||||
|   } | ||||
|  | ||||
|   const headersMerged = new Headers({ | ||||
|     ...(!safeMethods.has(method) && {'x-csrf-token': csrfToken}), | ||||
|     ...(contentType && {'content-type': contentType}), | ||||
|   }); | ||||
|  | ||||
|   for (const [name, value] of Object.entries(headers)) { | ||||
|     headersMerged.set(name, value); | ||||
|   } | ||||
|  | ||||
|   return fetch(url, { | ||||
|     method, | ||||
|     headers: headersMerged, | ||||
|     ...other, | ||||
|     ...(body && {body}), | ||||
|   }); | ||||
| } | ||||
|  | ||||
| export const GET = (url, opts) => request(url, {method: 'GET', ...opts}); | ||||
| export const POST = (url, opts) => request(url, {method: 'POST', ...opts}); | ||||
| export const PATCH = (url, opts) => request(url, {method: 'PATCH', ...opts}); | ||||
| export const PUT = (url, opts) => request(url, {method: 'PUT', ...opts}); | ||||
| export const DELETE = (url, opts) => request(url, {method: 'DELETE', ...opts}); | ||||
		Reference in New Issue
	
	Block a user