@cranberry-money/shared-utils 8.23.177 → 8.23.181
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/dashboard.d.ts +9 -2
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +24 -57
- package/dist/dashboard.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/portfolio.d.ts +1 -2
- package/dist/portfolio.d.ts.map +1 -1
- package/dist/portfolio.js +0 -10
- package/dist/portfolio.js.map +1 -1
- package/package.json +3 -3
package/dist/dashboard.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { AssetHolding, AllocationDisplayItem } from '@cranberry-money/shared-types';
|
|
2
|
+
/**
|
|
3
|
+
* Transforms holdings into allocation display items.
|
|
4
|
+
* AssetHolding includes both target and current allocation percentages from the backend.
|
|
5
|
+
* Backend handles sorting by target and current allocation percentages.
|
|
6
|
+
*
|
|
7
|
+
* @param holdings - Asset holdings with target and current allocation percentages (pre-sorted by backend)
|
|
8
|
+
*/
|
|
9
|
+
export declare const combineTargetAndActualAllocations: (holdings: readonly AssetHolding[]) => AllocationDisplayItem[];
|
|
3
10
|
export declare const calculateAllocationTotals: (items: readonly AllocationDisplayItem[]) => {
|
|
4
11
|
totalTarget: number;
|
|
5
12
|
totalActual: number;
|
package/dist/dashboard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGzF;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAC5C,UAAU,SAAS,YAAY,EAAE,KAChC,qBAAqB,EA2BvB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,OAAO,SAAS,qBAAqB,EAAE;;;;;CAOhF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,QAAQ,MAAM,KAAG,MAG3D,CAAC"}
|
package/dist/dashboard.js
CHANGED
|
@@ -1,69 +1,36 @@
|
|
|
1
1
|
import { DESIGN_TOKENS } from '@cranberry-money/shared-constants';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
sector: allocation.instrumentSector,
|
|
13
|
-
industry: allocation.instrumentIndustry,
|
|
14
|
-
exchange: allocation.instrumentExchange,
|
|
15
|
-
currency: allocation.instrumentCurrency,
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
holdings.forEach((holding) => {
|
|
19
|
-
const existing = instrumentMap.get(holding.instrument.uuid);
|
|
2
|
+
/**
|
|
3
|
+
* Transforms holdings into allocation display items.
|
|
4
|
+
* AssetHolding includes both target and current allocation percentages from the backend.
|
|
5
|
+
* Backend handles sorting by target and current allocation percentages.
|
|
6
|
+
*
|
|
7
|
+
* @param holdings - Asset holdings with target and current allocation percentages (pre-sorted by backend)
|
|
8
|
+
*/
|
|
9
|
+
export const combineTargetAndActualAllocations = (holdings) => {
|
|
10
|
+
// Map holdings to display items (backend already sorted by allocation percentages)
|
|
11
|
+
return holdings.map((holding, index) => {
|
|
20
12
|
const currentPrice = parseFloat(holding.instrument.currentPrice || '0');
|
|
21
13
|
const value = holding.quantity * currentPrice;
|
|
22
|
-
|
|
14
|
+
const targetPercentage = holding.targetAllocationPercentage ? parseFloat(holding.targetAllocationPercentage) : undefined;
|
|
15
|
+
const actualPercentage = holding.currentAllocationPercentage ? parseFloat(holding.currentAllocationPercentage) : undefined;
|
|
16
|
+
return {
|
|
17
|
+
instrumentUuid: holding.instrument.uuid,
|
|
23
18
|
symbol: holding.instrumentSymbol,
|
|
24
19
|
name: holding.instrumentName,
|
|
25
20
|
displayName: holding.instrumentDisplayName,
|
|
26
|
-
targetPercentage
|
|
27
|
-
actualPercentage
|
|
21
|
+
targetPercentage,
|
|
22
|
+
actualPercentage,
|
|
28
23
|
quantity: holding.quantity,
|
|
29
24
|
currentPrice,
|
|
30
25
|
value,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
instrumentMap.forEach((data, instrumentUuid) => {
|
|
40
|
-
items.push({
|
|
41
|
-
instrumentUuid,
|
|
42
|
-
symbol: data.symbol,
|
|
43
|
-
name: data.name,
|
|
44
|
-
displayName: data.displayName,
|
|
45
|
-
targetPercentage: data.targetPercentage,
|
|
46
|
-
actualPercentage: data.actualPercentage,
|
|
47
|
-
quantity: data.quantity,
|
|
48
|
-
currentPrice: data.currentPrice,
|
|
49
|
-
value: data.value,
|
|
50
|
-
color: DESIGN_TOKENS.colors.chart[colorIndex++ % DESIGN_TOKENS.colors.chart.length],
|
|
51
|
-
hasTarget: data.targetPercentage !== undefined,
|
|
52
|
-
hasActual: data.actualPercentage !== undefined && data.actualPercentage > 0,
|
|
53
|
-
sector: data.sector,
|
|
54
|
-
industry: data.industry,
|
|
55
|
-
exchange: data.exchange,
|
|
56
|
-
currency: data.currency,
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
return items.sort((a, b) => {
|
|
60
|
-
const aTarget = a.targetPercentage || 0;
|
|
61
|
-
const bTarget = b.targetPercentage || 0;
|
|
62
|
-
if (aTarget !== bTarget)
|
|
63
|
-
return bTarget - aTarget;
|
|
64
|
-
const aActual = a.actualPercentage || 0;
|
|
65
|
-
const bActual = b.actualPercentage || 0;
|
|
66
|
-
return bActual - aActual;
|
|
26
|
+
color: DESIGN_TOKENS.colors.chart[index % DESIGN_TOKENS.colors.chart.length],
|
|
27
|
+
hasTarget: targetPercentage !== undefined && targetPercentage > 0,
|
|
28
|
+
hasActual: actualPercentage !== undefined && actualPercentage > 0,
|
|
29
|
+
sector: holding.instrumentSector,
|
|
30
|
+
industry: holding.instrumentIndustry,
|
|
31
|
+
exchange: holding.instrumentExchange,
|
|
32
|
+
currency: holding.instrumentCurrency,
|
|
33
|
+
};
|
|
67
34
|
});
|
|
68
35
|
};
|
|
69
36
|
export const calculateAllocationTotals = (items) => {
|
package/dist/dashboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,QAAiC,EACR,EAAE;IAC3B,mFAAmF;IACnF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzH,MAAM,gBAAgB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3H,OAAO;YACL,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI;YACvC,MAAM,EAAE,OAAO,CAAC,gBAAgB;YAChC,IAAI,EAAE,OAAO,CAAC,cAAc;YAC5B,WAAW,EAAE,OAAO,CAAC,qBAAqB;YAC1C,gBAAgB;YAChB,gBAAgB;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY;YACZ,KAAK;YACL,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAW;YACtF,SAAS,EAAE,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,GAAG,CAAC;YACjE,SAAS,EAAE,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,GAAG,CAAC;YACjE,MAAM,EAAE,OAAO,CAAC,gBAAgB;YAChC,QAAQ,EAAE,OAAO,CAAC,kBAAkB;YACpC,QAAQ,EAAE,OAAO,CAAC,kBAAkB;YACpC,QAAQ,EAAE,OAAO,CAAC,kBAAkB;SACrC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAuC,EAAE,EAAE;IACnF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAc,EAAU,EAAE;IACnE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { parseAddress, getAddressDisplayLines } from './address';
|
|
|
3
3
|
export { formatDate, formatShortDate, formatTime, formatDateTime } from './date';
|
|
4
4
|
export { NUMBER_FORMAT_OPTIONS_CURRENCY, NUMBER_FORMAT_OPTIONS_CURRENCY_SIGNED, parseCurrencyInput, formatCurrencyWithCode, formatDefaultCurrency, formatCurrency, formatCurrencyWithOptions, formatQuantityWithSuffix, formatTransactionAmount, getTransactionTypeLabel, formatBSB, formatAccountNumber, } from './formatting';
|
|
5
5
|
export { getTradeStatusBadge, getOrderStatusBadge, getTargetTradeStatusBadge } from './badges';
|
|
6
|
-
export { formatPortfolioValue, calculateTotalValue, getMarketAllocation, getCashAllocation, validateAllocations,
|
|
6
|
+
export { formatPortfolioValue, calculateTotalValue, getMarketAllocation, getCashAllocation, validateAllocations, } from './portfolio';
|
|
7
7
|
export { isNumericOnly, validatePassword, formatVerificationToken, validateEmailConfirmation, isValidPhoneFormat, isValidFullName, formatPhoneNumber, isValidInvestmentAmount, isValidSourceOfFunds, } from './validation';
|
|
8
8
|
export { validateUserProfileField } from './user-validation';
|
|
9
9
|
export { hasActiveFilters, countActiveFilters, hasActiveInstrumentFilters, countActiveInstrumentFilters, hasActiveTradeFilters, countActiveTradeFilters, hasActiveTransactionFilters, countActiveTransactionFilters, hasActiveOrderFilters, countActiveOrderFilters, } from './filters';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGjF,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,SAAS,EACT,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAG/F,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAGjF,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,SAAS,EACT,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAG/F,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,iCAAiC,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAGvH,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAGpE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,gCAAgC,EAChC,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export { NUMBER_FORMAT_OPTIONS_CURRENCY, NUMBER_FORMAT_OPTIONS_CURRENCY_SIGNED,
|
|
|
9
9
|
// Badge utilities
|
|
10
10
|
export { getTradeStatusBadge, getOrderStatusBadge, getTargetTradeStatusBadge } from './badges';
|
|
11
11
|
// Portfolio utilities
|
|
12
|
-
export { formatPortfolioValue, calculateTotalValue, getMarketAllocation, getCashAllocation, validateAllocations,
|
|
12
|
+
export { formatPortfolioValue, calculateTotalValue, getMarketAllocation, getCashAllocation, validateAllocations, } from './portfolio';
|
|
13
13
|
// Validation utilities
|
|
14
14
|
export { isNumericOnly, validatePassword, formatVerificationToken, validateEmailConfirmation, isValidPhoneFormat, isValidFullName, formatPhoneNumber, isValidInvestmentAmount, isValidSourceOfFunds, } from './validation';
|
|
15
15
|
// User profile validation utilities
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEjE,4BAA4B;AAC5B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEjF,2CAA2C;AAC3C,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,SAAS,EACT,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE/F,sBAAsB;AACtB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEjE,4BAA4B;AAC5B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEjF,2CAA2C;AAC3C,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,SAAS,EACT,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE/F,sBAAsB;AACtB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,uBAAuB;AACvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,oCAAoC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,mBAAmB;AACnB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,sBAAsB;AACtB,OAAO,EAAE,iCAAiC,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEvH,iCAAiC;AACjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,6BAA6B;AAC7B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,gCAAgC,EAChC,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,6BAA6B;AAC7B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEpG,sFAAsF"}
|
package/dist/portfolio.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { AssetAllocation
|
|
1
|
+
import type { AssetAllocation } from '@cranberry-money/shared-types';
|
|
2
2
|
export declare function formatPortfolioValue(value: string | number): string;
|
|
3
3
|
export declare function calculateTotalValue(marketValue: string | number, cashBalance: string | number): number;
|
|
4
4
|
export declare function getMarketAllocation(marketValue: string | number, totalValue: string | number): number;
|
|
5
5
|
export declare function getCashAllocation(cashBalance: string | number, totalValue: string | number): number;
|
|
6
6
|
export declare const validateAllocations: (allocations: readonly AssetAllocation[]) => boolean;
|
|
7
|
-
export declare const calculateHoldingAllocations: (holdings: readonly AssetHolding[]) => Record<string, number>;
|
|
8
7
|
//# sourceMappingURL=portfolio.d.ts.map
|
package/dist/portfolio.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../src/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../src/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AASrE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAItG;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAIrG;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAInG;AAED,eAAO,MAAM,mBAAmB,GAAI,aAAa,SAAS,eAAe,EAAE,KAAG,OAI7E,CAAC"}
|
package/dist/portfolio.js
CHANGED
|
@@ -26,14 +26,4 @@ export const validateAllocations = (allocations) => {
|
|
|
26
26
|
const totalPercentage = allocations.reduce((sum, allocation) => sum + parseFloat(allocation.percentage), 0);
|
|
27
27
|
return Math.abs(totalPercentage - 100) < 0.01;
|
|
28
28
|
};
|
|
29
|
-
export const calculateHoldingAllocations = (holdings) => {
|
|
30
|
-
const totalQuantity = holdings.reduce((sum, holding) => sum + holding.quantity, 0);
|
|
31
|
-
if (totalQuantity === 0)
|
|
32
|
-
return {};
|
|
33
|
-
const allocations = {};
|
|
34
|
-
holdings.forEach((holding) => {
|
|
35
|
-
allocations[holding.instrument.uuid] = (holding.quantity / totalQuantity) * 100;
|
|
36
|
-
});
|
|
37
|
-
return allocations;
|
|
38
|
-
};
|
|
39
29
|
//# sourceMappingURL=portfolio.js.map
|
package/dist/portfolio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../src/portfolio.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,KAAsB;IACzD,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE;QAC7C,GAAG,8BAA8B;QACjC,QAAQ,EAAE,cAAc,CAAC,GAAG;KAC7B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAA4B,EAAE,WAA4B;IAC5F,MAAM,MAAM,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/G,MAAM,IAAI,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7G,OAAO,MAAM,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAA4B,EAAE,UAA2B;IAC3F,MAAM,MAAM,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/G,MAAM,KAAK,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3G,OAAO,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAA4B,EAAE,UAA2B;IACzF,MAAM,IAAI,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7G,MAAM,KAAK,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3G,OAAO,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAuC,EAAW,EAAE;IACtF,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5G,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../src/portfolio.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,KAAsB;IACzD,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE;QAC7C,GAAG,8BAA8B;QACjC,QAAQ,EAAE,cAAc,CAAC,GAAG;KAC7B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAA4B,EAAE,WAA4B;IAC5F,MAAM,MAAM,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/G,MAAM,IAAI,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7G,OAAO,MAAM,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAA4B,EAAE,UAA2B;IAC3F,MAAM,MAAM,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/G,MAAM,KAAK,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3G,OAAO,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAA4B,EAAE,UAA2B;IACzF,MAAM,IAAI,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7G,MAAM,KAAK,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3G,OAAO,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAuC,EAAW,EAAE;IACtF,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5G,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cranberry-money/shared-utils",
|
|
3
|
-
"version": "8.23.
|
|
3
|
+
"version": "8.23.181",
|
|
4
4
|
"description": "Shared utility functions for Blueberry platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"prepublishOnly": "npm run clean && npm run typecheck && npm test && npm run build"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@cranberry-money/shared-constants": "^8.15.
|
|
33
|
-
"@cranberry-money/shared-types": "^8.22.
|
|
32
|
+
"@cranberry-money/shared-constants": "^8.15.206",
|
|
33
|
+
"@cranberry-money/shared-types": "^8.22.181"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/jest": "^30.0.0",
|