@otim/utils 0.0.4 → 0.0.6
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/api/index.d.mts +1858 -7
- package/dist/api/index.d.mts.map +1 -0
- package/dist/api/index.d.ts +1857 -6
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1514 -1994
- package/dist/api/index.js.map +1 -7
- package/dist/api/index.mjs +1394 -1962
- package/dist/api/index.mjs.map +1 -7
- package/dist/api-urls-B-GTEiT3.d.mts +49 -0
- package/dist/api-urls-B-GTEiT3.d.mts.map +1 -0
- package/dist/api-urls-Cd20DG4i.js +171 -0
- package/dist/api-urls-Cd20DG4i.js.map +1 -0
- package/dist/api-urls-DJcIKBCy.mjs +135 -0
- package/dist/api-urls-DJcIKBCy.mjs.map +1 -0
- package/dist/api-urls-SKeIQMoZ.d.ts +49 -0
- package/dist/api-urls-SKeIQMoZ.d.ts.map +1 -0
- package/dist/chains/index.d.mts +13568 -16
- package/dist/chains/index.d.mts.map +1 -0
- package/dist/chains/index.d.ts +13567 -15
- package/dist/chains/index.d.ts.map +1 -1
- package/dist/chains/index.js +3615 -424
- package/dist/chains/index.js.map +1 -7
- package/dist/chains/index.mjs +3561 -440
- package/dist/chains/index.mjs.map +1 -7
- package/dist/chunk-kSYXY2_d.js +34 -0
- package/dist/client-factory-7xUSPC9I.mjs +42 -0
- package/dist/client-factory-7xUSPC9I.mjs.map +1 -0
- package/dist/client-factory-C3A4RPdj.d.ts +22 -0
- package/dist/client-factory-C3A4RPdj.d.ts.map +1 -0
- package/dist/client-factory-CTI_Nt35.js +49 -0
- package/dist/client-factory-CTI_Nt35.js.map +1 -0
- package/dist/client-factory-DOL0ZTWy.d.mts +22 -0
- package/dist/client-factory-DOL0ZTWy.d.mts.map +1 -0
- package/dist/constants.d.mts +14 -24
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.d.ts +13 -23
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +31 -46
- package/dist/constants.js.map +1 -7
- package/dist/constants.mjs +22 -26
- package/dist/constants.mjs.map +1 -7
- package/dist/date-CFzrYcjE.js +536 -0
- package/dist/date-CFzrYcjE.js.map +1 -0
- package/dist/date-gBac-Om9.mjs +313 -0
- package/dist/date-gBac-Om9.mjs.map +1 -0
- package/dist/defineProperty-DbMdhrDE.js +49 -0
- package/dist/defineProperty-DzhmunJg.mjs +43 -0
- package/dist/formatters/index.d.mts +1 -2
- package/dist/formatters/index.d.ts +1 -2
- package/dist/formatters/index.js +0 -19
- package/dist/formatters/index.mjs +1 -1
- package/dist/helpers/index.d.mts +562 -19
- package/dist/helpers/index.d.mts.map +1 -0
- package/dist/helpers/index.d.ts +561 -18
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +106 -1344
- package/dist/helpers/index.mjs +3 -1315
- package/dist/helpers-BNiSxjGq.mjs +895 -0
- package/dist/helpers-BNiSxjGq.mjs.map +1 -0
- package/dist/helpers-DoC7Xl12.js +1291 -0
- package/dist/helpers-DoC7Xl12.js.map +1 -0
- package/dist/index-Bv0kUz4w.d.ts +540 -0
- package/dist/index-Bv0kUz4w.d.ts.map +1 -0
- package/dist/index-DartTKk2.d.mts +540 -0
- package/dist/index-DartTKk2.d.mts.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +0 -2
- package/dist/index.mjs +1 -1
- package/dist/instructions/index.d.mts +687 -6
- package/dist/instructions/index.d.mts.map +1 -0
- package/dist/instructions/index.d.ts +686 -5
- package/dist/instructions/index.d.ts.map +1 -1
- package/dist/instructions/index.js +1912 -1091
- package/dist/instructions/index.js.map +1 -7
- package/dist/instructions/index.mjs +1887 -1058
- package/dist/instructions/index.mjs.map +1 -7
- package/dist/payments/index.d.mts +322 -16
- package/dist/payments/index.d.mts.map +1 -0
- package/dist/payments/index.d.ts +321 -15
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +616 -1258
- package/dist/payments/index.js.map +1 -7
- package/dist/payments/index.mjs +594 -1236
- package/dist/payments/index.mjs.map +1 -7
- package/dist/schemas/index.d.mts +2 -10
- package/dist/schemas/index.d.ts +2 -10
- package/dist/schemas/index.js +350 -393
- package/dist/schemas/index.js.map +1 -7
- package/dist/schemas/index.mjs +283 -371
- package/dist/schemas/index.mjs.map +1 -7
- package/dist/server/index.d.mts +354 -3
- package/dist/server/index.d.mts.map +1 -0
- package/dist/server/index.d.ts +353 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +248 -435
- package/dist/server/index.js.map +1 -7
- package/dist/server/index.mjs +199 -404
- package/dist/server/index.mjs.map +1 -7
- package/dist/server/react.d.mts +16 -0
- package/dist/server/react.d.mts.map +1 -0
- package/dist/server/react.d.ts +16 -0
- package/dist/server/react.d.ts.map +1 -0
- package/dist/server/react.js +30 -0
- package/dist/server/react.js.map +1 -0
- package/dist/server/react.mjs +28 -0
- package/dist/server/react.mjs.map +1 -0
- package/dist/wallet/wagmi/index.d.mts +23 -2
- package/dist/wallet/wagmi/index.d.mts.map +1 -0
- package/dist/wallet/wagmi/index.d.ts +22 -1
- package/dist/wallet/wagmi/index.d.ts.map +1 -1
- package/dist/wallet/wagmi/index.js +86 -417
- package/dist/wallet/wagmi/index.js.map +1 -7
- package/dist/wallet/wagmi/index.mjs +82 -418
- package/dist/wallet/wagmi/index.mjs.map +1 -7
- package/package.json +39 -28
- package/dist/api/api.d.mts +0 -18
- package/dist/api/api.d.ts +0 -18
- package/dist/api/api.d.ts.map +0 -1
- package/dist/api/core/error.d.mts +0 -74
- package/dist/api/core/error.d.ts +0 -74
- package/dist/api/core/error.d.ts.map +0 -1
- package/dist/api/core/index.d.mts +0 -4
- package/dist/api/core/index.d.ts +0 -4
- package/dist/api/core/index.d.ts.map +0 -1
- package/dist/api/core/instance.d.mts +0 -13
- package/dist/api/core/instance.d.ts +0 -13
- package/dist/api/core/instance.d.ts.map +0 -1
- package/dist/api/core/service.d.mts +0 -51
- package/dist/api/core/service.d.ts +0 -51
- package/dist/api/core/service.d.ts.map +0 -1
- package/dist/api/schemas/account.d.mts +0 -44
- package/dist/api/schemas/account.d.ts +0 -44
- package/dist/api/schemas/account.d.ts.map +0 -1
- package/dist/api/schemas/activity.d.mts +0 -277
- package/dist/api/schemas/activity.d.ts +0 -277
- package/dist/api/schemas/activity.d.ts.map +0 -1
- package/dist/api/schemas/auth.d.mts +0 -127
- package/dist/api/schemas/auth.d.ts +0 -127
- package/dist/api/schemas/auth.d.ts.map +0 -1
- package/dist/api/schemas/chain.d.mts +0 -15
- package/dist/api/schemas/chain.d.ts +0 -15
- package/dist/api/schemas/chain.d.ts.map +0 -1
- package/dist/api/schemas/config.d.mts +0 -33
- package/dist/api/schemas/config.d.ts +0 -33
- package/dist/api/schemas/config.d.ts.map +0 -1
- package/dist/api/schemas/contacts.d.mts +0 -27
- package/dist/api/schemas/contacts.d.ts +0 -27
- package/dist/api/schemas/contacts.d.ts.map +0 -1
- package/dist/api/schemas/index.d.mts +0 -12
- package/dist/api/schemas/index.d.ts +0 -12
- package/dist/api/schemas/index.d.ts.map +0 -1
- package/dist/api/schemas/instruction.d.mts +0 -446
- package/dist/api/schemas/instruction.d.ts +0 -446
- package/dist/api/schemas/instruction.d.ts.map +0 -1
- package/dist/api/schemas/integration.d.mts +0 -166
- package/dist/api/schemas/integration.d.ts +0 -166
- package/dist/api/schemas/integration.d.ts.map +0 -1
- package/dist/api/schemas/operating-account.d.mts +0 -11
- package/dist/api/schemas/operating-account.d.ts +0 -11
- package/dist/api/schemas/operating-account.d.ts.map +0 -1
- package/dist/api/schemas/payments.d.mts +0 -234
- package/dist/api/schemas/payments.d.ts +0 -234
- package/dist/api/schemas/payments.d.ts.map +0 -1
- package/dist/api/schemas/transaction.d.mts +0 -37
- package/dist/api/schemas/transaction.d.ts +0 -37
- package/dist/api/schemas/transaction.d.ts.map +0 -1
- package/dist/api/services/account.d.mts +0 -8
- package/dist/api/services/account.d.ts +0 -8
- package/dist/api/services/account.d.ts.map +0 -1
- package/dist/api/services/activity.d.mts +0 -7
- package/dist/api/services/activity.d.ts +0 -7
- package/dist/api/services/activity.d.ts.map +0 -1
- package/dist/api/services/auth.d.mts +0 -12
- package/dist/api/services/auth.d.ts +0 -12
- package/dist/api/services/auth.d.ts.map +0 -1
- package/dist/api/services/base.d.mts +0 -10
- package/dist/api/services/base.d.ts +0 -10
- package/dist/api/services/base.d.ts.map +0 -1
- package/dist/api/services/config.d.mts +0 -10
- package/dist/api/services/config.d.ts +0 -10
- package/dist/api/services/config.d.ts.map +0 -1
- package/dist/api/services/contacts.d.mts +0 -8
- package/dist/api/services/contacts.d.ts +0 -8
- package/dist/api/services/contacts.d.ts.map +0 -1
- package/dist/api/services/developer.d.mts +0 -6
- package/dist/api/services/developer.d.ts +0 -6
- package/dist/api/services/developer.d.ts.map +0 -1
- package/dist/api/services/index.d.mts +0 -13
- package/dist/api/services/index.d.ts +0 -13
- package/dist/api/services/index.d.ts.map +0 -1
- package/dist/api/services/instruction.d.mts +0 -12
- package/dist/api/services/instruction.d.ts +0 -12
- package/dist/api/services/instruction.d.ts.map +0 -1
- package/dist/api/services/integration.d.mts +0 -8
- package/dist/api/services/integration.d.ts +0 -8
- package/dist/api/services/integration.d.ts.map +0 -1
- package/dist/api/services/operating-account.d.mts +0 -8
- package/dist/api/services/operating-account.d.ts +0 -8
- package/dist/api/services/operating-account.d.ts.map +0 -1
- package/dist/api/services/payments.d.mts +0 -14
- package/dist/api/services/payments.d.ts +0 -14
- package/dist/api/services/payments.d.ts.map +0 -1
- package/dist/api/services/transaction.d.mts +0 -8
- package/dist/api/services/transaction.d.ts +0 -8
- package/dist/api/services/transaction.d.ts.map +0 -1
- package/dist/api/services/uniswap-token-list-service.d.mts +0 -66
- package/dist/api/services/uniswap-token-list-service.d.ts +0 -66
- package/dist/api/services/uniswap-token-list-service.d.ts.map +0 -1
- package/dist/api/utils/index.d.mts +0 -2
- package/dist/api/utils/index.d.ts +0 -2
- package/dist/api/utils/index.d.ts.map +0 -1
- package/dist/api/utils/pagination.d.mts +0 -32
- package/dist/api/utils/pagination.d.ts +0 -32
- package/dist/api/utils/pagination.d.ts.map +0 -1
- package/dist/chains/config/all-chains.d.mts +0 -4243
- package/dist/chains/config/all-chains.d.ts +0 -4243
- package/dist/chains/config/all-chains.d.ts.map +0 -1
- package/dist/chains/config/custom-chains.d.mts +0 -49
- package/dist/chains/config/custom-chains.d.ts +0 -49
- package/dist/chains/config/custom-chains.d.ts.map +0 -1
- package/dist/chains/config/mainnet-chains.d.mts +0 -1063
- package/dist/chains/config/mainnet-chains.d.ts +0 -1063
- package/dist/chains/config/mainnet-chains.d.ts.map +0 -1
- package/dist/chains/config/supported-chains.d.mts +0 -2172
- package/dist/chains/config/supported-chains.d.ts +0 -2172
- package/dist/chains/config/supported-chains.d.ts.map +0 -1
- package/dist/chains/config/testnet-chains.d.mts +0 -1110
- package/dist/chains/config/testnet-chains.d.ts +0 -1110
- package/dist/chains/config/testnet-chains.d.ts.map +0 -1
- package/dist/chains/lambda/chain-mapping.d.mts +0 -55
- package/dist/chains/lambda/chain-mapping.d.ts +0 -55
- package/dist/chains/lambda/chain-mapping.d.ts.map +0 -1
- package/dist/chains/lambda/index.d.mts +0 -2
- package/dist/chains/lambda/index.d.ts +0 -2
- package/dist/chains/lambda/index.d.ts.map +0 -1
- package/dist/chains/tokens/chain-tokens.d.mts +0 -6
- package/dist/chains/tokens/chain-tokens.d.ts +0 -6
- package/dist/chains/tokens/chain-tokens.d.ts.map +0 -1
- package/dist/chains/tokens/token-addresses.d.mts +0 -8
- package/dist/chains/tokens/token-addresses.d.ts +0 -8
- package/dist/chains/tokens/token-addresses.d.ts.map +0 -1
- package/dist/chains/tokens/token-metadata.d.mts +0 -5
- package/dist/chains/tokens/token-metadata.d.ts +0 -5
- package/dist/chains/tokens/token-metadata.d.ts.map +0 -1
- package/dist/chains/types.d.mts +0 -23
- package/dist/chains/types.d.ts +0 -23
- package/dist/chains/types.d.ts.map +0 -1
- package/dist/chains/utils/filter-tokens.d.mts +0 -3
- package/dist/chains/utils/filter-tokens.d.ts +0 -3
- package/dist/chains/utils/filter-tokens.d.ts.map +0 -1
- package/dist/chains/utils/stablecoin.d.mts +0 -7
- package/dist/chains/utils/stablecoin.d.ts +0 -7
- package/dist/chains/utils/stablecoin.d.ts.map +0 -1
- package/dist/chains/utils/token-maps.d.mts +0 -10
- package/dist/chains/utils/token-maps.d.ts +0 -10
- package/dist/chains/utils/token-maps.d.ts.map +0 -1
- package/dist/env.d.mts +0 -17
- package/dist/env.d.ts +0 -17
- package/dist/env.d.ts.map +0 -1
- package/dist/formatters/index.d.ts.map +0 -1
- package/dist/formatters/index.js.map +0 -7
- package/dist/formatters/index.mjs.map +0 -7
- package/dist/helpers/address.d.mts +0 -7
- package/dist/helpers/address.d.ts +0 -7
- package/dist/helpers/address.d.ts.map +0 -1
- package/dist/helpers/blockchain.d.mts +0 -41
- package/dist/helpers/blockchain.d.ts +0 -41
- package/dist/helpers/blockchain.d.ts.map +0 -1
- package/dist/helpers/date.d.mts +0 -70
- package/dist/helpers/date.d.ts +0 -70
- package/dist/helpers/date.d.ts.map +0 -1
- package/dist/helpers/datetime.d.mts +0 -57
- package/dist/helpers/datetime.d.ts +0 -57
- package/dist/helpers/datetime.d.ts.map +0 -1
- package/dist/helpers/domain.d.mts +0 -2
- package/dist/helpers/domain.d.ts +0 -2
- package/dist/helpers/domain.d.ts.map +0 -1
- package/dist/helpers/index.js.map +0 -7
- package/dist/helpers/index.mjs.map +0 -7
- package/dist/helpers/intl.d.mts +0 -20
- package/dist/helpers/intl.d.ts +0 -20
- package/dist/helpers/intl.d.ts.map +0 -1
- package/dist/helpers/logger.d.mts +0 -26
- package/dist/helpers/logger.d.ts +0 -26
- package/dist/helpers/logger.d.ts.map +0 -1
- package/dist/helpers/mask-options.d.mts +0 -10
- package/dist/helpers/mask-options.d.ts +0 -10
- package/dist/helpers/mask-options.d.ts.map +0 -1
- package/dist/helpers/num-formatter.d.mts +0 -3
- package/dist/helpers/num-formatter.d.ts +0 -3
- package/dist/helpers/num-formatter.d.ts.map +0 -1
- package/dist/helpers/polling.d.mts +0 -39
- package/dist/helpers/polling.d.ts +0 -39
- package/dist/helpers/polling.d.ts.map +0 -1
- package/dist/helpers/random.d.mts +0 -10
- package/dist/helpers/random.d.ts +0 -10
- package/dist/helpers/random.d.ts.map +0 -1
- package/dist/helpers/sdk-loader.d.mts +0 -25
- package/dist/helpers/sdk-loader.d.ts +0 -25
- package/dist/helpers/sdk-loader.d.ts.map +0 -1
- package/dist/helpers/signatures.d.mts +0 -17
- package/dist/helpers/signatures.d.ts +0 -17
- package/dist/helpers/signatures.d.ts.map +0 -1
- package/dist/helpers/string.d.mts +0 -17
- package/dist/helpers/string.d.ts +0 -17
- package/dist/helpers/string.d.ts.map +0 -1
- package/dist/helpers/types.d.mts +0 -39
- package/dist/helpers/types.d.ts +0 -39
- package/dist/helpers/types.d.ts.map +0 -1
- package/dist/helpers/url.d.mts +0 -11
- package/dist/helpers/url.d.ts +0 -11
- package/dist/helpers/url.d.ts.map +0 -1
- package/dist/helpers/window.d.mts +0 -37
- package/dist/helpers/window.d.ts +0 -37
- package/dist/helpers/window.d.ts.map +0 -1
- package/dist/helpers/zod.d.mts +0 -51
- package/dist/helpers/zod.d.ts +0 -51
- package/dist/helpers/zod.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -7
- package/dist/index.mjs.map +0 -7
- package/dist/instructions/actions/index.d.mts +0 -5
- package/dist/instructions/actions/index.d.ts +0 -5
- package/dist/instructions/actions/index.d.ts.map +0 -1
- package/dist/instructions/actions/refuel/index.d.mts +0 -15
- package/dist/instructions/actions/refuel/index.d.ts +0 -15
- package/dist/instructions/actions/refuel/index.d.ts.map +0 -1
- package/dist/instructions/actions/swap/index.d.mts +0 -19
- package/dist/instructions/actions/swap/index.d.ts +0 -19
- package/dist/instructions/actions/swap/index.d.ts.map +0 -1
- package/dist/instructions/actions/sweep/index.d.mts +0 -16
- package/dist/instructions/actions/sweep/index.d.ts +0 -16
- package/dist/instructions/actions/sweep/index.d.ts.map +0 -1
- package/dist/instructions/actions/transfer/index.d.mts +0 -13
- package/dist/instructions/actions/transfer/index.d.ts +0 -13
- package/dist/instructions/actions/transfer/index.d.ts.map +0 -1
- package/dist/instructions/activate.d.mts +0 -84
- package/dist/instructions/activate.d.ts +0 -84
- package/dist/instructions/activate.d.ts.map +0 -1
- package/dist/instructions/build.d.mts +0 -146
- package/dist/instructions/build.d.ts +0 -146
- package/dist/instructions/build.d.ts.map +0 -1
- package/dist/instructions/constants.d.mts +0 -9
- package/dist/instructions/constants.d.ts +0 -9
- package/dist/instructions/constants.d.ts.map +0 -1
- package/dist/instructions/contracts/artifacts/abi/build-instruction-action-arguments-abi.d.mts +0 -609
- package/dist/instructions/contracts/artifacts/abi/build-instruction-action-arguments-abi.d.ts +0 -609
- package/dist/instructions/contracts/artifacts/abi/build-instruction-action-arguments-abi.d.ts.map +0 -1
- package/dist/instructions/types.d.mts +0 -289
- package/dist/instructions/types.d.ts +0 -289
- package/dist/instructions/types.d.ts.map +0 -1
- package/dist/payments/action-names.d.mts +0 -16
- package/dist/payments/action-names.d.ts +0 -16
- package/dist/payments/action-names.d.ts.map +0 -1
- package/dist/payments/actions/index.d.mts +0 -5
- package/dist/payments/actions/index.d.ts +0 -5
- package/dist/payments/actions/index.d.ts.map +0 -1
- package/dist/payments/actions/sweep-cctp.d.mts +0 -15
- package/dist/payments/actions/sweep-cctp.d.ts +0 -15
- package/dist/payments/actions/sweep-cctp.d.ts.map +0 -1
- package/dist/payments/actions/sweep-erc20.d.mts +0 -12
- package/dist/payments/actions/sweep-erc20.d.ts +0 -12
- package/dist/payments/actions/sweep-erc20.d.ts.map +0 -1
- package/dist/payments/actions/sweep-uniswap-v3.d.mts +0 -17
- package/dist/payments/actions/sweep-uniswap-v3.d.ts +0 -17
- package/dist/payments/actions/sweep-uniswap-v3.d.ts.map +0 -1
- package/dist/payments/actions/sweep.d.mts +0 -12
- package/dist/payments/actions/sweep.d.ts +0 -12
- package/dist/payments/actions/sweep.d.ts.map +0 -1
- package/dist/payments/build.d.mts +0 -28
- package/dist/payments/build.d.ts +0 -28
- package/dist/payments/build.d.ts.map +0 -1
- package/dist/payments/chain-token-config-builder.d.mts +0 -10
- package/dist/payments/chain-token-config-builder.d.ts +0 -10
- package/dist/payments/chain-token-config-builder.d.ts.map +0 -1
- package/dist/payments/comprehensive-payment-request.d.mts +0 -26
- package/dist/payments/comprehensive-payment-request.d.ts +0 -26
- package/dist/payments/comprehensive-payment-request.d.ts.map +0 -1
- package/dist/payments/config/cctp.d.mts +0 -14
- package/dist/payments/config/cctp.d.ts +0 -14
- package/dist/payments/config/cctp.d.ts.map +0 -1
- package/dist/payments/config/index.d.mts +0 -3
- package/dist/payments/config/index.d.ts +0 -3
- package/dist/payments/config/index.d.ts.map +0 -1
- package/dist/payments/config/tokens.d.mts +0 -14
- package/dist/payments/config/tokens.d.ts +0 -14
- package/dist/payments/config/tokens.d.ts.map +0 -1
- package/dist/payments/instruction-registry.d.mts +0 -19
- package/dist/payments/instruction-registry.d.ts +0 -19
- package/dist/payments/instruction-registry.d.ts.map +0 -1
- package/dist/payments/payment-metadata-builder.d.mts +0 -56
- package/dist/payments/payment-metadata-builder.d.ts +0 -56
- package/dist/payments/payment-metadata-builder.d.ts.map +0 -1
- package/dist/payments/payment-metadata.d.mts +0 -15
- package/dist/payments/payment-metadata.d.ts +0 -15
- package/dist/payments/payment-metadata.d.ts.map +0 -1
- package/dist/payments/payment-request-token-resolver.d.mts +0 -25
- package/dist/payments/payment-request-token-resolver.d.ts +0 -25
- package/dist/payments/payment-request-token-resolver.d.ts.map +0 -1
- package/dist/payments/types.d.mts +0 -40
- package/dist/payments/types.d.ts +0 -40
- package/dist/payments/types.d.ts.map +0 -1
- package/dist/payments/validation.d.mts +0 -19
- package/dist/payments/validation.d.ts +0 -19
- package/dist/payments/validation.d.ts.map +0 -1
- package/dist/schemas/account.d.mts +0 -9
- package/dist/schemas/account.d.ts +0 -9
- package/dist/schemas/account.d.ts.map +0 -1
- package/dist/schemas/brand.d.mts +0 -7
- package/dist/schemas/brand.d.ts +0 -7
- package/dist/schemas/brand.d.ts.map +0 -1
- package/dist/schemas/contact.d.mts +0 -18
- package/dist/schemas/contact.d.ts +0 -18
- package/dist/schemas/contact.d.ts.map +0 -1
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/instruction.d.mts +0 -248
- package/dist/schemas/instruction.d.ts +0 -248
- package/dist/schemas/instruction.d.ts.map +0 -1
- package/dist/schemas/misc.d.mts +0 -36
- package/dist/schemas/misc.d.ts +0 -36
- package/dist/schemas/misc.d.ts.map +0 -1
- package/dist/schemas/payment.d.mts +0 -64
- package/dist/schemas/payment.d.ts +0 -64
- package/dist/schemas/payment.d.ts.map +0 -1
- package/dist/schemas/token.d.mts +0 -17
- package/dist/schemas/token.d.ts +0 -17
- package/dist/schemas/token.d.ts.map +0 -1
- package/dist/schemas/transaction.d.mts +0 -65
- package/dist/schemas/transaction.d.ts +0 -65
- package/dist/schemas/transaction.d.ts.map +0 -1
- package/dist/schemas/user.d.mts +0 -24
- package/dist/schemas/user.d.ts +0 -24
- package/dist/schemas/user.d.ts.map +0 -1
- package/dist/server/client.d.mts +0 -3
- package/dist/server/client.d.ts +0 -3
- package/dist/server/client.d.ts.map +0 -1
- package/dist/server/routes/account.d.mts +0 -4
- package/dist/server/routes/account.d.ts +0 -4
- package/dist/server/routes/account.d.ts.map +0 -1
- package/dist/server/routes/auth.d.mts +0 -28
- package/dist/server/routes/auth.d.ts +0 -28
- package/dist/server/routes/auth.d.ts.map +0 -1
- package/dist/server/routes/bridge.d.mts +0 -254
- package/dist/server/routes/bridge.d.ts +0 -254
- package/dist/server/routes/bridge.d.ts.map +0 -1
- package/dist/server/routes/config.d.mts +0 -3
- package/dist/server/routes/config.d.ts +0 -3
- package/dist/server/routes/config.d.ts.map +0 -1
- package/dist/server/routes/index.d.mts +0 -8
- package/dist/server/routes/index.d.ts +0 -8
- package/dist/server/routes/index.d.ts.map +0 -1
- package/dist/server/routes/instruction.d.mts +0 -4
- package/dist/server/routes/instruction.d.ts +0 -4
- package/dist/server/routes/instruction.d.ts.map +0 -1
- package/dist/server/routes/integration.d.mts +0 -4
- package/dist/server/routes/integration.d.ts +0 -4
- package/dist/server/routes/integration.d.ts.map +0 -1
- package/dist/server/routes/payments.d.mts +0 -5
- package/dist/server/routes/payments.d.ts +0 -5
- package/dist/server/routes/payments.d.ts.map +0 -1
- package/dist/server/routes/verify.d.mts +0 -3
- package/dist/server/routes/verify.d.ts +0 -3
- package/dist/server/routes/verify.d.ts.map +0 -1
- package/dist/wallet/wagmi/config.d.mts +0 -18
- package/dist/wallet/wagmi/config.d.ts +0 -18
- package/dist/wallet/wagmi/config.d.ts.map +0 -1
package/dist/constants.mjs.map
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/constants.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Cookies\n *\n * @description\n * These cookies are used to store the user's authentication token,\n * preferences, and session information.\n */\nexport const SESSION_TOKEN_COOKIE_NAME = \"sessionToken\";\nexport const SESSION_THEME_COOKIE_NAME = \"theme\";\n\n/**\n * Pagination\n */\nexport const DEFAULT_ITEMS_PER_PAGE = 50;\n\n/**\n * URLs\n */\nexport const APP_URL = \"https://otim.com\";\nexport const TAC_URL = `${APP_URL}/tac`;\nexport const PRIVACY_POLICY_URL = `${APP_URL}/pp`;\n\nexport const TELEGRAM_GROUP_URL = \"https://t.me/otimlabs\";\n\n/**\n * Network Constants\n */\nexport const ERC20 = \"ERC20\";\n\n/**\n * Wallet\n */\nexport const WAGMI_RECENT_CONNECTOR_KEY = \"wagmi.recentConnectorId\";\nexport const WAGMI_STORE_KEY = \"wagmi.store\";\nexport const TURNKEY_CONNECTOR_ID = \"turnkey\";\n"],
|
|
5
|
-
"mappings": ";AAOO,IAAM,4BAA4B;AAClC,IAAM,4BAA4B;AAKlC,IAAM,yBAAyB;AAK/B,IAAM,UAAU;AAChB,IAAM,UAAU,GAAG,OAAO;AAC1B,IAAM,qBAAqB,GAAG,OAAO;AAErC,IAAM,qBAAqB;AAK3B,IAAM,QAAQ;AAKd,IAAM,6BAA6B;AACnC,IAAM,kBAAkB;AACxB,IAAM,uBAAuB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["/**\n * Cookies\n *\n * @description\n * These cookies are used to store the user's authentication token,\n * preferences, and session information.\n */\nexport const SESSION_TOKEN_COOKIE_NAME = \"sessionToken\";\nexport const SESSION_THEME_COOKIE_NAME = \"theme\";\n\n/* Pagination */\nexport const DEFAULT_ITEMS_PER_PAGE = 50;\n\n/* URLs */\nexport const APP_URL = \"https://otim.com\";\nexport const TAC_URL = `${APP_URL}/tac`;\nexport const PRIVACY_POLICY_URL = `${APP_URL}/pp`;\n\nexport const TELEGRAM_GROUP_URL = \"https://t.me/otimlabs\";\n\n/* Network Constants */\nexport const ERC20 = \"ERC20\";\n\n/* Wallet */\nexport const WAGMI_RECENT_CONNECTOR_KEY = \"wagmi.recentConnectorId\";\nexport const WAGMI_STORE_KEY = \"wagmi.store\";\n"],"mappings":";;;;;;;;AAOA,MAAa,4BAA4B;AACzC,MAAa,4BAA4B;AAGzC,MAAa,yBAAyB;AAGtC,MAAa,UAAU;AACvB,MAAa,UAAU,GAAG,QAAQ;AAClC,MAAa,qBAAqB,GAAG,QAAQ;AAE7C,MAAa,qBAAqB;AAGlC,MAAa,QAAQ;AAGrB,MAAa,6BAA6B;AAC1C,MAAa,kBAAkB"}
|
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-kSYXY2_d.js');
|
|
2
|
+
let zod = require("zod");
|
|
3
|
+
zod = require_chunk.__toESM(zod);
|
|
4
|
+
|
|
5
|
+
//#region src/helpers/types.ts
|
|
6
|
+
const isError = (value) => value instanceof Error;
|
|
7
|
+
const isFunction = (value) => typeof value === "function";
|
|
8
|
+
const isObject = (value) => typeof value === "object" && value !== null;
|
|
9
|
+
const isNumber = (value) => typeof value === "number";
|
|
10
|
+
const isString = (value) => typeof value === "string";
|
|
11
|
+
const isUndefined = (value) => typeof value === "undefined";
|
|
12
|
+
const isBoolean = (value) => typeof value === "boolean";
|
|
13
|
+
const isNull = (value) => value === null;
|
|
14
|
+
const isNotNull = (value) => value !== null && value !== void 0;
|
|
15
|
+
const isEmpty = (value) => value === "" || value === null || value === void 0 || Array.isArray(value) && value.length === 0;
|
|
16
|
+
/**
|
|
17
|
+
* Safely extracts a string from an unknown value.
|
|
18
|
+
* @param value - The value to extract from
|
|
19
|
+
* @param fallback - Optional fallback value if extraction fails
|
|
20
|
+
* @returns The extracted string or fallback/undefined
|
|
21
|
+
*/
|
|
22
|
+
const extractString = (value, fallback) => {
|
|
23
|
+
return isString(value) ? value : fallback;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Safely extracts a number from an unknown value.
|
|
27
|
+
* Handles both number and string representations.
|
|
28
|
+
* @param value - The value to extract from
|
|
29
|
+
* @returns The extracted number or undefined
|
|
30
|
+
*/
|
|
31
|
+
const extractNumber = (value) => {
|
|
32
|
+
if (isNumber(value)) return value;
|
|
33
|
+
if (isString(value)) {
|
|
34
|
+
const parsed = Number.parseFloat(value);
|
|
35
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/helpers/logger.ts
|
|
41
|
+
function extractErrorMessage(error) {
|
|
42
|
+
if (isError(error)) return error.message;
|
|
43
|
+
if (isString(error)) return error;
|
|
44
|
+
if (isObject(error) && "message" in error && isString(error.message)) return error.message;
|
|
45
|
+
return "Unknown error";
|
|
46
|
+
}
|
|
47
|
+
function buildPrefix(...parts) {
|
|
48
|
+
return parts.filter(Boolean).map((part) => `[${part}]`).join(" ");
|
|
49
|
+
}
|
|
50
|
+
const consoleMethods = {
|
|
51
|
+
debug: console.log,
|
|
52
|
+
info: console.log,
|
|
53
|
+
warn: console.warn,
|
|
54
|
+
error: console.error
|
|
55
|
+
};
|
|
56
|
+
var Logger = class {
|
|
57
|
+
info(message, options) {
|
|
58
|
+
this.log("info", message, options);
|
|
59
|
+
}
|
|
60
|
+
warn(message, options) {
|
|
61
|
+
this.log("warn", message, options);
|
|
62
|
+
}
|
|
63
|
+
error(message, options) {
|
|
64
|
+
this.log("error", message, options);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Log errors with full context and stack trace.
|
|
68
|
+
* For API errors, consider using `getErrorMessage` from `@otim/utils/api`.
|
|
69
|
+
*/
|
|
70
|
+
logError(error, options = {}) {
|
|
71
|
+
const { context, operation, metadata } = options;
|
|
72
|
+
const prefix = buildPrefix(context, operation);
|
|
73
|
+
const message = extractErrorMessage(error);
|
|
74
|
+
console.error(prefix ? `${prefix} ${message}` : message);
|
|
75
|
+
if (metadata && Object.keys(metadata).length > 0) console.error("Metadata:", metadata);
|
|
76
|
+
if (isError(error) && error.stack) console.error("Stack:", error.stack);
|
|
77
|
+
else if (isNotNull(error)) console.error("Error details:", error);
|
|
78
|
+
}
|
|
79
|
+
log(level, message, options) {
|
|
80
|
+
const prefix = buildPrefix(options?.context);
|
|
81
|
+
const fullMessage = prefix ? `${prefix} ${message}` : message;
|
|
82
|
+
const logFn = consoleMethods[level];
|
|
83
|
+
logFn(fullMessage);
|
|
84
|
+
if (options?.data) this.logData(level, options.data);
|
|
85
|
+
}
|
|
86
|
+
logData(level, data) {
|
|
87
|
+
if (level === "debug" || level === "info") console.dir(data, { depth: null });
|
|
88
|
+
else consoleMethods[level]("Data:", data);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const logger = new Logger();
|
|
92
|
+
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/helpers/date.ts
|
|
95
|
+
const iso8601DateSchema = zod.default.string().regex(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/, "Must be a valid ISO 8601 date format (e.g., 2024-12-31T23:59:59.000Z)");
|
|
96
|
+
const TimeUnit = {
|
|
97
|
+
Day: "day",
|
|
98
|
+
Month: "month",
|
|
99
|
+
Year: "year"
|
|
100
|
+
};
|
|
101
|
+
const units = {
|
|
102
|
+
[TimeUnit.Day]: {
|
|
103
|
+
one: "day",
|
|
104
|
+
other: "days"
|
|
105
|
+
},
|
|
106
|
+
[TimeUnit.Month]: {
|
|
107
|
+
one: "month",
|
|
108
|
+
other: "months"
|
|
109
|
+
},
|
|
110
|
+
[TimeUnit.Year]: {
|
|
111
|
+
one: "year",
|
|
112
|
+
other: "years"
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const formatDateAsUSStandard = (date, opts) => date.toLocaleString("en-US", {
|
|
116
|
+
month: "2-digit",
|
|
117
|
+
day: "2-digit",
|
|
118
|
+
year: "numeric",
|
|
119
|
+
...opts
|
|
120
|
+
});
|
|
121
|
+
const formatDateAsISO = (date) => date.toISOString();
|
|
122
|
+
const formatFullDate = (date) => {
|
|
123
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
124
|
+
year: "numeric",
|
|
125
|
+
month: "long",
|
|
126
|
+
day: "2-digit",
|
|
127
|
+
timeZone: "UTC"
|
|
128
|
+
}).format(date);
|
|
129
|
+
};
|
|
130
|
+
const formatTime = (date) => {
|
|
131
|
+
return date.toLocaleTimeString("en-US", {
|
|
132
|
+
hour: "2-digit",
|
|
133
|
+
minute: "2-digit",
|
|
134
|
+
second: "2-digit",
|
|
135
|
+
timeZone: "UTC",
|
|
136
|
+
timeZoneName: "short"
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
const formatDateTime = (date) => {
|
|
140
|
+
return `${new Intl.DateTimeFormat("en-US", {
|
|
141
|
+
month: "short",
|
|
142
|
+
day: "numeric",
|
|
143
|
+
year: "numeric",
|
|
144
|
+
timeZone: "UTC"
|
|
145
|
+
}).format(date)} at ${new Intl.DateTimeFormat("en-US", {
|
|
146
|
+
hour: "2-digit",
|
|
147
|
+
minute: "2-digit",
|
|
148
|
+
timeZone: "UTC"
|
|
149
|
+
}).format(date)}`;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Formats a date in long format (e.g., "June 19, 2025")
|
|
153
|
+
* @param date - Date object to format
|
|
154
|
+
* @returns Formatted date string
|
|
155
|
+
*/
|
|
156
|
+
const formatLongDate = (date) => {
|
|
157
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
158
|
+
year: "numeric",
|
|
159
|
+
month: "long",
|
|
160
|
+
day: "numeric",
|
|
161
|
+
timeZone: "UTC"
|
|
162
|
+
}).format(date);
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Formats a date with time in long format (e.g., "June 19, 2025 at 07:00 AM")
|
|
166
|
+
* @param date - Date object to format
|
|
167
|
+
* @returns Formatted date and time string
|
|
168
|
+
*/
|
|
169
|
+
const formatLongDateTime = (date) => {
|
|
170
|
+
return `${new Intl.DateTimeFormat("en-US", {
|
|
171
|
+
year: "numeric",
|
|
172
|
+
month: "long",
|
|
173
|
+
day: "numeric",
|
|
174
|
+
timeZone: "UTC"
|
|
175
|
+
}).format(date)} at ${new Intl.DateTimeFormat("en-US", {
|
|
176
|
+
hour: "2-digit",
|
|
177
|
+
minute: "2-digit",
|
|
178
|
+
hour12: true,
|
|
179
|
+
timeZone: "UTC"
|
|
180
|
+
}).format(date).toLowerCase()}`;
|
|
181
|
+
};
|
|
182
|
+
const formatToShortDate = (dateString) => {
|
|
183
|
+
const date = typeof dateString === "string" ? new Date(dateString) : dateString;
|
|
184
|
+
if (isNaN(date.getTime())) return "Jan 1";
|
|
185
|
+
return date.toLocaleDateString("en-US", {
|
|
186
|
+
month: "short",
|
|
187
|
+
day: "numeric",
|
|
188
|
+
timeZone: "UTC"
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
const formatToShortDateWithYear = (dateString) => {
|
|
192
|
+
const date = typeof dateString === "string" ? new Date(dateString) : dateString;
|
|
193
|
+
if (isNaN(date.getTime())) return "Unknown";
|
|
194
|
+
return date.toLocaleDateString("en-US", {
|
|
195
|
+
month: "short",
|
|
196
|
+
day: "numeric",
|
|
197
|
+
year: "numeric",
|
|
198
|
+
timeZone: "UTC"
|
|
199
|
+
});
|
|
200
|
+
};
|
|
201
|
+
const formatToJustDate = (dateString) => {
|
|
202
|
+
const date = new Date(dateString);
|
|
203
|
+
if (isNaN(date.getTime())) return "1";
|
|
204
|
+
return date.getUTCDate().toString();
|
|
205
|
+
};
|
|
206
|
+
const formatDateToYYYYMMDD = (date) => {
|
|
207
|
+
return new Intl.DateTimeFormat("en-CA", {
|
|
208
|
+
year: "numeric",
|
|
209
|
+
month: "2-digit",
|
|
210
|
+
day: "2-digit"
|
|
211
|
+
}).format(date);
|
|
212
|
+
};
|
|
213
|
+
const isDateInvalid = (date) => {
|
|
214
|
+
return date.toString() === "Invalid Date";
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Validates if a date is valid (opposite of isDateInvalid)
|
|
218
|
+
* Checks both the Date object validity and the timestamp
|
|
219
|
+
*/
|
|
220
|
+
const isValidDate = (date) => {
|
|
221
|
+
return !isDateInvalid(date) && !isNaN(date.getTime());
|
|
222
|
+
};
|
|
223
|
+
const isDateEpoc = (date) => {
|
|
224
|
+
return date.getTime() <= 0;
|
|
225
|
+
};
|
|
226
|
+
const isDateInRange = (arg) => {
|
|
227
|
+
if (typeof arg !== "string") return false;
|
|
228
|
+
const date = new Date(arg);
|
|
229
|
+
return date >= /* @__PURE__ */ new Date("1800-01-01T00:00:00.000Z") && date <= /* @__PURE__ */ new Date("2999-12-31T23:59:59.999Z");
|
|
230
|
+
};
|
|
231
|
+
const isDateInPast = (input) => {
|
|
232
|
+
let date;
|
|
233
|
+
if (input instanceof Date) date = input;
|
|
234
|
+
else if (typeof input === "number") {
|
|
235
|
+
const ms = input < 0xe8d4a51000 ? input * 1e3 : input;
|
|
236
|
+
date = new Date(ms);
|
|
237
|
+
} else date = new Date(input);
|
|
238
|
+
if (isNaN(date.getTime())) return false;
|
|
239
|
+
return date.getTime() < Date.now();
|
|
240
|
+
};
|
|
241
|
+
const isSameDate = (dateA, dateB) => {
|
|
242
|
+
return dateA.getFullYear() === dateB.getFullYear() && dateA.getMonth() === dateB.getMonth() && dateA.getDate() === dateB.getDate();
|
|
243
|
+
};
|
|
244
|
+
const getPluralizedUnit = (unit, count, locale = "en") => {
|
|
245
|
+
const pluralCategory = new Intl.PluralRules(locale, { type: "cardinal" }).select(count);
|
|
246
|
+
if (pluralCategory === "one" || pluralCategory === "other") return `${count} ${units[unit][pluralCategory]}`;
|
|
247
|
+
return `${count} ${units[unit].other}`;
|
|
248
|
+
};
|
|
249
|
+
const getRelativeDateDescription = (targetDate, locale = "en") => {
|
|
250
|
+
const currentDate = /* @__PURE__ */ new Date();
|
|
251
|
+
const oneDay = 1e3 * 60 * 60 * 24;
|
|
252
|
+
const oneMonth = oneDay * 30;
|
|
253
|
+
const oneYear = oneDay * 365;
|
|
254
|
+
const diffInMilliseconds = targetDate.getTime() - currentDate.getTime();
|
|
255
|
+
const diffInDays = Math.round(diffInMilliseconds / oneDay);
|
|
256
|
+
const diffInMonths = Math.round(diffInMilliseconds / oneMonth);
|
|
257
|
+
const diffInYears = Math.round(diffInMilliseconds / oneYear);
|
|
258
|
+
if (Math.abs(diffInYears) >= 1) return getPluralizedUnit("year", Math.abs(diffInYears), locale);
|
|
259
|
+
if (Math.abs(diffInMonths) >= 1) return getPluralizedUnit("month", Math.abs(diffInMonths), locale);
|
|
260
|
+
return getPluralizedUnit("day", Math.abs(diffInDays), locale);
|
|
261
|
+
};
|
|
262
|
+
/**
|
|
263
|
+
* Safely formats a date with validation and fallback support
|
|
264
|
+
* @param date - String or Date to format
|
|
265
|
+
* @param formatter - Function that formats the Date object
|
|
266
|
+
* @param fallback - Value to return if date is invalid
|
|
267
|
+
* @returns Formatted string or fallback value
|
|
268
|
+
*/
|
|
269
|
+
const safeFormatDate = (date, formatter, fallback) => {
|
|
270
|
+
const dateObj = typeof date === "string" ? new Date(date) : date;
|
|
271
|
+
if (!isValidDate(dateObj)) return fallback;
|
|
272
|
+
try {
|
|
273
|
+
return formatter(dateObj);
|
|
274
|
+
} catch (error) {
|
|
275
|
+
logger.logError(error, { context: safeFormatDate.name });
|
|
276
|
+
return fallback;
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
const parseDateTime = (dateInput, timeInput) => {
|
|
280
|
+
const dateRegex = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
|
|
281
|
+
const timeRegex = /^(\d{1,2}):(\d{2})(?::(\d{2}))?\s*(AM|PM|am|pm)?$/;
|
|
282
|
+
const dateMatch = dateRegex.exec(dateInput);
|
|
283
|
+
if (!dateMatch) return;
|
|
284
|
+
const month = parseInt(dateMatch[1], 10) - 1;
|
|
285
|
+
const day = parseInt(dateMatch[2], 10);
|
|
286
|
+
const year = parseInt(dateMatch[3], 10);
|
|
287
|
+
let hours = 0;
|
|
288
|
+
let minutes = 0;
|
|
289
|
+
let seconds = 0;
|
|
290
|
+
if (timeInput) {
|
|
291
|
+
timeInput = timeInput.replace(/\u00A0/g, " ").trim();
|
|
292
|
+
const timeMatch = timeRegex.exec(timeInput);
|
|
293
|
+
if (!timeMatch) return;
|
|
294
|
+
hours = parseInt(timeMatch[1], 10);
|
|
295
|
+
minutes = parseInt(timeMatch[2], 10);
|
|
296
|
+
seconds = timeMatch[3] ? parseInt(timeMatch[3], 10) : 0;
|
|
297
|
+
const meridiem = timeMatch[4] ? timeMatch[4].toUpperCase() : null;
|
|
298
|
+
if (meridiem === "PM" && hours < 12) hours += 12;
|
|
299
|
+
else if (meridiem === "AM" && hours === 12) hours = 0;
|
|
300
|
+
}
|
|
301
|
+
const date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
|
|
302
|
+
if (isNaN(date.getTime())) return;
|
|
303
|
+
return date;
|
|
304
|
+
};
|
|
305
|
+
const validateIso8601Date = (dueDate) => {
|
|
306
|
+
const result = iso8601DateSchema.safeParse(dueDate);
|
|
307
|
+
if (!result.success) {
|
|
308
|
+
const errorMessage = result.error.issues[0]?.message || "Invalid ISO 8601 format";
|
|
309
|
+
throw new Error(`Invalid due date format: ${errorMessage}`);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
//#endregion
|
|
314
|
+
Object.defineProperty(exports, 'TimeUnit', {
|
|
315
|
+
enumerable: true,
|
|
316
|
+
get: function () {
|
|
317
|
+
return TimeUnit;
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
Object.defineProperty(exports, 'extractNumber', {
|
|
321
|
+
enumerable: true,
|
|
322
|
+
get: function () {
|
|
323
|
+
return extractNumber;
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
Object.defineProperty(exports, 'extractString', {
|
|
327
|
+
enumerable: true,
|
|
328
|
+
get: function () {
|
|
329
|
+
return extractString;
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
Object.defineProperty(exports, 'formatDateAsISO', {
|
|
333
|
+
enumerable: true,
|
|
334
|
+
get: function () {
|
|
335
|
+
return formatDateAsISO;
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
Object.defineProperty(exports, 'formatDateAsUSStandard', {
|
|
339
|
+
enumerable: true,
|
|
340
|
+
get: function () {
|
|
341
|
+
return formatDateAsUSStandard;
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
Object.defineProperty(exports, 'formatDateTime', {
|
|
345
|
+
enumerable: true,
|
|
346
|
+
get: function () {
|
|
347
|
+
return formatDateTime;
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
Object.defineProperty(exports, 'formatDateToYYYYMMDD', {
|
|
351
|
+
enumerable: true,
|
|
352
|
+
get: function () {
|
|
353
|
+
return formatDateToYYYYMMDD;
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
Object.defineProperty(exports, 'formatFullDate', {
|
|
357
|
+
enumerable: true,
|
|
358
|
+
get: function () {
|
|
359
|
+
return formatFullDate;
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
Object.defineProperty(exports, 'formatLongDate', {
|
|
363
|
+
enumerable: true,
|
|
364
|
+
get: function () {
|
|
365
|
+
return formatLongDate;
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
Object.defineProperty(exports, 'formatLongDateTime', {
|
|
369
|
+
enumerable: true,
|
|
370
|
+
get: function () {
|
|
371
|
+
return formatLongDateTime;
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
Object.defineProperty(exports, 'formatTime', {
|
|
375
|
+
enumerable: true,
|
|
376
|
+
get: function () {
|
|
377
|
+
return formatTime;
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
Object.defineProperty(exports, 'formatToJustDate', {
|
|
381
|
+
enumerable: true,
|
|
382
|
+
get: function () {
|
|
383
|
+
return formatToJustDate;
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
Object.defineProperty(exports, 'formatToShortDate', {
|
|
387
|
+
enumerable: true,
|
|
388
|
+
get: function () {
|
|
389
|
+
return formatToShortDate;
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
Object.defineProperty(exports, 'formatToShortDateWithYear', {
|
|
393
|
+
enumerable: true,
|
|
394
|
+
get: function () {
|
|
395
|
+
return formatToShortDateWithYear;
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
Object.defineProperty(exports, 'getPluralizedUnit', {
|
|
399
|
+
enumerable: true,
|
|
400
|
+
get: function () {
|
|
401
|
+
return getPluralizedUnit;
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
Object.defineProperty(exports, 'getRelativeDateDescription', {
|
|
405
|
+
enumerable: true,
|
|
406
|
+
get: function () {
|
|
407
|
+
return getRelativeDateDescription;
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
Object.defineProperty(exports, 'isBoolean', {
|
|
411
|
+
enumerable: true,
|
|
412
|
+
get: function () {
|
|
413
|
+
return isBoolean;
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
Object.defineProperty(exports, 'isDateEpoc', {
|
|
417
|
+
enumerable: true,
|
|
418
|
+
get: function () {
|
|
419
|
+
return isDateEpoc;
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
Object.defineProperty(exports, 'isDateInPast', {
|
|
423
|
+
enumerable: true,
|
|
424
|
+
get: function () {
|
|
425
|
+
return isDateInPast;
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
Object.defineProperty(exports, 'isDateInRange', {
|
|
429
|
+
enumerable: true,
|
|
430
|
+
get: function () {
|
|
431
|
+
return isDateInRange;
|
|
432
|
+
}
|
|
433
|
+
});
|
|
434
|
+
Object.defineProperty(exports, 'isDateInvalid', {
|
|
435
|
+
enumerable: true,
|
|
436
|
+
get: function () {
|
|
437
|
+
return isDateInvalid;
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
Object.defineProperty(exports, 'isEmpty', {
|
|
441
|
+
enumerable: true,
|
|
442
|
+
get: function () {
|
|
443
|
+
return isEmpty;
|
|
444
|
+
}
|
|
445
|
+
});
|
|
446
|
+
Object.defineProperty(exports, 'isError', {
|
|
447
|
+
enumerable: true,
|
|
448
|
+
get: function () {
|
|
449
|
+
return isError;
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
Object.defineProperty(exports, 'isFunction', {
|
|
453
|
+
enumerable: true,
|
|
454
|
+
get: function () {
|
|
455
|
+
return isFunction;
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
Object.defineProperty(exports, 'isNotNull', {
|
|
459
|
+
enumerable: true,
|
|
460
|
+
get: function () {
|
|
461
|
+
return isNotNull;
|
|
462
|
+
}
|
|
463
|
+
});
|
|
464
|
+
Object.defineProperty(exports, 'isNull', {
|
|
465
|
+
enumerable: true,
|
|
466
|
+
get: function () {
|
|
467
|
+
return isNull;
|
|
468
|
+
}
|
|
469
|
+
});
|
|
470
|
+
Object.defineProperty(exports, 'isNumber', {
|
|
471
|
+
enumerable: true,
|
|
472
|
+
get: function () {
|
|
473
|
+
return isNumber;
|
|
474
|
+
}
|
|
475
|
+
});
|
|
476
|
+
Object.defineProperty(exports, 'isObject', {
|
|
477
|
+
enumerable: true,
|
|
478
|
+
get: function () {
|
|
479
|
+
return isObject;
|
|
480
|
+
}
|
|
481
|
+
});
|
|
482
|
+
Object.defineProperty(exports, 'isSameDate', {
|
|
483
|
+
enumerable: true,
|
|
484
|
+
get: function () {
|
|
485
|
+
return isSameDate;
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
Object.defineProperty(exports, 'isString', {
|
|
489
|
+
enumerable: true,
|
|
490
|
+
get: function () {
|
|
491
|
+
return isString;
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
Object.defineProperty(exports, 'isUndefined', {
|
|
495
|
+
enumerable: true,
|
|
496
|
+
get: function () {
|
|
497
|
+
return isUndefined;
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
Object.defineProperty(exports, 'isValidDate', {
|
|
501
|
+
enumerable: true,
|
|
502
|
+
get: function () {
|
|
503
|
+
return isValidDate;
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
Object.defineProperty(exports, 'iso8601DateSchema', {
|
|
507
|
+
enumerable: true,
|
|
508
|
+
get: function () {
|
|
509
|
+
return iso8601DateSchema;
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
Object.defineProperty(exports, 'logger', {
|
|
513
|
+
enumerable: true,
|
|
514
|
+
get: function () {
|
|
515
|
+
return logger;
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
Object.defineProperty(exports, 'parseDateTime', {
|
|
519
|
+
enumerable: true,
|
|
520
|
+
get: function () {
|
|
521
|
+
return parseDateTime;
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
Object.defineProperty(exports, 'safeFormatDate', {
|
|
525
|
+
enumerable: true,
|
|
526
|
+
get: function () {
|
|
527
|
+
return safeFormatDate;
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
Object.defineProperty(exports, 'validateIso8601Date', {
|
|
531
|
+
enumerable: true,
|
|
532
|
+
get: function () {
|
|
533
|
+
return validateIso8601Date;
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
//# sourceMappingURL=date-CFzrYcjE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-CFzrYcjE.js","names":["z"],"sources":["../src/helpers/types.ts","../src/helpers/logger.ts","../src/helpers/date.ts"],"sourcesContent":["import type { z, ZodObject } from \"zod\";\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = T | null | undefined;\nexport type Optional<T> = T | undefined;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any is ok\nexport type Any = any;\n\nexport type NumberOrString = number | string;\n\nexport type OverrideProps<T, TOverridden> = Omit<T, keyof TOverridden> &\n TOverridden;\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport interface DataRecord {\n [value: string]: Nullish<DataRecord | string | number | boolean>;\n}\n\nexport interface Input<T> {\n input: T;\n}\n\nexport type ZodCustom<Values extends object> = ZodObject<{\n [P in keyof Values]: z.ZodType<Values[P]>;\n}>;\n\nexport const isError = (value: unknown): value is Error =>\n value instanceof Error;\n\nexport const isFunction = (\n value: unknown,\n): value is (...args: unknown[]) => unknown => typeof value === \"function\";\n\nexport const isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const isNumber = (value: unknown): value is number =>\n typeof value === \"number\";\n\nexport const isString = (value: unknown): value is string =>\n typeof value === \"string\";\n\nexport const isUndefined = (value: unknown): value is undefined =>\n typeof value === \"undefined\";\n\nexport const isBoolean = (value: unknown): value is boolean =>\n typeof value === \"boolean\";\n\nexport const isNull = (value: unknown): value is null => value === null;\n\nexport const isNotNull = (value: unknown): value is NonNullable<unknown> =>\n value !== null && value !== undefined;\n\nexport const isEmpty = (value: unknown): value is \"\" | null | undefined =>\n value === \"\" ||\n value === null ||\n value === undefined ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Safely extracts a string from an unknown value.\n * @param value - The value to extract from\n * @param fallback - Optional fallback value if extraction fails\n * @returns The extracted string or fallback/undefined\n */\nexport const extractString = (\n value: unknown,\n fallback?: string,\n): Optional<string> => {\n return isString(value) ? value : fallback;\n};\n\n/**\n * Safely extracts a number from an unknown value.\n * Handles both number and string representations.\n * @param value - The value to extract from\n * @returns The extracted number or undefined\n */\nexport const extractNumber = (value: unknown): Optional<number> => {\n if (isNumber(value)) {\n return value;\n }\n\n if (isString(value)) {\n const parsed = Number.parseFloat(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n\n return undefined;\n};\n","import type { Optional } from \"./types\";\n\nimport { isError, isNotNull, isObject, isString } from \"./types\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface LoggerOptions {\n /* Optional context prefix (e.g., \"AuthService\", \"PaymentHook\") */\n context?: string;\n /* Additional data to log alongside the message */\n data?: unknown;\n}\n\nexport interface ErrorLogOptions {\n /* Module or service where the error occurred */\n context?: string;\n /* Specific operation that failed (e.g., \"fetchUser\", \"validateToken\") */\n operation?: string;\n /* Additional metadata for debugging */\n metadata?: Record<string, unknown>;\n}\n\nfunction extractErrorMessage(error: unknown): string {\n if (isError(error)) {\n return error.message;\n }\n\n if (isString(error)) {\n return error;\n }\n\n if (isObject(error) && \"message\" in error && isString(error.message)) {\n return error.message;\n }\n\n return \"Unknown error\";\n}\n\nfunction buildPrefix(...parts: Optional<string>[]): string {\n return parts\n .filter(Boolean)\n .map((part) => `[${part}]`)\n .join(\" \");\n}\n\nconst consoleMethods = {\n debug: console.log,\n info: console.log,\n warn: console.warn,\n error: console.error,\n} as const;\n\nclass Logger {\n /* Log informational messages */\n info(message: string, options?: LoggerOptions): void {\n this.log(\"info\", message, options);\n }\n\n /* Log warning messages */\n warn(message: string, options?: LoggerOptions): void {\n this.log(\"warn\", message, options);\n }\n\n /* Log error messages */\n error(message: string, options?: LoggerOptions): void {\n this.log(\"error\", message, options);\n }\n\n /**\n * Log errors with full context and stack trace.\n * For API errors, consider using `getErrorMessage` from `@otim/utils/api`.\n */\n logError(error: unknown, options: ErrorLogOptions = {}): void {\n const { context, operation, metadata } = options;\n const prefix = buildPrefix(context, operation);\n const message = extractErrorMessage(error);\n\n console.error(prefix ? `${prefix} ${message}` : message);\n\n if (metadata && Object.keys(metadata).length > 0) {\n console.error(\"Metadata:\", metadata);\n }\n\n if (isError(error) && error.stack) {\n console.error(\"Stack:\", error.stack);\n } else if (isNotNull(error)) {\n console.error(\"Error details:\", error);\n }\n }\n\n private log(level: LogLevel, message: string, options?: LoggerOptions): void {\n const prefix = buildPrefix(options?.context);\n const fullMessage = prefix ? `${prefix} ${message}` : message;\n const logFn = consoleMethods[level];\n\n logFn(fullMessage);\n\n if (options?.data) {\n this.logData(level, options.data);\n }\n }\n\n private logData(level: LogLevel, data: unknown): void {\n if (level === \"debug\" || level === \"info\") {\n console.dir(data, { depth: null });\n } else {\n consoleMethods[level](\"Data:\", data);\n }\n }\n}\n\nexport const logger = new Logger();\n","import z from \"zod\";\n\nimport { logger } from \"./logger\";\n\ntype Locale = \"en\" | \"es\";\n\ntype FormatDateFunc<T> = (date: Date) => T;\n\nexport const iso8601DateSchema = z\n .string()\n .regex(\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/,\n \"Must be a valid ISO 8601 date format (e.g., 2024-12-31T23:59:59.000Z)\",\n );\n\nexport const TimeUnit = {\n Day: \"day\",\n Month: \"month\",\n Year: \"year\",\n} as const;\n\nexport type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit];\n\nconst units = {\n [TimeUnit.Day]: {\n one: \"day\",\n other: \"days\",\n },\n [TimeUnit.Month]: {\n one: \"month\",\n other: \"months\",\n },\n [TimeUnit.Year]: {\n one: \"year\",\n other: \"years\",\n },\n} as const;\n\nconst formatDateAsUSStandard = (\n date: Date,\n opts?: Intl.DateTimeFormatOptions,\n) =>\n date.toLocaleString(\"en-US\", {\n month: \"2-digit\",\n day: \"2-digit\",\n year: \"numeric\",\n ...opts,\n });\n\nexport const formatDateAsISO = (date: Date) => date.toISOString();\n\nconst formatFullDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"2-digit\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\nconst formatTime = (date: Date): string => {\n return date.toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZone: \"UTC\",\n timeZoneName: \"short\",\n });\n};\n\nconst formatDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions).format(\n date,\n );\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\n/**\n * Formats a date in long format (e.g., \"June 19, 2025\")\n * @param date - Date object to format\n * @returns Formatted date string\n */\nconst formatLongDate = (date: Date): string => {\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n return new Intl.DateTimeFormat(\"en-US\", options).format(date);\n};\n\n/**\n * Formats a date with time in long format (e.g., \"June 19, 2025 at 07:00 AM\")\n * @param date - Date object to format\n * @returns Formatted date and time string\n */\nconst formatLongDateTime = (date: Date): string => {\n const dateOptions: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n timeZone: \"UTC\",\n };\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: true,\n timeZone: \"UTC\",\n };\n\n const formattedDate = new Intl.DateTimeFormat(\"en-US\", dateOptions).format(\n date,\n );\n const formattedTime = new Intl.DateTimeFormat(\"en-US\", timeOptions)\n .format(date)\n .toLowerCase();\n\n return `${formattedDate} at ${formattedTime}`;\n};\n\nconst formatToShortDate = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Jan 1\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nconst formatToShortDateWithYear = (dateString: string | Date) => {\n const date =\n typeof dateString === \"string\" ? new Date(dateString) : dateString;\n\n if (isNaN(date.getTime())) {\n return \"Unknown\";\n }\n\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n timeZone: \"UTC\",\n });\n};\n\nexport const formatToJustDate = (dateString: string) => {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return \"1\";\n }\n\n return date.getUTCDate().toString();\n};\n\nexport const formatDateToYYYYMMDD = (date: Date) => {\n return new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n};\n\nconst isDateInvalid = (date: Date) => {\n return date.toString() === \"Invalid Date\";\n};\n\n/**\n * Validates if a date is valid (opposite of isDateInvalid)\n * Checks both the Date object validity and the timestamp\n */\nconst isValidDate = (date: Date): boolean => {\n return !isDateInvalid(date) && !isNaN(date.getTime());\n};\n\nconst isDateEpoc = (date: Date) => {\n return date.getTime() <= 0;\n};\n\nconst isDateInRange = (arg: unknown): boolean => {\n if (typeof arg !== \"string\") {\n return false;\n }\n\n const date = new Date(arg);\n const startDate = new Date(\"1800-01-01T00:00:00.000Z\");\n const endDate = new Date(\"2999-12-31T23:59:59.999Z\");\n\n return date >= startDate && date <= endDate;\n};\n\nconst isDateInPast = (input: string | number | Date): boolean => {\n let date: Date;\n if (input instanceof Date) {\n date = input;\n } else if (typeof input === \"number\") {\n const ms = input < 1e12 ? input * 1000 : input;\n date = new Date(ms);\n } else {\n date = new Date(input);\n }\n\n if (isNaN(date.getTime())) {\n return false;\n }\n\n return date.getTime() < Date.now();\n};\n\nconst isSameDate = (dateA: Date, dateB: Date) => {\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n};\n\nconst getPluralizedUnit = (\n unit: keyof typeof units,\n count: number,\n locale: Locale = \"en\",\n) => {\n const pluralRules = new Intl.PluralRules(locale, {\n type: \"cardinal\",\n });\n const pluralCategory = pluralRules.select(count);\n\n if (pluralCategory === \"one\" || pluralCategory === \"other\") {\n return `${count} ${units[unit][pluralCategory]}`;\n }\n\n return `${count} ${units[unit].other}`;\n};\n\nconst getRelativeDateDescription = (\n targetDate: Date,\n locale: Locale = \"en\",\n) => {\n const currentDate = new Date();\n\n const oneDay = 1000 * 60 * 60 * 24;\n const oneMonth = oneDay * 30;\n const oneYear = oneDay * 365;\n\n const diffInMilliseconds = targetDate.getTime() - currentDate.getTime();\n const diffInDays = Math.round(diffInMilliseconds / oneDay);\n const diffInMonths = Math.round(diffInMilliseconds / oneMonth);\n const diffInYears = Math.round(diffInMilliseconds / oneYear);\n\n if (Math.abs(diffInYears) >= 1) {\n return getPluralizedUnit(\"year\", Math.abs(diffInYears), locale);\n }\n\n if (Math.abs(diffInMonths) >= 1) {\n return getPluralizedUnit(\"month\", Math.abs(diffInMonths), locale);\n }\n\n return getPluralizedUnit(\"day\", Math.abs(diffInDays), locale);\n};\n\n/**\n * Safely formats a date with validation and fallback support\n * @param date - String or Date to format\n * @param formatter - Function that formats the Date object\n * @param fallback - Value to return if date is invalid\n * @returns Formatted string or fallback value\n */\nconst safeFormatDate = <T = string>(\n date: string | Date,\n formatter: FormatDateFunc<T>,\n fallback: T,\n): T => {\n const dateObj = typeof date === \"string\" ? new Date(date) : date;\n\n if (!isValidDate(dateObj)) {\n return fallback;\n }\n\n try {\n return formatter(dateObj);\n } catch (error) {\n logger.logError(error, {\n context: safeFormatDate.name,\n });\n return fallback;\n }\n};\n\nconst parseDateTime = (dateInput: string, timeInput?: string) => {\n const dateRegex = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM|am|pm)?$/;\n\n const dateMatch = dateRegex.exec(dateInput);\n if (!dateMatch) {\n return undefined;\n }\n\n const month = parseInt(dateMatch[1]!, 10) - 1;\n const day = parseInt(dateMatch[2]!, 10);\n const year = parseInt(dateMatch[3]!, 10);\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (timeInput) {\n timeInput = timeInput.replace(/\\u00A0/g, \" \").trim();\n\n const timeMatch = timeRegex.exec(timeInput);\n if (!timeMatch) {\n return undefined;\n }\n\n hours = parseInt(timeMatch[1]!, 10);\n minutes = parseInt(timeMatch[2]!, 10);\n seconds = timeMatch[3] ? parseInt(timeMatch[3], 10) : 0;\n const meridiem = timeMatch[4] ? timeMatch[4].toUpperCase() : null;\n\n if (meridiem === \"PM\" && hours < 12) {\n hours += 12;\n } else if (meridiem === \"AM\" && hours === 12) {\n hours = 0;\n }\n }\n\n const date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n if (isNaN(date.getTime())) {\n return undefined;\n }\n\n return date;\n};\n\nconst validateIso8601Date = (dueDate: string): void => {\n const result = iso8601DateSchema.safeParse(dueDate);\n if (!result.success) {\n const errorMessage =\n result.error.issues[0]?.message || \"Invalid ISO 8601 format\";\n throw new Error(`Invalid due date format: ${errorMessage}`);\n }\n};\n\nexport {\n formatDateAsUSStandard,\n formatToShortDate,\n formatToShortDateWithYear,\n formatFullDate,\n formatTime,\n formatDateTime,\n formatLongDate,\n formatLongDateTime,\n getPluralizedUnit,\n getRelativeDateDescription,\n isDateInvalid,\n isValidDate,\n validateIso8601Date,\n isDateEpoc,\n isDateInRange,\n isDateInPast,\n isSameDate,\n safeFormatDate,\n parseDateTime,\n};\nexport type { FormatDateFunc };\n"],"mappings":"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"}
|