npm-pkg-hook 1.12.7 → 1.12.9
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/.babelrc +0 -0
- package/.env +5 -0
- package/.github/pull_request_template.md +18 -0
- package/.github/workflows/pepeline.yaml +30 -0
- package/dist/index.js +47752 -10080
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +47068 -9612
- package/dist/index.mjs.map +1 -0
- package/eslint.config.mts +153 -0
- package/expire.json +1 -0
- package/jsconfig.json +28 -0
- package/package.json +24 -61
- package/script.txt +7 -0
- package/src/config/client/errors.ts +39 -0
- package/src/config/client/index.ts +1 -0
- package/src/config/content/en.json +5 -0
- package/src/config/content/es.json +5 -0
- package/src/config/content/index.ts +16 -0
- package/src/cookies/index.ts +3 -0
- package/src/hooks/addTenMinutes/index.ts +14 -0
- package/src/hooks/calculateLogLatHaversine/index.ts +41 -0
- package/src/hooks/completeSchedules/index.ts +22 -0
- package/src/hooks/convertToMilitaryTime/index.ts +18 -0
- package/src/hooks/generateStoreURL/index.ts +41 -0
- package/src/hooks/generateTemplate/index.ts +66 -0
- package/src/hooks/getCardType/index.ts +24 -0
- package/src/hooks/getCategoriesWithProduct/helpers/index.ts +7 -0
- package/src/hooks/getCategoriesWithProduct/index.ts +62 -0
- package/src/hooks/getGlobalSession/index.ts +69 -0
- package/src/hooks/getSession/index.ts +72 -0
- package/src/hooks/getTodayTimestamps/index.ts +70 -0
- package/src/hooks/getTotalHours/index.ts +76 -0
- package/src/hooks/handleLogin/index.ts +14 -0
- package/src/hooks/index.ts +153 -0
- package/src/hooks/isTokenExpired/index.ts +17 -0
- package/src/hooks/newMessageSubscription/index.ts +28 -0
- package/src/hooks/newStoreOrderSubscription/index.ts +26 -0
- package/src/hooks/statusOpenStores/helpers/index.ts +124 -0
- package/src/hooks/statusOpenStores/index.ts +221 -0
- package/src/hooks/updateExtProductFoodsOptional/index.ts +49 -0
- package/src/hooks/useAcumulateDate/index.ts +18 -0
- package/src/hooks/useAllStoresPendingToRegister/index.ts +37 -0
- package/src/hooks/useAmountInput/index.ts +127 -0
- package/src/hooks/useAnimationFrame/index.ts +45 -0
- package/src/hooks/useAnimationText/index.ts +31 -0
- package/src/hooks/useAsideCart/helpers/index.ts +22 -0
- package/src/hooks/useAsideCart/index.ts +217 -0
- package/src/hooks/useAsideCart/queries.ts +10 -0
- package/src/hooks/useBanner/index.ts +20 -0
- package/src/hooks/useCart/index.ts +2 -0
- package/src/hooks/useCart/queries.ts +174 -0
- package/src/hooks/useCart/useCart/helpers/index.ts +79 -0
- package/src/hooks/useCart/useCart/index.ts +424 -0
- package/src/hooks/useCart/useGetCart/index.ts +34 -0
- package/src/hooks/useCatWithProduct/index.ts +54 -0
- package/src/hooks/useCatWithProduct/queries.ts +200 -0
- package/src/hooks/useCatWithProduct/types/index.ts +104 -0
- package/src/hooks/useCatWithProductClient/index.ts +57 -0
- package/src/hooks/useCatWithProductClient/queries.ts +56 -0
- package/src/hooks/useCategoriesProduct/index.ts +14 -0
- package/src/hooks/useCategoriesProduct/queries.ts +16 -0
- package/src/hooks/useCategoryInStore/index.ts +167 -0
- package/src/hooks/useCategoryInStore/queries.ts +78 -0
- package/src/hooks/useCategoryStore/index.ts +8 -0
- package/src/hooks/useCategoryStore/queries.ts +16 -0
- package/src/hooks/useChartData/index.ts +171 -0
- package/src/hooks/useChartData/useChartData/index.ts +200 -0
- package/src/hooks/useChartData/useChartDataAllOrders/index.ts +94 -0
- package/src/hooks/useChatRoomSubscription/index.ts +28 -0
- package/src/hooks/useCheckbox/index.ts +115 -0
- package/src/hooks/useCities/index.ts +14 -0
- package/src/hooks/useCities/queries.ts +12 -0
- package/src/hooks/useClients/index.ts +97 -0
- package/src/hooks/useClients/queries.ts +215 -0
- package/src/hooks/useColorByLetters/helpers/alea.ts +73 -0
- package/src/hooks/useColorByLetters/helpers/colors.ts +45 -0
- package/src/hooks/useColorByLetters/helpers/index.ts +22 -0
- package/src/hooks/useColorByLetters/helpers/mersenne_twister.ts +118 -0
- package/src/hooks/useColorByLetters/index.ts +24 -0
- package/src/hooks/useConnection/index.ts +24 -0
- package/src/hooks/useCountries/index.ts +20 -0
- package/src/hooks/useCountries/queries.ts +12 -0
- package/src/hooks/useCreateDeliveryTime/index.ts +51 -0
- package/src/hooks/useCreateOrderStatusType/index.ts +134 -0
- package/src/hooks/useCreateProduct/helpers/index.ts +23 -0
- package/src/hooks/useCreateProduct/helpers/manageCacheDataCatProduct/index.ts +52 -0
- package/src/hooks/useCreateProduct/helpers/useEditImageProduct/index.ts +182 -0
- package/src/hooks/useCreateProduct/index.ts +337 -0
- package/src/hooks/useCreateStorePendingToRegister/index.ts +17 -0
- package/src/hooks/useCreateStorePendingToRegister/queries.ts +10 -0
- package/src/hooks/useDashboardComponents/index.ts +50 -0
- package/src/hooks/useDeleteExtraProductFoods/index.ts +13 -0
- package/src/hooks/useDeleteSubProductOptional/index.ts +32 -0
- package/src/hooks/useDeleteSubProductOptional/queries.ts +10 -0
- package/src/hooks/useDeliveryTime/index.ts +29 -0
- package/src/hooks/useDepartments/index.ts +14 -0
- package/src/hooks/useDepartments/queries.ts +13 -0
- package/src/hooks/useDessert/helpers/index.ts +51 -0
- package/src/hooks/useDessert/index.ts +529 -0
- package/src/hooks/useDessertWithPrice/helpers/index.ts +76 -0
- package/src/hooks/useDessertWithPrice/index.ts +381 -0
- package/src/hooks/useDessertWithPrice/queries.ts +18 -0
- package/src/hooks/useDevWS/index.ts +53 -0
- package/src/hooks/useDevices/index.ts +2 -0
- package/src/hooks/useDevices/queries.ts +28 -0
- package/src/hooks/useDevices/useGetDevices.ts +28 -0
- package/src/hooks/useDevices/useRegisterDevices.ts +75 -0
- package/src/hooks/useDownloadReports/helpers/downloadFileFromResponse.ts +21 -0
- package/src/hooks/useDownloadReports/index.ts +2 -0
- package/src/hooks/useDownloadReports/useDownloadReportByDay/index.ts +105 -0
- package/src/hooks/useDownloadReports/useGetReportByDateRange/index.ts +116 -0
- package/src/hooks/useDrag/index.ts +79 -0
- package/src/hooks/useDropzone/index.ts +94 -0
- package/src/hooks/useDynamicAuth/index.ts +14 -0
- package/src/hooks/useDynamicAuth/queries.ts +24 -0
- package/src/hooks/useEditCategory/index.ts +41 -0
- package/src/hooks/useEditOneExtProductFoodOptional/index.ts +28 -0
- package/src/hooks/useEditOneExtProductFoodOptional/queries.ts +16 -0
- package/src/hooks/useEditSubProductOptional/index.ts +12 -0
- package/src/hooks/useEditSubProductOptional/queries.ts +10 -0
- package/src/hooks/useEmployee/index.ts +18 -0
- package/src/hooks/useEmployee/queries.ts +85 -0
- package/src/hooks/useEmployee/useCreateEmployee.ts +90 -0
- package/src/hooks/useEvent/index.ts +34 -0
- package/src/hooks/useFavoriteStores/index.ts +31 -0
- package/src/hooks/useFavoriteStores/queries.ts +54 -0
- package/src/hooks/useFetchJson/index.ts +25 -0
- package/src/hooks/useFetchMoreInteractions/index.jsx +39 -0
- package/src/hooks/useFilterConfigs/index.ts +173 -0
- package/src/hooks/useFingerprintjs/index.ts +197 -0
- package/src/hooks/useFormTools/index.ts +143 -0
- package/src/hooks/useFormatDate/index.ts +91 -0
- package/src/hooks/useFormatNumberPhone/index.ts +23 -0
- package/src/hooks/useFullScreenMode/index.ts +61 -0
- package/src/hooks/useGenerateNumberArray/index.ts +17 -0
- package/src/hooks/useGetAllLocationUser/index.ts +13 -0
- package/src/hooks/useGetAllLocationUser/queries.ts +44 -0
- package/src/hooks/useGetAllSales/index.ts +26 -0
- package/src/hooks/useGetCookies/index.ts +43 -0
- package/src/hooks/useGetExtProductFoodsSubOptionalAll/index.ts +15 -0
- package/src/hooks/useGetFoodRecomended/index.ts +33 -0
- package/src/hooks/useGetFoodRecomended/queries.ts +47 -0
- package/src/hooks/useGetMessagesToRoom/index.ts +23 -0
- package/src/hooks/useGetMinPrice/index.ts +13 -0
- package/src/hooks/useGetMinPrice/queries.ts +7 -0
- package/src/hooks/useGetOneStoreRating/index.ts +41 -0
- package/src/hooks/useGetOneStoreRating/queries.ts +18 -0
- package/src/hooks/useGetSalesAmountToday/index.ts +31 -0
- package/src/hooks/useGetStoreCookie/index.ts +21 -0
- package/src/hooks/useGoogleLogin/index.ts +169 -0
- package/src/hooks/useGoogleLogin/loadScript.ts +15 -0
- package/src/hooks/useGoogleLogin/removeScript.ts +7 -0
- package/src/hooks/useHover/index.ts +32 -0
- package/src/hooks/useImageOptimization/index.ts +32 -0
- package/src/hooks/useImageUploaderProduct/helper/canvasUtils.ts +146 -0
- package/src/hooks/useImageUploaderProduct/helper/getOrientation.ts +54 -0
- package/src/hooks/useImageUploaderProduct/helper/index.ts +5 -0
- package/src/hooks/useImageUploaderProduct/index.ts +295 -0
- package/src/hooks/useImageWeight/index.ts +55 -0
- package/src/hooks/useImagesStore/index.ts +227 -0
- package/src/hooks/useImagesStore/queries.ts +193 -0
- package/src/hooks/useImagesStore/utils/index.ts +4 -0
- package/src/hooks/useIncomingOrders/index.ts +11 -0
- package/src/hooks/useIncomingOrders/queries.ts +87 -0
- package/src/hooks/useInnerHtml/index.ts +39 -0
- package/src/hooks/useIntersection/index.ts +84 -0
- package/src/hooks/useInventory/index.ts +2 -0
- package/src/hooks/useInventory/queries.ts +58 -0
- package/src/hooks/useInventory/useGetProductsInStock.ts +16 -0
- package/src/hooks/useInventory/useUpdateManageStock.ts +41 -0
- package/src/hooks/useKeypress/index.ts +28 -0
- package/src/hooks/useLazyScript/index.ts +74 -0
- package/src/hooks/useLocalBackendIp/index.ts +34 -0
- package/src/hooks/useLocalSorage/index.ts +36 -0
- package/src/hooks/useLocationManager/index.ts +63 -0
- package/src/hooks/useLocationNavigate/index.ts +54 -0
- package/src/hooks/useLoginEmployeeInStore/index.ts +38 -0
- package/src/hooks/useLogout/helpers/BroadcastChannel.ts +74 -0
- package/src/hooks/useLogout/helpers/apiBaseUrl.ts +12 -0
- package/src/hooks/useLogout/helpers/fetchData.ts +37 -0
- package/src/hooks/useLogout/helpers/getCsrfToken.ts +37 -0
- package/src/hooks/useLogout/helpers/index.ts +65 -0
- package/src/hooks/useLogout/helpers/logger.ts +88 -0
- package/src/hooks/useLogout/helpers/parseUrl.ts +39 -0
- package/src/hooks/useLogout/index.ts +105 -0
- package/src/hooks/useManageNewOrder/helpers/index.ts +45 -0
- package/src/hooks/useManageNewOrder/helpers/mock.ts +0 -0
- package/src/hooks/useManageNewOrder/index.ts +104 -0
- package/src/hooks/useManageQueryParams/index.ts +120 -0
- package/src/hooks/useMobile/index.ts +65 -0
- package/src/hooks/useModules/helpers/index.ts +1 -0
- package/src/hooks/useModules/helpers/validateModules.ts +29 -0
- package/src/hooks/useModules/index.ts +124 -0
- package/src/hooks/useMouse/index.ts +55 -0
- package/src/hooks/useMutateHeight/index.ts +36 -0
- package/src/hooks/useOrderClient/index.ts +5 -0
- package/src/hooks/useOrderStatusTypes/index.ts +2 -0
- package/src/hooks/useOrderStatusTypes/useOrderStatusTypes/index.ts +133 -0
- package/src/hooks/useOrderStatusTypes/useUpdateOrderStatusPriorities/index.ts +99 -0
- package/src/hooks/useOrders/index.ts +3 -0
- package/src/hooks/useOrders/queries.ts +99 -0
- package/src/hooks/useOrders/useChangeOrderState/index.ts +128 -0
- package/src/hooks/useOrders/useOrdersFromStore/index.ts +78 -0
- package/src/hooks/usePWAInstall/index.ts +38 -0
- package/src/hooks/usePaymentMethod/index.ts +3 -0
- package/src/hooks/usePaymentMethod/paymentMethod.gql.ts +62 -0
- package/src/hooks/usePaymentMethod/paymentMethod.types.ts +28 -0
- package/src/hooks/usePaymentMethod/useCreatePaymentMethod/index.ts +25 -0
- package/src/hooks/usePaymentMethod/useGetAllPaymentMethods/index.ts +19 -0
- package/src/hooks/usePaymentMethod/useGetPaymentMethod/index.ts +26 -0
- package/src/hooks/usePortFetcher/index.ts +33 -0
- package/src/hooks/usePrintSaleTicket/index.ts +68 -0
- package/src/hooks/useProductsFood/index.ts +341 -0
- package/src/hooks/useProductsFood/queriesStore.ts +964 -0
- package/src/hooks/useProductsFood/types/index.ts +0 -0
- package/src/hooks/useProductsFood/useEditProduct.ts +49 -0
- package/src/hooks/useProductsFood/usetagsProducts.ts +101 -0
- package/src/hooks/useProviders/index.ts +3 -0
- package/src/hooks/useProviders/queries.ts +31 -0
- package/src/hooks/useProviders/useProvidersCreateStore/index.ts +13 -0
- package/src/hooks/useProviders/useProvidersDataStore/index.ts +25 -0
- package/src/hooks/useProvidersStore/index.ts +25 -0
- package/src/hooks/useProvidersStore/queries.ts +31 -0
- package/src/hooks/usePushNotificationOrder/index.ts +52 -0
- package/src/hooks/usePushNotifications/helpers/index.ts +123 -0
- package/src/hooks/usePushNotifications/index.ts +150 -0
- package/src/hooks/useQueryLocationsMap/index.ts +20 -0
- package/src/hooks/useQueryLocationsMap/queries.ts +40 -0
- package/src/hooks/useRatingArrayData/index.ts +54 -0
- package/src/hooks/useRatingArrayData/queries.ts +19 -0
- package/src/hooks/useReactToPrint/index.txt +1223 -0
- package/src/hooks/useRemoveExtraProductFoodsOptional/index.ts +24 -0
- package/src/hooks/useRemoveExtraProductFoodsOptional/queries.ts +48 -0
- package/src/hooks/useReport/index.ts +48 -0
- package/src/hooks/useReport/queries.ts +72 -0
- package/src/hooks/useRestaurant/helpers/index.ts +28 -0
- package/src/hooks/useRestaurant/helpers/manageStatusOpen.ts +26 -0
- package/src/hooks/useRestaurant/index.ts +71 -0
- package/src/hooks/useRestaurant/queries.ts +81 -0
- package/src/hooks/useRoads/index.ts +20 -0
- package/src/hooks/useRoads/queries.ts +13 -0
- package/src/hooks/useRoles/index.ts +4 -0
- package/src/hooks/useRoles/queries.ts +70 -0
- package/src/hooks/useRoles/useCreateRole.ts +40 -0
- package/src/hooks/useRoles/useGetRoles.ts +37 -0
- package/src/hooks/useRoles/useRemoveRoles.ts +40 -0
- package/src/hooks/useRoles/useUpdateRolesPriority.ts +44 -0
- package/src/hooks/useSales/helpers/add-product.utils.ts +120 -0
- package/src/hooks/useSales/helpers/apply-discount-to-cart.utils.ts +292 -0
- package/src/hooks/useSales/helpers/comment-product.utils.ts +41 -0
- package/src/hooks/useSales/helpers/constants/index.ts +38 -0
- package/src/hooks/useSales/helpers/extras.utils.ts +42 -0
- package/src/hooks/useSales/helpers/filterProductsByCarProId.utils.ts +17 -0
- package/src/hooks/useSales/helpers/increment-product-quantity.utils.ts +76 -0
- package/src/hooks/useSales/helpers/index.ts +3 -0
- package/src/hooks/useSales/helpers/initializer.utils.ts +22 -0
- package/src/hooks/useSales/helpers/isStockInsufficient.ts +3 -0
- package/src/hooks/useSales/helpers/remove-product.utils.test.ts +49 -0
- package/src/hooks/useSales/helpers/remove-product.utils.ts +34 -0
- package/src/hooks/useSales/helpers/resolveProduct.ts +29 -0
- package/src/hooks/useSales/helpers/useAddToCart.ts +64 -0
- package/src/hooks/useSales/index.ts +1418 -0
- package/src/hooks/useSales/queries.ts +532 -0
- package/src/hooks/useSales/types/index.ts +206 -0
- package/src/hooks/useSales/types/use-sales.types.ts +8 -0
- package/src/hooks/useSales/useGetSale.ts +21 -0
- package/src/hooks/useSales/useTotalSales.ts +24 -0
- package/src/hooks/useSaveAvailableProduct/helpers/index.ts +38 -0
- package/src/hooks/useSaveAvailableProduct/index.ts +32 -0
- package/src/hooks/useSaveAvailableProduct/queries.ts +10 -0
- package/src/hooks/useSaveLocation/index.ts +17 -0
- package/src/hooks/useSaveLocation/queries.ts +19 -0
- package/src/hooks/useSchedule/index.ts +35 -0
- package/src/hooks/useSchedule/queries.ts +43 -0
- package/src/hooks/useSchedule/schedule.ts +79 -0
- package/src/hooks/useScheduleData/index.ts +135 -0
- package/src/hooks/useScroll/index.ts +56 -0
- package/src/hooks/useScrollRotate/index.ts +16 -0
- package/src/hooks/useSetImageProducts/index.ts +59 -0
- package/src/hooks/useSetImageProducts/queries.ts +18 -0
- package/src/hooks/useSetSession/index.ts +44 -0
- package/src/hooks/useSetState/index.ts +24 -0
- package/src/hooks/useSetupSchedule/helpers/index.ts +85 -0
- package/src/hooks/useSetupSchedule/index.ts +284 -0
- package/src/hooks/useStatusOpenStore/helpers/index.ts +124 -0
- package/src/hooks/useStatusOpenStore/index.ts +195 -0
- package/src/hooks/useStatusOrdersClient/helpers/index.ts +14 -0
- package/src/hooks/useStatusOrdersClient/index.ts +18 -0
- package/src/hooks/useStatusOrdersClient/queries.ts +80 -0
- package/src/hooks/useStock/index.ts +1 -0
- package/src/hooks/useStock/useStockUpdatedAllSubscription.ts +40 -0
- package/src/hooks/useStockMovements/helpers/index.ts +16 -0
- package/src/hooks/useStockMovements/index.ts +39 -0
- package/src/hooks/useStore/index.ts +83 -0
- package/src/hooks/useStore/queries.ts +163 -0
- package/src/hooks/useStoreCalendar/index.ts +5 -0
- package/src/hooks/useStoreContacts/index.ts +53 -0
- package/src/hooks/useStoreContacts/queries.ts +48 -0
- package/src/hooks/useStoreTable/index.ts +2 -0
- package/src/hooks/useStoreTable/queries.ts +47 -0
- package/src/hooks/useStoreTable/useStoreTableCreate.ts +77 -0
- package/src/hooks/useStoreTable/useStoreTables.ts +15 -0
- package/src/hooks/useSubscriptionValidation/index.ts +112 -0
- package/src/hooks/useTagProducts/index.ts +3 -0
- package/src/hooks/useTagProducts/useDeleteOneTag.ts +106 -0
- package/src/hooks/useTagProducts/useGetAllTags.ts +68 -0
- package/src/hooks/useTagProducts/useRegisterMultipleTags.ts +157 -0
- package/src/hooks/useTheme/index.ts +65 -0
- package/src/hooks/useTimeAgo/useTimeAgo.ts +39 -0
- package/src/hooks/useTokenCards/index.ts +45 -0
- package/src/hooks/useTopProductsMovements/index.ts +27 -0
- package/src/hooks/useTotalAllSales/index.ts +25 -0
- package/src/hooks/useTotalProductsInStock/index.ts +23 -0
- package/src/hooks/useTotalProductsSold/index.ts +23 -0
- package/src/hooks/useTotalProductsSolded/index.ts +20 -0
- package/src/hooks/useUpdateCart/index.ts +131 -0
- package/src/hooks/useUpdateCartCookie/index.ts +60 -0
- package/src/hooks/useUpdateDashboardComponent/index.ts +91 -0
- package/src/hooks/useUpdateExistingOrders/index.ts +85 -0
- package/src/hooks/useUpdateExtProductFoodsSubOptional/index.ts +61 -0
- package/src/hooks/useUpdateModuleOrder/index.ts +37 -0
- package/src/hooks/useUpdateMultipleExtProduct/index.ts +34 -0
- package/src/hooks/useUpdateMultipleExtProduct/queries.ts +33 -0
- package/src/hooks/useUpdateMultipleProducts/index.ts +117 -0
- package/src/hooks/useUpdateMultipleProducts/queries.ts +51 -0
- package/src/hooks/useUploadProducts/helpers/index.ts +1 -0
- package/src/hooks/useUploadProducts/helpers/parseNumber.ts +37 -0
- package/src/hooks/useUploadProducts/helpers/validateProductDataExcel.ts +73 -0
- package/src/hooks/useUploadProducts/index.ts +442 -0
- package/src/hooks/useUpsertGoal/index.ts +68 -0
- package/src/hooks/useUser/index.ts +24 -0
- package/src/hooks/useUser/queries.ts +131 -0
- package/src/hooks/useWeeklyStockMovement/helpers/index.ts +32 -0
- package/src/hooks/useWeeklyStockMovement/index.ts +52 -0
- package/src/hooks/useWindowSize/index.ts +45 -0
- package/src/index.ts +8 -0
- package/src/mock/dessert/index.ts +16 -0
- package/src/mock/index.ts +1 -0
- package/src/security/index.ts +1 -0
- package/src/services/index.ts +1 -0
- package/src/utils/UtilDateRange.ts +56 -0
- package/src/utils/generateCode.ts +222 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/utils.ts +344 -0
- package/tsconfig.eslint.json +16 -0
- package/tsconfig.json +21 -0
- package/tsup.config.ts +24 -0
- package/dist/index.cjs +0 -20089
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import js from "@eslint/js"
|
|
2
|
+
import { defineConfig } from "eslint/config"
|
|
3
|
+
import importPlugin from "eslint-plugin-import"
|
|
4
|
+
import jsdoc from "eslint-plugin-jsdoc"
|
|
5
|
+
import react from "eslint-plugin-react"
|
|
6
|
+
import globals from "globals"
|
|
7
|
+
import tseslint from "typescript-eslint"
|
|
8
|
+
|
|
9
|
+
export default defineConfig([
|
|
10
|
+
// base JS/TS files
|
|
11
|
+
{
|
|
12
|
+
files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
|
13
|
+
plugins: {
|
|
14
|
+
js,
|
|
15
|
+
import: importPlugin, // 👈 ,
|
|
16
|
+
jsdoc,
|
|
17
|
+
react,
|
|
18
|
+
"react-hooks": require("eslint-plugin-react-hooks"),
|
|
19
|
+
},
|
|
20
|
+
extends: ["js/recommended"],
|
|
21
|
+
languageOptions: {
|
|
22
|
+
globals: { ...globals.browser, ...globals.node },
|
|
23
|
+
ecmaVersion: "latest",
|
|
24
|
+
sourceType: "module",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
// recommended TS config (from typescript-eslint)
|
|
29
|
+
tseslint.configs.recommended,
|
|
30
|
+
|
|
31
|
+
// Strict, opinionated ruleset applied across the codebase
|
|
32
|
+
{
|
|
33
|
+
files: ["**/*.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
|
34
|
+
// rely on previously loaded parsers/plugins (typescript-eslint, etc.)
|
|
35
|
+
rules: {
|
|
36
|
+
// JavaScript hygiene
|
|
37
|
+
eqeqeq: "error",
|
|
38
|
+
curly: ["error", "multi-line"],
|
|
39
|
+
"no-var": "error",
|
|
40
|
+
"prefer-const": ["error", { destructuring: "all" }],
|
|
41
|
+
"no-debugger": "error",
|
|
42
|
+
"no-console": ["warn", { allow: ["warn", "error"] }],
|
|
43
|
+
"consistent-return": "error",
|
|
44
|
+
"no-implicit-coercion": "error",
|
|
45
|
+
|
|
46
|
+
// complexity / maintainability
|
|
47
|
+
complexity: ["warn", 10],
|
|
48
|
+
"max-params": ["warn", 4],
|
|
49
|
+
"max-depth": ["warn", 4],
|
|
50
|
+
"max-lines": ["warn", { max: 400, skipBlankLines: true, skipComments: true }],
|
|
51
|
+
|
|
52
|
+
// import/order (requires eslint-plugin-import)
|
|
53
|
+
"import/order": [
|
|
54
|
+
"error",
|
|
55
|
+
{
|
|
56
|
+
groups: ["builtin", "external", "internal", "parent", "sibling", "index", "type"],
|
|
57
|
+
"newlines-between": "always",
|
|
58
|
+
alphabetize: { order: "asc", caseInsensitive: true },
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
|
|
62
|
+
// encourage clear async/await and promise handling
|
|
63
|
+
"no-return-await": "error",
|
|
64
|
+
"require-atomic-updates": "error",
|
|
65
|
+
|
|
66
|
+
// jsdoc (requires eslint-plugin-jsdoc) — keep docs enforced
|
|
67
|
+
"jsdoc/check-alignment": "warn",
|
|
68
|
+
"jsdoc/require-jsdoc": [
|
|
69
|
+
"warn",
|
|
70
|
+
{
|
|
71
|
+
require: {
|
|
72
|
+
FunctionDeclaration: true,
|
|
73
|
+
MethodDefinition: true,
|
|
74
|
+
ClassDeclaration: true,
|
|
75
|
+
ArrowFunctionExpression: false,
|
|
76
|
+
FunctionExpression: false,
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
"jsdoc/require-param": "error",
|
|
81
|
+
"jsdoc/require-returns": "error",
|
|
82
|
+
},
|
|
83
|
+
settings: {
|
|
84
|
+
react: { version: "detect" },
|
|
85
|
+
// import resolver for TypeScript projects (if installed)
|
|
86
|
+
"import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] },
|
|
87
|
+
"import/resolver": {
|
|
88
|
+
typescript: {
|
|
89
|
+
// Use default tsconfig lookup. Override if monorepo packages have own tsconfigs.
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
// React / Next / Hooks specific rules
|
|
96
|
+
{
|
|
97
|
+
files: ["**/*.{jsx,tsx}"],
|
|
98
|
+
rules: {
|
|
99
|
+
"react/prop-types": "off", // TS covers prop types
|
|
100
|
+
"react/react-in-jsx-scope": "off",
|
|
101
|
+
"react/jsx-uses-react": "off",
|
|
102
|
+
"react/jsx-boolean-value": ["error", "always"],
|
|
103
|
+
"react/jsx-curly-brace-presence": ["error", { props: "always", children: "never" }],
|
|
104
|
+
"react/jsx-no-useless-fragment": "error",
|
|
105
|
+
"react-hooks/rules-of-hooks": "error",
|
|
106
|
+
"react-hooks/exhaustive-deps": ["warn", { additionalHooks: "(useRecoilCallback)" }],
|
|
107
|
+
},
|
|
108
|
+
// ensure react plugin is available in projects using JSX
|
|
109
|
+
// (no explicit plugin import here plugin must be installed)
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
// Node-only package override for packages/logic (no browser globals, no React)
|
|
113
|
+
{
|
|
114
|
+
files: ["packages/logic/**/*.{ts,js}"],
|
|
115
|
+
languageOptions: {
|
|
116
|
+
globals: { ...globals.node },
|
|
117
|
+
sourceType: "module",
|
|
118
|
+
},
|
|
119
|
+
rules: {
|
|
120
|
+
// logic package should be pure and side-effect free where possible
|
|
121
|
+
"no-restricted-syntax": [
|
|
122
|
+
"error",
|
|
123
|
+
{
|
|
124
|
+
selector: "CallExpression[callee.name='fetch']",
|
|
125
|
+
message: "Avoid fetch in logic package inject HTTP clients from caller.",
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
"import/no-extraneous-dependencies": ["error", { devDependencies: false, optionalDependencies: false }],
|
|
129
|
+
// allow fewer UI-related rules
|
|
130
|
+
"react/no-unknown-property": "off",
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
// GraphQL linting placeholder (if @graphql-eslint installed + .graphqlrc present)
|
|
135
|
+
{
|
|
136
|
+
files: ["**/*.graphql", "**/*.gql", "**/*.{ts,tsx,js,jsx}"],
|
|
137
|
+
rules: {
|
|
138
|
+
// keep GraphQL checks opt-in via plugin these are examples you can enable
|
|
139
|
+
// '@graphql-eslint/no-deprecated-fields': 'warn',
|
|
140
|
+
// '@graphql-eslint/known-type-names': 'error',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// Strictness for commit-time / CI (can be toggled by CI pipeline)
|
|
145
|
+
{
|
|
146
|
+
files: ["**/*.{js,ts,tsx}"],
|
|
147
|
+
// treat some warnings as errors in CI — consumer can override in CI env
|
|
148
|
+
rules: {
|
|
149
|
+
// This is intentionally conservative in local dev CI pipeline can set env to escalate
|
|
150
|
+
"no-warning-comments": ["warn", { terms: ["todo", "fixme", "xxx"], location: "start" }],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
])
|
package/expire.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSmVzdXMgSnV2aW5hbyIsImVtYWlsIjoianV2aW5hb2plc3VzZEBnbWFpbC5jb20iLCJ1c2VybmFtZSI6Ikplc3VzIEp1dmluYW8iLCJyZXN0YXVyYW50Ijp7ImlkU3RvcmUiOiIwMTNlNTM4Ny0zNGExLTZhNzgtMzAzZC01MDk4ZjE3YmY2NDAiLCJpZCI6IjAxM2U1Mzg3LTM0YTEtNmE3OC0zMDNkLTUwOThmMTdiZjY0MCJ9LCJpZCI6IjAxM2U1Mzg3LTM0YTEtNmE3OC0zMDNkLTUwOThmMTdiZjY0MCIsImlhdCI6MTcwNjY3MTkwOCwiZXhwIjoxNzA3MDA1MjA4fQ.V---HeOaEMX9tow6Yh-33ehM6HV-h-1YQ8dmxJfVcyE
|
package/jsconfig.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es5",
|
|
4
|
+
"lib": [
|
|
5
|
+
"dom",
|
|
6
|
+
"dom.iterable"
|
|
7
|
+
],
|
|
8
|
+
"allowJs": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"strict": false,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
"noEmit": true,
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"module": "commonjs",
|
|
15
|
+
"moduleResolution": "node",
|
|
16
|
+
"resolveJsonModule": true,
|
|
17
|
+
"isolatedModules": true,
|
|
18
|
+
"jsx": "preserve",
|
|
19
|
+
"incremental": true
|
|
20
|
+
},
|
|
21
|
+
"include": [
|
|
22
|
+
"**/*.ts",
|
|
23
|
+
"**/*.tsx"
|
|
24
|
+
],
|
|
25
|
+
"exclude": [
|
|
26
|
+
"node_modules"
|
|
27
|
+
]
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,72 +1,35 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
"@typescript-eslint/parser": "^5.37.0",
|
|
6
|
-
"file-saver": "2.0.5",
|
|
7
|
-
"js-cookie": "3.0.1",
|
|
8
|
-
"lodash": "^4.17.21",
|
|
9
|
-
"moment": "^2.29.4",
|
|
10
|
-
"next": "15.2.4",
|
|
11
|
-
"react": "^19.0.0",
|
|
12
|
-
"react-dom": "^19.0.0",
|
|
13
|
-
"react-query": "^3.39.2",
|
|
14
|
-
"xlsx": "0.18.5"
|
|
15
|
-
},
|
|
16
|
-
"description": "description-pkg-hook",
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"@babel/preset-env": "^7.19.1",
|
|
19
|
-
"@babel/preset-react": "^7.18.6",
|
|
20
|
-
"@babel/preset-typescript": "^7.18.6",
|
|
21
|
-
"@types/jest": "^30.0.0",
|
|
22
|
-
"@types/js-cookie": "3.0.6",
|
|
23
|
-
"@types/node": "^20.11.16",
|
|
24
|
-
"@types/react": "^18.0.20",
|
|
25
|
-
"@typescript-eslint/eslint-plugin": "5.29.0",
|
|
26
|
-
"@typescript-eslint/parser": "5.29.0",
|
|
27
|
-
"eslint": "^8.0.1",
|
|
28
|
-
"eslint-config-standard": "^17.0.0",
|
|
29
|
-
"eslint-plugin-import": "^2.25.2",
|
|
30
|
-
"eslint-plugin-n": "^15.0.0",
|
|
31
|
-
"eslint-plugin-promise": "^6.0.0",
|
|
32
|
-
"eslint-plugin-react": "^7.33.2",
|
|
33
|
-
"eslint-plugin-react-hooks": "^4.6.0",
|
|
34
|
-
"jest": "^30.2.0",
|
|
35
|
-
"ts-jest": "^29.4.6",
|
|
36
|
-
"tsup": "8.5.1",
|
|
37
|
-
"typesdefs": "1.0.6"
|
|
38
|
-
},
|
|
2
|
+
"main": "dist/index.cjs",
|
|
3
|
+
"module": "dist/index.mjs",
|
|
4
|
+
"types": "dist/index.d.ts",
|
|
39
5
|
"exports": {
|
|
40
6
|
".": {
|
|
41
|
-
"import": "./dist/index.
|
|
7
|
+
"import": "./dist/index.mjs",
|
|
42
8
|
"require": "./dist/index.cjs",
|
|
43
9
|
"types": "./dist/index.d.ts"
|
|
44
10
|
}
|
|
45
11
|
},
|
|
46
|
-
"files": [
|
|
47
|
-
"dist"
|
|
48
|
-
],
|
|
49
|
-
"license": "ISC",
|
|
50
|
-
"main": "./dist/index.cjs",
|
|
51
|
-
"module": "./dist/index.js",
|
|
52
|
-
"name": "npm-pkg-hook",
|
|
53
|
-
"private": false,
|
|
54
|
-
"publishConfig": {
|
|
55
|
-
"registry": "https://registry.npmjs.org/"
|
|
56
|
-
},
|
|
57
|
-
"repository": {
|
|
58
|
-
"type": "git",
|
|
59
|
-
"url": "https://github.com/Jesus123780/pkg-hook"
|
|
60
|
-
},
|
|
61
12
|
"scripts": {
|
|
62
|
-
"build": "tsup
|
|
13
|
+
"build": "tsup",
|
|
14
|
+
"prepare": "npm run build",
|
|
15
|
+
"prepublishOnly": "npm run build",
|
|
63
16
|
"lint": "eslint .",
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"
|
|
17
|
+
"test": "jest"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"react": "^18 || ^19",
|
|
21
|
+
"react-dom": "^18 || ^19",
|
|
22
|
+
"next": "^14 || ^15",
|
|
23
|
+
"@apollo/client": "^3 || ^4",
|
|
24
|
+
"graphql": "^16"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"tsup": "8.5.1",
|
|
28
|
+
"typescript": "5.9.3",
|
|
29
|
+
"@types/react": "18.0.20",
|
|
30
|
+
"@types/js-cookie": "3.0.6",
|
|
31
|
+
"@types/file-saver": "2.0.7"
|
|
68
32
|
},
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"version": "1.12.7"
|
|
33
|
+
"version": "1.12.9",
|
|
34
|
+
"name": "npm-pkg-hook"
|
|
72
35
|
}
|
package/script.txt
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { onError } from '@apollo/client/link/error'
|
|
2
|
+
|
|
3
|
+
interface GraphQLErrorExtension {
|
|
4
|
+
code?: string
|
|
5
|
+
message?: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface GraphQLErrorItem {
|
|
9
|
+
extensions?: GraphQLErrorExtension
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface ErrorWithErrors {
|
|
13
|
+
errors?: GraphQLErrorItem[]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const errorHandler = (error: ErrorWithErrors | null | undefined): boolean | null => {
|
|
17
|
+
let logout: boolean | null = null
|
|
18
|
+
if (error && Array.isArray(error?.errors)) {
|
|
19
|
+
error.errors?.length && error?.errors?.forEach((err: GraphQLErrorItem) => {
|
|
20
|
+
if (err?.extensions) {
|
|
21
|
+
const { code, message }: GraphQLErrorExtension = err?.extensions || {}
|
|
22
|
+
if (code === 'UNAUTHENTICATED' || code === 'FORBIDDEN') {
|
|
23
|
+
logout = true
|
|
24
|
+
return {
|
|
25
|
+
status: 'FORBIDDEN',
|
|
26
|
+
message
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
return logout
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const errorLink = onError(({ graphQLErrors, networkError }) => {
|
|
36
|
+
if (graphQLErrors)graphQLErrors.map(({ message, path }) => { return console.log(`[GraphQL error]: Message: ${message}, Path: ${path}`) })
|
|
37
|
+
|
|
38
|
+
if (networkError) console.log(`[Network error]: ${networkError}`)
|
|
39
|
+
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './errors'
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// src/config/content/index.js
|
|
2
|
+
|
|
3
|
+
import contentEn from './en.json'
|
|
4
|
+
import contentEs from './es.json'
|
|
5
|
+
|
|
6
|
+
const LANG = 'es'
|
|
7
|
+
|
|
8
|
+
const CONTENT = {
|
|
9
|
+
en: contentEn,
|
|
10
|
+
es: contentEs
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const t = (key) => {
|
|
14
|
+
const content = CONTENT[LANG] || {}
|
|
15
|
+
return content[key] || key
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function that adds 10 to a given number representing minutes.
|
|
3
|
+
* @param {number} num - The number of minutes (between 1 and 60).
|
|
4
|
+
* @returns {string} A string indicating the original number and the result of adding 10 minutes.
|
|
5
|
+
*/
|
|
6
|
+
export const addTenMinutes = (num: number) => {
|
|
7
|
+
if (num > 60) return ''
|
|
8
|
+
if (num >= 50) {
|
|
9
|
+
const newNum = num - 10
|
|
10
|
+
return `${newNum} - ${60} min`
|
|
11
|
+
}
|
|
12
|
+
return `${num} - ${num + 10} min`
|
|
13
|
+
|
|
14
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param deg
|
|
4
|
+
*/
|
|
5
|
+
function deg2rad(deg: number): number {
|
|
6
|
+
return deg * (Math.PI / 180)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Función para calcular la distancia entre un punto fijo y un punto dado utilizando la fórmula de Haversine
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param lat1
|
|
13
|
+
* @param lon1
|
|
14
|
+
* @param lat2
|
|
15
|
+
* @param lon2
|
|
16
|
+
*/
|
|
17
|
+
export function calculateLogLatHaversine(lat1: number, lon1: number, lat2: number, lon2: number): number {
|
|
18
|
+
const radioTierra = 6371 // Radio de la Tierra en kilómetros
|
|
19
|
+
const dLat = deg2rad(lat2 - lat1)
|
|
20
|
+
const dLon = deg2rad(lon2 - lon1)
|
|
21
|
+
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
|
22
|
+
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
|
|
23
|
+
Math.sin(dLon / 2) * Math.sin(dLon / 2)
|
|
24
|
+
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))
|
|
25
|
+
const distancia = radioTierra * c
|
|
26
|
+
return distancia
|
|
27
|
+
}
|
|
28
|
+
// 768px
|
|
29
|
+
// Coordenadas del punto fijo
|
|
30
|
+
const puntoFijo = { lat: 4.7984084, lon: -75.7338831 }
|
|
31
|
+
|
|
32
|
+
// Array de coordenadas de ejemplo
|
|
33
|
+
const coordenadas = [
|
|
34
|
+
{ lat: 4.7954221, lon: -75.730596 }
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
// Calcular distancias entre cada punto y el punto fijo
|
|
38
|
+
coordenadas.forEach((coordenada, index) => {
|
|
39
|
+
const distancia = calculateLogLatHaversine(puntoFijo.lat, puntoFijo.lon, coordenada.lat, coordenada.lon)
|
|
40
|
+
console.log(`La distancia entre el punto fijo y coordenada ${index + 1} es ${distancia.toFixed(2)} kilómetros`)
|
|
41
|
+
})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const completeSchedules = (dataSchedules: { schDay: number; schHoSta: string; schHoEnd: string }[]) => {
|
|
2
|
+
// Días de la semana
|
|
3
|
+
const daysSemana = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo']
|
|
4
|
+
|
|
5
|
+
// Mapear los horarios existentes para crear un mapa por día
|
|
6
|
+
const horariosPorDia = dataSchedules.reduce((mapa, horario) => {
|
|
7
|
+
const day = daysSemana[horario.schDay]
|
|
8
|
+
if (!mapa[day]) {
|
|
9
|
+
mapa[day] = []
|
|
10
|
+
}
|
|
11
|
+
mapa[day].push({ horaInicio: horario.schHoSta, horaFin: horario.schHoEnd })
|
|
12
|
+
return mapa
|
|
13
|
+
}, {} as Record<string, { horaInicio: string; horaFin: string }[]>)
|
|
14
|
+
|
|
15
|
+
// Completar los días que faltan y formatear el objeto
|
|
16
|
+
const horariosFormateados = daysSemana.map((day, index) => {return {
|
|
17
|
+
day,
|
|
18
|
+
horarios: horariosPorDia[day] || [{ horaInicio: '', horaFin: '' }]
|
|
19
|
+
}})
|
|
20
|
+
|
|
21
|
+
return horariosFormateados
|
|
22
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param time12Hour
|
|
4
|
+
*/
|
|
5
|
+
export function convertToMilitaryTime(time12Hour: string): string {
|
|
6
|
+
const [time, period]: [string, string] = time12Hour.split(' ') as [string, string]
|
|
7
|
+
let [hours, minutes]: [string, string] = time.split(':') as [string, string]
|
|
8
|
+
|
|
9
|
+
if (period === 'PM' && hours !== '12') {
|
|
10
|
+
hours = String(Number(hours) + 12)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (period === 'AM' && hours === '12') {
|
|
14
|
+
hours = '00'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return `${hours}:${minutes}`
|
|
18
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the store URL based on given parameters.
|
|
3
|
+
* @returns The generated URL or '/' if any field is missing.
|
|
4
|
+
*/
|
|
5
|
+
type City = { cName: string };
|
|
6
|
+
type Department = { dName: string };
|
|
7
|
+
|
|
8
|
+
interface GenerateStoreURLParams {
|
|
9
|
+
city: City;
|
|
10
|
+
department: Department;
|
|
11
|
+
storeName: string;
|
|
12
|
+
idStore: string;
|
|
13
|
+
rootMainPath?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const generateStoreURL = ({
|
|
17
|
+
city,
|
|
18
|
+
department,
|
|
19
|
+
storeName,
|
|
20
|
+
idStore,
|
|
21
|
+
rootMainPath = 'delivery'
|
|
22
|
+
}: GenerateStoreURLParams): string => {
|
|
23
|
+
// Validate all necessary fields
|
|
24
|
+
if (
|
|
25
|
+
!process.env.MAIN_URL_BASE ||
|
|
26
|
+
!city?.cName ||
|
|
27
|
+
!department?.dName ||
|
|
28
|
+
!storeName ||
|
|
29
|
+
!idStore
|
|
30
|
+
) {
|
|
31
|
+
return '/' // Return '/' or any default case you'd prefer
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const cityName = city.cName.toLocaleLowerCase()
|
|
35
|
+
const departmentName = department.dName.toLocaleLowerCase()
|
|
36
|
+
|
|
37
|
+
// Replace spaces in storeName with hyphens
|
|
38
|
+
const formattedStoreName = storeName.replace(/ /g, '-')
|
|
39
|
+
|
|
40
|
+
return `${process.env.MAIN_URL_BASE}/${rootMainPath}/${cityName}-${departmentName}/${formattedStoreName}/${idStore}`
|
|
41
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { saveAs } from 'file-saver'
|
|
2
|
+
import * as Excel from 'xlsx'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Class to generate Excel reports.
|
|
6
|
+
*/
|
|
7
|
+
export class GenerateReport {
|
|
8
|
+
/**
|
|
9
|
+
* Generates an Excel report from given data and type.
|
|
10
|
+
* @param {Array<object>} data - The data to be included in the Excel report.
|
|
11
|
+
* @param {number} type - The type of report to generate.
|
|
12
|
+
* @throws Will throw an error if data is not an array or type is not a valid number.
|
|
13
|
+
*/
|
|
14
|
+
GenExcelReport(data: object[], type: number): void {
|
|
15
|
+
if (!Array.isArray(data)) {
|
|
16
|
+
throw new TypeError('Data must be an array of objects.')
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (typeof type !== 'number') {
|
|
20
|
+
throw new TypeError('Type must be a valid number.')
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const ws = Excel.utils.json_to_sheet(data)
|
|
24
|
+
|
|
25
|
+
// Apply bold font to the header row
|
|
26
|
+
const ref = ws['!ref']
|
|
27
|
+
if (!ref) {
|
|
28
|
+
throw new TypeError('Worksheet reference is undefined.')
|
|
29
|
+
}
|
|
30
|
+
const range = Excel.utils.decode_range(ref)
|
|
31
|
+
for (let C = range.s.c; C <= range.e.c; ++C) {
|
|
32
|
+
const cell = ws[Excel.utils.encode_cell({ r: 0, c: C })]
|
|
33
|
+
if (cell) {
|
|
34
|
+
cell.s = {
|
|
35
|
+
font: {
|
|
36
|
+
bold: true
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const wb = Excel.utils.book_new()
|
|
43
|
+
Excel.utils.book_append_sheet(wb, ws, 'Hoja1')
|
|
44
|
+
const excelBuffer = Excel.write(wb, { bookType: 'xlsx', type: 'array' })
|
|
45
|
+
const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
|
|
46
|
+
const fileName = this.GenExcelReportFileName(type)
|
|
47
|
+
if (fileName) {
|
|
48
|
+
saveAs(blob, String(fileName))
|
|
49
|
+
} else {
|
|
50
|
+
throw new TypeError('Invalid report type provided.')
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Generates the file name for the Excel report based on the type.
|
|
56
|
+
* @param {number} type - The type of report.
|
|
57
|
+
* @returns {string | null} The file name for the report, or null if type is invalid.
|
|
58
|
+
*/
|
|
59
|
+
GenExcelReportFileName(type: number): string | null {
|
|
60
|
+
const fileNames: { [key: number]: string } = {
|
|
61
|
+
1: `report_${new Date().toISOString().replace(':', '-').replace('.', '-')}.xlsx`
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return fileNames[type] ?? null
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const getCardType = (cardNum: string) => {
|
|
2
|
+
let payCardType = ''
|
|
3
|
+
|
|
4
|
+
if (cardNum.startsWith('4')) {
|
|
5
|
+
payCardType = 'VISA'
|
|
6
|
+
} else if (cardNum.startsWith('5')) {
|
|
7
|
+
payCardType = 'MASTERCARD'
|
|
8
|
+
} else {
|
|
9
|
+
const regexMap = [
|
|
10
|
+
{ regEx: /^4[0-9]{5}/gi, cardType: 'VISA' },
|
|
11
|
+
{ regEx: /^5[1-5][0-9]{4}/gi, cardType: 'MASTERCARD' },
|
|
12
|
+
{ regEx: /^(5[06-8]\d{4}|6\d{5})/gi, cardType: 'MAESTRO' }
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
for (const { regEx, cardType } of regexMap) {
|
|
16
|
+
if (cardNum.match(regEx)) {
|
|
17
|
+
payCardType = cardType
|
|
18
|
+
break
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return payCardType
|
|
24
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jaccardSimilarity } from './helpers'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get categories that contain products with names similar to the given product name.
|
|
5
|
+
* Uses the Jaccard similarity coefficient for string comparison.
|
|
6
|
+
* @param {Array} data - The array of categories with product information.
|
|
7
|
+
* @param {string} productName - The name of the product to search for.
|
|
8
|
+
* @param {number} similarityThreshold - The minimum similarity threshold for products (0.0 to 1.0).
|
|
9
|
+
* @returns {Array} - An array of categories containing similar products.
|
|
10
|
+
*/
|
|
11
|
+
export const getCategoriesWithProduct = (
|
|
12
|
+
data = [],
|
|
13
|
+
productName = '',
|
|
14
|
+
similarityThreshold = 0.0) => {
|
|
15
|
+
// Validate input data
|
|
16
|
+
if (!data || !Array.isArray(data)) {
|
|
17
|
+
return data || []
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (typeof productName !== 'string' || productName.trim() === '') {
|
|
21
|
+
return data
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Convert product name to lowercase for case-insensitive comparison
|
|
25
|
+
const productNameLower = productName.toLowerCase()
|
|
26
|
+
|
|
27
|
+
// Use a Set to store unique product names for better performance
|
|
28
|
+
const uniqueProductNames = new Set()
|
|
29
|
+
|
|
30
|
+
// Store unique product names in the Set
|
|
31
|
+
data.forEach(category => {
|
|
32
|
+
if (category?.productFoodsAll && Array.isArray(category.productFoodsAll)) {
|
|
33
|
+
category.productFoodsAll.forEach(product => {
|
|
34
|
+
const productLower = product.pName.toLowerCase()
|
|
35
|
+
uniqueProductNames.add(productLower)
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
// Filter categories that contain products with names similar to the given product name
|
|
41
|
+
const matchingCategories = data.filter(category => {
|
|
42
|
+
if (category?.productFoodsAll && Array.isArray(category.productFoodsAll)) {
|
|
43
|
+
const products = category.productFoodsAll.some(product => {
|
|
44
|
+
const productLower = product?.pName?.toLowerCase()
|
|
45
|
+
return jaccardSimilarity(productNameLower, productLower) >= similarityThreshold
|
|
46
|
+
})
|
|
47
|
+
return products
|
|
48
|
+
}
|
|
49
|
+
return false
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
// Find similar products in each matching category
|
|
53
|
+
const findProduct = matchingCategories?.map(categories => {
|
|
54
|
+
const similarProducts = categories.productFoodsAll.filter(product => {
|
|
55
|
+
const productLower = product?.pName?.toLowerCase()
|
|
56
|
+
return productLower.includes(productNameLower)
|
|
57
|
+
})
|
|
58
|
+
return similarProducts.length > 0 ? { ...categories, productFoodsAll: similarProducts } : null
|
|
59
|
+
}).filter(Boolean)
|
|
60
|
+
|
|
61
|
+
return findProduct
|
|
62
|
+
}
|