1- import  {  WebflowClient  }  from  "webflow-api" ; 
1+ // Webflow version support here: https://www.npmjs.com/package/webflow-api?activeTab=versions 
2+ // @note : this is pinned to Webflow 1.3.1 
3+ // because the upgrade to version 2 requires a new app 
4+ import  Webflow  from  "[email protected] " ; 25import  constants  from  "./common/constants.mjs" ; 
36
47export  default  { 
58  type : "app" , 
69  app : "webflow" , 
710  propDefinitions : { 
811    domains : { 
9-       label : "Custom Domains " , 
10-       description : "Select one or more custom  domains to publish ." , 
12+       label : "Domain " , 
13+       description : "The list of  domains." , 
1114      type : "string[]" , 
1215      async  options ( {  siteId } )  { 
13-         const  domains  =  await  this . listDomains ( siteId ) ; 
14-         return  domains . map ( ( id ,  url )  =>  ( { 
15-           label : url , 
16-           id, 
17-         } ) ) ; 
16+         const  domains  =  await  this . getDomains ( siteId ) ; 
17+ 
18+         return  domains . map ( ( domain )  =>  domain . name ) ; 
1819      } , 
1920    } , 
2021    sites : { 
2122      label : "Site" , 
22-       description : "Select a site or provide a custom site ID. " , 
23+       description : "The list of sites " , 
2324      type : "string" , 
2425      async  options ( )  { 
25-         const  sites  =  await  this . listSites ( ) ; 
26+         const  sites  =  await  this . getSites ( ) ; 
2627
2728        return  sites . map ( ( site )  =>  ( { 
28-           label : site . displayName   ||   site . shortName , 
29-           value : site . id , 
29+           label : site . name , 
30+           value : site . _id , 
3031        } ) ) ; 
3132      } , 
3233    } , 
3334    collections : { 
3435      label : "Collection" , 
35-       description : "Select a  collection or provide a custom collection ID. " , 
36+       description : "The list of  collection of a site " , 
3637      type : "string" , 
3738      async  options ( {  siteId } )  { 
38-         const  collections  =  await  this . listCollections ( siteId ) ; 
39+         const  collections  =  await  this . getCollections ( siteId ) ; 
3940
4041        return  collections . map ( ( collection )  =>  ( { 
41-           label : collection . displayName   ||   collection . slug , 
42-           value : collection . id , 
42+           label : collection . name , 
43+           value : collection . _id , 
4344        } ) ) ; 
4445      } , 
4546    } , 
4647    items : { 
4748      label : "Item" , 
48-       description : "Select an item or provide  a custom item ID. " , 
49+       description : "The list of items of  a collection " , 
4950      type : "string" , 
5051      async  options ( { 
5152        collectionId,  page, 
5253      } )  { 
53-         const  items  =  await  this . listCollectionItems ( page ,  collectionId ) ; 
54+         const  items  =  await  this . getItems ( page ,  collectionId ) ; 
5455
5556        return  items . map ( ( item )  =>  ( { 
56-           label : item . fieldData ?. name   ||   item . fieldData ?. slug , 
57-           value : item . id , 
57+           label : item . name , 
58+           value : item . _id , 
5859        } ) ) ; 
5960      } , 
6061    } , 
6162    orders : { 
6263      label : "Order" , 
63-       description : "Select an order, or provide  a custom order ID. " , 
64+       description : "The list of orders of  a site " , 
6465      type : "string" , 
6566      async  options ( { 
6667        siteId,  page, 
6768      } )  { 
68-         const  items  =  await  this . listOrders ( { 
69+         const  items  =  await  this . getOrders ( { 
6970          page, 
7071          siteId, 
7172        } ) ; 
@@ -75,96 +76,179 @@ export default {
7576    } , 
7677  } , 
7778  methods : { 
79+     /** 
80+      * Get the auth access token; 
81+      * 
82+      * @returns  {string } The base auth access token. 
83+      */ 
7884    _authToken ( )  { 
7985      return  this . $auth . oauth_access_token ; 
8086    } , 
81-     webflowClient ( )  { 
82-       return  new  WebflowClient ( { 
83-         accessToken : this . _authToken ( ) , 
87+     /** 
88+      * Create a Webflow API client; 
89+      * 
90+      * @returns  {params } The Webflow API client. 
91+      */ 
92+     _createApiClient ( )  { 
93+       return  new  Webflow ( { 
94+         token : this . _authToken ( ) , 
8495      } ) ; 
8596    } , 
86-     async  createWebhook ( siteId ,  data )  { 
87-       return  this . webflowClient ( ) . webhooks . create ( siteId ,  data ) ; 
88-     } , 
89-     async  removeWebhook ( webhookId )  { 
90-       return  this . webflowClient ( ) . webhooks . delete ( webhookId ) ; 
97+     /** 
98+      * Create a Webflow webhook; 
99+      * 
100+      * @param  {siteId } ID of the site to be monitored. 
101+      * @param  {url } URL to webhook return. 
102+      * @param  {triggerType } Type of event that will be triggered. 
103+      * @param  {filter } Filters to be applied in webhook. 
104+      * 
105+      * @returns  {params } The Webflow webhook. 
106+      */ 
107+     async  createWebhook ( siteId ,  url ,  triggerType ,  filter  =  { } )  { 
108+       const  apiClient  =  this . _createApiClient ( ) ; 
109+ 
110+       return  apiClient . createWebhook ( { 
111+         siteId, 
112+         triggerType, 
113+         url, 
114+         filter, 
115+       } ) ; 
91116    } , 
92-     async  getOrder ( siteId ,  orderId )  { 
93-       return  this . webflowClient ( ) . orders . get ( siteId ,  orderId ) ; 
117+     /** 
118+      * Remove a Webflow webhook; 
119+      * 
120+      * @param  {siteId } ID of the site. 
121+      * @param  {webhookId } ID of the webhook. 
122+      */ 
123+     async  removeWebhook ( siteId ,  webhookId )  { 
124+       const  apiClient  =  this . _createApiClient ( ) ; 
125+       return  apiClient . removeWebhook ( { 
126+         siteId, 
127+         webhookId, 
128+       } ) ; 
94129    } , 
95-     async  listOrders ( { 
96-       page : offset  =  0 ,  siteId,  status, 
130+     /** 
131+      * Get an order; 
132+      * 
133+      * @param  {options } Options to filter the order. 
134+      * 
135+      * @returns  {params } An order. 
136+      */ 
137+     async  getOrder ( { 
138+       siteId,  orderId, 
139+     } )  { 
140+       const  apiClient  =  this . _createApiClient ( ) ; 
141+ 
142+       return  apiClient . get ( `/sites/${ siteId } ${ orderId }  ) ; 
143+     } , 
144+     /** 
145+      * Get a list of orders; 
146+      * 
147+      * @param  {options } Options to filter the orders. 
148+      * 
149+      * @returns  {params } A list of orders. 
150+      */ 
151+     async  getOrders ( { 
152+       page,  siteId,  status, 
97153    } )  { 
98-       const  response  =  await  this . webflowClient ( ) . orders . list ( siteId ,  { 
99-         offset, 
100-         status, 
154+       const  apiClient  =  this . _createApiClient ( ) ; 
155+ 
156+       return  apiClient . get ( `/sites/${ siteId }  ,  { 
157+         status : status , 
158+         offset : page  ??  0 , 
159+         limit : constants . LIMIT , 
101160      } ) ; 
102-       return  response ?. orders ; 
103-     } , 
104-     async  listDomains ( siteId )  { 
105-       const  response  =  await  this . webflowClient ( ) . sites . getCustomDomain ( siteId ) ; 
106-       return  response ?. customDomains ; 
107161    } , 
108-     getSite ( siteId )  { 
109-       return  this . webflowClient ( ) . sites . get ( siteId ) ; 
162+     /** 
163+      * Get a list of domains; 
164+      * 
165+      * @param  {options } Options to filter the domains. 
166+      * 
167+      * @returns  {params } A list of domains. 
168+      */ 
169+     async  getDomains ( siteId )  { 
170+       const  webflow  =  this . _createApiClient ( ) ; 
171+ 
172+       return  await  webflow . domains ( { 
173+         siteId, 
174+       } ) ; 
110175    } , 
111-     async  listSites ( )  { 
112-       const  response  =  await  this . webflowClient ( ) . sites . list ( ) ; 
113-       return  response ?. sites ; 
176+     /** 
177+      * Get a site; 
178+      * 
179+      * @param  {options } Options to filter the site. 
180+      * 
181+      * @returns  {params } A site. 
182+      */ 
183+     async  getSite ( siteId )  { 
184+       const  webflow  =  this . _createApiClient ( ) ; 
185+ 
186+       return  await  webflow . site ( { 
187+         siteId, 
188+       } ) ; 
114189    } , 
115-     getCollection ( collectionId )  { 
116-       return  this . webflowClient ( ) . collections . get ( collectionId ) ; 
190+     /** 
191+      * Get a list of sites; 
192+      * 
193+      * @param  {options } Options to filter the sites. 
194+      * 
195+      * @returns  {params } A list of sites. 
196+      */ 
197+     async  getSites ( )  { 
198+       const  webflow  =  this . _createApiClient ( ) ; 
199+ 
200+       return  await  webflow . sites ( ) ; 
201+     } , 
202+     /** 
203+      * Get a collection; 
204+      * 
205+      * @param  {options } Options to filter the collection. 
206+      * 
207+      * @returns  {params } A collection. 
208+      */ 
209+     async  getCollection ( collectionId )  { 
210+       const  webflow  =  this . _createApiClient ( ) ; 
211+ 
212+       return  await  webflow . collection ( { 
213+         collectionId, 
214+       } ) ; 
117215    } , 
118-     async  listCollections ( siteId )  { 
216+     /** 
217+      * Get a list of collections; 
218+      * 
219+      * @param  {options } Options to filter the collections. 
220+      * 
221+      * @returns  {params } A list of collections. 
222+      */ 
223+     async  getCollections ( siteId )  { 
224+       const  webflow  =  this . _createApiClient ( ) ; 
225+ 
119226      if  ( ! siteId )  return  [ ] ; 
120227
121-       const  response  =  await  this . webflowClient ( ) . collections . list ( siteId ) ; 
122-       return  response ?. collections ; 
228+       return  await  webflow . collections ( { 
229+         siteId : siteId , 
230+       } ) ; 
123231    } , 
124-     async  listCollectionItems ( page  =  0 ,  collectionId )  { 
232+     /** 
233+      * Get a list of items; 
234+      * 
235+      * @param  {options } Options to filter the items. 
236+      * 
237+      * @returns  {params } A list of items. 
238+      */ 
239+     async  getItems ( page  =  0 ,  collectionId )  { 
240+       const  webflow  =  this . _createApiClient ( ) ; 
241+ 
125242      if  ( ! collectionId )  return  [ ] ; 
126243
127-       const  response  =  await  this . webflowClient ( ) . collections . items . listItems ( collectionId ,  { 
244+       const  response  =  await  webflow . items ( { 
245+         collectionId, 
246+       } ,  { 
128247        limit : constants . LIMIT , 
129248        offset : page , 
130249      } ) ; 
131250
132-       return  response ?. items ; 
133-     } , 
134-     getCollectionItem ( collectionId ,  itemId )  { 
135-       return  this . webflowClient ( ) . collections . items . getItem ( collectionId ,  itemId ) ; 
136-     } , 
137-     deleteCollectionItem ( collectionId ,  itemId )  { 
138-       return  this . webflowClient ( ) . collections . items . deleteItem ( collectionId ,  itemId ) ; 
139-     } , 
140-     createCollectionItem ( collectionId ,  data )  { 
141-       return  this . webflowClient ( ) . collections . items . createItem ( collectionId ,  data ) ; 
142-     } , 
143-     updateCollectionItem ( collectionId ,  itemId ,  data )  { 
144-       return  this . webflowClient ( ) . collections . items . updateItem ( collectionId ,  itemId ,  data ) ; 
145-     } , 
146-     getCollectionItemInventory ( collectionId ,  itemId )  { 
147-       return  this . webflowClient ( ) . inventory . list ( collectionId ,  itemId ) ; 
148-     } , 
149-     updateCollectionItemInventory ( collectionId ,  itemId ,  data )  { 
150-       return  this . webflowClient ( ) . inventory . update ( collectionId ,  itemId ,  data ) ; 
151-     } , 
152-     publishSite ( siteId ,  customDomains )  { 
153-       return  this . webflowClient ( ) . sites . publish ( siteId ,  { 
154-         customDomains, 
155-       } ) ; 
156-     } , 
157-     fulfillOrder ( siteId ,  orderId ,  data )  { 
158-       return  this . webflowClient ( ) . orders . updateFulfill ( siteId ,  orderId ,  data ) ; 
159-     } , 
160-     unfulfillOrder ( siteId ,  orderId )  { 
161-       return  this . webflowClient ( ) . orders . updateUnfulfill ( siteId ,  orderId ) ; 
162-     } , 
163-     refundOrder ( siteId ,  orderId )  { 
164-       return  this . webflowClient ( ) . orders . refund ( siteId ,  orderId ) ; 
165-     } , 
166-     updateOrder ( siteId ,  orderId ,  data )  { 
167-       return  this . webflowClient ( ) . orders . update ( siteId ,  orderId ,  data ) ; 
251+       return  response ; 
168252    } , 
169253  } , 
170254} ; 
0 commit comments