@cranberry-money/shared-utils 8.23.193 → 8.23.197

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -11,5 +11,5 @@ export { combineTargetAndActualAllocations, transformAllocationsToDisplayItems,
11
11
  export { validatePortfolioSelection } from './portfolio-validation';
12
12
  export { validateUserPreferences, hasUserPreferences, getUserPreferencesSummary, formatUserPreferencesForDisplay, getAvailablePortfoliosForAccount, isValidUserPreferencesUpdate, getUserPreferencesCacheKey, sanitizeUserPreferencesInput, } from './user-preferences';
13
13
  export { formatPhoneForDisplay, cleanPhoneNumber, getExpectedPhoneLength } from './phoneFormatting';
14
- export { getInstrumentType, getInstrumentTypeVariant, INSTRUMENT_TYPE_ETF, INSTRUMENT_TYPE_FUND, INSTRUMENT_TYPE_STOCK, type InstrumentType, } from './instruments';
14
+ export { getInstrumentType, getInstrumentTypeVariant, getAssetType, getAssetTypeVariant, INSTRUMENT_TYPE_ETF, INSTRUMENT_TYPE_FUND, INSTRUMENT_TYPE_STOCK, ASSET_TYPE_CRYPTO, ASSET_TYPE_STABLECOIN, type InstrumentType, type AllAssetTypes, } from './instruments';
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -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,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,EACL,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAGrB,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;AAGpG,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC"}
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,EACL,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAGrB,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;AAGpG,OAAO,EAEL,iBAAiB,EACjB,wBAAwB,EAExB,YAAY,EACZ,mBAAmB,EAEnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EAErB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -24,7 +24,13 @@ export { validatePortfolioSelection } from './portfolio-validation';
24
24
  export { validateUserPreferences, hasUserPreferences, getUserPreferencesSummary, formatUserPreferencesForDisplay, getAvailablePortfoliosForAccount, isValidUserPreferencesUpdate, getUserPreferencesCacheKey, sanitizeUserPreferencesInput, } from './user-preferences';
25
25
  // Phone formatting utilities
26
26
  export { formatPhoneForDisplay, cleanPhoneNumber, getExpectedPhoneLength } from './phoneFormatting';
27
- // Instrument utilities
28
- export { getInstrumentType, getInstrumentTypeVariant, INSTRUMENT_TYPE_ETF, INSTRUMENT_TYPE_FUND, INSTRUMENT_TYPE_STOCK, } from './instruments';
27
+ // Instrument and Asset utilities
28
+ export {
29
+ // Legacy instrument functions (deprecated but maintained for backward compatibility)
30
+ getInstrumentType, getInstrumentTypeVariant,
31
+ // New asset functions (recommended)
32
+ getAssetType, getAssetTypeVariant,
33
+ // Constants
34
+ INSTRUMENT_TYPE_ETF, INSTRUMENT_TYPE_FUND, INSTRUMENT_TYPE_STOCK, ASSET_TYPE_CRYPTO, ASSET_TYPE_STABLECOIN, } from './instruments';
29
35
  // No re-exports - consumers should import directly from @cranberry-money/shared-types
30
36
  //# sourceMappingURL=index.js.map
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,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,EACL,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,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,uBAAuB;AACvB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,eAAe,CAAC;AAEvB,sFAAsF"}
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,EACL,iCAAiC,EACjC,kCAAkC,EAClC,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,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,iCAAiC;AACjC,OAAO;AACL,qFAAqF;AACrF,iBAAiB,EACjB,wBAAwB;AACxB,oCAAoC;AACpC,YAAY,EACZ,mBAAmB;AACnB,YAAY;AACZ,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,eAAe,CAAC;AAEvB,sFAAsF"}
@@ -1,15 +1,22 @@
1
- import type { Instrument } from '@cranberry-money/shared-types';
1
+ import type { Asset, Instrument, CryptoCoin, StableCoin } from '@cranberry-money/shared-types';
2
2
  /**
3
- * Asset type labels
3
+ * Asset type labels (for traditional instruments)
4
4
  */
5
5
  export declare const INSTRUMENT_TYPE_ETF = "ETF";
6
6
  export declare const INSTRUMENT_TYPE_FUND = "Fund";
7
7
  export declare const INSTRUMENT_TYPE_STOCK = "Stock";
8
+ /**
9
+ * Asset type labels (for all asset types)
10
+ */
11
+ export declare const ASSET_TYPE_CRYPTO = "Crypto";
12
+ export declare const ASSET_TYPE_STABLECOIN = "Stablecoin";
8
13
  export type InstrumentType = typeof INSTRUMENT_TYPE_ETF | typeof INSTRUMENT_TYPE_FUND | typeof INSTRUMENT_TYPE_STOCK;
14
+ export type AllAssetTypes = InstrumentType | typeof ASSET_TYPE_CRYPTO | typeof ASSET_TYPE_STABLECOIN;
9
15
  /**
10
16
  * Get the type label for an instrument based on its properties.
11
17
  * Returns 'ETF', 'Fund', or 'Stock'.
12
18
  *
19
+ * @deprecated Use getAssetType() instead for broader asset type support
13
20
  * @param instrument - The instrument object to get the type for
14
21
  * @returns The instrument type label
15
22
  *
@@ -22,6 +29,7 @@ export declare function getInstrumentType(instrument: Instrument): InstrumentTyp
22
29
  * Get the color variant for an instrument type.
23
30
  * Useful for badge components and visual differentiation.
24
31
  *
32
+ * @deprecated Use getAssetTypeVariant() instead for broader asset type support
25
33
  * @param instrument - The instrument object to get the color for
26
34
  * @returns A color variant identifier
27
35
  *
@@ -30,4 +38,28 @@ export declare function getInstrumentType(instrument: Instrument): InstrumentTyp
30
38
  * // Returns: 'primary' | 'warning' | 'neutral'
31
39
  */
32
40
  export declare function getInstrumentTypeVariant(instrument: Instrument): 'primary' | 'warning' | 'neutral';
41
+ /**
42
+ * Get the type label for any asset (instruments, crypto, stablecoins).
43
+ * Handles Asset base type and all child types.
44
+ *
45
+ * @param asset - Any asset object (Asset, Instrument, CryptoCoin, StableCoin)
46
+ * @returns The asset type display label
47
+ *
48
+ * @example
49
+ * const type = getAssetType(asset);
50
+ * // Returns: 'ETF' | 'Fund' | 'Stock' | 'Crypto' | 'Stablecoin'
51
+ */
52
+ export declare function getAssetType(asset: Asset | Instrument | CryptoCoin | StableCoin): AllAssetTypes;
53
+ /**
54
+ * Get the color variant for any asset type.
55
+ * Useful for badge components and visual differentiation across all asset types.
56
+ *
57
+ * @param asset - Any asset object (Asset, Instrument, CryptoCoin, StableCoin)
58
+ * @returns A color variant identifier
59
+ *
60
+ * @example
61
+ * const variant = getAssetTypeVariant(asset);
62
+ * // Returns: 'primary' | 'warning' | 'success' | 'info' | 'neutral'
63
+ */
64
+ export declare function getAssetTypeVariant(asset: Asset | Instrument | CryptoCoin | StableCoin): 'primary' | 'warning' | 'success' | 'info' | 'neutral';
33
65
  //# sourceMappingURL=instruments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,OAAO,mBAAmB,GAAG,OAAO,oBAAoB,GAAG,OAAO,qBAAqB,CAAC;AAErH;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAIxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAIlG"}
1
+ {"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAa,MAAM,+BAA+B,CAAC;AAE1G;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,OAAO,mBAAmB,GAAG,OAAO,oBAAoB,GAAG,OAAO,qBAAqB,CAAC;AACrH,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,OAAO,iBAAiB,GAAG,OAAO,qBAAqB,CAAC;AAErG;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAIxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAIlG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CA0B/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAClD,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA0BxD"}
@@ -1,13 +1,19 @@
1
1
  /**
2
- * Asset type labels
2
+ * Asset type labels (for traditional instruments)
3
3
  */
4
4
  export const INSTRUMENT_TYPE_ETF = 'ETF';
5
5
  export const INSTRUMENT_TYPE_FUND = 'Fund';
6
6
  export const INSTRUMENT_TYPE_STOCK = 'Stock';
7
+ /**
8
+ * Asset type labels (for all asset types)
9
+ */
10
+ export const ASSET_TYPE_CRYPTO = 'Crypto';
11
+ export const ASSET_TYPE_STABLECOIN = 'Stablecoin';
7
12
  /**
8
13
  * Get the type label for an instrument based on its properties.
9
14
  * Returns 'ETF', 'Fund', or 'Stock'.
10
15
  *
16
+ * @deprecated Use getAssetType() instead for broader asset type support
11
17
  * @param instrument - The instrument object to get the type for
12
18
  * @returns The instrument type label
13
19
  *
@@ -26,6 +32,7 @@ export function getInstrumentType(instrument) {
26
32
  * Get the color variant for an instrument type.
27
33
  * Useful for badge components and visual differentiation.
28
34
  *
35
+ * @deprecated Use getAssetTypeVariant() instead for broader asset type support
29
36
  * @param instrument - The instrument object to get the color for
30
37
  * @returns A color variant identifier
31
38
  *
@@ -40,4 +47,80 @@ export function getInstrumentTypeVariant(instrument) {
40
47
  return 'warning';
41
48
  return 'neutral';
42
49
  }
50
+ /**
51
+ * Get the type label for any asset (instruments, crypto, stablecoins).
52
+ * Handles Asset base type and all child types.
53
+ *
54
+ * @param asset - Any asset object (Asset, Instrument, CryptoCoin, StableCoin)
55
+ * @returns The asset type display label
56
+ *
57
+ * @example
58
+ * const type = getAssetType(asset);
59
+ * // Returns: 'ETF' | 'Fund' | 'Stock' | 'Crypto' | 'Stablecoin'
60
+ */
61
+ export function getAssetType(asset) {
62
+ // Check if asset has assetType field (from Asset base model)
63
+ if ('assetType' in asset && asset.assetType) {
64
+ const assetType = asset.assetType;
65
+ switch (assetType) {
66
+ case 'ETF':
67
+ return INSTRUMENT_TYPE_ETF;
68
+ case 'FUND':
69
+ return INSTRUMENT_TYPE_FUND;
70
+ case 'STOCK':
71
+ return INSTRUMENT_TYPE_STOCK;
72
+ case 'CRYPTO':
73
+ return ASSET_TYPE_CRYPTO;
74
+ case 'STABLECOIN':
75
+ return ASSET_TYPE_STABLECOIN;
76
+ default:
77
+ return INSTRUMENT_TYPE_STOCK; // fallback
78
+ }
79
+ }
80
+ // Fallback to instrument-specific logic (for backward compatibility)
81
+ const instrument = asset;
82
+ if ('isEtf' in instrument && instrument.isEtf)
83
+ return INSTRUMENT_TYPE_ETF;
84
+ if ('isFund' in instrument && instrument.isFund)
85
+ return INSTRUMENT_TYPE_FUND;
86
+ return INSTRUMENT_TYPE_STOCK;
87
+ }
88
+ /**
89
+ * Get the color variant for any asset type.
90
+ * Useful for badge components and visual differentiation across all asset types.
91
+ *
92
+ * @param asset - Any asset object (Asset, Instrument, CryptoCoin, StableCoin)
93
+ * @returns A color variant identifier
94
+ *
95
+ * @example
96
+ * const variant = getAssetTypeVariant(asset);
97
+ * // Returns: 'primary' | 'warning' | 'success' | 'info' | 'neutral'
98
+ */
99
+ export function getAssetTypeVariant(asset) {
100
+ // Check if asset has assetType field (from Asset base model)
101
+ if ('assetType' in asset && asset.assetType) {
102
+ const assetType = asset.assetType;
103
+ switch (assetType) {
104
+ case 'ETF':
105
+ return 'primary'; // Blue/primary color for ETFs
106
+ case 'FUND':
107
+ return 'warning'; // Orange/warning color for Funds
108
+ case 'STOCK':
109
+ return 'neutral'; // Gray/neutral color for Stocks
110
+ case 'CRYPTO':
111
+ return 'success'; // Green/success color for Crypto
112
+ case 'STABLECOIN':
113
+ return 'info'; // Light blue/info color for Stablecoins
114
+ default:
115
+ return 'neutral';
116
+ }
117
+ }
118
+ // Fallback to instrument-specific logic (for backward compatibility)
119
+ const instrument = asset;
120
+ if ('isEtf' in instrument && instrument.isEtf)
121
+ return 'primary';
122
+ if ('isFund' in instrument && instrument.isFund)
123
+ return 'warning';
124
+ return 'neutral';
125
+ }
43
126
  //# sourceMappingURL=instruments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instruments.js","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAI7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAsB;IACtD,IAAI,UAAU,CAAC,KAAK;QAAE,OAAO,mBAAmB,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,oBAAoB,CAAC;IACnD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAsB;IAC7D,IAAI,UAAU,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"instruments.js","sourceRoot":"","sources":["../src/instruments.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAKlD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAsB;IACtD,IAAI,UAAU,CAAC,KAAK;QAAE,OAAO,mBAAmB,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,oBAAoB,CAAC;IACnD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAsB;IAC7D,IAAI,UAAU,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,KAAmD;IAC9E,6DAA6D;IAC7D,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAsB,CAAC;QAE/C,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,OAAO,mBAAmB,CAAC;YAC7B,KAAK,MAAM;gBACT,OAAO,oBAAoB,CAAC;YAC9B,KAAK,OAAO;gBACV,OAAO,qBAAqB,CAAC;YAC/B,KAAK,QAAQ;gBACX,OAAO,iBAAiB,CAAC;YAC3B,KAAK,YAAY;gBACf,OAAO,qBAAqB,CAAC;YAC/B;gBACE,OAAO,qBAAqB,CAAC,CAAC,WAAW;QAC7C,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,UAAU,GAAG,KAAmB,CAAC;IACvC,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK;QAAE,OAAO,mBAAmB,CAAC;IAC1E,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,oBAAoB,CAAC;IAC7E,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAmD;IAEnD,6DAA6D;IAC7D,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAsB,CAAC;QAE/C,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,OAAO,SAAS,CAAC,CAAC,8BAA8B;YAClD,KAAK,MAAM;gBACT,OAAO,SAAS,CAAC,CAAC,iCAAiC;YACrD,KAAK,OAAO;gBACV,OAAO,SAAS,CAAC,CAAC,gCAAgC;YACpD,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC,CAAC,iCAAiC;YACrD,KAAK,YAAY;gBACf,OAAO,MAAM,CAAC,CAAC,wCAAwC;YACzD;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,UAAU,GAAG,KAAmB,CAAC;IACvC,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAChE,IAAI,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cranberry-money/shared-utils",
3
- "version": "8.23.193",
3
+ "version": "8.23.197",
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.218",
33
- "@cranberry-money/shared-types": "^8.22.193"
32
+ "@cranberry-money/shared-constants": "^8.15.222",
33
+ "@cranberry-money/shared-types": "^8.22.197"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/jest": "^30.0.0",