diff --git a/src/protocol/route.ts b/src/protocol/route.ts index 80b7e475..2d915f12 100644 --- a/src/protocol/route.ts +++ b/src/protocol/route.ts @@ -14,15 +14,19 @@ */ import {SCMap} from '../general/map'; import {SCErrorResponse} from './error'; -import {SCIndexRequest, SCIndexResponse} from './routes'; -import {SCBookAvailabilityRequest, SCBookAvailabilityResponse} from './routes/book-availability'; -import {SCBulkAddRequest, SCBulkAddResponse} from './routes/bulk-add'; -import {SCBulkDoneRequest, SCBulkDoneResponse} from './routes/bulk-done'; -import {SCBulkRequest, SCBulkResponse} from './routes/bulk-request'; -import {SCFeedbackRequest, SCFeedbackResponse} from './routes/feedback'; -import {SCSearchRequest, SCSearchResponse} from './routes/search'; -import {SCMultiSearchRequest, SCMultiSearchResponse} from './routes/search-multi'; -import {SCThingUpdateRequest, SCThingUpdateResponse} from './routes/thing-update'; +import {SCIndexRequest, SCIndexResponse, SCIndexRoute} from './routes'; +import { + SCBookAvailabilityRequest, + SCBookAvailabilityResponse, + SCBookAvailabilityRoute, +} from './routes/book-availability'; +import {SCBulkAddRequest, SCBulkAddResponse, SCBulkAddRoute} from './routes/bulk-add'; +import {SCBulkDoneRequest, SCBulkDoneResponse, SCBulkDoneRoute} from './routes/bulk-done'; +import {SCBulkRequest, SCBulkResponse, SCBulkRoute} from './routes/bulk-request'; +import {SCFeedbackRequest, SCFeedbackResponse, SCFeedbackRoute} from './routes/feedback'; +import {SCSearchRequest, SCSearchResponse, SCSearchRoute} from './routes/search'; +import {SCMultiSearchRequest, SCMultiSearchResponse, SCMultiSearchRoute} from './routes/search-multi'; +import {SCThingUpdateRequest, SCThingUpdateResponse, SCThingUpdateRoute} from './routes/thing-update'; /** * Possible Verbs for HTTP requests @@ -204,3 +208,33 @@ export type SCAssociatedRequest = RESPONSE extends SCSearchResponse ? SCSearchRequest : RESPONSE extends SCThingUpdateResponse ? SCThingUpdateRequest : never; + +/** + * Associated request for a route + */ +export type SCAssignedRequest = + ROUTE extends SCBookAvailabilityRoute ? SCBookAvailabilityRequest : + ROUTE extends SCBulkRoute ? SCBulkRequest : + ROUTE extends SCBulkAddRoute ? SCBulkAddRequest : + ROUTE extends SCBulkDoneRoute ? SCBulkDoneRequest : + ROUTE extends SCFeedbackRoute ? SCFeedbackRequest : + ROUTE extends SCIndexRoute ? SCIndexRequest : + ROUTE extends SCMultiSearchRoute ? SCMultiSearchRequest : + ROUTE extends SCSearchRoute ? SCSearchRequest : + ROUTE extends SCThingUpdateRoute ? SCThingUpdateRequest : + never; + +/** + * Associated response for a route + */ +export type SCAssignedResponse = + ROUTE extends SCBookAvailabilityRoute ? SCBookAvailabilityResponse : + ROUTE extends SCBulkRoute ? SCBulkResponse : + ROUTE extends SCBulkAddRoute ? SCBulkAddResponse : + ROUTE extends SCBulkDoneRoute ? SCBulkDoneResponse : + ROUTE extends SCFeedbackRoute ? SCFeedbackResponse : + ROUTE extends SCIndexRoute ? SCIndexResponse : + ROUTE extends SCMultiSearchRoute ? SCMultiSearchResponse : + ROUTE extends SCSearchRoute ? SCSearchResponse : + ROUTE extends SCThingUpdateRoute ? SCThingUpdateResponse : + never;