55import fetch from 'node-fetch' ;
66import { parseQuery } from './utils/parseQuery' ;
77import { isString } from './utils/isCheckValue' ;
8- import { ClientParams , MakeRequest , GetRequest } from './types' ;
8+ import {
9+ MicroCMSClient ,
10+ MakeRequest ,
11+ GetRequest ,
12+ GetListRequest ,
13+ GetListDetailRequest ,
14+ GetObjectRequest ,
15+ MicroCMSListResponse ,
16+ MicroCMSListContent ,
17+ MicroCMSObjectContent ,
18+ } from './types' ;
919
1020const BASE_DOMAIN = 'microcms.io' ;
1121const API_VERSION = 'v1' ;
1222
1323/**
1424 * Initialize SDK Client
1525 */
16- export const createClient = ( { serviceDomain, apiKey, globalDraftKey } : ClientParams ) => {
26+ export const createClient = ( { serviceDomain, apiKey, globalDraftKey } : MicroCMSClient ) => {
1727 if ( ! serviceDomain || ! apiKey ) {
1828 throw new Error ( 'parameter is required (check serviceDomain and apiKey)' ) ;
1929 }
@@ -74,9 +84,9 @@ export const createClient = ({ serviceDomain, apiKey, globalDraftKey }: ClientPa
7484 } ;
7585
7686 /**
77- * Get API data for microCMS
87+ * Get list and object API data for microCMS
7888 */
79- const get = async < T > ( {
89+ const get = async < T = any > ( {
8090 endpoint,
8191 contentId,
8292 queries = { } ,
@@ -88,7 +98,62 @@ export const createClient = ({ serviceDomain, apiKey, globalDraftKey }: ClientPa
8898 return await makeRequest < T > ( { endpoint, contentId, queries, useGlobalDraftKey } ) ;
8999 } ;
90100
101+ /**
102+ * Get list API data for microCMS
103+ */
104+ const getList = async < T = any > ( {
105+ endpoint,
106+ queries = { } ,
107+ useGlobalDraftKey,
108+ } : GetListRequest ) : Promise < MicroCMSListResponse < T > > => {
109+ if ( ! endpoint ) {
110+ return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
111+ }
112+ return await makeRequest < MicroCMSListResponse < T > > ( { endpoint, queries, useGlobalDraftKey } ) ;
113+ } ;
114+
115+ /**
116+ * Get list API detail data for microCMS
117+ */
118+ const getListDetail = async < T = any > ( {
119+ endpoint,
120+ contentId,
121+ queries = { } ,
122+ useGlobalDraftKey,
123+ } : GetListDetailRequest ) : Promise < T & MicroCMSListContent > => {
124+ if ( ! endpoint ) {
125+ return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
126+ }
127+ return await makeRequest < T & MicroCMSListContent > ( {
128+ endpoint,
129+ contentId,
130+ queries,
131+ useGlobalDraftKey,
132+ } ) ;
133+ } ;
134+
135+ /**
136+ * Get object API data for microCMS
137+ */
138+ const getObject = async < T = any > ( {
139+ endpoint,
140+ queries = { } ,
141+ useGlobalDraftKey,
142+ } : GetObjectRequest ) : Promise < T & MicroCMSObjectContent > => {
143+ if ( ! endpoint ) {
144+ return Promise . reject ( new Error ( 'endpoint is required' ) ) ;
145+ }
146+ return await makeRequest < T & MicroCMSObjectContent > ( {
147+ endpoint,
148+ queries,
149+ useGlobalDraftKey,
150+ } ) ;
151+ } ;
152+
91153 return {
92154 get,
155+ getList,
156+ getListDetail,
157+ getObject,
93158 } ;
94159} ;
0 commit comments