@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 +110 -7
- package/lib/index.d.mts +8 -2
- package/lib/index.d.ts +8 -2
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/package.json +9 -9
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
|
|
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
|
|
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/
|
|
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(
|
|
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(
|
|
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
|
|
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.
|
|
38
|
-
"@babel/preset-typescript": "^7.24.
|
|
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.
|
|
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.
|
|
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.
|
|
53
|
-
"tsup": "^8.0
|
|
54
|
-
"tsx": "^4.
|
|
55
|
-
"typescript": "^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",
|