@commercelayer/provisioning-sdk 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,9 +16,12 @@ A JavaScript Library wrapper that makes it quick and easy to interact with the [
16
16
  - [Installation](#installation)
17
17
  - [Authentication](#authentication)
18
18
  - [Import](#import)
19
+ - [Options](#options)
19
20
  - [SDK usage](#sdk-usage)
20
21
  - [Overriding credentials](#overriding-credentials)
21
22
  - [Handling validation errors](#handling-validation-errors)
23
+ - [Using interceptors](#using-interceptors)
24
+ - [Refreshing access token](#refreshing-access-token)
22
25
  - [Contributors guide](#contributors-guide)
23
26
  - [Need help?](#need-help)
24
27
  - [License](#license)
@@ -45,7 +48,7 @@ yarn add @commercelayer/provisioning-sdk
45
48
 
46
49
  All requests to Commerce Layer API must be authenticated with an [OAuth2](https://oauth.net/2) bearer token. Hence, before starting to use this SDK you need to get a valid access token. Kindly check [our documentation](https://docs.commercelayer.io/provisioning/authentication) for more information about the available authorization flows.
47
50
 
48
- > Feel free to use [Commerce Layer Provisioning Auth](https://github.com/commercelayer/commercelayer-js-auth), a JavaScript library that helps you wrap our authentication API.
51
+ > Feel free to use [Commerce Layer JS Auth](https://github.com/commercelayer/commercelayer-js-auth), a JavaScript library that helps you wrap our authentication API.
49
52
 
50
53
  ### Import
51
54
 
@@ -54,14 +57,44 @@ You can use the ES6 default import with the SDK like so:
54
57
  ```javascript
55
58
  import CommerceLayerProvisioning from '@commercelayer/provisioning-sdk'
56
59
 
57
- const clp = CommerceLayerProvisioning({
60
+ const cl = CommerceLayer({
58
61
  accessToken: 'your-access-token'
59
62
  })
60
63
  ```
61
64
 
65
+ ### Options
66
+
67
+ When instantiating a new SDK client you can pass some options to initialize it:
68
+
69
+ ```javascript
70
+ {
71
+ accessToken: string // A valid API access token
72
+ timeout?: number // A custom request timout (<= 15 secs [default])
73
+ headers?: RequestHeaders // Custom request headers
74
+ userAgent?: string // Custom user-agent useful in certaing contexts but often not allowed by browsers
75
+ fetch?: Fetch // A specific fetch implementation
76
+ refreshToken?: RefreshToken // A function responsible for token refresh
77
+ }
78
+ ```
79
+
80
+ Same options can be changed after SDK initialization or passed at runtime while executing an API call:
81
+
82
+ ```javascript
83
+ const options = { ... }
84
+
85
+ // Instantiate the client using desired options
86
+ const clp = CommerceLayer(options)
87
+
88
+ // Change configuration after client cteation
89
+ clp.config(options)
90
+
91
+ // Use runtime configuration without persisting settings
92
+ clp.customers.organizations({}, options)
93
+ ```
94
+
62
95
  ## SDK usage
63
96
 
64
- The JavaScript SDK is a wrapper around Commerce Layer Provisioning API which means you would still be making API requests but with a different syntax. For now, we don't have comprehensive SDK documentation for every single resource our API supports, hence you will need to rely on our comprehensive [Provisioning API Reference](https://docs.commercelayer.io/provisioning/v/api-reference-p) as you go about using this SDK. So for example, if you want to create a role, take a look at the [Role object](https://docs.commercelayer.io/provisioning/v/api-reference-p/role/object) or the [Create a role](https://docs.commercelayer.io/provisioning/v/api-reference-p/roles/create) documentation to see the required attributes and/or relationships. The same goes for every other supported resource.
97
+ The JavaScript Provisioning SDK is a wrapper around Commerce Layer Provisioning API which means you would still be making API requests but with a different syntax. For now, we don't have comprehensive SDK documentation for every single resource our API supports, hence you will need to rely on our comprehensive [Provisioning API Reference](https://docs.commercelayer.io/provisioning/v/api-reference-p) as you go about using this SDK. So for example, if you want to create a role, take a look at the [Role object](https://docs.commercelayer.io/provisioning/v/api-reference-p/role/object) or the [Create a role](https://docs.commercelayer.io/provisioning/v/api-reference-p/roles/create) documentation to see the required attributes and/or relationships. The same goes for every other supported resource.
65
98
 
66
99
  The code snippets below show how to use the SDK when performing the standard CRUD operations provided by our REST API. Kindly check our [Provisioning API reference](https://docs.commercelayer.io/provisioning/v/api-reference-p) for the complete list of available **resources** and their **attributes**.
67
100
 
@@ -254,10 +287,10 @@ Many resources have relationships with other resources and instead of including
254
287
 
255
288
  ```javascript
256
289
  // Fetch 1-to-1 related resource: billing address of an order
257
- const org = clp.memberships.organization('xYZkjABcde')
290
+ const org = await clp.memberships.organization('xYZkjABcde')
258
291
 
259
292
  // Fetch 1-to-N related resources: orders associated to a customer
260
- const perms = clp.roles.permissions('XyzKjAbCDe', { fields: ['can_create', 'can_update'] })
293
+ const perms = await clp.roles.permissions('XyzKjAbCDe', { fields: ['can_create', 'can_update'] })
261
294
  ```
262
295
 
263
296
  In general:
@@ -280,7 +313,7 @@ resources.
280
313
 
281
314
  ```javascript
282
315
  // Get the total number of sales_channel credentials
283
- const credentials = clp.api_credentials.count({ filters: { kind_eq: 'sales_channel' } })
316
+ const credentials = await clp.api_credentials.count({ filters: { kind_eq: 'sales_channel' } })
284
317
 
285
318
  ```
286
319
 
@@ -367,7 +400,77 @@ Commerce Layer Provisioning API returns specific errors (with extra information)
367
400
 
368
401
  ```
369
402
 
370
- ℹ️ Check our API reference for more information about the [errors](https://docs.commercelayer.io/provisioning/handling-errors) returned by the API.
403
+ ℹ️ Check our API reference for more information about the [errors](https://docs.commercelayer.io/developers/handling-errors) returned by the API.
404
+
405
+ ## Using interceptors
406
+
407
+ You can use interceptors to intercept SDK messages and modify them on the fly before the request is sent to the API or before the response is parsed and returned by the client. You can also access the error object before it is thrown by the SDK.
408
+
409
+ Interceptors are special functions that are able to handle SDK messages and return a (eventually) modified version of them for use by the client.
410
+
411
+ ```javascript
412
+ const requestInterceptor = (request: RequestObj): RequestObj => {
413
+ console.log(request)
414
+ return request
415
+ }
416
+
417
+ const responseInterceptor = (response: ResponseObj): ResponseObj => {
418
+ console.log(response)
419
+ return response
420
+ }
421
+
422
+ const errorInterceptor = (error: ErrorObj): ErrorObj => {
423
+ console.log(error)
424
+ return error
425
+ }
426
+ ```
427
+
428
+ Here an example of how to use them:
429
+
430
+ ```javascript
431
+ // Add the interceptors (only one or all if needed)
432
+ clp.addRequestInterceptor(requestInterceptor)
433
+ clp.addResponseInterceptor(responseInterceptor, errorInterceptor)
434
+
435
+ const organizations = await clp.organizations.list()
436
+
437
+ // Remove interceptors
438
+ // Tt is possible to remove only a specific interceptor: cl.removeInterceptor('request')
439
+ cl.removeInterceptors()
440
+ ```
441
+
442
+ #### Raw Response Reader
443
+
444
+ The *RawResponseReader* is a special interceptor that allows to catch the original message coming frome the API before it is parsed and translated in SDK objects.
445
+
446
+ ```javascript
447
+ // Add a RawResponseReader capable of capturing also response headers
448
+ const rrr = clp.addRawResponseReader({ headers: true })
449
+
450
+ const organizations = await clp.organizations.list()
451
+
452
+ cl.removeRawResponseReader()
453
+
454
+ console.log(rrr.rawResponse)
455
+ console.log(rrr.headers)
456
+ ```
457
+
458
+ ## Refreshing access token
459
+
460
+ It is possible that you are using an access token that is about to expire especially if it has been used for many API calls.
461
+ In this case you can define a special function that takes care of refreshing the token when a call fails because it has expired.
462
+
463
+ ```javascript
464
+ async function myRefreshTokenFunction(espiredToken: string): Promise<string> {
465
+ // Get a new access token using for example our js-auth library
466
+ return (await getAccessToken()).accessToken
467
+ }
468
+
469
+ cl.config({ refreshToken: myRefreshTokenFunction })
470
+
471
+ // If needed you can later retrieve the new access token
472
+ const newToken = cl.currentAccessToken
473
+ ```
371
474
 
372
475
  ## Contributors guide
373
476
 
package/lib/index.d.mts CHANGED
@@ -47,12 +47,14 @@ type RawResponseReader = {
47
47
 
48
48
  type RequestParams = Record<string, string | number | boolean>;
49
49
  type RequestHeaders = Record<string, string>;
50
+ type RefreshToken = (expiredToken: string) => Promise<string>;
50
51
  type RequestConfig = {
51
52
  timeout?: number;
52
53
  params?: RequestParams;
53
54
  headers?: RequestHeaders;
54
55
  userAgent?: string;
55
56
  fetch?: Fetch;
57
+ refreshToken?: RefreshToken;
56
58
  };
57
59
  type ApiConfig = {
58
60
  domain?: string;
@@ -71,6 +73,7 @@ declare class ApiClient {
71
73
  userAgent(userAgent: string): this;
72
74
  request(method: Method, path: string, body?: any, options?: ApiClientConfig): Promise<FetchResponse>;
73
75
  private customHeaders;
76
+ get currentAccessToken(): string;
74
77
  }
75
78
 
76
79
  type Nullable<T> = T | null;
@@ -1035,7 +1038,8 @@ declare enum ErrorType {
1035
1038
  RESPONSE = "response",// Error response from API
1036
1039
  CANCEL = "cancel",// Forced request abort using interceptor
1037
1040
  PARSE = "parse",// Error parsing API resource
1038
- TIMEOUT = "timeout"
1041
+ TIMEOUT = "timeout",// Timeout error
1042
+ TOKEN_REFRESH = "token-refresh"
1039
1043
  }
1040
1044
  declare class SdkError extends Error {
1041
1045
  static NAME: string;
@@ -1073,6 +1077,7 @@ declare class CommerceLayerProvisioningClient {
1073
1077
  get roles(): Roles;
1074
1078
  get user(): Users;
1075
1079
  get versions(): Versions;
1080
+ get currentAccessToken(): string;
1076
1081
  private get interceptors();
1077
1082
  private localConfig;
1078
1083
  config(config: CommerceLayerConfig): this;
@@ -1083,10 +1088,11 @@ declare class CommerceLayerProvisioningClient {
1083
1088
  addRequestInterceptor(onSuccess?: RequestInterceptor, onFailure?: ErrorInterceptor): number;
1084
1089
  addResponseInterceptor(onSuccess?: ResponseInterceptor, onFailure?: ErrorInterceptor): number;
1085
1090
  removeInterceptor(type: InterceptorType, id?: number): void;
1091
+ removeInterceptors(): void;
1086
1092
  addRawResponseReader(options?: {
1087
1093
  headers: boolean;
1088
1094
  }): RawResponseReader;
1089
- removeRawResponseReader(reader?: number | RawResponseReader): void;
1095
+ removeRawResponseReader(): void;
1090
1096
  }
1091
1097
  declare const CommerceLayerProvisioning: (config: CommerceLayerInitConfig) => CommerceLayerProvisioningClient;
1092
1098
 
package/lib/index.d.ts CHANGED
@@ -47,12 +47,14 @@ type RawResponseReader = {
47
47
 
48
48
  type RequestParams = Record<string, string | number | boolean>;
49
49
  type RequestHeaders = Record<string, string>;
50
+ type RefreshToken = (expiredToken: string) => Promise<string>;
50
51
  type RequestConfig = {
51
52
  timeout?: number;
52
53
  params?: RequestParams;
53
54
  headers?: RequestHeaders;
54
55
  userAgent?: string;
55
56
  fetch?: Fetch;
57
+ refreshToken?: RefreshToken;
56
58
  };
57
59
  type ApiConfig = {
58
60
  domain?: string;
@@ -71,6 +73,7 @@ declare class ApiClient {
71
73
  userAgent(userAgent: string): this;
72
74
  request(method: Method, path: string, body?: any, options?: ApiClientConfig): Promise<FetchResponse>;
73
75
  private customHeaders;
76
+ get currentAccessToken(): string;
74
77
  }
75
78
 
76
79
  type Nullable<T> = T | null;
@@ -1035,7 +1038,8 @@ declare enum ErrorType {
1035
1038
  RESPONSE = "response",// Error response from API
1036
1039
  CANCEL = "cancel",// Forced request abort using interceptor
1037
1040
  PARSE = "parse",// Error parsing API resource
1038
- TIMEOUT = "timeout"
1041
+ TIMEOUT = "timeout",// Timeout error
1042
+ TOKEN_REFRESH = "token-refresh"
1039
1043
  }
1040
1044
  declare class SdkError extends Error {
1041
1045
  static NAME: string;
@@ -1073,6 +1077,7 @@ declare class CommerceLayerProvisioningClient {
1073
1077
  get roles(): Roles;
1074
1078
  get user(): Users;
1075
1079
  get versions(): Versions;
1080
+ get currentAccessToken(): string;
1076
1081
  private get interceptors();
1077
1082
  private localConfig;
1078
1083
  config(config: CommerceLayerConfig): this;
@@ -1083,10 +1088,11 @@ declare class CommerceLayerProvisioningClient {
1083
1088
  addRequestInterceptor(onSuccess?: RequestInterceptor, onFailure?: ErrorInterceptor): number;
1084
1089
  addResponseInterceptor(onSuccess?: ResponseInterceptor, onFailure?: ErrorInterceptor): number;
1085
1090
  removeInterceptor(type: InterceptorType, id?: number): void;
1091
+ removeInterceptors(): void;
1086
1092
  addRawResponseReader(options?: {
1087
1093
  headers: boolean;
1088
1094
  }): RawResponseReader;
1089
- removeRawResponseReader(reader?: number | RawResponseReader): void;
1095
+ removeRawResponseReader(): void;
1090
1096
  }
1091
1097
  declare const CommerceLayerProvisioning: (config: CommerceLayerInitConfig) => CommerceLayerProvisioningClient;
1092
1098
 
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var ue=Object.defineProperty;var Ze=Object.getOwnPropertyDescriptor;var er=Object.getOwnPropertyNames;var rr=Object.prototype.hasOwnProperty;var sr=(t,e)=>{for(var r in e)ue(t,r,{get:e[r],enumerable:!0})},tr=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of er(e))!rr.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(s=Ze(e,i))||s.enumerable});return t};var ir=t=>tr(ue({},"__esModule",{value:!0}),t);var je=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)};var n=(t,e,r)=>(je(t,e,"read from private field"),r?r.call(t):e.get(t)),c=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},p=(t,e,r,s)=>(je(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r);var Rr={};sr(Rr,{CommerceLayerProvisioning:()=>Ue,CommerceLayerProvisioningStatic:()=>b,default:()=>ne});module.exports=ir(Rr);var or=(t,...e)=>{},$e=t=>or;try{let t=require("debug");t&&typeof t=="function"&&($e=t)}catch{}var nr="clsdk",ar=t=>$e(`${nr}:${t}`),g=ar;var pr=g("fetch"),k,q,j,ee=class ee extends Error{constructor(r,s,i){super(s);c(this,k,void 0);c(this,q,void 0);c(this,j,void 0);p(this,q,r),p(this,j,s),i&&p(this,k,i.errors)}get errors(){return n(this,k)}get status(){return n(this,q)}get statusText(){return n(this,j)}};k=new WeakMap,q=new WeakMap,j=new WeakMap,ee.isFetchError=r=>r instanceof ee;var U=ee,Ve=async(t,e,r)=>{pr("fetch: %s, %O, native[%s]",t,e||{},r?.fetch?"no":"yes");let s=r?.interceptors;s?.request?.onSuccess&&({url:t,options:e}=await s.request.onSuccess({url:t,options:e}));let o=await(r?.fetch||fetch)(t,e);o.ok?(s?.rawReader?.onSuccess&&await s.rawReader.onSuccess(o),s?.response?.onSuccess&&(o=await s.response.onSuccess(o))):s?.rawReader?.onFailure&&await s.rawReader.onFailure(o);let a=await o.json().catch(()=>{});if(!o.ok){let u=new U(o.status,o.statusText,a);if(s?.response?.onFailure&&(u=await s.response.onFailure(u)),u)throw u}return a};var re=(a=>(a.CLIENT="client",a.REQUEST="request",a.RESPONSE="response",a.CANCEL="cancel",a.PARSE="parse",a.TIMEOUT="timeout",a))(re||{}),$=class $ extends Error{static isSdkError(e){return e&&[$.NAME,S.NAME].includes(e.name)&&Object.values(re).includes(e.type)}constructor(e){super(e.message),this.name=$.NAME,this.type=e.type||"client"}};$.NAME="SdkError";var m=$,V=class V extends m{constructor(r){super({...r,type:"response"});this.errors=[];this.name=V.NAME}static isApiError(r){return m.isSdkError(r)&&r.name===V.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};V.NAME="ApiError";var S=V,cr=t=>t instanceof TypeError,lr=t=>t instanceof DOMException&&t.name==="AbortError",ur=t=>t instanceof DOMException&&t.name==="TimeoutError",Fe=t=>{let e=new m({message:t.message});if(U.isFetchError(t)){let r=new S(e);r.type="response",r.status=t.status,r.statusText=t.statusText,r.code=String(r.status),r.errors=t.errors||[],!r.message&&r.statusText&&(r.message=r.statusText),e=r}else cr(t)?e.type="request":lr(t)?e.type="cancel":ur(t)?e.type="timeout":(e.type="client",e.source=t);throw e};var mr={default:{domain:"commercelayer.io",pageNumber:1,pageSize:10},client:{timeout:15e3,requiredAttributes:["accessToken"]},jsonapi:{maxResourceIncluded:2}},h=mr;var F=g("client"),me=t=>`https://provisioning.${t||h.default.domain}/api`,_,T,f,D,Re=class Re{constructor(e){c(this,_,void 0);c(this,T,void 0);c(this,f,void 0);c(this,D,void 0);F("new client instance %O",e),p(this,_,me(e.domain)),p(this,T,e.accessToken);let r={timeout:e.timeout||h.client.timeout},i={...this.customHeaders(e.headers),Accept:"application/vnd.api+json","Content-Type":"application/vnd.api+json",Authorization:"Bearer "+n(this,T)},o=e.userAgent;o&&(i["User-Agent"]=o),r.headers=i,p(this,f,r),F("fetch config: %O",r),p(this,D,{})}static create(e){for(let r of h.client.requiredAttributes)if(!e||!e[r])throw new m({message:`Undefined '${r}' parameter`});return new Re(e)}get interceptors(){return n(this,D)}get requestHeaders(){return n(this,f).headers||(n(this,f).headers={}),n(this,f).headers}config(e){F("config %o",e);let r=n(this,f);return r.headers||(r.headers={}),e.timeout&&(r.timeout=e.timeout),e.userAgent&&this.userAgent(e.userAgent),e.fetch&&(n(this,f).fetch=e.fetch),e.domain&&p(this,_,me(e.domain)),e.accessToken&&(p(this,T,e.accessToken),r.headers.Authorization="Bearer "+n(this,T)),e.headers&&(r.headers={...r.headers,...this.customHeaders(e.headers)}),this}userAgent(e){return e&&(this.requestHeaders["User-Agent"]=e),this}async request(e,r,s,i){F("request %s %s, %O, %O",e,r,s||{},i||{}),i?.userAgent&&F("User-Agent header ignored in request config");let o=i?.domain?me(i.domain):n(this,_),a=new URL(`${o}/${r}`),u=s?JSON.stringify({data:s}):void 0,C={...this.requestHeaders,...this.customHeaders(i?.headers)},w=i?.accessToken||n(this,T);w&&(C.Authorization="Bearer "+w);let ke={method:e,body:u,headers:C},qe=i?.timeout||n(this,f).timeout;qe&&(ke.signal=AbortSignal.timeout(qe)),i?.params&&Object.entries(i?.params).forEach(([le,Xe])=>{a.searchParams.append(le,String(Xe))});let Ke={interceptors:this.interceptors,fetch:i?.fetch||n(this,f).fetch};return await Ve(a,ke,Ke).catch(le=>Fe(le))}customHeaders(e){let r={};if(e)for(let[s,i]of Object.entries(e))["accept","content-type","authorization","user-agent"].includes(s.toLowerCase())||(r[s]=i);return r}};_=new WeakMap,T=new WeakMap,f=new WeakMap,D=new WeakMap;var ye=Re,De=ye;var v=t=>t?.type&&t.id&&L.includes(t.type),de=t=>t&&typeof t.type<"u"&&t.type&&L.includes(t.type);var se=g("jsonapi"),M=t=>{let e;t.links&&delete t.links;let r=t.data,s=t.included;return r?Array.isArray(r)?e=r.map(i=>te(i,s)):e=te(r,s):e=r,e},Ye=(t,e=[])=>e.find(s=>t.id===s.id&&t.type===s.type)||t,te=(t,e,r=[])=>{if(se("denormalize resource: %O, %o",t,e||{}),!t)return t;let s={id:t.id,type:t.type,...t.attributes};return t.relationships&&Object.keys(t.relationships).forEach(i=>{let o=t.relationships[i].data;o?r.filter(a=>a.id===o.id&&a.type===o.type).length>=h.jsonapi.maxResourceIncluded?s[i]=o:Array.isArray(o)?s[i]=o.map(a=>te(Ye(a,e),e,[...r,a])):s[i]=te(Ye(o,e),e,[...r,o]):o===null&&(s[i]=null)}),se("denormalized resource: %O",s),s},ie=t=>{se("normalize resource: %O",t);let e={},r={};for(let i in t){if(["type","id"].includes(i))continue;let o=t[i];Array.isArray(o)&&o.length===1&&de(o[0])&&o[0].id===null?r[i]={data:[]}:o&&de(o)&&o.id===null?r[i]={data:null}:o&&(v(o)||Array.isArray(o)&&v(o[0]))?r[i]={data:o}:e[i]=o}let s={type:t.type,attributes:e,relationships:r};return v(t)&&(s.id=t.id),se("normalized resource: %O",s),s};var He=g("query"),We=["_any","_all","_in"],Je=["_jcont"],ge=t=>t&&(t.filters||t.pageNumber||t.pageSize||t.sort),Q=(t,e)=>{He("generate query string params: %O, %O",t,e);let r={};return t&&(t.include&&(r.include=t.include.join(",")),t.fields&&(Array.isArray(t.fields)&&(t.fields={[e.type||e]:t.fields}),Object.entries(t.fields).forEach(([s,i])=>{r[`fields[${s}]`]=i.join(",")})),ge(t)&&(t.sort&&(Array.isArray(t.sort)?r.sort=t.sort.join(","):r.sort=Object.entries(t.sort).map(([s,i])=>`${i==="desc"?"-":""}${s}`).join(",")),t.pageNumber&&(r["page[number]"]=String(t.pageNumber)),t.pageSize&&(r["page[size]"]=String(t.pageSize)),t.filters&&Object.entries(t.filters).forEach(([s,i])=>{let o=s.substring(s.lastIndexOf("_")),a;if(Array.isArray(i)){if(!We.includes(o))throw new m({message:`Wrong ${o} filter: Array value is supported only for the following filters: ${We.join(", ")}`,type:"request"});a=i.join(",")}else if(typeof i=="object"){if(!Je.includes(o))throw new m({message:`Wrong ${o} filter: Object value is supported only for the following filters: ${Je.join(", ")}`,type:"request"});a=JSON.stringify(i)}else a=String(i);r[`filter[q][${s}]`]=a})),He("query string params: %O",r)),r};var b={resources:t=>t?[...L].sort():L,singletons:t=>t?[...oe].sort():oe,isSingleton:t=>oe.includes(t),isSdkError:t=>m.isSdkError(t),isApiError:t=>S.isApiError(t),init:t=>ne(t),get schemaVersion(){return he}};var P=g("resource"),ae=class extends Array{constructor(e,r){super(...r||[]),this.meta=e}first(){return this.length?this[0]:void 0}last(){return this.length?this[this.length-1]:void 0}get(e){return this.length&&e>=0?this[e]:void 0}hasNextPage(){return this.meta.currentPage<this.meta.pageCount}hasPrevPage(){return this.meta.currentPage>1}getRecordCount(){return this.meta.recordCount}getPageCount(){return this.meta.pageCount}get recordCount(){return this.meta.recordCount}get pageCount(){return this.meta.pageCount}};var d,be,fe=class{constructor(e){c(this,d,void 0);c(this,be,{});p(this,d,De.create(e)),this.localConfig(e)}localConfig(e){}config(e){return P("config %o",e),this.localConfig(e),n(this,d).config(e),this}get client(){return n(this,d)}async retrieve(e,r,s){let i=!("id"in e)||b.isSingleton(e.type);P("retrieve:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=Q(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,u=await n(this,d).request("GET",a,void 0,{...s,params:o});return M(u)}async list(e,r,s){P("list: %o, %O, %O",e,r||{},s||{});let i=Q(r,e);s?.params&&Object.assign(i,s?.params);let o=await n(this,d).request("GET",`${e.type}`,void 0,{...s,params:i}),a=M(o),u={pageCount:Number(o.meta?.page_count),recordCount:Number(o.meta?.record_count),currentPage:r?.pageNumber||h.default.pageNumber,recordsPerPage:r?.pageSize||h.default.pageSize};return new ae(u,a)}async create(e,r,s){P("create: %o, %O, %O",e,r||{},s||{});let i=Q(r,e);s?.params&&Object.assign(i,s?.params);let o=ie(e),a=await n(this,d).request("POST",e.type,o,{...s,params:i});return M(a)}async update(e,r,s){let i=!("id"in e)||b.isSingleton(e.type);P("update:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=Q(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,u=ie(e),C=await n(this,d).request("PATCH",a,u,{...s,params:o});return M(C)}async delete(e,r){P("delete: %o, %O",e,r||{}),await n(this,d).request("DELETE",`${e.type}/${e.id}`,void 0,r)}async fetch(e,r,s,i){P("fetch: %o, %O, %O",r,s||{},i||{});let o=Q(s,e);i?.params&&Object.assign(o,i?.params);let a=await n(this,d).request("GET",r,void 0,{...i,params:o}),u=M(a);if(Array.isArray(u)){let C=s,w={pageCount:Number(a.meta?.page_count),recordCount:Number(a.meta?.record_count),currentPage:C?.pageNumber||h.default.pageNumber,recordsPerPage:C?.pageSize||h.default.pageSize};return new ae(w,u)}else return u}async action(e,r,s,i){P("action: %o %o, %O",e,r,i||{});let o={};i?.params&&Object.assign(o,i?.params);let a=s&&v(s)?ie(s):s;await n(this,d).request(e,r,a,{...i,params:o})}};d=new WeakMap,be=new WeakMap;var pe=class{constructor(e){P("new resource instance: %s",this.type()),this.resources=e}relationshipOneToOne(e){return e===null||typeof e=="string"?{id:e,type:this.type()}:{id:e.id,type:this.type()}}relationshipOneToMany(...e){return e===null||e.length===0||e[0]===null?[{id:null,type:this.type()}]:e.map(r=>({id:r,type:this.type()}))}parse(e){try{let r=JSON.parse(e);if(r.data?.type!==this.type())throw new m({message:`Invalid resource type [${r.data?.type}]`,type:"parse"});return M(r)}catch(r){throw m.isSdkError(r)?r:new m({message:`Payload parse error [${r.message}]`,type:"parse"})}}async update(e,r,s){return this.resources.update({...e,type:this.type()},r,s)}},y=class extends pe{async retrieve(e,r,s){return this.resources.retrieve(typeof e=="string"?{type:this.type(),id:e}:e,r,s)}async list(e,r){return this.resources.list({type:this.type()},e,r)}async count(e,r){let s={filters:ge(e)?e.filters:e,pageNumber:1,pageSize:1},i=await this.list(s,r);return Promise.resolve(i.meta.recordCount)}},ce=class extends pe{async retrieve(e,r){return this.resources.retrieve({type:this.type()},e,r)}},Be=fe;var A=class A extends y{async create(e,r,s){return this.resources.create({...e,type:A.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:A.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:A.TYPE}:e,r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`api_credentials/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`api_credentials/${i}/role`,r,s)}isApiCredential(e){return e.type&&e.type===A.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return A.TYPE}};A.TYPE="api_credentials";var Pe=A,Ce=Pe;var O=class O extends y{async create(e,r,s){return this.resources.create({...e,type:O.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:O.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:O.TYPE}:e,r)}async api_credential(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`application_memberships/${i}/api_credential`,r,s)}async membership(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`application_memberships/${i}/membership`,r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`application_memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`application_memberships/${i}/role`,r,s)}isApplicationMembership(e){return e.type&&e.type===O.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return O.TYPE}};O.TYPE="application_memberships";var Te=O,Ae=Te;var x=class x extends y{async create(e,r,s){return this.resources.create({...e,type:x.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:x.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:x.TYPE}:e,r)}async resend(e,r){let s=e.id||e;await this.resources.action("POST",`memberships/${s}/resend`,{},r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`memberships/${i}/role`,r,s)}async application_memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"application_memberships"},`memberships/${i}/application_memberships`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`memberships/${i}/versions`,r,s)}isMembership(e){return e.type&&e.type===x.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return x.TYPE}};x.TYPE="memberships";var Oe=x,xe=Oe;var z=class z extends y{async create(e,r,s){return this.resources.create({...e,type:z.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:z.TYPE},r,s)}async transfer_ownership(e,r,s){let i=e.id||e;await this.resources.action("PATCH",`organizations/${i}/transfer_ownership`,{...r},s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`organizations/${i}/memberships`,r,s)}async roles(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`organizations/${i}/roles`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`organizations/${i}/permissions`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`organizations/${i}/api_credentials`,r,s)}isOrganization(e){return e.type&&e.type===z.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return z.TYPE}};z.TYPE="organizations";var Me=z,ze=Me;var E=class E extends y{async create(e,r,s){return this.resources.create({...e,type:E.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:E.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`permissions/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`permissions/${i}/role`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`permissions/${i}/versions`,r,s)}isPermission(e){return e.type&&e.type===E.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return E.TYPE}};E.TYPE="permissions";var Ee=E,Ne=Ee;var N=class N extends y{async create(e,r,s){return this.resources.create({...e,type:N.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:N.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`roles/${i}/organization`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`roles/${i}/permissions`,r,s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`roles/${i}/memberships`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`roles/${i}/api_credentials`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`roles/${i}/versions`,r,s)}isRole(e){return e.type&&e.type===N.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return N.TYPE}};N.TYPE="roles";var Se=N,_e=Se;var I=class I extends ce{async update(e,r,s){let i=await this.retrieve(r,s);return this.resources.update({...e,id:i.id,type:I.TYPE},r,s)}isUser(e){return e.type&&e.type===I.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return I.TYPE}};I.TYPE="user";var ve=I,Le=ve;var Y=class Y extends y{isVersion(e){return e.type&&e.type===Y.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return Y.TYPE}};Y.TYPE="versions";var Qe=Y,Ie=Qe;var L=["api_credentials","application_memberships","memberships","organizations","permissions","roles","user","versions"],oe=["user"];var Ge=g("commercelayer"),he="1.0.5";var R,H,W,J,B,G,K,X,Z,we=class{constructor(e){this.openApiSchemaVersion=he;c(this,R,void 0);c(this,H,void 0);c(this,W,void 0);c(this,J,void 0);c(this,B,void 0);c(this,G,void 0);c(this,K,void 0);c(this,X,void 0);c(this,Z,void 0);Ge("new commercelayer provisioning instance %O",e),p(this,R,new Be(e))}get api_credentials(){return n(this,H)||p(this,H,new Ce(n(this,R)))}get application_memberships(){return n(this,W)||p(this,W,new Ae(n(this,R)))}get memberships(){return n(this,J)||p(this,J,new xe(n(this,R)))}get organizations(){return n(this,B)||p(this,B,new ze(n(this,R)))}get permissions(){return n(this,G)||p(this,G,new Ne(n(this,R)))}get roles(){return n(this,K)||p(this,K,new _e(n(this,R)))}get user(){return n(this,X)||p(this,X,new Le(n(this,R)))}get versions(){return n(this,Z)||p(this,Z,new Ie(n(this,R)))}get interceptors(){return n(this,R).client.interceptors}localConfig(e){}config(e){return Ge("config %o",e),this.localConfig(e),n(this,R).config(e),this}resources(){return b.resources()}singletons(){return b.singletons()}isSingleton(e){return b.isSingleton(e)}isApiError(e){return b.isApiError(e)}addRequestInterceptor(e,r){return this.interceptors.request={onSuccess:e,onFailure:r},1}addResponseInterceptor(e,r){return this.interceptors.response={onSuccess:e,onFailure:r},1}removeInterceptor(e,r=1){this.interceptors[e]=void 0}addRawResponseReader(e){let r={id:0,rawResponse:void 0,headers:void 0,ok:!0};async function s(i){if(r.rawResponse=await i?.clone().json().catch(()=>{}),r.ok=i.ok,e?.headers){let o={};i.headers.forEach((a,u)=>{o[u]=a}),r.headers=o}return i}return this.interceptors.rawReader={onSuccess:s,onFailure:s},r.id=1,r}removeRawResponseReader(e=1){this.interceptors.rawReader=void 0}};R=new WeakMap,H=new WeakMap,W=new WeakMap,J=new WeakMap,B=new WeakMap,G=new WeakMap,K=new WeakMap,X=new WeakMap,Z=new WeakMap;var Ue=t=>new we(t),ne=Ue;0&&(module.exports={CommerceLayerProvisioning,CommerceLayerProvisioningStatic});
1
+ "use strict";var de=Object.defineProperty;var or=Object.getOwnPropertyDescriptor;var nr=Object.getOwnPropertyNames;var ar=Object.prototype.hasOwnProperty;var We=t=>{throw TypeError(t)};var pr=(t,e)=>{for(var r in e)de(t,r,{get:e[r],enumerable:!0})},cr=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of nr(e))!ar.call(t,i)&&i!==r&&de(t,i,{get:()=>e[i],enumerable:!(s=or(e,i))||s.enumerable});return t};var lr=t=>cr(de({},"__esModule",{value:!0}),t);var Je=(t,e,r)=>e.has(t)||We("Cannot "+r);var n=(t,e,r)=>(Je(t,e,"read from private field"),r?r.call(t):e.get(t)),l=(t,e,r)=>e.has(t)?We("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),c=(t,e,r,s)=>(Je(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r);var br={};pr(br,{CommerceLayerProvisioning:()=>De,CommerceLayerProvisioningStatic:()=>P,default:()=>le});module.exports=lr(br);var ur=(t,...e)=>{},Be=t=>ur;try{let t=require("debug");t&&typeof t=="function"&&(Be=t)}catch{}var mr="clsdk",yr=t=>Be(`${mr}:${t}`),h=yr;var ge=h("fetch"),V,D,Y,oe=class oe extends Error{constructor(r,s,i){super(s);l(this,V);l(this,D);l(this,Y);c(this,D,r),c(this,Y,s),i&&c(this,V,i.errors)}get errors(){return n(this,V)}get status(){return n(this,D)}get statusText(){return n(this,Y)}};V=new WeakMap,D=new WeakMap,Y=new WeakMap,oe.isFetchError=r=>r instanceof oe;var F=oe,he=async(t,e,r)=>{ge("fetch: %s, %O, native[%s]",t,e||{},r?.fetch?"no":"yes");let s=r?.interceptors;s?.request?.onSuccess&&({url:t,options:e}=await s.request.onSuccess({url:t,options:e}));let o=await(r?.fetch||fetch)(t,e);o.ok?(s?.rawReader?.onSuccess&&await s.rawReader.onSuccess(o),s?.response?.onSuccess&&(o=await s.response.onSuccess(o))):s?.rawReader?.onFailure&&await s.rawReader.onFailure(o);let a=o.body&&o.status!==204?await o.json().then(p=>(ge("response: %O",p),p)).catch(p=>{if(ge("error: %s",p.message),o.ok)throw new m({message:"Error parsing API response body",type:"parse"})}):void 0;if(!o.ok){let p=new F(o.status,o.statusText,a);if(s?.response?.onFailure&&(p=await s.response.onFailure(p)),p)throw p}return a};var L=(p=>(p.CLIENT="client",p.REQUEST="request",p.RESPONSE="response",p.CANCEL="cancel",p.PARSE="parse",p.TIMEOUT="timeout",p.TOKEN_REFRESH="token-refresh",p))(L||{}),H=class H extends Error{static isSdkError(e){return e&&[H.NAME,O.NAME].includes(e.name)&&Object.values(L).includes(e.type)}constructor(e){super(e.message),this.name=H.NAME,this.type=e.type||"client"}};H.NAME="SdkError";var m=H,W=class W extends m{constructor(r){super({...r,type:"response"});this.errors=[];this.name=W.NAME}static isApiError(r){return m.isSdkError(r)&&r.name===W.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};W.NAME="ApiError";var O=W,Rr=t=>t instanceof TypeError,dr=t=>t instanceof DOMException&&t.name==="AbortError",gr=t=>t instanceof DOMException&&t.name==="TimeoutError",Ke=t=>O.isApiError(t)&&t.status===401&&(["INVALID_TOKEN","UNAUTHORIZED"].includes(t.code||"")||t.errors&&t.errors.length>0&&["INVALID_TOKEN","UNAUTHORIZED"].includes(t.errors[0].code)),fe=t=>{if(m.isSdkError(t)||O.isApiError(t))throw t;let e=new m({message:t.message});if(F.isFetchError(t)){let r=new O(e);r.type="response",r.status=t.status,r.statusText=t.statusText,r.code=String(r.status),r.errors=t.errors||[],!r.message&&r.statusText&&(r.message=r.statusText),e=r}else Rr(t)?e.type="request":dr(t)?e.type="cancel":gr(t)?e.type="timeout":(e.type="client",e.source=t);throw e};var hr={default:{domain:"commercelayer.io",pageNumber:1,pageSize:10},client:{timeout:15e3,requiredAttributes:["accessToken"]},jsonapi:{maxResourceIncluded:2}},f=hr;var Ge=t=>{try{return JSON.parse(atob(t.split(".")[1])).exp*1e3-Date.now()<0}catch{return!1}};var C=h("client"),be=t=>`https://provisioning.${t||f.default.domain}/api`,k,b,d,J,Ce=class Ce{constructor(e){l(this,k);l(this,b);l(this,d);l(this,J);C("new client instance %O",e),c(this,k,be(e.domain)),c(this,b,e.accessToken);let r={timeout:e.timeout||f.client.timeout,fetch:e.fetch,refreshToken:e.refreshToken},i={...this.customHeaders(e.headers),Accept:"application/vnd.api+json","Content-Type":"application/vnd.api+json",Authorization:"Bearer "+n(this,b)};e.userAgent&&(i["User-Agent"]=e.userAgent),r.headers=i,c(this,d,r),C("fetch config: %O",r),c(this,J,{})}static create(e){for(let r of f.client.requiredAttributes)if(!e||!e[r])throw new m({message:`Undefined '${r}' parameter`});return new Ce(e)}get interceptors(){return n(this,J)}get requestHeaders(){return n(this,d).headers||(n(this,d).headers={}),n(this,d).headers}config(e){C("config %o",e);let r=n(this,d);return r.headers||(r.headers={}),e.timeout&&(r.timeout=e.timeout),e.userAgent&&this.userAgent(e.userAgent),e.fetch&&(n(this,d).fetch=e.fetch),e.refreshToken&&(n(this,d).refreshToken=e.refreshToken),e.domain&&c(this,k,be(e.domain)),e.accessToken&&(c(this,b,e.accessToken),r.headers.Authorization="Bearer "+n(this,b)),e.headers&&(r.headers={...r.headers,...this.customHeaders(e.headers)}),this}userAgent(e){return e&&(this.requestHeaders["User-Agent"]=e),this}async request(e,r,s,i){C("request %s %s, %O, %O",e,r,s||{},i||{}),i?.userAgent&&C("User-Agent header ignored in request config");let o=i?.domain?be(i.domain):n(this,k),a=new URL(`${o}/${r}`),p=s?JSON.stringify({data:s}):void 0,A={...this.requestHeaders,...this.customHeaders(i?.headers)},j=i?.accessToken||n(this,b);j&&(A.Authorization="Bearer "+j);let q={method:e,body:p,headers:A},Ye=i?.timeout||n(this,d).timeout;Ye&&(AbortSignal?.timeout?q.signal=AbortSignal.timeout(Ye):C("Timeout not set. Undefined function: %s","AbortSignal.timeout")),i?.params&&Object.entries(i?.params).forEach(([v,$])=>{a.searchParams.append(v,String($))});let He={interceptors:this.interceptors,fetch:i?.fetch||n(this,d).fetch};try{return await he(a,q,He).catch(v=>fe(v))}catch(v){if(Ke(v)&&n(this,d).refreshToken&&Ge(n(this,b))){C("Access token has expired");let $=await n(this,d).refreshToken(n(this,b)).catch(Re=>{C("Refresh token error: %s",Re.message);let ie=new m({message:"Error refreshing access token",type:"token-refresh"});throw ie.source=Re,ie});if($)return C("Access token refreshed"),this.config({accessToken:$}),q.headers&&(q.headers.Authorization=`Bearer ${$}`),await he(a,q,He).catch(ie=>fe(ie))}else throw v}}customHeaders(e){let r={};if(e)for(let[s,i]of Object.entries(e))["accept","content-type","authorization","user-agent"].includes(s.toLowerCase())||(r[s]=i);return r}get currentAccessToken(){return n(this,b)}};k=new WeakMap,b=new WeakMap,d=new WeakMap,J=new WeakMap;var Pe=Ce,Ze=Pe;var w=t=>t?.type&&t.id&&I.includes(t.type),Te=t=>t&&typeof t.type<"u"&&t.type&&I.includes(t.type);var ne=h("jsonapi"),z=t=>{let e;t.links&&delete t.links;let r=t.data,s=t.included;return r?Array.isArray(r)?e=r.map(i=>ae(i,s)):e=ae(r,s):e=r,e},Xe=(t,e=[])=>e.find(s=>t.id===s.id&&t.type===s.type)||t,ae=(t,e,r=[])=>{if(ne("denormalize resource: %O, %o",t,e||{}),!t)return t;let s={id:t.id,type:t.type,...t.attributes};return t.relationships&&Object.keys(t.relationships).forEach(i=>{let o=t.relationships[i].data;o?r.filter(a=>a.id===o.id&&a.type===o.type).length>=f.jsonapi.maxResourceIncluded?s[i]=o:Array.isArray(o)?s[i]=o.map(a=>ae(Xe(a,e),e,[...r,a])):s[i]=ae(Xe(o,e),e,[...r,o]):o===null&&(s[i]=null)}),ne("denormalized resource: %O",s),s},pe=t=>{ne("normalize resource: %O",t);let e={},r={};for(let i in t){if(["type","id"].includes(i))continue;let o=t[i];Array.isArray(o)&&o.length===1&&Te(o[0])&&o[0].id===null?r[i]={data:[]}:o&&Te(o)&&o.id===null?r[i]={data:null}:o&&(w(o)||Array.isArray(o)&&w(o[0]))?r[i]={data:o}:e[i]=o}let s={type:t.type,attributes:e,relationships:r};return w(t)&&(s.id=t.id),ne("normalized resource: %O",s),s};var er=h("query"),rr=["_any","_all","_in"],sr=["_jcont"],Ae=t=>t&&(t.filters||t.pageNumber||t.pageSize||t.sort),Q=(t,e)=>{er("generate query string params: %O, %O",t,e);let r={};return t&&(t.include&&(r.include=t.include.join(",")),t.fields&&(Array.isArray(t.fields)&&(t.fields={[e.type||e]:t.fields}),Object.entries(t.fields).forEach(([s,i])=>{r[`fields[${s}]`]=i.join(",")})),Ae(t)&&(t.sort&&(Array.isArray(t.sort)?r.sort=t.sort.join(","):r.sort=Object.entries(t.sort).map(([s,i])=>`${i==="desc"?"-":""}${s}`).join(",")),t.pageNumber&&(r["page[number]"]=String(t.pageNumber)),t.pageSize&&(r["page[size]"]=String(t.pageSize)),t.filters&&Object.entries(t.filters).forEach(([s,i])=>{let o=s.substring(s.lastIndexOf("_")),a;if(Array.isArray(i)){if(!rr.includes(o))throw new m({message:`Wrong ${o} filter: Array value is supported only for the following filters: ${rr.join(", ")}`,type:"request"});a=i.join(",")}else if(typeof i=="object"){if(!sr.includes(o))throw new m({message:`Wrong ${o} filter: Object value is supported only for the following filters: ${sr.join(", ")}`,type:"request"});a=JSON.stringify(i)}else a=String(i);r[`filter[q][${s}]`]=a})),er("query string params: %O",r)),r};var P={resources:t=>t?[...I].sort():I,singletons:t=>t?[...ce].sort():ce,isSingleton:t=>ce.includes(t),isSdkError:t=>m.isSdkError(t),isApiError:t=>O.isApiError(t),init:t=>le(t),get schemaVersion(){return Oe}};var T=h("resource"),ue=class extends Array{constructor(e,r){super(...r||[]),this.meta=e}first(){return this.length?this[0]:void 0}last(){return this.length?this[this.length-1]:void 0}get(e){return this.length&&e>=0?this[e]:void 0}hasNextPage(){return this.meta.currentPage<this.meta.pageCount}hasPrevPage(){return this.meta.currentPage>1}getRecordCount(){return this.meta.recordCount}getPageCount(){return this.meta.pageCount}get recordCount(){return this.meta.recordCount}get pageCount(){return this.meta.pageCount}};var g,Ee,xe=class{constructor(e){l(this,g);l(this,Ee,{});c(this,g,Ze.create(e)),this.localConfig(e)}localConfig(e){}config(e){return T("config %o",e),this.localConfig(e),n(this,g).config(e),this}get client(){return n(this,g)}async retrieve(e,r,s){let i=!("id"in e)||P.isSingleton(e.type);T("retrieve:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=Q(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,p=await n(this,g).request("GET",a,void 0,{...s,params:o});return z(p)}async list(e,r,s){T("list: %o, %O, %O",e,r||{},s||{});let i=Q(r,e);s?.params&&Object.assign(i,s?.params);let o=await n(this,g).request("GET",`${e.type}`,void 0,{...s,params:i}),a=z(o),p={pageCount:Number(o.meta?.page_count),recordCount:Number(o.meta?.record_count),currentPage:r?.pageNumber||f.default.pageNumber,recordsPerPage:r?.pageSize||f.default.pageSize};return new ue(p,a)}async create(e,r,s){T("create: %o, %O, %O",e,r||{},s||{});let i=Q(r,e);s?.params&&Object.assign(i,s?.params);let o=pe(e),a=await n(this,g).request("POST",e.type,o,{...s,params:i});return z(a)}async update(e,r,s){let i=!("id"in e)||P.isSingleton(e.type);T("update:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=Q(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,p=pe(e),A=await n(this,g).request("PATCH",a,p,{...s,params:o});return z(A)}async delete(e,r){T("delete: %o, %O",e,r||{}),await n(this,g).request("DELETE",`${e.type}/${e.id}`,void 0,r)}async fetch(e,r,s,i){T("fetch: %o, %O, %O",r,s||{},i||{});let o=Q(s,e);i?.params&&Object.assign(o,i?.params);let a=await n(this,g).request("GET",r,void 0,{...i,params:o}),p=z(a);if(Array.isArray(p)){let A=s,j={pageCount:Number(a.meta?.page_count),recordCount:Number(a.meta?.record_count),currentPage:A?.pageNumber||f.default.pageNumber,recordsPerPage:A?.pageSize||f.default.pageSize};return new ue(j,p)}else return p}async action(e,r,s,i){T("action: %o %o, %O",e,r,i||{});let o={};i?.params&&Object.assign(o,i?.params);let a=s&&w(s)?pe(s):s;await n(this,g).request(e,r,a,{...i,params:o})}};g=new WeakMap,Ee=new WeakMap;var me=class{constructor(e){T("new resource instance: %s",this.type()),this.resources=e}relationshipOneToOne(e){return e===null||typeof e=="string"?{id:e,type:this.type()}:{id:e.id,type:this.type()}}relationshipOneToMany(...e){return e===null||e.length===0||e[0]===null?[{id:null,type:this.type()}]:e.map(r=>({id:r,type:this.type()}))}parse(e){try{let r=JSON.parse(e);if(r.data?.type!==this.type())throw new m({message:`Invalid resource type [${r.data?.type}]`,type:"parse"});return z(r)}catch(r){throw m.isSdkError(r)?r:new m({message:`Payload parse error [${r.message}]`,type:"parse"})}}async update(e,r,s){return this.resources.update({...e,type:this.type()},r,s)}},y=class extends me{async retrieve(e,r,s){return this.resources.retrieve(typeof e=="string"?{type:this.type(),id:e}:e,r,s)}async list(e,r){return this.resources.list({type:this.type()},e,r)}async count(e,r){let s={filters:Ae(e)?e.filters:e,pageNumber:1,pageSize:1},i=await this.list(s,r);return Promise.resolve(i.meta.recordCount)}},ye=class extends me{async retrieve(e,r){return this.resources.retrieve({type:this.type()},e,r)}},tr=xe;var x=class x extends y{async create(e,r,s){return this.resources.create({...e,type:x.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:x.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:x.TYPE}:e,r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`api_credentials/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`api_credentials/${i}/role`,r,s)}isApiCredential(e){return e.type&&e.type===x.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return x.TYPE}};x.TYPE="api_credentials";var Me=x,ze=Me;var E=class E extends y{async create(e,r,s){return this.resources.create({...e,type:E.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:E.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:E.TYPE}:e,r)}async api_credential(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`application_memberships/${i}/api_credential`,r,s)}async membership(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`application_memberships/${i}/membership`,r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`application_memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`application_memberships/${i}/role`,r,s)}isApplicationMembership(e){return e.type&&e.type===E.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return E.TYPE}};E.TYPE="application_memberships";var Ne=E,Se=Ne;var M=class M extends y{async create(e,r,s){return this.resources.create({...e,type:M.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:M.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:M.TYPE}:e,r)}async resend(e,r){let s=e.id||e;await this.resources.action("POST",`memberships/${s}/resend`,{},r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`memberships/${i}/role`,r,s)}async application_memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"application_memberships"},`memberships/${i}/application_memberships`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`memberships/${i}/versions`,r,s)}isMembership(e){return e.type&&e.type===M.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return M.TYPE}};M.TYPE="memberships";var _e=M,ve=_e;var N=class N extends y{async create(e,r,s){return this.resources.create({...e,type:N.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:N.TYPE},r,s)}async transfer_ownership(e,r,s){let i=e.id||e;await this.resources.action("PATCH",`organizations/${i}/transfer_ownership`,{...r},s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`organizations/${i}/memberships`,r,s)}async roles(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`organizations/${i}/roles`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`organizations/${i}/permissions`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`organizations/${i}/api_credentials`,r,s)}isOrganization(e){return e.type&&e.type===N.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return N.TYPE}};N.TYPE="organizations";var Le=N,ke=Le;var S=class S extends y{async create(e,r,s){return this.resources.create({...e,type:S.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:S.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`permissions/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`permissions/${i}/role`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`permissions/${i}/versions`,r,s)}isPermission(e){return e.type&&e.type===S.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return S.TYPE}};S.TYPE="permissions";var we=S,Ie=we;var _=class _ extends y{async create(e,r,s){return this.resources.create({...e,type:_.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:_.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`roles/${i}/organization`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`roles/${i}/permissions`,r,s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`roles/${i}/memberships`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`roles/${i}/api_credentials`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`roles/${i}/versions`,r,s)}isRole(e){return e.type&&e.type===_.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return _.TYPE}};_.TYPE="roles";var Qe=_,Ue=Qe;var U=class U extends ye{async update(e,r,s){let i=await this.retrieve(r,s);return this.resources.update({...e,id:i.id,type:U.TYPE},r,s)}isUser(e){return e.type&&e.type===U.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return U.TYPE}};U.TYPE="user";var je=U,qe=je;var B=class B extends y{isVersion(e){return e.type&&e.type===B.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return B.TYPE}};B.TYPE="versions";var $e=B,Fe=$e;var I=["api_credentials","application_memberships","memberships","organizations","permissions","roles","user","versions"],ce=["user"];var ir=h("commercelayer"),Oe="1.0.5";var R,K,G,Z,X,ee,re,se,te,Ve=class{constructor(e){this.openApiSchemaVersion=Oe;l(this,R);l(this,K);l(this,G);l(this,Z);l(this,X);l(this,ee);l(this,re);l(this,se);l(this,te);ir("new commercelayer provisioning instance %O",e),c(this,R,new tr(e))}get api_credentials(){return n(this,K)||c(this,K,new ze(n(this,R)))}get application_memberships(){return n(this,G)||c(this,G,new Se(n(this,R)))}get memberships(){return n(this,Z)||c(this,Z,new ve(n(this,R)))}get organizations(){return n(this,X)||c(this,X,new ke(n(this,R)))}get permissions(){return n(this,ee)||c(this,ee,new Ie(n(this,R)))}get roles(){return n(this,re)||c(this,re,new Ue(n(this,R)))}get user(){return n(this,se)||c(this,se,new qe(n(this,R)))}get versions(){return n(this,te)||c(this,te,new Fe(n(this,R)))}get currentAccessToken(){return n(this,R)?.client?.currentAccessToken}get interceptors(){return n(this,R).client.interceptors}localConfig(e){}config(e){return ir("config %o",e),this.localConfig(e),n(this,R).config(e),this}resources(){return P.resources()}singletons(){return P.singletons()}isSingleton(e){return P.isSingleton(e)}isApiError(e){return P.isApiError(e)}addRequestInterceptor(e,r){return this.interceptors.request={onSuccess:e,onFailure:r},1}addResponseInterceptor(e,r){return this.interceptors.response={onSuccess:e,onFailure:r},1}removeInterceptor(e,r=1){this.interceptors[e]=void 0}removeInterceptors(){this.removeInterceptor("request"),this.removeInterceptor("response"),this.removeRawResponseReader()}addRawResponseReader(e){let r={id:0,rawResponse:void 0,headers:void 0,ok:!0};async function s(i){if(r.rawResponse=await i?.clone().json().catch(()=>{}),r.ok=i.ok,e?.headers){let o={};i.headers.forEach((a,p)=>{o[p]=a}),r.headers=o}return i}return this.interceptors.rawReader={onSuccess:s,onFailure:s},r.id=1,r}removeRawResponseReader(){this.interceptors.rawReader=void 0}};R=new WeakMap,K=new WeakMap,G=new WeakMap,Z=new WeakMap,X=new WeakMap,ee=new WeakMap,re=new WeakMap,se=new WeakMap,te=new WeakMap;var De=t=>new Ve(t),le=De;0&&(module.exports={CommerceLayerProvisioning,CommerceLayerProvisioningStatic});
package/lib/index.mjs CHANGED
@@ -1 +1 @@
1
- var Ze=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var qe=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)};var n=(t,e,r)=>(qe(t,e,"read from private field"),r?r.call(t):e.get(t)),c=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},p=(t,e,r,s)=>(qe(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r);var er=(t,...e)=>{},je=t=>er;try{let t=Ze("debug");t&&typeof t=="function"&&(je=t)}catch{}var rr="clsdk",sr=t=>je(`${rr}:${t}`),h=sr;var tr=h("fetch"),q,j,$,re=class re extends Error{constructor(r,s,i){super(s);c(this,q,void 0);c(this,j,void 0);c(this,$,void 0);p(this,j,r),p(this,$,s),i&&p(this,q,i.errors)}get errors(){return n(this,q)}get status(){return n(this,j)}get statusText(){return n(this,$)}};q=new WeakMap,j=new WeakMap,$=new WeakMap,re.isFetchError=r=>r instanceof re;var k=re,$e=async(t,e,r)=>{tr("fetch: %s, %O, native[%s]",t,e||{},r?.fetch?"no":"yes");let s=r?.interceptors;s?.request?.onSuccess&&({url:t,options:e}=await s.request.onSuccess({url:t,options:e}));let o=await(r?.fetch||fetch)(t,e);o.ok?(s?.rawReader?.onSuccess&&await s.rawReader.onSuccess(o),s?.response?.onSuccess&&(o=await s.response.onSuccess(o))):s?.rawReader?.onFailure&&await s.rawReader.onFailure(o);let a=await o.json().catch(()=>{});if(!o.ok){let m=new k(o.status,o.statusText,a);if(s?.response?.onFailure&&(m=await s.response.onFailure(m)),m)throw m}return a};var se=(a=>(a.CLIENT="client",a.REQUEST="request",a.RESPONSE="response",a.CANCEL="cancel",a.PARSE="parse",a.TIMEOUT="timeout",a))(se||{}),V=class V extends Error{static isSdkError(e){return e&&[V.NAME,_.NAME].includes(e.name)&&Object.values(se).includes(e.type)}constructor(e){super(e.message),this.name=V.NAME,this.type=e.type||"client"}};V.NAME="SdkError";var y=V,F=class F extends y{constructor(r){super({...r,type:"response"});this.errors=[];this.name=F.NAME}static isApiError(r){return y.isSdkError(r)&&r.name===F.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};F.NAME="ApiError";var _=F,ir=t=>t instanceof TypeError,or=t=>t instanceof DOMException&&t.name==="AbortError",nr=t=>t instanceof DOMException&&t.name==="TimeoutError",Ve=t=>{let e=new y({message:t.message});if(k.isFetchError(t)){let r=new _(e);r.type="response",r.status=t.status,r.statusText=t.statusText,r.code=String(r.status),r.errors=t.errors||[],!r.message&&r.statusText&&(r.message=r.statusText),e=r}else ir(t)?e.type="request":or(t)?e.type="cancel":nr(t)?e.type="timeout":(e.type="client",e.source=t);throw e};var ar={default:{domain:"commercelayer.io",pageNumber:1,pageSize:10},client:{timeout:15e3,requiredAttributes:["accessToken"]},jsonapi:{maxResourceIncluded:2}},f=ar;var D=h("client"),ue=t=>`https://provisioning.${t||f.default.domain}/api`,v,A,b,Y,ye=class ye{constructor(e){c(this,v,void 0);c(this,A,void 0);c(this,b,void 0);c(this,Y,void 0);D("new client instance %O",e),p(this,v,ue(e.domain)),p(this,A,e.accessToken);let r={timeout:e.timeout||f.client.timeout},i={...this.customHeaders(e.headers),Accept:"application/vnd.api+json","Content-Type":"application/vnd.api+json",Authorization:"Bearer "+n(this,A)},o=e.userAgent;o&&(i["User-Agent"]=o),r.headers=i,p(this,b,r),D("fetch config: %O",r),p(this,Y,{})}static create(e){for(let r of f.client.requiredAttributes)if(!e||!e[r])throw new y({message:`Undefined '${r}' parameter`});return new ye(e)}get interceptors(){return n(this,Y)}get requestHeaders(){return n(this,b).headers||(n(this,b).headers={}),n(this,b).headers}config(e){D("config %o",e);let r=n(this,b);return r.headers||(r.headers={}),e.timeout&&(r.timeout=e.timeout),e.userAgent&&this.userAgent(e.userAgent),e.fetch&&(n(this,b).fetch=e.fetch),e.domain&&p(this,v,ue(e.domain)),e.accessToken&&(p(this,A,e.accessToken),r.headers.Authorization="Bearer "+n(this,A)),e.headers&&(r.headers={...r.headers,...this.customHeaders(e.headers)}),this}userAgent(e){return e&&(this.requestHeaders["User-Agent"]=e),this}async request(e,r,s,i){D("request %s %s, %O, %O",e,r,s||{},i||{}),i?.userAgent&&D("User-Agent header ignored in request config");let o=i?.domain?ue(i.domain):n(this,v),a=new URL(`${o}/${r}`),m=s?JSON.stringify({data:s}):void 0,T={...this.requestHeaders,...this.customHeaders(i?.headers)},U=i?.accessToken||n(this,A);U&&(T.Authorization="Bearer "+U);let Ue={method:e,body:m,headers:T},ke=i?.timeout||n(this,b).timeout;ke&&(Ue.signal=AbortSignal.timeout(ke)),i?.params&&Object.entries(i?.params).forEach(([le,Xe])=>{a.searchParams.append(le,String(Xe))});let Ke={interceptors:this.interceptors,fetch:i?.fetch||n(this,b).fetch};return await $e(a,Ue,Ke).catch(le=>Ve(le))}customHeaders(e){let r={};if(e)for(let[s,i]of Object.entries(e))["accept","content-type","authorization","user-agent"].includes(s.toLowerCase())||(r[s]=i);return r}};v=new WeakMap,A=new WeakMap,b=new WeakMap,Y=new WeakMap;var me=ye,Fe=me;var L=t=>t?.type&&t.id&&Q.includes(t.type),Re=t=>t&&typeof t.type<"u"&&t.type&&Q.includes(t.type);var te=h("jsonapi"),z=t=>{let e;t.links&&delete t.links;let r=t.data,s=t.included;return r?Array.isArray(r)?e=r.map(i=>ie(i,s)):e=ie(r,s):e=r,e},De=(t,e=[])=>e.find(s=>t.id===s.id&&t.type===s.type)||t,ie=(t,e,r=[])=>{if(te("denormalize resource: %O, %o",t,e||{}),!t)return t;let s={id:t.id,type:t.type,...t.attributes};return t.relationships&&Object.keys(t.relationships).forEach(i=>{let o=t.relationships[i].data;o?r.filter(a=>a.id===o.id&&a.type===o.type).length>=f.jsonapi.maxResourceIncluded?s[i]=o:Array.isArray(o)?s[i]=o.map(a=>ie(De(a,e),e,[...r,a])):s[i]=ie(De(o,e),e,[...r,o]):o===null&&(s[i]=null)}),te("denormalized resource: %O",s),s},oe=t=>{te("normalize resource: %O",t);let e={},r={};for(let i in t){if(["type","id"].includes(i))continue;let o=t[i];Array.isArray(o)&&o.length===1&&Re(o[0])&&o[0].id===null?r[i]={data:[]}:o&&Re(o)&&o.id===null?r[i]={data:null}:o&&(L(o)||Array.isArray(o)&&L(o[0]))?r[i]={data:o}:e[i]=o}let s={type:t.type,attributes:e,relationships:r};return L(t)&&(s.id=t.id),te("normalized resource: %O",s),s};var Ye=h("query"),He=["_any","_all","_in"],We=["_jcont"],de=t=>t&&(t.filters||t.pageNumber||t.pageSize||t.sort),I=(t,e)=>{Ye("generate query string params: %O, %O",t,e);let r={};return t&&(t.include&&(r.include=t.include.join(",")),t.fields&&(Array.isArray(t.fields)&&(t.fields={[e.type||e]:t.fields}),Object.entries(t.fields).forEach(([s,i])=>{r[`fields[${s}]`]=i.join(",")})),de(t)&&(t.sort&&(Array.isArray(t.sort)?r.sort=t.sort.join(","):r.sort=Object.entries(t.sort).map(([s,i])=>`${i==="desc"?"-":""}${s}`).join(",")),t.pageNumber&&(r["page[number]"]=String(t.pageNumber)),t.pageSize&&(r["page[size]"]=String(t.pageSize)),t.filters&&Object.entries(t.filters).forEach(([s,i])=>{let o=s.substring(s.lastIndexOf("_")),a;if(Array.isArray(i)){if(!He.includes(o))throw new y({message:`Wrong ${o} filter: Array value is supported only for the following filters: ${He.join(", ")}`,type:"request"});a=i.join(",")}else if(typeof i=="object"){if(!We.includes(o))throw new y({message:`Wrong ${o} filter: Object value is supported only for the following filters: ${We.join(", ")}`,type:"request"});a=JSON.stringify(i)}else a=String(i);r[`filter[q][${s}]`]=a})),Ye("query string params: %O",r)),r};var P={resources:t=>t?[...Q].sort():Q,singletons:t=>t?[...ne].sort():ne,isSingleton:t=>ne.includes(t),isSdkError:t=>y.isSdkError(t),isApiError:t=>_.isApiError(t),init:t=>he(t),get schemaVersion(){return ge}};var C=h("resource"),ae=class extends Array{constructor(e,r){super(...r||[]),this.meta=e}first(){return this.length?this[0]:void 0}last(){return this.length?this[this.length-1]:void 0}get(e){return this.length&&e>=0?this[e]:void 0}hasNextPage(){return this.meta.currentPage<this.meta.pageCount}hasPrevPage(){return this.meta.currentPage>1}getRecordCount(){return this.meta.recordCount}getPageCount(){return this.meta.pageCount}get recordCount(){return this.meta.recordCount}get pageCount(){return this.meta.pageCount}};var g,be,fe=class{constructor(e){c(this,g,void 0);c(this,be,{});p(this,g,Fe.create(e)),this.localConfig(e)}localConfig(e){}config(e){return C("config %o",e),this.localConfig(e),n(this,g).config(e),this}get client(){return n(this,g)}async retrieve(e,r,s){let i=!("id"in e)||P.isSingleton(e.type);C("retrieve:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=I(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,m=await n(this,g).request("GET",a,void 0,{...s,params:o});return z(m)}async list(e,r,s){C("list: %o, %O, %O",e,r||{},s||{});let i=I(r,e);s?.params&&Object.assign(i,s?.params);let o=await n(this,g).request("GET",`${e.type}`,void 0,{...s,params:i}),a=z(o),m={pageCount:Number(o.meta?.page_count),recordCount:Number(o.meta?.record_count),currentPage:r?.pageNumber||f.default.pageNumber,recordsPerPage:r?.pageSize||f.default.pageSize};return new ae(m,a)}async create(e,r,s){C("create: %o, %O, %O",e,r||{},s||{});let i=I(r,e);s?.params&&Object.assign(i,s?.params);let o=oe(e),a=await n(this,g).request("POST",e.type,o,{...s,params:i});return z(a)}async update(e,r,s){let i=!("id"in e)||P.isSingleton(e.type);C("update:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=I(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,m=oe(e),T=await n(this,g).request("PATCH",a,m,{...s,params:o});return z(T)}async delete(e,r){C("delete: %o, %O",e,r||{}),await n(this,g).request("DELETE",`${e.type}/${e.id}`,void 0,r)}async fetch(e,r,s,i){C("fetch: %o, %O, %O",r,s||{},i||{});let o=I(s,e);i?.params&&Object.assign(o,i?.params);let a=await n(this,g).request("GET",r,void 0,{...i,params:o}),m=z(a);if(Array.isArray(m)){let T=s,U={pageCount:Number(a.meta?.page_count),recordCount:Number(a.meta?.record_count),currentPage:T?.pageNumber||f.default.pageNumber,recordsPerPage:T?.pageSize||f.default.pageSize};return new ae(U,m)}else return m}async action(e,r,s,i){C("action: %o %o, %O",e,r,i||{});let o={};i?.params&&Object.assign(o,i?.params);let a=s&&L(s)?oe(s):s;await n(this,g).request(e,r,a,{...i,params:o})}};g=new WeakMap,be=new WeakMap;var pe=class{constructor(e){C("new resource instance: %s",this.type()),this.resources=e}relationshipOneToOne(e){return e===null||typeof e=="string"?{id:e,type:this.type()}:{id:e.id,type:this.type()}}relationshipOneToMany(...e){return e===null||e.length===0||e[0]===null?[{id:null,type:this.type()}]:e.map(r=>({id:r,type:this.type()}))}parse(e){try{let r=JSON.parse(e);if(r.data?.type!==this.type())throw new y({message:`Invalid resource type [${r.data?.type}]`,type:"parse"});return z(r)}catch(r){throw y.isSdkError(r)?r:new y({message:`Payload parse error [${r.message}]`,type:"parse"})}}async update(e,r,s){return this.resources.update({...e,type:this.type()},r,s)}},R=class extends pe{async retrieve(e,r,s){return this.resources.retrieve(typeof e=="string"?{type:this.type(),id:e}:e,r,s)}async list(e,r){return this.resources.list({type:this.type()},e,r)}async count(e,r){let s={filters:de(e)?e.filters:e,pageNumber:1,pageSize:1},i=await this.list(s,r);return Promise.resolve(i.meta.recordCount)}},ce=class extends pe{async retrieve(e,r){return this.resources.retrieve({type:this.type()},e,r)}},Je=fe;var O=class O extends R{async create(e,r,s){return this.resources.create({...e,type:O.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:O.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:O.TYPE}:e,r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`api_credentials/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`api_credentials/${i}/role`,r,s)}isApiCredential(e){return e.type&&e.type===O.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return O.TYPE}};O.TYPE="api_credentials";var Pe=O,Ce=Pe;var x=class x extends R{async create(e,r,s){return this.resources.create({...e,type:x.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:x.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:x.TYPE}:e,r)}async api_credential(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`application_memberships/${i}/api_credential`,r,s)}async membership(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`application_memberships/${i}/membership`,r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`application_memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`application_memberships/${i}/role`,r,s)}isApplicationMembership(e){return e.type&&e.type===x.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return x.TYPE}};x.TYPE="application_memberships";var Te=x,Ae=Te;var M=class M extends R{async create(e,r,s){return this.resources.create({...e,type:M.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:M.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:M.TYPE}:e,r)}async resend(e,r){let s=e.id||e;await this.resources.action("POST",`memberships/${s}/resend`,{},r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`memberships/${i}/role`,r,s)}async application_memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"application_memberships"},`memberships/${i}/application_memberships`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`memberships/${i}/versions`,r,s)}isMembership(e){return e.type&&e.type===M.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return M.TYPE}};M.TYPE="memberships";var Oe=M,xe=Oe;var E=class E extends R{async create(e,r,s){return this.resources.create({...e,type:E.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:E.TYPE},r,s)}async transfer_ownership(e,r,s){let i=e.id||e;await this.resources.action("PATCH",`organizations/${i}/transfer_ownership`,{...r},s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`organizations/${i}/memberships`,r,s)}async roles(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`organizations/${i}/roles`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`organizations/${i}/permissions`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`organizations/${i}/api_credentials`,r,s)}isOrganization(e){return e.type&&e.type===E.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return E.TYPE}};E.TYPE="organizations";var Me=E,ze=Me;var N=class N extends R{async create(e,r,s){return this.resources.create({...e,type:N.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:N.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`permissions/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`permissions/${i}/role`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`permissions/${i}/versions`,r,s)}isPermission(e){return e.type&&e.type===N.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return N.TYPE}};N.TYPE="permissions";var Ee=N,Ne=Ee;var S=class S extends R{async create(e,r,s){return this.resources.create({...e,type:S.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:S.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`roles/${i}/organization`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`roles/${i}/permissions`,r,s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`roles/${i}/memberships`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`roles/${i}/api_credentials`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`roles/${i}/versions`,r,s)}isRole(e){return e.type&&e.type===S.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return S.TYPE}};S.TYPE="roles";var Se=S,_e=Se;var w=class w extends ce{async update(e,r,s){let i=await this.retrieve(r,s);return this.resources.update({...e,id:i.id,type:w.TYPE},r,s)}isUser(e){return e.type&&e.type===w.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return w.TYPE}};w.TYPE="user";var ve=w,Le=ve;var H=class H extends R{isVersion(e){return e.type&&e.type===H.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return H.TYPE}};H.TYPE="versions";var Qe=H,Ie=Qe;var Q=["api_credentials","application_memberships","memberships","organizations","permissions","roles","user","versions"],ne=["user"];var Be=h("commercelayer"),ge="1.0.5";var d,W,J,B,G,K,X,Z,ee,we=class{constructor(e){this.openApiSchemaVersion=ge;c(this,d,void 0);c(this,W,void 0);c(this,J,void 0);c(this,B,void 0);c(this,G,void 0);c(this,K,void 0);c(this,X,void 0);c(this,Z,void 0);c(this,ee,void 0);Be("new commercelayer provisioning instance %O",e),p(this,d,new Je(e))}get api_credentials(){return n(this,W)||p(this,W,new Ce(n(this,d)))}get application_memberships(){return n(this,J)||p(this,J,new Ae(n(this,d)))}get memberships(){return n(this,B)||p(this,B,new xe(n(this,d)))}get organizations(){return n(this,G)||p(this,G,new ze(n(this,d)))}get permissions(){return n(this,K)||p(this,K,new Ne(n(this,d)))}get roles(){return n(this,X)||p(this,X,new _e(n(this,d)))}get user(){return n(this,Z)||p(this,Z,new Le(n(this,d)))}get versions(){return n(this,ee)||p(this,ee,new Ie(n(this,d)))}get interceptors(){return n(this,d).client.interceptors}localConfig(e){}config(e){return Be("config %o",e),this.localConfig(e),n(this,d).config(e),this}resources(){return P.resources()}singletons(){return P.singletons()}isSingleton(e){return P.isSingleton(e)}isApiError(e){return P.isApiError(e)}addRequestInterceptor(e,r){return this.interceptors.request={onSuccess:e,onFailure:r},1}addResponseInterceptor(e,r){return this.interceptors.response={onSuccess:e,onFailure:r},1}removeInterceptor(e,r=1){this.interceptors[e]=void 0}addRawResponseReader(e){let r={id:0,rawResponse:void 0,headers:void 0,ok:!0};async function s(i){if(r.rawResponse=await i?.clone().json().catch(()=>{}),r.ok=i.ok,e?.headers){let o={};i.headers.forEach((a,m)=>{o[m]=a}),r.headers=o}return i}return this.interceptors.rawReader={onSuccess:s,onFailure:s},r.id=1,r}removeRawResponseReader(e=1){this.interceptors.rawReader=void 0}};d=new WeakMap,W=new WeakMap,J=new WeakMap,B=new WeakMap,G=new WeakMap,K=new WeakMap,X=new WeakMap,Z=new WeakMap,ee=new WeakMap;var Ge=t=>new we(t),he=Ge;export{Ge as CommerceLayerProvisioning,P as CommerceLayerProvisioningStatic,he as default};
1
+ var He=t=>{throw TypeError(t)};var or=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var We=(t,e,r)=>e.has(t)||He("Cannot "+r);var n=(t,e,r)=>(We(t,e,"read from private field"),r?r.call(t):e.get(t)),l=(t,e,r)=>e.has(t)?He("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),c=(t,e,r,s)=>(We(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r);var nr=(t,...e)=>{},Je=t=>nr;try{let t=or("debug");t&&typeof t=="function"&&(Je=t)}catch{}var ar="clsdk",pr=t=>Je(`${ar}:${t}`),f=pr;var de=f("fetch"),D,Y,H,ne=class ne extends Error{constructor(r,s,i){super(s);l(this,D);l(this,Y);l(this,H);c(this,Y,r),c(this,H,s),i&&c(this,D,i.errors)}get errors(){return n(this,D)}get status(){return n(this,Y)}get statusText(){return n(this,H)}};D=new WeakMap,Y=new WeakMap,H=new WeakMap,ne.isFetchError=r=>r instanceof ne;var V=ne,ge=async(t,e,r)=>{de("fetch: %s, %O, native[%s]",t,e||{},r?.fetch?"no":"yes");let s=r?.interceptors;s?.request?.onSuccess&&({url:t,options:e}=await s.request.onSuccess({url:t,options:e}));let o=await(r?.fetch||fetch)(t,e);o.ok?(s?.rawReader?.onSuccess&&await s.rawReader.onSuccess(o),s?.response?.onSuccess&&(o=await s.response.onSuccess(o))):s?.rawReader?.onFailure&&await s.rawReader.onFailure(o);let a=o.body&&o.status!==204?await o.json().then(p=>(de("response: %O",p),p)).catch(p=>{if(de("error: %s",p.message),o.ok)throw new y({message:"Error parsing API response body",type:"parse"})}):void 0;if(!o.ok){let p=new V(o.status,o.statusText,a);if(s?.response?.onFailure&&(p=await s.response.onFailure(p)),p)throw p}return a};var k=(p=>(p.CLIENT="client",p.REQUEST="request",p.RESPONSE="response",p.CANCEL="cancel",p.PARSE="parse",p.TIMEOUT="timeout",p.TOKEN_REFRESH="token-refresh",p))(k||{}),W=class W extends Error{static isSdkError(e){return e&&[W.NAME,x.NAME].includes(e.name)&&Object.values(k).includes(e.type)}constructor(e){super(e.message),this.name=W.NAME,this.type=e.type||"client"}};W.NAME="SdkError";var y=W,J=class J extends y{constructor(r){super({...r,type:"response"});this.errors=[];this.name=J.NAME}static isApiError(r){return y.isSdkError(r)&&r.name===J.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};J.NAME="ApiError";var x=J,cr=t=>t instanceof TypeError,lr=t=>t instanceof DOMException&&t.name==="AbortError",ur=t=>t instanceof DOMException&&t.name==="TimeoutError",Be=t=>x.isApiError(t)&&t.status===401&&(["INVALID_TOKEN","UNAUTHORIZED"].includes(t.code||"")||t.errors&&t.errors.length>0&&["INVALID_TOKEN","UNAUTHORIZED"].includes(t.errors[0].code)),he=t=>{if(y.isSdkError(t)||x.isApiError(t))throw t;let e=new y({message:t.message});if(V.isFetchError(t)){let r=new x(e);r.type="response",r.status=t.status,r.statusText=t.statusText,r.code=String(r.status),r.errors=t.errors||[],!r.message&&r.statusText&&(r.message=r.statusText),e=r}else cr(t)?e.type="request":lr(t)?e.type="cancel":ur(t)?e.type="timeout":(e.type="client",e.source=t);throw e};var mr={default:{domain:"commercelayer.io",pageNumber:1,pageSize:10},client:{timeout:15e3,requiredAttributes:["accessToken"]},jsonapi:{maxResourceIncluded:2}},b=mr;var Ke=t=>{try{return JSON.parse(atob(t.split(".")[1])).exp*1e3-Date.now()<0}catch{return!1}};var C=f("client"),fe=t=>`https://provisioning.${t||b.default.domain}/api`,w,P,g,B,Pe=class Pe{constructor(e){l(this,w);l(this,P);l(this,g);l(this,B);C("new client instance %O",e),c(this,w,fe(e.domain)),c(this,P,e.accessToken);let r={timeout:e.timeout||b.client.timeout,fetch:e.fetch,refreshToken:e.refreshToken},i={...this.customHeaders(e.headers),Accept:"application/vnd.api+json","Content-Type":"application/vnd.api+json",Authorization:"Bearer "+n(this,P)};e.userAgent&&(i["User-Agent"]=e.userAgent),r.headers=i,c(this,g,r),C("fetch config: %O",r),c(this,B,{})}static create(e){for(let r of b.client.requiredAttributes)if(!e||!e[r])throw new y({message:`Undefined '${r}' parameter`});return new Pe(e)}get interceptors(){return n(this,B)}get requestHeaders(){return n(this,g).headers||(n(this,g).headers={}),n(this,g).headers}config(e){C("config %o",e);let r=n(this,g);return r.headers||(r.headers={}),e.timeout&&(r.timeout=e.timeout),e.userAgent&&this.userAgent(e.userAgent),e.fetch&&(n(this,g).fetch=e.fetch),e.refreshToken&&(n(this,g).refreshToken=e.refreshToken),e.domain&&c(this,w,fe(e.domain)),e.accessToken&&(c(this,P,e.accessToken),r.headers.Authorization="Bearer "+n(this,P)),e.headers&&(r.headers={...r.headers,...this.customHeaders(e.headers)}),this}userAgent(e){return e&&(this.requestHeaders["User-Agent"]=e),this}async request(e,r,s,i){C("request %s %s, %O, %O",e,r,s||{},i||{}),i?.userAgent&&C("User-Agent header ignored in request config");let o=i?.domain?fe(i.domain):n(this,w),a=new URL(`${o}/${r}`),p=s?JSON.stringify({data:s}):void 0,O={...this.requestHeaders,...this.customHeaders(i?.headers)},q=i?.accessToken||n(this,P);q&&(O.Authorization="Bearer "+q);let $={method:e,body:p,headers:O},De=i?.timeout||n(this,g).timeout;De&&(AbortSignal?.timeout?$.signal=AbortSignal.timeout(De):C("Timeout not set. Undefined function: %s","AbortSignal.timeout")),i?.params&&Object.entries(i?.params).forEach(([L,F])=>{a.searchParams.append(L,String(F))});let Ye={interceptors:this.interceptors,fetch:i?.fetch||n(this,g).fetch};try{return await ge(a,$,Ye).catch(L=>he(L))}catch(L){if(Be(L)&&n(this,g).refreshToken&&Ke(n(this,P))){C("Access token has expired");let F=await n(this,g).refreshToken(n(this,P)).catch(Re=>{C("Refresh token error: %s",Re.message);let oe=new y({message:"Error refreshing access token",type:"token-refresh"});throw oe.source=Re,oe});if(F)return C("Access token refreshed"),this.config({accessToken:F}),$.headers&&($.headers.Authorization=`Bearer ${F}`),await ge(a,$,Ye).catch(oe=>he(oe))}else throw L}}customHeaders(e){let r={};if(e)for(let[s,i]of Object.entries(e))["accept","content-type","authorization","user-agent"].includes(s.toLowerCase())||(r[s]=i);return r}get currentAccessToken(){return n(this,P)}};w=new WeakMap,P=new WeakMap,g=new WeakMap,B=new WeakMap;var be=Pe,Ge=be;var I=t=>t?.type&&t.id&&Q.includes(t.type),Ce=t=>t&&typeof t.type<"u"&&t.type&&Q.includes(t.type);var ae=f("jsonapi"),N=t=>{let e;t.links&&delete t.links;let r=t.data,s=t.included;return r?Array.isArray(r)?e=r.map(i=>pe(i,s)):e=pe(r,s):e=r,e},Ze=(t,e=[])=>e.find(s=>t.id===s.id&&t.type===s.type)||t,pe=(t,e,r=[])=>{if(ae("denormalize resource: %O, %o",t,e||{}),!t)return t;let s={id:t.id,type:t.type,...t.attributes};return t.relationships&&Object.keys(t.relationships).forEach(i=>{let o=t.relationships[i].data;o?r.filter(a=>a.id===o.id&&a.type===o.type).length>=b.jsonapi.maxResourceIncluded?s[i]=o:Array.isArray(o)?s[i]=o.map(a=>pe(Ze(a,e),e,[...r,a])):s[i]=pe(Ze(o,e),e,[...r,o]):o===null&&(s[i]=null)}),ae("denormalized resource: %O",s),s},ce=t=>{ae("normalize resource: %O",t);let e={},r={};for(let i in t){if(["type","id"].includes(i))continue;let o=t[i];Array.isArray(o)&&o.length===1&&Ce(o[0])&&o[0].id===null?r[i]={data:[]}:o&&Ce(o)&&o.id===null?r[i]={data:null}:o&&(I(o)||Array.isArray(o)&&I(o[0]))?r[i]={data:o}:e[i]=o}let s={type:t.type,attributes:e,relationships:r};return I(t)&&(s.id=t.id),ae("normalized resource: %O",s),s};var Xe=f("query"),er=["_any","_all","_in"],rr=["_jcont"],Te=t=>t&&(t.filters||t.pageNumber||t.pageSize||t.sort),U=(t,e)=>{Xe("generate query string params: %O, %O",t,e);let r={};return t&&(t.include&&(r.include=t.include.join(",")),t.fields&&(Array.isArray(t.fields)&&(t.fields={[e.type||e]:t.fields}),Object.entries(t.fields).forEach(([s,i])=>{r[`fields[${s}]`]=i.join(",")})),Te(t)&&(t.sort&&(Array.isArray(t.sort)?r.sort=t.sort.join(","):r.sort=Object.entries(t.sort).map(([s,i])=>`${i==="desc"?"-":""}${s}`).join(",")),t.pageNumber&&(r["page[number]"]=String(t.pageNumber)),t.pageSize&&(r["page[size]"]=String(t.pageSize)),t.filters&&Object.entries(t.filters).forEach(([s,i])=>{let o=s.substring(s.lastIndexOf("_")),a;if(Array.isArray(i)){if(!er.includes(o))throw new y({message:`Wrong ${o} filter: Array value is supported only for the following filters: ${er.join(", ")}`,type:"request"});a=i.join(",")}else if(typeof i=="object"){if(!rr.includes(o))throw new y({message:`Wrong ${o} filter: Object value is supported only for the following filters: ${rr.join(", ")}`,type:"request"});a=JSON.stringify(i)}else a=String(i);r[`filter[q][${s}]`]=a})),Xe("query string params: %O",r)),r};var T={resources:t=>t?[...Q].sort():Q,singletons:t=>t?[...le].sort():le,isSingleton:t=>le.includes(t),isSdkError:t=>y.isSdkError(t),isApiError:t=>x.isApiError(t),init:t=>Oe(t),get schemaVersion(){return Ae}};var A=f("resource"),ue=class extends Array{constructor(e,r){super(...r||[]),this.meta=e}first(){return this.length?this[0]:void 0}last(){return this.length?this[this.length-1]:void 0}get(e){return this.length&&e>=0?this[e]:void 0}hasNextPage(){return this.meta.currentPage<this.meta.pageCount}hasPrevPage(){return this.meta.currentPage>1}getRecordCount(){return this.meta.recordCount}getPageCount(){return this.meta.pageCount}get recordCount(){return this.meta.recordCount}get pageCount(){return this.meta.pageCount}};var h,Ee,xe=class{constructor(e){l(this,h);l(this,Ee,{});c(this,h,Ge.create(e)),this.localConfig(e)}localConfig(e){}config(e){return A("config %o",e),this.localConfig(e),n(this,h).config(e),this}get client(){return n(this,h)}async retrieve(e,r,s){let i=!("id"in e)||T.isSingleton(e.type);A("retrieve:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=U(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,p=await n(this,h).request("GET",a,void 0,{...s,params:o});return N(p)}async list(e,r,s){A("list: %o, %O, %O",e,r||{},s||{});let i=U(r,e);s?.params&&Object.assign(i,s?.params);let o=await n(this,h).request("GET",`${e.type}`,void 0,{...s,params:i}),a=N(o),p={pageCount:Number(o.meta?.page_count),recordCount:Number(o.meta?.record_count),currentPage:r?.pageNumber||b.default.pageNumber,recordsPerPage:r?.pageSize||b.default.pageSize};return new ue(p,a)}async create(e,r,s){A("create: %o, %O, %O",e,r||{},s||{});let i=U(r,e);s?.params&&Object.assign(i,s?.params);let o=ce(e),a=await n(this,h).request("POST",e.type,o,{...s,params:i});return N(a)}async update(e,r,s){let i=!("id"in e)||T.isSingleton(e.type);A("update:%s %o, %O, %O",i?" singleton,":"",e,r||{},s||{});let o=U(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,p=ce(e),O=await n(this,h).request("PATCH",a,p,{...s,params:o});return N(O)}async delete(e,r){A("delete: %o, %O",e,r||{}),await n(this,h).request("DELETE",`${e.type}/${e.id}`,void 0,r)}async fetch(e,r,s,i){A("fetch: %o, %O, %O",r,s||{},i||{});let o=U(s,e);i?.params&&Object.assign(o,i?.params);let a=await n(this,h).request("GET",r,void 0,{...i,params:o}),p=N(a);if(Array.isArray(p)){let O=s,q={pageCount:Number(a.meta?.page_count),recordCount:Number(a.meta?.record_count),currentPage:O?.pageNumber||b.default.pageNumber,recordsPerPage:O?.pageSize||b.default.pageSize};return new ue(q,p)}else return p}async action(e,r,s,i){A("action: %o %o, %O",e,r,i||{});let o={};i?.params&&Object.assign(o,i?.params);let a=s&&I(s)?ce(s):s;await n(this,h).request(e,r,a,{...i,params:o})}};h=new WeakMap,Ee=new WeakMap;var me=class{constructor(e){A("new resource instance: %s",this.type()),this.resources=e}relationshipOneToOne(e){return e===null||typeof e=="string"?{id:e,type:this.type()}:{id:e.id,type:this.type()}}relationshipOneToMany(...e){return e===null||e.length===0||e[0]===null?[{id:null,type:this.type()}]:e.map(r=>({id:r,type:this.type()}))}parse(e){try{let r=JSON.parse(e);if(r.data?.type!==this.type())throw new y({message:`Invalid resource type [${r.data?.type}]`,type:"parse"});return N(r)}catch(r){throw y.isSdkError(r)?r:new y({message:`Payload parse error [${r.message}]`,type:"parse"})}}async update(e,r,s){return this.resources.update({...e,type:this.type()},r,s)}},R=class extends me{async retrieve(e,r,s){return this.resources.retrieve(typeof e=="string"?{type:this.type(),id:e}:e,r,s)}async list(e,r){return this.resources.list({type:this.type()},e,r)}async count(e,r){let s={filters:Te(e)?e.filters:e,pageNumber:1,pageSize:1},i=await this.list(s,r);return Promise.resolve(i.meta.recordCount)}},ye=class extends me{async retrieve(e,r){return this.resources.retrieve({type:this.type()},e,r)}},sr=xe;var E=class E extends R{async create(e,r,s){return this.resources.create({...e,type:E.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:E.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:E.TYPE}:e,r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`api_credentials/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`api_credentials/${i}/role`,r,s)}isApiCredential(e){return e.type&&e.type===E.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return E.TYPE}};E.TYPE="api_credentials";var Me=E,ze=Me;var M=class M extends R{async create(e,r,s){return this.resources.create({...e,type:M.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:M.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:M.TYPE}:e,r)}async api_credential(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`application_memberships/${i}/api_credential`,r,s)}async membership(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`application_memberships/${i}/membership`,r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`application_memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`application_memberships/${i}/role`,r,s)}isApplicationMembership(e){return e.type&&e.type===M.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return M.TYPE}};M.TYPE="application_memberships";var Ne=M,Se=Ne;var z=class z extends R{async create(e,r,s){return this.resources.create({...e,type:z.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:z.TYPE},r,s)}async delete(e,r){await this.resources.delete(typeof e=="string"?{id:e,type:z.TYPE}:e,r)}async resend(e,r){let s=e.id||e;await this.resources.action("POST",`memberships/${s}/resend`,{},r)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`memberships/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`memberships/${i}/role`,r,s)}async application_memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"application_memberships"},`memberships/${i}/application_memberships`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`memberships/${i}/versions`,r,s)}isMembership(e){return e.type&&e.type===z.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return z.TYPE}};z.TYPE="memberships";var _e=z,ve=_e;var S=class S extends R{async create(e,r,s){return this.resources.create({...e,type:S.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:S.TYPE},r,s)}async transfer_ownership(e,r,s){let i=e.id||e;await this.resources.action("PATCH",`organizations/${i}/transfer_ownership`,{...r},s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`organizations/${i}/memberships`,r,s)}async roles(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`organizations/${i}/roles`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`organizations/${i}/permissions`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`organizations/${i}/api_credentials`,r,s)}isOrganization(e){return e.type&&e.type===S.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return S.TYPE}};S.TYPE="organizations";var Le=S,ke=Le;var _=class _ extends R{async create(e,r,s){return this.resources.create({...e,type:_.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:_.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`permissions/${i}/organization`,r,s)}async role(e,r,s){let i=e.id||e;return this.resources.fetch({type:"roles"},`permissions/${i}/role`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`permissions/${i}/versions`,r,s)}isPermission(e){return e.type&&e.type===_.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return _.TYPE}};_.TYPE="permissions";var we=_,Ie=we;var v=class v extends R{async create(e,r,s){return this.resources.create({...e,type:v.TYPE},r,s)}async update(e,r,s){return this.resources.update({...e,type:v.TYPE},r,s)}async organization(e,r,s){let i=e.id||e;return this.resources.fetch({type:"organizations"},`roles/${i}/organization`,r,s)}async permissions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"permissions"},`roles/${i}/permissions`,r,s)}async memberships(e,r,s){let i=e.id||e;return this.resources.fetch({type:"memberships"},`roles/${i}/memberships`,r,s)}async api_credentials(e,r,s){let i=e.id||e;return this.resources.fetch({type:"api_credentials"},`roles/${i}/api_credentials`,r,s)}async versions(e,r,s){let i=e.id||e;return this.resources.fetch({type:"versions"},`roles/${i}/versions`,r,s)}isRole(e){return e.type&&e.type===v.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return v.TYPE}};v.TYPE="roles";var Qe=v,Ue=Qe;var j=class j extends ye{async update(e,r,s){let i=await this.retrieve(r,s);return this.resources.update({...e,id:i.id,type:j.TYPE},r,s)}isUser(e){return e.type&&e.type===j.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return j.TYPE}};j.TYPE="user";var je=j,qe=je;var K=class K extends R{isVersion(e){return e.type&&e.type===K.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return K.TYPE}};K.TYPE="versions";var $e=K,Fe=$e;var Q=["api_credentials","application_memberships","memberships","organizations","permissions","roles","user","versions"],le=["user"];var tr=f("commercelayer"),Ae="1.0.5";var d,G,Z,X,ee,re,se,te,ie,Ve=class{constructor(e){this.openApiSchemaVersion=Ae;l(this,d);l(this,G);l(this,Z);l(this,X);l(this,ee);l(this,re);l(this,se);l(this,te);l(this,ie);tr("new commercelayer provisioning instance %O",e),c(this,d,new sr(e))}get api_credentials(){return n(this,G)||c(this,G,new ze(n(this,d)))}get application_memberships(){return n(this,Z)||c(this,Z,new Se(n(this,d)))}get memberships(){return n(this,X)||c(this,X,new ve(n(this,d)))}get organizations(){return n(this,ee)||c(this,ee,new ke(n(this,d)))}get permissions(){return n(this,re)||c(this,re,new Ie(n(this,d)))}get roles(){return n(this,se)||c(this,se,new Ue(n(this,d)))}get user(){return n(this,te)||c(this,te,new qe(n(this,d)))}get versions(){return n(this,ie)||c(this,ie,new Fe(n(this,d)))}get currentAccessToken(){return n(this,d)?.client?.currentAccessToken}get interceptors(){return n(this,d).client.interceptors}localConfig(e){}config(e){return tr("config %o",e),this.localConfig(e),n(this,d).config(e),this}resources(){return T.resources()}singletons(){return T.singletons()}isSingleton(e){return T.isSingleton(e)}isApiError(e){return T.isApiError(e)}addRequestInterceptor(e,r){return this.interceptors.request={onSuccess:e,onFailure:r},1}addResponseInterceptor(e,r){return this.interceptors.response={onSuccess:e,onFailure:r},1}removeInterceptor(e,r=1){this.interceptors[e]=void 0}removeInterceptors(){this.removeInterceptor("request"),this.removeInterceptor("response"),this.removeRawResponseReader()}addRawResponseReader(e){let r={id:0,rawResponse:void 0,headers:void 0,ok:!0};async function s(i){if(r.rawResponse=await i?.clone().json().catch(()=>{}),r.ok=i.ok,e?.headers){let o={};i.headers.forEach((a,p)=>{o[p]=a}),r.headers=o}return i}return this.interceptors.rawReader={onSuccess:s,onFailure:s},r.id=1,r}removeRawResponseReader(){this.interceptors.rawReader=void 0}};d=new WeakMap,G=new WeakMap,Z=new WeakMap,X=new WeakMap,ee=new WeakMap,re=new WeakMap,se=new WeakMap,te=new WeakMap,ie=new WeakMap;var ir=t=>new Ve(t),Oe=ir;export{ir as CommerceLayerProvisioning,T as CommerceLayerProvisioningStatic,Oe as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercelayer/provisioning-sdk",
3
- "version": "2.0.2",
3
+ "version": "2.1.0",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "module": "lib/index.mjs",
@@ -34,25 +34,25 @@
34
34
  "node": ">=20"
35
35
  },
36
36
  "devDependencies": {
37
- "@babel/preset-env": "^7.24.5",
38
- "@babel/preset-typescript": "^7.24.1",
37
+ "@babel/preset-env": "^7.24.7",
38
+ "@babel/preset-typescript": "^7.24.7",
39
39
  "@commercelayer/eslint-config-ts": "1.4.5",
40
- "@commercelayer/js-auth": "^6.2.0",
40
+ "@commercelayer/js-auth": "^6.2.2",
41
41
  "@semantic-release/changelog": "^6.0.3",
42
42
  "@semantic-release/git": "^10.0.1",
43
43
  "@types/debug": "^4.1.12",
44
44
  "@types/jest": "^29.5.12",
45
- "@types/node": "^20.12.10",
45
+ "@types/node": "^20.14.7",
46
46
  "dotenv": "^16.4.5",
47
47
  "eslint": "^8.57.0",
48
48
  "jest": "^29.7.0",
49
49
  "json-typescript": "^1.1.2",
50
50
  "jsonapi-typescript": "^0.1.3",
51
51
  "lodash.isequal": "^4.5.0",
52
- "semantic-release": "^23.0.8",
53
- "tsup": "^8.0.2",
54
- "tsx": "^4.9.3",
55
- "typescript": "^5.4.5"
52
+ "semantic-release": "^23.1.1",
53
+ "tsup": "^8.1.0",
54
+ "tsx": "^4.15.7",
55
+ "typescript": "^5.5.2"
56
56
  },
57
57
  "repository": "github:commercelayer/provisioning-sdk",
58
58
  "bugs": "https://github.com/commercelayer/provisioning-sdk/issues",