Skip to content

Commit

Permalink
Add createsubtoken endpoint
Browse files Browse the repository at this point in the history
ref #4
  • Loading branch information
darthmaim committed Feb 20, 2024
1 parent 0e3954e commit 6770f68
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions packages/types/endpoints.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Account } from './data/account';
import { Item } from './data/item';
import { Tokeninfo } from './data/tokeninfo';
import { Permission, Tokeninfo } from './data/tokeninfo';
import { SchemaVersion } from './schema';

export type KnwownAuthenticatedEndpoint =
Expand Down Expand Up @@ -298,6 +298,17 @@ type BulkExpandedResponseType<Endpoint extends KnownBulkExpandedEndpoint, Url ex
Url extends BulkExpandedManyEndpointUrl<Endpoint> ? T[] :
unknown

// createsubtoken request
type CreateSubtokenUrl<Url extends KnownEndpoint> =
| WithParameters<Url, CombineParameters<`expire=${string}`, CombineParameters<`permissions=${string}`, `urls=${string}`>>>
| WithParameters<Url, CombineParameters<`expire=${string}`, `permissions=${string}`>>
| WithParameters<Url, CombineParameters<`expire=${string}`, `urls=${string}`>>
| WithParameters<Url, CombineParameters<`permissions=${string}`, `urls=${string}`>>
| WithParameters<Url, `expire=${string}`>
| WithParameters<Url, `permissions=${string}`>
| WithParameters<Url, `urls=${string}`>
| Url

// options
type Options = {}

Expand All @@ -315,11 +326,13 @@ export type OptionsByEndpoint<Endpoint extends string> =
Endpoint extends BulkExpandedSingleEndpointUrl<KnownBulkExpandedEndpoint & KnownLocalizedEndpoint, string> ? Options & LocalizedOptions :
Endpoint extends KnownLocalizedEndpoint ? Options & LocalizedOptions :
Endpoint extends KnwownAuthenticatedEndpoint ? Options & AuthenticatedOptions :
Endpoint extends CreateSubtokenUrl<'/v2/createsubtoken'> ? Options & AuthenticatedOptions :
Options

// result type for endpoint
export type EndpointType<Url extends string, Schema extends SchemaVersion = undefined> =
Url extends '/v2/account' ? Account<Schema> :
Url extends CreateSubtokenUrl<'/v2/createsubtoken'> ? { subtoken: string } :
Url extends BulkExpandedEndpointUrl<'/v2/items', number> ? BulkExpandedResponseType<'/v2/items', Url, number, Item<Schema>> :
Url extends BulkExpandedEndpointUrl<'/v2/quaggans', string> ? BulkExpandedResponseType<'/v2/quaggans', Url, string, { id: string, url: string }> :
Url extends '/v2/tokeninfo' ? Tokeninfo<Schema> :
Expand All @@ -328,4 +341,4 @@ export type EndpointType<Url extends string, Schema extends SchemaVersion = unde
// fallback for all other urls
unknown;

type ValidateEndpointUrl<T extends string> = unknown extends EndpointType<T> ? 'unknown endpoint url' : T;
export type ValidateEndpointUrl<T extends string> = unknown extends EndpointType<T> ? 'unknown endpoint url' : T;

0 comments on commit 6770f68

Please sign in to comment.