@forgecart/sdk 1.2.7 → 1.202606151453.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 +460 -29
  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 +36 -1
  8. package/dist/client.generated.js +149 -5
  9. package/dist/documents.generated.d.ts +27 -5
  10. package/dist/documents.generated.js +492 -39
  11. package/dist/index.d.ts +1 -0
  12. package/dist/shop-types.generated.d.ts +190 -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 +979 -92
  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 +173 -4
  25. package/src/documents.generated.d.ts +473 -0
  26. package/src/documents.generated.ts +505 -30
  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 +259 -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; } });
@@ -17,12 +17,16 @@ export interface ForgeCartAdminClientConfig {
17
17
  adminSecret?: string;
18
18
  uploadEndpoint?: string;
19
19
  headers?: Record<string, string>;
20
+ currencyCode?: string;
21
+ languageCode?: string;
20
22
  }
21
23
  export interface ForgeCartShopClientConfig {
22
24
  endpoint: string;
23
25
  channelToken: string;
24
26
  uploadEndpoint?: string;
25
27
  headers?: Record<string, string>;
28
+ currencyCode?: string;
29
+ languageCode?: string;
26
30
  }
27
31
  export interface ForgeCartClientConfig {
28
32
  endpoint: string;
@@ -30,6 +34,8 @@ export interface ForgeCartClientConfig {
30
34
  adminSecret?: string;
31
35
  uploadEndpoint?: string;
32
36
  headers?: Record<string, string>;
37
+ currencyCode?: string;
38
+ languageCode?: string;
33
39
  }
34
40
  export declare class SDKLogger {
35
41
  private readonly prefix;
@@ -88,13 +94,25 @@ export declare class BaseGraphQLClient {
88
94
  private wsClientStale;
89
95
  private authToken;
90
96
  private transactionToken;
97
+ private currencyCode;
98
+ private languageCode;
91
99
  private errorHandler;
92
- constructor(endpoint: string, baseHeaders: Record<string, string>, uploadEndpoint?: string | undefined);
100
+ private readonly persistSession;
101
+ private readonly tokenStorageKey;
102
+ constructor(endpoint: string, baseHeaders: Record<string, string>, uploadEndpoint?: string | undefined, options?: {
103
+ persistSession?: boolean;
104
+ currencyCode?: string;
105
+ languageCode?: string;
106
+ });
93
107
  private getWsClient;
94
108
  private getHeaders;
95
109
  setAuthToken(token: string): void;
96
110
  getAuthToken(): string | null;
97
111
  clearAuthToken(): void;
112
+ setCurrencyCode(currencyCode: string): void;
113
+ clearCurrencyCode(): void;
114
+ setLanguageCode(languageCode: string): void;
115
+ clearLanguageCode(): void;
98
116
  setTransactionToken(token: string): void;
99
117
  clearTransactionToken(): void;
100
118
  setErrorHandler(handler: ErrorHandler): void;
@@ -106,6 +124,8 @@ export declare class BaseGraphQLClient {
106
124
  private getPerOperationExtensions;
107
125
  private captureSessionToken;
108
126
  private captureSessionTokenFromUpload;
127
+ private readPersistedToken;
128
+ private persistToken;
109
129
  private containsFiles;
110
130
  private resolveUploadEndpoint;
111
131
  private disposeWsClient;
@@ -130,6 +150,10 @@ export declare class ForgeCartAdminClient {
130
150
  setAuthToken(token: string): void;
131
151
  getAuthToken(): string | null;
132
152
  clearAuthToken(): void;
153
+ setCurrencyCode(currencyCode: string): void;
154
+ clearCurrencyCode(): void;
155
+ setLanguageCode(languageCode: string): void;
156
+ clearLanguageCode(): void;
133
157
  setTransactionToken(token: string): void;
134
158
  clearTransactionToken(): void;
135
159
  setErrorHandler(handler: ErrorHandler): void;
@@ -171,9 +195,11 @@ export declare class ForgeCartAdminClient {
171
195
  get fulfillment(): Admin.FulfillmentCategory;
172
196
  get hookDispatch(): Admin.HookDispatchCategory;
173
197
  get hook(): Admin.HookCategory;
198
+ get market(): Admin.MarketCategory;
174
199
  get marketingAttribution(): Admin.MarketingAttributionCategory;
175
200
  get marketingEvent(): Admin.MarketingEventCategory;
176
201
  get marketingIdentity(): Admin.MarketingIdentityCategory;
202
+ get mission(): Admin.MissionCategory;
177
203
  get onboarding(): Admin.OnboardingCategory;
178
204
  get coupon(): Admin.CouponCategory;
179
205
  get draft(): Admin.DraftCategory;
@@ -208,6 +234,10 @@ export declare class ForgeCartShopClient {
208
234
  setAuthToken(token: string): void;
209
235
  getAuthToken(): string | null;
210
236
  clearAuthToken(): void;
237
+ setCurrencyCode(currencyCode: string): void;
238
+ clearCurrencyCode(): void;
239
+ setLanguageCode(languageCode: string): void;
240
+ clearLanguageCode(): void;
211
241
  setTransactionToken(token: string): void;
212
242
  clearTransactionToken(): void;
213
243
  setErrorHandler(handler: ErrorHandler): void;
@@ -221,6 +251,7 @@ export declare class ForgeCartShopClient {
221
251
  get acf(): Shop.AcfCategory;
222
252
  get auth(): Shop.AuthCategory;
223
253
  get cart(): Shop.CartCategory;
254
+ get channel(): Shop.ChannelCategory;
224
255
  get checkout(): Shop.CheckoutCategory;
225
256
  get collection(): Shop.CollectionCategory;
226
257
  get customer(): Shop.CustomerCategory;
@@ -242,6 +273,10 @@ export declare class ForgeCartClient {
242
273
  constructor(config: ForgeCartClientConfig);
243
274
  setAuthToken(token: string): void;
244
275
  clearAuthToken(): void;
276
+ setCurrencyCode(currencyCode: string): void;
277
+ clearCurrencyCode(): void;
278
+ setLanguageCode(languageCode: string): void;
279
+ clearLanguageCode(): void;
245
280
  setTransactionToken(token: string): void;
246
281
  clearTransactionToken(): void;
247
282
  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
71
  this.endpoint = 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,10 @@ 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
+ currencyCode: config.currencyCode,
389
+ languageCode: config.languageCode,
390
+ });
299
391
  this._namespace = new admin_generated_1.AdminNamespace(this.client);
300
392
  }
301
393
  setAuthToken(token) {
@@ -307,6 +399,18 @@ class ForgeCartAdminClient {
307
399
  clearAuthToken() {
308
400
  this.client.clearAuthToken();
309
401
  }
402
+ setCurrencyCode(currencyCode) {
403
+ this.client.setCurrencyCode(currencyCode);
404
+ }
405
+ clearCurrencyCode() {
406
+ this.client.clearCurrencyCode();
407
+ }
408
+ setLanguageCode(languageCode) {
409
+ this.client.setLanguageCode(languageCode);
410
+ }
411
+ clearLanguageCode() {
412
+ this.client.clearLanguageCode();
413
+ }
310
414
  setTransactionToken(token) {
311
415
  this.client.setTransactionToken(token);
312
416
  }
@@ -460,6 +564,9 @@ class ForgeCartAdminClient {
460
564
  get hook() {
461
565
  return this._namespace.hook;
462
566
  }
567
+ get market() {
568
+ return this._namespace.market;
569
+ }
463
570
  get marketingAttribution() {
464
571
  return this._namespace.marketingAttribution;
465
572
  }
@@ -469,6 +576,9 @@ class ForgeCartAdminClient {
469
576
  get marketingIdentity() {
470
577
  return this._namespace.marketingIdentity;
471
578
  }
579
+ get mission() {
580
+ return this._namespace.mission;
581
+ }
472
582
  get onboarding() {
473
583
  return this._namespace.onboarding;
474
584
  }
@@ -554,7 +664,10 @@ class ForgeCartShopClient {
554
664
  _namespace;
555
665
  constructor(config) {
556
666
  const headers = { 'forgecart-token': config.channelToken, ...config.headers };
557
- this.client = new BaseGraphQLClient(config.endpoint, headers, config.uploadEndpoint);
667
+ this.client = new BaseGraphQLClient(config.endpoint, headers, config.uploadEndpoint, {
668
+ currencyCode: config.currencyCode,
669
+ languageCode: config.languageCode,
670
+ });
558
671
  this._namespace = new shop_generated_1.ShopNamespace(this.client);
559
672
  }
560
673
  setAuthToken(token) {
@@ -566,6 +679,18 @@ class ForgeCartShopClient {
566
679
  clearAuthToken() {
567
680
  this.client.clearAuthToken();
568
681
  }
682
+ setCurrencyCode(currencyCode) {
683
+ this.client.setCurrencyCode(currencyCode);
684
+ }
685
+ clearCurrencyCode() {
686
+ this.client.clearCurrencyCode();
687
+ }
688
+ setLanguageCode(languageCode) {
689
+ this.client.setLanguageCode(languageCode);
690
+ }
691
+ clearLanguageCode() {
692
+ this.client.clearLanguageCode();
693
+ }
569
694
  setTransactionToken(token) {
570
695
  this.client.setTransactionToken(token);
571
696
  }
@@ -610,6 +735,9 @@ class ForgeCartShopClient {
610
735
  get cart() {
611
736
  return this._namespace.cart;
612
737
  }
738
+ get channel() {
739
+ return this._namespace.channel;
740
+ }
613
741
  get checkout() {
614
742
  return this._namespace.checkout;
615
743
  }
@@ -658,8 +786,8 @@ class ForgeCartClient {
658
786
  _admin;
659
787
  _shop;
660
788
  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 });
789
+ 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 });
790
+ 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
791
  this._admin.setShopPeer(this._shop);
664
792
  }
665
793
  setAuthToken(token) {
@@ -670,6 +798,22 @@ class ForgeCartClient {
670
798
  this._admin.clearAuthToken();
671
799
  this._shop.clearAuthToken();
672
800
  }
801
+ setCurrencyCode(currencyCode) {
802
+ this._admin.setCurrencyCode(currencyCode);
803
+ this._shop.setCurrencyCode(currencyCode);
804
+ }
805
+ clearCurrencyCode() {
806
+ this._admin.clearCurrencyCode();
807
+ this._shop.clearCurrencyCode();
808
+ }
809
+ setLanguageCode(languageCode) {
810
+ this._admin.setLanguageCode(languageCode);
811
+ this._shop.setLanguageCode(languageCode);
812
+ }
813
+ clearLanguageCode() {
814
+ this._admin.clearLanguageCode();
815
+ this._shop.clearLanguageCode();
816
+ }
673
817
  setTransactionToken(token) {
674
818
  this._admin.setTransactionToken(token);
675
819
  this._shop.setTransactionToken(token);