arky-sdk 0.1.0 → 0.1.2
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/config-CPkOgumU.d.cts +16 -0
- package/dist/config-CPkOgumU.d.ts +16 -0
- package/dist/index.cjs +1615 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +268 -0
- package/dist/index.d.ts +268 -26
- package/dist/index.js +1555 -56
- package/dist/index.js.map +1 -0
- package/dist/stores.cjs +2148 -0
- package/dist/stores.cjs.map +1 -0
- package/dist/stores.d.cts +218 -0
- package/dist/stores.d.ts +218 -0
- package/dist/stores.js +2111 -0
- package/dist/stores.js.map +1 -0
- package/dist/types.cjs +13 -0
- package/dist/types.cjs.map +1 -0
- package/dist/{types/index.d.ts → types.d.cts} +25 -24
- package/dist/types.d.ts +245 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.cjs +725 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +9 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.js +680 -0
- package/dist/utils.js.map +1 -0
- package/dist/validation-C9UAYKke.d.cts +245 -0
- package/dist/validation-DIvAzYjG.d.ts +245 -0
- package/package.json +17 -11
- package/dist/api/cms.d.ts +0 -19
- package/dist/api/cms.d.ts.map +0 -1
- package/dist/api/cms.js +0 -41
- package/dist/api/eshop.d.ts +0 -89
- package/dist/api/eshop.d.ts.map +0 -1
- package/dist/api/eshop.js +0 -183
- package/dist/api/index.d.ts +0 -6
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -5
- package/dist/api/newsletter.d.ts +0 -32
- package/dist/api/newsletter.d.ts.map +0 -1
- package/dist/api/newsletter.js +0 -70
- package/dist/api/reservation.d.ts +0 -84
- package/dist/api/reservation.d.ts.map +0 -1
- package/dist/api/reservation.js +0 -239
- package/dist/config.d.ts +0 -15
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -20
- package/dist/index.d.ts.map +0 -1
- package/dist/services/auth.d.ts +0 -17
- package/dist/services/auth.d.ts.map +0 -1
- package/dist/services/auth.js +0 -62
- package/dist/services/http.d.ts +0 -20
- package/dist/services/http.d.ts.map +0 -1
- package/dist/services/http.js +0 -73
- package/dist/stores/business.d.ts +0 -28
- package/dist/stores/business.d.ts.map +0 -1
- package/dist/stores/business.js +0 -122
- package/dist/stores/cart.d.ts +0 -8
- package/dist/stores/cart.d.ts.map +0 -1
- package/dist/stores/cart.js +0 -20
- package/dist/stores/eshop.d.ts +0 -121
- package/dist/stores/eshop.d.ts.map +0 -1
- package/dist/stores/eshop.js +0 -377
- package/dist/stores/index.d.ts +0 -7
- package/dist/stores/index.d.ts.map +0 -1
- package/dist/stores/index.js +0 -19
- package/dist/stores/reservation.d.ts +0 -237
- package/dist/stores/reservation.d.ts.map +0 -1
- package/dist/stores/reservation.js +0 -853
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -8
- package/dist/utils/blocks.d.ts +0 -30
- package/dist/utils/blocks.d.ts.map +0 -1
- package/dist/utils/blocks.js +0 -237
- package/dist/utils/currency.d.ts +0 -9
- package/dist/utils/currency.d.ts.map +0 -1
- package/dist/utils/currency.js +0 -99
- package/dist/utils/errors.d.ts +0 -121
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -114
- package/dist/utils/i18n.d.ts +0 -5
- package/dist/utils/i18n.d.ts.map +0 -1
- package/dist/utils/i18n.js +0 -37
- package/dist/utils/index.d.ts +0 -9
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -10
- package/dist/utils/price.d.ts +0 -33
- package/dist/utils/price.d.ts.map +0 -1
- package/dist/utils/price.js +0 -141
- package/dist/utils/queryParams.d.ts +0 -21
- package/dist/utils/queryParams.d.ts.map +0 -1
- package/dist/utils/queryParams.js +0 -47
- package/dist/utils/svg.d.ts +0 -17
- package/dist/utils/svg.d.ts.map +0 -1
- package/dist/utils/svg.js +0 -62
- package/dist/utils/text.d.ts +0 -26
- package/dist/utils/text.d.ts.map +0 -1
- package/dist/utils/text.js +0 -64
- package/dist/utils/timezone.d.ts +0 -9
- package/dist/utils/timezone.d.ts.map +0 -1
- package/dist/utils/timezone.js +0 -49
- package/dist/utils/validation.d.ts +0 -9
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -44
package/package.json
CHANGED
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arky-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Official TypeScript SDK for Arky - All-in-one business platform",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "./dist/index.
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
7
8
|
"types": "./dist/index.d.ts",
|
|
8
9
|
"exports": {
|
|
9
10
|
".": {
|
|
10
11
|
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.js"
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
12
14
|
},
|
|
13
15
|
"./stores": {
|
|
14
|
-
"types": "./dist/stores
|
|
15
|
-
"import": "./dist/stores
|
|
16
|
+
"types": "./dist/stores.d.ts",
|
|
17
|
+
"import": "./dist/stores.js",
|
|
18
|
+
"require": "./dist/stores.cjs"
|
|
16
19
|
},
|
|
17
20
|
"./utils": {
|
|
18
|
-
"types": "./dist/utils
|
|
19
|
-
"import": "./dist/utils
|
|
21
|
+
"types": "./dist/utils.d.ts",
|
|
22
|
+
"import": "./dist/utils.js",
|
|
23
|
+
"require": "./dist/utils.cjs"
|
|
20
24
|
},
|
|
21
25
|
"./types": {
|
|
22
|
-
"types": "./dist/types
|
|
23
|
-
"import": "./dist/types
|
|
26
|
+
"types": "./dist/types.d.ts",
|
|
27
|
+
"import": "./dist/types.js",
|
|
28
|
+
"require": "./dist/types.cjs"
|
|
24
29
|
}
|
|
25
30
|
},
|
|
26
31
|
"files": [
|
|
@@ -28,8 +33,8 @@
|
|
|
28
33
|
"README.md"
|
|
29
34
|
],
|
|
30
35
|
"scripts": {
|
|
31
|
-
"build": "
|
|
32
|
-
"dev": "
|
|
36
|
+
"build": "tsup",
|
|
37
|
+
"dev": "tsup --watch",
|
|
33
38
|
"clean": "rm -rf dist"
|
|
34
39
|
},
|
|
35
40
|
"keywords": [
|
|
@@ -53,6 +58,7 @@
|
|
|
53
58
|
"nanostores": "^1.0.1"
|
|
54
59
|
},
|
|
55
60
|
"devDependencies": {
|
|
61
|
+
"tsup": "^8.5.0",
|
|
56
62
|
"typescript": "^5.8.3"
|
|
57
63
|
}
|
|
58
64
|
}
|
package/dist/api/cms.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare const cmsApi: {
|
|
2
|
-
getCollection: (id: string) => Promise<any>;
|
|
3
|
-
getCollections: ({ name, ids }: {
|
|
4
|
-
name?: string | null;
|
|
5
|
-
ids?: string[] | null;
|
|
6
|
-
}) => Promise<any>;
|
|
7
|
-
getCollectionEntries: ({ collectionId, limit, cursor, ids }: {
|
|
8
|
-
collectionId: string;
|
|
9
|
-
limit?: number;
|
|
10
|
-
cursor?: string;
|
|
11
|
-
ids?: string[] | null;
|
|
12
|
-
}) => Promise<any>;
|
|
13
|
-
getCollectionEntry: ({ collectionId, id }: {
|
|
14
|
-
collectionId: string;
|
|
15
|
-
id: string;
|
|
16
|
-
}) => Promise<import("../services/http").HttpResponse<any>>;
|
|
17
|
-
createCollectionEntry: (collectionEntryData: any) => Promise<import("../services/http").HttpResponse<any>>;
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=cms.d.ts.map
|
package/dist/api/cms.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms.d.ts","sourceRoot":"","sources":["../../src/api/cms.ts"],"names":[],"mappings":"AAyDA,eAAO,MAAM,MAAM;wBArDc,MAAM;oCAMoB;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;KAAE;iEAcvG;QACC,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACzB;+CAoBuD;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;iDAXlC,GAAG;CAyB5D,CAAC"}
|
package/dist/api/cms.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { API_URL, BUSINESS_ID } from '../config';
|
|
2
|
-
import httpClient from '../services/http';
|
|
3
|
-
const getCollection = async (id) => {
|
|
4
|
-
const url = `${API_URL}/v1/businesses/${BUSINESS_ID}/collections/${id}`;
|
|
5
|
-
const { value } = await httpClient.get(url);
|
|
6
|
-
return value;
|
|
7
|
-
};
|
|
8
|
-
const getCollections = async ({ name = null, ids = null }) => {
|
|
9
|
-
const url = `${API_URL}/v1/businesses/${BUSINESS_ID}/collections`;
|
|
10
|
-
const response = await httpClient.get(url, {
|
|
11
|
-
params: { name, ids }
|
|
12
|
-
});
|
|
13
|
-
return response.value;
|
|
14
|
-
};
|
|
15
|
-
const getCollectionEntries = async ({ collectionId, limit, cursor, ids = null }) => {
|
|
16
|
-
const url = `${API_URL}/v1/businesses/${BUSINESS_ID}/collections/${collectionId}/entries`;
|
|
17
|
-
const response = await httpClient.get(url, {
|
|
18
|
-
params: { limit, cursor, ids }
|
|
19
|
-
});
|
|
20
|
-
return response.value;
|
|
21
|
-
};
|
|
22
|
-
const createCollectionEntry = async (collectionEntryData) => {
|
|
23
|
-
const url = `${API_URL}/v1/businesses/${BUSINESS_ID}/collections/${collectionEntryData.collectionId}/entries`;
|
|
24
|
-
const result = await httpClient.post(url, collectionEntryData, {
|
|
25
|
-
successMessage: "Created successfully",
|
|
26
|
-
errorMessage: "Failed to create collection",
|
|
27
|
-
});
|
|
28
|
-
return result;
|
|
29
|
-
};
|
|
30
|
-
const getCollectionEntry = async ({ collectionId, id }) => {
|
|
31
|
-
const url = `${API_URL}/v1/businesses/${BUSINESS_ID}/collections/${collectionId}/entries/${id}`;
|
|
32
|
-
const response = await httpClient.get(url);
|
|
33
|
-
return response;
|
|
34
|
-
};
|
|
35
|
-
export const cmsApi = {
|
|
36
|
-
getCollection,
|
|
37
|
-
getCollections,
|
|
38
|
-
getCollectionEntries,
|
|
39
|
-
getCollectionEntry,
|
|
40
|
-
createCollectionEntry,
|
|
41
|
-
};
|
package/dist/api/eshop.d.ts
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import type { ApiResponse, Quote } from '../types';
|
|
2
|
-
export declare const eshopApi: {
|
|
3
|
-
getProducts({ businessId, categoryIds, status, limit, cursor }: {
|
|
4
|
-
businessId: string;
|
|
5
|
-
categoryIds?: string[] | null;
|
|
6
|
-
status?: string;
|
|
7
|
-
limit?: number;
|
|
8
|
-
cursor?: string | null;
|
|
9
|
-
}): Promise<{
|
|
10
|
-
success: boolean;
|
|
11
|
-
data: any;
|
|
12
|
-
cursor: any;
|
|
13
|
-
total: any;
|
|
14
|
-
error?: undefined;
|
|
15
|
-
} | {
|
|
16
|
-
success: boolean;
|
|
17
|
-
error: string;
|
|
18
|
-
data: any[];
|
|
19
|
-
cursor?: undefined;
|
|
20
|
-
total?: undefined;
|
|
21
|
-
}>;
|
|
22
|
-
getProductBySlug({ businessId, slug }: {
|
|
23
|
-
businessId: string;
|
|
24
|
-
slug: string;
|
|
25
|
-
}): Promise<{
|
|
26
|
-
success: boolean;
|
|
27
|
-
data: any;
|
|
28
|
-
error?: undefined;
|
|
29
|
-
} | {
|
|
30
|
-
success: boolean;
|
|
31
|
-
error: any;
|
|
32
|
-
data: any;
|
|
33
|
-
}>;
|
|
34
|
-
getQuote({ token, businessId, items, market, currency, userId, paymentMethod, shippingMethodId, promoCode }: {
|
|
35
|
-
token: string;
|
|
36
|
-
businessId: string;
|
|
37
|
-
items: {
|
|
38
|
-
productId: string;
|
|
39
|
-
variantId: string;
|
|
40
|
-
quantity: number;
|
|
41
|
-
}[];
|
|
42
|
-
market: string;
|
|
43
|
-
currency: string;
|
|
44
|
-
userId: string;
|
|
45
|
-
paymentMethod: string;
|
|
46
|
-
shippingMethodId?: string;
|
|
47
|
-
promoCode?: string;
|
|
48
|
-
}): Promise<ApiResponse<Quote>>;
|
|
49
|
-
checkout({ token, businessId, items, paymentMethod, blocks, market, shippingMethodId, promoCode, paymentIntentId }: {
|
|
50
|
-
token: string;
|
|
51
|
-
businessId: string;
|
|
52
|
-
items: any[];
|
|
53
|
-
paymentMethod: string;
|
|
54
|
-
blocks: any[];
|
|
55
|
-
market?: string;
|
|
56
|
-
shippingMethodId?: string;
|
|
57
|
-
promoCode?: string;
|
|
58
|
-
paymentIntentId?: string | null;
|
|
59
|
-
}): Promise<{
|
|
60
|
-
success: boolean;
|
|
61
|
-
error: any;
|
|
62
|
-
code: any;
|
|
63
|
-
data?: undefined;
|
|
64
|
-
} | {
|
|
65
|
-
success: boolean;
|
|
66
|
-
data: any;
|
|
67
|
-
error?: undefined;
|
|
68
|
-
code?: undefined;
|
|
69
|
-
} | {
|
|
70
|
-
success: boolean;
|
|
71
|
-
error: any;
|
|
72
|
-
code?: undefined;
|
|
73
|
-
data?: undefined;
|
|
74
|
-
}>;
|
|
75
|
-
createPaymentIntent({ amount, currency, businessId }: {
|
|
76
|
-
amount: number;
|
|
77
|
-
currency: string;
|
|
78
|
-
businessId: string;
|
|
79
|
-
}): Promise<{
|
|
80
|
-
success: boolean;
|
|
81
|
-
data: any;
|
|
82
|
-
error?: undefined;
|
|
83
|
-
} | {
|
|
84
|
-
success: boolean;
|
|
85
|
-
error: any;
|
|
86
|
-
data?: undefined;
|
|
87
|
-
}>;
|
|
88
|
-
};
|
|
89
|
-
//# sourceMappingURL=eshop.d.ts.map
|
package/dist/api/eshop.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eshop.d.ts","sourceRoot":"","sources":["../../src/api/eshop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAW,KAAK,EAAE,MAAM,UAAU,CAAC;AAI5D,eAAO,MAAM,QAAQ;oEAQd;QACC,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;;;;;;;;;;;;;2CA+B4C;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;;;;;;;;;iHA+B9E;QACC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACpE,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wHA6D5B;QACC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,GAAG,EAAE,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC;;;;;;;;;;;;;;;;0DA2C2D;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;;;;;;;;;CAuCvH,CAAC"}
|
package/dist/api/eshop.js
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { API_URL } from '../config';
|
|
2
|
-
import { reservationApi } from './reservation';
|
|
3
|
-
import httpClient from '../services/http';
|
|
4
|
-
export const eshopApi = {
|
|
5
|
-
// Get products
|
|
6
|
-
async getProducts({ businessId, categoryIds = null, status = "ACTIVE", limit = 20, cursor = null }) {
|
|
7
|
-
const url = `${API_URL}/v1/businesses/${encodeURIComponent(businessId)}/products`;
|
|
8
|
-
const response = await httpClient.get(url, {
|
|
9
|
-
params: {
|
|
10
|
-
categoryIds: categoryIds && categoryIds.length > 0 ? categoryIds : undefined,
|
|
11
|
-
status,
|
|
12
|
-
limit,
|
|
13
|
-
cursor
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
if (response.success) {
|
|
17
|
-
const json = response.value;
|
|
18
|
-
return {
|
|
19
|
-
success: true,
|
|
20
|
-
data: json.items || [],
|
|
21
|
-
cursor: json.cursor,
|
|
22
|
-
total: json.total || 0,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
console.error("Error fetching products:", response.error);
|
|
27
|
-
return {
|
|
28
|
-
success: false,
|
|
29
|
-
error: response.error,
|
|
30
|
-
data: [],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
// Get product by slug
|
|
35
|
-
async getProductBySlug({ businessId, slug }) {
|
|
36
|
-
try {
|
|
37
|
-
const url = `${API_URL}/v1/businesses/${encodeURIComponent(businessId)}/products/slug/${encodeURIComponent(businessId)}/${encodeURIComponent(slug)}`;
|
|
38
|
-
const res = await fetch(url);
|
|
39
|
-
if (!res.ok)
|
|
40
|
-
throw new Error("Product not found");
|
|
41
|
-
const json = await res.json();
|
|
42
|
-
return {
|
|
43
|
-
success: true,
|
|
44
|
-
data: json,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
console.error("Error fetching product:", e);
|
|
49
|
-
return {
|
|
50
|
-
success: false,
|
|
51
|
-
error: e.message,
|
|
52
|
-
data: null,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
// Get quote for cart (pricing with promo codes, shipping, taxes)
|
|
57
|
-
async getQuote({ token, businessId, items, market, currency, userId, paymentMethod, shippingMethodId, promoCode }) {
|
|
58
|
-
try {
|
|
59
|
-
const lines = items.map(item => ({
|
|
60
|
-
type: 'PRODUCT_VARIANT',
|
|
61
|
-
productId: item.productId,
|
|
62
|
-
variantId: item.variantId,
|
|
63
|
-
quantity: item.quantity
|
|
64
|
-
}));
|
|
65
|
-
const payload = {
|
|
66
|
-
businessId,
|
|
67
|
-
market,
|
|
68
|
-
currency,
|
|
69
|
-
userId,
|
|
70
|
-
paymentMethod,
|
|
71
|
-
lines,
|
|
72
|
-
...(shippingMethodId && { shippingMethodId }),
|
|
73
|
-
...(promoCode && { promoCode })
|
|
74
|
-
};
|
|
75
|
-
const res = await fetch(`${API_URL}/v1/payments/quote`, {
|
|
76
|
-
method: "POST",
|
|
77
|
-
headers: {
|
|
78
|
-
"Content-Type": "application/json",
|
|
79
|
-
Authorization: `Bearer ${token}`,
|
|
80
|
-
},
|
|
81
|
-
body: JSON.stringify(payload),
|
|
82
|
-
});
|
|
83
|
-
const text = await res.text();
|
|
84
|
-
if (!res.ok) {
|
|
85
|
-
try {
|
|
86
|
-
const json = JSON.parse(text);
|
|
87
|
-
return { success: false, error: json.reason || json.error || res.statusText, code: json.code };
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
return { success: false, error: text || res.statusText };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const quote = text ? JSON.parse(text) : null;
|
|
94
|
-
return { success: true, data: quote };
|
|
95
|
-
}
|
|
96
|
-
catch (e) {
|
|
97
|
-
console.error('Quote fetch failed:', e);
|
|
98
|
-
return {
|
|
99
|
-
success: false,
|
|
100
|
-
error: e.message,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
// Checkout - Backend calculates currency from market
|
|
105
|
-
async checkout({ token, businessId, items, paymentMethod, blocks, market = "US", shippingMethodId, promoCode, paymentIntentId = null }) {
|
|
106
|
-
try {
|
|
107
|
-
const payload = {
|
|
108
|
-
businessId,
|
|
109
|
-
items,
|
|
110
|
-
paymentMethod,
|
|
111
|
-
blocks,
|
|
112
|
-
market,
|
|
113
|
-
...(shippingMethodId && { shippingMethodId }),
|
|
114
|
-
...(promoCode && { promoCode }),
|
|
115
|
-
...(paymentIntentId && { paymentIntentId }),
|
|
116
|
-
};
|
|
117
|
-
const res = await fetch(`${API_URL}/v1/businesses/${encodeURIComponent(businessId)}/orders/checkout`, {
|
|
118
|
-
method: "POST",
|
|
119
|
-
headers: {
|
|
120
|
-
"Content-Type": "application/json",
|
|
121
|
-
Authorization: `Bearer ${token}`,
|
|
122
|
-
},
|
|
123
|
-
body: JSON.stringify(payload),
|
|
124
|
-
});
|
|
125
|
-
const text = await res.text();
|
|
126
|
-
if (!res.ok) {
|
|
127
|
-
try {
|
|
128
|
-
const json = JSON.parse(text);
|
|
129
|
-
return { success: false, error: json.reason || json.error || res.statusText, code: json.code };
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
return { success: false, error: text || res.statusText };
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
const json = text ? JSON.parse(text) : null;
|
|
136
|
-
return { success: true, data: json };
|
|
137
|
-
}
|
|
138
|
-
catch (e) {
|
|
139
|
-
return {
|
|
140
|
-
success: false,
|
|
141
|
-
error: e.message,
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
// Create payment intent for Stripe
|
|
146
|
-
async createPaymentIntent({ amount, currency, businessId }) {
|
|
147
|
-
try {
|
|
148
|
-
const tokenResponse = await reservationApi.getGuestToken();
|
|
149
|
-
if (!tokenResponse.success || !tokenResponse.data) {
|
|
150
|
-
throw new Error('Failed to get guest token');
|
|
151
|
-
}
|
|
152
|
-
const token = tokenResponse.data.token;
|
|
153
|
-
const res = await fetch(`${API_URL}/v1/businesses/${encodeURIComponent(businessId)}/payment/create-intent`, {
|
|
154
|
-
method: "POST",
|
|
155
|
-
headers: {
|
|
156
|
-
"Content-Type": "application/json",
|
|
157
|
-
Authorization: `Bearer ${token}`,
|
|
158
|
-
},
|
|
159
|
-
body: JSON.stringify({
|
|
160
|
-
amount,
|
|
161
|
-
currency,
|
|
162
|
-
businessId,
|
|
163
|
-
}),
|
|
164
|
-
});
|
|
165
|
-
if (!res.ok) {
|
|
166
|
-
const error = (await res.text()) || res.statusText;
|
|
167
|
-
throw new Error(error);
|
|
168
|
-
}
|
|
169
|
-
const json = await res.json();
|
|
170
|
-
return {
|
|
171
|
-
success: true,
|
|
172
|
-
data: json,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
catch (e) {
|
|
176
|
-
console.error('Payment intent creation failed:', e);
|
|
177
|
-
return {
|
|
178
|
-
success: false,
|
|
179
|
-
error: e.message,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
};
|
package/dist/api/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { cmsApi } from "./cms";
|
|
2
|
-
export { eshopApi } from "./eshop";
|
|
3
|
-
export { reservationApi } from "./reservation";
|
|
4
|
-
export { newsletterApi } from "./newsletter";
|
|
5
|
-
export type { ApiResponse, Newsletter, PaginatedResponse } from "../types/index";
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/api/index.js
DELETED
package/dist/api/newsletter.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { Newsletter, PaginatedResponse, Payment } from '../types';
|
|
2
|
-
export interface NewsletterFindPayload {
|
|
3
|
-
business_id: string;
|
|
4
|
-
}
|
|
5
|
-
export interface NewsletterResponse {
|
|
6
|
-
data: Newsletter[];
|
|
7
|
-
meta?: {
|
|
8
|
-
total: number;
|
|
9
|
-
page: number;
|
|
10
|
-
per_page: number;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export interface NewsletterSubscribePayload {
|
|
14
|
-
newsletterId: string;
|
|
15
|
-
email: string;
|
|
16
|
-
customerId?: string;
|
|
17
|
-
payment?: Payment;
|
|
18
|
-
}
|
|
19
|
-
export declare const newsletterApi: {
|
|
20
|
-
find(payload: NewsletterFindPayload): Promise<PaginatedResponse<Newsletter>>;
|
|
21
|
-
get(id: string): Promise<Newsletter>;
|
|
22
|
-
subscribe(payload: NewsletterSubscribePayload): Promise<{
|
|
23
|
-
success: boolean;
|
|
24
|
-
data: any;
|
|
25
|
-
error?: undefined;
|
|
26
|
-
} | {
|
|
27
|
-
success: boolean;
|
|
28
|
-
error: string;
|
|
29
|
-
data?: undefined;
|
|
30
|
-
}>;
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=newsletter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"newsletter.d.ts","sourceRoot":"","sources":["../../src/api/newsletter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACrC,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC;CACF;AAED,MAAM,WAAW,0BAA0B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,aAAa;kBACL,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YA4BpE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;uBAejB,0BAA0B;;;;;;;;;CAsCnD,CAAC"}
|
package/dist/api/newsletter.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
export const newsletterApi = {
|
|
2
|
-
async find(payload) {
|
|
3
|
-
const params = new URLSearchParams({
|
|
4
|
-
businessId: payload.business_id,
|
|
5
|
-
});
|
|
6
|
-
// Get the backend API URL from config
|
|
7
|
-
const { API_URL } = await import('../config');
|
|
8
|
-
const url = `${API_URL}/v1/newsletters?${params.toString()}`;
|
|
9
|
-
const response = await fetch(url);
|
|
10
|
-
if (!response.ok) {
|
|
11
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
12
|
-
}
|
|
13
|
-
const backendResponse = await response.json();
|
|
14
|
-
// Backend returns {items: [], cursor: null}, we need {data: [], meta: {...}}
|
|
15
|
-
return {
|
|
16
|
-
data: backendResponse.items || [],
|
|
17
|
-
meta: {
|
|
18
|
-
total: backendResponse.items?.length || 0,
|
|
19
|
-
page: 1,
|
|
20
|
-
per_page: backendResponse.items?.length || 0,
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
},
|
|
24
|
-
async get(id) {
|
|
25
|
-
// Get the backend API URL from config
|
|
26
|
-
const { API_URL } = await import('../config');
|
|
27
|
-
const url = `${API_URL}/v1/newsletters/${id}`;
|
|
28
|
-
const response = await fetch(url);
|
|
29
|
-
if (!response.ok) {
|
|
30
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
31
|
-
}
|
|
32
|
-
return await response.json();
|
|
33
|
-
},
|
|
34
|
-
async subscribe(payload) {
|
|
35
|
-
try {
|
|
36
|
-
// Get the backend API URL from config
|
|
37
|
-
const { API_URL } = await import('../config');
|
|
38
|
-
const url = `${API_URL}/v1/newsletters/${payload.newsletterId}/subscribe`;
|
|
39
|
-
const response = await fetch(url, {
|
|
40
|
-
method: 'POST',
|
|
41
|
-
headers: {
|
|
42
|
-
'Content-Type': 'application/json',
|
|
43
|
-
},
|
|
44
|
-
body: JSON.stringify({
|
|
45
|
-
newsletterId: payload.newsletterId,
|
|
46
|
-
email: payload.email,
|
|
47
|
-
market: "US", // Backend resolves currency from market
|
|
48
|
-
...(payload.customerId && { customerId: payload.customerId }),
|
|
49
|
-
...(payload.payment && { payment: payload.payment }),
|
|
50
|
-
}),
|
|
51
|
-
});
|
|
52
|
-
if (!response.ok) {
|
|
53
|
-
const errorData = await response.json().catch(() => ({}));
|
|
54
|
-
throw new Error(errorData.message || `HTTP error! status: ${response.status}`);
|
|
55
|
-
}
|
|
56
|
-
const data = await response.json();
|
|
57
|
-
return {
|
|
58
|
-
success: true,
|
|
59
|
-
data,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
console.error('Newsletter subscription error:', error);
|
|
64
|
-
return {
|
|
65
|
-
success: false,
|
|
66
|
-
error: error instanceof Error ? error.message : 'Failed to subscribe to newsletter',
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
};
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import type { ApiResponse, Quote } from '../types';
|
|
2
|
-
export declare const reservationApi: {
|
|
3
|
-
getQuote({ token, businessId, market, currency, userId, parts, paymentMethod, promoCode, }: {
|
|
4
|
-
token: string;
|
|
5
|
-
businessId: string;
|
|
6
|
-
market: string;
|
|
7
|
-
currency: string;
|
|
8
|
-
userId: string;
|
|
9
|
-
parts: any[];
|
|
10
|
-
paymentMethod?: string;
|
|
11
|
-
promoCode?: string;
|
|
12
|
-
}): Promise<ApiResponse<Quote>>;
|
|
13
|
-
getAvailableSlots({ businessId, serviceId, from, to, limit, providerId, }: {
|
|
14
|
-
businessId: string;
|
|
15
|
-
serviceId: string;
|
|
16
|
-
from: number;
|
|
17
|
-
to: number;
|
|
18
|
-
limit?: number;
|
|
19
|
-
providerId?: string | null;
|
|
20
|
-
}): Promise<{
|
|
21
|
-
success: boolean;
|
|
22
|
-
data: any;
|
|
23
|
-
error?: undefined;
|
|
24
|
-
} | {
|
|
25
|
-
success: boolean;
|
|
26
|
-
error: string;
|
|
27
|
-
data: any[];
|
|
28
|
-
}>;
|
|
29
|
-
getProviders({ businessId, serviceId, limit }: {
|
|
30
|
-
businessId: string;
|
|
31
|
-
serviceId: string;
|
|
32
|
-
limit?: number;
|
|
33
|
-
}): Promise<{
|
|
34
|
-
success: boolean;
|
|
35
|
-
data: any;
|
|
36
|
-
error?: undefined;
|
|
37
|
-
} | {
|
|
38
|
-
success: boolean;
|
|
39
|
-
error: string;
|
|
40
|
-
data: any[];
|
|
41
|
-
}>;
|
|
42
|
-
getGuestToken(): Promise<ApiResponse<{
|
|
43
|
-
token: string;
|
|
44
|
-
}>>;
|
|
45
|
-
updateProfilePhone({ token, phoneNumber }: {
|
|
46
|
-
token: string;
|
|
47
|
-
phoneNumber: string;
|
|
48
|
-
}): Promise<{
|
|
49
|
-
success: boolean;
|
|
50
|
-
error?: undefined;
|
|
51
|
-
} | {
|
|
52
|
-
success: boolean;
|
|
53
|
-
error: any;
|
|
54
|
-
}>;
|
|
55
|
-
verifyPhoneCode({ token, phoneNumber, code }: {
|
|
56
|
-
token: string;
|
|
57
|
-
phoneNumber: string;
|
|
58
|
-
code: string;
|
|
59
|
-
}): Promise<{
|
|
60
|
-
success: boolean;
|
|
61
|
-
error?: undefined;
|
|
62
|
-
} | {
|
|
63
|
-
success: boolean;
|
|
64
|
-
error: any;
|
|
65
|
-
}>;
|
|
66
|
-
checkout({ token, businessId, parts, paymentMethod, blocks, market, promoCode }: {
|
|
67
|
-
token: string;
|
|
68
|
-
businessId: string;
|
|
69
|
-
parts: any[];
|
|
70
|
-
paymentMethod?: string;
|
|
71
|
-
blocks?: any[];
|
|
72
|
-
market?: string;
|
|
73
|
-
promoCode?: string;
|
|
74
|
-
}): Promise<{
|
|
75
|
-
success: boolean;
|
|
76
|
-
data: any;
|
|
77
|
-
error?: undefined;
|
|
78
|
-
} | {
|
|
79
|
-
success: boolean;
|
|
80
|
-
error: any;
|
|
81
|
-
data?: undefined;
|
|
82
|
-
}>;
|
|
83
|
-
};
|
|
84
|
-
//# sourceMappingURL=reservation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reservation.d.ts","sourceRoot":"","sources":["../../src/api/reservation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAW,KAAK,EAAE,MAAM,UAAU,CAAC;AAG5D,eAAO,MAAM,cAAc;gGAWpB;QACC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,GAAG,EAAE,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;+EAwD5B;QACC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;;;;;;;;;mDA6ByD;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;qBA2B5F,OAAO,CAAC,WAAW,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;+CAyBb;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;;;;;;;kDAmCnC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;;;;;;;qFA0CrG;QACC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,GAAG,EAAE,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB;;;;;;;;;CAoDJ,CAAC"}
|