@gymspace/sdk 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2065 -0
- package/dist/index.d.ts +2065 -0
- package/dist/index.js +25 -73
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +25 -73
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +3 -87
- package/src/models/auth.ts +3 -14
- package/src/models/organizations.ts +16 -0
- package/src/resources/auth.ts +1 -1
- package/src/resources/onboarding.ts +2 -2
- package/src/resources/organizations.ts +5 -1
- package/src/sdk.ts +0 -6
package/dist/index.mjs
CHANGED
|
@@ -47,7 +47,6 @@ var NetworkError = class extends GymSpaceError {
|
|
|
47
47
|
// src/client.ts
|
|
48
48
|
var ApiClient = class {
|
|
49
49
|
constructor(config) {
|
|
50
|
-
this.refreshPromise = null;
|
|
51
50
|
this.config = config;
|
|
52
51
|
this.axiosInstance = axios.create({
|
|
53
52
|
baseURL: config.baseURL,
|
|
@@ -65,9 +64,6 @@ var ApiClient = class {
|
|
|
65
64
|
if (this.config.apiKey && config.headers) {
|
|
66
65
|
config.headers["Authorization"] = `Bearer ${this.config.apiKey}`;
|
|
67
66
|
}
|
|
68
|
-
if (this.config.refreshToken && config.headers) {
|
|
69
|
-
config.headers["X-Refresh-Token"] = this.config.refreshToken;
|
|
70
|
-
}
|
|
71
67
|
return config;
|
|
72
68
|
},
|
|
73
69
|
(error) => {
|
|
@@ -76,64 +72,13 @@ var ApiClient = class {
|
|
|
76
72
|
);
|
|
77
73
|
this.axiosInstance.interceptors.response.use(
|
|
78
74
|
(response) => {
|
|
79
|
-
const newAccessToken = response.headers["x-new-access-token"];
|
|
80
|
-
const newRefreshToken = response.headers["x-new-refresh-token"];
|
|
81
|
-
if (newAccessToken && newRefreshToken) {
|
|
82
|
-
this.setTokens(newAccessToken, newRefreshToken);
|
|
83
|
-
this.onTokensUpdated?.(newAccessToken, newRefreshToken);
|
|
84
|
-
}
|
|
85
75
|
return response;
|
|
86
76
|
},
|
|
87
77
|
async (error) => {
|
|
88
|
-
const originalRequest = error.config;
|
|
89
|
-
if (error.response?.status === 401 && !originalRequest._retry && this.config.refreshToken) {
|
|
90
|
-
originalRequest._retry = true;
|
|
91
|
-
try {
|
|
92
|
-
if (!this.refreshPromise) {
|
|
93
|
-
this.refreshPromise = this.refreshAccessToken();
|
|
94
|
-
}
|
|
95
|
-
const newTokens = await this.refreshPromise;
|
|
96
|
-
this.refreshPromise = null;
|
|
97
|
-
if (newTokens) {
|
|
98
|
-
originalRequest.headers = originalRequest.headers || {};
|
|
99
|
-
originalRequest.headers["Authorization"] = `Bearer ${newTokens.access_token}`;
|
|
100
|
-
return this.axiosInstance(originalRequest);
|
|
101
|
-
}
|
|
102
|
-
} catch (refreshError) {
|
|
103
|
-
this.refreshPromise = null;
|
|
104
|
-
this.clearAuth();
|
|
105
|
-
this.onAuthError?.(refreshError);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
78
|
throw this.handleError(error);
|
|
109
79
|
}
|
|
110
80
|
);
|
|
111
81
|
}
|
|
112
|
-
/**
|
|
113
|
-
* Refresh the access token using the stored refresh token
|
|
114
|
-
*/
|
|
115
|
-
async refreshAccessToken() {
|
|
116
|
-
if (!this.config.refreshToken) {
|
|
117
|
-
throw new AuthenticationError("No refresh token available");
|
|
118
|
-
}
|
|
119
|
-
try {
|
|
120
|
-
const response = await axios.post(
|
|
121
|
-
`${this.config.baseURL}/auth/refresh`,
|
|
122
|
-
{ refresh_token: this.config.refreshToken },
|
|
123
|
-
{
|
|
124
|
-
headers: {
|
|
125
|
-
"Content-Type": "application/json"
|
|
126
|
-
},
|
|
127
|
-
timeout: this.config.timeout || 3e4
|
|
128
|
-
}
|
|
129
|
-
);
|
|
130
|
-
const newTokens = response.data;
|
|
131
|
-
this.setTokens(newTokens.access_token, newTokens.refresh_token);
|
|
132
|
-
return newTokens;
|
|
133
|
-
} catch (error) {
|
|
134
|
-
throw new AuthenticationError("Failed to refresh token");
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
82
|
handleError(error) {
|
|
138
83
|
const requestPath = error.config?.url || "unknown";
|
|
139
84
|
const method = error.config?.method?.toUpperCase() || "unknown";
|
|
@@ -216,16 +161,11 @@ var ApiClient = class {
|
|
|
216
161
|
setAuthToken(token) {
|
|
217
162
|
this.config.apiKey = token;
|
|
218
163
|
}
|
|
219
|
-
setTokens(accessToken, refreshToken) {
|
|
220
|
-
this.config.apiKey = accessToken;
|
|
221
|
-
this.config.refreshToken = refreshToken;
|
|
222
|
-
}
|
|
223
164
|
setGymId(gymId) {
|
|
224
165
|
this.axiosInstance.defaults.headers.common["X-Gym-Id"] = gymId;
|
|
225
166
|
}
|
|
226
167
|
clearAuth() {
|
|
227
168
|
delete this.config.apiKey;
|
|
228
|
-
delete this.config.refreshToken;
|
|
229
169
|
delete this.axiosInstance.defaults.headers.common["Authorization"];
|
|
230
170
|
delete this.axiosInstance.defaults.headers.common["X-Gym-Id"];
|
|
231
171
|
}
|
|
@@ -360,6 +300,9 @@ var OrganizationsResource = class extends BaseResource {
|
|
|
360
300
|
async getOrganizationStats(id, options) {
|
|
361
301
|
return this.client.get(`${this.basePath}/${id}/stats`, void 0, options);
|
|
362
302
|
}
|
|
303
|
+
async listOrganizations(options) {
|
|
304
|
+
return this.client.get(`${this.basePath}/list`, void 0, options);
|
|
305
|
+
}
|
|
363
306
|
};
|
|
364
307
|
|
|
365
308
|
// src/resources/gyms.ts
|
|
@@ -897,8 +840,8 @@ var OnboardingResource = class extends BaseResource {
|
|
|
897
840
|
*/
|
|
898
841
|
async start(data) {
|
|
899
842
|
const response = await this.client.post("/onboarding/start", data);
|
|
900
|
-
if (response.access_token
|
|
901
|
-
this.client.
|
|
843
|
+
if (response.access_token) {
|
|
844
|
+
this.client.setAuthToken(response.access_token);
|
|
902
845
|
}
|
|
903
846
|
return response;
|
|
904
847
|
}
|
|
@@ -1198,12 +1141,6 @@ var GymSpaceSdk = class {
|
|
|
1198
1141
|
setAuthToken(token) {
|
|
1199
1142
|
this.client.setAuthToken(token);
|
|
1200
1143
|
}
|
|
1201
|
-
/**
|
|
1202
|
-
* Set both access and refresh tokens
|
|
1203
|
-
*/
|
|
1204
|
-
setTokens(accessToken, refreshToken) {
|
|
1205
|
-
this.client.setTokens(accessToken, refreshToken);
|
|
1206
|
-
}
|
|
1207
1144
|
/**
|
|
1208
1145
|
* Set the current gym context
|
|
1209
1146
|
*/
|
|
@@ -1224,7 +1161,7 @@ var GymSpaceSdk = class {
|
|
|
1224
1161
|
}
|
|
1225
1162
|
};
|
|
1226
1163
|
|
|
1227
|
-
// node_modules/@gymspace/shared/dist/index.mjs
|
|
1164
|
+
// ../../node_modules/@gymspace/shared/dist/index.mjs
|
|
1228
1165
|
var UserType = /* @__PURE__ */ ((UserType2) => {
|
|
1229
1166
|
UserType2["OWNER"] = "owner";
|
|
1230
1167
|
UserType2["COLLABORATOR"] = "collaborator";
|
|
@@ -1234,6 +1171,8 @@ var SubscriptionStatus = /* @__PURE__ */ ((SubscriptionStatus2) => {
|
|
|
1234
1171
|
SubscriptionStatus2["ACTIVE"] = "active";
|
|
1235
1172
|
SubscriptionStatus2["INACTIVE"] = "inactive";
|
|
1236
1173
|
SubscriptionStatus2["EXPIRED"] = "expired";
|
|
1174
|
+
SubscriptionStatus2["PAUSED"] = "paused";
|
|
1175
|
+
SubscriptionStatus2["PENDING_UPGRADE"] = "pending_upgrade";
|
|
1237
1176
|
return SubscriptionStatus2;
|
|
1238
1177
|
})(SubscriptionStatus || {});
|
|
1239
1178
|
var CollaboratorStatus = /* @__PURE__ */ ((CollaboratorStatus2) => {
|
|
@@ -1265,6 +1204,7 @@ var ContractStatus = /* @__PURE__ */ ((ContractStatus2) => {
|
|
|
1265
1204
|
ContractStatus2["EXPIRING_SOON"] = "expiring_soon";
|
|
1266
1205
|
ContractStatus2["EXPIRED"] = "expired";
|
|
1267
1206
|
ContractStatus2["CANCELLED"] = "cancelled";
|
|
1207
|
+
ContractStatus2["FOR_RENEW"] = "for_renew";
|
|
1268
1208
|
return ContractStatus2;
|
|
1269
1209
|
})(ContractStatus || {});
|
|
1270
1210
|
var PaymentFrequency = /* @__PURE__ */ ((PaymentFrequency2) => {
|
|
@@ -1408,7 +1348,12 @@ var PERMISSIONS = {
|
|
|
1408
1348
|
SUPPLIERS_CREATE: "SUPPLIERS_CREATE",
|
|
1409
1349
|
SUPPLIERS_READ: "SUPPLIERS_READ",
|
|
1410
1350
|
SUPPLIERS_UPDATE: "SUPPLIERS_UPDATE",
|
|
1411
|
-
SUPPLIERS_DELETE: "SUPPLIERS_DELETE"
|
|
1351
|
+
SUPPLIERS_DELETE: "SUPPLIERS_DELETE",
|
|
1352
|
+
// Payment Methods
|
|
1353
|
+
PAYMENT_METHODS_CREATE: "PAYMENT_METHODS_CREATE",
|
|
1354
|
+
PAYMENT_METHODS_READ: "PAYMENT_METHODS_READ",
|
|
1355
|
+
PAYMENT_METHODS_UPDATE: "PAYMENT_METHODS_UPDATE",
|
|
1356
|
+
PAYMENT_METHODS_DELETE: "PAYMENT_METHODS_DELETE"
|
|
1412
1357
|
};
|
|
1413
1358
|
var ROLE_PERMISSIONS = {
|
|
1414
1359
|
OWNER: Object.values(PERMISSIONS),
|
|
@@ -1446,7 +1391,11 @@ var ROLE_PERMISSIONS = {
|
|
|
1446
1391
|
PERMISSIONS.SUPPLIERS_CREATE,
|
|
1447
1392
|
PERMISSIONS.SUPPLIERS_READ,
|
|
1448
1393
|
PERMISSIONS.SUPPLIERS_UPDATE,
|
|
1449
|
-
PERMISSIONS.SUPPLIERS_DELETE
|
|
1394
|
+
PERMISSIONS.SUPPLIERS_DELETE,
|
|
1395
|
+
PERMISSIONS.PAYMENT_METHODS_CREATE,
|
|
1396
|
+
PERMISSIONS.PAYMENT_METHODS_READ,
|
|
1397
|
+
PERMISSIONS.PAYMENT_METHODS_UPDATE,
|
|
1398
|
+
PERMISSIONS.PAYMENT_METHODS_DELETE
|
|
1450
1399
|
],
|
|
1451
1400
|
STAFF: [
|
|
1452
1401
|
PERMISSIONS.CLIENTS_READ,
|
|
@@ -1455,7 +1404,8 @@ var ROLE_PERMISSIONS = {
|
|
|
1455
1404
|
PERMISSIONS.PRODUCTS_READ,
|
|
1456
1405
|
PERMISSIONS.PRODUCT_CATEGORIES_READ,
|
|
1457
1406
|
PERMISSIONS.SALES_CREATE,
|
|
1458
|
-
PERMISSIONS.SALES_READ
|
|
1407
|
+
PERMISSIONS.SALES_READ,
|
|
1408
|
+
PERMISSIONS.PAYMENT_METHODS_READ
|
|
1459
1409
|
],
|
|
1460
1410
|
ADVISOR: [
|
|
1461
1411
|
PERMISSIONS.CLIENTS_READ,
|
|
@@ -1475,8 +1425,10 @@ var CACHE_TTL = {
|
|
|
1475
1425
|
// 30 minutes
|
|
1476
1426
|
STATIC_DATA: 3600,
|
|
1477
1427
|
// 60 minutes
|
|
1478
|
-
REPORTS: 300
|
|
1428
|
+
REPORTS: 300,
|
|
1479
1429
|
// 5 minutes
|
|
1430
|
+
DASHBOARD: 180
|
|
1431
|
+
// 3 minutes
|
|
1480
1432
|
};
|
|
1481
1433
|
var FILE_LIMITS = {
|
|
1482
1434
|
MAX_FILE_SIZE: 10 * 1024 * 1024,
|