Skip to content

Commit d5f639b

Browse files
Improve return type for readById and readByQuery
1 parent 9c7c101 commit d5f639b

3 files changed

Lines changed: 19 additions & 19 deletions

File tree

src/feed/feed.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ describe('Feed', () => {
4949
it('Calls the /$metadata endpoint for $metadata', () => {
5050
feed.$metadata();
5151

52-
expect(feed.request).toBeCalledWith('/$metadata',{});
52+
expect(feed.request).toBeCalledWith('/$metadata', {});
5353
});
5454
});
5555

@@ -58,14 +58,14 @@ describe('Feed', () => {
5858
vi.mocked(feed.request);
5959

6060
await feed.readById('/Property', 123);
61-
expect(feed.request).toHaveBeenCalledWith('/Property(123)',{});
61+
expect(feed.request).toHaveBeenCalledWith('/Property(123)', {});
6262
});
6363

6464
it('Constructs singleton key query for string with qoutes', async () => {
6565
vi.mocked(feed.request);
6666

6767
await feed.readById('/Property', '123');
68-
expect(feed.request).toHaveBeenCalledWith("/Property('123')",{});
68+
expect(feed.request).toHaveBeenCalledWith("/Property('123')", {});
6969
});
7070
});
7171

@@ -98,7 +98,7 @@ describe('Feed', () => {
9898
query: {
9999
$filter: 'ListingPrice eq 200000 ',
100100
$top: '1000',
101-
$skip:"4000"
101+
$skip: '4000',
102102
},
103103
});
104104

src/feed/feed.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ import type { $Fetch, FetchError } from 'ofetch';
22
import { $fetch } from 'ofetch';
33
import { getQuery, parsePath, parseQuery, stringifyQuery } from 'ufo';
44
import type {
5+
FeedMultiResponse,
56
FeedOptions,
67
FeedRequestOptions,
78
FeedResponse,
9+
FeedSingleResponse,
810
TransportError,
911
TransportResponse,
1012
} from '../types/index.js';
@@ -28,11 +30,10 @@ export class Feed {
2830
}
2931

3032
$metadata(query?: string) {
33+
const requestOptions: Partial<FeedRequestOptions> = {};
3134

32-
const requestOptions:Partial<FeedRequestOptions> = {};
33-
34-
if(query){
35-
requestOptions['query'] = parseQuery(query)
35+
if (query) {
36+
requestOptions['query'] = parseQuery(query);
3637
}
3738

3839
return this.request('/$metadata', requestOptions) as unknown as string;
@@ -41,15 +42,15 @@ export class Feed {
4142
async *readByQuery<V extends Record<string, unknown>>(
4243
resource: string,
4344
query?: string,
44-
): AsyncGenerator<FeedResponse<V>> {
45+
): AsyncGenerator<FeedMultiResponse<V>> {
4546
let url: null | string = resource;
4647

4748
let q = query;
4849

4950
do {
5051
const readResponse = (await this.request<V>(url || resource, {
5152
query: parseQuery(q),
52-
})) as FeedResponse<V>;
53+
})) as FeedMultiResponse<V>;
5354

5455
url = null;
5556
if (readResponse && 'nextLink' in readResponse) {
@@ -65,17 +66,16 @@ export class Feed {
6566
resource: string,
6667
id: string | number,
6768
query?: string,
68-
): Promise<FeedResponse<V>> {
69+
): Promise<FeedSingleResponse<V>> {
6970
const resourceId = `(${typeof id === 'string' ? `'${id}'` : id})`;
7071

72+
const requestOptions: Partial<FeedRequestOptions> = {};
7173

72-
const requestOptions:Partial<FeedRequestOptions> = {};
73-
74-
if(query){
75-
requestOptions['query'] = parseQuery(query)
74+
if (query) {
75+
requestOptions['query'] = parseQuery(query);
7676
}
7777

78-
return this.request<V>(resource + resourceId, requestOptions) as unknown as FeedResponse<V>;
78+
return this.request<V>(resource + resourceId, requestOptions) as unknown as FeedSingleResponse<V>;
7979
}
8080

8181
async request<R extends Record<string, unknown>>(

src/types/feed.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ export interface FeedBaseResponse {
4040
count?: string | number;
4141
}
4242

43-
export interface FeedMultiResponse<V> extends FeedBaseResponse {
43+
export interface FeedMultiResponse<V extends Record<string, unknown>> extends FeedBaseResponse {
4444
values: V[];
4545
}
4646

47-
export interface FeedSingleResponse<V> extends FeedBaseResponse {
47+
export interface FeedSingleResponse<V extends Record<string, unknown>> extends FeedBaseResponse {
4848
value: V;
4949
}
5050

51-
export type FeedResponse<V> = FeedMultiResponse<V> | FeedSingleResponse<V>;
51+
export type FeedResponse<V extends Record<string, unknown>> = FeedMultiResponse<V> | FeedSingleResponse<V>;
5252

5353
export interface FeedOptions {
5454
http: FeedHttpOptions;

0 commit comments

Comments
 (0)