diff --git a/keyserver/flow-typed/npm/node-fetch_v2.x.x.js b/keyserver/flow-typed/npm/node-fetch_v2.x.x.js new file mode 100644 --- /dev/null +++ b/keyserver/flow-typed/npm/node-fetch_v2.x.x.js @@ -0,0 +1,139 @@ +// flow-typed signature: bdb0f291726a139981cef71f997adbd4 +// flow-typed version: f93976a55e/node-fetch_v2.x.x/flow_>=v0.104.x + +declare module 'node-fetch' { + import type http from 'http'; + import type https from 'https'; + import type { URL } from 'url'; + import type { Readable } from 'stream'; + + declare export type AbortSignal = { + +aborted: boolean; + +onabort: (event?: { ... }) => void; + + +addEventListener: (name: string, cb: () => mixed) => void; + +removeEventListener: (name: string, cb: () => mixed) => void; + +dispatchEvent: (event: { ... }) => void; + ..., + } + + declare export class Request mixins Body { + constructor(input: string | { href: string, ... } | Request, init?: RequestInit): this; + context: RequestContext; + headers: Headers; + method: string; + redirect: RequestRedirect; + referrer: string; + url: string; + + // node-fetch extensions + agent: http.Agent | https.Agent; + compress: boolean; + counter: number; + follow: number; + hostname: string; + port: number; + protocol: string; + size: number; + timeout: number; + } + + declare type HeaderObject = { [index: string]: string, ... } + + declare type RequestInit = {| + body?: BodyInit, + headers?: HeaderObject, + method?: string, + redirect?: RequestRedirect, + signal?: AbortSignal | null, + + // node-fetch extensions + agent?: (URL => (http.Agent | https.Agent)) | http.Agent | https.Agent | null; + compress?: boolean, + follow?: number, + size?: number, + timeout?: number, + |}; + + declare export interface FetchError extends Error { + // cannot set name due to incompatible extend error + // name: 'FetchError'; + type: string; + code: ?number; + errno: ?number; + } + + declare export interface AbortError extends Error { + // cannot set name due to incompatible extend error + // name: 'AbortError'; + type: 'aborted'; + } + + declare type RequestContext = + 'audio' | 'beacon' | 'cspreport' | 'download' | 'embed' | + 'eventsource' | 'favicon' | 'fetch' | 'font' | 'form' | 'frame' | + 'hyperlink' | 'iframe' | 'image' | 'imageset' | 'import' | + 'internal' | 'location' | 'manifest' | 'object' | 'ping' | 'plugin' | + 'prefetch' | 'script' | 'serviceworker' | 'sharedworker' | + 'subresource' | 'style' | 'track' | 'video' | 'worker' | + 'xmlhttprequest' | 'xslt'; + declare type RequestRedirect = 'error' | 'follow' | 'manual'; + + declare export class Headers { + append(name: string, value: string): void; + delete(name: string): void; + forEach(callback: (value: string, name: string) => void): void; + get(name: string): string; + getAll(name: string): Array; + has(name: string): boolean; + raw(): { [k: string]: string[], ... }; + set(name: string, value: string): void; + entries(): Iterator<[string, string]>; + keys(): Iterator; + values(): Iterator; + @@iterator(): Iterator<[string, string]>; + } + + declare export class Body { + buffer(): Promise; + json(): Promise; + json(): Promise; + text(): Promise; + body: stream$Readable; + bodyUsed: boolean; + } + + declare export class Response mixins Body { + constructor(body?: BodyInit, init?: ResponseInit): this; + clone(): Response; + error(): Response; + redirect(url: string, status: number): Response; + headers: Headers; + ok: boolean; + status: number; + statusText: string; + size: number; + timeout: number; + type: ResponseType; + url: string; + } + + declare type ResponseType = + | 'basic' + | 'cors' + | 'default' + | 'error' + | 'opaque' + | 'opaqueredirect'; + + declare interface ResponseInit { + headers?: HeaderInit, + status: number, + statusText?: string, + } + + declare type HeaderInit = Headers | Array; + declare type BodyInit = string | null | Buffer | Blob | Readable | URLSearchParams; + + declare export default function fetch(url: string | Request, init?: RequestInit): Promise +} diff --git a/keyserver/package.json b/keyserver/package.json --- a/keyserver/package.json +++ b/keyserver/package.json @@ -62,6 +62,7 @@ "multer": "^1.4.1", "mysql2": "^2.3.3", "natural": "^6.2.0", + "node-fetch": "^2.6.9", "node-schedule": "^2.1.0", "nodemailer": "^6.6.1", "react": "18.1.0", diff --git a/yarn.lock b/yarn.lock --- a/yarn.lock +++ b/yarn.lock @@ -17347,6 +17347,13 @@ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.0.0.tgz#982bba43ecd4f2922a29cc186a6bbb0bb73fcba6" integrity sha512-bici2HCWFnAghTYMcy12WPxrEwJ5qK7GQJOTwTfyEZjyL99ECWxbYQfabZ2U1zrHMKkOBE97Z9iHIuKQfCMdzQ== +node-fetch@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + node-forge@0.10.0, node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"