@nekutima/biome-sdk 0.1.18

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 (146) hide show
  1. package/README.md +100 -0
  2. package/dist/auth/auth.service.d.ts +90 -0
  3. package/dist/auth/auth.service.d.ts.map +1 -0
  4. package/dist/auth/auth.service.js +166 -0
  5. package/dist/auth/auth.service.js.map +1 -0
  6. package/dist/auth/types.d.ts +19 -0
  7. package/dist/auth/types.d.ts.map +1 -0
  8. package/dist/auth/types.js +3 -0
  9. package/dist/auth/types.js.map +1 -0
  10. package/dist/core/configuration.d.ts +26 -0
  11. package/dist/core/configuration.d.ts.map +1 -0
  12. package/dist/core/configuration.js +3 -0
  13. package/dist/core/configuration.js.map +1 -0
  14. package/dist/core/error-handler.d.ts +24 -0
  15. package/dist/core/error-handler.d.ts.map +1 -0
  16. package/dist/core/error-handler.js +76 -0
  17. package/dist/core/error-handler.js.map +1 -0
  18. package/dist/core/http-client.d.ts +43 -0
  19. package/dist/core/http-client.d.ts.map +1 -0
  20. package/dist/core/http-client.js +97 -0
  21. package/dist/core/http-client.js.map +1 -0
  22. package/dist/core/state-manager.d.ts +16 -0
  23. package/dist/core/state-manager.d.ts.map +1 -0
  24. package/dist/core/state-manager.js +33 -0
  25. package/dist/core/state-manager.js.map +1 -0
  26. package/dist/files/file-upload.d.ts +60 -0
  27. package/dist/files/file-upload.d.ts.map +1 -0
  28. package/dist/files/file-upload.js +121 -0
  29. package/dist/files/file-upload.js.map +1 -0
  30. package/dist/index.d.ts +80 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +140 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/models/api-error.model.d.ts +31 -0
  35. package/dist/models/api-error.model.d.ts.map +1 -0
  36. package/dist/models/api-error.model.js +53 -0
  37. package/dist/models/api-error.model.js.map +1 -0
  38. package/dist/models/api-response.model.d.ts +51 -0
  39. package/dist/models/api-response.model.d.ts.map +1 -0
  40. package/dist/models/api-response.model.js +77 -0
  41. package/dist/models/api-response.model.js.map +1 -0
  42. package/dist/models/chat.model.d.ts +59 -0
  43. package/dist/models/chat.model.d.ts.map +1 -0
  44. package/dist/models/chat.model.js +3 -0
  45. package/dist/models/chat.model.js.map +1 -0
  46. package/dist/models/ecosystem.model.d.ts +16 -0
  47. package/dist/models/ecosystem.model.d.ts.map +1 -0
  48. package/dist/models/ecosystem.model.js +7 -0
  49. package/dist/models/ecosystem.model.js.map +1 -0
  50. package/dist/models/file.model.d.ts +67 -0
  51. package/dist/models/file.model.d.ts.map +1 -0
  52. package/dist/models/file.model.js +3 -0
  53. package/dist/models/file.model.js.map +1 -0
  54. package/dist/models/notification.model.d.ts +172 -0
  55. package/dist/models/notification.model.d.ts.map +1 -0
  56. package/dist/models/notification.model.js +77 -0
  57. package/dist/models/notification.model.js.map +1 -0
  58. package/dist/models/person.model.d.ts +94 -0
  59. package/dist/models/person.model.d.ts.map +1 -0
  60. package/dist/models/person.model.js +14 -0
  61. package/dist/models/person.model.js.map +1 -0
  62. package/dist/models/project.model.d.ts +62 -0
  63. package/dist/models/project.model.d.ts.map +1 -0
  64. package/dist/models/project.model.js +93 -0
  65. package/dist/models/project.model.js.map +1 -0
  66. package/dist/models/task-update.model.d.ts +28 -0
  67. package/dist/models/task-update.model.d.ts.map +1 -0
  68. package/dist/models/task-update.model.js +8 -0
  69. package/dist/models/task-update.model.js.map +1 -0
  70. package/dist/models/task-url.model.d.ts +16 -0
  71. package/dist/models/task-url.model.d.ts.map +1 -0
  72. package/dist/models/task-url.model.js +3 -0
  73. package/dist/models/task-url.model.js.map +1 -0
  74. package/dist/models/task.model.d.ts +120 -0
  75. package/dist/models/task.model.d.ts.map +1 -0
  76. package/dist/models/task.model.js +78 -0
  77. package/dist/models/task.model.js.map +1 -0
  78. package/dist/models/timezone.model.d.ts +19 -0
  79. package/dist/models/timezone.model.d.ts.map +1 -0
  80. package/dist/models/timezone.model.js +12 -0
  81. package/dist/models/timezone.model.js.map +1 -0
  82. package/dist/models/user.model.d.ts +101 -0
  83. package/dist/models/user.model.d.ts.map +1 -0
  84. package/dist/models/user.model.js +22 -0
  85. package/dist/models/user.model.js.map +1 -0
  86. package/dist/profiles/profile.service.d.ts +52 -0
  87. package/dist/profiles/profile.service.d.ts.map +1 -0
  88. package/dist/profiles/profile.service.js +119 -0
  89. package/dist/profiles/profile.service.js.map +1 -0
  90. package/dist/profiles/types.d.ts +1 -0
  91. package/dist/profiles/types.d.ts.map +1 -0
  92. package/dist/profiles/types.js +3 -0
  93. package/dist/profiles/types.js.map +1 -0
  94. package/dist/tasks/task-sorting.d.ts +51 -0
  95. package/dist/tasks/task-sorting.d.ts.map +1 -0
  96. package/dist/tasks/task-sorting.js +137 -0
  97. package/dist/tasks/task-sorting.js.map +1 -0
  98. package/dist/tasks/task.service.d.ts +134 -0
  99. package/dist/tasks/task.service.d.ts.map +1 -0
  100. package/dist/tasks/task.service.js +256 -0
  101. package/dist/tasks/task.service.js.map +1 -0
  102. package/dist/tasks/types.d.ts +2 -0
  103. package/dist/tasks/types.d.ts.map +1 -0
  104. package/dist/tasks/types.js +3 -0
  105. package/dist/tasks/types.js.map +1 -0
  106. package/dist/types/actor.types.d.ts +101 -0
  107. package/dist/types/actor.types.d.ts.map +1 -0
  108. package/dist/types/actor.types.js +135 -0
  109. package/dist/types/actor.types.js.map +1 -0
  110. package/dist/types/api.types.d.ts +43 -0
  111. package/dist/types/api.types.d.ts.map +1 -0
  112. package/dist/types/api.types.js +6 -0
  113. package/dist/types/api.types.js.map +1 -0
  114. package/dist/types/common.types.d.ts +40 -0
  115. package/dist/types/common.types.d.ts.map +1 -0
  116. package/dist/types/common.types.js +6 -0
  117. package/dist/types/common.types.js.map +1 -0
  118. package/dist/types/state-machine.types.d.ts +102 -0
  119. package/dist/types/state-machine.types.d.ts.map +1 -0
  120. package/dist/types/state-machine.types.js +18 -0
  121. package/dist/types/state-machine.types.js.map +1 -0
  122. package/dist/users/user.service.d.ts +49 -0
  123. package/dist/users/user.service.d.ts.map +1 -0
  124. package/dist/users/user.service.js +119 -0
  125. package/dist/users/user.service.js.map +1 -0
  126. package/dist/utils/date.utils.d.ts +60 -0
  127. package/dist/utils/date.utils.d.ts.map +1 -0
  128. package/dist/utils/date.utils.js +125 -0
  129. package/dist/utils/date.utils.js.map +1 -0
  130. package/dist/utils/username-generator.d.ts +76 -0
  131. package/dist/utils/username-generator.d.ts.map +1 -0
  132. package/dist/utils/username-generator.js +177 -0
  133. package/dist/utils/username-generator.js.map +1 -0
  134. package/dist/utils/validation.utils.d.ts +57 -0
  135. package/dist/utils/validation.utils.d.ts.map +1 -0
  136. package/dist/utils/validation.utils.js +117 -0
  137. package/dist/utils/validation.utils.js.map +1 -0
  138. package/dist/validation/password-strength.d.ts +66 -0
  139. package/dist/validation/password-strength.d.ts.map +1 -0
  140. package/dist/validation/password-strength.js +192 -0
  141. package/dist/validation/password-strength.js.map +1 -0
  142. package/dist/validation/schemas.d.ts +69 -0
  143. package/dist/validation/schemas.d.ts.map +1 -0
  144. package/dist/validation/schemas.js +94 -0
  145. package/dist/validation/schemas.js.map +1 -0
  146. package/package.json +51 -0
package/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # Biome SDK
2
+
3
+ Pure TypeScript SDK for Biome platform integration - authentication, task management, and blockchain interactions.
4
+
5
+ ## Purpose
6
+
7
+ The Biome SDK is the **official contract** between frontend and backend teams, providing pure business logic, data models, and API communication without any UI concerns.
8
+
9
+ ## Features
10
+
11
+ - 🔄 **Authentication** - Login, logout, session management
12
+ - 📋 **Task Management** - CRUD operations, state transitions, search
13
+ - 👤 **Profile Management** - User profiles, updates, validation
14
+ - 📁 **File Upload** - Image validation, upload, management
15
+ - 🔧 **Utilities** - Sorting, validation, date manipulation
16
+ - 📊 **Type Safety** - Complete TypeScript definitions
17
+
18
+ ## Installation
19
+
20
+ ### As Git Submodule (Current Biome Project)
21
+ ```bash
22
+ # The SDK is included as a git submodule in the main Biome project
23
+ cd biome
24
+ git submodule update --init --recursive
25
+ npm install # Creates symlink for @biome/sdk
26
+ npm run build:sdk
27
+ npm run dev:sdk # Watch mode for development
28
+ ```
29
+
30
+ ### As NPM Package (Future External Use)
31
+ ```bash
32
+ npm install @biome/sdk
33
+ ```
34
+
35
+ ## Quick Start
36
+
37
+ ```typescript
38
+ import { BiomeSDK } from 'biome-sdk';
39
+
40
+ const biome = new BiomeSDK({
41
+ apiBaseUrl: 'https://api.biome.dev',
42
+ timeout: 30000
43
+ });
44
+
45
+ // Authentication
46
+ await biome.auth.login({ emailOrUsername: 'user@example.com', password: 'password' });
47
+
48
+ // Task Management
49
+ const tasks = await biome.tasks.getMyTasks();
50
+ const newTask = await biome.tasks.create({
51
+ title: 'New Task',
52
+ description: 'Task description',
53
+ assigneeId: 1
54
+ });
55
+
56
+ // Profile Management
57
+ const profile = await biome.profiles.getMyProfile();
58
+ await biome.profiles.updateProfile({ bio: 'Updated bio' });
59
+ ```
60
+
61
+ ## Architecture
62
+
63
+ ```
64
+ Frontend (Angular/React/Vue)
65
+ ↓ calls
66
+ BiomeSDK (Pure TypeScript)
67
+ ↓ HTTP
68
+ Backend API (Node.js/Express)
69
+ ```
70
+
71
+ ## Scope
72
+
73
+ ### ✅ INCLUDED
74
+ - Data models & interfaces
75
+ - Business logic & validation
76
+ - API communication
77
+ - Pure algorithms
78
+ - Error handling
79
+
80
+ ### ❌ EXCLUDED
81
+ - UI components
82
+ - Framework dependencies
83
+ - Visual state management
84
+ - DOM manipulation
85
+
86
+ ## Documentation
87
+
88
+ - [CONTRACT.md](./CONTRACT.md) - SDK contract and scope
89
+ - [FRONTEND_INTEGRATION.md](./FRONTEND_INTEGRATION.md) - Frontend integration guide
90
+ - [BACKEND_INTEGRATION.md](./BACKEND_INTEGRATION.md) - Backend integration guide
91
+
92
+ ## Version
93
+
94
+ Current: **0.1.18**
95
+ - Private package for internal use
96
+ - Future npm publication planned
97
+
98
+ ## Support
99
+
100
+ For SDK issues, integration help, or questions about scope and usage, see [CONTRACT.md](./CONTRACT.md) contact guidelines.
@@ -0,0 +1,90 @@
1
+ import { BiomeHttpClient } from '../core/http-client';
2
+ import { ApiResponse } from '../models/api-response.model';
3
+ /**
4
+ * Authentication service - pure business logic without UI concerns
5
+ */
6
+ export declare class BiomeAuth {
7
+ private http;
8
+ private readonly operatorId;
9
+ private readonly sessionExpiresAt;
10
+ constructor(http: BiomeHttpClient);
11
+ /**
12
+ * Get current operator ID
13
+ */
14
+ get currentOperatorId(): number | null;
15
+ /**
16
+ * Subscribe to operator ID changes
17
+ */
18
+ onOperatorIdChange(callback: (operatorId: number | null) => void): () => void;
19
+ /**
20
+ * Register a new user
21
+ */
22
+ signup(data: SignupData): Promise<ApiResponse<void>>;
23
+ /**
24
+ * Log in a user
25
+ */
26
+ login(data: LoginData): Promise<LoginResponse>;
27
+ /**
28
+ * Log out current user
29
+ */
30
+ logout(): Promise<ApiResponse<void>>;
31
+ /**
32
+ * Check if current session is valid
33
+ */
34
+ isSessionValid(): boolean;
35
+ /**
36
+ * Validate session with server
37
+ */
38
+ validateSessionWithServer(): Promise<boolean>;
39
+ /**
40
+ * Get current session data
41
+ */
42
+ getSessionData(): SessionData;
43
+ /**
44
+ * Validate and restore a stored session
45
+ */
46
+ validateStoredSession(sessionData: SessionData): boolean;
47
+ /**
48
+ * Confirm email with token
49
+ */
50
+ confirmEmail(token: string): Promise<void>;
51
+ /**
52
+ * Resend confirmation email
53
+ */
54
+ resendConfirmation(email: string): Promise<void>;
55
+ /**
56
+ * Clear current session
57
+ */
58
+ clearSession(): void;
59
+ }
60
+ /**
61
+ * Session data structure
62
+ */
63
+ export interface SessionData {
64
+ operatorId: number;
65
+ expiresAt: string;
66
+ }
67
+ /**
68
+ * Data required for user signup
69
+ */
70
+ export interface SignupData {
71
+ timezoneId: number;
72
+ email: string;
73
+ password: string;
74
+ }
75
+ /**
76
+ * Data required for user login (Story 2: Flexible Login)
77
+ */
78
+ export interface LoginData {
79
+ emailOrUsername: string;
80
+ password: string;
81
+ rememberMe?: boolean;
82
+ }
83
+ /**
84
+ * Response from successful login
85
+ */
86
+ export interface LoginResponse {
87
+ ttl: number;
88
+ operatorId: number;
89
+ }
90
+ //# sourceMappingURL=auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D;;GAEG;AACH,qBAAa,SAAS;IAIN,OAAO,CAAC,IAAI;IAHxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0C;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwC;gBAErD,IAAI,EAAE,eAAe;IAEzC;;OAEG;IACH,IAAI,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAErC;IAED;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAI7E;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAQ1D;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBpD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAY1C;;OAEG;IACH,cAAc,IAAI,OAAO;IASzB;;OAEG;IACG,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAqBnD;;OAEG;IACH,cAAc,IAAI,WAAW;IAc7B;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAgBxD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhD;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD;;OAEG;IACH,YAAY,IAAI,IAAI;CAIvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BiomeAuth = void 0;
4
+ const luxon_1 = require("luxon");
5
+ const state_manager_1 = require("../core/state-manager");
6
+ const error_handler_1 = require("../core/error-handler");
7
+ /**
8
+ * Authentication service - pure business logic without UI concerns
9
+ */
10
+ class BiomeAuth {
11
+ constructor(http) {
12
+ this.http = http;
13
+ this.operatorId = new state_manager_1.StatefulValue(null);
14
+ this.sessionExpiresAt = new state_manager_1.StatefulValue(null);
15
+ }
16
+ /**
17
+ * Get current operator ID
18
+ */
19
+ get currentOperatorId() {
20
+ return this.operatorId.value;
21
+ }
22
+ /**
23
+ * Subscribe to operator ID changes
24
+ */
25
+ onOperatorIdChange(callback) {
26
+ return this.operatorId.subscribe(callback);
27
+ }
28
+ /**
29
+ * Register a new user
30
+ */
31
+ async signup(data) {
32
+ try {
33
+ return await this.http.post('/signup', data);
34
+ }
35
+ catch (error) {
36
+ throw (0, error_handler_1.createSdkError)(error, 'User registration failed');
37
+ }
38
+ }
39
+ /**
40
+ * Log in a user
41
+ */
42
+ async login(data) {
43
+ try {
44
+ const response = await this.http.post('/login', data);
45
+ const payload = response.payload;
46
+ // Update session state
47
+ this.operatorId.value = payload.operatorId;
48
+ this.sessionExpiresAt.value = luxon_1.DateTime.now().plus({ seconds: payload.ttl }).toJSDate();
49
+ return payload;
50
+ }
51
+ catch (error) {
52
+ this.clearSession();
53
+ throw (0, error_handler_1.createSdkError)(error, 'Login failed');
54
+ }
55
+ }
56
+ /**
57
+ * Log out current user
58
+ */
59
+ async logout() {
60
+ try {
61
+ const response = await this.http.post('/logout', {});
62
+ this.clearSession();
63
+ return response;
64
+ }
65
+ catch (error) {
66
+ // Still clear session even if logout API fails
67
+ this.clearSession();
68
+ throw (0, error_handler_1.createSdkError)(error, 'Logout failed');
69
+ }
70
+ }
71
+ /**
72
+ * Check if current session is valid
73
+ */
74
+ isSessionValid() {
75
+ const operatorId = this.operatorId.value;
76
+ const expiresAt = this.sessionExpiresAt.value;
77
+ if (!Number.isInteger(operatorId))
78
+ return false;
79
+ if (!expiresAt)
80
+ return false;
81
+ return luxon_1.DateTime.now() < luxon_1.DateTime.fromJSDate(expiresAt);
82
+ }
83
+ /**
84
+ * Validate session with server
85
+ */
86
+ async validateSessionWithServer() {
87
+ try {
88
+ const response = await this.http.get('/validate');
89
+ if (response.isSuccess) {
90
+ if (response.payload !== undefined) {
91
+ const payload = response.payload;
92
+ this.operatorId.value = payload.operatorId;
93
+ }
94
+ // Set reasonable expiration time
95
+ this.sessionExpiresAt.value = luxon_1.DateTime.now().plus({ hours: 1 }).toJSDate();
96
+ return true;
97
+ }
98
+ return false;
99
+ }
100
+ catch (error) {
101
+ this.clearSession();
102
+ return false;
103
+ }
104
+ }
105
+ /**
106
+ * Get current session data
107
+ */
108
+ getSessionData() {
109
+ const operatorId = this.operatorId.value;
110
+ const expiresAt = this.sessionExpiresAt.value;
111
+ if (!operatorId || !expiresAt) {
112
+ throw new Error('No active session');
113
+ }
114
+ return {
115
+ operatorId,
116
+ expiresAt: expiresAt.toISOString(),
117
+ };
118
+ }
119
+ /**
120
+ * Validate and restore a stored session
121
+ */
122
+ validateStoredSession(sessionData) {
123
+ if (!sessionData.operatorId || !sessionData.expiresAt) {
124
+ return false;
125
+ }
126
+ const expiresAt = luxon_1.DateTime.fromISO(sessionData.expiresAt);
127
+ if (!expiresAt.isValid || expiresAt < luxon_1.DateTime.now()) {
128
+ return false;
129
+ }
130
+ // Restore session
131
+ this.operatorId.value = sessionData.operatorId;
132
+ this.sessionExpiresAt.value = expiresAt.toJSDate();
133
+ return true;
134
+ }
135
+ /**
136
+ * Confirm email with token
137
+ */
138
+ async confirmEmail(token) {
139
+ try {
140
+ await this.http.post('/confirm-email', {}, { params: { token } });
141
+ }
142
+ catch (error) {
143
+ throw (0, error_handler_1.createSdkError)(error, 'Email confirmation failed');
144
+ }
145
+ }
146
+ /**
147
+ * Resend confirmation email
148
+ */
149
+ async resendConfirmation(email) {
150
+ try {
151
+ await this.http.post('/resend-confirmation', { email });
152
+ }
153
+ catch (error) {
154
+ throw (0, error_handler_1.createSdkError)(error, 'Failed to resend confirmation email');
155
+ }
156
+ }
157
+ /**
158
+ * Clear current session
159
+ */
160
+ clearSession() {
161
+ this.operatorId.value = null;
162
+ this.sessionExpiresAt.value = null;
163
+ }
164
+ }
165
+ exports.BiomeAuth = BiomeAuth;
166
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Authentication validation types
3
+ */
4
+ export interface AuthValidationRequest {
5
+ emailOrUsername: string;
6
+ password: string;
7
+ timezoneId: number;
8
+ }
9
+ export interface PasswordChangeRequest {
10
+ currentPassword: string;
11
+ newPassword: string;
12
+ }
13
+ export interface PasswordResetRequest {
14
+ email: string;
15
+ }
16
+ export interface EmailConfirmationRequest {
17
+ token: string;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * SDK Configuration Options
3
+ */
4
+ export interface BiomeConfig {
5
+ /** Base URL for API requests */
6
+ apiBaseUrl: string;
7
+ /** Request timeout in milliseconds (default: 30000) */
8
+ timeout?: number;
9
+ /** Authentication token for API requests */
10
+ authToken?: string;
11
+ /** Additional HTTP headers */
12
+ headers?: Record<string, string>;
13
+ /** HTTP configuration */
14
+ http?: {
15
+ withCredentials?: boolean;
16
+ interceptors?: {
17
+ credentials?: boolean;
18
+ taskNotificationRefresh?: {
19
+ broadcastChannel?: string;
20
+ customEvent?: string;
21
+ ignoreUrls?: string[];
22
+ };
23
+ };
24
+ };
25
+ }
26
+ //# sourceMappingURL=configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/core/configuration.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yBAAyB;IACzB,IAAI,CAAC,EAAE;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,YAAY,CAAC,EAAE;YACX,WAAW,CAAC,EAAE,OAAO,CAAC;YACtB,uBAAuB,CAAC,EAAE;gBACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;gBAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;aACzB,CAAC;SACL,CAAC;KACL,CAAC;CACL"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/core/configuration.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Standardized SDK error structure
3
+ */
4
+ export interface BiomeSdkError extends Error {
5
+ /** HTTP status code */
6
+ status?: number;
7
+ /** Error type from API */
8
+ type?: string;
9
+ /** User-friendly error message */
10
+ userMessage?: string;
11
+ /** Technical error details */
12
+ technicalDetails?: string;
13
+ /** Error code from API */
14
+ code?: string;
15
+ /** Timestamp when error occurred */
16
+ timestamp: string;
17
+ /** Original error */
18
+ originalError?: unknown;
19
+ }
20
+ /**
21
+ * Create standardized error object
22
+ */
23
+ export declare function createSdkError(error: unknown, context?: string): BiomeSdkError;
24
+ //# sourceMappingURL=error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/core/error-handler.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,KAAK;IACxC,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,GACjB,aAAa,CAgDf"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSdkError = createSdkError;
4
+ const axios_1 = require("axios");
5
+ /**
6
+ * Create standardized error object
7
+ */
8
+ function createSdkError(error, context) {
9
+ const timestamp = new Date().toISOString();
10
+ // Defensive check for AxiosError availability
11
+ if (error && typeof axios_1.AxiosError !== 'undefined' && error instanceof axios_1.AxiosError) {
12
+ return {
13
+ name: 'BiomeSdkError',
14
+ message: error.message,
15
+ status: error.response?.status,
16
+ userMessage: getUserFriendlyErrorMessage(error.response?.status, error.response?.data),
17
+ technicalDetails: error.response?.data?.message || error.message,
18
+ code: error.code,
19
+ timestamp,
20
+ originalError: error,
21
+ };
22
+ }
23
+ if (error instanceof Error) {
24
+ return {
25
+ name: 'BiomeSdkError',
26
+ message: error.message,
27
+ userMessage: context ? `${context}: ${error.message}` : error.message,
28
+ technicalDetails: error.message,
29
+ timestamp,
30
+ originalError: error,
31
+ };
32
+ }
33
+ // Handle cases where error might be null, undefined, or not an object
34
+ if (!error || typeof error !== 'object') {
35
+ return {
36
+ name: 'BiomeSdkError',
37
+ message: 'Unknown error occurred',
38
+ userMessage: context ? `${context}: An unexpected error occurred` : 'An unexpected error occurred',
39
+ technicalDetails: 'Invalid error object received',
40
+ timestamp,
41
+ originalError: error,
42
+ };
43
+ }
44
+ return {
45
+ name: 'BiomeSdkError',
46
+ message: 'Unknown error occurred',
47
+ userMessage: context ? `${context}: An unexpected error occurred` : 'An unexpected error occurred',
48
+ technicalDetails: 'Unknown error',
49
+ timestamp,
50
+ originalError: error,
51
+ };
52
+ }
53
+ /**
54
+ * Get user-friendly error message based on HTTP status
55
+ */
56
+ function getUserFriendlyErrorMessage(status, errorData) {
57
+ switch (status) {
58
+ case 400:
59
+ return errorData?.message || 'Invalid request format. Please check your input.';
60
+ case 401:
61
+ return errorData?.message || 'Authentication required. Please log in.';
62
+ case 403:
63
+ return errorData?.message || 'Access denied. You do not have permission for this action.';
64
+ case 404:
65
+ return 'The requested resource was not found.';
66
+ case 429:
67
+ return 'Too many requests. Please wait a moment and try again.';
68
+ case 500:
69
+ case 502:
70
+ case 503:
71
+ return 'Server error. Please try again in a few moments.';
72
+ default:
73
+ return errorData?.message || 'An error occurred. Please try again.';
74
+ }
75
+ }
76
+ //# sourceMappingURL=error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/core/error-handler.ts"],"names":[],"mappings":";;AAyBA,wCAmDC;AA5ED,iCAAmC;AAsBnC;;GAEG;AACH,SAAgB,cAAc,CAC1B,KAAc,EACd,OAAgB;IAEhB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,8CAA8C;IAC9C,IAAI,KAAK,IAAI,OAAO,kBAAU,KAAK,WAAW,IAAI,KAAK,YAAY,kBAAU,EAAE,CAAC;QAC5E,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM;YAC9B,WAAW,EAAE,2BAA2B,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;YACtF,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO;YAChE,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS;YACT,aAAa,EAAE,KAAK;SACvB,CAAC;IACN,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;YACrE,gBAAgB,EAAE,KAAK,CAAC,OAAO;YAC/B,SAAS;YACT,aAAa,EAAE,KAAK;SACvB,CAAC;IACN,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,wBAAwB;YACjC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,gCAAgC,CAAC,CAAC,CAAC,8BAA8B;YAClG,gBAAgB,EAAE,+BAA+B;YACjD,SAAS;YACT,aAAa,EAAE,KAAK;SACvB,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,gCAAgC,CAAC,CAAC,CAAC,8BAA8B;QAClG,gBAAgB,EAAE,eAAe;QACjC,SAAS;QACT,aAAa,EAAE,KAAK;KACvB,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,MAAe,EAAE,SAAe;IACjE,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,GAAG;YACJ,OAAO,SAAS,EAAE,OAAO,IAAI,kDAAkD,CAAC;QACpF,KAAK,GAAG;YACJ,OAAO,SAAS,EAAE,OAAO,IAAI,yCAAyC,CAAC;QAC3E,KAAK,GAAG;YACJ,OAAO,SAAS,EAAE,OAAO,IAAI,4DAA4D,CAAC;QAC9F,KAAK,GAAG;YACJ,OAAO,uCAAuC,CAAC;QACnD,KAAK,GAAG;YACJ,OAAO,wDAAwD,CAAC;QACpE,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACJ,OAAO,kDAAkD,CAAC;QAC9D;YACI,OAAO,SAAS,EAAE,OAAO,IAAI,sCAAsC,CAAC;IAC5E,CAAC;AACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { BiomeConfig } from './configuration';
3
+ /**
4
+ * Framework-agnostic HTTP client using Axios
5
+ */
6
+ export declare class BiomeHttpClient {
7
+ private config;
8
+ private readonly axiosInstance;
9
+ constructor(config: BiomeConfig);
10
+ /**
11
+ * Perform GET request
12
+ */
13
+ get<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
14
+ /**
15
+ * Perform POST request
16
+ */
17
+ post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
18
+ /**
19
+ * Perform PUT request
20
+ */
21
+ put<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
22
+ /**
23
+ * Perform PATCH request
24
+ */
25
+ patch<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T>;
26
+ /**
27
+ * Perform DELETE request
28
+ */
29
+ delete<T = void>(url: string, config?: AxiosRequestConfig): Promise<T>;
30
+ /**
31
+ * Set authentication token for subsequent requests
32
+ */
33
+ setAuthToken(token: string): void;
34
+ /**
35
+ * Clear authentication token
36
+ */
37
+ clearAuthToken(): void;
38
+ /**
39
+ * Setup request and response interceptors
40
+ */
41
+ private setupInterceptors;
42
+ }
43
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/core/http-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAiB,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,qBAAa,eAAe;IAGZ,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAE1B,MAAM,EAAE,WAAW;IAcvC;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKlE;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAK/E;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAK9E;;OAEG;IACG,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKpF;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAKxE;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKjC;;OAEG;IACH,cAAc,IAAI,IAAI;IAKtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAyB5B"}