Browse Source

Merge remote-tracking branch 'origin/main' into task/import-activities-dialog-type-safety

pull/6858/head
KenTandrian 1 day ago
parent
commit
d1be2f7909
  1. 3
      CHANGELOG.md
  2. 2
      apps/api/src/app/endpoints/ai/ai.service.ts
  3. 9
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
  4. 10
      apps/client/src/locales/messages.es.xlf
  5. 18
      libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
  6. 14
      libs/ui/src/lib/value/value.component.html
  7. 142
      package-lock.json
  8. 6
      package.json

3
CHANGELOG.md

@ -15,6 +15,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Migrated various components from `NgClass` to class bindings
- Refreshed the cryptocurrencies list
- Improved the language localization for Spanish (`es`)
- Cleaned up the _Webpack Bundle Analyzer_ setup
- Upgraded `@internationalized/number` from version `3.6.5` to `3.6.6`
- Upgraded `@ionic/angular` from version `8.8.1` to `8.8.5`
- Upgraded `@openrouter/ai-sdk-provider` from version `0.7.2` to `2.9.0`
- Upgraded `ai` from version `4.3.16` to `6.0.174`

2
apps/api/src/app/endpoints/ai/ai.service.ts

@ -101,11 +101,13 @@ export class AiService {
.map(
({
allocationInPercentage,
assetProfile: {
assetClass,
assetSubClass,
currency,
name: label,
symbol
}
}) => {
return AiService.HOLDINGS_TABLE_COLUMN_DEFINITIONS.reduce(
(row, { key, name }) => {

9
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html

@ -434,11 +434,10 @@
mat-stroked-button
(click)="onCloseHolding()"
>
<ion-icon
class="mr-1"
name="arrow-down-circle-outline"
></ion-icon
><span i18n>Close Holding</span>
<ion-icon class="mr-1" name="arrow-down-circle-outline" /><span
i18n
>Close Holding</span
>
</button>
}
@if (

10
apps/client/src/locales/messages.es.xlf

@ -1612,7 +1612,7 @@
</trans-unit>
<trans-unit id="7410432243549869948" datatype="html">
<source>Duration</source>
<target state="new">Duration</target>
<target state="translated">Duración</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">172</context>
@ -2760,7 +2760,7 @@
</trans-unit>
<trans-unit id="8186013988289067040" datatype="html">
<source>Code</source>
<target state="new">Code</target>
<target state="translated">Código</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.html</context>
<context context-type="linenumber">159</context>
@ -3756,7 +3756,7 @@
</trans-unit>
<trans-unit id="5515771028435710194" datatype="html">
<source>Loan</source>
<target state="new">Loan</target>
<target state="translated">Préstamo</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">59</context>
@ -5012,7 +5012,7 @@
</trans-unit>
<trans-unit id="3515552433025974482" datatype="html">
<source>saying no to spreadsheets in <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></source>
<target state="translated">diciendo no a las hojas de cálculo en <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target>
<target state="translated">en contra de las las hojas de cálculo en <x id="INTERPOLATION" equiv-text="{{ currentYear }}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/landing/landing-page.html</context>
<context context-type="linenumber">209</context>
@ -6959,7 +6959,7 @@
</trans-unit>
<trans-unit id="8466521722895614996" datatype="html">
<source><x id="PH" equiv-text="codeToCopy"/> has been copied to the clipboard</source>
<target state="new"><x id="PH" equiv-text="codeToCopy"/> has been copied to the clipboard</target>
<target state="translated"><x id="PH" equiv-text="codeToCopy"/> ha sido copiado al portapapeles</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-overview/admin-overview.component.ts</context>
<context context-type="linenumber">377</context>

18
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html

@ -6,14 +6,16 @@
@for (day of days; track day) {
<div
class="day"
[class]="{
'cursor-pointer valid': isDateOfInterest(
`${itemByMonth.key}-${formatDay(day)}`
),
available:
marketDataByMonth[itemByMonth.key][formatDay(day)]?.marketPrice,
today: isToday(`${itemByMonth.key}-${formatDay(day)}`)
}"
[class.available]="
marketDataByMonth[itemByMonth.key][formatDay(day)]?.marketPrice
"
[class.cursor-pointer]="
isDateOfInterest(`${itemByMonth.key}-${formatDay(day)}`)
"
[class.today]="isToday(`${itemByMonth.key}-${formatDay(day)}`)"
[class.valid]="
isDateOfInterest(`${itemByMonth.key}-${formatDay(day)}`)
"
[title]="
(`${itemByMonth.key}-${formatDay(day)}`
| date: defaultDateFormat()) ?? ''

14
libs/ui/src/lib/value/value.component.html

@ -40,10 +40,9 @@
}
<div
class="mb-0 value"
[class]="{
'font-weight-bold h2': size === 'large',
h4: size === 'medium'
}"
[class.font-weight-bold]="size === 'large'"
[class.h2]="size === 'large'"
[class.h4]="size === 'medium'"
>
@if (value === null) {
<span class="text-monospace text-muted">*****</span>
@ -60,10 +59,9 @@
@if (isString) {
<div
class="mb-0 text-truncate value"
[class]="{
'font-weight-bold h2': size === 'large',
h4: size === 'medium'
}"
[class.font-weight-bold]="size === 'large'"
[class.h2]="size === 'large'"
[class.h4]="size === 'medium'"
>
{{ formattedValue }}
</div>

142
package-lock.json

@ -26,7 +26,7 @@
"@bull-board/nestjs": "7.0.0",
"@codewithdan/observable-store": "2.2.15",
"@date-fns/utc": "2.1.1",
"@internationalized/number": "3.6.5",
"@internationalized/number": "3.6.6",
"@ionic/angular": "8.8.5",
"@keyv/redis": "4.4.0",
"@nestjs/bull": "11.0.4",
@ -161,8 +161,7 @@
"ts-jest": "29.4.0",
"ts-node": "10.9.2",
"tslib": "2.8.1",
"typescript": "5.9.2",
"webpack-bundle-analyzer": "4.10.2"
"typescript": "5.9.2"
},
"engines": {
"node": ">=22.18.0"
@ -4984,9 +4983,9 @@
}
},
"node_modules/@internationalized/number": {
"version": "3.6.5",
"resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.5.tgz",
"integrity": "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==",
"version": "3.6.6",
"resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.6.tgz",
"integrity": "sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==",
"license": "Apache-2.0",
"dependencies": {
"@swc/helpers": "^0.5.0"
@ -11316,13 +11315,6 @@
"url": "https://opencollective.com/pkgr"
}
},
"node_modules/@polka/url": {
"version": "1.0.0-next.29",
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
"integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
"dev": true,
"license": "MIT"
},
"node_modules/@prisma/adapter-pg": {
"version": "7.7.0",
"resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.7.0.tgz",
@ -20572,13 +20564,6 @@
"optional": true,
"peer": true
},
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
"integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
"dev": true,
"license": "MIT"
},
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
@ -21065,13 +21050,6 @@
"node": ">= 0.4"
}
},
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"dev": true,
"license": "MIT"
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@ -23744,22 +23722,6 @@
"node": ">=10"
}
},
"node_modules/gzip-size": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
"integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"duplexer": "^0.1.2"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/hachure-fill": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz",
@ -35888,21 +35850,6 @@
"node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/sirv": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
"integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@polka/url": "^1.0.0-next.24",
"mrmime": "^2.0.0",
"totalist": "^3.0.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@ -37317,16 +37264,6 @@
"url": "https://github.com/sponsors/Borewit"
}
},
"node_modules/totalist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/tough-cookie": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz",
@ -38933,75 +38870,6 @@
}
}
},
"node_modules/webpack-bundle-analyzer": {
"version": "4.10.2",
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
"integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@discoveryjs/json-ext": "0.5.7",
"acorn": "^8.0.4",
"acorn-walk": "^8.0.0",
"commander": "^7.2.0",
"debounce": "^1.2.1",
"escape-string-regexp": "^4.0.0",
"gzip-size": "^6.0.0",
"html-escaper": "^2.0.2",
"opener": "^1.5.2",
"picocolors": "^1.0.0",
"sirv": "^2.0.3",
"ws": "^7.3.1"
},
"bin": {
"webpack-bundle-analyzer": "lib/bin/analyzer.js"
},
"engines": {
"node": ">= 10.13.0"
}
},
"node_modules/webpack-bundle-analyzer/node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/webpack-bundle-analyzer/node_modules/commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 10"
}
},
"node_modules/webpack-bundle-analyzer/node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8.3.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": "^5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/webpack-dev-middleware": {
"version": "7.4.5",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz",

6
package.json

@ -12,7 +12,6 @@
"affected:libs": "nx affected:libs",
"affected:lint": "nx affected:lint",
"affected:test": "nx affected:test",
"analyze:client": "nx run client:build:production --stats-json && webpack-bundle-analyzer -p 1234 dist/apps/client/en/stats.json",
"angular": "node --max_old_space_size=32768 ./node_modules/@angular/cli/bin/ng",
"build:production": "nx run api:copy-assets && nx run api:build:production && nx run client:copy-assets && nx run client:build:production && nx run ui:build-storybook && npm run replace-placeholders-in-build",
"build:storybook": "nx run ui:build-storybook",
@ -71,7 +70,7 @@
"@bull-board/nestjs": "7.0.0",
"@codewithdan/observable-store": "2.2.15",
"@date-fns/utc": "2.1.1",
"@internationalized/number": "3.6.5",
"@internationalized/number": "3.6.6",
"@ionic/angular": "8.8.5",
"@keyv/redis": "4.4.0",
"@nestjs/bull": "11.0.4",
@ -206,8 +205,7 @@
"ts-jest": "29.4.0",
"ts-node": "10.9.2",
"tslib": "2.8.1",
"typescript": "5.9.2",
"webpack-bundle-analyzer": "4.10.2"
"typescript": "5.9.2"
},
"engines": {
"node": ">=22.18.0"

Loading…
Cancel
Save