@cranberry-money/shared-services 1.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/README.md +288 -0
- package/dist/adapters/MobileApiClient.d.ts +68 -0
- package/dist/adapters/MobileApiClient.d.ts.map +1 -0
- package/dist/adapters/MobileApiClient.js +240 -0
- package/dist/adapters/MobileTokenStorage.d.ts +43 -0
- package/dist/adapters/MobileTokenStorage.d.ts.map +1 -0
- package/dist/adapters/MobileTokenStorage.js +128 -0
- package/dist/adapters/WebApiClient.d.ts +28 -0
- package/dist/adapters/WebApiClient.d.ts.map +1 -0
- package/dist/adapters/WebApiClient.js +119 -0
- package/dist/adapters/WebTokenStorage.d.ts +38 -0
- package/dist/adapters/WebTokenStorage.d.ts.map +1 -0
- package/dist/adapters/WebTokenStorage.js +86 -0
- package/dist/auth/AuthManager.d.ts +81 -0
- package/dist/auth/AuthManager.d.ts.map +1 -0
- package/dist/auth/AuthManager.js +223 -0
- package/dist/auth/createAuthManager.d.ts +63 -0
- package/dist/auth/createAuthManager.d.ts.map +1 -0
- package/dist/auth/createAuthManager.js +103 -0
- package/dist/auth/useAuthManager.d.ts +66 -0
- package/dist/auth/useAuthManager.d.ts.map +1 -0
- package/dist/auth/useAuthManager.js +133 -0
- package/dist/core/BaseApiClient.d.ts +82 -0
- package/dist/core/BaseApiClient.d.ts.map +1 -0
- package/dist/core/BaseApiClient.js +89 -0
- package/dist/core/TokenStorage.d.ts +45 -0
- package/dist/core/TokenStorage.d.ts.map +1 -0
- package/dist/core/TokenStorage.js +23 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/query/QueryClient.d.ts +82 -0
- package/dist/query/QueryClient.d.ts.map +1 -0
- package/dist/query/QueryClient.js +136 -0
- package/dist/query/useAuth.d.ts +64 -0
- package/dist/query/useAuth.d.ts.map +1 -0
- package/dist/query/useAuth.js +144 -0
- package/dist/query/usePortfolios.d.ts +79 -0
- package/dist/query/usePortfolios.d.ts.map +1 -0
- package/dist/query/usePortfolios.js +172 -0
- package/dist/services/AuthService.d.ts +75 -0
- package/dist/services/AuthService.d.ts.map +1 -0
- package/dist/services/AuthService.js +83 -0
- package/dist/services/BaseService.d.ts +48 -0
- package/dist/services/BaseService.d.ts.map +1 -0
- package/dist/services/BaseService.js +51 -0
- package/dist/services/PortfolioService.d.ts +100 -0
- package/dist/services/PortfolioService.d.ts.map +1 -0
- package/dist/services/PortfolioService.js +68 -0
- package/package.json +56 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portfolio service with comprehensive CRUD operations
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates the service pattern for domain-specific API operations
|
|
5
|
+
* with proper typing and error handling.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseService } from './BaseService';
|
|
8
|
+
export class PortfolioService extends BaseService {
|
|
9
|
+
constructor(apiClient) {
|
|
10
|
+
super(apiClient, '/portfolios');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get all portfolios with optional filtering
|
|
14
|
+
*/
|
|
15
|
+
async getPortfolios(filters = {}) {
|
|
16
|
+
const params = this.buildQueryParams(filters);
|
|
17
|
+
const response = await this.apiClient.get(this.buildEndpoint(), params);
|
|
18
|
+
return this.handlePaginatedResponse(response);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get specific portfolio by ID
|
|
22
|
+
*/
|
|
23
|
+
async getPortfolio(id) {
|
|
24
|
+
const response = await this.apiClient.get(this.buildEndpoint(id));
|
|
25
|
+
return this.extractData(response);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create new portfolio
|
|
29
|
+
*/
|
|
30
|
+
async createPortfolio(data) {
|
|
31
|
+
const response = await this.apiClient.post(this.buildEndpoint(), data);
|
|
32
|
+
return this.extractData(response);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Update existing portfolio
|
|
36
|
+
*/
|
|
37
|
+
async updatePortfolio(id, data) {
|
|
38
|
+
const response = await this.apiClient.patch(this.buildEndpoint(id), data);
|
|
39
|
+
return this.extractData(response);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Delete portfolio
|
|
43
|
+
*/
|
|
44
|
+
async deletePortfolio(id) {
|
|
45
|
+
await this.apiClient.delete(this.buildEndpoint(id));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get portfolio asset holdings
|
|
49
|
+
*/
|
|
50
|
+
async getHoldings(portfolioId) {
|
|
51
|
+
const response = await this.apiClient.get(this.buildEndpoint(`${portfolioId}/holdings`));
|
|
52
|
+
return this.extractData(response);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get portfolio asset allocation
|
|
56
|
+
*/
|
|
57
|
+
async getAllocations(portfolioId) {
|
|
58
|
+
const response = await this.apiClient.get(this.buildEndpoint(`${portfolioId}/allocations`));
|
|
59
|
+
return this.extractData(response);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get portfolio performance data
|
|
63
|
+
*/
|
|
64
|
+
async getPerformance(portfolioId, timeRange = '1Y') {
|
|
65
|
+
const response = await this.apiClient.get(this.buildEndpoint(`${portfolioId}/performance`), { time_range: timeRange });
|
|
66
|
+
return this.extractData(response);
|
|
67
|
+
}
|
|
68
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cranberry-money/shared-services",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Shared API services and client for MyPortfolio platform",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"dev": "tsc --watch"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@cranberry-money/shared-constants": "^1.0.0",
|
|
25
|
+
"@cranberry-money/shared-types": "^1.0.0"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@tanstack/react-query": ">=5.0.0",
|
|
29
|
+
"typescript": ">=5.0.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@tanstack/react-query": "^5.83.0",
|
|
33
|
+
"@types/react": "^19.1.9",
|
|
34
|
+
"@types/react-dom": "^19.1.7",
|
|
35
|
+
"typescript": "^5.0.0"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"typescript",
|
|
39
|
+
"api",
|
|
40
|
+
"services",
|
|
41
|
+
"shared",
|
|
42
|
+
"portfolio",
|
|
43
|
+
"react-query"
|
|
44
|
+
],
|
|
45
|
+
"author": "MyPortfolio Team",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "restricted",
|
|
49
|
+
"registry": "https://registry.npmjs.org/"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "git+https://github.com/your-org/cranberry.git",
|
|
54
|
+
"directory": "packages/shared-services"
|
|
55
|
+
}
|
|
56
|
+
}
|