@ikas/storefront-model-functions 5.0.0-beta.8 → 5.0.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/build/functions/customer/address/index.js +1 -1
- package/build/functions/customer/index.d.ts +5 -1
- package/build/functions/customer/index.js +1 -1
- package/build/functions/image/index.js +1 -1
- package/build/functions/order/address/index.js +1 -1
- package/build/functions/order/index.d.ts +1 -0
- package/build/functions/order/index.js +1 -1
- package/build/functions/product/filter/index.d.ts +1 -0
- package/build/functions/product/filter/index.js +1 -1
- package/build/functions/product/index.js +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
import{IkasCheckoutRequirement as e}from"@ikas/storefront-models";import{validatePhoneNumber as t}from"../../../utils/helper.js";function n(e){var t=[];return e.addressLine1&&t.push(e.addressLine1),e.addressLine2&&t.push(e.addressLine2),e.postalCode&&t.push(e.postalCode),e.district&&e.district.name&&t.push(e.district.name),e.city&&e.city.name&&t.push(e.city.name),e.state&&e.state.name&&"Default"!==e.state.name&&t.push(e.state.name),e.country&&e.country.name&&t.push(e.country.name),t.join(", ")}function i(n,i,r){var s,o,a,
|
|
1
|
+
import{IkasCheckoutRequirement as e}from"@ikas/storefront-models";import{validatePhoneNumber as t}from"../../../utils/helper.js";function n(e){var t=[];return e.addressLine1&&t.push(e.addressLine1),e.addressLine2&&t.push(e.addressLine2),e.postalCode&&t.push(e.postalCode),e.region&&e.region.name&&t.push(e.region.name),e.district&&e.district.name&&t.push(e.district.name),e.city&&e.city.name&&t.push(e.city.name),e.state&&e.state.name&&"Default"!==e.state.name&&t.push(e.state.name),e.country&&e.country.name&&t.push(e.country.name),t.join(", ")}function i(n,i,r){var s,o,a,u=!!n.phone&&n.phone.length>=10&&t(n.phone);return{firstName:!!n.firstName,lastName:!!n.lastName,addressLine1:!!n.addressLine1,country:!!(null===(s=n.country)||void 0===s?void 0:s.name),state:!!n.state,city:!!(null===(o=n.city)||void 0===o?void 0:o.name),district:!r||!!(null===(a=n.district)||void 0===a?void 0:a.id),phone:!(i.phoneRequirement===e.MANDATORY||i.phoneRequirement===e.OPTIONAL&&n.phone)||u,postalCode:i.postalCodeRequirement!==e.MANDATORY||!!n.postalCode,identityNumber:i.identityNumberRequirement!==e.MANDATORY||!!n.identityNumber,title:!!n.title}}function r(e,t,n){var r=i(e,t,n);return Object.values(r).every((function(e){return e}))}export{n as getAddressText,i as getValidationResult,r as isValidAddress};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IkasCustomer } from "@ikas/storefront-models";
|
|
1
|
+
import { IkasCustomer, IkasCustomerEmailSubscriptionStatus } from "@ikas/storefront-models";
|
|
2
2
|
export declare function isSubscribed(customer: IkasCustomer): boolean;
|
|
3
3
|
export declare function getBasicInfo(customer: IkasCustomer): {
|
|
4
4
|
id: string;
|
|
@@ -6,4 +6,8 @@ export declare function getBasicInfo(customer: IkasCustomer): {
|
|
|
6
6
|
lastName: string | null;
|
|
7
7
|
email: string | null;
|
|
8
8
|
phone: string | null;
|
|
9
|
+
isEmailVerified: boolean | null;
|
|
10
|
+
isPhoneVerified: boolean | null;
|
|
11
|
+
orderCount: number | null;
|
|
12
|
+
subscriptionStatus: IkasCustomerEmailSubscriptionStatus | null;
|
|
9
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{IkasCustomerEmailSubscriptionStatus as
|
|
1
|
+
import{IkasCustomerEmailSubscriptionStatus as i}from"@ikas/storefront-models";function t(t){return t.subscriptionStatus===i.SUBSCRIBED||t.subscriptionStatus===i.PENDING_CONFIRMATION}function e(i){return{id:i.id,firstName:i.firstName,lastName:i.lastName,email:i.email,phone:i.phone,isEmailVerified:i.isEmailVerified,isPhoneVerified:i.isPhoneVerified,orderCount:i.orderCount,subscriptionStatus:i.subscriptionStatus}}export{e as getBasicInfo,t as isSubscribed};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{IkasStorefrontConfig as
|
|
1
|
+
import{IkasStorefrontConfig as c}from"@ikas/storefront-config";function n(c){return i(c,1080)}function a(c){return i(c,180)}function i(n,a){var i,o=c.getCdnUrl();if(n.id.includes("/"))return n.isVideo?"".concat(o,"videos/").concat(n.id,"/original.mp4"):n.fileName?"".concat(o,"images/").concat(n.id,"/").concat(a,"/").concat(n.fileName,".webp"):"".concat(o,"images/").concat(n.id,"/image_").concat(a,".webp");var t=null===(i=c.getMerchantSettings())||void 0===i?void 0:i.merchantId;return n.isVideo?"".concat(o,"videos/").concat(t,"/").concat(n.id,"/original.mp4"):n.fileName?"".concat(o,"images/").concat(t,"/").concat(n.id,"/").concat(a,"/").concat(n.fileName,".webp"):"".concat(o,"images/").concat(t,"/").concat(n.id,"/image_").concat(a,".webp")}export{n as getDefaultSrc,i as getSrc,a as getThumbnailSrc};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{IkasCheckoutRequirement as e}from"@ikas/storefront-models";import{validatePhoneNumber as t}from"../../../utils/helper.js";function n(){return{addressLine1:"",addressLine2:null,company:null,firstName:"",id:null,identityNumber:null,isDefault:!1,lastName:"",phone:null,postalCode:null,taxNumber:null,taxOffice:null,country:null,state:null,city:null,district:null}}function i(e){var t=[];return e.addressLine1&&t.push(e.addressLine1),e.addressLine2&&t.push(e.addressLine2),e.postalCode&&t.push(e.postalCode),e.district&&e.district.name&&t.push(e.district.name),e.city&&e.city.name&&t.push(e.city.name),e.state&&e.state.name&&"Default"!==e.state.name&&t.push(e.state.name),e.country&&e.country.name&&t.push(e.country.name),t.join(", ")}function
|
|
1
|
+
import{IkasCheckoutRequirement as e}from"@ikas/storefront-models";import{validatePhoneNumber as t}from"../../../utils/helper.js";function n(){return{addressLine1:"",addressLine2:null,company:null,firstName:"",id:null,identityNumber:null,isDefault:!1,lastName:"",phone:null,postalCode:null,taxNumber:null,taxOffice:null,country:null,state:null,city:null,district:null,region:null}}function i(e){var t=[];return e.addressLine1&&t.push(e.addressLine1),e.addressLine2&&t.push(e.addressLine2),e.postalCode&&t.push(e.postalCode),e.region&&e.region.name&&t.push(e.region.name),e.district&&e.district.name&&t.push(e.district.name),e.city&&e.city.name&&t.push(e.city.name),e.state&&e.state.name&&"Default"!==e.state.name&&t.push(e.state.name),e.country&&e.country.name&&t.push(e.country.name),t.join(", ")}function r(n,i,r){var s,a,u,o=!!n.phone&&n.phone.length>=10&&t(n.phone);return{firstName:!!n.firstName,lastName:!!n.lastName,addressLine1:!!n.addressLine1,country:!!(null===(s=n.country)||void 0===s?void 0:s.name),state:!!n.state,city:!!(null===(a=n.city)||void 0===a?void 0:a.name),district:!r||!!(null===(u=n.district)||void 0===u?void 0:u.name),phone:!(i.phoneRequirement===e.MANDATORY||i.phoneRequirement===e.OPTIONAL&&n.phone)||o,postalCode:i.postalCodeRequirement!==e.MANDATORY||!!n.postalCode,identityNumber:i.identityNumberRequirement!==e.MANDATORY||!!n.identityNumber}}function s(e,t,n){var i=r(e,t,n);return Object.values(i).every((function(e){return e}))}export{n as createOrderAddress,i as getAddressText,r as getValidationResult,s as isValidAddress};
|
|
@@ -11,3 +11,4 @@ export declare function getCustomerFullName(order: IkasOrder): string;
|
|
|
11
11
|
export declare function getFormattedDate(order: IkasOrder): string;
|
|
12
12
|
export declare function getCouponAdjustment(order: IkasOrder): import("@ikas/storefront-models").IkasOrderAdjustment | undefined;
|
|
13
13
|
export declare function getNonCouponAdjustments(order: IkasOrder): import("@ikas/storefront-models").IkasOrderAdjustment[] | undefined;
|
|
14
|
+
export declare function getOrderProductFiles(order: IkasOrder): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{IkasOrderLineItemStatus as
|
|
1
|
+
import{IkasOrderLineItemStatus as r,IkasOrderPackageFullfillStatus as t}from"@ikas/storefront-models";import{validateEmail as e,formatDate as n}from"../../utils/helper.js";function u(e){var n,u=i(e),o=null===(n=e.orderPackages)||void 0===n?void 0:n.filter((function(r){return!r.deleted&&![t.REFUNDED,t.REFUND_REQUESTED,t.REFUND_REQUEST_ACCEPTED,t.REFUND_REJECTED].includes(r.orderPackageFulfillStatus)})),a=e.orderLineItems.filter((function(t){return!t.deleted&&(t.status===r.CANCELLED||t.status===r.CANCEL_REJECTED||t.status===r.CANCEL_REQUESTED)})),c=d(e),s=[];return u.length&&s.push({id:e.id+"-u",createdAt:Date.now(),updatedAt:Date.now(),errorMessage:null,note:null,orderLineItemIds:u.map((function(r){return r.id})),orderPackageFulfillStatus:t.UNFULFILLED,orderPackageNumber:e.orderNumber?e.orderNumber+"-u":"u",stockLocationId:u[0].stockLocationId||"",trackingInfo:null}),o&&s.push.apply(s,o),a.length&&s.push({id:e.id+"-c",createdAt:Date.now(),updatedAt:Date.now(),errorMessage:null,note:null,orderLineItemIds:a.map((function(r){return r.id})),orderPackageFulfillStatus:t.CANCELLED,orderPackageNumber:e.orderNumber?e.orderNumber+"-c":"c",stockLocationId:a[0].stockLocationId||"",trackingInfo:null}),c.length&&s.push({id:e.id+"-r",createdAt:Date.now(),updatedAt:Date.now(),errorMessage:null,note:null,orderLineItemIds:c.map((function(r){return r.id})),orderPackageFulfillStatus:t.REFUNDED,orderPackageNumber:e.orderNumber?e.orderNumber+"-r":"r",stockLocationId:c[0].stockLocationId||"",trackingInfo:null}),s}function o(t,e){if(e&&!e.isActiveRefundSection)return[];var n=function(r){var t=r.orderedAt,e=Date.now();return Math.abs(e-t)/864e5}(t);return t.orderLineItems.filter((function(t){return[r.FULFILLED,r.UNFULFILLED,r.DELIVERED].includes(t.status)&&(!e.orderRefundDayLimit||e.orderRefundDayLimit>=n)}))}function i(t){return t.orderLineItems.filter((function(t){return t.status===r.UNFULFILLED}))}function d(t){return t.orderLineItems.filter((function(t){return t.status===r.REFUNDED||t.status===r.REFUND_REQUESTED||t.status===r.REFUND_REQUEST_ACCEPTED||t.status===r.REFUND_REJECTED}))}function a(r){var t;return(null===(t=r.taxLines)||void 0===t?void 0:t.reduce((function(r,t){return r+t.price}),0))||0}function c(r){var t;return(null===(t=r.shippingLines)||void 0===t?void 0:t.reduce((function(r,t){return r+t.finalPrice}),0))||0}function s(r){var t;return!!(null===(t=r.customer)||void 0===t?void 0:t.id)&&!r.customer.isGuestCheckout}function l(r){var t;return!!(null===(t=r.customer)||void 0===t?void 0:t.email)&&e(r.customer.email)}function f(r){var t,e;return"".concat((null===(t=r.customer)||void 0===t?void 0:t.firstName)||""," ").concat((null===(e=r.customer)||void 0===e?void 0:e.lastName)||"")}function E(r){var t=new Date;return t.setTime(r.updatedAt),n(t)}function m(r){var t;return null===(t=r.orderAdjustments)||void 0===t?void 0:t.find((function(r){return!!r.couponId}))}function D(r){var t;return null===(t=r.orderAdjustments)||void 0===t?void 0:t.filter((function(r){return!r.couponId}))}function L(t){return t.orderLineItems.filter((function(t){return!!t.variant.fileId&&t.status!==r.REFUNDED})).map((function(r){return r.variant.fileId}))}export{m as getCouponAdjustment,f as getCustomerFullName,u as getDisplayedPackages,E as getFormattedDate,D as getNonCouponAdjustments,L as getOrderProductFiles,o as getRefundableItems,d as getRefundedItems,c as getShippingTotal,a as getTotalTax,i as getUnfullfilledItems,s as hasCustomer,l as hasValidCustomerEmail};
|
|
@@ -12,6 +12,7 @@ export declare function toInput(filter: IkasProductFilter): IkasSearchInputFilte
|
|
|
12
12
|
export declare function applyQueryParam(filter: IkasProductFilter, value: string): void;
|
|
13
13
|
export declare function rangeToId(range: IkasFilterRangeValue): string;
|
|
14
14
|
export declare function parseRangeStr(rangeStr: string): IkasFilterRangeValue;
|
|
15
|
+
export declare function getIkasFilterHref(value: IkasApplicableProductFilterValue): string;
|
|
15
16
|
export declare type IkasSearchInputFilterListInput = {
|
|
16
17
|
displayType?: IkasProductFilterDisplayType | null;
|
|
17
18
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{IkasProductFilterDisplayType as e,IkasProductFilterType as n,IkasProductFilterSortType as t}from"@ikas/storefront-models";import i from"lodash/sortBy";import r from"lodash/cloneDeep";function
|
|
1
|
+
import{IkasProductFilterDisplayType as e,IkasProductFilterType as n,IkasProductFilterSortType as t}from"@ikas/storefront-models";import i from"lodash/sortBy";import r from"lodash/cloneDeep";function u(n){return[e.NUMBER_RANGE_LIST,e.NUMBER_RANGE].includes(n.displayType)}function o(e){return e.type===n.STOCK_STATUS}function l(e){var n;return e.numberRange?[E(e.numberRange)]:e.numberRangeListOptions?e.numberRangeListOptions.filter((function(e){return e.isSelected})).map((function(e){return E(e)})):(null===(n=e.values)||void 0===n?void 0:n.filter((function(e){return e.isSelected})).map((function(e){return e.id})))||[]}function s(e){var n;return e.numberRange?[E(e.numberRange)]:e.numberRangeListOptions?e.numberRangeListOptions.filter((function(e){return e.isSelected})).map((function(e){return E(e)})):(null===(n=e.values)||void 0===n?void 0:n.filter((function(e){return e.isSelected})).map((function(e){return e.key})))||[]}function c(e){var n,r,u,o=(null===(n=e.settings)||void 0===n?void 0:n.sortType)||t.ALPHABETICAL_ASC,l=[t.ALPHABETICAL_DESC,t.PRODUCT_COUNT_DESC].includes(o),s=[t.ALPHABETICAL_ASC,t.ALPHABETICAL_DESC].includes(o),c=o===t.CUSTOM_SORT,a=null===(r=e.values)||void 0===r?void 0:r.filter((function(e){return 0!==e.resultCount||e.isSelected}));if(a=i(a,s?"key":"resultCount"),l&&(a=null==a?void 0:a.reverse()),c){var d=(null===(u=e.settings)||void 0===u?void 0:u.customSortedValues)||[];a=a.sort((function(e,n){return d.indexOf(e.id)-d.indexOf(n.id)}))}return a}function a(e,n){var t;if(u(e))throw new Error("onFilterValueClick cannot be used with NUMBER_RANGE | NUMBER_RANGE_LIST types!");n.isSelected=!n.isSelected,!e.isMultiSelect&&n.isSelected&&(null===(t=e.values)||void 0===t||t.forEach((function(e){e.id!==n.id&&(e.isSelected=!1)})))}function d(n,t){var i;if(n.displayType!==e.NUMBER_RANGE_LIST)throw new Error("onNumberRangeClick can only be used with NUMBER_RANGE filters!");t.isSelected=!t.isSelected,!n.isMultiSelect&&t.isSelected&&(null===(i=n.numberRangeListOptions)||void 0===i||i.forEach((function(e){e.key!==t.key&&(e.isSelected=!1)})))}function f(n,t){var i;if(n.displayType!==e.NUMBER_RANGE)throw new Error("onNumberRangeChange can only be used with NUMBER_RANGE filters!");if(t){var u=r(t);u.from<n.numberRangeLimit.from&&(u.from=n.numberRange.from),u.to&&(null===(i=n.numberRangeLimit)||void 0===i?void 0:i.to)&&u.to>n.numberRangeLimit.to&&(u.to=n.numberRangeLimit.to),n.numberRange=u}else n.numberRange=null}function m(e){var n,t;e.numberRange=null,null===(n=e.numberRangeListOptions)||void 0===n||n.forEach((function(e){return e.isSelected=!1})),null===(t=e.values)||void 0===t||t.forEach((function(e){return e.isSelected=!1}))}function R(e){var n;return{id:e.key,type:e.type,valueList:l(e),useAndFilter:null===(n=e.settings)||void 0===n?void 0:n.useAndFilter}}function v(n,t){var i,r,u=t.split(",");n.displayType===e.NUMBER_RANGE?n.numberRange=p(t):n.displayType===e.NUMBER_RANGE_LIST?null===(i=n.numberRangeListOptions)||void 0===i||i.forEach((function(e){u.includes(e.key)&&(e.isSelected=!0)})):null===(r=n.values)||void 0===r||r.forEach((function(e){u.includes(e.key)&&0!==e.resultCount&&(e.isSelected=!0)}))}function E(e){return"".concat(e.from,":").concat(e.to||"")}function p(e){try{var n=e.split(":").map((function(e){return parseInt(e)}));return{from:isNaN(n[0])?0:n[0],to:isNaN(n[1])?void 0:n[1]}}catch(e){return console.log(e),{from:0,to:0}}}function S(e){return e.slug?"/".concat(e.slug):""}export{v as applyQueryParam,m as clear,c as getDisplayedValues,S as getIkasFilterHref,s as getKeyList,l as getValueList,u as isCustomValueFilter,o as isStockFilter,a as onFilterValueClick,f as onNumberRangeChange,d as onNumberRangeClick,p as parseRangeStr,E as rangeToId,R as toInput};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__spreadArray as n}from'./../../ext/tslib/tslib.es6.js';import{getIkasVariantTypeSlug as t}from"../variant-type/index.js";import{getIkasVariantValueSlug as r}from"../variant-type/variant-value/index.js";import{hasValidValues as i}from"./option-set/index.js";import{hasStock as a}from"./variant/index.js";function e(n){return
|
|
1
|
+
import{__spreadArray as n}from'./../../ext/tslib/tslib.es6.js';import{getIkasVariantTypeSlug as t}from"../variant-type/index.js";import{getIkasVariantValueSlug as r}from"../variant-type/variant-value/index.js";import{hasValidValues as i}from"./option-set/index.js";import{hasStock as a}from"./variant/index.js";function e(n){return n.productGroup?n.variants.length>1:!!n.variantTypes.length}function u(n){if(n.groupVariantsByVariantTypeId){var t=n.variants[0].variantValues.find((function(t){return t.variantTypeId==n.groupVariantsByVariantTypeId}));if(t)return n.variants.filter((function(n){return n.variantValues.find((function(n){return n.id==t.id}))})).some((function(n){return n.stock>0||n.sellIfOutOfStock}))}return n.variants.some((function(n){return n.stock>0||n.sellIfOutOfStock}))}function o(n){return n.length?n[0]:void 0}function s(n){if(e(n))return n.variantTypes[0].variantType}function c(n,i){var a=n.metaData;if(!(null==a?void 0:a.slug))return"";var e=n.variantTypes.map((function(n){var a=n.variantType,e=a.values.find((function(n){return i.some((function(t){return t.id===n.id}))}));if(e)return"".concat(t(a),"=").concat(r(e))})).filter((function(n){return!!n})).join("&");return e?"/".concat(a.slug,"?").concat(e):"/".concat(a.slug)}function f(n){var t=n.metaData;return(null==t?void 0:t.slug)?"/".concat(t.slug):""}function v(t,r){var i=t.variantTypes.map((function(i,e){var u=i.variantType,o=[],s=e>0?t.variantTypes.slice(0,e):null,c=[];return s&&(c=r.filter((function(n){return s.some((function(t){return t.variantType.id===n.variantTypeId}))}))),u.values.forEach((function(i){var e=n(n([],c,!0),[i],!1),u=t.variants.find((function(n){return n.isActive&&e.every((function(t){return n.variantValues.some((function(n){return n.id===t.id}))}))})),s=t.variants.find((function(n){return n.isActive&&a(n)&&e.every((function(t){return n.variantValues.some((function(n){return n.id===t.id}))}))})),f=r.some((function(n){return n.id===i.id}));u&&o.push({variant:u,variantValue:i,hasStock:!!s,isSelected:f})})),{variantType:u,displayedVariantValues:o}}));return 1===i.length&&(i[0].displayedVariantValues=i[0].displayedVariantValues.filter((function(n){return n.variant.isActive}))),i}function l(n,t){return(!t||i(t))&&(a(n)||n.sellIfOutOfStock)}export{v as getDisplayedVariantTypes,s as getMainVariantType,o as getMainVariantValue,f as getProductHref,c as getSelectedVariantHref,u as hasStock,e as hasVariant,l as isAddToCartEnabled};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ikas/storefront-model-functions",
|
|
3
|
-
"version": "5.0.0
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Functions for ikas storefront models.",
|
|
5
5
|
"author": "ikas",
|
|
6
6
|
"license": "ISC",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"build": "rm -rf build && rollup -c"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@ikas/storefront-config": "^5.0.0
|
|
20
|
-
"@ikas/storefront-models": "^5.0.0
|
|
19
|
+
"@ikas/storefront-config": "^5.0.0",
|
|
20
|
+
"@ikas/storefront-models": "^5.0.0",
|
|
21
21
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
22
22
|
"@rollup/plugin-commonjs": "^22.0.0",
|
|
23
23
|
"rollup-plugin-rename-node-modules": "^1.2.0",
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
"rollup-plugin-typescript2": "^0.32.1",
|
|
29
29
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
30
30
|
"typescript": "^4.7.2",
|
|
31
|
-
"ttypescript": "^1.5.
|
|
31
|
+
"ttypescript": "^1.5.15",
|
|
32
32
|
"typescript-transform-paths": "^2.2.2",
|
|
33
33
|
"lodash": "^4.17.21"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"@ikas/storefront-config": "^5.0.0
|
|
37
|
-
"@ikas/storefront-models": "^5.0.0
|
|
36
|
+
"@ikas/storefront-config": "^5.0.0",
|
|
37
|
+
"@ikas/storefront-models": "^5.0.0",
|
|
38
38
|
"lodash": "^4.17.21"
|
|
39
39
|
}
|
|
40
40
|
}
|