@commercelayer/provisioning-sdk 3.0.0-beta.2 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -4
- package/lib/{api-C_E9e1ea.d.ts → api-CnrR2t1g.d.ts} +50 -26
- package/lib/{api-C4jp_9vb.d.cts → api-R3mMNn87.d.cts} +50 -26
- package/lib/api.cjs +23 -23
- package/lib/api.d.cts +1 -1
- package/lib/api.d.ts +1 -1
- package/lib/api.js +13 -13
- package/lib/binding.cjs +3 -3
- package/lib/binding.d.cts +4 -4
- package/lib/binding.d.ts +4 -4
- package/lib/binding.js +2 -2
- package/lib/bundle.cjs +17 -17
- package/lib/bundle.d.cts +1 -1
- package/lib/bundle.d.ts +1 -1
- package/lib/bundle.js +15 -15
- package/lib/{chunk-3PJNJ7B6.js → chunk-2FZWJMYX.js} +5 -5
- package/lib/chunk-2FZWJMYX.js.map +1 -0
- package/lib/{chunk-OROPOAHK.cjs → chunk-3UQ4UNHL.cjs} +6 -6
- package/lib/chunk-3UQ4UNHL.cjs.map +1 -0
- package/lib/{chunk-6MXIGF2G.cjs → chunk-5RZ2O2CJ.cjs} +10 -10
- package/lib/{chunk-6MXIGF2G.cjs.map → chunk-5RZ2O2CJ.cjs.map} +1 -1
- package/lib/{chunk-NDKGLF4B.cjs → chunk-5V2JEFHA.cjs} +4 -4
- package/lib/chunk-5V2JEFHA.cjs.map +1 -0
- package/lib/{chunk-T2U6MUX4.js → chunk-7BSFPWED.js} +3 -3
- package/lib/chunk-7BSFPWED.js.map +1 -0
- package/lib/{chunk-EVDEBFHZ.cjs → chunk-ATSYNXFW.cjs} +35 -13
- package/lib/chunk-ATSYNXFW.cjs.map +1 -0
- package/lib/{chunk-MHV7FMLE.cjs → chunk-B77PPXQ4.cjs} +4 -4
- package/lib/chunk-B77PPXQ4.cjs.map +1 -0
- package/lib/{chunk-ZWZHZ4SU.js → chunk-BOAFNR4A.js} +3 -3
- package/lib/chunk-BOAFNR4A.js.map +1 -0
- package/lib/{chunk-3NDVX4SE.cjs → chunk-C4PVJRMW.cjs} +4 -4
- package/lib/chunk-C4PVJRMW.cjs.map +1 -0
- package/lib/{chunk-GHXKZEH7.js → chunk-CR45TDCY.js} +30 -8
- package/lib/chunk-CR45TDCY.js.map +1 -0
- package/lib/{chunk-7YEOUGXO.js → chunk-D7JC6E6O.js} +3 -3
- package/lib/chunk-D7JC6E6O.js.map +1 -0
- package/lib/{chunk-DYMRH6LP.cjs → chunk-EXABJOAU.cjs} +4 -4
- package/lib/chunk-EXABJOAU.cjs.map +1 -0
- package/lib/{chunk-UILXNOZE.cjs → chunk-F52NPQLI.cjs} +4 -4
- package/lib/{chunk-UILXNOZE.cjs.map → chunk-F52NPQLI.cjs.map} +1 -1
- package/lib/{chunk-STPXKF53.js → chunk-H76I777K.js} +4 -4
- package/lib/{chunk-STPXKF53.js.map → chunk-H76I777K.js.map} +1 -1
- package/lib/{chunk-3ILNEP2F.cjs → chunk-HKSMUVBZ.cjs} +26 -26
- package/lib/{chunk-3ILNEP2F.cjs.map → chunk-HKSMUVBZ.cjs.map} +1 -1
- package/lib/{chunk-IRFPCJTG.js → chunk-IRSVIAA3.js} +3 -3
- package/lib/chunk-IRSVIAA3.js.map +1 -0
- package/lib/{chunk-WMUY7Z2Q.js → chunk-JEP7T7W5.js} +3 -3
- package/lib/chunk-JEP7T7W5.js.map +1 -0
- package/lib/{chunk-KO4FQ4V2.cjs → chunk-JO4BHGCD.cjs} +4 -4
- package/lib/chunk-JO4BHGCD.cjs.map +1 -0
- package/lib/{chunk-6FB54J7W.cjs → chunk-KOCBBI6X.cjs} +4 -4
- package/lib/chunk-KOCBBI6X.cjs.map +1 -0
- package/lib/{chunk-KT6LCJJQ.js → chunk-LWRSBPJL.js} +3 -3
- package/lib/chunk-LWRSBPJL.js.map +1 -0
- package/lib/{chunk-TY46WNR6.cjs → chunk-NYLVQKFV.cjs} +8 -8
- package/lib/{chunk-TY46WNR6.cjs.map → chunk-NYLVQKFV.cjs.map} +1 -1
- package/lib/{chunk-ECGUWRRG.js → chunk-OJYX2GPK.js} +3 -3
- package/lib/chunk-OJYX2GPK.js.map +1 -0
- package/lib/{chunk-YUNEDDTL.js → chunk-OO2DV22U.js} +14 -14
- package/lib/{chunk-YUNEDDTL.js.map → chunk-OO2DV22U.js.map} +1 -1
- package/lib/{chunk-FRLV5YFL.cjs → chunk-PG4GQVZI.cjs} +4 -4
- package/lib/{chunk-FRLV5YFL.cjs.map → chunk-PG4GQVZI.cjs.map} +1 -1
- package/lib/{chunk-CWXGTX7W.js → chunk-PKQGWLOZ.js} +4 -4
- package/lib/{chunk-CWXGTX7W.js.map → chunk-PKQGWLOZ.js.map} +1 -1
- package/lib/{chunk-FMHTNUZ4.cjs → chunk-RADEEFOM.cjs} +4 -4
- package/lib/chunk-RADEEFOM.cjs.map +1 -0
- package/lib/chunk-T7GAOLT5.js +12 -0
- package/lib/chunk-T7GAOLT5.js.map +1 -0
- package/lib/{chunk-XS6QLJHG.cjs → chunk-TVU45BYJ.cjs} +5 -5
- package/lib/chunk-TVU45BYJ.cjs.map +1 -0
- package/lib/{chunk-LTIWXCVE.js → chunk-VGP6LU6F.js} +3 -3
- package/lib/{chunk-LTIWXCVE.js.map → chunk-VGP6LU6F.js.map} +1 -1
- package/lib/{chunk-TXONK7R5.cjs → chunk-VUWMD2QC.cjs} +4 -4
- package/lib/chunk-VUWMD2QC.cjs.map +1 -0
- package/lib/{chunk-I4LPOTDO.js → chunk-YT2JKVV4.js} +3 -3
- package/lib/{chunk-I4LPOTDO.js.map → chunk-YT2JKVV4.js.map} +1 -1
- package/lib/{chunk-G4JBHI2H.js → chunk-ZJNUYDXX.js} +3 -3
- package/lib/chunk-ZJNUYDXX.js.map +1 -0
- package/lib/commercelayer.cjs +10 -10
- package/lib/commercelayer.d.cts +2 -2
- package/lib/commercelayer.d.ts +2 -2
- package/lib/commercelayer.js +4 -4
- package/lib/enum.d.cts +1 -1
- package/lib/enum.d.ts +1 -1
- package/lib/index.cjs +22 -22
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +17 -17
- package/lib/index.js.map +1 -1
- package/lib/model.d.cts +1 -1
- package/lib/model.d.ts +1 -1
- package/lib/resources/api_credentials.cjs +5 -5
- package/lib/resources/api_credentials.d.cts +2 -2
- package/lib/resources/api_credentials.d.ts +1 -1
- package/lib/resources/api_credentials.js +4 -4
- package/lib/resources/application_memberships.cjs +5 -5
- package/lib/resources/application_memberships.d.cts +2 -2
- package/lib/resources/application_memberships.d.ts +1 -1
- package/lib/resources/application_memberships.js +4 -4
- package/lib/resources/identity_providers.cjs +5 -5
- package/lib/resources/identity_providers.d.cts +2 -2
- package/lib/resources/identity_providers.d.ts +1 -1
- package/lib/resources/identity_providers.js +4 -4
- package/lib/resources/membership_profiles.cjs +5 -5
- package/lib/resources/membership_profiles.d.cts +2 -2
- package/lib/resources/membership_profiles.d.ts +1 -1
- package/lib/resources/membership_profiles.js +4 -4
- package/lib/resources/memberships.cjs +5 -5
- package/lib/resources/memberships.d.cts +2 -2
- package/lib/resources/memberships.d.ts +1 -1
- package/lib/resources/memberships.js +4 -4
- package/lib/resources/organizations.cjs +5 -5
- package/lib/resources/organizations.d.cts +2 -2
- package/lib/resources/organizations.d.ts +1 -1
- package/lib/resources/organizations.js +4 -4
- package/lib/resources/permissions.cjs +5 -5
- package/lib/resources/permissions.d.cts +2 -2
- package/lib/resources/permissions.d.ts +1 -1
- package/lib/resources/permissions.js +4 -4
- package/lib/resources/roles.cjs +5 -5
- package/lib/resources/roles.d.cts +2 -2
- package/lib/resources/roles.d.ts +1 -1
- package/lib/resources/roles.js +4 -4
- package/lib/resources/users.cjs +5 -5
- package/lib/resources/users.d.cts +2 -2
- package/lib/resources/users.d.ts +1 -1
- package/lib/resources/users.js +4 -4
- package/lib/resources/versions.cjs +5 -5
- package/lib/resources/versions.d.cts +2 -2
- package/lib/resources/versions.d.ts +1 -1
- package/lib/resources/versions.js +4 -4
- package/lib/static.cjs +6 -6
- package/lib/static.d.cts +1 -1
- package/lib/static.d.ts +1 -1
- package/lib/static.js +5 -5
- package/lib/version.cjs +4 -4
- package/lib/version.d.cts +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +8 -8
- package/lib/chunk-3NDVX4SE.cjs.map +0 -1
- package/lib/chunk-3PJNJ7B6.js.map +0 -1
- package/lib/chunk-6FB54J7W.cjs.map +0 -1
- package/lib/chunk-7YEOUGXO.js.map +0 -1
- package/lib/chunk-DYMRH6LP.cjs.map +0 -1
- package/lib/chunk-ECGUWRRG.js.map +0 -1
- package/lib/chunk-EVDEBFHZ.cjs.map +0 -1
- package/lib/chunk-FMHTNUZ4.cjs.map +0 -1
- package/lib/chunk-G4JBHI2H.js.map +0 -1
- package/lib/chunk-GHXKZEH7.js.map +0 -1
- package/lib/chunk-IRFPCJTG.js.map +0 -1
- package/lib/chunk-KO4FQ4V2.cjs.map +0 -1
- package/lib/chunk-KT6LCJJQ.js.map +0 -1
- package/lib/chunk-MHV7FMLE.cjs.map +0 -1
- package/lib/chunk-NDKGLF4B.cjs.map +0 -1
- package/lib/chunk-OROPOAHK.cjs.map +0 -1
- package/lib/chunk-SQLX22US.js +0 -12
- package/lib/chunk-SQLX22US.js.map +0 -1
- package/lib/chunk-T2U6MUX4.js.map +0 -1
- package/lib/chunk-TXONK7R5.cjs.map +0 -1
- package/lib/chunk-WMUY7Z2Q.js.map +0 -1
- package/lib/chunk-XS6QLJHG.cjs.map +0 -1
- package/lib/chunk-ZWZHZ4SU.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../gen/resources/memberships.ts"],"names":[],"mappings":"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","file":"chunk-7BSFPWED.js","sourcesContent":["import type { QueryParamsList, QueryParamsRetrieve } from '@runtime/query'\nimport type {\n ListResponse,\n Resource,\n ResourceCreate,\n ResourceId,\n ResourceRel,\n ResourceSort,\n /* ResourceFilter */ ResourcesConfig,\n ResourceUpdate,\n} from '@runtime/resource'\nimport { ApiResource } from '@runtime/resource'\nimport type { ApplicationMembership, ApplicationMembershipType } from './application_memberships'\nimport type { MembershipProfile, MembershipProfileType } from './membership_profiles'\nimport type { Organization, OrganizationType } from './organizations'\nimport type { Role, RoleType } from './roles'\nimport type { Version } from './versions'\n\ntype MembershipType = 'memberships'\ntype MembershipRel = ResourceRel & { type: MembershipType }\ntype OrganizationRel = ResourceRel & { type: OrganizationType }\ntype RoleRel = ResourceRel & { type: RoleType }\ntype ApplicationMembershipRel = ResourceRel & { type: ApplicationMembershipType }\ntype MembershipProfileRel = ResourceRel & { type: MembershipProfileType }\n\nexport type MembershipSort = Pick<Membership, 'id' | 'status'> & ResourceSort\n// export type MembershipFilter = Pick<Membership, 'id' | 'user_email' | 'status' | 'owner' | 'access_scope'> & ResourceFilter\n\n/**\n * The Membership object is returned as part of the response body of each successful list, retrieve, create, update or delete API call to the /api/memberships endpoint.\n *\n * @link https://docs.commercelayer.io/provisioning-api-reference/memberships/object\n */\ninterface Membership extends Resource {\n readonly type: MembershipType\n\n /**\n * The user email.\n * @example ```\"commercelayer@commercelayer.io\"```\n */\n user_email: string\n /**\n * The user first name.\n * @example ```\"John\"```\n */\n user_first_name: string\n /**\n * The user last name.\n * @example ```\"Doe\"```\n */\n user_last_name: string\n /**\n * The memberships status. One of `pending` (default), `active`.\n * @example ```\"pending\"```\n */\n status: 'pending' | 'active'\n /**\n * Indicates if the user it's the owner of the organization.\n * @example ```true```\n */\n owner: boolean\n /**\n * Reflects the organization's access scope, either test_access or all_access.\n * @example ```true```\n */\n test_enabled: boolean\n /**\n * The access scope for applications. One of `live_access` (default), `test_access`, `all_access`.\n * @example ```\"live_access\"```\n */\n access_scope?: 'live_access' | 'test_access' | 'all_access' | null\n\n organization?: Organization | null\n role?: Role | null\n application_memberships?: ApplicationMembership[] | null\n membership_profile?: MembershipProfile | null\n versions?: Version[] | null\n}\n\ninterface MembershipCreate extends ResourceCreate {\n /**\n * The user email.\n * @example ```\"commercelayer@commercelayer.io\"```\n */\n user_email: string\n /**\n * The access scope for applications. One of `live_access` (default), `test_access`, `all_access`.\n * @example ```\"live_access\"```\n */\n access_scope?: 'live_access' | 'test_access' | 'all_access' | null\n\n organization: OrganizationRel\n role: RoleRel\n application_memberships?: ApplicationMembershipRel[] | null\n membership_profile?: MembershipProfileRel | null\n}\n\ninterface MembershipUpdate extends ResourceUpdate {\n /**\n * The access scope for applications. One of `live_access` (default), `test_access`, `all_access`.\n * @example ```\"live_access\"```\n */\n access_scope?: 'live_access' | 'test_access' | 'all_access' | null\n\n role?: RoleRel | null\n application_memberships?: ApplicationMembershipRel[] | null\n membership_profile?: MembershipProfileRel | null\n}\n\nclass Memberships extends ApiResource<Membership> {\n static readonly TYPE: MembershipType = 'memberships' as const\n\n async create(\n resource: MembershipCreate,\n params?: QueryParamsRetrieve<Membership>,\n options?: ResourcesConfig,\n ): Promise<Membership> {\n return this.resources.create<MembershipCreate, Membership>({ ...resource, type: Memberships.TYPE }, params, options)\n }\n\n async update(\n resource: MembershipUpdate,\n params?: QueryParamsRetrieve<Membership>,\n options?: ResourcesConfig,\n ): Promise<Membership> {\n return this.resources.update<MembershipUpdate, Membership>({ ...resource, type: Memberships.TYPE }, params, options)\n }\n\n async delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void> {\n await this.resources.delete(typeof id === 'string' ? { id, type: Memberships.TYPE } : id, options)\n }\n\n async organization(\n membershipId: string | Membership,\n params?: QueryParamsRetrieve<Organization>,\n options?: ResourcesConfig,\n ): Promise<Organization> {\n const _membershipId = (membershipId as Membership).id || (membershipId as string)\n return this.resources.fetch<Organization>(\n { type: 'organizations' },\n `memberships/${_membershipId}/organization`,\n params,\n options,\n ) as unknown as Organization\n }\n\n async role(\n membershipId: string | Membership,\n params?: QueryParamsRetrieve<Role>,\n options?: ResourcesConfig,\n ): Promise<Role> {\n const _membershipId = (membershipId as Membership).id || (membershipId as string)\n return this.resources.fetch<Role>(\n { type: 'roles' },\n `memberships/${_membershipId}/role`,\n params,\n options,\n ) as unknown as Role\n }\n\n async application_memberships(\n membershipId: string | Membership,\n params?: QueryParamsList<ApplicationMembership>,\n options?: ResourcesConfig,\n ): Promise<ListResponse<ApplicationMembership>> {\n const _membershipId = (membershipId as Membership).id || (membershipId as string)\n return this.resources.fetch<ApplicationMembership>(\n { type: 'application_memberships' },\n `memberships/${_membershipId}/application_memberships`,\n params,\n options,\n ) as unknown as ListResponse<ApplicationMembership>\n }\n\n async membership_profile(\n membershipId: string | Membership,\n params?: QueryParamsRetrieve<MembershipProfile>,\n options?: ResourcesConfig,\n ): Promise<MembershipProfile> {\n const _membershipId = (membershipId as Membership).id || (membershipId as string)\n return this.resources.fetch<MembershipProfile>(\n { type: 'membership_profiles' },\n `memberships/${_membershipId}/membership_profile`,\n params,\n options,\n ) as unknown as MembershipProfile\n }\n\n async versions(\n membershipId: string | Membership,\n params?: QueryParamsList<Version>,\n options?: ResourcesConfig,\n ): Promise<ListResponse<Version>> {\n const _membershipId = (membershipId as Membership).id || (membershipId as string)\n return this.resources.fetch<Version>(\n { type: 'versions' },\n `memberships/${_membershipId}/versions`,\n params,\n options,\n ) as unknown as ListResponse<Version>\n }\n\n async resend(membershipId: string | Membership, options?: ResourcesConfig): Promise<void> {\n const _membershipId = (membershipId as Membership).id || (membershipId as string)\n await this.resources.action('POST', `memberships/${_membershipId}/resend`, {}, options)\n }\n\n isMembership(resource: any): resource is Membership {\n return resource.type && resource.type === Memberships.TYPE\n }\n\n relationship(id: string | ResourceId | null): MembershipRel {\n return super.relationshipOneToOne<MembershipRel>(id)\n }\n\n relationshipToMany(...ids: string[]): MembershipRel[] {\n return super.relationshipOneToMany<MembershipRel>(...ids)\n }\n\n type(): MembershipType {\n return Memberships.TYPE\n }\n}\n\nconst instance = new Memberships()\nexport default instance\n\nexport type { Membership, MembershipCreate, Memberships, MembershipType, MembershipUpdate }\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3UQ4UNHL_cjs = require('./chunk-3UQ4UNHL.cjs');
|
|
4
4
|
|
|
5
5
|
// ../sdk-runtime/src/debug.ts
|
|
6
6
|
var PREFIX = "clsdk";
|
|
@@ -207,12 +207,29 @@ function isApiError(error) {
|
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
// ../sdk-runtime/src/util.ts
|
|
210
|
+
var decodeJwtSegment = (segment) => atob(segment.replace(/-/g, "+").replace(/_/g, "/"));
|
|
211
|
+
var COMMERCE_LAYER_DOMAINS = ["commercelayer.io", "commercelayer.co", "commercelayer.dev"];
|
|
212
|
+
var domainFromIssuer = (iss) => {
|
|
213
|
+
if (typeof iss !== "string") return void 0;
|
|
214
|
+
let host;
|
|
215
|
+
try {
|
|
216
|
+
const url = new URL(iss);
|
|
217
|
+
if (url.protocol !== "https:") return void 0;
|
|
218
|
+
host = url.hostname;
|
|
219
|
+
} catch {
|
|
220
|
+
return void 0;
|
|
221
|
+
}
|
|
222
|
+
if (!host.startsWith("auth.")) return void 0;
|
|
223
|
+
const domain = host.slice("auth.".length);
|
|
224
|
+
const trusted = COMMERCE_LAYER_DOMAINS.some((d) => domain === d || domain.endsWith(`.${d}`));
|
|
225
|
+
return trusted ? domain : void 0;
|
|
226
|
+
};
|
|
210
227
|
var extractTokenData = (token) => {
|
|
211
228
|
try {
|
|
212
|
-
const data = JSON.parse(
|
|
229
|
+
const data = JSON.parse(decodeJwtSegment(token.split(".")[1]));
|
|
213
230
|
return {
|
|
214
|
-
organization: data.organization
|
|
215
|
-
domain:
|
|
231
|
+
organization: data.organization?.slug,
|
|
232
|
+
domain: domainFromIssuer(data.iss),
|
|
216
233
|
expiration: data.exp
|
|
217
234
|
};
|
|
218
235
|
} catch (_err) {
|
|
@@ -250,7 +267,7 @@ var CLIENT_HEADER_NAME = "X-CL-SDK";
|
|
|
250
267
|
var debug3 = debug_default("client");
|
|
251
268
|
var baseURL = (organization, domain, apiVersion) => {
|
|
252
269
|
const versionSegment = apiVersion ? `/${apiVersion}` : "";
|
|
253
|
-
const subdomain =
|
|
270
|
+
const subdomain = chunk3UQ4UNHL_cjs.binding.subdomain ?? organization.toLowerCase();
|
|
254
271
|
return `https://${subdomain}.${domain || config_default.default.domain}/api${versionSegment}`;
|
|
255
272
|
};
|
|
256
273
|
var ApiClient = class _ApiClient {
|
|
@@ -260,7 +277,7 @@ var ApiClient = class _ApiClient {
|
|
|
260
277
|
if (!options.organization && tokenData?.organization) options.organization = tokenData.organization;
|
|
261
278
|
if (!options.domain && tokenData?.domain) options.domain = tokenData.domain;
|
|
262
279
|
}
|
|
263
|
-
const required =
|
|
280
|
+
const required = chunk3UQ4UNHL_cjs.binding.subdomain ? config_default.client.requiredAttributes.filter((a) => a !== "organization") : config_default.client.requiredAttributes;
|
|
264
281
|
for (const attr of required) if (!options[attr]) throw new SdkError({ message: `Undefined '${attr}' parameter` });
|
|
265
282
|
return new _ApiClient(options);
|
|
266
283
|
}
|
|
@@ -290,7 +307,7 @@ var ApiClient = class _ApiClient {
|
|
|
290
307
|
"Content-Type": "application/vnd.api+json",
|
|
291
308
|
Authorization: "Bearer " + this.#accessToken
|
|
292
309
|
};
|
|
293
|
-
if (options.telemetry !== false) headers[CLIENT_HEADER_NAME] = `js/${
|
|
310
|
+
if (options.telemetry !== false) headers[CLIENT_HEADER_NAME] = `js/${chunk3UQ4UNHL_cjs.binding.name}-v${chunk3UQ4UNHL_cjs.binding.sdkVersion}`;
|
|
294
311
|
if (options.userAgent) headers["User-Agent"] = options.userAgent;
|
|
295
312
|
fetchConfig.headers = headers;
|
|
296
313
|
this.#clientConfig = fetchConfig;
|
|
@@ -340,7 +357,11 @@ var ApiClient = class _ApiClient {
|
|
|
340
357
|
async request(method, path, body, options) {
|
|
341
358
|
debug3("request %s %s, %O, %O", method, path, body || {}, options || {});
|
|
342
359
|
if (options?.userAgent) debug3("User-Agent header ignored in request config");
|
|
343
|
-
const baseUrl = options?.organization || options?.apiVersion !== void 0 ? baseURL(
|
|
360
|
+
const baseUrl = options?.organization || options?.apiVersion !== void 0 ? baseURL(
|
|
361
|
+
options.organization || this.#organization,
|
|
362
|
+
options.domain || this.#domain,
|
|
363
|
+
options.apiVersion ?? this.#apiVersion
|
|
364
|
+
) : this.#baseUrl;
|
|
344
365
|
const url = new URL(`${baseUrl}/${path}`);
|
|
345
366
|
const bodyData = body ? JSON.stringify({ data: body }) : void 0;
|
|
346
367
|
const headers = { ...this.requestHeaders, ...this.customHeaders(options?.headers) };
|
|
@@ -440,6 +461,7 @@ var denormalizeResource = (res, included, chain = []) => {
|
|
|
440
461
|
type: res.type,
|
|
441
462
|
...res.attributes
|
|
442
463
|
};
|
|
464
|
+
if (res.meta) resource.meta = res.meta;
|
|
443
465
|
if (res.relationships)
|
|
444
466
|
Object.keys(res.relationships).forEach((key) => {
|
|
445
467
|
const rel = res.relationships[key].data;
|
|
@@ -463,7 +485,7 @@ var normalize = (resource) => {
|
|
|
463
485
|
const attributes = {};
|
|
464
486
|
const relationships = {};
|
|
465
487
|
for (const field in resource) {
|
|
466
|
-
if (["type", "id"].includes(field)) continue;
|
|
488
|
+
if (["type", "id", "meta"].includes(field)) continue;
|
|
467
489
|
const value = resource[field];
|
|
468
490
|
if (Array.isArray(value) && value.length === 1 && isResourceType(value[0]) && value[0].id === null) {
|
|
469
491
|
relationships[field] = { data: [] };
|
|
@@ -804,10 +826,10 @@ var ApiSingleton = class extends ApiResourceBase {
|
|
|
804
826
|
}
|
|
805
827
|
};
|
|
806
828
|
var isResourceId = (resource) => {
|
|
807
|
-
return resource?.type && resource.id &&
|
|
829
|
+
return resource?.type && resource.id && chunk3UQ4UNHL_cjs.binding.resourceList.includes(resource.type);
|
|
808
830
|
};
|
|
809
831
|
var isResourceType = (resource) => {
|
|
810
|
-
return resource?.type &&
|
|
832
|
+
return resource?.type && chunk3UQ4UNHL_cjs.binding.resourceList.includes(resource.type);
|
|
811
833
|
};
|
|
812
834
|
|
|
813
835
|
exports.ApiResource = ApiResource;
|
|
@@ -817,5 +839,5 @@ exports.debug_default = debug_default;
|
|
|
817
839
|
exports.isApiError = isApiError;
|
|
818
840
|
exports.isSdkError = isSdkError;
|
|
819
841
|
exports.isTokenExpired = isTokenExpired;
|
|
820
|
-
//# sourceMappingURL=chunk-
|
|
821
|
-
//# sourceMappingURL=chunk-
|
|
842
|
+
//# sourceMappingURL=chunk-ATSYNXFW.cjs.map
|
|
843
|
+
//# sourceMappingURL=chunk-ATSYNXFW.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../sdk-runtime/src/debug.ts","../../sdk-runtime/src/fetch.ts","../../sdk-runtime/src/error.ts","../../sdk-runtime/src/util.ts","../../sdk-runtime/src/config.ts","../../sdk-runtime/src/client.ts","../../sdk-runtime/src/jsonapi.ts","../../sdk-runtime/src/query.ts","../../sdk-runtime/src/resource.ts"],"names":["debug","ErrorType","binding","config","inc"],"mappings":"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","file":"chunk-ATSYNXFW.cjs","sourcesContent":["/**\n * Minimal namespaced debug logging, gated on the `DEBUG` environment variable.\n *\n * This replaces an opportunistic `require('debug')` wrapped in an empty catch.\n * `debug` was declared by no package in the workspace, so under pnpm's strict\n * isolation it was unresolvable, the require threw, the catch swallowed it, and\n * every one of the call sites across the Runtime was a permanent no-op — with\n * no way to discover that by using it.\n *\n * Reimplemented rather than declared as a dependency: both published packages\n * have zero runtime dependencies, and that is worth more than format-specifier\n * fidelity. The interface is unchanged, so call sites did not move.\n *\n * Usage: `DEBUG=clsdk:*` or `DEBUG=clsdk:client,clsdk:resource`.\n */\n\ntype Debugger = (pattern: string, ...args: any[]) => void\n\nconst PREFIX = 'clsdk'\nconst NOOP: Debugger = () => {}\n\n/** `process` is absent in browsers, so this must never assume it exists. */\nconst debugEnv = (): string => {\n try {\n return typeof process !== 'undefined' ? (process.env?.DEBUG ?? '') : ''\n } catch {\n return ''\n }\n}\n\n/** Turns one `DEBUG` entry into a matcher. `*` matches any run of characters. */\nconst toMatcher = (pattern: string): RegExp =>\n new RegExp(`^${pattern.replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&').replace(/\\*/g, '.*')}$`)\n\nconst isEnabled = (namespace: string): boolean => {\n const env = debugEnv()\n if (!env) return false\n return env\n .split(',')\n .map((p) => p.trim())\n .filter(Boolean)\n .some((p) => toMatcher(p).test(namespace))\n}\n\n/**\n * Substitutes the format specifiers the call sites actually use. Deliberately\n * not `node:util`'s `format`: importing a Node builtin here would break the\n * browser builds this SDK also ships.\n */\nconst interpolate = (pattern: string, args: any[]): string => {\n let i = 0\n const out = pattern.replace(/%[oOjsdi%]/g, (token) => {\n if (token === '%%') return '%'\n if (i >= args.length) return token\n const arg = args[i++]\n switch (token) {\n case '%s':\n return String(arg)\n case '%d':\n case '%i':\n return String(Number(arg))\n default:\n try {\n return JSON.stringify(arg)\n } catch {\n return String(arg)\n }\n }\n })\n // Anything not consumed by a specifier still gets shown.\n const rest = args.slice(i)\n return rest.length > 0 ? `${out} ${rest.map((a) => safeStringify(a)).join(' ')}` : out\n}\n\nconst safeStringify = (value: unknown): string => {\n if (typeof value === 'string') return value\n try {\n return JSON.stringify(value) ?? String(value)\n } catch {\n return String(value)\n }\n}\n\n/**\n * Returns a debugger for the given namespace. Enablement is read per call, not\n * cached at module load, so setting `DEBUG` after import still works.\n */\nconst debug = (namespace: string): Debugger => {\n const full = `${PREFIX}:${namespace}`\n return (pattern: string, ...args: any[]): void => {\n if (!isEnabled(full)) return\n // stderr, as the `debug` package does, so stdout stays clean for callers.\n console.error(`${full} ${interpolate(pattern, args)}`)\n }\n}\n\nexport default debug\nexport type { Debugger }\nexport { NOOP as noopDebugger }\n","import Debug from './debug'\nimport { ErrorType, SdkError } from './error'\nimport type { InterceptorManager } from './interceptor'\n\nconst debug = Debug('fetch')\n\nexport type Fetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>\n\nexport type FetchResponse = any\nexport type FetchRequestOptions = RequestInit\nexport type FetchClientOptions = {\n interceptors?: InterceptorManager\n fetch?: Fetch\n}\n\nexport class FetchError extends Error {\n static NAME = 'FetchError'\n\n static isFetchError = (error: any): error is FetchError => {\n return error instanceof FetchError\n }\n\n readonly #errors?: any[]\n readonly #status: number\n readonly #statusText: string\n readonly #request?: Partial<FetchRequestOptions>\n\n constructor(status: number, statusText: string, body?: any, request?: FetchRequestOptions) {\n super(statusText)\n this.#status = status\n this.#statusText = statusText\n if (body) this.#errors = body.errors\n if (request) this.#request = request\n this.name = FetchError.NAME\n }\n\n get errors(): any[] | undefined {\n return this.#errors\n }\n\n get status(): number {\n return this.#status\n }\n\n get statusText(): string {\n return this.#statusText\n }\n\n get request(): Partial<FetchRequestOptions> | undefined {\n return this.#request\n }\n}\n\nexport const fetchURL = async (\n url: URL,\n requestOptions: FetchRequestOptions,\n clientOptions?: FetchClientOptions,\n): Promise<FetchResponse> => {\n debug('fetch: %s, %O, native[%s]', url, requestOptions || {}, clientOptions?.fetch ? 'no' : 'yes')\n\n const interceptors = clientOptions?.interceptors\n\n if (interceptors?.request?.onSuccess)\n ({ url, options: requestOptions } = await interceptors.request.onSuccess({ url, options: requestOptions }))\n\n // const request: Request = new Request(url, requestOptions) // not supported by all fetch implementations\n\n const fetchClient = clientOptions?.fetch || fetch\n\n let response = await fetchClient(url, requestOptions)\n\n if (response.ok) {\n if (interceptors?.rawReader?.onSuccess) await interceptors.rawReader.onSuccess(response)\n if (interceptors?.response?.onSuccess) response = await interceptors.response.onSuccess(response)\n } else {\n if (interceptors?.rawReader?.onFailure) await interceptors.rawReader.onFailure(response)\n }\n\n const responseBody =\n response.body && response.status !== 204\n ? await response\n .json()\n .then((json) => {\n debug('response: %O', json)\n return json\n })\n .catch((err: Error) => {\n debug('error: %s', err.message)\n if (response.ok) throw new SdkError({ message: 'Error parsing API response body', type: ErrorType.PARSE })\n })\n : undefined\n\n if (!response.ok) {\n let error = new FetchError(response.status, response.statusText, responseBody, requestOptions)\n if (interceptors?.response?.onFailure) error = await interceptors.response.onFailure(error)\n if (error) throw error\n }\n\n return responseBody\n}\n","import { FetchError } from './fetch'\n\nenum ErrorType {\n CLIENT = 'client', // Generic Client error\n REQUEST = 'request', // Error preparing API request\n RESPONSE = 'response', // Error response from API\n CANCEL = 'cancel', // Forced request abort using interceptor\n PARSE = 'parse', // Error parsing API resource\n TIMEOUT = 'timeout', // Timeout error\n TOKEN_REFRESH = 'token-refresh', // Error calling refresh token function\n}\n\nclass SdkError extends Error {\n static NAME = 'SdkError'\n\n static isSdkError(error: any): error is SdkError {\n return (\n error &&\n [SdkError.NAME, ApiError.NAME].includes(error.name as string) &&\n Object.values(ErrorType).includes(error.type as ErrorType)\n )\n }\n\n type: ErrorType\n code?: string\n source?: Error\n\n constructor(error: { message: string; type?: ErrorType }) {\n super(error.message)\n this.name = SdkError.NAME\n this.type = error.type || ErrorType.CLIENT\n }\n}\n\nclass ApiError extends SdkError {\n static NAME = 'ApiError'\n\n static isApiError(error: any): error is ApiError {\n return SdkError.isSdkError(error) && error.name === ApiError.NAME && error.type === ErrorType.RESPONSE\n }\n\n errors: any[] = []\n status?: number\n statusText?: string\n\n // constructor(error: SdkError)\n constructor(error: { message: string }) {\n super({ ...error, type: ErrorType.RESPONSE })\n this.name = ApiError.NAME\n }\n\n first(): any {\n return this.errors?.length > 0 ? this.errors[0] : undefined\n }\n}\n\nconst isRequestError = (error: any): error is TypeError => {\n return error instanceof TypeError && error.message !== 'fetch failed'\n}\n\nconst isCancelError = (error: any): boolean => {\n return error instanceof DOMException && error.name === 'AbortError'\n}\n\nconst isTimeoutError = (error: any): boolean => {\n return error instanceof DOMException && error.name === 'TimeoutError'\n}\n\nconst isExpiredTokenError = (error: any): boolean => {\n const invalidTokenCodes = ['INVALID_TOKEN' /*, 'UNAUTHORIZED' */]\n return (\n ApiError.isApiError(error) &&\n error.status === 401 &&\n (invalidTokenCodes.includes(error.code || '') ||\n (error.errors && error.errors.length > 0 && invalidTokenCodes.includes(error.errors[0].code as string)))\n )\n}\n\nconst handleError = (error: Error): never => {\n if (SdkError.isSdkError(error) || ApiError.isApiError(error)) throw error\n\n let sdkError = new SdkError({ message: error.message })\n\n if (FetchError.isFetchError(error)) {\n // console.log('Fetch Error')\n const apiError = new ApiError(sdkError)\n apiError.type = ErrorType.RESPONSE\n apiError.status = error.status\n apiError.statusText = error.statusText\n apiError.code = String(apiError.status)\n apiError.errors = error.errors || []\n if (!apiError.message && apiError.statusText) apiError.message = apiError.statusText\n sdkError = apiError\n } else if (isRequestError(error)) {\n // console.log('Request Error')\n sdkError.type = ErrorType.REQUEST\n } else if (isCancelError(error)) {\n // console.log('Cancel Error')\n sdkError.type = ErrorType.CANCEL\n } else if (isTimeoutError(error)) {\n // console.log('Timeout Error')\n sdkError.type = ErrorType.TIMEOUT\n } else {\n // console.log('Generic Error')\n sdkError.type = ErrorType.CLIENT\n sdkError.source = error\n }\n\n throw sdkError\n}\n\nexport { ApiError, ErrorType, handleError, isExpiredTokenError, SdkError }\n\nexport function isSdkError(error: unknown): error is SdkError {\n return SdkError.isSdkError(error)\n}\n\nexport function isApiError(error: unknown): error is ApiError {\n return ApiError.isApiError(error)\n}\n","import type { ObjectType } from '../src/types'\n// import path from 'node:path'\n\nexport const sleep = async (ms: number): Promise<NodeJS.Timeout> => {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\nexport const sortObjectFields = (obj: ObjectType): ObjectType => {\n const sorted = Object.keys(obj)\n .sort()\n .reduce((accumulator: ObjectType, key: string) => {\n accumulator[key] = obj[key]\n return accumulator\n }, {})\n return sorted\n}\n\n/*\nconst nestedField = (obj: any, field: string): { key: string, val: any } => {\n\n\tlet fp = field\n\tif (fp.endsWith('.')) fp = fp.substring(0, fp.length-1)\n\n\tconst dots = field.split(\".\")\n\n\tconst key = dots[dots.length-1]\n\tlet val = obj\n\twhile (dots.length && (val = val[dots.shift() || '']))\n\t \n\treturn { key, val }\n}\n*/\n\n/*\nconst packageInfo = (fields?: string | string[], options?: any): Record<string, any> => {\n\tconst pjson = require(path.resolve('./', 'package.json'))\n\treturn fields? (Array.isArray(fields)? fields : [ fields ]).reduce((info: any, field) => {\n\t\t\tconst nf = nestedField(pjson, field)\n\t\t\tinfo[options?.nestedName? nf.key : field] = nf.val\n\t\t\treturn info\n\t\t}, {}) : pjson\n}\n*/\n\nexport type TokenData = {\n // Absent from tokens without an `organization` claim; the domain and expiry\n // are still read from such a token.\n organization?: string\n domain?: string\n expiration: number\n}\n\n/**\n * Decodes one JWT segment. JWTs are base64url-encoded, using `-` and `_` where\n * standard base64 uses `+` and `/`, and `atob` throws on both. A payload only\n * contains them when its claims do — for ASCII text, only the characters `>`,\n * `?` and `~` produce them; some non-ASCII characters do too — so most tokens\n * decode either way, and the ones that do not would silently lose everything\n * inferred from them. Missing padding needs no handling: `atob` accepts it.\n * Normalised here rather than with `Buffer`, which browsers do not have.\n */\nconst decodeJwtSegment = (segment: string): string => atob(segment.replace(/-/g, '+').replace(/_/g, '/'))\n\n// Production, staging and development. All three are Commerce Layer's own;\n// dropping one sends that environment's requests to the default domain.\nconst COMMERCE_LAYER_DOMAINS = ['commercelayer.io', 'commercelayer.co', 'commercelayer.dev']\n\n/**\n * The API domain implied by the token issuer: `https://auth.commercelayer.co`\n * gives `commercelayer.co`. The token is not verified client-side, so the\n * issuer is accepted only when it is a Commerce Layer auth host — otherwise a\n * token naming an arbitrary issuer would route requests, token attached, to a\n * host of its choosing. Anything else yields no domain, and the default applies.\n */\nconst domainFromIssuer = (iss: unknown): string | undefined => {\n if (typeof iss !== 'string') return undefined\n let host: string\n try {\n const url = new URL(iss)\n if (url.protocol !== 'https:') return undefined\n host = url.hostname\n } catch {\n return undefined\n }\n if (!host.startsWith('auth.')) return undefined\n const domain = host.slice('auth.'.length)\n const trusted = COMMERCE_LAYER_DOMAINS.some((d) => domain === d || domain.endsWith(`.${d}`))\n return trusted ? domain : undefined\n}\n\nexport const extractTokenData = (token: string): TokenData | undefined => {\n try {\n const data = JSON.parse(decodeJwtSegment(token.split('.')[1] as string))\n return {\n organization: data.organization?.slug,\n domain: domainFromIssuer(data.iss),\n expiration: data.exp,\n }\n } catch (_err: any) {\n return undefined\n }\n}\n\nexport const isTokenExpired = (token: string): boolean => {\n try {\n const tokenData = extractTokenData(token)\n return tokenData?.expiration ? tokenData.expiration * 1000 - Date.now() < 0 : false\n } catch (_err: any) {\n return false\n }\n}\n","import type { ApiClientInitConfig } from './client'\n\nconst config = {\n default: {\n domain: 'commercelayer.io',\n pageNumber: 1,\n pageSize: 10,\n },\n client: {\n timeout: 15000,\n requiredAttributes: ['organization', 'accessToken'] as Array<keyof ApiClientInitConfig>,\n },\n jsonapi: {\n maxResourceIncluded: 2,\n },\n} as const\n\nexport default config\n","import { binding } from '#registry'\nimport config from './config'\nimport Debug from './debug'\nimport { ErrorType, handleError, isExpiredTokenError, SdkError } from './error'\nimport type { Fetch, FetchClientOptions, FetchRequestOptions, FetchResponse } from './fetch'\nimport { fetchURL } from './fetch'\nimport type { InterceptorManager } from './interceptor'\nimport { extractTokenData, isTokenExpired } from './util'\n\nconst CLIENT_HEADER_NAME = 'X-CL-SDK'\n\nconst debug = Debug('client')\n\n// The API version is chosen at runtime via the optional `apiVersion` init\n// option. When set it becomes a URL path segment (`/api/2026-05/orders`);\n// when omitted the request stays unversioned (`/api/orders`) and the API\n// resolves the organization's default version.\nconst baseURL = (organization: string, domain?: string, apiVersion?: string): string => {\n const versionSegment = apiVersion ? `/${apiVersion}` : ''\n // Organization-scoped APIs (Core) put the organization slug in the subdomain;\n // targets with a fixed subdomain (Provisioning) ignore it entirely.\n const subdomain = binding.subdomain ?? organization.toLowerCase()\n return `https://${subdomain}.${domain || config.default.domain}/api${versionSegment}`\n}\n\ntype RequestParams = Record<string, string | number | boolean>\ntype RequestHeaders = Record<string, string>\n\nexport type RefreshToken = (expiredToken: string) => Promise<string>\n\ntype RequestConfig = {\n timeout?: number\n params?: RequestParams\n headers?: RequestHeaders\n userAgent?: string\n fetch?: Fetch\n refreshToken?: RefreshToken\n telemetry?: boolean\n}\n\ntype ApiConfig = {\n organization?: string\n domain?: string\n accessToken: string\n apiVersion?: string\n}\n\ntype ApiClientInitConfig = ApiConfig & RequestConfig\ntype ApiClientConfig = Partial<ApiClientInitConfig>\n\nexport type Method = 'GET' | 'DELETE' | 'POST' | 'PUT' | 'PATCH'\n\nclass ApiClient {\n static create(options: ApiClientInitConfig): ApiClient {\n // Take organization and domain from access token if not defined by user\n if ((!options.organization || !options.domain) && options.accessToken) {\n const tokenData = extractTokenData(options.accessToken)\n if (!options.organization && tokenData?.organization) options.organization = tokenData.organization\n if (!options.domain && tokenData?.domain) options.domain = tokenData.domain\n }\n\n // `organization` is only required when it forms the subdomain.\n const required = binding.subdomain\n ? config.client.requiredAttributes.filter((a) => a !== 'organization')\n : config.client.requiredAttributes\n for (const attr of required) if (!options[attr]) throw new SdkError({ message: `Undefined '${attr}' parameter` })\n return new ApiClient(options)\n }\n\n #baseUrl: string\n #accessToken: string\n #organization: string\n #domain?: string\n #apiVersion?: string\n readonly #clientConfig: RequestConfig\n readonly #interceptors: InterceptorManager\n\n private constructor(options: ApiClientInitConfig) {\n debug('new client instance %O', options)\n\n this.#apiVersion = options.apiVersion\n this.#baseUrl = baseURL(options.organization ?? '', options.domain, this.#apiVersion)\n this.#accessToken = options.accessToken\n this.#organization = options.organization ?? '' // organization is always defined\n this.#domain = options.domain\n\n const fetchConfig: RequestConfig = {\n timeout: options.timeout || config.client.timeout,\n fetch: options.fetch,\n refreshToken: options.refreshToken,\n }\n\n // Set custom headers\n const customHeaders = this.customHeaders(options.headers)\n\n // Set headers\n const headers: RequestHeaders = {\n ...customHeaders,\n Accept: 'application/vnd.api+json',\n 'Content-Type': 'application/vnd.api+json',\n Authorization: 'Bearer ' + this.#accessToken,\n }\n\n // SDK client identification — opt out via { telemetry: false } at init time\n if (options.telemetry !== false) headers[CLIENT_HEADER_NAME] = `js/${binding.name}-v${binding.sdkVersion}`\n\n // Set User-Agent\n if (options.userAgent) headers['User-Agent'] = options.userAgent\n\n fetchConfig.headers = headers\n\n this.#clientConfig = fetchConfig\n\n debug('fetch config: %O', fetchConfig)\n\n // Interceptors\n this.#interceptors = {}\n }\n\n get interceptors(): InterceptorManager {\n return this.#interceptors\n }\n\n get requestHeaders(): RequestHeaders {\n if (!this.#clientConfig.headers) this.#clientConfig.headers = {}\n return this.#clientConfig.headers\n }\n\n /*\n\tset requestHeaders(headers: RequestHeaders) {\n\t\tthis.#clientConfig.headers = { ...this.#clientConfig.headers, ...headers }\n\t}\n\t*/\n\n config(config: ApiClientConfig): this {\n debug('config %o', config)\n\n const def = this.#clientConfig\n if (!def.headers) def.headers = {}\n\n // Client config\n if (config.timeout) def.timeout = config.timeout\n\n if (config.userAgent) this.userAgent(config.userAgent)\n if (config.fetch) this.#clientConfig.fetch = config.fetch\n if (config.refreshToken) this.#clientConfig.refreshToken = config.refreshToken\n\n // API Client config\n if (config.apiVersion !== undefined) this.#apiVersion = config.apiVersion\n if (config.organization || config.domain || config.apiVersion !== undefined)\n this.#baseUrl = baseURL(\n config.organization || this.#organization,\n config.domain || this.#domain,\n this.#apiVersion,\n )\n if (config.organization) this.#organization = config.organization\n if (config.domain) this.#domain = config.domain\n if (config.accessToken) {\n this.#accessToken = config.accessToken\n def.headers.Authorization = 'Bearer ' + this.#accessToken\n }\n if (config.headers) def.headers = { ...def.headers, ...this.customHeaders(config.headers) }\n\n return this\n }\n\n userAgent(userAgent: string): this {\n if (userAgent) this.requestHeaders['User-Agent'] = userAgent\n return this\n }\n\n async request(method: Method, path: string, body?: any, options?: ApiClientConfig): Promise<FetchResponse> {\n debug('request %s %s, %O, %O', method, path, body || {}, options || {})\n\n // Ignored params (in debug mode)\n if (options?.userAgent) debug('User-Agent header ignored in request config')\n\n // URL. A per-request override rebuilds the base URL, so every part must\n // fall back to the client's own value — including the domain. Without that\n // fallback, a client configured for a non-default domain (e.g. staging)\n // sent per-request `apiVersion` calls to the default production host.\n const baseUrl =\n options?.organization || options?.apiVersion !== undefined\n ? baseURL(\n options.organization || this.#organization,\n options.domain || this.#domain,\n options.apiVersion ?? this.#apiVersion,\n )\n : this.#baseUrl\n const url = new URL(`${baseUrl}/${path}`)\n\n // Body\n const bodyData = body ? JSON.stringify({ data: body }) : undefined\n\n // Headers\n const headers = { ...this.requestHeaders, ...this.customHeaders(options?.headers) }\n\n // Access token\n const accessToken = options?.accessToken || this.#accessToken\n if (accessToken) headers.Authorization = 'Bearer ' + accessToken\n\n const refreshToken = options?.refreshToken || this.#clientConfig.refreshToken\n const fetchFunction = options?.fetch || this.#clientConfig.fetch\n\n const requestOptions: FetchRequestOptions = { method, body: bodyData, headers }\n\n // Timeout\n const timeout = options?.timeout || this.#clientConfig.timeout\n if (timeout) {\n if (AbortSignal?.timeout) requestOptions.signal = AbortSignal.timeout(timeout)\n else debug('Timeout not set. Undefined function: %s', 'AbortSignal.timeout')\n }\n\n if (options?.params)\n Object.entries(options?.params).forEach(([name, value]) => {\n url.searchParams.append(name, String(value))\n })\n\n const clientOptions: FetchClientOptions = {\n interceptors: this.interceptors,\n fetch: fetchFunction,\n }\n\n // const start = Date.now()\n try {\n // Execute api call\n return await fetchURL(url, requestOptions, clientOptions).catch((error: Error) => handleError(error))\n } catch (err: any) {\n // Error executing api call\n\n if (isExpiredTokenError(err) && refreshToken && isTokenExpired(accessToken)) {\n // If token has expired and must be refreshed\n\n debug('Access token has expired')\n const newAccessToken = await refreshToken(this.#accessToken) // Refresh access token ...\n .catch((e: any) => {\n // Error refreshing access token\n debug('Refresh token error: %s', e.message)\n const tokenError = new SdkError({ message: 'Error refreshing access token', type: ErrorType.TOKEN_REFRESH })\n tokenError.source = e\n throw tokenError\n })\n\n if (newAccessToken) {\n // ... set new access token in current config and repeat call\n debug('Access token refreshed')\n this.config({ accessToken: newAccessToken })\n this.#accessToken = newAccessToken\n if (requestOptions.headers)\n (requestOptions.headers as Record<string, string>).Authorization = `Bearer ${newAccessToken}`\n const response = await fetchURL(url, requestOptions, clientOptions).catch((error: Error) =>\n handleError(error),\n )\n return response\n }\n } else throw err\n }\n // .finally(() => { console.log(`<<-- ${method} ${path} ${Date.now() - start}`) })\n }\n\n private customHeaders(headers?: RequestHeaders): RequestHeaders {\n const customHeaders: RequestHeaders = {}\n if (headers) {\n for (const [name, value] of Object.entries(headers))\n if (\n !['accept', 'content-type', 'authorization', 'user-agent', CLIENT_HEADER_NAME.toLowerCase()].includes(\n name.toLowerCase(),\n )\n )\n customHeaders[name] = value\n }\n return customHeaders\n }\n\n get currentAccessToken(): string {\n return this.#accessToken\n }\n\n get currentOrganization(): string {\n return this.#organization\n }\n\n /** The API version pinned via `apiVersion`, or `undefined` when requests are unversioned. */\n get currentApiVersion(): string | undefined {\n return this.#apiVersion\n }\n}\n\nexport default ApiClient\n\nexport type { ApiClientConfig, ApiClientInitConfig, RequestConfig }\n","import type { Value as JSONValue } from 'json-typescript'\nimport type {\n AttributesObject,\n DocWithData,\n Included,\n ResourceObject as JSONAPIObject,\n RelationshipsObject,\n ResourceIdentifierObject,\n} from 'jsonapi-typescript'\nimport config from './config'\nimport Debug from './debug'\nimport type { Resource, ResourceCreate, ResourceId, ResourceRel, ResourceType, ResourceUpdate } from './resource'\nimport { isResourceId, isResourceType } from './resource'\n\nconst debug = Debug('jsonapi')\n\nexport type { DocWithData }\n\n// DENORMALIZATION\n\nconst denormalize = <R extends Resource>(response: DocWithData): R | R[] => {\n if (!response) return response\n\n let denormalizedResponse: R | R[]\n\n if (response.links) delete response.links\n\n const data = response.data\n const included = response.included\n\n if (!data) denormalizedResponse = data\n else {\n if (Array.isArray(data)) denormalizedResponse = data.map((res) => denormalizeResource<R>(res, included))\n else denormalizedResponse = denormalizeResource<R>(data, included)\n }\n\n return denormalizedResponse\n}\n\nconst findIncluded = (rel: ResourceIdentifierObject, included: Included = []): JSONAPIObject | undefined => {\n const inc = included.find((inc) => {\n return rel.id === inc.id && rel.type === inc.type\n })\n return inc || rel\n}\n\nconst denormalizeResource = <T extends ResourceType>(\n res: any,\n included?: Included,\n chain: ResourceIdentifierObject[] = [],\n): T => {\n debug('denormalize resource: %O, %o', res, included || {})\n\n if (!res) return res\n\n const resource = {\n id: res.id,\n type: res.type,\n ...res.attributes,\n }\n\n // Resource-level `meta` (e.g. `created_with_version`) sits beside the\n // attributes rather than among them, so it would otherwise be dropped. Kept\n // under its own key, not merged into the attributes, so it can never shadow\n // a field. Applies to included resources too, which pass through here.\n if (res.meta) resource.meta = res.meta\n\n if (res.relationships)\n Object.keys(res.relationships as object).forEach((key) => {\n const rel: ResourceIdentifierObject = res.relationships[key].data\n if (rel) {\n if (chain.filter((r) => r.id === rel.id && r.type === rel.type).length >= config.jsonapi.maxResourceIncluded)\n resource[key] = rel\n else {\n if (Array.isArray(rel))\n resource[key] = rel.map((r: ResourceIdentifierObject) =>\n denormalizeResource<ResourceType>(findIncluded(r, included), included, [...chain, r]),\n )\n else resource[key] = denormalizeResource<ResourceType>(findIncluded(rel, included), included, [...chain, rel])\n }\n } else if (rel === null) resource[key] = null\n })\n\n debug('denormalized resource: %O', resource)\n\n return resource\n}\n\n// NORMALIZATION\n\nconst normalize = (resource: (ResourceCreate & ResourceType) | (ResourceUpdate & ResourceId)): JSONAPIObject => {\n debug('normalize resource: %O', resource)\n\n const attributes: AttributesObject = {}\n const relationships: RelationshipsObject = {}\n\n for (const field in resource) {\n // `meta` is read-only server output. Without skipping it, a retrieved\n // resource passed straight back to `update()` would send it as an attribute.\n if (['type', 'id', 'meta'].includes(field)) continue\n const value = resource[field as keyof (ResourceCreate | ResourceUpdate)]\n if (\n Array.isArray(value) &&\n value.length === 1 &&\n isResourceType(value[0]) &&\n (value[0] as ResourceRel).id === null\n ) {\n relationships[field] = { data: [] }\n } else if (value && isResourceType(value) && (value as ResourceRel).id === null) {\n relationships[field] = { data: null }\n } else if (value && (isResourceId(value) || (Array.isArray(value) && isResourceId(value[0])))) {\n relationships[field] = { data: value as ResourceIdentifierObject }\n } else attributes[field] = value as JSONValue\n }\n\n const normalized: JSONAPIObject = {\n type: resource.type,\n attributes,\n relationships,\n }\n\n if (isResourceId(resource)) normalized.id = resource.id\n\n debug('normalized resource: %O', normalized)\n\n return normalized\n}\n\nexport { denormalize, normalize }\n","import type { ResourceFields, ResourceSortFields, ResourceTypeLock } from '#registry'\nimport Debug from './debug'\nimport { ErrorType, SdkError } from './error'\nimport type { Resource, ResourceType } from './resource'\nimport type { PositiveNumberRange, StringKey } from './types'\n\nconst debug = Debug('query')\n\nconst arrayFilters = ['_any', '_all', '_in', '_not_in_or_null']\nconst isArrayFilter = (filter: string): boolean => {\n return arrayFilters.some((f) => filter.endsWith(f))\n}\n\nconst objectFilters = ['_jcont']\nconst isObjectFilter = (filter: string): boolean => {\n return objectFilters.some((f) => filter.endsWith(f))\n}\n\n// type QueryResType<T> = T extends { type: infer Type } ? Type : never\ntype QueryResType<T extends Resource> = T['type']\n\nexport type QueryInclude = string[]\n\ntype QueryResourceFields<R extends ResourceTypeLock> = keyof ResourceFields[R]\ntype QueryArrayFields<R extends Resource> = Array<QueryResourceFields<QueryResType<R>>>\ntype QueryRecordFields = { [key in keyof ResourceFields]?: Array<QueryResourceFields<key>> }\nexport type QueryFields<R extends Resource> = QueryArrayFields<R> | QueryRecordFields\n\nexport interface QueryParamsRetrieve<R extends Resource = Resource> {\n include?: QueryInclude\n fields?: QueryFields<R>\n}\n\ntype QuerySortType = 'asc' | 'desc'\ntype QueryResourceSortable<R extends Resource> = ResourceSortFields[QueryResType<R>]\ntype QueryResourceSortableFields<R extends Resource> = StringKey<QueryResourceSortable<R>>\ntype QueryArraySortable<R extends Resource> = Array<\n QueryResourceSortableFields<R> | `-${QueryResourceSortableFields<R>}`\n>\ntype QueryRecordSortable<R extends Resource> = Partial<Record<keyof QueryResourceSortable<R>, QuerySortType>>\nexport type QuerySort<R extends Resource> = QueryArraySortable<R> | QueryRecordSortable<R>\n\nexport type QueryFilter = Record<string, string | number | boolean | object | Array<string | number>>\n\nexport type QueryPageNumber = number\nexport type QueryPageSize = PositiveNumberRange<25>\nexport type QueryPageCursor = string\n\nexport interface QueryParamsList<R extends Resource = Resource> extends QueryParamsRetrieve<R> {\n sort?: QuerySort<R>\n filters?: QueryFilter\n pageNumber?: QueryPageNumber\n pageSize?: QueryPageSize\n /**\n * Cursor for cursor-based pagination — returns the records after the given cursor.\n * Only cursor-paginated resources (e.g. `event_stores`) honor it; offset-paginated\n * resources ignore it. Emitted as the `page[after]` query parameter.\n */\n pageAfter?: QueryPageCursor\n /**\n * Cursor for cursor-based pagination — returns the records before the given cursor.\n * Only cursor-paginated resources honor it; offset-paginated resources ignore it.\n * Emitted as the `page[before]` query parameter.\n */\n pageBefore?: QueryPageCursor\n}\n\nexport type QueryParams<R extends Resource = Resource> = QueryParamsRetrieve<R> | QueryParamsList<R>\n\nconst isParamsList = <R extends Resource>(params: any): params is QueryParamsList<R> => {\n return (\n params &&\n (params.filters || params.pageNumber || params.pageSize || params.sort || params.pageAfter || params.pageBefore)\n )\n}\n\ntype QueryStringParams = Record<string, string>\n\nconst generateQueryStringParams = <R extends Resource>(\n params: QueryParams<R> | undefined,\n res: string | ResourceType,\n): QueryStringParams => {\n debug('generate query string params: %O, %O', params, res)\n\n const qp: QueryStringParams = {}\n if (!params) return qp\n\n // Include\n if (params.include) qp.include = params.include.join(',')\n // Fields\n if (params.fields) {\n if (Array.isArray(params.fields)) params.fields = { [(res as ResourceType).type || res]: params.fields }\n Object.entries(params.fields).forEach(([p, v]) => {\n qp[`fields[${p}]`] = v.join(',')\n })\n }\n\n if (isParamsList(params)) {\n // Sort\n if (params.sort) {\n if (Array.isArray(params.sort)) qp.sort = params.sort.join(',')\n else\n qp.sort = Object.entries(params.sort)\n .map(([k, v]) => `${v === 'desc' ? '-' : ''}${k}`)\n .join(',')\n }\n // Page\n if (params.pageNumber) qp['page[number]'] = String(params.pageNumber)\n if (params.pageSize) qp['page[size]'] = String(params.pageSize)\n // Cursor pagination — offset-paginated resources ignore these\n if (params.pageAfter) qp['page[after]'] = String(params.pageAfter)\n if (params.pageBefore) qp['page[before]'] = String(params.pageBefore)\n // Filters\n if (params.filters) {\n Object.entries(params.filters).forEach(([p, v]) => {\n let val: string\n if (Array.isArray(v)) {\n if (!isArrayFilter(p))\n throw new SdkError({\n message: `Incorrect filter [${p}]: Array value is supported only for the following filters: ${arrayFilters.join(', ')}`,\n type: ErrorType.REQUEST,\n })\n val = v.join(',')\n } else if (typeof v === 'object') {\n if (!isObjectFilter(p))\n throw new SdkError({\n message: `Incorrect filter [${p}]: Object value is supported only for the following filters: ${objectFilters.join(', ')}`,\n type: ErrorType.REQUEST,\n })\n val = JSON.stringify(v)\n } else val = String(v)\n qp[`filter[q][${p}]`] = val\n })\n }\n }\n\n debug('query string params: %O', qp)\n\n return qp\n}\n\nconst generateSearchString = (params?: QueryStringParams, questionMark: boolean = true): string => {\n if (!params || Object.keys(params).length === 0) return ''\n return `${questionMark ? '?' : ''}${Object.entries(params)\n .map(([key, val]) => `${key}=${String(val)}`)\n .join('&')}`\n}\n\nexport { generateQueryStringParams, generateSearchString, isParamsList }\n","import { binding, type ResourceTypeLock } from '#registry'\nimport ApiClient, { type ApiClientInitConfig, type Method } from './client'\nimport config from './config'\nimport Debug from './debug'\nimport { SdkError } from './error'\nimport { type DocWithData, denormalize, normalize } from './jsonapi'\nimport type { QueryFilter, QueryParams, QueryParamsList, QueryParamsRetrieve } from './query'\nimport { generateQueryStringParams, isParamsList } from './query'\nimport type { ObjectType } from './types'\n\nconst debug = Debug('resource')\n\ntype ResourceNull = { id: null } & ResourceType\ntype ResourceRel = ResourceId | ResourceNull\n\ntype Metadata = ObjectType\n\ninterface ResourceType {\n readonly type: ResourceTypeLock\n}\n\ninterface ResourceId extends ResourceType {\n readonly id: string\n}\n\ninterface ResourceBase {\n reference?: string | null\n reference_origin?: string | null\n metadata?: Metadata\n}\n\n/**\n * The JSON:API `meta` member of a resource object — server-supplied facts about\n * the resource rather than fields of it. Not to be confused with `metadata`,\n * which is a user-writable attribute.\n *\n * Distinct from the document-level `meta` of a list response, which is what\n * `ListMeta` reflects.\n */\ntype ResourceMeta = {\n /** The API version the resource was created with, when the API reports it. */\n readonly created_with_version?: string\n readonly [key: string]: unknown\n}\n\ninterface Resource extends ResourceBase, ResourceId {\n readonly created_at: string\n readonly updated_at: string\n /** Present only when the API returns a `meta` member for this resource. */\n readonly meta?: ResourceMeta\n}\n\ninterface ResourceCreate extends ResourceBase {}\n\ninterface ResourceUpdate extends ResourceBase {\n readonly id: string\n}\n\n/**\n * Update payload for a singleton resource, which carries no `id` because it is\n * addressed at a singular path (`/user`, not `/users/{id}`). Distinct from\n * `ResourceUpdate` purely to keep `id` off the caller's payload.\n */\ninterface SingletonUpdate extends ResourceBase {}\n\ntype PageCursor = { readonly before?: string; readonly after?: string }\n\n// Flat, non-discriminated (mirrors the poc-js-sdk shape). The offset fields are\n// always present so the historical `meta.*` interface keeps resolving as\n// `number` — they're `NaN` on cursor-paginated responses. `cursor` is present\n// only on cursor-paginated responses (e.g. `event_stores`), parsed from the\n// response `links`; its presence is how you tell the two pagination styles apart.\ntype ListMeta = {\n readonly pageCount: number\n readonly recordCount: number\n readonly recordCountEstimated: boolean\n readonly currentPage: number\n readonly recordsPerPage: number\n readonly cursor?: {\n readonly prev?: PageCursor\n readonly next?: PageCursor\n }\n}\n\nclass ListResponse<R extends Resource = Resource> extends Array<R> {\n readonly meta: ListMeta\n\n constructor(meta: ListMeta, data: R[]) {\n super(...(data || []))\n this.meta = meta\n }\n\n first(): R | undefined {\n return this.length ? this[0] : undefined\n }\n\n last(): R | undefined {\n return this.length ? this[this.length - 1] : undefined\n }\n\n get(index: number): R | undefined {\n return this.length && index >= 0 ? this[index] : undefined\n }\n\n hasNextPage(): boolean {\n return this.meta.currentPage < this.meta.pageCount\n }\n\n hasPrevPage(): boolean {\n return this.meta.currentPage > 1\n }\n\n getRecordCount(): number {\n return this.meta.recordCount\n }\n\n getRecordCountEstimated(): boolean {\n return this.meta.recordCountEstimated\n }\n\n getPageCount(): number {\n return this.meta.pageCount\n }\n\n get recordCount(): number {\n return this.meta.recordCount\n }\n\n get pageCount(): number {\n return this.meta.pageCount\n }\n}\n\ntype ResponseLinks = { next?: string; prev?: string } | undefined\n\nconst parseCursorLink = (url?: string): PageCursor | undefined => {\n if (!url) return undefined\n let params: URLSearchParams\n try {\n params = new URL(url).searchParams\n } catch {\n return undefined\n }\n const after = params.get('page[after]') ?? undefined\n const before = params.get('page[before]') ?? undefined\n return after != null || before != null ? { before, after } : undefined\n}\n\n// Builds the list meta. The pagination style is decided by the presence of\n// `meta.page_count`: offset collections always return it (even for a single\n// page), whereas cursor collections (e.g. `event_stores`) never do — they carry\n// `page[after]`/`page[before]` cursors in `links` instead, and only when further\n// pages exist. So a single-page cursor response (no `links`) still gets a\n// `cursor` (with no prev/next), which is how callers detect cursor pagination.\nconst buildListMeta = <R extends Resource>(\n res: DocWithData,\n links: ResponseLinks,\n params?: QueryParamsList<R>,\n): ListMeta => {\n const recordsPerPage = params?.pageSize || config.default.pageSize\n\n if (res.meta?.page_count == null) {\n return {\n // Offset fields aren't applicable to cursor pagination; kept as NaN so the\n // shared `meta.*` interface still resolves (see ListMeta).\n pageCount: NaN,\n recordCount: NaN,\n recordCountEstimated: false,\n currentPage: NaN,\n recordsPerPage,\n cursor: {\n prev: parseCursorLink(links?.prev),\n next: parseCursorLink(links?.next),\n },\n }\n }\n\n return {\n pageCount: Number(res.meta?.page_count),\n recordCount: Number(res.meta?.record_count),\n recordCountEstimated: Boolean(res.meta?.record_count_estimated),\n currentPage: params?.pageNumber || config.default.pageNumber,\n recordsPerPage,\n }\n}\n\nexport type {\n ListMeta,\n ListResponse,\n Metadata,\n Resource,\n ResourceCreate,\n ResourceId,\n ResourceMeta,\n ResourceRel,\n ResourceType,\n ResourceUpdate,\n SingletonUpdate,\n}\n\nexport type ResourceSort = Pick<Resource, 'id' | 'reference' | 'reference_origin' | 'created_at' | 'updated_at'>\nexport type ResourceFilter = Pick<\n Resource,\n 'id' | 'reference' | 'reference_origin' | 'metadata' | 'created_at' | 'updated_at'\n>\n\n// Resource adapters local configuration\n// biome-ignore lint/complexity/noBannedTypes: left as placeholder\ntype ResourceAdapterConfig = {\n // xyz?: boolean\n}\n\nexport type ResourcesInitConfig = ResourceAdapterConfig & ApiClientInitConfig\nexport type ResourcesConfig = Partial<ResourcesInitConfig>\n\nclass ApiResourceAdapter {\n private static adapter: ResourceAdapter\n\n private constructor() {}\n\n static init(config: ResourcesInitConfig): ResourceAdapter {\n ApiResourceAdapter.adapter = new ResourceAdapter(config)\n debug('resource adapter initialized')\n return ApiResourceAdapter.get()\n }\n\n static get(config?: ResourcesInitConfig): ResourceAdapter {\n if (config) return ApiResourceAdapter.init(config)\n else {\n if (ApiResourceAdapter.adapter) return ApiResourceAdapter.adapter\n else throw new SdkError({ message: 'Commerce Layer not initialized' })\n }\n }\n\n static config(config: ResourcesConfig): void {\n ApiResourceAdapter.get().config(config)\n }\n}\n\nclass ResourceAdapter {\n readonly #client: ApiClient\n\n readonly #config: ResourceAdapterConfig = {}\n\n constructor(config: ResourcesInitConfig) {\n this.#client = ApiClient.create(config)\n this.localConfig(config)\n }\n\n private localConfig(config: ResourceAdapterConfig): void {\n Object.assign(this.#config, config)\n }\n\n config(config: ResourcesConfig): this {\n debug('config %o', config)\n\n // ResourceAdapter config\n this.localConfig(config)\n // Client config\n this.#client.config(config)\n\n return this\n }\n\n get client(): Readonly<ApiClient> {\n return this.#client\n }\n\n async singleton<R extends Resource>(\n resource: ResourceType,\n params?: QueryParamsRetrieve<R>,\n options?: ResourcesConfig,\n path?: string,\n ): Promise<R> {\n debug('singleton: %o, %O, %O', resource, params || {}, options || {})\n\n const queryParams = generateQueryStringParams(params, resource)\n if (options?.params) Object.assign(queryParams, options?.params)\n\n const res = await this.#client.request('GET', `${path || resource.type}`, undefined, {\n ...options,\n params: queryParams,\n })\n const r = denormalize<R>(res as DocWithData) as R\n\n return r\n }\n\n async retrieve<R extends Resource>(\n resource: ResourceId,\n params?: QueryParamsRetrieve<R>,\n options?: ResourcesConfig,\n ): Promise<R> {\n debug('retrieve: %o, %O, %O', resource, params || {}, options || {})\n\n const queryParams = generateQueryStringParams(params, resource)\n if (options?.params) Object.assign(queryParams, options?.params)\n\n const res = await this.#client.request('GET', `${resource.type}/${resource.id}`, undefined, {\n ...options,\n params: queryParams,\n })\n const r = denormalize<R>(res as DocWithData) as R\n\n return r\n }\n\n async list<R extends Resource>(\n resource: ResourceType,\n params?: QueryParamsList<R>,\n options?: ResourcesConfig,\n ): Promise<ListResponse<R>> {\n debug('list: %o, %O, %O', resource, params || {}, options || {})\n\n const queryParams = generateQueryStringParams(params, resource)\n if (options?.params) Object.assign(queryParams, options?.params)\n\n // Load balancer performance optimization — skipped for cursor pagination,\n // which must not be mixed with an implicit page[number].\n const usesCursor = queryParams['page[after]'] != null || queryParams['page[before]'] != null\n if (!usesCursor && !queryParams['page[number]']) queryParams['page[number]'] = '1'\n\n const res = await this.#client.request('GET', `${resource.type}`, undefined, { ...options, params: queryParams })\n const links: ResponseLinks = res.links\n const r = denormalize<R>(res as DocWithData) as R[]\n\n return new ListResponse(buildListMeta<R>(res as DocWithData, links, params), r)\n }\n\n async create<C extends ResourceCreate, R extends Resource>(\n resource: C & ResourceType,\n params?: QueryParamsRetrieve<R>,\n options?: ResourcesConfig,\n ): Promise<R> {\n debug('create: %o, %O, %O', resource, params || {}, options || {})\n\n const queryParams = generateQueryStringParams<R>(params, resource)\n if (options?.params) Object.assign(queryParams, options?.params)\n\n const data = normalize(resource)\n const res = await this.#client.request('POST', resource.type, data, { ...options, params: queryParams })\n const r = denormalize<R>(res as DocWithData) as R\n\n return r\n }\n\n async update<U extends ResourceUpdate | SingletonUpdate, R extends Resource>(\n resource: U & ResourceType,\n params?: QueryParamsRetrieve<R>,\n options?: ResourcesConfig,\n /**\n * Singular path override for singleton resources, e.g. `user` rather than\n * `users/{id}`. Mirrors `singleton()` above. Core never needed it — both\n * its singletons are retrieve-only — but the Provisioning API's `user` is\n * updatable, and without this the request targets `/users/{id}` and 404s.\n */\n path?: string,\n ): Promise<R> {\n debug('update: %o, %O, %O', resource, params || {}, options || {})\n\n const queryParams = generateQueryStringParams<R>(params, resource)\n if (options?.params) Object.assign(queryParams, options?.params)\n\n const data = normalize(resource)\n // Singletons always supply `path`, so the id-bearing fallback is only ever\n // reached by a `ResourceUpdate`, which does carry an id.\n const res = await this.#client.request('PATCH', path || `${resource.type}/${(resource as ResourceId).id}`, data, {\n ...options,\n params: queryParams,\n })\n const r = denormalize<R>(res as DocWithData) as R\n\n return r\n }\n\n async delete(resource: ResourceId, options?: ResourcesConfig): Promise<void> {\n debug('delete: %o, %O', resource, options || {})\n await this.#client.request('DELETE', `${resource.type}/${resource.id}`, undefined, options)\n }\n\n /**\n * Calls a non-CRUD endpoint hosted at a sub-path of a resource, e.g.\n * `POST memberships/:id/resend`. These endpoints are not described by the\n * public resources schema, so they are declared in a target config and\n * emitted from it.\n */\n async action(\n cmd: Extract<Method, 'POST' | 'PATCH'>,\n path: string,\n payload?: any,\n options?: ResourcesConfig,\n ): Promise<void> {\n debug('action: %o %o, %O', cmd, path, options || {})\n\n const queryParams = {}\n if (options?.params) Object.assign(queryParams, options.params)\n\n const data = payload && isResourceId(payload) ? normalize(payload) : payload\n\n await this.#client.request(cmd, path, data, { ...options, params: queryParams })\n }\n\n async fetch<R extends Resource>(\n resource: string | ResourceType,\n path: string,\n params?: QueryParams<R>,\n options?: ResourcesConfig,\n ): Promise<R | ListResponse<R>> {\n debug('fetch: %o, %O, %O', path, params || {}, options || {})\n\n const queryParams = generateQueryStringParams<R>(params, resource)\n if (options?.params) Object.assign(queryParams, options?.params)\n\n const res = await this.#client.request('GET', path, undefined, { ...options, params: queryParams })\n const links: ResponseLinks = res.links\n const r = denormalize<R>(res as DocWithData)\n\n if (Array.isArray(r)) {\n const p = params as QueryParamsList<R>\n return new ListResponse(buildListMeta<R>(res as DocWithData, links, p), r)\n } else return r\n }\n}\n\nabstract class ApiResourceBase<R extends Resource> {\n static readonly TYPE: ResourceTypeLock\n readonly #resources?: ResourceAdapter\n\n constructor(adapter?: ResourceAdapter) {\n debug('new resource instance: %s', this.type())\n if (adapter) this.#resources = adapter\n }\n\n protected get resources(): ResourceAdapter {\n return this.#resources || ApiResourceAdapter.get()\n }\n\n /**\n * Returns a copy of this resource instance bound to a specific\n * `ResourceAdapter`. Used by the bundle client so each client instance\n * routes requests through its own adapter (its own access token) instead\n * of the process-global static adapter. Resource classes are type-only\n * exports, so we clone via `this.constructor` rather than referencing the\n * class directly.\n */\n withAdapter(adapter: ResourceAdapter): this {\n return new (this.constructor as new (adapter?: ResourceAdapter) => this)(adapter)\n }\n\n abstract relationship(id: string | ResourceId | null): ResourceRel\n\n protected relationshipOneToOne<RR extends ResourceRel>(id: string | ResourceId | null): RR {\n return (id === null || typeof id === 'string' ? { id, type: this.type() } : { id: id.id, type: this.type() }) as RR\n }\n\n protected relationshipOneToMany<RR extends ResourceRel>(...ids: string[]): RR[] {\n return (\n ids === null || ids.length === 0 || ids[0] === null\n ? [{ id: null, type: this.type() }]\n : ids.map((id) => {\n return { id, type: this.type() }\n })\n ) as RR[]\n }\n\n abstract type(): ResourceTypeLock\n\n protected path(): string {\n return this.type()\n }\n\n // reference, reference_origin and metadata attributes are always updatable\n async update(resource: ResourceUpdate, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R> {\n return this.resources.update<ResourceUpdate, R>({ ...resource, type: this.type() }, params, options)\n }\n}\n\nabstract class ApiResource<R extends Resource> extends ApiResourceBase<R> {\n async retrieve(id: string | ResourceId, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R> {\n const resId = typeof id === 'string' ? { type: this.type(), id } : id\n if (!resId.id) throw new SdkError({ message: 'Resource id cannot be blank' })\n return this.resources.retrieve<R>(resId, params, options)\n }\n\n async list(params?: QueryParamsList<R>, options?: ResourcesConfig): Promise<ListResponse<R>> {\n return this.resources.list<R>({ type: this.type() }, params, options)\n }\n\n async count(filter?: QueryFilter | QueryParamsList<R>, options?: ResourcesConfig): Promise<number> {\n const params: QueryParamsList<R> = {\n filters: isParamsList<R>(filter) ? filter.filters : filter,\n pageNumber: 1,\n pageSize: 1,\n }\n const response = await this.list(params, options)\n return Promise.resolve(response.meta.recordCount)\n }\n}\n\nabstract class ApiSingleton<R extends Resource> extends ApiResourceBase<R> {\n async retrieve(params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R> {\n return this.resources.singleton<R>({ type: this.type() }, params, options, this.path())\n }\n}\n\nexport { ApiResource, ApiResourceAdapter, ApiSingleton, type ResourceAdapter }\n\nexport const isResourceId = (resource: any): resource is ResourceId => {\n return resource?.type && resource.id && binding.resourceList.includes(resource.type as ResourceTypeLock)\n}\n\nexport const isResourceType = (resource: any): resource is ResourceType => {\n return resource?.type && binding.resourceList.includes(resource.type as ResourceTypeLock)\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkATSYNXFW_cjs = require('./chunk-ATSYNXFW.cjs');
|
|
4
4
|
|
|
5
5
|
// gen/resources/api_credentials.ts
|
|
6
|
-
var ApiCredentials = class _ApiCredentials extends
|
|
6
|
+
var ApiCredentials = class _ApiCredentials extends chunkATSYNXFW_cjs.ApiResource {
|
|
7
7
|
static TYPE = "api_credentials";
|
|
8
8
|
async create(resource, params, options) {
|
|
9
9
|
return this.resources.create(
|
|
@@ -57,5 +57,5 @@ var instance = new ApiCredentials();
|
|
|
57
57
|
var api_credentials_default = instance;
|
|
58
58
|
|
|
59
59
|
exports.api_credentials_default = api_credentials_default;
|
|
60
|
-
//# sourceMappingURL=chunk-
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
60
|
+
//# sourceMappingURL=chunk-B77PPXQ4.cjs.map
|
|
61
|
+
//# sourceMappingURL=chunk-B77PPXQ4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../gen/resources/api_credentials.ts"],"names":["ApiResource"],"mappings":";;;;;AA4IA,IAAM,cAAA,GAAN,MAAM,eAAA,SAAuBA,6BAAA,CAA2B;AAAA,EACtD,OAAgB,IAAA,GAA0B,iBAAA;AAAA,EAE1C,MAAM,MAAA,CACJ,QAAA,EACA,MAAA,EACA,OAAA,EACwB;AACxB,IAAA,OAAO,KAAK,SAAA,CAAU,MAAA;AAAA,MACpB,EAAE,GAAG,QAAA,EAAU,IAAA,EAAM,gBAAe,IAAA,EAAK;AAAA,MACzC,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,MAAA,CACJ,QAAA,EACA,MAAA,EACA,OAAA,EACwB;AACxB,IAAA,OAAO,KAAK,SAAA,CAAU,MAAA;AAAA,MACpB,EAAE,GAAG,QAAA,EAAU,IAAA,EAAM,gBAAe,IAAA,EAAK;AAAA,MACzC,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,MAAA,CAAO,EAAA,EAAyB,OAAA,EAA0C;AAC9E,IAAA,MAAM,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,OAAO,EAAA,KAAO,QAAA,GAAW,EAAE,EAAA,EAAI,IAAA,EAAM,eAAA,CAAe,IAAA,EAAK,GAAI,IAAI,OAAO,CAAA;AAAA,EACtG;AAAA,EAEA,MAAM,YAAA,CACJ,eAAA,EACA,MAAA,EACA,OAAA,EACuB;AACvB,IAAA,MAAM,gBAAA,GAAoB,gBAAkC,EAAA,IAAO,eAAA;AACnE,IAAA,OAAO,KAAK,SAAA,CAAU,KAAA;AAAA,MACpB,EAAE,MAAM,eAAA,EAAgB;AAAA,MACxB,mBAAmB,gBAAgB,CAAA,aAAA,CAAA;AAAA,MACnC,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,IAAA,CACJ,eAAA,EACA,MAAA,EACA,OAAA,EACe;AACf,IAAA,MAAM,gBAAA,GAAoB,gBAAkC,EAAA,IAAO,eAAA;AACnE,IAAA,OAAO,KAAK,SAAA,CAAU,KAAA;AAAA,MACpB,EAAE,MAAM,OAAA,EAAQ;AAAA,MAChB,mBAAmB,gBAAgB,CAAA,KAAA,CAAA;AAAA,MACnC,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,gBAAgB,QAAA,EAA0C;AACxD,IAAA,OAAO,QAAA,CAAS,IAAA,IAAQ,QAAA,CAAS,IAAA,KAAS,eAAA,CAAe,IAAA;AAAA,EAC3D;AAAA,EAEA,aAAa,EAAA,EAAkD;AAC7D,IAAA,OAAO,KAAA,CAAM,qBAAuC,EAAE,CAAA;AAAA,EACxD;AAAA,EAEA,sBAAsB,GAAA,EAAmC;AACvD,IAAA,OAAO,KAAA,CAAM,qBAAA,CAAwC,GAAG,GAAG,CAAA;AAAA,EAC7D;AAAA,EAEA,IAAA,GAA0B;AACxB,IAAA,OAAO,eAAA,CAAe,IAAA;AAAA,EACxB;AACF,CAAA;AAEA,IAAM,QAAA,GAAW,IAAI,cAAA,EAAe;AACpC,IAAO,uBAAA,GAAQ","file":"chunk-B77PPXQ4.cjs","sourcesContent":["import type { QueryParamsRetrieve } from '@runtime/query'\nimport type {\n Resource,\n ResourceCreate,\n ResourceId,\n ResourceRel,\n ResourceSort,\n /* ResourceFilter */ ResourcesConfig,\n ResourceUpdate,\n} from '@runtime/resource'\nimport { ApiResource } from '@runtime/resource'\n\nimport type { Organization, OrganizationType } from './organizations'\nimport type { Role, RoleType } from './roles'\n\ntype ApiCredentialType = 'api_credentials'\ntype ApiCredentialRel = ResourceRel & { type: ApiCredentialType }\ntype OrganizationRel = ResourceRel & { type: OrganizationType }\ntype RoleRel = ResourceRel & { type: RoleType }\n\nexport type ApiCredentialSort = Pick<ApiCredential, 'id' | 'name' | 'mode'> & ResourceSort\n// export type ApiCredentialFilter = Pick<ApiCredential, 'id' | 'name' | 'kind' | 'confidential' | 'redirect_uri' | 'client_id' | 'scopes' | 'expires_in' | 'mode' | 'custom'> & ResourceFilter\n\n/**\n * The Api credential object is returned as part of the response body of each successful list, retrieve, create, update or delete API call to the /api/api_credentials endpoint.\n *\n * @link https://docs.commercelayer.io/provisioning-api-reference/api_credentials/object\n */\ninterface ApiCredential extends Resource {\n readonly type: ApiCredentialType\n\n /**\n * The API credential internal name.\n * @example ```\"My app\"```\n */\n name: string\n /**\n * The API credential kind, can be one of: `webapp`, `sales_channel`, `integration` or the kind of app you want to fork (e.g. `orders`, `imports`, etc.).\n * @example ```\"sales_channel\"```\n */\n kind: string\n /**\n * Indicates if the API credential it's confidential.\n * @example ```true```\n */\n confidential: boolean\n /**\n * The API credential redirect URI.\n * @example ```\"https://bluebrand.com/img/logo.svg\"```\n */\n redirect_uri?: string | null\n /**\n * The API credential unique ID.\n * @example ```\"xxxx-yyyy-zzzz\"```\n */\n client_id: string\n /**\n * The API credential unique secret.\n * @example ```\"xxxx-yyyy-zzzz\"```\n */\n client_secret: string\n /**\n * The API credential scopes.\n * @example ```\"market:all market:9 market:122 market:6 stock_location:6 stock_location:33\"```\n */\n scopes: string\n /**\n * The lifetime of the access token in seconds (min. `7200`, max. `31536000`. Default is `14400` for Sales channels and `7200` for other client types).\n * @example ```7200```\n */\n expires_in?: number | null\n /**\n * Indicates the environment the resource belongs to (one of `test` or `live`).\n * @example ```\"test\"```\n */\n mode?: string | null\n /**\n * Indicates if the API credential is used to create a custom app (e.g. fork a hosted app).\n */\n custom?: boolean | null\n\n organization?: Organization | null\n role?: Role | null\n}\n\ninterface ApiCredentialCreate extends ResourceCreate {\n /**\n * The API credential internal name.\n * @example ```\"My app\"```\n */\n name: string\n /**\n * The API credential kind, can be one of: `webapp`, `sales_channel`, `integration` or the kind of app you want to fork (e.g. `orders`, `imports`, etc.).\n * @example ```\"sales_channel\"```\n */\n kind: string\n /**\n * The API credential redirect URI.\n * @example ```\"https://bluebrand.com/img/logo.svg\"```\n */\n redirect_uri?: string | null\n /**\n * The lifetime of the access token in seconds (min. `7200`, max. `31536000`. Default is `14400` for Sales channels and `7200` for other client types).\n * @example ```7200```\n */\n expires_in?: number | null\n /**\n * Indicates the environment the resource belongs to (one of `test` or `live`).\n * @example ```\"test\"```\n */\n mode?: string | null\n /**\n * Indicates if the API credential is used to create a custom app (e.g. fork a hosted app).\n */\n custom?: boolean | null\n\n organization: OrganizationRel\n role?: RoleRel | null\n}\n\ninterface ApiCredentialUpdate extends ResourceUpdate {\n /**\n * The API credential internal name.\n * @example ```\"My app\"```\n */\n name?: string | null\n /**\n * The API credential redirect URI.\n * @example ```\"https://bluebrand.com/img/logo.svg\"```\n */\n redirect_uri?: string | null\n /**\n * The lifetime of the access token in seconds (min. `7200`, max. `31536000`. Default is `14400` for Sales channels and `7200` for other client types).\n * @example ```7200```\n */\n expires_in?: number | null\n\n role?: RoleRel | null\n}\n\nclass ApiCredentials extends ApiResource<ApiCredential> {\n static readonly TYPE: ApiCredentialType = 'api_credentials' as const\n\n async create(\n resource: ApiCredentialCreate,\n params?: QueryParamsRetrieve<ApiCredential>,\n options?: ResourcesConfig,\n ): Promise<ApiCredential> {\n return this.resources.create<ApiCredentialCreate, ApiCredential>(\n { ...resource, type: ApiCredentials.TYPE },\n params,\n options,\n )\n }\n\n async update(\n resource: ApiCredentialUpdate,\n params?: QueryParamsRetrieve<ApiCredential>,\n options?: ResourcesConfig,\n ): Promise<ApiCredential> {\n return this.resources.update<ApiCredentialUpdate, ApiCredential>(\n { ...resource, type: ApiCredentials.TYPE },\n params,\n options,\n )\n }\n\n async delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void> {\n await this.resources.delete(typeof id === 'string' ? { id, type: ApiCredentials.TYPE } : id, options)\n }\n\n async organization(\n apiCredentialId: string | ApiCredential,\n params?: QueryParamsRetrieve<Organization>,\n options?: ResourcesConfig,\n ): Promise<Organization> {\n const _apiCredentialId = (apiCredentialId as ApiCredential).id || (apiCredentialId as string)\n return this.resources.fetch<Organization>(\n { type: 'organizations' },\n `api_credentials/${_apiCredentialId}/organization`,\n params,\n options,\n ) as unknown as Organization\n }\n\n async role(\n apiCredentialId: string | ApiCredential,\n params?: QueryParamsRetrieve<Role>,\n options?: ResourcesConfig,\n ): Promise<Role> {\n const _apiCredentialId = (apiCredentialId as ApiCredential).id || (apiCredentialId as string)\n return this.resources.fetch<Role>(\n { type: 'roles' },\n `api_credentials/${_apiCredentialId}/role`,\n params,\n options,\n ) as unknown as Role\n }\n\n isApiCredential(resource: any): resource is ApiCredential {\n return resource.type && resource.type === ApiCredentials.TYPE\n }\n\n relationship(id: string | ResourceId | null): ApiCredentialRel {\n return super.relationshipOneToOne<ApiCredentialRel>(id)\n }\n\n relationshipToMany(...ids: string[]): ApiCredentialRel[] {\n return super.relationshipOneToMany<ApiCredentialRel>(...ids)\n }\n\n type(): ApiCredentialType {\n return ApiCredentials.TYPE\n }\n}\n\nconst instance = new ApiCredentials()\nexport default instance\n\nexport type { ApiCredential, ApiCredentialCreate, ApiCredentials, ApiCredentialType, ApiCredentialUpdate }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiSingleton } from './chunk-
|
|
1
|
+
import { ApiSingleton } from './chunk-CR45TDCY.js';
|
|
2
2
|
|
|
3
3
|
// gen/resources/users.ts
|
|
4
4
|
var Users = class _Users extends ApiSingleton {
|
|
@@ -26,5 +26,5 @@ var instance = new Users();
|
|
|
26
26
|
var users_default = instance;
|
|
27
27
|
|
|
28
28
|
export { users_default };
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-BOAFNR4A.js.map
|
|
30
|
+
//# sourceMappingURL=chunk-BOAFNR4A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../gen/resources/users.ts"],"names":[],"mappings":";;;AA2EA,IAAM,KAAA,GAAN,MAAM,MAAA,SAAc,YAAA,CAAmB;AAAA,EACrC,OAAgB,IAAA,GAAiB,OAAA;AAAA,EAEjC,MAAM,MAAA,CAAO,QAAA,EAAsB,MAAA,EAAoC,OAAA,EAA0C;AAC/G,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAyB,EAAE,GAAG,QAAA,EAAU,IAAA,EAAM,MAAA,CAAM,IAAA,EAAK,EAAG,MAAA,EAAQ,OAAA,EAAS,IAAA,CAAK,MAAM,CAAA;AAAA,EAChH;AAAA,EAEA,OAAO,QAAA,EAAiC;AACtC,IAAA,OAAO,QAAA,CAAS,IAAA,IAAQ,QAAA,CAAS,IAAA,KAAS,MAAA,CAAM,IAAA;AAAA,EAClD;AAAA,EAEA,aAAa,EAAA,EAAyC;AACpD,IAAA,OAAO,KAAA,CAAM,qBAA8B,EAAE,CAAA;AAAA,EAC/C;AAAA,EAEA,sBAAsB,GAAA,EAA0B;AAC9C,IAAA,OAAO,KAAA,CAAM,qBAAA,CAA+B,GAAG,GAAG,CAAA;AAAA,EACpD;AAAA,EAEA,IAAA,GAAiB;AACf,IAAA,OAAO,MAAA,CAAM,IAAA;AAAA,EACf;AAAA,EAEA,IAAA,GAAe;AACb,IAAA,OAAO,MAAA;AAAA,EACT;AACF,CAAA;AAEA,IAAM,QAAA,GAAW,IAAI,KAAA,EAAM;AAC3B,IAAO,aAAA,GAAQ","file":"chunk-BOAFNR4A.js","sourcesContent":["import type { QueryParamsRetrieve } from '@runtime/query'\nimport type {\n Resource,\n ResourceId,\n ResourceRel,\n ResourceSort,\n /* ResourceFilter */ ResourcesConfig,\n SingletonUpdate,\n} from '@runtime/resource'\nimport { ApiSingleton } from '@runtime/resource'\n\ntype UserType = 'users'\ntype UserRel = ResourceRel & { type: UserType }\n\nexport type UserSort = Pick<User, 'id' | 'email' | 'first_name' | 'last_name'> & ResourceSort\n// export type UserFilter = Pick<User, 'id' | 'email' | 'first_name' | 'last_name' | 'time_zone'> & ResourceFilter\n\n/**\n * The User object is returned as part of the response body of each successful retrieve or update API call to the /api/user endpoint.\n *\n * @link https://docs.commercelayer.io/provisioning-api-reference/users/object\n */\ninterface User extends Resource {\n readonly type: UserType\n\n /**\n * The user email.\n * @example ```\"user@commercelayer.io\"```\n */\n email: string\n /**\n * The user first name. Maximum 100 characters. HTML is stripped.\n * @example ```\"John\"```\n */\n first_name: string\n /**\n * The user last name. Maximum 100 characters. HTML is stripped.\n * @example ```\"Doe\"```\n */\n last_name: string\n /**\n * The user preferred timezone.\n * @example ```\"UTC\"```\n */\n time_zone?: string | null\n /**\n * The user 2FA setting.\n * @example ```true```\n */\n otp_required_for_login: boolean\n}\n\ninterface UserUpdate extends SingletonUpdate {\n /**\n * The user email.\n * @example ```\"user@commercelayer.io\"```\n */\n email?: string | null\n /**\n * The user first name. Maximum 100 characters. HTML is stripped.\n * @example ```\"John\"```\n */\n first_name?: string | null\n /**\n * The user last name. Maximum 100 characters. HTML is stripped.\n * @example ```\"Doe\"```\n */\n last_name?: string | null\n /**\n * The user preferred timezone.\n * @example ```\"UTC\"```\n */\n time_zone?: string | null\n}\n\nclass Users extends ApiSingleton<User> {\n static readonly TYPE: UserType = 'users' as const\n\n async update(resource: UserUpdate, params?: QueryParamsRetrieve<User>, options?: ResourcesConfig): Promise<User> {\n return this.resources.update<UserUpdate, User>({ ...resource, type: Users.TYPE }, params, options, this.path())\n }\n\n isUser(resource: any): resource is User {\n return resource.type && resource.type === Users.TYPE\n }\n\n relationship(id: string | ResourceId | null): UserRel {\n return super.relationshipOneToOne<UserRel>(id)\n }\n\n relationshipToMany(...ids: string[]): UserRel[] {\n return super.relationshipOneToMany<UserRel>(...ids)\n }\n\n type(): UserType {\n return Users.TYPE\n }\n\n path(): string {\n return 'user'\n }\n}\n\nconst instance = new Users()\nexport default instance\n\nexport type { User, Users, UserType, UserUpdate }\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkATSYNXFW_cjs = require('./chunk-ATSYNXFW.cjs');
|
|
4
4
|
|
|
5
5
|
// gen/resources/membership_profiles.ts
|
|
6
|
-
var MembershipProfiles = class _MembershipProfiles extends
|
|
6
|
+
var MembershipProfiles = class _MembershipProfiles extends chunkATSYNXFW_cjs.ApiResource {
|
|
7
7
|
static TYPE = "membership_profiles";
|
|
8
8
|
async create(resource, params, options) {
|
|
9
9
|
return this.resources.create(
|
|
@@ -57,5 +57,5 @@ var instance = new MembershipProfiles();
|
|
|
57
57
|
var membership_profiles_default = instance;
|
|
58
58
|
|
|
59
59
|
exports.membership_profiles_default = membership_profiles_default;
|
|
60
|
-
//# sourceMappingURL=chunk-
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
60
|
+
//# sourceMappingURL=chunk-C4PVJRMW.cjs.map
|
|
61
|
+
//# sourceMappingURL=chunk-C4PVJRMW.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../gen/resources/membership_profiles.ts"],"names":["ApiResource"],"mappings":";;;;;AAkFA,IAAM,kBAAA,GAAN,MAAM,mBAAA,SAA2BA,6BAAA,CAA+B;AAAA,EAC9D,OAAgB,IAAA,GAA8B,qBAAA;AAAA,EAE9C,MAAM,MAAA,CACJ,QAAA,EACA,MAAA,EACA,OAAA,EAC4B;AAC5B,IAAA,OAAO,KAAK,SAAA,CAAU,MAAA;AAAA,MACpB,EAAE,GAAG,QAAA,EAAU,IAAA,EAAM,oBAAmB,IAAA,EAAK;AAAA,MAC7C,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,MAAA,CACJ,QAAA,EACA,MAAA,EACA,OAAA,EAC4B;AAC5B,IAAA,OAAO,KAAK,SAAA,CAAU,MAAA;AAAA,MACpB,EAAE,GAAG,QAAA,EAAU,IAAA,EAAM,oBAAmB,IAAA,EAAK;AAAA,MAC7C,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,MAAA,CAAO,EAAA,EAAyB,OAAA,EAA0C;AAC9E,IAAA,MAAM,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,OAAO,EAAA,KAAO,QAAA,GAAW,EAAE,EAAA,EAAI,IAAA,EAAM,mBAAA,CAAmB,IAAA,EAAK,GAAI,IAAI,OAAO,CAAA;AAAA,EAC1G;AAAA,EAEA,MAAM,YAAA,CACJ,mBAAA,EACA,MAAA,EACA,OAAA,EACuB;AACvB,IAAA,MAAM,oBAAA,GAAwB,oBAA0C,EAAA,IAAO,mBAAA;AAC/E,IAAA,OAAO,KAAK,SAAA,CAAU,KAAA;AAAA,MACpB,EAAE,MAAM,eAAA,EAAgB;AAAA,MACxB,uBAAuB,oBAAoB,CAAA,aAAA,CAAA;AAAA,MAC3C,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,uBAAA,CACJ,mBAAA,EACA,MAAA,EACA,OAAA,EAC8C;AAC9C,IAAA,MAAM,oBAAA,GAAwB,oBAA0C,EAAA,IAAO,mBAAA;AAC/E,IAAA,OAAO,KAAK,SAAA,CAAU,KAAA;AAAA,MACpB,EAAE,MAAM,yBAAA,EAA0B;AAAA,MAClC,uBAAuB,oBAAoB,CAAA,wBAAA,CAAA;AAAA,MAC3C,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA,EAEA,oBAAoB,QAAA,EAA8C;AAChE,IAAA,OAAO,QAAA,CAAS,IAAA,IAAQ,QAAA,CAAS,IAAA,KAAS,mBAAA,CAAmB,IAAA;AAAA,EAC/D;AAAA,EAEA,aAAa,EAAA,EAAsD;AACjE,IAAA,OAAO,KAAA,CAAM,qBAA2C,EAAE,CAAA;AAAA,EAC5D;AAAA,EAEA,sBAAsB,GAAA,EAAuC;AAC3D,IAAA,OAAO,KAAA,CAAM,qBAAA,CAA4C,GAAG,GAAG,CAAA;AAAA,EACjE;AAAA,EAEA,IAAA,GAA8B;AAC5B,IAAA,OAAO,mBAAA,CAAmB,IAAA;AAAA,EAC5B;AACF,CAAA;AAEA,IAAM,QAAA,GAAW,IAAI,kBAAA,EAAmB;AACxC,IAAO,2BAAA,GAAQ","file":"chunk-C4PVJRMW.cjs","sourcesContent":["import type { QueryParamsList, QueryParamsRetrieve } from '@runtime/query'\nimport type {\n ListResponse,\n Resource,\n ResourceCreate,\n ResourceId,\n ResourceRel,\n ResourceSort,\n /* ResourceFilter */ ResourcesConfig,\n ResourceUpdate,\n} from '@runtime/resource'\nimport { ApiResource } from '@runtime/resource'\nimport type { ApplicationMembership, ApplicationMembershipType } from './application_memberships'\nimport type { Organization, OrganizationType } from './organizations'\n\ntype MembershipProfileType = 'membership_profiles'\ntype MembershipProfileRel = ResourceRel & { type: MembershipProfileType }\ntype OrganizationRel = ResourceRel & { type: OrganizationType }\ntype ApplicationMembershipRel = ResourceRel & { type: ApplicationMembershipType }\n\nexport type MembershipProfileSort = Pick<MembershipProfile, 'id' | 'name'> & ResourceSort\n// export type MembershipProfileFilter = Pick<MembershipProfile, 'id' | 'name' | 'access_scope'> & ResourceFilter\n\n/**\n * The Membership profile object is returned as part of the response body of each successful list, retrieve, create, update or delete API call to the /api/membership_profiles endpoint.\n *\n * @link https://docs.commercelayer.io/provisioning-api-reference/membership_profiles/object\n */\ninterface MembershipProfile extends Resource {\n readonly type: MembershipProfileType\n\n /**\n * The membership profile name.\n * @example ```\"Marketing group\"```\n */\n name: string\n /**\n * Reflects the organization's access scope, either test_access or all_access.\n * @example ```true```\n */\n test_enabled: boolean\n /**\n * The access scope for applications. One of `live_access` (default), `test_access`, `all_access`.\n * @example ```\"live_access\"```\n */\n access_scope: 'live_access' | 'test_access' | 'all_access'\n\n organization?: Organization | null\n application_memberships?: ApplicationMembership[] | null\n}\n\ninterface MembershipProfileCreate extends ResourceCreate {\n /**\n * The membership profile name.\n * @example ```\"Marketing group\"```\n */\n name: string\n /**\n * The access scope for applications. One of `live_access` (default), `test_access`, `all_access`.\n * @example ```\"live_access\"```\n */\n access_scope: 'live_access' | 'test_access' | 'all_access'\n\n organization: OrganizationRel\n application_memberships?: ApplicationMembershipRel[] | null\n}\n\ninterface MembershipProfileUpdate extends ResourceUpdate {\n /**\n * The membership profile name.\n * @example ```\"Marketing group\"```\n */\n name?: string | null\n /**\n * The access scope for applications. One of `live_access` (default), `test_access`, `all_access`.\n * @example ```\"live_access\"```\n */\n access_scope?: 'live_access' | 'test_access' | 'all_access' | null\n\n application_memberships?: ApplicationMembershipRel[] | null\n}\n\nclass MembershipProfiles extends ApiResource<MembershipProfile> {\n static readonly TYPE: MembershipProfileType = 'membership_profiles' as const\n\n async create(\n resource: MembershipProfileCreate,\n params?: QueryParamsRetrieve<MembershipProfile>,\n options?: ResourcesConfig,\n ): Promise<MembershipProfile> {\n return this.resources.create<MembershipProfileCreate, MembershipProfile>(\n { ...resource, type: MembershipProfiles.TYPE },\n params,\n options,\n )\n }\n\n async update(\n resource: MembershipProfileUpdate,\n params?: QueryParamsRetrieve<MembershipProfile>,\n options?: ResourcesConfig,\n ): Promise<MembershipProfile> {\n return this.resources.update<MembershipProfileUpdate, MembershipProfile>(\n { ...resource, type: MembershipProfiles.TYPE },\n params,\n options,\n )\n }\n\n async delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void> {\n await this.resources.delete(typeof id === 'string' ? { id, type: MembershipProfiles.TYPE } : id, options)\n }\n\n async organization(\n membershipProfileId: string | MembershipProfile,\n params?: QueryParamsRetrieve<Organization>,\n options?: ResourcesConfig,\n ): Promise<Organization> {\n const _membershipProfileId = (membershipProfileId as MembershipProfile).id || (membershipProfileId as string)\n return this.resources.fetch<Organization>(\n { type: 'organizations' },\n `membership_profiles/${_membershipProfileId}/organization`,\n params,\n options,\n ) as unknown as Organization\n }\n\n async application_memberships(\n membershipProfileId: string | MembershipProfile,\n params?: QueryParamsList<ApplicationMembership>,\n options?: ResourcesConfig,\n ): Promise<ListResponse<ApplicationMembership>> {\n const _membershipProfileId = (membershipProfileId as MembershipProfile).id || (membershipProfileId as string)\n return this.resources.fetch<ApplicationMembership>(\n { type: 'application_memberships' },\n `membership_profiles/${_membershipProfileId}/application_memberships`,\n params,\n options,\n ) as unknown as ListResponse<ApplicationMembership>\n }\n\n isMembershipProfile(resource: any): resource is MembershipProfile {\n return resource.type && resource.type === MembershipProfiles.TYPE\n }\n\n relationship(id: string | ResourceId | null): MembershipProfileRel {\n return super.relationshipOneToOne<MembershipProfileRel>(id)\n }\n\n relationshipToMany(...ids: string[]): MembershipProfileRel[] {\n return super.relationshipOneToMany<MembershipProfileRel>(...ids)\n }\n\n type(): MembershipProfileType {\n return MembershipProfiles.TYPE\n }\n}\n\nconst instance = new MembershipProfiles()\nexport default instance\n\nexport type {\n MembershipProfile,\n MembershipProfileCreate,\n MembershipProfiles,\n MembershipProfileType,\n MembershipProfileUpdate,\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { binding } from './chunk-
|
|
1
|
+
import { binding } from './chunk-2FZWJMYX.js';
|
|
2
2
|
|
|
3
3
|
// ../sdk-runtime/src/debug.ts
|
|
4
4
|
var PREFIX = "clsdk";
|
|
@@ -205,12 +205,29 @@ function isApiError(error) {
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
// ../sdk-runtime/src/util.ts
|
|
208
|
+
var decodeJwtSegment = (segment) => atob(segment.replace(/-/g, "+").replace(/_/g, "/"));
|
|
209
|
+
var COMMERCE_LAYER_DOMAINS = ["commercelayer.io", "commercelayer.co", "commercelayer.dev"];
|
|
210
|
+
var domainFromIssuer = (iss) => {
|
|
211
|
+
if (typeof iss !== "string") return void 0;
|
|
212
|
+
let host;
|
|
213
|
+
try {
|
|
214
|
+
const url = new URL(iss);
|
|
215
|
+
if (url.protocol !== "https:") return void 0;
|
|
216
|
+
host = url.hostname;
|
|
217
|
+
} catch {
|
|
218
|
+
return void 0;
|
|
219
|
+
}
|
|
220
|
+
if (!host.startsWith("auth.")) return void 0;
|
|
221
|
+
const domain = host.slice("auth.".length);
|
|
222
|
+
const trusted = COMMERCE_LAYER_DOMAINS.some((d) => domain === d || domain.endsWith(`.${d}`));
|
|
223
|
+
return trusted ? domain : void 0;
|
|
224
|
+
};
|
|
208
225
|
var extractTokenData = (token) => {
|
|
209
226
|
try {
|
|
210
|
-
const data = JSON.parse(
|
|
227
|
+
const data = JSON.parse(decodeJwtSegment(token.split(".")[1]));
|
|
211
228
|
return {
|
|
212
|
-
organization: data.organization
|
|
213
|
-
domain:
|
|
229
|
+
organization: data.organization?.slug,
|
|
230
|
+
domain: domainFromIssuer(data.iss),
|
|
214
231
|
expiration: data.exp
|
|
215
232
|
};
|
|
216
233
|
} catch (_err) {
|
|
@@ -338,7 +355,11 @@ var ApiClient = class _ApiClient {
|
|
|
338
355
|
async request(method, path, body, options) {
|
|
339
356
|
debug3("request %s %s, %O, %O", method, path, body || {}, options || {});
|
|
340
357
|
if (options?.userAgent) debug3("User-Agent header ignored in request config");
|
|
341
|
-
const baseUrl = options?.organization || options?.apiVersion !== void 0 ? baseURL(
|
|
358
|
+
const baseUrl = options?.organization || options?.apiVersion !== void 0 ? baseURL(
|
|
359
|
+
options.organization || this.#organization,
|
|
360
|
+
options.domain || this.#domain,
|
|
361
|
+
options.apiVersion ?? this.#apiVersion
|
|
362
|
+
) : this.#baseUrl;
|
|
342
363
|
const url = new URL(`${baseUrl}/${path}`);
|
|
343
364
|
const bodyData = body ? JSON.stringify({ data: body }) : void 0;
|
|
344
365
|
const headers = { ...this.requestHeaders, ...this.customHeaders(options?.headers) };
|
|
@@ -438,6 +459,7 @@ var denormalizeResource = (res, included, chain = []) => {
|
|
|
438
459
|
type: res.type,
|
|
439
460
|
...res.attributes
|
|
440
461
|
};
|
|
462
|
+
if (res.meta) resource.meta = res.meta;
|
|
441
463
|
if (res.relationships)
|
|
442
464
|
Object.keys(res.relationships).forEach((key) => {
|
|
443
465
|
const rel = res.relationships[key].data;
|
|
@@ -461,7 +483,7 @@ var normalize = (resource) => {
|
|
|
461
483
|
const attributes = {};
|
|
462
484
|
const relationships = {};
|
|
463
485
|
for (const field in resource) {
|
|
464
|
-
if (["type", "id"].includes(field)) continue;
|
|
486
|
+
if (["type", "id", "meta"].includes(field)) continue;
|
|
465
487
|
const value = resource[field];
|
|
466
488
|
if (Array.isArray(value) && value.length === 1 && isResourceType(value[0]) && value[0].id === null) {
|
|
467
489
|
relationships[field] = { data: [] };
|
|
@@ -809,5 +831,5 @@ var isResourceType = (resource) => {
|
|
|
809
831
|
};
|
|
810
832
|
|
|
811
833
|
export { ApiResource, ApiResourceAdapter, ApiSingleton, debug_default, isApiError, isSdkError, isTokenExpired };
|
|
812
|
-
//# sourceMappingURL=chunk-
|
|
813
|
-
//# sourceMappingURL=chunk-
|
|
834
|
+
//# sourceMappingURL=chunk-CR45TDCY.js.map
|
|
835
|
+
//# sourceMappingURL=chunk-CR45TDCY.js.map
|