@commercelayer/provisioning-sdk 2.0.3 → 2.1.1
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 +107 -4
- 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 +8 -8
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
|
|
|
@@ -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 rr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var tr=Object.prototype.hasOwnProperty;var $e=t=>{throw TypeError(t)};var ir=(t,e)=>{for(var r in e)ue(t,r,{get:e[r],enumerable:!0})},or=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of sr(e))!tr.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(s=rr(e,i))||s.enumerable});return t};var nr=t=>or(ue({},"__esModule",{value:!0}),t);var Ve=(t,e,r)=>e.has(t)||$e("Cannot "+r);var n=(t,e,r)=>(Ve(t,e,"read from private field"),r?r.call(t):e.get(t)),l=(t,e,r)=>e.has(t)?$e("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),c=(t,e,r,s)=>(Ve(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r);var dr={};ir(dr,{CommerceLayerProvisioning:()=>ke,CommerceLayerProvisioningStatic:()=>b,default:()=>ne});module.exports=nr(dr);var ar=(t,...e)=>{},Fe=t=>ar;try{let t=require("debug");t&&typeof t=="function"&&(Fe=t)}catch{}var pr="clsdk",cr=t=>Fe(`${pr}:${t}`),g=cr;var me=g("fetch"),k,q,j,re=class re extends Error{constructor(r,s,i){super(s);l(this,k);l(this,q);l(this,j);c(this,q,r),c(this,j,s),i&&c(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,re.isFetchError=r=>r instanceof re;var U=re,De=async(t,e,r)=>{me("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=>(me("response: %O",p),p)).catch(p=>{if(me("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 U(o.status,o.statusText,a);if(s?.response?.onFailure&&(p=await s.response.onFailure(p)),p)throw p}return a};var $=(a=>(a.CLIENT="client",a.REQUEST="request",a.RESPONSE="response",a.CANCEL="cancel",a.PARSE="parse",a.TIMEOUT="timeout",a))($||{}),V=class V extends Error{static isSdkError(e){return e&&[V.NAME,S.NAME].includes(e.name)&&Object.values($).includes(e.type)}constructor(e){super(e.message),this.name=V.NAME,this.type=e.type||"client"}};V.NAME="SdkError";var m=V,F=class F extends m{constructor(r){super({...r,type:"response"});this.errors=[];this.name=F.NAME}static isApiError(r){return m.isSdkError(r)&&r.name===F.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};F.NAME="ApiError";var S=F,lr=t=>t instanceof TypeError,ur=t=>t instanceof DOMException&&t.name==="AbortError",mr=t=>t instanceof DOMException&&t.name==="TimeoutError",Ye=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 lr(t)?e.type="request":ur(t)?e.type="cancel":mr(t)?e.type="timeout":(e.type="client",e.source=t);throw e};var yr={default:{domain:"commercelayer.io",pageNumber:1,pageSize:10},client:{timeout:15e3,requiredAttributes:["accessToken"]},jsonapi:{maxResourceIncluded:2}},h=yr;var D=g("client"),ye=t=>`https://provisioning.${t||h.default.domain}/api`,_,T,f,Y,de=class de{constructor(e){l(this,_);l(this,T);l(this,f);l(this,Y);D("new client instance %O",e),c(this,_,ye(e.domain)),c(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,c(this,f,r),D("fetch config: %O",r),c(this,Y,{})}static create(e){for(let r of h.client.requiredAttributes)if(!e||!e[r])throw new m({message:`Undefined '${r}' parameter`});return new de(e)}get interceptors(){return n(this,Y)}get requestHeaders(){return n(this,f).headers||(n(this,f).headers={}),n(this,f).headers}config(e){D("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&&c(this,_,ye(e.domain)),e.accessToken&&(c(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){D("request %s %s, %O, %O",e,r,s||{},i||{}),i?.userAgent&&D("User-Agent header ignored in request config");let o=i?.domain?ye(i.domain):n(this,_),a=new URL(`${o}/${r}`),p=s?JSON.stringify({data:s}):void 0,C={...this.requestHeaders,...this.customHeaders(i?.headers)},Q=i?.accessToken||n(this,T);Q&&(C.Authorization="Bearer "+Q);let qe={method:e,body:p,headers:C},je=i?.timeout||n(this,f).timeout;je&&(qe.signal=AbortSignal.timeout(je)),i?.params&&Object.entries(i?.params).forEach(([le,er])=>{a.searchParams.append(le,String(er))});let Ze={interceptors:this.interceptors,fetch:i?.fetch||n(this,f).fetch};return await De(a,qe,Ze).catch(le=>Ye(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,Y=new WeakMap;var Re=de,He=Re;var v=t=>t?.type&&t.id&&L.includes(t.type),ge=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},We=(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(We(a,e),e,[...r,a])):s[i]=te(We(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&&ge(o[0])&&o[0].id===null?r[i]={data:[]}:o&&ge(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 Je=g("query"),Be=["_any","_all","_in"],Ge=["_jcont"],he=t=>t&&(t.filters||t.pageNumber||t.pageSize||t.sort),w=(t,e)=>{Je("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(",")})),he(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(!Be.includes(o))throw new m({message:`Wrong ${o} filter: Array value is supported only for the following filters: ${Be.join(", ")}`,type:"request"});a=i.join(",")}else if(typeof i=="object"){if(!Ge.includes(o))throw new m({message:`Wrong ${o} filter: Object value is supported only for the following filters: ${Ge.join(", ")}`,type:"request"});a=JSON.stringify(i)}else a=String(i);r[`filter[q][${s}]`]=a})),Je("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 fe}};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,Pe,be=class{constructor(e){l(this,d);l(this,Pe,{});c(this,d,He.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=w(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,p=await n(this,d).request("GET",a,void 0,{...s,params:o});return M(p)}async list(e,r,s){P("list: %o, %O, %O",e,r||{},s||{});let i=w(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),p={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(p,a)}async create(e,r,s){P("create: %o, %O, %O",e,r||{},s||{});let i=w(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=w(r,e);s?.params&&Object.assign(o,s?.params);let a=`${e.type}${i?"":`/${e.id}`}`,p=ie(e),C=await n(this,d).request("PATCH",a,p,{...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=w(s,e);i?.params&&Object.assign(o,i?.params);let a=await n(this,d).request("GET",r,void 0,{...i,params:o}),p=M(a);if(Array.isArray(p)){let C=s,Q={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(Q,p)}else return p}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,Pe=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:he(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)}},Ke=be;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 Ce=A,Te=Ce;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 Ae=O,Oe=Ae;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 xe=x,Me=xe;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 ze=z,Ee=ze;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 Ne=E,Se=Ne;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 _e=N,ve=_e;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 Le=I,we=Le;var H=class H extends y{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 Ie=H,Qe=Ie;var L=["api_credentials","application_memberships","memberships","organizations","permissions","roles","user","versions"],oe=["user"];var Xe=g("commercelayer"),fe="1.0.5";var R,W,J,B,G,K,X,Z,ee,Ue=class{constructor(e){this.openApiSchemaVersion=fe;l(this,R);l(this,W);l(this,J);l(this,B);l(this,G);l(this,K);l(this,X);l(this,Z);l(this,ee);Xe("new commercelayer provisioning instance %O",e),c(this,R,new Ke(e))}get api_credentials(){return n(this,W)||c(this,W,new Te(n(this,R)))}get application_memberships(){return n(this,J)||c(this,J,new Oe(n(this,R)))}get memberships(){return n(this,B)||c(this,B,new Me(n(this,R)))}get organizations(){return n(this,G)||c(this,G,new Ee(n(this,R)))}get permissions(){return n(this,K)||c(this,K,new Se(n(this,R)))}get roles(){return n(this,X)||c(this,X,new ve(n(this,R)))}get user(){return n(this,Z)||c(this,Z,new we(n(this,R)))}get versions(){return n(this,ee)||c(this,ee,new Qe(n(this,R)))}get interceptors(){return n(this,R).client.interceptors}localConfig(e){}config(e){return Xe("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,p)=>{o[p]=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,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 ke=t=>new Ue(t),ne=ke;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 Je=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 We=(t,e,r)=>e.has(t)||Je("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)?Je("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 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 p=o.body&&o.status!==204?await o.text().then(a=>(ge("response: %O",a),a?.trim()?JSON.parse(a):a)).catch(a=>{if(ge("error: %s",a.message),o.ok)throw new m({message:"Error parsing API response body",type:"parse"})}):void 0;if(!o.ok){let a=new F(o.status,o.statusText,p);if(s?.response?.onFailure&&(a=await s.response.onFailure(a)),a)throw a}return p};var L=(a=>(a.CLIENT="client",a.REQUEST="request",a.RESPONSE="response",a.CANCEL="cancel",a.PARSE="parse",a.TIMEOUT="timeout",a.TOKEN_REFRESH="token-refresh",a))(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,J=class J extends m{constructor(r){super({...r,type:"response"});this.errors=[];this.name=J.NAME}static isApiError(r){return m.isSdkError(r)&&r.name===J.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};J.NAME="ApiError";var O=J,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,W,Ce=class Ce{constructor(e){l(this,k);l(this,b);l(this,d);l(this,W);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,W,{})}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,W)}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),p=new URL(`${o}/${r}`),a=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:a,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,$])=>{p.searchParams.append(v,String($))});let He={interceptors:this.interceptors,fetch:i?.fetch||n(this,d).fetch};try{return await he(p,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(p,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,W=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(p=>p.id===o.id&&p.type===o.type).length>=f.jsonapi.maxResourceIncluded?s[i]=o:Array.isArray(o)?s[i]=o.map(p=>ae(Xe(p,e),e,[...r,p])):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("_")),p;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"});p=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"});p=JSON.stringify(i)}else p=String(i);r[`filter[q][${s}]`]=p})),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 p=`${e.type}${i?"":`/${e.id}`}`,a=await n(this,g).request("GET",p,void 0,{...s,params:o});return z(a)}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}),p=z(o),a={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(a,p)}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),p=await n(this,g).request("POST",e.type,o,{...s,params:i});return z(p)}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 p=`${e.type}${i?"":`/${e.id}`}`,a=pe(e),A=await n(this,g).request("PATCH",p,a,{...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 p=await n(this,g).request("GET",r,void 0,{...i,params:o}),a=z(p);if(Array.isArray(a)){let A=s,j={pageCount:Number(p.meta?.page_count),recordCount:Number(p.meta?.record_count),currentPage:A?.pageNumber||f.default.pageNumber,recordsPerPage:A?.pageSize||f.default.pageSize};return new ue(j,a)}else return a}async action(e,r,s,i){T("action: %o %o, %O",e,r,i||{});let o={};i?.params&&Object.assign(o,i?.params);let p=s&&w(s)?pe(s):s;await n(this,g).request(e,r,p,{...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((p,a)=>{o[a]=p}),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 je=t=>{throw TypeError(t)};var rr=(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 $e=(t,e,r)=>e.has(t)||je("Cannot "+r);var n=(t,e,r)=>($e(t,e,"read from private field"),r?r.call(t):e.get(t)),l=(t,e,r)=>e.has(t)?je("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),c=(t,e,r,s)=>($e(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r);var sr=(t,...e)=>{},Ve=t=>sr;try{let t=rr("debug");t&&typeof t=="function"&&(Ve=t)}catch{}var tr="clsdk",ir=t=>Ve(`${tr}:${t}`),h=ir;var ue=h("fetch"),q,j,$,se=class se extends Error{constructor(r,s,i){super(s);l(this,q);l(this,j);l(this,$);c(this,j,r),c(this,$,s),i&&c(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,se.isFetchError=r=>r instanceof se;var k=se,Fe=async(t,e,r)=>{ue("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=>(ue("response: %O",p),p)).catch(p=>{if(ue("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 k(o.status,o.statusText,a);if(s?.response?.onFailure&&(p=await s.response.onFailure(p)),p)throw p}return a};var V=(a=>(a.CLIENT="client",a.REQUEST="request",a.RESPONSE="response",a.CANCEL="cancel",a.PARSE="parse",a.TIMEOUT="timeout",a))(V||{}),F=class F extends Error{static isSdkError(e){return e&&[F.NAME,_.NAME].includes(e.name)&&Object.values(V).includes(e.type)}constructor(e){super(e.message),this.name=F.NAME,this.type=e.type||"client"}};F.NAME="SdkError";var y=F,D=class D extends y{constructor(r){super({...r,type:"response"});this.errors=[];this.name=D.NAME}static isApiError(r){return y.isSdkError(r)&&r.name===D.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};D.NAME="ApiError";var _=D,or=t=>t instanceof TypeError,nr=t=>t instanceof DOMException&&t.name==="AbortError",ar=t=>t instanceof DOMException&&t.name==="TimeoutError",De=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 or(t)?e.type="request":nr(t)?e.type="cancel":ar(t)?e.type="timeout":(e.type="client",e.source=t);throw e};var pr={default:{domain:"commercelayer.io",pageNumber:1,pageSize:10},client:{timeout:15e3,requiredAttributes:["accessToken"]},jsonapi:{maxResourceIncluded:2}},f=pr;var Y=h("client"),me=t=>`https://provisioning.${t||f.default.domain}/api`,v,A,b,H,Re=class Re{constructor(e){l(this,v);l(this,A);l(this,b);l(this,H);Y("new client instance %O",e),c(this,v,me(e.domain)),c(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,c(this,b,r),Y("fetch config: %O",r),c(this,H,{})}static create(e){for(let r of f.client.requiredAttributes)if(!e||!e[r])throw new y({message:`Undefined '${r}' parameter`});return new Re(e)}get interceptors(){return n(this,H)}get requestHeaders(){return n(this,b).headers||(n(this,b).headers={}),n(this,b).headers}config(e){Y("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&&c(this,v,me(e.domain)),e.accessToken&&(c(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){Y("request %s %s, %O, %O",e,r,s||{},i||{}),i?.userAgent&&Y("User-Agent header ignored in request config");let o=i?.domain?me(i.domain):n(this,v),a=new URL(`${o}/${r}`),p=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 ke={method:e,body:p,headers:T},qe=i?.timeout||n(this,b).timeout;qe&&(ke.signal=AbortSignal.timeout(qe)),i?.params&&Object.entries(i?.params).forEach(([le,er])=>{a.searchParams.append(le,String(er))});let Ze={interceptors:this.interceptors,fetch:i?.fetch||n(this,b).fetch};return await Fe(a,ke,Ze).catch(le=>De(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,H=new WeakMap;var ye=Re,Ye=ye;var L=t=>t?.type&&t.id&&w.includes(t.type),de=t=>t&&typeof t.type<"u"&&t.type&&w.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},He=(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(He(a,e),e,[...r,a])):s[i]=ie(He(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&&de(o[0])&&o[0].id===null?r[i]={data:[]}:o&&de(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 We=h("query"),Je=["_any","_all","_in"],Be=["_jcont"],ge=t=>t&&(t.filters||t.pageNumber||t.pageSize||t.sort),I=(t,e)=>{We("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(!Je.includes(o))throw new y({message:`Wrong ${o} filter: Array value is supported only for the following filters: ${Je.join(", ")}`,type:"request"});a=i.join(",")}else if(typeof i=="object"){if(!Be.includes(o))throw new y({message:`Wrong ${o} filter: Object value is supported only for the following filters: ${Be.join(", ")}`,type:"request"});a=JSON.stringify(i)}else a=String(i);r[`filter[q][${s}]`]=a})),We("query string params: %O",r)),r};var P={resources:t=>t?[...w].sort():w,singletons:t=>t?[...ne].sort():ne,isSingleton:t=>ne.includes(t),isSdkError:t=>y.isSdkError(t),isApiError:t=>_.isApiError(t),init:t=>fe(t),get schemaVersion(){return he}};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,Pe,be=class{constructor(e){l(this,g);l(this,Pe,{});c(this,g,Ye.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}`}`,p=await n(this,g).request("GET",a,void 0,{...s,params:o});return z(p)}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),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 ae(p,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}`}`,p=oe(e),T=await n(this,g).request("PATCH",a,p,{...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}),p=z(a);if(Array.isArray(p)){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,p)}else return p}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,Pe=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: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)}},Ge=be;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 Ce=O,Te=Ce;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 Ae=x,Oe=Ae;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 xe=M,Me=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 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 ze=E,Ee=ze;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 Ne=N,Se=Ne;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 _e=S,ve=_e;var Q=class Q extends ce{async update(e,r,s){let i=await this.retrieve(r,s);return this.resources.update({...e,id:i.id,type:Q.TYPE},r,s)}isUser(e){return e.type&&e.type===Q.TYPE}relationship(e){return super.relationshipOneToOne(e)}relationshipToMany(...e){return super.relationshipOneToMany(...e)}type(){return Q.TYPE}};Q.TYPE="user";var Le=Q,we=Le;var W=class W extends R{isVersion(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="versions";var Ie=W,Qe=Ie;var w=["api_credentials","application_memberships","memberships","organizations","permissions","roles","user","versions"],ne=["user"];var Ke=h("commercelayer"),he="1.0.5";var d,J,B,G,K,X,Z,ee,re,Ue=class{constructor(e){this.openApiSchemaVersion=he;l(this,d);l(this,J);l(this,B);l(this,G);l(this,K);l(this,X);l(this,Z);l(this,ee);l(this,re);Ke("new commercelayer provisioning instance %O",e),c(this,d,new Ge(e))}get api_credentials(){return n(this,J)||c(this,J,new Te(n(this,d)))}get application_memberships(){return n(this,B)||c(this,B,new Oe(n(this,d)))}get memberships(){return n(this,G)||c(this,G,new Me(n(this,d)))}get organizations(){return n(this,K)||c(this,K,new Ee(n(this,d)))}get permissions(){return n(this,X)||c(this,X,new Se(n(this,d)))}get roles(){return n(this,Z)||c(this,Z,new ve(n(this,d)))}get user(){return n(this,ee)||c(this,ee,new we(n(this,d)))}get versions(){return n(this,re)||c(this,re,new Qe(n(this,d)))}get interceptors(){return n(this,d).client.interceptors}localConfig(e){}config(e){return Ke("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,p)=>{o[p]=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,J=new WeakMap,B=new WeakMap,G=new WeakMap,K=new WeakMap,X=new WeakMap,Z=new WeakMap,ee=new WeakMap,re=new WeakMap;var Xe=t=>new Ue(t),fe=Xe;export{Xe as CommerceLayerProvisioning,P as CommerceLayerProvisioningStatic,fe 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 Je=(t,e,r)=>e.has(t)||He("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)?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)=>(Je(t,e,"write to private field"),s?s.call(t,r):e.set(t,r),r);var nr=(t,...e)=>{},We=t=>nr;try{let t=or("debug");t&&typeof t=="function"&&(We=t)}catch{}var ar="clsdk",pr=t=>We(`${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 p=o.body&&o.status!==204?await o.text().then(a=>(de("response: %O",a),a?.trim()?JSON.parse(a):a)).catch(a=>{if(de("error: %s",a.message),o.ok)throw new y({message:"Error parsing API response body",type:"parse"})}):void 0;if(!o.ok){let a=new V(o.status,o.statusText,p);if(s?.response?.onFailure&&(a=await s.response.onFailure(a)),a)throw a}return p};var k=(a=>(a.CLIENT="client",a.REQUEST="request",a.RESPONSE="response",a.CANCEL="cancel",a.PARSE="parse",a.TIMEOUT="timeout",a.TOKEN_REFRESH="token-refresh",a))(k||{}),J=class J extends Error{static isSdkError(e){return e&&[J.NAME,x.NAME].includes(e.name)&&Object.values(k).includes(e.type)}constructor(e){super(e.message),this.name=J.NAME,this.type=e.type||"client"}};J.NAME="SdkError";var y=J,W=class W extends y{constructor(r){super({...r,type:"response"});this.errors=[];this.name=W.NAME}static isApiError(r){return y.isSdkError(r)&&r.name===W.NAME&&r.type==="response"}first(){return this.errors?.length>0?this.errors[0]:void 0}};W.NAME="ApiError";var x=W,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),p=new URL(`${o}/${r}`),a=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:a,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])=>{p.searchParams.append(L,String(F))});let Ye={interceptors:this.interceptors,fetch:i?.fetch||n(this,g).fetch};try{return await ge(p,$,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(p,$,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(p=>p.id===o.id&&p.type===o.type).length>=b.jsonapi.maxResourceIncluded?s[i]=o:Array.isArray(o)?s[i]=o.map(p=>pe(Ze(p,e),e,[...r,p])):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("_")),p;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"});p=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"});p=JSON.stringify(i)}else p=String(i);r[`filter[q][${s}]`]=p})),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 p=`${e.type}${i?"":`/${e.id}`}`,a=await n(this,h).request("GET",p,void 0,{...s,params:o});return N(a)}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}),p=N(o),a={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(a,p)}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),p=await n(this,h).request("POST",e.type,o,{...s,params:i});return N(p)}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 p=`${e.type}${i?"":`/${e.id}`}`,a=ce(e),O=await n(this,h).request("PATCH",p,a,{...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 p=await n(this,h).request("GET",r,void 0,{...i,params:o}),a=N(p);if(Array.isArray(a)){let O=s,q={pageCount:Number(p.meta?.page_count),recordCount:Number(p.meta?.record_count),currentPage:O?.pageNumber||b.default.pageNumber,recordsPerPage:O?.pageSize||b.default.pageSize};return new ue(q,a)}else return a}async action(e,r,s,i){A("action: %o %o, %O",e,r,i||{});let o={};i?.params&&Object.assign(o,i?.params);let p=s&&I(s)?ce(s):s;await n(this,h).request(e,r,p,{...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((p,a)=>{o[a]=p}),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.
|
|
3
|
+
"version": "2.1.1",
|
|
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.
|
|
37
|
+
"@babel/preset-env": "^7.25.4",
|
|
38
38
|
"@babel/preset-typescript": "^7.24.7",
|
|
39
39
|
"@commercelayer/eslint-config-ts": "1.4.5",
|
|
40
|
-
"@commercelayer/js-auth": "^6.
|
|
40
|
+
"@commercelayer/js-auth": "^6.3.1",
|
|
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": "^
|
|
45
|
+
"@types/node": "^22.5.1",
|
|
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": "^
|
|
53
|
-
"tsup": "^8.
|
|
54
|
-
"tsx": "^4.
|
|
55
|
-
"typescript": "^5.4
|
|
52
|
+
"semantic-release": "^24.1.0",
|
|
53
|
+
"tsup": "^8.2.4",
|
|
54
|
+
"tsx": "^4.19.0",
|
|
55
|
+
"typescript": "^5.5.4"
|
|
56
56
|
},
|
|
57
57
|
"repository": "github:commercelayer/provisioning-sdk",
|
|
58
58
|
"bugs": "https://github.com/commercelayer/provisioning-sdk/issues",
|