@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.
Files changed (50) hide show
  1. package/README.md +288 -0
  2. package/dist/adapters/MobileApiClient.d.ts +68 -0
  3. package/dist/adapters/MobileApiClient.d.ts.map +1 -0
  4. package/dist/adapters/MobileApiClient.js +240 -0
  5. package/dist/adapters/MobileTokenStorage.d.ts +43 -0
  6. package/dist/adapters/MobileTokenStorage.d.ts.map +1 -0
  7. package/dist/adapters/MobileTokenStorage.js +128 -0
  8. package/dist/adapters/WebApiClient.d.ts +28 -0
  9. package/dist/adapters/WebApiClient.d.ts.map +1 -0
  10. package/dist/adapters/WebApiClient.js +119 -0
  11. package/dist/adapters/WebTokenStorage.d.ts +38 -0
  12. package/dist/adapters/WebTokenStorage.d.ts.map +1 -0
  13. package/dist/adapters/WebTokenStorage.js +86 -0
  14. package/dist/auth/AuthManager.d.ts +81 -0
  15. package/dist/auth/AuthManager.d.ts.map +1 -0
  16. package/dist/auth/AuthManager.js +223 -0
  17. package/dist/auth/createAuthManager.d.ts +63 -0
  18. package/dist/auth/createAuthManager.d.ts.map +1 -0
  19. package/dist/auth/createAuthManager.js +103 -0
  20. package/dist/auth/useAuthManager.d.ts +66 -0
  21. package/dist/auth/useAuthManager.d.ts.map +1 -0
  22. package/dist/auth/useAuthManager.js +133 -0
  23. package/dist/core/BaseApiClient.d.ts +82 -0
  24. package/dist/core/BaseApiClient.d.ts.map +1 -0
  25. package/dist/core/BaseApiClient.js +89 -0
  26. package/dist/core/TokenStorage.d.ts +45 -0
  27. package/dist/core/TokenStorage.d.ts.map +1 -0
  28. package/dist/core/TokenStorage.js +23 -0
  29. package/dist/index.d.ts +19 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +23 -0
  32. package/dist/query/QueryClient.d.ts +82 -0
  33. package/dist/query/QueryClient.d.ts.map +1 -0
  34. package/dist/query/QueryClient.js +136 -0
  35. package/dist/query/useAuth.d.ts +64 -0
  36. package/dist/query/useAuth.d.ts.map +1 -0
  37. package/dist/query/useAuth.js +144 -0
  38. package/dist/query/usePortfolios.d.ts +79 -0
  39. package/dist/query/usePortfolios.d.ts.map +1 -0
  40. package/dist/query/usePortfolios.js +172 -0
  41. package/dist/services/AuthService.d.ts +75 -0
  42. package/dist/services/AuthService.d.ts.map +1 -0
  43. package/dist/services/AuthService.js +83 -0
  44. package/dist/services/BaseService.d.ts +48 -0
  45. package/dist/services/BaseService.d.ts.map +1 -0
  46. package/dist/services/BaseService.js +51 -0
  47. package/dist/services/PortfolioService.d.ts +100 -0
  48. package/dist/services/PortfolioService.d.ts.map +1 -0
  49. package/dist/services/PortfolioService.js +68 -0
  50. 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
+ }