@forgecart/sdk 1.2.7 → 1.202607061936.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.
Files changed (39) hide show
  1. package/README.md +2 -2
  2. package/dist/admin-types.generated.d.ts +481 -33
  3. package/dist/admin.d.ts +2 -0
  4. package/dist/admin.generated.d.ts +67 -27
  5. package/dist/admin.generated.js +88 -4
  6. package/dist/admin.js +35 -31
  7. package/dist/client.generated.d.ts +40 -1
  8. package/dist/client.generated.js +152 -6
  9. package/dist/documents.generated.d.ts +28 -6
  10. package/dist/documents.generated.js +517 -41
  11. package/dist/index.d.ts +1 -0
  12. package/dist/shop-types.generated.d.ts +205 -13
  13. package/dist/shop.d.ts +1 -0
  14. package/dist/shop.generated.d.ts +13 -4
  15. package/dist/shop.generated.js +19 -1
  16. package/dist/shop.js +17 -15
  17. package/package.json +8 -4
  18. package/src/admin-types.generated.d.ts +10013 -0
  19. package/src/admin-types.generated.ts +1019 -96
  20. package/src/admin.generated.d.ts +806 -0
  21. package/src/admin.generated.ts +117 -29
  22. package/src/admin.ts +2 -0
  23. package/src/client.generated.d.ts +249 -0
  24. package/src/client.generated.ts +185 -5
  25. package/src/documents.generated.d.ts +473 -0
  26. package/src/documents.generated.ts +530 -32
  27. package/src/error-utils.d.ts +25 -0
  28. package/src/hook-event-map.generated.d.ts +243 -0
  29. package/src/index.d.ts +22 -0
  30. package/src/index.ts +1 -0
  31. package/src/sdk-hook-subscription.generated.d.ts +29 -0
  32. package/src/sdk-plugin.generated.d.ts +38 -0
  33. package/src/sdk-types.generated.d.ts +56 -0
  34. package/src/shop-types.generated.d.ts +4786 -0
  35. package/src/shop-types.generated.ts +275 -13
  36. package/src/shop.generated.d.ts +213 -0
  37. package/src/shop.generated.ts +22 -5
  38. package/src/shop.ts +1 -0
  39. package/src/upload.d.ts +14 -0
package/dist/admin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SellerCategory = exports.SearchCategory = exports.ScheduledJobCategory = exports.RoleCategory = exports.PromotionCategory = exports.ProductCategory = exports.ProductVariantCategory = exports.ProductOptionCategory = exports.OptionCategory = exports.OptionGroupCategory = exports.PluginCategory = exports.ManageableCategory = exports.PaymentCategory = exports.OrderCategory = exports.OrderModificationCategory = exports.NoteCategory = exports.ModificationCategory = exports.DraftCategory = exports.CouponCategory = exports.OnboardingCategory = exports.MarketingIdentityCategory = exports.MarketingEventCategory = exports.MarketingAttributionCategory = exports.HookCategory = exports.HookDispatchCategory = exports.FulfillmentCategory = exports.FulfillmentRequestCategory = exports.FacetCategory = exports.DeploymentCategory = exports.CustomerCategory = exports.CustomerGroupCategory = exports.GroupCategory = exports.AddressCategory = exports.CountryCategory = exports.CollectionCategory = exports.ChatCategory = exports.ChannelCategory = exports.SettingsCategory = exports.AuthCategory = exports.AudienceSegmentCategory = exports.AudienceMembershipCategory = exports.AssetCategory = exports.AnalyticsGatewayCategory = exports.AdministratorCategory = exports.AcfCategory = exports.AcfSchemaCategory = exports.PublishCategory = exports.FieldDefinitionCategory = exports.EntryCategory = exports.AdminNamespace = void 0;
4
- exports.ZoneCategory = exports.TransactionCategory = exports.TaxCategory = exports.SubscriptionCategory = exports.StockCategory = exports.ShippingCategory = void 0;
3
+ exports.ScheduledJobCategory = exports.RoleCategory = exports.PromotionCategory = exports.ProductCategory = exports.ProductVariantCategory = exports.ProductOptionCategory = exports.OptionCategory = exports.OptionGroupCategory = exports.PluginCategory = exports.ManageableCategory = exports.PaymentCategory = exports.OrderCategory = exports.OrderModificationCategory = exports.NoteCategory = exports.ModificationCategory = exports.DraftCategory = exports.CouponCategory = exports.OnboardingCategory = exports.MissionCategory = exports.MarketingIdentityCategory = exports.MarketingEventCategory = exports.MarketingAttributionCategory = exports.MarketCategory = exports.HookCategory = exports.HookDispatchCategory = exports.FulfillmentCategory = exports.FulfillmentRequestCategory = exports.FacetCategory = exports.DeploymentCategory = exports.CustomerCategory = exports.CustomerGroupCategory = exports.GroupCategory = exports.AddressCategory = exports.CountryCategory = exports.CollectionCategory = exports.ChatCategory = exports.ChannelCategory = exports.SettingsCategory = exports.AuthCategory = exports.AudienceSegmentCategory = exports.AudienceMembershipCategory = exports.AssetCategory = exports.AnalyticsGatewayCategory = exports.AdministratorCategory = exports.AcfCategory = exports.AcfSchemaCategory = exports.PublishCategory = exports.FieldDefinitionCategory = exports.EntryCategory = exports.AdminNamespace = void 0;
4
+ exports.ZoneCategory = exports.TransactionCategory = exports.TaxCategory = exports.SubscriptionCategory = exports.StockCategory = exports.ShippingCategory = exports.SellerCategory = exports.SearchCategory = void 0;
5
5
  var admin_generated_1 = require("./admin.generated");
6
6
  Object.defineProperty(exports, "AdminNamespace", { enumerable: true, get: function () { return admin_generated_1.AdminNamespace; } });
7
7
  var admin_generated_2 = require("./admin.generated");
@@ -57,60 +57,64 @@ Object.defineProperty(exports, "HookDispatchCategory", { enumerable: true, get:
57
57
  var admin_generated_27 = require("./admin.generated");
58
58
  Object.defineProperty(exports, "HookCategory", { enumerable: true, get: function () { return admin_generated_27.HookCategory; } });
59
59
  var admin_generated_28 = require("./admin.generated");
60
- Object.defineProperty(exports, "MarketingAttributionCategory", { enumerable: true, get: function () { return admin_generated_28.MarketingAttributionCategory; } });
60
+ Object.defineProperty(exports, "MarketCategory", { enumerable: true, get: function () { return admin_generated_28.MarketCategory; } });
61
61
  var admin_generated_29 = require("./admin.generated");
62
- Object.defineProperty(exports, "MarketingEventCategory", { enumerable: true, get: function () { return admin_generated_29.MarketingEventCategory; } });
62
+ Object.defineProperty(exports, "MarketingAttributionCategory", { enumerable: true, get: function () { return admin_generated_29.MarketingAttributionCategory; } });
63
63
  var admin_generated_30 = require("./admin.generated");
64
- Object.defineProperty(exports, "MarketingIdentityCategory", { enumerable: true, get: function () { return admin_generated_30.MarketingIdentityCategory; } });
64
+ Object.defineProperty(exports, "MarketingEventCategory", { enumerable: true, get: function () { return admin_generated_30.MarketingEventCategory; } });
65
65
  var admin_generated_31 = require("./admin.generated");
66
- Object.defineProperty(exports, "OnboardingCategory", { enumerable: true, get: function () { return admin_generated_31.OnboardingCategory; } });
66
+ Object.defineProperty(exports, "MarketingIdentityCategory", { enumerable: true, get: function () { return admin_generated_31.MarketingIdentityCategory; } });
67
67
  var admin_generated_32 = require("./admin.generated");
68
- Object.defineProperty(exports, "CouponCategory", { enumerable: true, get: function () { return admin_generated_32.CouponCategory; } });
68
+ Object.defineProperty(exports, "MissionCategory", { enumerable: true, get: function () { return admin_generated_32.MissionCategory; } });
69
69
  var admin_generated_33 = require("./admin.generated");
70
- Object.defineProperty(exports, "DraftCategory", { enumerable: true, get: function () { return admin_generated_33.DraftCategory; } });
70
+ Object.defineProperty(exports, "OnboardingCategory", { enumerable: true, get: function () { return admin_generated_33.OnboardingCategory; } });
71
71
  var admin_generated_34 = require("./admin.generated");
72
- Object.defineProperty(exports, "ModificationCategory", { enumerable: true, get: function () { return admin_generated_34.ModificationCategory; } });
72
+ Object.defineProperty(exports, "CouponCategory", { enumerable: true, get: function () { return admin_generated_34.CouponCategory; } });
73
73
  var admin_generated_35 = require("./admin.generated");
74
- Object.defineProperty(exports, "NoteCategory", { enumerable: true, get: function () { return admin_generated_35.NoteCategory; } });
74
+ Object.defineProperty(exports, "DraftCategory", { enumerable: true, get: function () { return admin_generated_35.DraftCategory; } });
75
75
  var admin_generated_36 = require("./admin.generated");
76
- Object.defineProperty(exports, "OrderModificationCategory", { enumerable: true, get: function () { return admin_generated_36.OrderModificationCategory; } });
76
+ Object.defineProperty(exports, "ModificationCategory", { enumerable: true, get: function () { return admin_generated_36.ModificationCategory; } });
77
77
  var admin_generated_37 = require("./admin.generated");
78
- Object.defineProperty(exports, "OrderCategory", { enumerable: true, get: function () { return admin_generated_37.OrderCategory; } });
78
+ Object.defineProperty(exports, "NoteCategory", { enumerable: true, get: function () { return admin_generated_37.NoteCategory; } });
79
79
  var admin_generated_38 = require("./admin.generated");
80
- Object.defineProperty(exports, "PaymentCategory", { enumerable: true, get: function () { return admin_generated_38.PaymentCategory; } });
80
+ Object.defineProperty(exports, "OrderModificationCategory", { enumerable: true, get: function () { return admin_generated_38.OrderModificationCategory; } });
81
81
  var admin_generated_39 = require("./admin.generated");
82
- Object.defineProperty(exports, "ManageableCategory", { enumerable: true, get: function () { return admin_generated_39.ManageableCategory; } });
82
+ Object.defineProperty(exports, "OrderCategory", { enumerable: true, get: function () { return admin_generated_39.OrderCategory; } });
83
83
  var admin_generated_40 = require("./admin.generated");
84
- Object.defineProperty(exports, "PluginCategory", { enumerable: true, get: function () { return admin_generated_40.PluginCategory; } });
84
+ Object.defineProperty(exports, "PaymentCategory", { enumerable: true, get: function () { return admin_generated_40.PaymentCategory; } });
85
85
  var admin_generated_41 = require("./admin.generated");
86
- Object.defineProperty(exports, "OptionGroupCategory", { enumerable: true, get: function () { return admin_generated_41.OptionGroupCategory; } });
86
+ Object.defineProperty(exports, "ManageableCategory", { enumerable: true, get: function () { return admin_generated_41.ManageableCategory; } });
87
87
  var admin_generated_42 = require("./admin.generated");
88
- Object.defineProperty(exports, "OptionCategory", { enumerable: true, get: function () { return admin_generated_42.OptionCategory; } });
88
+ Object.defineProperty(exports, "PluginCategory", { enumerable: true, get: function () { return admin_generated_42.PluginCategory; } });
89
89
  var admin_generated_43 = require("./admin.generated");
90
- Object.defineProperty(exports, "ProductOptionCategory", { enumerable: true, get: function () { return admin_generated_43.ProductOptionCategory; } });
90
+ Object.defineProperty(exports, "OptionGroupCategory", { enumerable: true, get: function () { return admin_generated_43.OptionGroupCategory; } });
91
91
  var admin_generated_44 = require("./admin.generated");
92
- Object.defineProperty(exports, "ProductVariantCategory", { enumerable: true, get: function () { return admin_generated_44.ProductVariantCategory; } });
92
+ Object.defineProperty(exports, "OptionCategory", { enumerable: true, get: function () { return admin_generated_44.OptionCategory; } });
93
93
  var admin_generated_45 = require("./admin.generated");
94
- Object.defineProperty(exports, "ProductCategory", { enumerable: true, get: function () { return admin_generated_45.ProductCategory; } });
94
+ Object.defineProperty(exports, "ProductOptionCategory", { enumerable: true, get: function () { return admin_generated_45.ProductOptionCategory; } });
95
95
  var admin_generated_46 = require("./admin.generated");
96
- Object.defineProperty(exports, "PromotionCategory", { enumerable: true, get: function () { return admin_generated_46.PromotionCategory; } });
96
+ Object.defineProperty(exports, "ProductVariantCategory", { enumerable: true, get: function () { return admin_generated_46.ProductVariantCategory; } });
97
97
  var admin_generated_47 = require("./admin.generated");
98
- Object.defineProperty(exports, "RoleCategory", { enumerable: true, get: function () { return admin_generated_47.RoleCategory; } });
98
+ Object.defineProperty(exports, "ProductCategory", { enumerable: true, get: function () { return admin_generated_47.ProductCategory; } });
99
99
  var admin_generated_48 = require("./admin.generated");
100
- Object.defineProperty(exports, "ScheduledJobCategory", { enumerable: true, get: function () { return admin_generated_48.ScheduledJobCategory; } });
100
+ Object.defineProperty(exports, "PromotionCategory", { enumerable: true, get: function () { return admin_generated_48.PromotionCategory; } });
101
101
  var admin_generated_49 = require("./admin.generated");
102
- Object.defineProperty(exports, "SearchCategory", { enumerable: true, get: function () { return admin_generated_49.SearchCategory; } });
102
+ Object.defineProperty(exports, "RoleCategory", { enumerable: true, get: function () { return admin_generated_49.RoleCategory; } });
103
103
  var admin_generated_50 = require("./admin.generated");
104
- Object.defineProperty(exports, "SellerCategory", { enumerable: true, get: function () { return admin_generated_50.SellerCategory; } });
104
+ Object.defineProperty(exports, "ScheduledJobCategory", { enumerable: true, get: function () { return admin_generated_50.ScheduledJobCategory; } });
105
105
  var admin_generated_51 = require("./admin.generated");
106
- Object.defineProperty(exports, "ShippingCategory", { enumerable: true, get: function () { return admin_generated_51.ShippingCategory; } });
106
+ Object.defineProperty(exports, "SearchCategory", { enumerable: true, get: function () { return admin_generated_51.SearchCategory; } });
107
107
  var admin_generated_52 = require("./admin.generated");
108
- Object.defineProperty(exports, "StockCategory", { enumerable: true, get: function () { return admin_generated_52.StockCategory; } });
108
+ Object.defineProperty(exports, "SellerCategory", { enumerable: true, get: function () { return admin_generated_52.SellerCategory; } });
109
109
  var admin_generated_53 = require("./admin.generated");
110
- Object.defineProperty(exports, "SubscriptionCategory", { enumerable: true, get: function () { return admin_generated_53.SubscriptionCategory; } });
110
+ Object.defineProperty(exports, "ShippingCategory", { enumerable: true, get: function () { return admin_generated_53.ShippingCategory; } });
111
111
  var admin_generated_54 = require("./admin.generated");
112
- Object.defineProperty(exports, "TaxCategory", { enumerable: true, get: function () { return admin_generated_54.TaxCategory; } });
112
+ Object.defineProperty(exports, "StockCategory", { enumerable: true, get: function () { return admin_generated_54.StockCategory; } });
113
113
  var admin_generated_55 = require("./admin.generated");
114
- Object.defineProperty(exports, "TransactionCategory", { enumerable: true, get: function () { return admin_generated_55.TransactionCategory; } });
114
+ Object.defineProperty(exports, "SubscriptionCategory", { enumerable: true, get: function () { return admin_generated_55.SubscriptionCategory; } });
115
115
  var admin_generated_56 = require("./admin.generated");
116
- Object.defineProperty(exports, "ZoneCategory", { enumerable: true, get: function () { return admin_generated_56.ZoneCategory; } });
116
+ Object.defineProperty(exports, "TaxCategory", { enumerable: true, get: function () { return admin_generated_56.TaxCategory; } });
117
+ var admin_generated_57 = require("./admin.generated");
118
+ Object.defineProperty(exports, "TransactionCategory", { enumerable: true, get: function () { return admin_generated_57.TransactionCategory; } });
119
+ var admin_generated_58 = require("./admin.generated");
120
+ Object.defineProperty(exports, "ZoneCategory", { enumerable: true, get: function () { return admin_generated_58.ZoneCategory; } });
@@ -13,23 +13,32 @@ import { ShopNamespace } from './shop.generated';
13
13
  import type * as Shop from './shop.generated';
14
14
  export interface ForgeCartAdminClientConfig {
15
15
  endpoint: string;
16
+ wsEndpoint?: string;
16
17
  channelToken: string;
17
18
  adminSecret?: string;
18
19
  uploadEndpoint?: string;
19
20
  headers?: Record<string, string>;
21
+ currencyCode?: string;
22
+ languageCode?: string;
20
23
  }
21
24
  export interface ForgeCartShopClientConfig {
22
25
  endpoint: string;
26
+ wsEndpoint?: string;
23
27
  channelToken: string;
24
28
  uploadEndpoint?: string;
25
29
  headers?: Record<string, string>;
30
+ currencyCode?: string;
31
+ languageCode?: string;
26
32
  }
27
33
  export interface ForgeCartClientConfig {
28
34
  endpoint: string;
35
+ wsEndpoint?: string;
29
36
  channelToken: string;
30
37
  adminSecret?: string;
31
38
  uploadEndpoint?: string;
32
39
  headers?: Record<string, string>;
40
+ currencyCode?: string;
41
+ languageCode?: string;
33
42
  }
34
43
  export declare class SDKLogger {
35
44
  private readonly prefix;
@@ -88,13 +97,26 @@ export declare class BaseGraphQLClient {
88
97
  private wsClientStale;
89
98
  private authToken;
90
99
  private transactionToken;
100
+ private currencyCode;
101
+ private languageCode;
91
102
  private errorHandler;
92
- constructor(endpoint: string, baseHeaders: Record<string, string>, uploadEndpoint?: string | undefined);
103
+ private readonly persistSession;
104
+ private readonly tokenStorageKey;
105
+ constructor(endpoint: string, baseHeaders: Record<string, string>, uploadEndpoint?: string | undefined, options?: {
106
+ persistSession?: boolean;
107
+ currencyCode?: string;
108
+ languageCode?: string;
109
+ wsEndpoint?: string;
110
+ });
93
111
  private getWsClient;
94
112
  private getHeaders;
95
113
  setAuthToken(token: string): void;
96
114
  getAuthToken(): string | null;
97
115
  clearAuthToken(): void;
116
+ setCurrencyCode(currencyCode: string): void;
117
+ clearCurrencyCode(): void;
118
+ setLanguageCode(languageCode: string): void;
119
+ clearLanguageCode(): void;
98
120
  setTransactionToken(token: string): void;
99
121
  clearTransactionToken(): void;
100
122
  setErrorHandler(handler: ErrorHandler): void;
@@ -106,6 +128,8 @@ export declare class BaseGraphQLClient {
106
128
  private getPerOperationExtensions;
107
129
  private captureSessionToken;
108
130
  private captureSessionTokenFromUpload;
131
+ private readPersistedToken;
132
+ private persistToken;
109
133
  private containsFiles;
110
134
  private resolveUploadEndpoint;
111
135
  private disposeWsClient;
@@ -130,6 +154,10 @@ export declare class ForgeCartAdminClient {
130
154
  setAuthToken(token: string): void;
131
155
  getAuthToken(): string | null;
132
156
  clearAuthToken(): void;
157
+ setCurrencyCode(currencyCode: string): void;
158
+ clearCurrencyCode(): void;
159
+ setLanguageCode(languageCode: string): void;
160
+ clearLanguageCode(): void;
133
161
  setTransactionToken(token: string): void;
134
162
  clearTransactionToken(): void;
135
163
  setErrorHandler(handler: ErrorHandler): void;
@@ -171,9 +199,11 @@ export declare class ForgeCartAdminClient {
171
199
  get fulfillment(): Admin.FulfillmentCategory;
172
200
  get hookDispatch(): Admin.HookDispatchCategory;
173
201
  get hook(): Admin.HookCategory;
202
+ get market(): Admin.MarketCategory;
174
203
  get marketingAttribution(): Admin.MarketingAttributionCategory;
175
204
  get marketingEvent(): Admin.MarketingEventCategory;
176
205
  get marketingIdentity(): Admin.MarketingIdentityCategory;
206
+ get mission(): Admin.MissionCategory;
177
207
  get onboarding(): Admin.OnboardingCategory;
178
208
  get coupon(): Admin.CouponCategory;
179
209
  get draft(): Admin.DraftCategory;
@@ -208,6 +238,10 @@ export declare class ForgeCartShopClient {
208
238
  setAuthToken(token: string): void;
209
239
  getAuthToken(): string | null;
210
240
  clearAuthToken(): void;
241
+ setCurrencyCode(currencyCode: string): void;
242
+ clearCurrencyCode(): void;
243
+ setLanguageCode(languageCode: string): void;
244
+ clearLanguageCode(): void;
211
245
  setTransactionToken(token: string): void;
212
246
  clearTransactionToken(): void;
213
247
  setErrorHandler(handler: ErrorHandler): void;
@@ -221,6 +255,7 @@ export declare class ForgeCartShopClient {
221
255
  get acf(): Shop.AcfCategory;
222
256
  get auth(): Shop.AuthCategory;
223
257
  get cart(): Shop.CartCategory;
258
+ get channel(): Shop.ChannelCategory;
224
259
  get checkout(): Shop.CheckoutCategory;
225
260
  get collection(): Shop.CollectionCategory;
226
261
  get customer(): Shop.CustomerCategory;
@@ -242,6 +277,10 @@ export declare class ForgeCartClient {
242
277
  constructor(config: ForgeCartClientConfig);
243
278
  setAuthToken(token: string): void;
244
279
  clearAuthToken(): void;
280
+ setCurrencyCode(currencyCode: string): void;
281
+ clearCurrencyCode(): void;
282
+ setLanguageCode(languageCode: string): void;
283
+ clearLanguageCode(): void;
245
284
  setTransactionToken(token: string): void;
246
285
  clearTransactionToken(): void;
247
286
  get admin(): ForgeCartAdminClient;
@@ -60,11 +60,29 @@ class BaseGraphQLClient {
60
60
  wsClientStale = false;
61
61
  authToken = null;
62
62
  transactionToken = null;
63
+ currencyCode = null;
64
+ languageCode = null;
63
65
  errorHandler = null;
64
- constructor(endpoint, baseHeaders, uploadEndpoint) {
66
+ persistSession;
67
+ tokenStorageKey;
68
+ constructor(endpoint, baseHeaders, uploadEndpoint, options) {
65
69
  this.baseHeaders = baseHeaders;
66
70
  this.uploadEndpoint = uploadEndpoint;
67
- this.endpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
71
+ this.endpoint = (options?.wsEndpoint ?? endpoint).replace(/^http:/, "ws:").replace(/^https:/, "wss:");
72
+ // Cross-tab session continuity: each new tab or reload builds a fresh
73
+ // client instance, so without a shared store every one would mint a new
74
+ // anonymous session server-side — and be counted as a new active user.
75
+ // Persist the captured token in localStorage (shared across same-origin
76
+ // tabs), keyed per endpoint + channel so separate stores never collide.
77
+ // Opt out with `{ persistSession: false }` when the host app owns token
78
+ // storage (e.g. the admin dashboard).
79
+ this.persistSession = options?.persistSession ?? true;
80
+ this.currencyCode = options?.currencyCode ?? null;
81
+ this.languageCode = options?.languageCode ?? null;
82
+ this.tokenStorageKey = `forgecart:auth:${this.endpoint}:${this.baseHeaders["forgecart-token"] ?? ""}`;
83
+ if (this.persistSession) {
84
+ this.authToken = this.readPersistedToken();
85
+ }
68
86
  }
69
87
  getWsClient() {
70
88
  if (this.wsClient && this.wsClientStale) {
@@ -93,12 +111,19 @@ class BaseGraphQLClient {
93
111
  if (this.transactionToken) {
94
112
  headers["forgecart-transaction-token"] = this.transactionToken;
95
113
  }
114
+ if (this.currencyCode) {
115
+ headers["forgecart-currency"] = this.currencyCode;
116
+ }
117
+ if (this.languageCode) {
118
+ headers["forgecart-language"] = this.languageCode;
119
+ }
96
120
  return headers;
97
121
  }
98
122
  setAuthToken(token) {
99
123
  if (this.authToken === token)
100
124
  return;
101
125
  this.authToken = token;
126
+ this.persistToken(token);
102
127
  this.disposeWsClient();
103
128
  this.logger.info("Auth token set");
104
129
  }
@@ -107,9 +132,41 @@ class BaseGraphQLClient {
107
132
  }
108
133
  clearAuthToken() {
109
134
  this.authToken = null;
135
+ this.persistToken(null);
110
136
  this.disposeWsClient();
111
137
  this.logger.info("Auth token cleared");
112
138
  }
139
+ // Currency/language preferences ride the WebSocket connection params,
140
+ // so changing one disposes the connection — the next request reconnects
141
+ // with the new forgecart-currency / forgecart-language headers.
142
+ setCurrencyCode(currencyCode) {
143
+ if (this.currencyCode === currencyCode)
144
+ return;
145
+ this.currencyCode = currencyCode;
146
+ this.disposeWsClient();
147
+ this.logger.info("Currency code set");
148
+ }
149
+ clearCurrencyCode() {
150
+ if (this.currencyCode === null)
151
+ return;
152
+ this.currencyCode = null;
153
+ this.disposeWsClient();
154
+ this.logger.info("Currency code cleared");
155
+ }
156
+ setLanguageCode(languageCode) {
157
+ if (this.languageCode === languageCode)
158
+ return;
159
+ this.languageCode = languageCode;
160
+ this.disposeWsClient();
161
+ this.logger.info("Language code set");
162
+ }
163
+ clearLanguageCode() {
164
+ if (this.languageCode === null)
165
+ return;
166
+ this.languageCode = null;
167
+ this.disposeWsClient();
168
+ this.logger.info("Language code cleared");
169
+ }
113
170
  setTransactionToken(token) {
114
171
  this.transactionToken = token;
115
172
  this.logger.info("Transaction token set");
@@ -204,6 +261,7 @@ class BaseGraphQLClient {
204
261
  const token = result.extensions["forgecart-auth-token"];
205
262
  if (token && !this.authToken) {
206
263
  this.authToken = token;
264
+ this.persistToken(token);
207
265
  this.wsClientStale = true;
208
266
  this.logger.info("Session token captured from extensions");
209
267
  }
@@ -214,10 +272,39 @@ class BaseGraphQLClient {
214
272
  const token = result.extensions["forgecart-auth-token"];
215
273
  if (token && !this.authToken) {
216
274
  this.authToken = token;
275
+ this.persistToken(token);
217
276
  this.wsClientStale = true;
218
277
  this.logger.info("Session token captured from upload response");
219
278
  }
220
279
  }
280
+ readPersistedToken() {
281
+ if (typeof localStorage === "undefined")
282
+ return null;
283
+ try {
284
+ return localStorage.getItem(this.tokenStorageKey);
285
+ }
286
+ catch {
287
+ // Storage can throw (Safari private mode, disabled cookies, quota).
288
+ // Falling back to an in-memory session keeps the SDK functional.
289
+ return null;
290
+ }
291
+ }
292
+ persistToken(token) {
293
+ if (!this.persistSession || typeof localStorage === "undefined")
294
+ return;
295
+ try {
296
+ if (token === null) {
297
+ localStorage.removeItem(this.tokenStorageKey);
298
+ }
299
+ else {
300
+ localStorage.setItem(this.tokenStorageKey, token);
301
+ }
302
+ }
303
+ catch {
304
+ // Persistence is best-effort; a storage failure must never break a
305
+ // request. The in-memory token still serves the current page.
306
+ }
307
+ }
221
308
  containsFiles(obj) {
222
309
  if (obj === null || obj === undefined)
223
310
  return false;
@@ -251,6 +338,8 @@ class BaseGraphQLClient {
251
338
  const forked = new BaseGraphQLClient(this.endpoint, this.baseHeaders, this.uploadEndpoint);
252
339
  forked.authToken = this.authToken;
253
340
  forked.transactionToken = transactionToken;
341
+ forked.currencyCode = this.currencyCode;
342
+ forked.languageCode = this.languageCode;
254
343
  forked.wsClient = this.wsClient;
255
344
  forked.ownsWsClient = false;
256
345
  return forked;
@@ -295,7 +384,11 @@ class ForgeCartAdminClient {
295
384
  if (config.adminSecret) {
296
385
  headers['forgecart-secret'] = config.adminSecret;
297
386
  }
298
- this.client = new BaseGraphQLClient(config.endpoint, headers, config.uploadEndpoint);
387
+ this.client = new BaseGraphQLClient(config.endpoint, headers, config.uploadEndpoint, {
388
+ wsEndpoint: config.wsEndpoint,
389
+ currencyCode: config.currencyCode,
390
+ languageCode: config.languageCode,
391
+ });
299
392
  this._namespace = new admin_generated_1.AdminNamespace(this.client);
300
393
  }
301
394
  setAuthToken(token) {
@@ -307,6 +400,18 @@ class ForgeCartAdminClient {
307
400
  clearAuthToken() {
308
401
  this.client.clearAuthToken();
309
402
  }
403
+ setCurrencyCode(currencyCode) {
404
+ this.client.setCurrencyCode(currencyCode);
405
+ }
406
+ clearCurrencyCode() {
407
+ this.client.clearCurrencyCode();
408
+ }
409
+ setLanguageCode(languageCode) {
410
+ this.client.setLanguageCode(languageCode);
411
+ }
412
+ clearLanguageCode() {
413
+ this.client.clearLanguageCode();
414
+ }
310
415
  setTransactionToken(token) {
311
416
  this.client.setTransactionToken(token);
312
417
  }
@@ -460,6 +565,9 @@ class ForgeCartAdminClient {
460
565
  get hook() {
461
566
  return this._namespace.hook;
462
567
  }
568
+ get market() {
569
+ return this._namespace.market;
570
+ }
463
571
  get marketingAttribution() {
464
572
  return this._namespace.marketingAttribution;
465
573
  }
@@ -469,6 +577,9 @@ class ForgeCartAdminClient {
469
577
  get marketingIdentity() {
470
578
  return this._namespace.marketingIdentity;
471
579
  }
580
+ get mission() {
581
+ return this._namespace.mission;
582
+ }
472
583
  get onboarding() {
473
584
  return this._namespace.onboarding;
474
585
  }
@@ -554,7 +665,11 @@ class ForgeCartShopClient {
554
665
  _namespace;
555
666
  constructor(config) {
556
667
  const headers = { 'forgecart-token': config.channelToken, ...config.headers };
557
- this.client = new BaseGraphQLClient(config.endpoint, headers, config.uploadEndpoint);
668
+ this.client = new BaseGraphQLClient(config.endpoint, headers, config.uploadEndpoint, {
669
+ wsEndpoint: config.wsEndpoint,
670
+ currencyCode: config.currencyCode,
671
+ languageCode: config.languageCode,
672
+ });
558
673
  this._namespace = new shop_generated_1.ShopNamespace(this.client);
559
674
  }
560
675
  setAuthToken(token) {
@@ -566,6 +681,18 @@ class ForgeCartShopClient {
566
681
  clearAuthToken() {
567
682
  this.client.clearAuthToken();
568
683
  }
684
+ setCurrencyCode(currencyCode) {
685
+ this.client.setCurrencyCode(currencyCode);
686
+ }
687
+ clearCurrencyCode() {
688
+ this.client.clearCurrencyCode();
689
+ }
690
+ setLanguageCode(languageCode) {
691
+ this.client.setLanguageCode(languageCode);
692
+ }
693
+ clearLanguageCode() {
694
+ this.client.clearLanguageCode();
695
+ }
569
696
  setTransactionToken(token) {
570
697
  this.client.setTransactionToken(token);
571
698
  }
@@ -610,6 +737,9 @@ class ForgeCartShopClient {
610
737
  get cart() {
611
738
  return this._namespace.cart;
612
739
  }
740
+ get channel() {
741
+ return this._namespace.channel;
742
+ }
613
743
  get checkout() {
614
744
  return this._namespace.checkout;
615
745
  }
@@ -658,8 +788,8 @@ class ForgeCartClient {
658
788
  _admin;
659
789
  _shop;
660
790
  constructor(config) {
661
- this._admin = new ForgeCartAdminClient({ endpoint: config.endpoint + '/admin-api', channelToken: config.channelToken, adminSecret: config.adminSecret, uploadEndpoint: config.uploadEndpoint ? config.uploadEndpoint + '/admin-api' : undefined, headers: config.headers });
662
- this._shop = new ForgeCartShopClient({ endpoint: config.endpoint + '/shop-api', channelToken: config.channelToken, uploadEndpoint: config.uploadEndpoint ? config.uploadEndpoint + '/shop-api' : undefined, headers: config.headers });
791
+ this._admin = new ForgeCartAdminClient({ endpoint: config.endpoint + '/admin-api', channelToken: config.channelToken, adminSecret: config.adminSecret, uploadEndpoint: config.uploadEndpoint ? config.uploadEndpoint + '/admin-api' : undefined, headers: config.headers, currencyCode: config.currencyCode, languageCode: config.languageCode });
792
+ this._shop = new ForgeCartShopClient({ endpoint: config.endpoint + '/shop-api', channelToken: config.channelToken, uploadEndpoint: config.uploadEndpoint ? config.uploadEndpoint + '/shop-api' : undefined, headers: config.headers, currencyCode: config.currencyCode, languageCode: config.languageCode });
663
793
  this._admin.setShopPeer(this._shop);
664
794
  }
665
795
  setAuthToken(token) {
@@ -670,6 +800,22 @@ class ForgeCartClient {
670
800
  this._admin.clearAuthToken();
671
801
  this._shop.clearAuthToken();
672
802
  }
803
+ setCurrencyCode(currencyCode) {
804
+ this._admin.setCurrencyCode(currencyCode);
805
+ this._shop.setCurrencyCode(currencyCode);
806
+ }
807
+ clearCurrencyCode() {
808
+ this._admin.clearCurrencyCode();
809
+ this._shop.clearCurrencyCode();
810
+ }
811
+ setLanguageCode(languageCode) {
812
+ this._admin.setLanguageCode(languageCode);
813
+ this._shop.setLanguageCode(languageCode);
814
+ }
815
+ clearLanguageCode() {
816
+ this._admin.clearLanguageCode();
817
+ this._shop.clearLanguageCode();
818
+ }
673
819
  setTransactionToken(token) {
674
820
  this._admin.setTransactionToken(token);
675
821
  this._shop.setTransactionToken(token);