@ikas/code-components-mcp 2.7.0 → 2.9.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/data/framework.json +53 -26
- package/data/section-templates/account-info-section/children/AccountFavorites/ikas-config-snippet.json +13 -0
- package/data/section-templates/account-info-section/children/AccountOrders/index.tsx +1 -1
- package/data/section-templates/account-info-section/ikas-config-snippet.json +19 -0
- package/data/section-templates/add-to-cart/ikas-config-snippet.json +17 -0
- package/data/section-templates/add-to-cart/utils/cartLimits.ts +4 -3
- package/data/section-templates/blog-home-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/blog-home-section/index.tsx +2 -1
- package/data/section-templates/blog-post-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/blog-post-section/index.tsx +3 -2
- package/data/section-templates/bundle-products/hooks/useBundleProducts.ts +7 -6
- package/data/section-templates/bundle-products/ikas-config-snippet.json +20 -0
- package/data/section-templates/cart-section/components/EmptyState/index.tsx +1 -1
- package/data/section-templates/cart-section/sub-components/CartItem/index.tsx +9 -0
- package/data/section-templates/cart-section/utils/cartLimits.ts +24 -0
- package/data/section-templates/cart-section/utils/cartLineLimits.ts +100 -0
- package/data/section-templates/category-images-section/children/CategoryImageItem/ikas-config-snippet.json +4 -0
- package/data/section-templates/category-images-section/ikas-config-snippet.json +15 -0
- package/data/section-templates/category-list-section/children/CardProductName/ikas-config-snippet.json +2 -1
- package/data/section-templates/category-list-section/ikas-config-snippet.json +21 -0
- package/data/section-templates/category-list-section/index.tsx +2 -1
- package/data/section-templates/component-renderer/additional/ProductDetail/index.tsx +5 -1
- package/data/section-templates/component-renderer/ikas-config-snippet.json +13 -0
- package/data/section-templates/favorites/ikas-config-snippet.json +18 -1
- package/data/section-templates/features-section/ikas-config-snippet.json +13 -0
- package/data/section-templates/footer-section/ikas-config-snippet.json +15 -0
- package/data/section-templates/forgot-password-section/components/ForgotPasswordForm/index.tsx +1 -1
- package/data/section-templates/header-section/children/Announcements/ikas-config-snippet.json +7 -0
- package/data/section-templates/header-section/children/CookieBar/ikas-config-snippet.json +3 -0
- package/data/section-templates/header-section/children/Navbar/components/CartSidebar/index.tsx +2 -1
- package/data/section-templates/header-section/children/Navbar/components/SearchModal/index.tsx +2 -1
- package/data/section-templates/header-section/children/Navbar/ikas-config-snippet.json +27 -0
- package/data/section-templates/header-section/children/Navbar/index.tsx +6 -5
- package/data/section-templates/header-section/ikas-config-snippet.json +13 -0
- package/data/section-templates/header-section/sub-components/CartItem/index.tsx +9 -0
- package/data/section-templates/header-section/utils/cartLimits.ts +24 -0
- package/data/section-templates/header-section/utils/cartLineLimits.ts +100 -0
- package/data/section-templates/hero-slider-section/children/HeroSliderItem/ikas-config-snippet.json +18 -0
- package/data/section-templates/hero-slider-section/children/HeroSliderItem/index.tsx +12 -7
- package/data/section-templates/hero-slider-section/ikas-config-snippet.json +13 -0
- package/data/section-templates/image-handling/ikas-config-snippet.json +52 -0
- package/data/section-templates/image-handling/index.tsx +5 -1
- package/data/section-templates/login-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/navigation/components/CartSidebar/index.tsx +2 -1
- package/data/section-templates/navigation/components/SearchModal/index.tsx +2 -1
- package/data/section-templates/navigation/ikas-config-snippet.json +27 -0
- package/data/section-templates/navigation/index.tsx +6 -5
- package/data/section-templates/navigation/sub-components/CartItem/index.tsx +9 -0
- package/data/section-templates/navigation/utils/cartLimits.ts +24 -0
- package/data/section-templates/navigation/utils/cartLineLimits.ts +100 -0
- package/data/section-templates/product-detail-section/children/ProductDetailAddToCart/ikas-config-snippet.json +17 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBackInStock/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBundleFurniture/ikas-config-snippet.json +18 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBundleProduct/ikas-config-snippet.json +20 -0
- package/data/section-templates/product-detail-section/children/ProductDetailDescription/ikas-config-snippet.json +27 -0
- package/data/section-templates/product-detail-section/children/ProductDetailFeatures/ikas-config-snippet.json +29 -0
- package/data/section-templates/product-detail-section/children/ProductDetailNameFavorite/ikas-config-snippet.json +18 -1
- package/data/section-templates/product-detail-section/children/ProductDetailOffer/ikas-config-snippet.json +20 -0
- package/data/section-templates/product-detail-section/children/ProductDetailOptionSet/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailPrices/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailProductGroup/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailSku/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailVariant/ikas-config-snippet.json +17 -0
- package/data/section-templates/product-detail-section/hooks/useBundleProducts.ts +7 -6
- package/data/section-templates/product-detail-section/ikas-config-snippet.json +52 -0
- package/data/section-templates/product-detail-section/index.tsx +5 -1
- package/data/section-templates/product-detail-section/utils/cartLimits.ts +4 -3
- package/data/section-templates/product-pricing/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-slider-section/children/CardProductName/ikas-config-snippet.json +2 -1
- package/data/section-templates/product-slider-section/ikas-config-snippet.json +17 -0
- package/data/section-templates/register-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/variant-selection/ikas-config-snippet.json +17 -0
- package/data/storefront-api.json +301 -17
- package/data/storefront-types.json +221 -20
- package/dist/index.js +408 -26
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,9 +8,10 @@ export interface CartQuantityLimits {
|
|
|
8
8
|
/**
|
|
9
9
|
* Resolve the per-cart quantity limits for a product from its active sales
|
|
10
10
|
* channel. Falls back to a minimum of 1 and no maximum when the channel or its
|
|
11
|
-
* limits are not set. `addItemToCart` clamps to the same limits internally
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* limits are not set. `addItemToCart` clamps to the same limits internally only
|
|
12
|
+
* when it creates a NEW cart line — incrementing an existing line goes through
|
|
13
|
+
* `changeItemQuantity`, which never clamps — so enforcing these in the stepper
|
|
14
|
+
* is the only guard that covers both paths.
|
|
14
15
|
*/
|
|
15
16
|
export function getProductCartLimits(product: IkasProduct): CartQuantityLimits {
|
|
16
17
|
const channel = product.salesChannels?.find(
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
"displayName": "Top Spacing",
|
|
17
17
|
"type": "TYPE",
|
|
18
18
|
"required": false,
|
|
19
|
+
"defaultValue": {
|
|
20
|
+
"value": 0,
|
|
21
|
+
"unit": "px"
|
|
22
|
+
},
|
|
19
23
|
"groupId": "mobile",
|
|
20
24
|
"typeId": "@ikas/bp-storefront-models-MarginTopStyleType"
|
|
21
25
|
},
|
|
@@ -24,6 +28,10 @@
|
|
|
24
28
|
"displayName": "Bottom Spacing",
|
|
25
29
|
"type": "TYPE",
|
|
26
30
|
"required": false,
|
|
31
|
+
"defaultValue": {
|
|
32
|
+
"value": 0,
|
|
33
|
+
"unit": "px"
|
|
34
|
+
},
|
|
27
35
|
"groupId": "mobile",
|
|
28
36
|
"typeId": "@ikas/bp-storefront-models-MarginBottomStyleType"
|
|
29
37
|
},
|
|
@@ -32,6 +40,10 @@
|
|
|
32
40
|
"displayName": "Top Spacing",
|
|
33
41
|
"type": "TYPE",
|
|
34
42
|
"required": false,
|
|
43
|
+
"defaultValue": {
|
|
44
|
+
"value": 0,
|
|
45
|
+
"unit": "px"
|
|
46
|
+
},
|
|
35
47
|
"groupId": "desktop",
|
|
36
48
|
"typeId": "@ikas/bp-storefront-models-MarginTopStyleType"
|
|
37
49
|
},
|
|
@@ -40,6 +52,10 @@
|
|
|
40
52
|
"displayName": "Bottom Spacing",
|
|
41
53
|
"type": "TYPE",
|
|
42
54
|
"required": false,
|
|
55
|
+
"defaultValue": {
|
|
56
|
+
"value": 0,
|
|
57
|
+
"unit": "px"
|
|
58
|
+
},
|
|
43
59
|
"groupId": "desktop",
|
|
44
60
|
"typeId": "@ikas/bp-storefront-models-MarginBottomStyleType"
|
|
45
61
|
}
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"displayName": "Column Count",
|
|
58
58
|
"type": "ENUM",
|
|
59
59
|
"required": false,
|
|
60
|
+
"defaultValue": "Four",
|
|
60
61
|
"groupId": "appearance",
|
|
61
62
|
"enumTypeId": "{{ENUM_ID:NumberOfColumns}}"
|
|
62
63
|
},
|
|
@@ -65,6 +66,7 @@
|
|
|
65
66
|
"displayName": "Aspect Ratio",
|
|
66
67
|
"type": "ENUM",
|
|
67
68
|
"required": false,
|
|
69
|
+
"defaultValue": "Square",
|
|
68
70
|
"groupId": "appearance",
|
|
69
71
|
"enumTypeId": "{{ENUM_ID:AspectRatio}}"
|
|
70
72
|
},
|
|
@@ -73,6 +75,7 @@
|
|
|
73
75
|
"displayName": "Image Fit",
|
|
74
76
|
"type": "ENUM",
|
|
75
77
|
"required": false,
|
|
78
|
+
"defaultValue": "Cover",
|
|
76
79
|
"groupId": "appearance",
|
|
77
80
|
"enumTypeId": "{{ENUM_ID:ObjectFit}}"
|
|
78
81
|
},
|
|
@@ -81,6 +84,7 @@
|
|
|
81
84
|
"displayName": "Hide Add to Cart Button",
|
|
82
85
|
"type": "BOOLEAN",
|
|
83
86
|
"required": false,
|
|
87
|
+
"defaultValue": false,
|
|
84
88
|
"groupId": "appearance"
|
|
85
89
|
},
|
|
86
90
|
{
|
|
@@ -88,6 +92,19 @@
|
|
|
88
92
|
"displayName": "Components",
|
|
89
93
|
"type": "COMPONENT_LIST",
|
|
90
94
|
"required": false,
|
|
95
|
+
"defaultValue": {
|
|
96
|
+
"components": [
|
|
97
|
+
{
|
|
98
|
+
"codeComponentId": "nb34u3yu-card-product-name"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"codeComponentId": "nb34u3yu-card-product-variants"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"codeComponentId": "nb34u3yu-card-product-price"
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
},
|
|
91
108
|
"privateVarMap": {
|
|
92
109
|
"product": {
|
|
93
110
|
"id": "pvm_1772803530689_1",
|
|
@@ -142,6 +142,7 @@
|
|
|
142
142
|
"displayName": "Google Login",
|
|
143
143
|
"type": "BOOLEAN",
|
|
144
144
|
"required": false,
|
|
145
|
+
"defaultValue": false,
|
|
145
146
|
"groupId": "google"
|
|
146
147
|
},
|
|
147
148
|
{
|
|
@@ -157,6 +158,7 @@
|
|
|
157
158
|
"displayName": "Facebook Login",
|
|
158
159
|
"type": "BOOLEAN",
|
|
159
160
|
"required": false,
|
|
161
|
+
"defaultValue": false,
|
|
160
162
|
"groupId": "facebook"
|
|
161
163
|
},
|
|
162
164
|
{
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
"displayName": "Top Spacing",
|
|
17
17
|
"type": "TYPE",
|
|
18
18
|
"required": false,
|
|
19
|
+
"defaultValue": {
|
|
20
|
+
"value": 0,
|
|
21
|
+
"unit": "px"
|
|
22
|
+
},
|
|
19
23
|
"groupId": "mobile",
|
|
20
24
|
"typeId": "@ikas/bp-storefront-models-MarginTopStyleType"
|
|
21
25
|
},
|
|
@@ -24,6 +28,10 @@
|
|
|
24
28
|
"displayName": "Bottom Spacing",
|
|
25
29
|
"type": "TYPE",
|
|
26
30
|
"required": false,
|
|
31
|
+
"defaultValue": {
|
|
32
|
+
"value": 0,
|
|
33
|
+
"unit": "px"
|
|
34
|
+
},
|
|
27
35
|
"groupId": "mobile",
|
|
28
36
|
"typeId": "@ikas/bp-storefront-models-MarginBottomStyleType"
|
|
29
37
|
},
|
|
@@ -32,6 +40,10 @@
|
|
|
32
40
|
"displayName": "Top Spacing",
|
|
33
41
|
"type": "TYPE",
|
|
34
42
|
"required": false,
|
|
43
|
+
"defaultValue": {
|
|
44
|
+
"value": 0,
|
|
45
|
+
"unit": "px"
|
|
46
|
+
},
|
|
35
47
|
"groupId": "desktop",
|
|
36
48
|
"typeId": "@ikas/bp-storefront-models-MarginTopStyleType"
|
|
37
49
|
},
|
|
@@ -40,6 +52,10 @@
|
|
|
40
52
|
"displayName": "Bottom Spacing",
|
|
41
53
|
"type": "TYPE",
|
|
42
54
|
"required": false,
|
|
55
|
+
"defaultValue": {
|
|
56
|
+
"value": 0,
|
|
57
|
+
"unit": "px"
|
|
58
|
+
},
|
|
43
59
|
"groupId": "desktop",
|
|
44
60
|
"typeId": "@ikas/bp-storefront-models-MarginBottomStyleType"
|
|
45
61
|
},
|
|
@@ -48,6 +64,7 @@
|
|
|
48
64
|
"displayName": "Image Variant",
|
|
49
65
|
"type": "BOOLEAN",
|
|
50
66
|
"required": false,
|
|
67
|
+
"defaultValue": false,
|
|
51
68
|
"description": "Use product images for color variant."
|
|
52
69
|
}
|
|
53
70
|
],
|
package/data/storefront-api.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-
|
|
2
|
+
"generatedAt": "2026-09-03T13:13:43.900Z",
|
|
3
3
|
"functions": [
|
|
4
4
|
{
|
|
5
5
|
"name": "apiListProductBrand",
|
|
@@ -2788,16 +2788,16 @@
|
|
|
2788
2788
|
{
|
|
2789
2789
|
"name": "getThumbnailSrc",
|
|
2790
2790
|
"signature": "function getThumbnailSrc(image: IkasImage): string",
|
|
2791
|
-
"description": "Returns the thumbnail source URL for an
|
|
2791
|
+
"description": "Returns the thumbnail source URL for an IMAGE at 180px resolution.\n\nVIDEOS HAVE NO 180px THUMBNAIL and no poster URL. When `image.isVideo === true` the size is\nIGNORED and this returns the same full-size .mp4 as `getDefaultSrc(image)` — so using it in a\nthumbnail-sized box (swatch, cart line, order line) downloads the whole video instead of a\n180px webp. Nothing looks broken, which makes it a silent performance regression.\n\nBranch on `item.isVideo` first and only pass images here. For the video branch in a small,\nstatic context render `<video src={getDefaultSrc(item)} preload=\"metadata\" muted playsInline>`\nwith no `autoPlay`: the browser fetches only the first frame and holds it as a stand-in poster.",
|
|
2792
2792
|
"params": [
|
|
2793
2793
|
{
|
|
2794
2794
|
"name": "image",
|
|
2795
|
-
"description": "- The image object to generate the thumbnail source URL for."
|
|
2795
|
+
"description": "- The image object to generate the thumbnail source URL for. Videos ignore the size."
|
|
2796
2796
|
}
|
|
2797
2797
|
],
|
|
2798
|
-
"returns": "The CDN URL string
|
|
2798
|
+
"returns": "The CDN URL string: a 180px image, or — for `isVideo` items — the original .mp4.",
|
|
2799
2799
|
"returnType": "string",
|
|
2800
|
-
"example": "```typescript\nimport { getThumbnailSrc, getDefaultSrc } from \"@ikas/bp-storefront\";\n\n// Thumbnail rail — branch on isVideo per item:\n{product.images.map((item, i) =>\n item.isVideo ? (\n <video key={i} src={getDefaultSrc(item)} muted preload=\"metadata\">\n <track kind=\"captions\" />\n </video>\n ) : (\n <img key={i} src={getThumbnailSrc(item)} sizes=\"112px\" alt={`Thumb ${i + 1}`} />\n )\n)}\n```",
|
|
2800
|
+
"example": "```typescript\nimport { getThumbnailSrc, getDefaultSrc } from \"@ikas/bp-storefront\";\n\n// Thumbnail rail — branch on isVideo per item (no autoPlay: first frame acts as the poster):\n{product.images.map((item, i) =>\n item.isVideo ? (\n <video key={i} src={getDefaultSrc(item)} muted playsInline preload=\"metadata\">\n <track kind=\"captions\" />\n </video>\n ) : (\n <img key={i} src={getThumbnailSrc(item)} sizes=\"112px\" alt={`Thumb ${i + 1}`} />\n )\n)}\n```",
|
|
2801
2801
|
"categories": [
|
|
2802
2802
|
"Image"
|
|
2803
2803
|
],
|
|
@@ -3085,6 +3085,35 @@
|
|
|
3085
3085
|
"IkasOrderGiftPackageLine"
|
|
3086
3086
|
]
|
|
3087
3087
|
},
|
|
3088
|
+
{
|
|
3089
|
+
"name": "getIkasOrderGiftCardTotalPrice",
|
|
3090
|
+
"displayName": "getGiftCardTotalPrice",
|
|
3091
|
+
"signature": "function getIkasOrderGiftCardTotalPrice(order: IkasOrder): number",
|
|
3092
|
+
"description": "Returns the total amount covered by the gift cards (and store credits) applied to the order or cart.\n\nThis is a derived value, the API does not return it: it sums `amount` over `order.giftCardLines`.\nSubtract it from `order.totalFinalPrice` to get the amount still due.",
|
|
3093
|
+
"params": [
|
|
3094
|
+
{
|
|
3095
|
+
"name": "order",
|
|
3096
|
+
"description": "- The IkasOrder or IkasCart holding the gift card lines"
|
|
3097
|
+
}
|
|
3098
|
+
],
|
|
3099
|
+
"returns": "The summed gift card amount, or 0 when no gift card is applied",
|
|
3100
|
+
"returnType": "number",
|
|
3101
|
+
"example": "```typescript\nimport { getIkasOrderGiftCardTotalPrice } from \"@ikas/bp-storefront\";\n\nconst giftCardTotal = getIkasOrderGiftCardTotalPrice(cart);\nconst remainingPrice = cart.totalFinalPrice - giftCardTotal;\n```",
|
|
3102
|
+
"categories": [
|
|
3103
|
+
"Order",
|
|
3104
|
+
"Cart"
|
|
3105
|
+
],
|
|
3106
|
+
"related": [
|
|
3107
|
+
"removeGiftCardLine",
|
|
3108
|
+
"saveCouponCode"
|
|
3109
|
+
],
|
|
3110
|
+
"isAsync": false,
|
|
3111
|
+
"isClass": false,
|
|
3112
|
+
"parameterTypes": [
|
|
3113
|
+
"IkasOrderGiftCardTotalPrice",
|
|
3114
|
+
"IkasOrder"
|
|
3115
|
+
]
|
|
3116
|
+
},
|
|
3088
3117
|
{
|
|
3089
3118
|
"name": "getIkasOrderDistinctItemCount",
|
|
3090
3119
|
"displayName": "getDistinctItemCount",
|
|
@@ -10746,6 +10775,88 @@
|
|
|
10746
10775
|
"isAsync": true,
|
|
10747
10776
|
"isClass": false
|
|
10748
10777
|
},
|
|
10778
|
+
{
|
|
10779
|
+
"name": "initDeactivateCustomerForm",
|
|
10780
|
+
"displayName": "init",
|
|
10781
|
+
"signature": "function initDeactivateCustomerForm(deactivateCustomerForm: DeactivateCustomerForm): void",
|
|
10782
|
+
"description": "Initializes the deactivate customer form with default password field values, labels, and placeholders.",
|
|
10783
|
+
"params": [
|
|
10784
|
+
{
|
|
10785
|
+
"name": "deactivateCustomerForm",
|
|
10786
|
+
"description": "- The deactivate customer form model to initialize"
|
|
10787
|
+
}
|
|
10788
|
+
],
|
|
10789
|
+
"returns": "void",
|
|
10790
|
+
"returnType": "void",
|
|
10791
|
+
"example": "```typescript\nimport { initDeactivateCustomerForm } from \"@ikas/bp-storefront\";\ninitDeactivateCustomerForm(deactivateCustomerForm);\n```",
|
|
10792
|
+
"categories": [
|
|
10793
|
+
"Validation",
|
|
10794
|
+
"DeactivateCustomer",
|
|
10795
|
+
"Form"
|
|
10796
|
+
],
|
|
10797
|
+
"related": [
|
|
10798
|
+
"setDeactivateCustomerFormPassword",
|
|
10799
|
+
"submitDeactivateCustomerForm"
|
|
10800
|
+
],
|
|
10801
|
+
"isAsync": false,
|
|
10802
|
+
"isClass": false
|
|
10803
|
+
},
|
|
10804
|
+
{
|
|
10805
|
+
"name": "setDeactivateCustomerFormPassword",
|
|
10806
|
+
"displayName": "setPassword",
|
|
10807
|
+
"signature": "function setDeactivateCustomerFormPassword(deactivateCustomerForm: DeactivateCustomerForm, value: string): void",
|
|
10808
|
+
"description": "Sets the password value on the deactivate customer form and re-validates if the form has already been submitted.",
|
|
10809
|
+
"params": [
|
|
10810
|
+
{
|
|
10811
|
+
"name": "deactivateCustomerForm",
|
|
10812
|
+
"description": "- The deactivate customer form model to update"
|
|
10813
|
+
},
|
|
10814
|
+
{
|
|
10815
|
+
"name": "value",
|
|
10816
|
+
"description": "- The new password string to set"
|
|
10817
|
+
}
|
|
10818
|
+
],
|
|
10819
|
+
"returns": "void",
|
|
10820
|
+
"returnType": "void",
|
|
10821
|
+
"example": "```typescript\nimport { setDeactivateCustomerFormPassword } from \"@ikas/bp-storefront\";\nsetDeactivateCustomerFormPassword(deactivateCustomerForm, \"mySecurePassword123\");\n```",
|
|
10822
|
+
"categories": [
|
|
10823
|
+
"Validation",
|
|
10824
|
+
"DeactivateCustomer",
|
|
10825
|
+
"Form"
|
|
10826
|
+
],
|
|
10827
|
+
"related": [
|
|
10828
|
+
"initDeactivateCustomerForm",
|
|
10829
|
+
"submitDeactivateCustomerForm"
|
|
10830
|
+
],
|
|
10831
|
+
"isAsync": false,
|
|
10832
|
+
"isClass": false
|
|
10833
|
+
},
|
|
10834
|
+
{
|
|
10835
|
+
"name": "submitDeactivateCustomerForm",
|
|
10836
|
+
"displayName": "submit",
|
|
10837
|
+
"signature": "async function submitDeactivateCustomerForm(deactivateCustomerForm: DeactivateCustomerForm): Promise<boolean>",
|
|
10838
|
+
"description": "Validates and submits the deactivate customer form, deleting the current customer's account after password verification.\nThe customer session is not cleared automatically, call `logout` after a successful submission.",
|
|
10839
|
+
"params": [
|
|
10840
|
+
{
|
|
10841
|
+
"name": "deactivateCustomerForm",
|
|
10842
|
+
"description": "- The deactivate customer form model to submit"
|
|
10843
|
+
}
|
|
10844
|
+
],
|
|
10845
|
+
"returns": "A promise that resolves to true if the account was deactivated successfully, or false on validation error or API failure",
|
|
10846
|
+
"returnType": "Promise<boolean>",
|
|
10847
|
+
"example": "```typescript\nimport { customerStore, logout, submitDeactivateCustomerForm } from \"@ikas/bp-storefront\";\nconst success = await submitDeactivateCustomerForm(deactivateCustomerForm);\nif (success) {\n await logout(customerStore);\n}\n```",
|
|
10848
|
+
"categories": [
|
|
10849
|
+
"Validation",
|
|
10850
|
+
"DeactivateCustomer",
|
|
10851
|
+
"Form"
|
|
10852
|
+
],
|
|
10853
|
+
"related": [
|
|
10854
|
+
"initDeactivateCustomerForm",
|
|
10855
|
+
"setDeactivateCustomerFormPassword"
|
|
10856
|
+
],
|
|
10857
|
+
"isAsync": true,
|
|
10858
|
+
"isClass": false
|
|
10859
|
+
},
|
|
10749
10860
|
{
|
|
10750
10861
|
"name": "initForgotPasswordForm",
|
|
10751
10862
|
"displayName": "init",
|
|
@@ -12589,11 +12700,27 @@
|
|
|
12589
12700
|
"name": "bs_searchProductById",
|
|
12590
12701
|
"displayName": "searchProductById",
|
|
12591
12702
|
"signature": "async function bs_searchProductById(baseStore: BaseStore, params: { productId: string }): Promise<{\n isSuccess: boolean;\n product: IkasProduct | null;\n}>",
|
|
12592
|
-
"description": "",
|
|
12593
|
-
"params": [
|
|
12703
|
+
"description": "Fetches a single product by id and returns it as a full `IkasProduct`.\n\nUse this when a lightweight reference (e.g. a cart line's `IkasOrderLineVariant`, which carries\nneither `salesChannels` nor `stock`) needs product-level data: the returned product includes\n`salesChannels` filtered to the active sales channel (with `minQuantityPerCart` /\n`maxQuantityPerCart`) and per-variant `stock` (summed over the sales channel's configured\nstock locations). `selectedVariantValues` is seeded from the first active variant (or the\nfirst variant when none is active). For multiple ids, prefer `bs_searchProductsById` — one\nbatched request.",
|
|
12704
|
+
"params": [
|
|
12705
|
+
{
|
|
12706
|
+
"name": "baseStore",
|
|
12707
|
+
"description": "- The base store instance"
|
|
12708
|
+
},
|
|
12709
|
+
{
|
|
12710
|
+
"name": "params",
|
|
12711
|
+
"description": "- `{ productId }` — id of the product to fetch"
|
|
12712
|
+
}
|
|
12713
|
+
],
|
|
12714
|
+
"returns": "`{ isSuccess, product }` — `product` is null when not found or on failure",
|
|
12594
12715
|
"returnType": "Promise<{\n isSuccess: boolean;\n product: IkasProduct | null;\n}>",
|
|
12595
|
-
"
|
|
12596
|
-
"
|
|
12716
|
+
"example": "```tsx\nimport { baseStore, bs_searchProductById, IkasStorefrontConfig } from \"@ikas/bp-storefront\";\n\nconst { isSuccess, product } = await bs_searchProductById(baseStore, { productId });\nif (isSuccess && product) {\n const channel = product.salesChannels?.find(sc => sc.id === IkasStorefrontConfig.salesChannelId);\n console.log(channel?.maxQuantityPerCart);\n}\n```",
|
|
12717
|
+
"categories": [
|
|
12718
|
+
"Product",
|
|
12719
|
+
"Search"
|
|
12720
|
+
],
|
|
12721
|
+
"related": [
|
|
12722
|
+
"bs_searchProductsById"
|
|
12723
|
+
],
|
|
12597
12724
|
"isAsync": true,
|
|
12598
12725
|
"isClass": false,
|
|
12599
12726
|
"parameterTypes": [
|
|
@@ -12604,11 +12731,29 @@
|
|
|
12604
12731
|
"name": "bs_searchProductsById",
|
|
12605
12732
|
"displayName": "searchProductsById",
|
|
12606
12733
|
"signature": "async function bs_searchProductsById(baseStore: BaseStore, params: { productIds: string[] }): Promise<{\n isSuccess: boolean;\n products: IkasProduct[] | null;\n}>",
|
|
12607
|
-
"description": "",
|
|
12608
|
-
"params": [
|
|
12734
|
+
"description": "Batch-fetches products by id in a single request and returns them as full `IkasProduct` objects.\n\nThe go-to function when cart lines (or any lightweight reference) need product-level data they\ndo not carry: `IkasOrderLineVariant` has neither `salesChannels` nor `stock`, while the products\nreturned here include `salesChannels` filtered to the active sales channel (with\n`minQuantityPerCart` / `maxQuantityPerCart`) and per-variant `stock` (summed over the sales\nchannel's configured stock locations). Collect the distinct `productId`s of the lines and\nfetch them in ONE call instead of one request per line. Called with an empty `productIds`,\nit returns `{ isSuccess: true, products: [] }` without a network request.",
|
|
12735
|
+
"params": [
|
|
12736
|
+
{
|
|
12737
|
+
"name": "baseStore",
|
|
12738
|
+
"description": "- The base store instance"
|
|
12739
|
+
},
|
|
12740
|
+
{
|
|
12741
|
+
"name": "params",
|
|
12742
|
+
"description": "- `{ productIds }` — product ids to fetch (deduplicate before calling)"
|
|
12743
|
+
}
|
|
12744
|
+
],
|
|
12745
|
+
"returns": "`{ isSuccess, products }` — `products` is null on failure",
|
|
12609
12746
|
"returnType": "Promise<{\n isSuccess: boolean;\n products: IkasProduct[] | null;\n}>",
|
|
12610
|
-
"
|
|
12611
|
-
"
|
|
12747
|
+
"example": "```tsx\nimport { baseStore, bs_searchProductsById, cartStore, IkasStorefrontConfig } from \"@ikas/bp-storefront\";\n\n// Enforce per-cart quantity limits on cart lines:\nconst productIds = [\n ...new Set(\n (cartStore.cart?.orderLineItems ?? [])\n .map(item => item.variant.productId)\n .filter((id): id is string => !!id)\n ),\n];\nconst { products } = await bs_searchProductsById(baseStore, { productIds });\nconst maxByProductId = new Map<string, number | null>();\nfor (const p of products ?? []) {\n const channel = p.salesChannels?.find(sc => sc.id === IkasStorefrontConfig.salesChannelId);\n maxByProductId.set(p.id, channel?.maxQuantityPerCart ?? null);\n}\n```",
|
|
12748
|
+
"categories": [
|
|
12749
|
+
"Product",
|
|
12750
|
+
"Cart",
|
|
12751
|
+
"Search"
|
|
12752
|
+
],
|
|
12753
|
+
"related": [
|
|
12754
|
+
"bs_searchProductById",
|
|
12755
|
+
"changeItemQuantity"
|
|
12756
|
+
],
|
|
12612
12757
|
"isAsync": true,
|
|
12613
12758
|
"isClass": false,
|
|
12614
12759
|
"parameterTypes": [
|
|
@@ -12646,7 +12791,7 @@
|
|
|
12646
12791
|
"name": "addItemToCart",
|
|
12647
12792
|
"displayName": "addVariantToCart",
|
|
12648
12793
|
"signature": "async function addItemToCart(variant: IkasProductVariant, product: IkasProduct, initialQuantity: number = 1, options?: AddItemOptions): Promise<IkasCartOperationResult>",
|
|
12649
|
-
"description": "Add a product variant to the shopping cart.",
|
|
12794
|
+
"description": "Add a product variant to the shopping cart.\n\nClamps the quantity to the sales channel's `minQuantityPerCart`/`maxQuantityPerCart` only\nwhen it creates a new cart line. When the variant already has a line in the cart, the add\nis delegated to `changeItemQuantity` (existing quantity + `initialQuantity`) with no\nclient-side clamp — a quantity past `maxQuantityPerCart` is then rejected by the API with\nthe `MAX_QUANTITY_PER_CART_LIMIT_REACHED` code in `result.response.errorCodes`, never as a\n`validationError`. See `changeItemQuantity` for the handling pattern.",
|
|
12650
12795
|
"params": [
|
|
12651
12796
|
{
|
|
12652
12797
|
"name": "variant",
|
|
@@ -12722,7 +12867,7 @@
|
|
|
12722
12867
|
"name": "changeItemQuantity",
|
|
12723
12868
|
"displayName": "changeQuantityOnCart",
|
|
12724
12869
|
"signature": "async function changeItemQuantity(item: IkasOrderLineItem, quantity: number, offers?: IkasProductOffer[], product?: IkasProduct): Promise<IkasCartOperationResult>",
|
|
12725
|
-
"description": "Change the quantity of an item in the cart.\nUse quantity=0 to remove the item.",
|
|
12870
|
+
"description": "Change the quantity of an item in the cart.\nUse quantity=0 to remove the item.\n\nPerforms no client-side clamping or validation: a quantity above the sales channel's\n`maxQuantityPerCart` is rejected by the API with the `MAX_QUANTITY_PER_CART_LIMIT_REACHED`\ncode in `result.response.errorCodes` (never as a `validationError`). Prevent violations in\nthe stepper and treat the error code as the fallback.",
|
|
12726
12871
|
"params": [
|
|
12727
12872
|
{
|
|
12728
12873
|
"name": "item",
|
|
@@ -12743,7 +12888,7 @@
|
|
|
12743
12888
|
],
|
|
12744
12889
|
"returns": "Result with success flag",
|
|
12745
12890
|
"returnType": "Promise<IkasCartOperationResult>",
|
|
12746
|
-
"example": "```typescript\nimport { cartStore, changeItemQuantity } from \"@ikas/bp-storefront\";\n\n// Increment quantity\nasync function handleIncrement(itemId: string) {\n const item = cartStore.cart?.orderLineItems.find(i => i.id === itemId);\n if (item) {\n const result = await changeItemQuantity(item, item.quantity + 1);\n if (!result.success) {\n showToast(\"Failed to update quantity\");\n }\n }\n}\n\n// Decrement quantity\nasync function handleDecrement(itemId: string) {\n const item = cartStore.cart?.orderLineItems.find(i => i.id === itemId);\n if (item && item.quantity > 1) {\n await changeItemQuantity(item, item.quantity - 1);\n }\n}\n```",
|
|
12891
|
+
"example": "```typescript\nimport { APIErrorCode, cartStore, changeItemQuantity } from \"@ikas/bp-storefront\";\n\n// Increment quantity\nasync function handleIncrement(itemId: string) {\n const item = cartStore.cart?.orderLineItems.find(i => i.id === itemId);\n if (item) {\n const result = await changeItemQuantity(item, item.quantity + 1);\n if (!result.success) {\n const limitHit = result.response?.errorCodes?.includes(\n APIErrorCode.MAX_QUANTITY_PER_CART_LIMIT_REACHED\n );\n showToast(limitHit ? \"Per-cart quantity limit reached\" : \"Failed to update quantity\");\n }\n }\n}\n\n// Decrement quantity\nasync function handleDecrement(itemId: string) {\n const item = cartStore.cart?.orderLineItems.find(i => i.id === itemId);\n if (item && item.quantity > 1) {\n await changeItemQuantity(item, item.quantity - 1);\n }\n}\n```",
|
|
12747
12892
|
"categories": [
|
|
12748
12893
|
"Cart"
|
|
12749
12894
|
],
|
|
@@ -13052,6 +13197,37 @@
|
|
|
13052
13197
|
"IkasCartOperationResult"
|
|
13053
13198
|
]
|
|
13054
13199
|
},
|
|
13200
|
+
{
|
|
13201
|
+
"name": "removeGiftCardLine",
|
|
13202
|
+
"signature": "async function removeGiftCardLine(cart: IkasCart, giftCardId?: string | null): Promise<IkasCartOperationResult>",
|
|
13203
|
+
"description": "Remove a gift card (or store credit) line from the cart.\n\nGift cards are applied through `saveCouponCode` with the gift card code, and the applied\ncards are listed on `cart.giftCardLines`. Pass the `giftCardId` of the line to remove; when\nomitted, every gift card line is removed from the cart.",
|
|
13204
|
+
"params": [
|
|
13205
|
+
{
|
|
13206
|
+
"name": "cart",
|
|
13207
|
+
"description": "- The cart object"
|
|
13208
|
+
},
|
|
13209
|
+
{
|
|
13210
|
+
"name": "giftCardId",
|
|
13211
|
+
"description": "- The gift card to remove, or null/undefined to remove all of them"
|
|
13212
|
+
}
|
|
13213
|
+
],
|
|
13214
|
+
"returns": "Result with success flag",
|
|
13215
|
+
"returnType": "Promise<IkasCartOperationResult>",
|
|
13216
|
+
"example": "```typescript\nimport { cartStore, removeGiftCardLine } from \"@ikas/bp-storefront\";\n\nasync function handleRemoveGiftCard(giftCardId: string) {\n if (!cartStore.cart) return;\n\n const result = await removeGiftCardLine(cartStore.cart, giftCardId);\n if (result.success) {\n showToast(\"Gift card removed\");\n }\n}\n```",
|
|
13217
|
+
"categories": [
|
|
13218
|
+
"Cart"
|
|
13219
|
+
],
|
|
13220
|
+
"related": [
|
|
13221
|
+
"saveCouponCode",
|
|
13222
|
+
"getIkasOrderGiftCardTotalPrice"
|
|
13223
|
+
],
|
|
13224
|
+
"isAsync": true,
|
|
13225
|
+
"isClass": false,
|
|
13226
|
+
"parameterTypes": [
|
|
13227
|
+
"IkasCart",
|
|
13228
|
+
"IkasCartOperationResult"
|
|
13229
|
+
]
|
|
13230
|
+
},
|
|
13055
13231
|
{
|
|
13056
13232
|
"name": "getCart",
|
|
13057
13233
|
"signature": "async function getCart(): Promise<void>",
|
|
@@ -13952,7 +14128,8 @@
|
|
|
13952
14128
|
],
|
|
13953
14129
|
"related": [
|
|
13954
14130
|
"hasCustomer",
|
|
13955
|
-
"logout"
|
|
14131
|
+
"logout",
|
|
14132
|
+
"getDeactivateCustomerForm"
|
|
13956
14133
|
],
|
|
13957
14134
|
"isAsync": true,
|
|
13958
14135
|
"isClass": false,
|
|
@@ -14523,6 +14700,58 @@
|
|
|
14523
14700
|
"IkasCustomerStore"
|
|
14524
14701
|
]
|
|
14525
14702
|
},
|
|
14703
|
+
{
|
|
14704
|
+
"name": "getDeactivateCustomerForm",
|
|
14705
|
+
"signature": "function getDeactivateCustomerForm(customerStore: IkasCustomerStore): DeactivateCustomerForm",
|
|
14706
|
+
"description": "Get or initialize the deactivate customer form with validation for deleting the current customer's account.",
|
|
14707
|
+
"params": [
|
|
14708
|
+
{
|
|
14709
|
+
"name": "customerStore",
|
|
14710
|
+
"description": "- The customer store instance"
|
|
14711
|
+
}
|
|
14712
|
+
],
|
|
14713
|
+
"returns": "The deactivate customer form object with validated fields",
|
|
14714
|
+
"returnType": "DeactivateCustomerForm",
|
|
14715
|
+
"example": "```typescript\nimport {\n customerStore,\n getDeactivateCustomerForm,\n setDeactivateCustomerFormPassword,\n submitDeactivateCustomerForm,\n logout,\n} from \"@ikas/bp-storefront\";\n\nfunction DeleteAccountPage() {\n const form = getDeactivateCustomerForm(customerStore);\n\n const handleSubmit = async () => {\n const isSuccess = await submitDeactivateCustomerForm(form);\n if (isSuccess) {\n await logout(customerStore);\n Router.navigateToPage(\"INDEX\");\n }\n };\n\n return (\n <form>\n <input\n type=\"password\"\n value={form.password.value}\n onChange={e => setDeactivateCustomerFormPassword(form, e.target.value)}\n />\n <button onClick={handleSubmit}>Delete Account</button>\n </form>\n );\n}\n```",
|
|
14716
|
+
"categories": [
|
|
14717
|
+
"Customer",
|
|
14718
|
+
"Account"
|
|
14719
|
+
],
|
|
14720
|
+
"related": [
|
|
14721
|
+
"clearDeactivateCustomerForm",
|
|
14722
|
+
"deactivateCustomer"
|
|
14723
|
+
],
|
|
14724
|
+
"isAsync": false,
|
|
14725
|
+
"isClass": false,
|
|
14726
|
+
"parameterTypes": [
|
|
14727
|
+
"IkasCustomerStore"
|
|
14728
|
+
]
|
|
14729
|
+
},
|
|
14730
|
+
{
|
|
14731
|
+
"name": "clearDeactivateCustomerForm",
|
|
14732
|
+
"signature": "function clearDeactivateCustomerForm(customerStore: IkasCustomerStore): void",
|
|
14733
|
+
"description": "Clear the cached deactivate customer form, forcing a fresh form on next retrieval.",
|
|
14734
|
+
"params": [
|
|
14735
|
+
{
|
|
14736
|
+
"name": "customerStore",
|
|
14737
|
+
"description": "- The customer store instance"
|
|
14738
|
+
}
|
|
14739
|
+
],
|
|
14740
|
+
"returnType": "void",
|
|
14741
|
+
"example": "```typescript\nimport { customerStore, clearDeactivateCustomerForm } from \"@ikas/bp-storefront\";\n\nfunction handleDeactivateCustomerReset() {\n clearDeactivateCustomerForm(customerStore);\n}\n```",
|
|
14742
|
+
"categories": [
|
|
14743
|
+
"Customer",
|
|
14744
|
+
"Account"
|
|
14745
|
+
],
|
|
14746
|
+
"related": [
|
|
14747
|
+
"getDeactivateCustomerForm"
|
|
14748
|
+
],
|
|
14749
|
+
"isAsync": false,
|
|
14750
|
+
"isClass": false,
|
|
14751
|
+
"parameterTypes": [
|
|
14752
|
+
"IkasCustomerStore"
|
|
14753
|
+
]
|
|
14754
|
+
},
|
|
14526
14755
|
{
|
|
14527
14756
|
"name": "getForgotPasswordForm",
|
|
14528
14757
|
"signature": "function getForgotPasswordForm(customerStore: IkasCustomerStore): ForgotPasswordForm",
|
|
@@ -15148,6 +15377,29 @@
|
|
|
15148
15377
|
"isClass": true,
|
|
15149
15378
|
"className": "Router"
|
|
15150
15379
|
},
|
|
15380
|
+
{
|
|
15381
|
+
"name": "withRoutePrefix",
|
|
15382
|
+
"signature": "function withRoutePrefix(path: string): string",
|
|
15383
|
+
"description": "Put the visitor's storefront routing in front of a path you wrote yourself.\n\nEntity links (`getProductHref`, `getIkasOrderHref`, …) and LINK props already carry the prefix.\nA literal path in your own markup does not: `href=\"/cart\"` sends a visitor browsing `/en` to the\ndefault language. Wrap it, and a store with no extra routings gets the path back unchanged.\n\nIdempotent — a path that already starts with a supported routing segment is returned as-is.\nAnything that is not a path on this storefront — an absolute URL, `mailto:`, `tel:` — is returned\nuntouched, so a merchant-authored prop can be wrapped without checking it first.",
|
|
15384
|
+
"params": [
|
|
15385
|
+
{
|
|
15386
|
+
"name": "path",
|
|
15387
|
+
"description": "- A path on this storefront, starting with `/`"
|
|
15388
|
+
}
|
|
15389
|
+
],
|
|
15390
|
+
"returns": "The path under the current routing (e.g. `/cart` → `/en/cart`)",
|
|
15391
|
+
"returnType": "string",
|
|
15392
|
+
"example": "```tsx\nimport { Router, withRoutePrefix } from \"@ikas/bp-storefront\";\n\n// Correct href for crawlers, middle-click and open-in-new-tab...\n<a href={withRoutePrefix(\"/cart\")} onClick={e => {\n e.preventDefault();\n Router.navigateToPage(\"CART\"); // ...and this prefixes on its own.\n}}>Cart</a>\n```",
|
|
15393
|
+
"categories": [
|
|
15394
|
+
"Navigation"
|
|
15395
|
+
],
|
|
15396
|
+
"related": [
|
|
15397
|
+
"navigate",
|
|
15398
|
+
"navigateToPage"
|
|
15399
|
+
],
|
|
15400
|
+
"isAsync": false,
|
|
15401
|
+
"isClass": false
|
|
15402
|
+
},
|
|
15151
15403
|
{
|
|
15152
15404
|
"name": "registerThemeSettingValues",
|
|
15153
15405
|
"signature": "function registerThemeSettingValues(values: Record<string, any> | null): void",
|
|
@@ -15273,6 +15525,38 @@
|
|
|
15273
15525
|
"IkasComponentRendererProps"
|
|
15274
15526
|
]
|
|
15275
15527
|
},
|
|
15528
|
+
{
|
|
15529
|
+
"name": "formatCurrency",
|
|
15530
|
+
"signature": "function formatCurrency(price: number, currencyCode: string, currencySymbol: string | null): string",
|
|
15531
|
+
"description": "Format a free-standing amount with the merchant's currency format settings. Use this for\namounts that are NOT tied to a model (remaining amount to free shipping, gift wrap threshold,\nbulk discount limits, cart limit warnings). For model-bound prices, prefer the\n`get*FormattedPrice` helpers — they call this function internally.\n\nApplies the merchant's `currencyFormats` entry for the given currency code (symbol,\nsymbolPosition, thousandSeparator, decimalSeparator, omitZeroDecimal). Behavior details:\nalways two decimal places, and a space between the symbol and the number. `omitZeroDecimal`\ndrops the fraction only when it is exactly `00`.\n\nDo NOT use `Intl.NumberFormat` for currency — it falls back to the browser locale and\nproduces a format that conflicts with platform-formatted prices on the same screen.",
|
|
15532
|
+
"params": [
|
|
15533
|
+
{
|
|
15534
|
+
"name": "price",
|
|
15535
|
+
"description": "- The amount to format"
|
|
15536
|
+
},
|
|
15537
|
+
{
|
|
15538
|
+
"name": "currencyCode",
|
|
15539
|
+
"description": "- Currency code used to look up the merchant format settings (e.g. \"TRY\", \"USD\")"
|
|
15540
|
+
},
|
|
15541
|
+
{
|
|
15542
|
+
"name": "currencySymbol",
|
|
15543
|
+
"description": "- Fallback symbol used when the merchant has no format entry for the code.\nAlways pass the symbol from the model you took the amount from (e.g. `cart.currencySymbol`) —\npassing `null` can render the amount with no symbol at all."
|
|
15544
|
+
}
|
|
15545
|
+
],
|
|
15546
|
+
"returns": "The amount formatted with the merchant's currency format (e.g. \"₺ 1,950.00\")",
|
|
15547
|
+
"returnType": "string",
|
|
15548
|
+
"example": "```typescript\nimport { cartStore, formatCurrency } from \"@ikas/bp-storefront\";\n\nfunction FreeShippingBar({ threshold }: { threshold: number }) {\n const cart = cartStore.cart;\n if (!cart) return null;\n\n const remaining = threshold - cart.totalFinalPrice;\n if (remaining <= 0) return <span>Free shipping unlocked!</span>;\n\n return <span>Add {formatCurrency(remaining, cart.currencyCode, cart.currencySymbol)} more for free shipping</span>;\n}\n```",
|
|
15549
|
+
"categories": [
|
|
15550
|
+
"Pricing"
|
|
15551
|
+
],
|
|
15552
|
+
"related": [
|
|
15553
|
+
"getProductVariantFormattedFinalPrice",
|
|
15554
|
+
"getOrderLineItemFormattedFinalPrice",
|
|
15555
|
+
"getIkasOrderFormattedTotalFinalPrice"
|
|
15556
|
+
],
|
|
15557
|
+
"isAsync": false,
|
|
15558
|
+
"isClass": false
|
|
15559
|
+
},
|
|
15276
15560
|
{
|
|
15277
15561
|
"name": "httpRequest",
|
|
15278
15562
|
"signature": "async function httpRequest(url: string, method: HttpMethod, body?: Record<string, any>, headers?: Record<string, string>): Promise<FetchResponse>",
|