@cranberry-money/shared-utils 4.14.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.ts +1 -36
- package/dist/auth.d.ts.map +1 -1
- package/dist/badge-status.d.ts +2 -24
- package/dist/badge-status.d.ts.map +1 -1
- package/dist/badge.d.ts +1 -28
- package/dist/badge.d.ts.map +1 -1
- package/dist/badge.js +1 -0
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/instruments.d.ts +1 -53
- package/dist/instruments.d.ts.map +1 -1
- package/dist/validation.d.ts +1 -24
- package/dist/validation.d.ts.map +1 -1
- package/dist/withdrawal.d.ts +1 -11
- package/dist/withdrawal.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/auth.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Authentication and token management utilities
|
|
3
3
|
*/
|
|
4
|
+
import type { DeviceInfo, TokenRefreshResponse, TokenRefreshError, AutoRefreshHandler } from '@cranberry-money/shared-types';
|
|
4
5
|
/**
|
|
5
6
|
* Check if a token has expired based on its expiration timestamp
|
|
6
7
|
* @param expiresAt - The expiration timestamp
|
|
@@ -26,60 +27,24 @@ export declare function getTimeUntilExpiry(expiresAt: string): number;
|
|
|
26
27
|
* @returns Formatted time string
|
|
27
28
|
*/
|
|
28
29
|
export declare function formatTimeUntilExpiry(expiresAt: string): string;
|
|
29
|
-
/**
|
|
30
|
-
* Device info structure
|
|
31
|
-
*/
|
|
32
|
-
export interface DeviceInfo {
|
|
33
|
-
browser: string;
|
|
34
|
-
os: string;
|
|
35
|
-
}
|
|
36
30
|
/**
|
|
37
31
|
* Parse device information from user agent string
|
|
38
32
|
* @param userAgent - The user agent string
|
|
39
33
|
* @returns Parsed device info
|
|
40
34
|
*/
|
|
41
35
|
export declare function parseDeviceInfo(userAgent: string): DeviceInfo;
|
|
42
|
-
/**
|
|
43
|
-
* Token refresh response structure
|
|
44
|
-
*/
|
|
45
|
-
export interface TokenRefreshResponse {
|
|
46
|
-
status?: number;
|
|
47
|
-
data?: {
|
|
48
|
-
access?: string;
|
|
49
|
-
refresh?: string;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
36
|
/**
|
|
53
37
|
* Check if token refresh was successful
|
|
54
38
|
* @param response - The refresh response
|
|
55
39
|
* @returns true if refresh was successful, false otherwise
|
|
56
40
|
*/
|
|
57
41
|
export declare function isRefreshSuccess(response: TokenRefreshResponse): boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Token refresh error structure
|
|
60
|
-
*/
|
|
61
|
-
export interface TokenRefreshError {
|
|
62
|
-
response?: {
|
|
63
|
-
data?: {
|
|
64
|
-
detail?: string;
|
|
65
|
-
message?: string;
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
message?: string;
|
|
69
|
-
}
|
|
70
42
|
/**
|
|
71
43
|
* Get error message from token refresh error
|
|
72
44
|
* @param error - The refresh error
|
|
73
45
|
* @returns Error message string
|
|
74
46
|
*/
|
|
75
47
|
export declare function getRefreshErrorMessage(error: TokenRefreshError): string;
|
|
76
|
-
/**
|
|
77
|
-
* Auto refresh handler interface
|
|
78
|
-
*/
|
|
79
|
-
export interface AutoRefreshHandler {
|
|
80
|
-
start: () => void;
|
|
81
|
-
stop: () => void;
|
|
82
|
-
}
|
|
83
48
|
/**
|
|
84
49
|
* Create an auto-refresh handler for tokens
|
|
85
50
|
* @param refreshCallback - Callback function to refresh token
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AAkBvC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,mBAAmB,GAAE,MAA6C,GACjE,OAAO,CAMT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkB/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAwB7D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAExE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAWvE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,aAAa,GAAE,MAAc,GAC5B,kBAAkB,CAiBpB"}
|
package/dist/badge-status.d.ts
CHANGED
|
@@ -4,30 +4,8 @@
|
|
|
4
4
|
* This module provides pre-configured badge functions for common status types
|
|
5
5
|
* in the MyPortfolio platform. It builds on top of the core badge system.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import type { BadgeSize
|
|
9
|
-
/**
|
|
10
|
-
* Extended badge style with display text for status badges
|
|
11
|
-
*/
|
|
12
|
-
export interface StatusBadgeStyle extends BadgeStyle {
|
|
13
|
-
displayText: string;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Trade status type encompassing regular and target trades
|
|
17
|
-
*/
|
|
18
|
-
export type TradeStatus = typeof TRADE_STATUS_EXECUTED | typeof TRADE_STATUS_SETTLED | typeof TRADE_STATUS_CANCELLED | typeof TRADE_STATUS_FAILED | typeof TARGET_TRADE_STATUS_PENDING | typeof TARGET_TRADE_STATUS_SUBMITTED | typeof TARGET_TRADE_STATUS_EXPIRED;
|
|
19
|
-
/**
|
|
20
|
-
* Withdrawal status type
|
|
21
|
-
*/
|
|
22
|
-
export type WithdrawalStatus = typeof WITHDRAWAL_STATUS_PENDING_REVIEW | typeof WITHDRAWAL_STATUS_APPROVED | typeof WITHDRAWAL_STATUS_REJECTED | typeof WITHDRAWAL_STATUS_PROCESSING | typeof WITHDRAWAL_STATUS_AWAITING_LIQUIDATION | typeof WITHDRAWAL_STATUS_LIQUIDATION_IN_PROGRESS | typeof WITHDRAWAL_STATUS_COMPLETED | typeof WITHDRAWAL_STATUS_CANCELLED | typeof WITHDRAWAL_STATUS_FAILED;
|
|
23
|
-
/**
|
|
24
|
-
* Liquidation status type
|
|
25
|
-
*/
|
|
26
|
-
export type LiquidationStatus = typeof LIQUIDATION_STATUS_PENDING | typeof LIQUIDATION_STATUS_TRADES_CREATED | typeof LIQUIDATION_STATUS_EXECUTED | typeof LIQUIDATION_STATUS_SETTLED | typeof LIQUIDATION_STATUS_FAILED;
|
|
27
|
-
/**
|
|
28
|
-
* Target trade status type
|
|
29
|
-
*/
|
|
30
|
-
export type TargetTradeStatus = typeof TARGET_TRADE_STATUS_PENDING | typeof TARGET_TRADE_STATUS_APPROVED | typeof TARGET_TRADE_STATUS_SUBMITTED | typeof TARGET_TRADE_STATUS_CANCELLED | typeof TARGET_TRADE_STATUS_EXPIRED;
|
|
7
|
+
import type { StatusBadgeStyle, TradeStatus, WithdrawalStatus, LiquidationStatus, TargetTradeStatus } from '@cranberry-money/shared-types';
|
|
8
|
+
import type { BadgeSize } from '@cranberry-money/shared-types';
|
|
31
9
|
/**
|
|
32
10
|
* Creates a badge for trade status
|
|
33
11
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge-status.d.ts","sourceRoot":"","sources":["../src/badge-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"badge-status.d.ts","sourceRoot":"","sources":["../src/badge-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAmDvC,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAiF7E;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAE,SAAgB,GAAG,gBAAgB,CAUjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,GAAE,SAAgB,GAAG,gBAAgB,CAU3G;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,GAAE,SAAgB,GAAG,gBAAgB,CAU7G;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,GAAE,SAAgB,GAAG,gBAAgB,CAU7G"}
|
package/dist/badge.d.ts
CHANGED
|
@@ -8,34 +8,7 @@
|
|
|
8
8
|
* Note: The actual style classes are designed to work with Tailwind CSS
|
|
9
9
|
* and assume a specific color system is in place.
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
* Badge variant types representing different semantic states
|
|
13
|
-
*/
|
|
14
|
-
export type BadgeVariant = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'neutral';
|
|
15
|
-
/**
|
|
16
|
-
* Badge size options
|
|
17
|
-
*/
|
|
18
|
-
export type BadgeSize = 'sm' | 'md' | 'lg';
|
|
19
|
-
/**
|
|
20
|
-
* Configuration options for creating a badge
|
|
21
|
-
*/
|
|
22
|
-
export interface BadgeConfig {
|
|
23
|
-
/** The semantic variant of the badge */
|
|
24
|
-
variant: BadgeVariant;
|
|
25
|
-
/** Size of the badge (default: 'md') */
|
|
26
|
-
size?: BadgeSize;
|
|
27
|
-
/** Additional CSS classes to apply */
|
|
28
|
-
className?: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Badge style output with generated classes and accessibility attributes
|
|
32
|
-
*/
|
|
33
|
-
export interface BadgeStyle {
|
|
34
|
-
/** Combined CSS classes for the badge */
|
|
35
|
-
className: string;
|
|
36
|
-
/** Accessibility label for screen readers */
|
|
37
|
-
ariaLabel?: string;
|
|
38
|
-
}
|
|
11
|
+
import type { BadgeVariant, BadgeSize, BadgeConfig, BadgeStyle } from '@cranberry-money/shared-types';
|
|
39
12
|
/**
|
|
40
13
|
* Creates a badge style configuration with appropriate CSS classes
|
|
41
14
|
*
|
package/dist/badge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../src/badge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../src/badge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AA+BtG;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CACzB,EAAE,OAAO,EAAE,IAAW,EAAE,SAAc,EAAE,EAAE,WAAW,EACrD,aAAa,GAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAA0B,EACpE,UAAU,GAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAuB,GAC1D,UAAU,CAQZ;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,8BAAyB,CAAC;AACrD,eAAO,MAAM,WAAW,2BAAsB,CAAC"}
|
package/dist/badge.js
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* These assume a specific color system with surface and semantic colors
|
|
14
14
|
*/
|
|
15
15
|
const DEFAULT_BADGE_VARIANTS = {
|
|
16
|
+
default: 'bg-surface-secondary text-content-body',
|
|
16
17
|
primary: 'bg-surface-tertiary text-content-secondary',
|
|
17
18
|
secondary: 'bg-surface-secondary text-content-body',
|
|
18
19
|
success: 'bg-success-900/80 text-success-300',
|
package/dist/index.d.ts
CHANGED
|
@@ -7,19 +7,13 @@
|
|
|
7
7
|
export { truncateText } from './text';
|
|
8
8
|
export { formatDate, formatShortDate, formatTime, formatDateTime } from './date';
|
|
9
9
|
export { NUMBER_FORMAT_OPTIONS_CURRENCY, NUMBER_FORMAT_OPTIONS_CURRENCY_SIGNED, formatCurrency, parseCurrencyInput, formatCurrencyWithCode, formatDefaultCurrency, formatShares, } from './currency';
|
|
10
|
-
export type { BadgeVariant, BadgeSize, BadgeConfig, BadgeStyle } from './badge';
|
|
11
10
|
export { createBadge, BADGE_VARIANTS, BADGE_SIZES } from './badge';
|
|
12
|
-
export type { StatusBadgeStyle, TradeStatus, WithdrawalStatus, LiquidationStatus, TargetTradeStatus, } from './badge-status';
|
|
13
11
|
export { getTradeStatusBadge, getWithdrawalStatusBadge, getLiquidationStatusBadge, getTargetTradeStatusBadge, } from './badge-status';
|
|
14
12
|
export { formatPortfolioValue, calculateTotalValue, getMarketAllocation, getCashAllocation } from './portfolio';
|
|
15
|
-
export type { LiquidationProgress } from './withdrawal';
|
|
16
13
|
export { formatWithdrawalAmount, formatLiquidationValue, formatSharesQuantity, calculateLiquidationProgress, getTotalEstimatedValue, } from './withdrawal';
|
|
17
|
-
export type { PasswordValidation, EmailConfirmationValidation, ExtendedPasswordValidation } from './validation';
|
|
18
14
|
export { isNumericOnly, validatePassword, isValidTokenFormat, formatVerificationToken, validateEmailConfirmation, isValidEmail, hasUppercase, hasLowercase, hasSpecialCharacter, hasDigit, validatePasswordExtended, isValidPhoneNumber, isValidPhoneFormat, isValidUrl, isValidDate, isEmptyOrWhitespace, meetsMinLength, meetsMaxLength, isInRange, isPositiveNumber, isNonNegativeNumber, isValidFullName, isValidDateOfBirth, formatPhoneNumber, isValidInvestmentAmount, hasMinimumSelection, isSelected, validatePercentageSum, validateAllocationSum, isInNumberRange, isValidPercentage, } from './validation';
|
|
19
15
|
export { hasActiveFilters, countActiveFilters, clearAllFilters, updateFilters, isFilterEmpty, removeEmptyFilters, mergeFilters, areFiltersEqual, createFilterPredicate, hasActiveInstrumentFilters, countActiveInstrumentFilters, hasActiveTradeFilters, countActiveTradeFilters, hasActiveTransactionFilters, countActiveTransactionFilters, hasActiveTargetTradeFilters, countActiveTargetTradeFilters, } from './filters';
|
|
20
|
-
export type { DeviceInfo, TokenRefreshResponse, TokenRefreshError, AutoRefreshHandler } from './auth';
|
|
21
16
|
export { isTokenExpired, isTokenExpiringSoon, getTimeUntilExpiry, formatTimeUntilExpiry, parseDeviceInfo, isRefreshSuccess, getRefreshErrorMessage, createAutoRefreshHandler, } from './auth';
|
|
22
|
-
export type { InstrumentTypeInfo, InstrumentBasicInfo, PriceChangeResult, PriceSnapshot, FormattedPriceChange, TradeableInstrument, MarketDataInfo, } from './instruments';
|
|
23
17
|
export { formatInstrumentPrice, getCurrencySymbol, getInstrumentType, formatInstrumentName, calculatePriceChange, formatPriceChange, isInstrumentTradeable, formatMarketCap, formatVolume, hasMarketData, } from './instruments';
|
|
24
18
|
export { sortByStringField, filterByTextSearch, filterByBooleanField, findByField, findByStringField, extractAndSortField, groupByFirstLetter, groupByField, hasItemWithFieldValue, countByFieldValue, } from './collections';
|
|
25
19
|
export { downloadBlob, downloadTextFile, downloadJsonFile, generateTimestampedFilename, downloadDataUrl, downloadCsvFile, } from './downloads';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGjF,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGjF,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGnE,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EAEV,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,qBAAqB,EAErB,0BAA0B,EAC1B,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,2BAA2B,EAC3B,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,WAAW,GACZ,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,11 +10,15 @@ export { truncateText } from './text';
|
|
|
10
10
|
export { formatDate, formatShortDate, formatTime, formatDateTime } from './date';
|
|
11
11
|
// Currency formatting utilities
|
|
12
12
|
export { NUMBER_FORMAT_OPTIONS_CURRENCY, NUMBER_FORMAT_OPTIONS_CURRENCY_SIGNED, formatCurrency, parseCurrencyInput, formatCurrencyWithCode, formatDefaultCurrency, formatShares, } from './currency';
|
|
13
|
+
// Badge system utilities
|
|
13
14
|
export { createBadge, BADGE_VARIANTS, BADGE_SIZES } from './badge';
|
|
15
|
+
// Badge status utilities
|
|
14
16
|
export { getTradeStatusBadge, getWithdrawalStatusBadge, getLiquidationStatusBadge, getTargetTradeStatusBadge, } from './badge-status';
|
|
15
17
|
// Portfolio utilities
|
|
16
18
|
export { formatPortfolioValue, calculateTotalValue, getMarketAllocation, getCashAllocation } from './portfolio';
|
|
19
|
+
// Withdrawal utilities
|
|
17
20
|
export { formatWithdrawalAmount, formatLiquidationValue, formatSharesQuantity, calculateLiquidationProgress, getTotalEstimatedValue, } from './withdrawal';
|
|
21
|
+
// Validation utilities
|
|
18
22
|
export { isNumericOnly, validatePassword, isValidTokenFormat, formatVerificationToken, validateEmailConfirmation, isValidEmail, hasUppercase, hasLowercase, hasSpecialCharacter, hasDigit, validatePasswordExtended, isValidPhoneNumber, isValidPhoneFormat, isValidUrl, isValidDate, isEmptyOrWhitespace, meetsMinLength, meetsMaxLength, isInRange, isPositiveNumber, isNonNegativeNumber, isValidFullName, isValidDateOfBirth, formatPhoneNumber, isValidInvestmentAmount, hasMinimumSelection, isSelected,
|
|
19
23
|
// Enhanced validation utilities (Phase 14)
|
|
20
24
|
validatePercentageSum, validateAllocationSum, isInNumberRange, isValidPercentage, } from './validation';
|
|
@@ -22,7 +26,9 @@ validatePercentageSum, validateAllocationSum, isInNumberRange, isValidPercentage
|
|
|
22
26
|
export { hasActiveFilters, countActiveFilters, clearAllFilters, updateFilters, isFilterEmpty, removeEmptyFilters, mergeFilters, areFiltersEqual, createFilterPredicate,
|
|
23
27
|
// Common filter patterns
|
|
24
28
|
hasActiveInstrumentFilters, countActiveInstrumentFilters, hasActiveTradeFilters, countActiveTradeFilters, hasActiveTransactionFilters, countActiveTransactionFilters, hasActiveTargetTradeFilters, countActiveTargetTradeFilters, } from './filters';
|
|
29
|
+
// Authentication utilities
|
|
25
30
|
export { isTokenExpired, isTokenExpiringSoon, getTimeUntilExpiry, formatTimeUntilExpiry, parseDeviceInfo, isRefreshSuccess, getRefreshErrorMessage, createAutoRefreshHandler, } from './auth';
|
|
31
|
+
// Instrument utilities
|
|
26
32
|
export { formatInstrumentPrice, getCurrencySymbol, getInstrumentType, formatInstrumentName, calculatePriceChange, formatPriceChange, isInstrumentTradeable, formatMarketCap, formatVolume, hasMarketData, } from './instruments';
|
|
27
33
|
// Collection utilities
|
|
28
34
|
export { sortByStringField, filterByTextSearch, filterByBooleanField, findByField, findByStringField, extractAndSortField, groupByFirstLetter, groupByField, hasItemWithFieldValue, countByFieldValue, } from './collections';
|
package/dist/instruments.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Instrument and market data formatting utilities
|
|
3
3
|
*/
|
|
4
|
+
import type { InstrumentTypeInfo, InstrumentBasicInfo, PriceChangeResult, PriceSnapshot, FormattedPriceChange, TradeableInstrument, MarketDataInfo } from '@cranberry-money/shared-types';
|
|
4
5
|
/**
|
|
5
6
|
* Format instrument price with currency symbol
|
|
6
7
|
* @param price - The price as string
|
|
@@ -14,74 +15,30 @@ export declare function formatInstrumentPrice(price: string, currency?: string |
|
|
|
14
15
|
* @returns Currency symbol
|
|
15
16
|
*/
|
|
16
17
|
export declare function getCurrencySymbol(currency?: string | null): string;
|
|
17
|
-
/**
|
|
18
|
-
* Instrument interface for type determination
|
|
19
|
-
*/
|
|
20
|
-
export interface InstrumentTypeInfo {
|
|
21
|
-
isEtf?: boolean;
|
|
22
|
-
isFund?: boolean;
|
|
23
|
-
}
|
|
24
18
|
/**
|
|
25
19
|
* Determine instrument type based on flags
|
|
26
20
|
* @param instrument - The instrument with type flags
|
|
27
21
|
* @returns Instrument type string
|
|
28
22
|
*/
|
|
29
23
|
export declare function getInstrumentType(instrument: InstrumentTypeInfo): string;
|
|
30
|
-
/**
|
|
31
|
-
* Basic instrument info for formatting
|
|
32
|
-
*/
|
|
33
|
-
export interface InstrumentBasicInfo {
|
|
34
|
-
symbol: string;
|
|
35
|
-
name: string;
|
|
36
|
-
}
|
|
37
24
|
/**
|
|
38
25
|
* Format instrument display name with symbol
|
|
39
26
|
* @param instrument - The instrument with symbol and name
|
|
40
27
|
* @returns Formatted display name
|
|
41
28
|
*/
|
|
42
29
|
export declare function formatInstrumentName(instrument: InstrumentBasicInfo): string;
|
|
43
|
-
/**
|
|
44
|
-
* Price change calculation result
|
|
45
|
-
*/
|
|
46
|
-
export interface PriceChangeResult {
|
|
47
|
-
change: number;
|
|
48
|
-
changePercent: number;
|
|
49
|
-
isPositive: boolean;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Snapshot data for price change calculation
|
|
53
|
-
*/
|
|
54
|
-
export interface PriceSnapshot {
|
|
55
|
-
change: string;
|
|
56
|
-
changePercent: string;
|
|
57
|
-
}
|
|
58
30
|
/**
|
|
59
31
|
* Calculate price change from snapshot
|
|
60
32
|
* @param snapshot - The price snapshot
|
|
61
33
|
* @returns Price change calculation result
|
|
62
34
|
*/
|
|
63
35
|
export declare function calculatePriceChange(snapshot: PriceSnapshot): PriceChangeResult;
|
|
64
|
-
/**
|
|
65
|
-
* Formatted price change result
|
|
66
|
-
*/
|
|
67
|
-
export interface FormattedPriceChange {
|
|
68
|
-
changeText: string;
|
|
69
|
-
changePercentText: string;
|
|
70
|
-
colorClass: string;
|
|
71
|
-
}
|
|
72
36
|
/**
|
|
73
37
|
* Format price change with appropriate color class
|
|
74
38
|
* @param snapshot - The price snapshot
|
|
75
39
|
* @returns Formatted price change with color class
|
|
76
40
|
*/
|
|
77
41
|
export declare function formatPriceChange(snapshot: PriceSnapshot): FormattedPriceChange;
|
|
78
|
-
/**
|
|
79
|
-
* Tradeable instrument info
|
|
80
|
-
*/
|
|
81
|
-
export interface TradeableInstrument {
|
|
82
|
-
isActive: boolean;
|
|
83
|
-
isActivelyTrading: boolean;
|
|
84
|
-
}
|
|
85
42
|
/**
|
|
86
43
|
* Check if instrument is actively tradeable
|
|
87
44
|
* @param instrument - The instrument with trading flags
|
|
@@ -100,15 +57,6 @@ export declare function formatMarketCap(marketCap: string | null | undefined): s
|
|
|
100
57
|
* @returns Formatted volume string
|
|
101
58
|
*/
|
|
102
59
|
export declare function formatVolume(volume: number): string;
|
|
103
|
-
/**
|
|
104
|
-
* Market data availability info
|
|
105
|
-
*/
|
|
106
|
-
export interface MarketDataInfo {
|
|
107
|
-
openPrice?: string | null;
|
|
108
|
-
dayHigh?: string | null;
|
|
109
|
-
dayLow?: string | null;
|
|
110
|
-
volume?: number | null;
|
|
111
|
-
}
|
|
112
60
|
/**
|
|
113
61
|
* Check if market data is available
|
|
114
62
|
* @param marketData - The market data to check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACf,MAAM,+BAA+B,CAAC;AAUvC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMrF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAalE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAIxE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,GAAG,iBAAiB,CAS/E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,oBAAoB,CAY/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAE9E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAU5E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAEjE"}
|
package/dist/validation.d.ts
CHANGED
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Validation utility functions
|
|
3
3
|
*/
|
|
4
|
+
import type { PasswordValidation, EmailConfirmationValidation, ExtendedPasswordValidation } from '@cranberry-money/shared-types';
|
|
4
5
|
/**
|
|
5
6
|
* Checks if a string contains only numeric characters
|
|
6
7
|
* @param str - The string to validate
|
|
7
8
|
* @returns true if the string contains only digits, false otherwise
|
|
8
9
|
*/
|
|
9
10
|
export declare function isNumericOnly(str: string): boolean;
|
|
10
|
-
/**
|
|
11
|
-
* Password validation result interface
|
|
12
|
-
*/
|
|
13
|
-
export interface PasswordValidation {
|
|
14
|
-
lengthValid: boolean;
|
|
15
|
-
notNumeric: boolean;
|
|
16
|
-
}
|
|
17
11
|
/**
|
|
18
12
|
* Validates password strength based on minimum requirements
|
|
19
13
|
* @param password - The password to validate
|
|
@@ -34,14 +28,6 @@ export declare function isValidTokenFormat(token: string, minLength?: number): b
|
|
|
34
28
|
* @returns The formatted token
|
|
35
29
|
*/
|
|
36
30
|
export declare function formatVerificationToken(token: string): string;
|
|
37
|
-
/**
|
|
38
|
-
* Email confirmation validation result interface
|
|
39
|
-
*/
|
|
40
|
-
export interface EmailConfirmationValidation {
|
|
41
|
-
isValid: boolean;
|
|
42
|
-
isEmpty: boolean;
|
|
43
|
-
isValidFormat: boolean;
|
|
44
|
-
}
|
|
45
31
|
/**
|
|
46
32
|
* Validates email confirmation form data
|
|
47
33
|
* @param token - The verification token
|
|
@@ -79,15 +65,6 @@ export declare function hasSpecialCharacter(str: string): boolean;
|
|
|
79
65
|
* @returns true if contains digit, false otherwise
|
|
80
66
|
*/
|
|
81
67
|
export declare function hasDigit(str: string): boolean;
|
|
82
|
-
/**
|
|
83
|
-
* Extended password validation result interface
|
|
84
|
-
*/
|
|
85
|
-
export interface ExtendedPasswordValidation extends PasswordValidation {
|
|
86
|
-
hasUppercase: boolean;
|
|
87
|
-
hasLowercase: boolean;
|
|
88
|
-
hasSpecialCharacter: boolean;
|
|
89
|
-
hasDigit: boolean;
|
|
90
|
-
}
|
|
91
68
|
/**
|
|
92
69
|
* Performs extended password validation with additional strength checks
|
|
93
70
|
* @param password - The password to validate
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/withdrawal.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* calculating liquidation progress, and other withdrawal-related operations.
|
|
6
6
|
* Functions are designed to work with generic types to maintain flexibility.
|
|
7
7
|
*/
|
|
8
|
+
import type { LiquidationProgress } from '@cranberry-money/shared-types';
|
|
8
9
|
/**
|
|
9
10
|
* Formats a withdrawal amount as currency
|
|
10
11
|
*
|
|
@@ -44,17 +45,6 @@ export declare function formatLiquidationValue(value: string | number): string;
|
|
|
44
45
|
* ```
|
|
45
46
|
*/
|
|
46
47
|
export declare function formatSharesQuantity(shares: number): string;
|
|
47
|
-
/**
|
|
48
|
-
* Progress calculation result for liquidations
|
|
49
|
-
*/
|
|
50
|
-
export interface LiquidationProgress {
|
|
51
|
-
total: number;
|
|
52
|
-
pending: number;
|
|
53
|
-
inProgress: number;
|
|
54
|
-
completed: number;
|
|
55
|
-
failed: number;
|
|
56
|
-
completionRate: number;
|
|
57
|
-
}
|
|
58
48
|
/**
|
|
59
49
|
* Calculates liquidation progress statistics
|
|
60
50
|
*
|
package/dist/withdrawal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../src/withdrawal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../src/withdrawal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAazE;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAMtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAMrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,EAClF,YAAY,EAAE,CAAC,EAAE,GAChB,mBAAmB,CAkBrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,MAAM,CAI9G"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cranberry-money/shared-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Shared utility functions for MyPortfolio platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@cranberry-money/shared-constants": "^4.0.0",
|
|
28
28
|
"@cranberry-money/shared-services": "^4.0.0",
|
|
29
|
-
"@cranberry-money/shared-types": "^4.
|
|
29
|
+
"@cranberry-money/shared-types": "^4.2.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"typescript": "^5.0.0"
|