npm-pkg-hook 1.13.0 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -2
- package/.babelrc +0 -0
- package/.github/pull_request_template.md +0 -18
- package/.github/workflows/pepeline.yaml +0 -30
- package/eslint.config.mts +0 -153
- package/expire.json +0 -1
- package/jsconfig.json +0 -28
- package/script.txt +0 -7
- package/src/config/client/errors.ts +0 -39
- package/src/config/client/index.ts +0 -1
- package/src/config/content/en.json +0 -5
- package/src/config/content/es.json +0 -5
- package/src/config/content/index.ts +0 -16
- package/src/cookies/index.ts +0 -3
- package/src/hooks/addTenMinutes/index.ts +0 -14
- package/src/hooks/calculateLogLatHaversine/index.ts +0 -41
- package/src/hooks/completeSchedules/index.ts +0 -22
- package/src/hooks/convertToMilitaryTime/index.ts +0 -18
- package/src/hooks/generateStoreURL/index.ts +0 -41
- package/src/hooks/generateTemplate/index.ts +0 -66
- package/src/hooks/getCardType/index.ts +0 -24
- package/src/hooks/getCategoriesWithProduct/helpers/index.ts +0 -7
- package/src/hooks/getCategoriesWithProduct/index.ts +0 -62
- package/src/hooks/getGlobalSession/index.ts +0 -69
- package/src/hooks/getSession/index.ts +0 -72
- package/src/hooks/getTodayTimestamps/index.ts +0 -70
- package/src/hooks/getTotalHours/index.ts +0 -76
- package/src/hooks/handleLogin/index.ts +0 -14
- package/src/hooks/index.ts +0 -154
- package/src/hooks/isTokenExpired/index.ts +0 -17
- package/src/hooks/newMessageSubscription/index.ts +0 -28
- package/src/hooks/newStoreOrderSubscription/index.ts +0 -26
- package/src/hooks/statusOpenStores/helpers/index.ts +0 -124
- package/src/hooks/statusOpenStores/index.ts +0 -221
- package/src/hooks/updateExtProductFoodsOptional/index.ts +0 -49
- package/src/hooks/useAcumulateDate/index.ts +0 -18
- package/src/hooks/useAllStoresPendingToRegister/index.ts +0 -37
- package/src/hooks/useAmountInput/index.ts +0 -127
- package/src/hooks/useAnimationFrame/index.ts +0 -45
- package/src/hooks/useAnimationText/index.ts +0 -31
- package/src/hooks/useAsideCart/helpers/index.ts +0 -22
- package/src/hooks/useAsideCart/index.ts +0 -217
- package/src/hooks/useAsideCart/queries.ts +0 -10
- package/src/hooks/useBanner/index.ts +0 -20
- package/src/hooks/useCart/index.ts +0 -2
- package/src/hooks/useCart/queries.ts +0 -174
- package/src/hooks/useCart/useCart/helpers/index.ts +0 -79
- package/src/hooks/useCart/useCart/index.ts +0 -424
- package/src/hooks/useCart/useGetCart/index.ts +0 -34
- package/src/hooks/useCatWithProduct/index.ts +0 -54
- package/src/hooks/useCatWithProduct/queries.ts +0 -200
- package/src/hooks/useCatWithProduct/types/index.ts +0 -104
- package/src/hooks/useCatWithProductClient/index.ts +0 -57
- package/src/hooks/useCatWithProductClient/queries.ts +0 -56
- package/src/hooks/useCategoriesProduct/index.ts +0 -14
- package/src/hooks/useCategoriesProduct/queries.ts +0 -16
- package/src/hooks/useCategoryInStore/index.ts +0 -167
- package/src/hooks/useCategoryInStore/queries.ts +0 -78
- package/src/hooks/useCategoryStore/index.ts +0 -8
- package/src/hooks/useCategoryStore/queries.ts +0 -16
- package/src/hooks/useChartData/index.ts +0 -171
- package/src/hooks/useChartData/useChartData/index.ts +0 -200
- package/src/hooks/useChartData/useChartDataAllOrders/index.ts +0 -94
- package/src/hooks/useChatRoomSubscription/index.ts +0 -28
- package/src/hooks/useCheckbox/index.ts +0 -115
- package/src/hooks/useCities/index.ts +0 -14
- package/src/hooks/useCities/queries.ts +0 -12
- package/src/hooks/useClients/index.ts +0 -97
- package/src/hooks/useClients/queries.ts +0 -215
- package/src/hooks/useColorByLetters/helpers/alea.ts +0 -73
- package/src/hooks/useColorByLetters/helpers/colors.ts +0 -45
- package/src/hooks/useColorByLetters/helpers/index.ts +0 -24
- package/src/hooks/useColorByLetters/helpers/mersenne_twister.ts +0 -118
- package/src/hooks/useColorByLetters/index.ts +0 -24
- package/src/hooks/useConnection/index.ts +0 -24
- package/src/hooks/useCountries/index.ts +0 -20
- package/src/hooks/useCountries/queries.ts +0 -12
- package/src/hooks/useCreateDeliveryTime/index.ts +0 -51
- package/src/hooks/useCreateOrderStatusType/index.ts +0 -134
- package/src/hooks/useCreateProduct/helpers/index.ts +0 -23
- package/src/hooks/useCreateProduct/helpers/manageCacheDataCatProduct/index.ts +0 -52
- package/src/hooks/useCreateProduct/helpers/useEditImageProduct/index.ts +0 -182
- package/src/hooks/useCreateProduct/index.ts +0 -337
- package/src/hooks/useCreateStorePendingToRegister/index.ts +0 -17
- package/src/hooks/useCreateStorePendingToRegister/queries.ts +0 -10
- package/src/hooks/useDashboardComponents/index.ts +0 -50
- package/src/hooks/useDeleteExtraProductFoods/index.ts +0 -13
- package/src/hooks/useDeleteSubProductOptional/index.ts +0 -32
- package/src/hooks/useDeleteSubProductOptional/queries.ts +0 -10
- package/src/hooks/useDeliveryTime/index.ts +0 -29
- package/src/hooks/useDepartments/index.ts +0 -14
- package/src/hooks/useDepartments/queries.ts +0 -13
- package/src/hooks/useDessert/helpers/index.ts +0 -51
- package/src/hooks/useDessert/index.ts +0 -529
- package/src/hooks/useDessertWithPrice/helpers/index.ts +0 -76
- package/src/hooks/useDessertWithPrice/index.ts +0 -381
- package/src/hooks/useDessertWithPrice/queries.ts +0 -18
- package/src/hooks/useDevWS/index.ts +0 -53
- package/src/hooks/useDevices/index.ts +0 -2
- package/src/hooks/useDevices/queries.ts +0 -28
- package/src/hooks/useDevices/useGetDevices.ts +0 -28
- package/src/hooks/useDevices/useRegisterDevices.ts +0 -75
- package/src/hooks/useDownloadReports/helpers/downloadFileFromResponse.ts +0 -21
- package/src/hooks/useDownloadReports/index.ts +0 -2
- package/src/hooks/useDownloadReports/useDownloadReportByDay/index.ts +0 -105
- package/src/hooks/useDownloadReports/useGetReportByDateRange/index.ts +0 -116
- package/src/hooks/useDrag/index.ts +0 -79
- package/src/hooks/useDropzone/index.ts +0 -94
- package/src/hooks/useDynamicAuth/index.ts +0 -14
- package/src/hooks/useDynamicAuth/queries.ts +0 -24
- package/src/hooks/useEditCategory/index.ts +0 -41
- package/src/hooks/useEditOneExtProductFoodOptional/index.ts +0 -28
- package/src/hooks/useEditOneExtProductFoodOptional/queries.ts +0 -16
- package/src/hooks/useEditSubProductOptional/index.ts +0 -12
- package/src/hooks/useEditSubProductOptional/queries.ts +0 -10
- package/src/hooks/useEmployee/index.ts +0 -18
- package/src/hooks/useEmployee/queries.ts +0 -85
- package/src/hooks/useEmployee/useCreateEmployee.ts +0 -90
- package/src/hooks/useEvent/index.ts +0 -34
- package/src/hooks/useFavoriteStores/index.ts +0 -31
- package/src/hooks/useFavoriteStores/queries.ts +0 -54
- package/src/hooks/useFetchJson/index.ts +0 -25
- package/src/hooks/useFetchMoreInteractions/index.jsx +0 -39
- package/src/hooks/useFilterConfigs/index.ts +0 -173
- package/src/hooks/useFingerprintjs/index.ts +0 -197
- package/src/hooks/useFormTools/index.ts +0 -143
- package/src/hooks/useFormatDate/index.ts +0 -91
- package/src/hooks/useFormatNumberPhone/index.ts +0 -23
- package/src/hooks/useFullScreenMode/index.ts +0 -61
- package/src/hooks/useGenerateNumberArray/index.ts +0 -17
- package/src/hooks/useGetAllLocationUser/index.ts +0 -13
- package/src/hooks/useGetAllLocationUser/queries.ts +0 -44
- package/src/hooks/useGetAllSales/index.ts +0 -26
- package/src/hooks/useGetCookies/index.ts +0 -43
- package/src/hooks/useGetExtProductFoodsSubOptionalAll/index.ts +0 -15
- package/src/hooks/useGetFoodRecomended/index.ts +0 -33
- package/src/hooks/useGetFoodRecomended/queries.ts +0 -47
- package/src/hooks/useGetMessagesToRoom/index.ts +0 -23
- package/src/hooks/useGetMinPrice/index.ts +0 -13
- package/src/hooks/useGetMinPrice/queries.ts +0 -7
- package/src/hooks/useGetOneStoreRating/index.ts +0 -41
- package/src/hooks/useGetOneStoreRating/queries.ts +0 -18
- package/src/hooks/useGetSalesAmountToday/index.ts +0 -31
- package/src/hooks/useGetStoreCookie/index.ts +0 -21
- package/src/hooks/useGoogleLogin/index.ts +0 -169
- package/src/hooks/useGoogleLogin/loadScript.ts +0 -15
- package/src/hooks/useGoogleLogin/removeScript.ts +0 -7
- package/src/hooks/useHover/index.ts +0 -32
- package/src/hooks/useImageOptimization/index.ts +0 -32
- package/src/hooks/useImageUploaderProduct/helper/canvasUtils.ts +0 -146
- package/src/hooks/useImageUploaderProduct/helper/getOrientation.ts +0 -54
- package/src/hooks/useImageUploaderProduct/helper/index.ts +0 -5
- package/src/hooks/useImageUploaderProduct/index.ts +0 -295
- package/src/hooks/useImageWeight/index.ts +0 -55
- package/src/hooks/useImagesStore/index.ts +0 -227
- package/src/hooks/useImagesStore/queries.ts +0 -193
- package/src/hooks/useImagesStore/utils/index.ts +0 -4
- package/src/hooks/useIncomingOrders/index.ts +0 -11
- package/src/hooks/useIncomingOrders/queries.ts +0 -87
- package/src/hooks/useInnerHtml/index.ts +0 -39
- package/src/hooks/useIntersection/index.ts +0 -84
- package/src/hooks/useInventory/index.ts +0 -2
- package/src/hooks/useInventory/queries.ts +0 -58
- package/src/hooks/useInventory/useGetProductsInStock.ts +0 -16
- package/src/hooks/useInventory/useUpdateManageStock.ts +0 -41
- package/src/hooks/useKeypress/index.ts +0 -28
- package/src/hooks/useLazyScript/index.ts +0 -74
- package/src/hooks/useLocalBackendIp/index.ts +0 -34
- package/src/hooks/useLocalSorage/index.ts +0 -36
- package/src/hooks/useLocationManager/index.ts +0 -63
- package/src/hooks/useLocationNavigate/index.ts +0 -54
- package/src/hooks/useLoginEmployeeInStore/index.ts +0 -38
- package/src/hooks/useLogout/helpers/BroadcastChannel.ts +0 -74
- package/src/hooks/useLogout/helpers/apiBaseUrl.ts +0 -12
- package/src/hooks/useLogout/helpers/fetchData.ts +0 -37
- package/src/hooks/useLogout/helpers/getCsrfToken.ts +0 -37
- package/src/hooks/useLogout/helpers/index.ts +0 -65
- package/src/hooks/useLogout/helpers/logger.ts +0 -88
- package/src/hooks/useLogout/helpers/parseUrl.ts +0 -39
- package/src/hooks/useLogout/index.ts +0 -105
- package/src/hooks/useManageNewOrder/helpers/index.ts +0 -45
- package/src/hooks/useManageNewOrder/helpers/mock.ts +0 -0
- package/src/hooks/useManageNewOrder/index.ts +0 -104
- package/src/hooks/useManageQueryParams/index.ts +0 -120
- package/src/hooks/useMobile/index.ts +0 -65
- package/src/hooks/useModules/helpers/index.ts +0 -1
- package/src/hooks/useModules/helpers/validateModules.ts +0 -43
- package/src/hooks/useModules/index.ts +0 -124
- package/src/hooks/useMouse/index.ts +0 -55
- package/src/hooks/useMutateHeight/index.ts +0 -36
- package/src/hooks/useOrderClient/index.ts +0 -5
- package/src/hooks/useOrderStatusTypes/index.ts +0 -2
- package/src/hooks/useOrderStatusTypes/useOrderStatusTypes/index.ts +0 -133
- package/src/hooks/useOrderStatusTypes/useUpdateOrderStatusPriorities/index.ts +0 -99
- package/src/hooks/useOrders/index.ts +0 -3
- package/src/hooks/useOrders/queries.ts +0 -99
- package/src/hooks/useOrders/useChangeOrderState/index.ts +0 -128
- package/src/hooks/useOrders/useOrdersFromStore/index.ts +0 -77
- package/src/hooks/usePWAInstall/index.ts +0 -38
- package/src/hooks/usePaymentMethod/index.ts +0 -3
- package/src/hooks/usePaymentMethod/paymentMethod.gql.ts +0 -62
- package/src/hooks/usePaymentMethod/paymentMethod.types.ts +0 -28
- package/src/hooks/usePaymentMethod/useCreatePaymentMethod/index.ts +0 -25
- package/src/hooks/usePaymentMethod/useGetAllPaymentMethods/index.ts +0 -19
- package/src/hooks/usePaymentMethod/useGetPaymentMethod/index.ts +0 -26
- package/src/hooks/usePortFetcher/index.ts +0 -33
- package/src/hooks/usePrintSaleTicket/index.ts +0 -68
- package/src/hooks/useProductsFood/index.ts +0 -341
- package/src/hooks/useProductsFood/queriesStore.ts +0 -964
- package/src/hooks/useProductsFood/types/index.ts +0 -0
- package/src/hooks/useProductsFood/useEditProduct.ts +0 -49
- package/src/hooks/useProductsFood/usetagsProducts.ts +0 -101
- package/src/hooks/useProviders/index.ts +0 -3
- package/src/hooks/useProviders/queries.ts +0 -31
- package/src/hooks/useProviders/useProvidersCreateStore/index.ts +0 -13
- package/src/hooks/useProviders/useProvidersDataStore/index.ts +0 -25
- package/src/hooks/useProvidersStore/index.ts +0 -25
- package/src/hooks/useProvidersStore/queries.ts +0 -31
- package/src/hooks/usePushNotificationOrder/index.ts +0 -52
- package/src/hooks/usePushNotifications/helpers/index.ts +0 -123
- package/src/hooks/usePushNotifications/index.ts +0 -150
- package/src/hooks/useQueryLocationsMap/index.ts +0 -20
- package/src/hooks/useQueryLocationsMap/queries.ts +0 -40
- package/src/hooks/useRatingArrayData/index.ts +0 -54
- package/src/hooks/useRatingArrayData/queries.ts +0 -19
- package/src/hooks/useReactToPrint/index.ts +0 -4
- package/src/hooks/useReactToPrint/index.txt +0 -1223
- package/src/hooks/useRemoveExtraProductFoodsOptional/index.ts +0 -24
- package/src/hooks/useRemoveExtraProductFoodsOptional/queries.ts +0 -48
- package/src/hooks/useReport/index.ts +0 -48
- package/src/hooks/useReport/queries.ts +0 -72
- package/src/hooks/useRestaurant/helpers/index.ts +0 -28
- package/src/hooks/useRestaurant/helpers/manageStatusOpen.ts +0 -26
- package/src/hooks/useRestaurant/index.ts +0 -71
- package/src/hooks/useRestaurant/queries.ts +0 -81
- package/src/hooks/useRoads/index.ts +0 -20
- package/src/hooks/useRoads/queries.ts +0 -13
- package/src/hooks/useRoles/index.ts +0 -4
- package/src/hooks/useRoles/queries.ts +0 -70
- package/src/hooks/useRoles/useCreateRole.ts +0 -40
- package/src/hooks/useRoles/useGetRoles.ts +0 -37
- package/src/hooks/useRoles/useRemoveRoles.ts +0 -40
- package/src/hooks/useRoles/useUpdateRolesPriority.ts +0 -44
- package/src/hooks/useSales/helpers/add-product.utils.ts +0 -120
- package/src/hooks/useSales/helpers/apply-discount-to-cart.utils.ts +0 -292
- package/src/hooks/useSales/helpers/comment-product.utils.ts +0 -41
- package/src/hooks/useSales/helpers/constants/index.ts +0 -38
- package/src/hooks/useSales/helpers/extras.utils.ts +0 -42
- package/src/hooks/useSales/helpers/filterProductsByCarProId.utils.ts +0 -17
- package/src/hooks/useSales/helpers/increment-product-quantity.utils.ts +0 -76
- package/src/hooks/useSales/helpers/index.ts +0 -3
- package/src/hooks/useSales/helpers/initializer.utils.ts +0 -22
- package/src/hooks/useSales/helpers/isStockInsufficient.ts +0 -3
- package/src/hooks/useSales/helpers/remove-product.utils.test.ts +0 -49
- package/src/hooks/useSales/helpers/remove-product.utils.ts +0 -34
- package/src/hooks/useSales/helpers/resolveProduct.ts +0 -29
- package/src/hooks/useSales/helpers/useAddToCart.ts +0 -64
- package/src/hooks/useSales/index.ts +0 -1418
- package/src/hooks/useSales/queries.ts +0 -532
- package/src/hooks/useSales/types/index.ts +0 -206
- package/src/hooks/useSales/types/use-sales.types.ts +0 -8
- package/src/hooks/useSales/useGetSale.ts +0 -21
- package/src/hooks/useSales/useTotalSales.ts +0 -24
- package/src/hooks/useSaveAvailableProduct/helpers/index.ts +0 -38
- package/src/hooks/useSaveAvailableProduct/index.ts +0 -32
- package/src/hooks/useSaveAvailableProduct/queries.ts +0 -10
- package/src/hooks/useSaveLocation/index.ts +0 -17
- package/src/hooks/useSaveLocation/queries.ts +0 -19
- package/src/hooks/useSchedule/index.ts +0 -35
- package/src/hooks/useSchedule/queries.ts +0 -43
- package/src/hooks/useSchedule/schedule.ts +0 -79
- package/src/hooks/useScheduleData/index.ts +0 -135
- package/src/hooks/useScroll/index.ts +0 -56
- package/src/hooks/useScrollRotate/index.ts +0 -16
- package/src/hooks/useSetImageProducts/index.ts +0 -59
- package/src/hooks/useSetImageProducts/queries.ts +0 -18
- package/src/hooks/useSetSession/index.ts +0 -44
- package/src/hooks/useSetState/index.ts +0 -24
- package/src/hooks/useSetupSchedule/helpers/index.ts +0 -85
- package/src/hooks/useSetupSchedule/index.ts +0 -284
- package/src/hooks/useStatusOpenStore/helpers/index.ts +0 -124
- package/src/hooks/useStatusOpenStore/index.ts +0 -195
- package/src/hooks/useStatusOrdersClient/helpers/index.ts +0 -14
- package/src/hooks/useStatusOrdersClient/index.ts +0 -18
- package/src/hooks/useStatusOrdersClient/queries.ts +0 -80
- package/src/hooks/useStock/index.ts +0 -1
- package/src/hooks/useStock/useStockUpdatedAllSubscription.ts +0 -40
- package/src/hooks/useStockMovements/helpers/index.ts +0 -16
- package/src/hooks/useStockMovements/index.ts +0 -39
- package/src/hooks/useStore/index.ts +0 -83
- package/src/hooks/useStore/queries.ts +0 -163
- package/src/hooks/useStoreCalendar/index.ts +0 -5
- package/src/hooks/useStoreContacts/index.ts +0 -53
- package/src/hooks/useStoreContacts/queries.ts +0 -48
- package/src/hooks/useStoreTable/index.ts +0 -2
- package/src/hooks/useStoreTable/queries.ts +0 -47
- package/src/hooks/useStoreTable/useStoreTableCreate.ts +0 -77
- package/src/hooks/useStoreTable/useStoreTables.ts +0 -15
- package/src/hooks/useSubscriptionValidation/index.ts +0 -112
- package/src/hooks/useTagProducts/index.ts +0 -3
- package/src/hooks/useTagProducts/useDeleteOneTag.ts +0 -106
- package/src/hooks/useTagProducts/useGetAllTags.ts +0 -68
- package/src/hooks/useTagProducts/useRegisterMultipleTags.ts +0 -157
- package/src/hooks/useTheme/index.ts +0 -65
- package/src/hooks/useTimeAgo/useTimeAgo.ts +0 -39
- package/src/hooks/useTokenCards/index.ts +0 -45
- package/src/hooks/useTopProductsMovements/index.ts +0 -27
- package/src/hooks/useTotalAllSales/index.ts +0 -25
- package/src/hooks/useTotalProductsInStock/index.ts +0 -23
- package/src/hooks/useTotalProductsSold/index.ts +0 -23
- package/src/hooks/useTotalProductsSolded/index.ts +0 -20
- package/src/hooks/useUpdateCart/index.ts +0 -131
- package/src/hooks/useUpdateCartCookie/index.ts +0 -60
- package/src/hooks/useUpdateDashboardComponent/index.ts +0 -91
- package/src/hooks/useUpdateExistingOrders/index.ts +0 -85
- package/src/hooks/useUpdateExtProductFoodsSubOptional/index.ts +0 -61
- package/src/hooks/useUpdateModuleOrder/index.ts +0 -37
- package/src/hooks/useUpdateMultipleExtProduct/index.ts +0 -34
- package/src/hooks/useUpdateMultipleExtProduct/queries.ts +0 -33
- package/src/hooks/useUpdateMultipleProducts/index.ts +0 -117
- package/src/hooks/useUpdateMultipleProducts/queries.ts +0 -51
- package/src/hooks/useUploadProducts/helpers/index.ts +0 -1
- package/src/hooks/useUploadProducts/helpers/parseNumber.ts +0 -37
- package/src/hooks/useUploadProducts/helpers/validateProductDataExcel.ts +0 -73
- package/src/hooks/useUploadProducts/index.ts +0 -442
- package/src/hooks/useUpsertGoal/index.ts +0 -68
- package/src/hooks/useUser/index.ts +0 -24
- package/src/hooks/useUser/queries.ts +0 -131
- package/src/hooks/useWeeklyStockMovement/helpers/index.ts +0 -32
- package/src/hooks/useWeeklyStockMovement/index.ts +0 -52
- package/src/hooks/useWindowSize/index.ts +0 -45
- package/src/index.ts +0 -11
- package/src/mock/dessert/index.ts +0 -16
- package/src/mock/index.ts +0 -1
- package/src/security/index.ts +0 -1
- package/src/services/index.ts +0 -1
- package/src/utils/UtilDateRange.ts +0 -56
- package/src/utils/generateCode.ts +0 -222
- package/src/utils/index.ts +0 -2
- package/src/utils/utils.ts +0 -344
- package/tsconfig.eslint.json +0 -16
- package/tsconfig.json +0 -21
- package/tsup.config.ts +0 -24
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { gql } from '@apollo/client'
|
|
2
|
-
|
|
3
|
-
export const LOGIN = gql`
|
|
4
|
-
mutation login($input: LoginInput){
|
|
5
|
-
login(input: $input){
|
|
6
|
-
token
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
`
|
|
10
|
-
export const GET_USER_PROFILE = gql`
|
|
11
|
-
query getOneUserProfile($id: ID) {
|
|
12
|
-
getOneUserProfile(id: $id){
|
|
13
|
-
upId
|
|
14
|
-
id
|
|
15
|
-
upPhone
|
|
16
|
-
upImage
|
|
17
|
-
upDateBir
|
|
18
|
-
upBloodG
|
|
19
|
-
upAddress
|
|
20
|
-
ctId
|
|
21
|
-
dId
|
|
22
|
-
upZipCode
|
|
23
|
-
cId
|
|
24
|
-
upLatitude
|
|
25
|
-
upLongitude
|
|
26
|
-
user {
|
|
27
|
-
id
|
|
28
|
-
name
|
|
29
|
-
username
|
|
30
|
-
lastName
|
|
31
|
-
email
|
|
32
|
-
avatar
|
|
33
|
-
uToken
|
|
34
|
-
uPhoNum
|
|
35
|
-
ULocation
|
|
36
|
-
upLat
|
|
37
|
-
uState
|
|
38
|
-
upLon
|
|
39
|
-
upIdeDoc
|
|
40
|
-
siteWeb
|
|
41
|
-
description
|
|
42
|
-
password
|
|
43
|
-
createAt
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
`
|
|
49
|
-
|
|
50
|
-
export const GET_USER = gql`
|
|
51
|
-
query getUser($id: ID, $email: String){
|
|
52
|
-
getUser(id: $id email: $email){
|
|
53
|
-
id
|
|
54
|
-
name
|
|
55
|
-
username
|
|
56
|
-
lastName
|
|
57
|
-
email
|
|
58
|
-
avatar
|
|
59
|
-
uToken
|
|
60
|
-
uPhoNum
|
|
61
|
-
ULocation
|
|
62
|
-
upLat
|
|
63
|
-
uState
|
|
64
|
-
idRole
|
|
65
|
-
upLon
|
|
66
|
-
upIdeDoc
|
|
67
|
-
siteWeb
|
|
68
|
-
description
|
|
69
|
-
associateStore
|
|
70
|
-
role {
|
|
71
|
-
name
|
|
72
|
-
permissions
|
|
73
|
-
description
|
|
74
|
-
createdAt
|
|
75
|
-
updatedAt
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
`
|
|
81
|
-
export const GET_ALL_USER = gql`
|
|
82
|
-
query getAllUser($search: String){
|
|
83
|
-
getAllUser(search: $search){
|
|
84
|
-
id
|
|
85
|
-
name
|
|
86
|
-
username
|
|
87
|
-
lastName
|
|
88
|
-
email
|
|
89
|
-
email
|
|
90
|
-
siteWeb
|
|
91
|
-
description
|
|
92
|
-
uPhoNum
|
|
93
|
-
upLat
|
|
94
|
-
upLon
|
|
95
|
-
createAt
|
|
96
|
-
avatar
|
|
97
|
-
latestMessage {
|
|
98
|
-
uuid
|
|
99
|
-
content
|
|
100
|
-
from
|
|
101
|
-
to
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
`
|
|
106
|
-
export const UPDATE_AVATAR = gql`
|
|
107
|
-
mutation updateAvatar($file: Upload){
|
|
108
|
-
UpdateAvatar(file: $file){
|
|
109
|
-
status
|
|
110
|
-
urlAvatar
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
`
|
|
114
|
-
|
|
115
|
-
export const SET_USER_PROFILE = gql`
|
|
116
|
-
mutation setUserProfile($data: IUserProfile!) {
|
|
117
|
-
setUserProfile(input: $data){
|
|
118
|
-
upId
|
|
119
|
-
id
|
|
120
|
-
upPhone
|
|
121
|
-
upDateBir
|
|
122
|
-
upImage
|
|
123
|
-
upBloodG
|
|
124
|
-
cId
|
|
125
|
-
ctId
|
|
126
|
-
dId
|
|
127
|
-
upAddress
|
|
128
|
-
upZipCode
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
`
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fills missing weeks for the last 7 weeks, ensuring continuous data.
|
|
3
|
-
* If a week is missing, it fills it with totalOut: 0 and percentageChange: "N/A".
|
|
4
|
-
*
|
|
5
|
-
* @param {Array} data - Array of weekly stock movement objects.
|
|
6
|
-
* @returns {Array} - Filled data ensuring the last 7 weeks are covered.
|
|
7
|
-
*/
|
|
8
|
-
export const fillLast7Weeks = (data) => {
|
|
9
|
-
const today = new Date()
|
|
10
|
-
const last7Weeks = []
|
|
11
|
-
|
|
12
|
-
// Generar las últimas 7 semanas (cada lunes)
|
|
13
|
-
for (let i = 6; i >= 0; i--) {
|
|
14
|
-
const weekDate = new Date(today)
|
|
15
|
-
weekDate.setDate(today.getDate() - today.getDay() - (i * 7) + 1) // Ajustar para que sea lunes
|
|
16
|
-
const weekStart = weekDate.toISOString().split('T')[0] // Formato YYYY-MM-DD
|
|
17
|
-
last7Weeks.push(weekStart)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Mapear los datos existentes para acceso rápido
|
|
21
|
-
const dataMap = new Map(data.map(item => {return [item.weekStart, item]}))
|
|
22
|
-
|
|
23
|
-
// Construir la nueva lista asegurando que todas las semanas estén presentes
|
|
24
|
-
return last7Weeks.map(weekStart => {return (
|
|
25
|
-
dataMap.get(weekStart) || {
|
|
26
|
-
weekStart,
|
|
27
|
-
totalOut: 0,
|
|
28
|
-
prevTotalOut: null,
|
|
29
|
-
percentageChange: 'N/A'
|
|
30
|
-
}
|
|
31
|
-
)})
|
|
32
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { gql, useQuery } from '@apollo/client'
|
|
2
|
-
|
|
3
|
-
import { fillLast7Weeks } from './helpers' // Asegúrate de importar el helper
|
|
4
|
-
|
|
5
|
-
const GET_WEEKLY_STOCK_MOVEMENT = gql`
|
|
6
|
-
query GetStockMovementPercentageChange {
|
|
7
|
-
getStockMovementWeeklyComparison {
|
|
8
|
-
weekStart
|
|
9
|
-
totalOut
|
|
10
|
-
prevTotalOut
|
|
11
|
-
percentageChange
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
`
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Custom hook to fetch and format weekly stock movement data.
|
|
18
|
-
* @returns {Object} - { data, loading, error, formattedData }
|
|
19
|
-
*/
|
|
20
|
-
export const useWeeklyStockMovement = () => {
|
|
21
|
-
const { data, loading, error } = useQuery(GET_WEEKLY_STOCK_MOVEMENT)
|
|
22
|
-
|
|
23
|
-
// Transform data and fill missing weeks
|
|
24
|
-
const rawData = data?.getStockMovementWeeklyComparison || []
|
|
25
|
-
const formattedData = fillLast7Weeks(
|
|
26
|
-
rawData.map(item => {return {
|
|
27
|
-
...item,
|
|
28
|
-
percentageChange: formatPercentageChange(item.percentageChange)
|
|
29
|
-
}})
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
return [formattedData, { loading, error }]
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Ensures percentageChange is a valid string percentage, clamping between -100% and 100%.
|
|
37
|
-
*
|
|
38
|
-
* @param {string | null} percentageChange - Raw percentage change value.
|
|
39
|
-
* @returns {string} - Formatted and clamped percentage change.
|
|
40
|
-
*/
|
|
41
|
-
const formatPercentageChange = (percentageChange) => {
|
|
42
|
-
if (percentageChange === null) return 'N/A'
|
|
43
|
-
|
|
44
|
-
// Convertir a número
|
|
45
|
-
let parsedValue = parseFloat(percentageChange)
|
|
46
|
-
|
|
47
|
-
// Clampear entre -100% y 100%
|
|
48
|
-
if (isNaN(parsedValue)) return 'N/A'
|
|
49
|
-
parsedValue = Math.max(-100, Math.min(100, parsedValue))
|
|
50
|
-
|
|
51
|
-
return `${parsedValue.toFixed(1)}`
|
|
52
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* A custom React hook that provides the current window size.
|
|
5
|
-
* @returns An object containing the current window width and height
|
|
6
|
-
*/
|
|
7
|
-
export function useWindowSize () {
|
|
8
|
-
// Initialize state with undefined width/height so server and client renders match
|
|
9
|
-
// Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/
|
|
10
|
-
const [windowSize, setWindowSize] = useState<{ width: number | undefined; height: number | undefined }>({
|
|
11
|
-
width: undefined,
|
|
12
|
-
height: undefined
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
// Handler to call on window resize
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
*/
|
|
20
|
-
function handleResize () {
|
|
21
|
-
// Set window width/height to state
|
|
22
|
-
setWindowSize({
|
|
23
|
-
width: window.innerWidth,
|
|
24
|
-
height: window.innerHeight
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Add event listener
|
|
29
|
-
window.addEventListener('resize', handleResize)
|
|
30
|
-
|
|
31
|
-
// Call handler right away so state gets updated with initial window size
|
|
32
|
-
handleResize()
|
|
33
|
-
|
|
34
|
-
// Remove event listener on cleanup
|
|
35
|
-
return () => {return window.removeEventListener('resize', handleResize)}
|
|
36
|
-
}, []) // Empty array ensures that effect is only run on mount
|
|
37
|
-
|
|
38
|
-
return windowSize
|
|
39
|
-
}
|
|
40
|
-
// Como se usa
|
|
41
|
-
|
|
42
|
-
// 1 -const size = useWindowSize();
|
|
43
|
-
// 2 <div>
|
|
44
|
-
// {size.width}px / {size.height}px
|
|
45
|
-
// </div>
|
package/src/index.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import pkg from '../package.json';
|
|
2
|
-
export * from './hooks/index'
|
|
3
|
-
export * from './utils'
|
|
4
|
-
export * from './utils/generateCode'
|
|
5
|
-
export * from './cookies'
|
|
6
|
-
export * from './security'
|
|
7
|
-
export * from './config/client'
|
|
8
|
-
|
|
9
|
-
// Export the version from package.json
|
|
10
|
-
export const version = pkg.version;
|
|
11
|
-
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { RandomCode } from '../../utils'
|
|
2
|
-
|
|
3
|
-
export const MockData = {
|
|
4
|
-
lists: {
|
|
5
|
-
'01list': {
|
|
6
|
-
id: RandomCode(9),
|
|
7
|
-
title: 'Elige tu salsa favorita',
|
|
8
|
-
numberLimit: 0,
|
|
9
|
-
required: 0,
|
|
10
|
-
value: '',
|
|
11
|
-
cards: [
|
|
12
|
-
]
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
listIds: ['01list']
|
|
16
|
-
}
|
package/src/mock/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './dessert'
|
package/src/security/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const future = null
|
package/src/services/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const serviceName = 'dummy'
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns an object containing the start and end of the day in local time (UTC-5 by default) for the given date.
|
|
3
|
-
* @returns {{ start: Date; end: Date }} An object with `start` and `end` Date properties.
|
|
4
|
-
*/
|
|
5
|
-
export class UtilDateRange {
|
|
6
|
-
private readonly date: Date
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @param date
|
|
11
|
-
* @returns UtilDateRange instance
|
|
12
|
-
*/
|
|
13
|
-
constructor(date: Date | string | number = new Date()) {
|
|
14
|
-
this.date = new Date(date) // Asegura que sea un objeto Date
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* @param date
|
|
20
|
-
* @returns Date ajustada a la zona horaria local (UTC-5)
|
|
21
|
-
*/
|
|
22
|
-
private toLocalTime(date: Date | string | number): Date {
|
|
23
|
-
const offset = -5 // UTC-5 (ajustar si es necesario)
|
|
24
|
-
const localDate = new Date(date)
|
|
25
|
-
localDate.setHours(localDate.getHours() + offset)
|
|
26
|
-
return localDate
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @returns Date al inicio del día (00:00:00.000) en hora local
|
|
31
|
-
*/
|
|
32
|
-
getStartOfDay(): Date {
|
|
33
|
-
const localDate = this.toLocalTime(this.date)
|
|
34
|
-
localDate.setHours(0, 0, 0, 0)
|
|
35
|
-
return localDate
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* @returns Date al final del día (23:59:59.999) en hora local
|
|
40
|
-
*/
|
|
41
|
-
getEndOfDay(): Date {
|
|
42
|
-
const localDate = this.toLocalTime(this.date)
|
|
43
|
-
localDate.setHours(23, 59, 59, 999)
|
|
44
|
-
return localDate
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @returns {{ start: Date; end: Date }} Objeto con las fechas de inicio y fin del día en hora local
|
|
49
|
-
*/
|
|
50
|
-
getRange(): { start: Date; end: Date } {
|
|
51
|
-
return {
|
|
52
|
-
start: this.getStartOfDay(),
|
|
53
|
-
end: this.getEndOfDay()
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
// ticket-generator.ts
|
|
2
|
-
/**
|
|
3
|
-
* Ticket generator for POS systems.
|
|
4
|
-
* - Provides numeric and alphanumeric strategies.
|
|
5
|
-
* - Supports prefix, timestamp embedding, synchronous generation and async uniqueness check.
|
|
6
|
-
*
|
|
7
|
-
* JSDoc comments are in English as requested.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
type Strategy = 'alphanumeric' | 'numeric';
|
|
11
|
-
|
|
12
|
-
export interface TicketConfig {
|
|
13
|
-
/** Total length of the generated code excluding prefix. Minimum 4. */
|
|
14
|
-
length?: number;
|
|
15
|
-
/** Strategy: 'alphanumeric' | 'numeric' */
|
|
16
|
-
strategy?: Strategy;
|
|
17
|
-
/** Optional human-readable prefix (e.g. 'TKT-', 'POS1-') */
|
|
18
|
-
prefix?: string;
|
|
19
|
-
/** If true, embed a short timestamp chunk (base36) at start of payload */
|
|
20
|
-
timestamp?: boolean;
|
|
21
|
-
/** Maximum attempts for uniqueness check when using generateUniqueAsync */
|
|
22
|
-
maxAttempts?: number;
|
|
23
|
-
/** Padding char for numeric sequences (only used if `useSequential` provided) */
|
|
24
|
-
padChar?: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Result returned by generators.
|
|
29
|
-
*/
|
|
30
|
-
export type TicketResult =
|
|
31
|
-
| { success: true; code: string; error?: undefined }
|
|
32
|
-
| { success: false; error: string; code?: string };
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Async uniqueness checker signature.
|
|
36
|
-
* Implement with DB query that returns true if code is unique (not found).
|
|
37
|
-
*/
|
|
38
|
-
export type IsUniqueFn = (code: string) => Promise<boolean>;
|
|
39
|
-
|
|
40
|
-
/* -------------------- Implementation -------------------- */
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Secure random integer in [0, max)
|
|
44
|
-
* @param max
|
|
45
|
-
* @returns random integer in [0, max)
|
|
46
|
-
*/
|
|
47
|
-
const secureRandomInt = (max: number): number => {
|
|
48
|
-
if (typeof crypto !== 'undefined' && typeof (crypto as any).getRandomValues === 'function') {
|
|
49
|
-
// browser
|
|
50
|
-
const arr = new Uint32Array(1);
|
|
51
|
-
(crypto as any).getRandomValues(arr)
|
|
52
|
-
return arr[0] % max
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
// node
|
|
56
|
-
|
|
57
|
-
const nodeCrypto = require('crypto')
|
|
58
|
-
const buf = nodeCrypto.randomBytes(4)
|
|
59
|
-
const val = buf.readUInt32BE(0)
|
|
60
|
-
return val % max
|
|
61
|
-
} catch {
|
|
62
|
-
// fallback (less secure)
|
|
63
|
-
return Math.floor(Math.random() * max)
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Build a random string from charset.
|
|
69
|
-
* @param length
|
|
70
|
-
* @param charset
|
|
71
|
-
*/
|
|
72
|
-
const randomFromCharset = (length: number, charset: string): string => {
|
|
73
|
-
const out: string[] = []
|
|
74
|
-
const m = charset.length
|
|
75
|
-
for (let i = 0; i < length; i += 1) {
|
|
76
|
-
out.push(charset[secureRandomInt(m)])
|
|
77
|
-
}
|
|
78
|
-
return out.join('')
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Short fixed-size timestamp chunk that respects strategy.
|
|
83
|
-
* - For 'numeric' returns decimal digits (zero-padded).
|
|
84
|
-
* - For 'alphanumeric' returns base36 chars.
|
|
85
|
-
*
|
|
86
|
-
* @param strategy generation strategy
|
|
87
|
-
* @param size chunk length (default 4)
|
|
88
|
-
* @returns timestamp chunk string of length `size`
|
|
89
|
-
*/
|
|
90
|
-
const timestampChunk = (strategy: Strategy, size = 4): string => {
|
|
91
|
-
const now = Date.now()
|
|
92
|
-
if (strategy === 'numeric') {
|
|
93
|
-
const mod = Math.pow(10, size)
|
|
94
|
-
const n = (now % mod).toString().padStart(size, '0')
|
|
95
|
-
return n
|
|
96
|
-
}
|
|
97
|
-
// alphanumeric: compact base36 slice (keeps letters & digits)
|
|
98
|
-
return now.toString(36).slice(-size).padStart(size, '0')
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Validate config and return normalized defaults or error string.
|
|
103
|
-
* @param cfg
|
|
104
|
-
*/
|
|
105
|
-
const normalizeConfig = (cfg?: TicketConfig): { cfg?: Required<TicketConfig>; error?: string } => {
|
|
106
|
-
const defaultCfg: Required<TicketConfig> = {
|
|
107
|
-
length: 10,
|
|
108
|
-
strategy: 'alphanumeric',
|
|
109
|
-
prefix: '',
|
|
110
|
-
timestamp: false,
|
|
111
|
-
maxAttempts: 5,
|
|
112
|
-
padChar: '0'
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (!cfg) return { cfg: defaultCfg }
|
|
116
|
-
|
|
117
|
-
const merged = { ...defaultCfg, ...cfg }
|
|
118
|
-
|
|
119
|
-
if (!Number.isInteger(merged.length) || merged.length < 4) {
|
|
120
|
-
return { error: 'length must be an integer >= 4' }
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (!['alphanumeric', 'numeric'].includes(merged.strategy)) {
|
|
124
|
-
return { error: "strategy must be 'alphanumeric' or 'numeric'" }
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (typeof merged.prefix !== 'string' || /[^A-Za-z0-9-_]/.test(merged.prefix)) {
|
|
128
|
-
return { error: 'prefix must be alphanumeric, dash or underscore only' }
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if (typeof merged.maxAttempts !== 'number' || merged.maxAttempts < 1) {
|
|
132
|
-
merged.maxAttempts = defaultCfg.maxAttempts
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (typeof merged.padChar !== 'string' || merged.padChar.length !== 1) {
|
|
136
|
-
merged.padChar = defaultCfg.padChar
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return { cfg: merged }
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Generate a ticket code (synchronous, no uniqueness guarantee).
|
|
144
|
-
* Use generateUniqueAsync if you need persistence-level uniqueness.
|
|
145
|
-
*
|
|
146
|
-
* @param config Ticket generation options
|
|
147
|
-
* @returns TicketResult with code or error
|
|
148
|
-
*/
|
|
149
|
-
export const generateTicket = (config?: TicketConfig): TicketResult => {
|
|
150
|
-
const normalized = normalizeConfig(config)
|
|
151
|
-
if (normalized.error) return { success: false, error: normalized.error }
|
|
152
|
-
const cfg = normalized.cfg!
|
|
153
|
-
|
|
154
|
-
const payloadLen = cfg.length
|
|
155
|
-
const prefix = cfg.prefix || ''
|
|
156
|
-
|
|
157
|
-
// decide charset
|
|
158
|
-
const numericCharset = '0123456789'
|
|
159
|
-
const alphaNumCharset = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz0123456789' // removed O/0/l for readability
|
|
160
|
-
const charset = cfg.strategy === 'numeric' ? numericCharset : alphaNumCharset
|
|
161
|
-
|
|
162
|
-
// prepare timestamp chunk if requested (keep it short and strategy-aware)
|
|
163
|
-
const ts = cfg.timestamp ? timestampChunk(cfg.strategy, 4) : ''
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
// calc remaining length for random part
|
|
167
|
-
const remaining = payloadLen - ts.length
|
|
168
|
-
if (remaining < 1) return { success: false, error: 'length too small for timestamp embedding' }
|
|
169
|
-
|
|
170
|
-
const randomPart = randomFromCharset(remaining, charset)
|
|
171
|
-
|
|
172
|
-
const code = `${prefix}${ts}${randomPart}`
|
|
173
|
-
return { success: true, code }
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Generate a ticket code with uniqueness guarantee using an async uniqueness checker.
|
|
178
|
-
* Tries up to config.maxAttempts times.
|
|
179
|
-
*
|
|
180
|
-
* @param isUnique Async function that returns true if code is unique (not present)
|
|
181
|
-
* @param config Ticket generation options
|
|
182
|
-
* @returns TicketResult with unique code or error
|
|
183
|
-
*/
|
|
184
|
-
export const generateUniqueAsync = async (isUnique: IsUniqueFn, config?: TicketConfig): Promise<TicketResult> => {
|
|
185
|
-
const normalized = normalizeConfig(config)
|
|
186
|
-
if (normalized.error) return { success: false, error: normalized.error }
|
|
187
|
-
const cfg = normalized.cfg!
|
|
188
|
-
|
|
189
|
-
for (let attempt = 1; attempt <= cfg.maxAttempts; attempt += 1) {
|
|
190
|
-
const candidateRes = generateTicket(cfg)
|
|
191
|
-
if (!candidateRes.success) return candidateRes
|
|
192
|
-
|
|
193
|
-
const candidate = candidateRes.code
|
|
194
|
-
try {
|
|
195
|
-
const unique = await isUnique(candidate)
|
|
196
|
-
if (unique) return { success: true, code: candidate }
|
|
197
|
-
// else collision -> retry
|
|
198
|
-
} catch (err) {
|
|
199
|
-
return { success: false, error: `isUnique function threw: ${(err as Error).message}` }
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return { success: false, error: 'unable to generate unique ticket after max attempts' }
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/* -------------------- Example usage -------------------- */
|
|
207
|
-
|
|
208
|
-
/*
|
|
209
|
-
Example (sync):
|
|
210
|
-
const res = generateTicket({ length: 8, strategy: 'numeric', prefix: 'T-', timestamp: true });
|
|
211
|
-
if (!res.success) console.error(res.error);
|
|
212
|
-
else console.log('Ticket:', res.code);
|
|
213
|
-
|
|
214
|
-
Example (async uniqueness check, e.g. DB):
|
|
215
|
-
const isUniqueInDb = async (code: string) => {
|
|
216
|
-
// query DB to see if code exists; return true if NOT exist
|
|
217
|
-
return !(await db.exists({ ticketCode: code }));
|
|
218
|
-
};
|
|
219
|
-
const unique = await generateUniqueAsync(isUniqueInDb, { length: 10, strategy: 'alphanumeric', prefix: 'POS1-', timestamp: true });
|
|
220
|
-
if (unique.success) console.log('Unique ticket:', unique.code);
|
|
221
|
-
else console.error('Error generating unique:', unique.error);
|
|
222
|
-
*/
|
package/src/utils/index.ts
DELETED