UNPKG

eve-esi-types

Version:

Extracted the main type of ESI. use for ESI request response types (version 2 only)

106 lines (72 loc) 3.98 kB
# eve-esi-types Extracted main types of ESI. Used for ESI request response types. ## Usage > This package is configured to use version 2 only. + If you need to use version 1, please refer to the following link: [eve-esi-types v1](https://github.com/jeffy-g/eve-esi-types/tree/version-1.x) > Sample code is provided -> [`request-v3.mjs`](./request-v3.mjs) ```shell $ node request-v3.mjs ``` ## API > The following function signature allows you to benefit from `eve-esi-types`. > By specifying the method (`get`, `post`, `put`, `delete`) for each `endpoint`, > you can determine the result type of the ESI request, what query parameters are required, > and whether OAuth authentication is necessary (`auth: true`). ```ts // This function signature has been removed in version 3.x // export declare function fire< // M extends TESIEntryMethod, // EP extends keyof TESIResponseOKMap[M], // P2 extends IfParameterizedPath<EP, Opt>, // Opt extends IdentifyParameters<TESIResponseOKMap[M][EP], ESIRequestOptions>, // R extends InferESIResponseResult<M, EP> // >(mthd: M, endp: EP, pathParams?: P2, opt?: Opt): Promise<R>; ``` ## New Features in v2.3.0 ### ESI Tagged Types > Introduced intuitive ESI request handling using "tags" from the EVE Swagger JSON. ### ~~injectESIRequestBody~~ > Utilized ~~`injectESIRequestBody`~~ to generate ESI request API objects with narrowed endpoints by accessing camel-cased "tags". ```ts import * as taggedApi from "eve-esi-types/lib/tagged-request-api.mjs"; // `injectESIRequestBody` has been removed in version 3.x // const esiRequest = taggedApi.injectESIRequestBody(...); // const ret = await esiRequest.universe.get("/universe/structures/", { query: { filter: "market" }}); ``` + or ```ts // Minimal default ESI request body implementation import { esi } from "eve-esi-types/lib/tagged-request-api.mjs"; const ret = await esi.universe.get("/universe/structures/", { query: { filter: "market" }}); ``` ## New Features in v3.0.0 ### `TESIRequestFunctionSignature` has been renamed to `TESIRequestFunctionSignature2` and the generic parameters have been changed. > `RealEP` and `EP` help maintain endpoint inference. > With `RealEP`, TypeScript inference partially lists the possible endpoints while allowing for path parameter replacement. ```ts type TESIRequestFunctionSignature2<ActualOpt> = < M extends TESIEntryMethod, RealEP extends ReplacePathParams<keyof TESIResponseOKMap[M] & string> | keyof TESIResponseOKMap[M], EP extends InferEndpointOrigin<RealEP, keyof TESIResponseOKMap[M]> extends never ? RealEP : InferEndpointOrigin<RealEP, keyof TESIResponseOKMap[M]>, // If RealEP points to an endpoint origin (not a replaced endpoint), the path parameter is required PathParams extends RealEP extends EP ? IfNeedPathParams<EP> : TPathParamsNever, Opt extends IdentifyParameters<TESIResponseOKMap[M][EP], ActualOpt & PathParams>, R extends InferESIResponseResult<M, EP> >(method: M, endpoint: RealEP, options?: Opt) => Promise<R>; ``` + NOTE: Accordingly, the generic parameters for other request function signatures have also been changed, with "2" appended to their names. + `IESIRequestFunction` -> `IESIRequestFunction2` + `TESIRequestFunctionMethods` -> `TESIRequestFunctionMethods2` + `TESIRequestFunctionEachMethod` -> `TESIRequestFunctionEachMethod2` + etc. Also, `v2/esi-tagged-types.d.ts` too ### decoreateESIRequestBody > Utilized `decoreateESIRequestBody` to generate ESI request API objects with narrowed endpoints by accessing camel-cased "tags". ```ts import * as taggedApi from "eve-esi-types/lib/tagged-request-api.mjs"; const esiRequest = taggedApi.decoreateESIRequestBody(...); const ret = await esiRequest.universe.get("/universe/structures/", { query: { filter: "market" }}); ``` ## References - [`ESI Types Utility Definitions`](./docs/v3/esi-types-util3.md) - [`ESI Tagged Types Utility Definitions`](./docs/esi-tagged-types.md)