@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.
- package/README.md +100 -0
- package/dist/auth/auth.service.d.ts +90 -0
- package/dist/auth/auth.service.d.ts.map +1 -0
- package/dist/auth/auth.service.js +166 -0
- package/dist/auth/auth.service.js.map +1 -0
- package/dist/auth/types.d.ts +19 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +3 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/core/configuration.d.ts +26 -0
- package/dist/core/configuration.d.ts.map +1 -0
- package/dist/core/configuration.js +3 -0
- package/dist/core/configuration.js.map +1 -0
- package/dist/core/error-handler.d.ts +24 -0
- package/dist/core/error-handler.d.ts.map +1 -0
- package/dist/core/error-handler.js +76 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/http-client.d.ts +43 -0
- package/dist/core/http-client.d.ts.map +1 -0
- package/dist/core/http-client.js +97 -0
- package/dist/core/http-client.js.map +1 -0
- package/dist/core/state-manager.d.ts +16 -0
- package/dist/core/state-manager.d.ts.map +1 -0
- package/dist/core/state-manager.js +33 -0
- package/dist/core/state-manager.js.map +1 -0
- package/dist/files/file-upload.d.ts +60 -0
- package/dist/files/file-upload.d.ts.map +1 -0
- package/dist/files/file-upload.js +121 -0
- package/dist/files/file-upload.js.map +1 -0
- package/dist/index.d.ts +80 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +140 -0
- package/dist/index.js.map +1 -0
- package/dist/models/api-error.model.d.ts +31 -0
- package/dist/models/api-error.model.d.ts.map +1 -0
- package/dist/models/api-error.model.js +53 -0
- package/dist/models/api-error.model.js.map +1 -0
- package/dist/models/api-response.model.d.ts +51 -0
- package/dist/models/api-response.model.d.ts.map +1 -0
- package/dist/models/api-response.model.js +77 -0
- package/dist/models/api-response.model.js.map +1 -0
- package/dist/models/chat.model.d.ts +59 -0
- package/dist/models/chat.model.d.ts.map +1 -0
- package/dist/models/chat.model.js +3 -0
- package/dist/models/chat.model.js.map +1 -0
- package/dist/models/ecosystem.model.d.ts +16 -0
- package/dist/models/ecosystem.model.d.ts.map +1 -0
- package/dist/models/ecosystem.model.js +7 -0
- package/dist/models/ecosystem.model.js.map +1 -0
- package/dist/models/file.model.d.ts +67 -0
- package/dist/models/file.model.d.ts.map +1 -0
- package/dist/models/file.model.js +3 -0
- package/dist/models/file.model.js.map +1 -0
- package/dist/models/notification.model.d.ts +172 -0
- package/dist/models/notification.model.d.ts.map +1 -0
- package/dist/models/notification.model.js +77 -0
- package/dist/models/notification.model.js.map +1 -0
- package/dist/models/person.model.d.ts +94 -0
- package/dist/models/person.model.d.ts.map +1 -0
- package/dist/models/person.model.js +14 -0
- package/dist/models/person.model.js.map +1 -0
- package/dist/models/project.model.d.ts +62 -0
- package/dist/models/project.model.d.ts.map +1 -0
- package/dist/models/project.model.js +93 -0
- package/dist/models/project.model.js.map +1 -0
- package/dist/models/task-update.model.d.ts +28 -0
- package/dist/models/task-update.model.d.ts.map +1 -0
- package/dist/models/task-update.model.js +8 -0
- package/dist/models/task-update.model.js.map +1 -0
- package/dist/models/task-url.model.d.ts +16 -0
- package/dist/models/task-url.model.d.ts.map +1 -0
- package/dist/models/task-url.model.js +3 -0
- package/dist/models/task-url.model.js.map +1 -0
- package/dist/models/task.model.d.ts +120 -0
- package/dist/models/task.model.d.ts.map +1 -0
- package/dist/models/task.model.js +78 -0
- package/dist/models/task.model.js.map +1 -0
- package/dist/models/timezone.model.d.ts +19 -0
- package/dist/models/timezone.model.d.ts.map +1 -0
- package/dist/models/timezone.model.js +12 -0
- package/dist/models/timezone.model.js.map +1 -0
- package/dist/models/user.model.d.ts +101 -0
- package/dist/models/user.model.d.ts.map +1 -0
- package/dist/models/user.model.js +22 -0
- package/dist/models/user.model.js.map +1 -0
- package/dist/profiles/profile.service.d.ts +52 -0
- package/dist/profiles/profile.service.d.ts.map +1 -0
- package/dist/profiles/profile.service.js +119 -0
- package/dist/profiles/profile.service.js.map +1 -0
- package/dist/profiles/types.d.ts +1 -0
- package/dist/profiles/types.d.ts.map +1 -0
- package/dist/profiles/types.js +3 -0
- package/dist/profiles/types.js.map +1 -0
- package/dist/tasks/task-sorting.d.ts +51 -0
- package/dist/tasks/task-sorting.d.ts.map +1 -0
- package/dist/tasks/task-sorting.js +137 -0
- package/dist/tasks/task-sorting.js.map +1 -0
- package/dist/tasks/task.service.d.ts +134 -0
- package/dist/tasks/task.service.d.ts.map +1 -0
- package/dist/tasks/task.service.js +256 -0
- package/dist/tasks/task.service.js.map +1 -0
- package/dist/tasks/types.d.ts +2 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +3 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/types/actor.types.d.ts +101 -0
- package/dist/types/actor.types.d.ts.map +1 -0
- package/dist/types/actor.types.js +135 -0
- package/dist/types/actor.types.js.map +1 -0
- package/dist/types/api.types.d.ts +43 -0
- package/dist/types/api.types.d.ts.map +1 -0
- package/dist/types/api.types.js +6 -0
- package/dist/types/api.types.js.map +1 -0
- package/dist/types/common.types.d.ts +40 -0
- package/dist/types/common.types.d.ts.map +1 -0
- package/dist/types/common.types.js +6 -0
- package/dist/types/common.types.js.map +1 -0
- package/dist/types/state-machine.types.d.ts +102 -0
- package/dist/types/state-machine.types.d.ts.map +1 -0
- package/dist/types/state-machine.types.js +18 -0
- package/dist/types/state-machine.types.js.map +1 -0
- package/dist/users/user.service.d.ts +49 -0
- package/dist/users/user.service.d.ts.map +1 -0
- package/dist/users/user.service.js +119 -0
- package/dist/users/user.service.js.map +1 -0
- package/dist/utils/date.utils.d.ts +60 -0
- package/dist/utils/date.utils.d.ts.map +1 -0
- package/dist/utils/date.utils.js +125 -0
- package/dist/utils/date.utils.js.map +1 -0
- package/dist/utils/username-generator.d.ts +76 -0
- package/dist/utils/username-generator.d.ts.map +1 -0
- package/dist/utils/username-generator.js +177 -0
- package/dist/utils/username-generator.js.map +1 -0
- package/dist/utils/validation.utils.d.ts +57 -0
- package/dist/utils/validation.utils.d.ts.map +1 -0
- package/dist/utils/validation.utils.js +117 -0
- package/dist/utils/validation.utils.js.map +1 -0
- package/dist/validation/password-strength.d.ts +66 -0
- package/dist/validation/password-strength.d.ts.map +1 -0
- package/dist/validation/password-strength.js +192 -0
- package/dist/validation/password-strength.js.map +1 -0
- package/dist/validation/schemas.d.ts +69 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +94 -0
- package/dist/validation/schemas.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|