@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
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Base state machine types for Biome platform
3
+ * These types are shared between frontend and backend
4
+ */
5
+ /**
6
+ * Base actor type for state machine transitions
7
+ */
8
+ export type Actor = {
9
+ id: number;
10
+ type: string;
11
+ permissions: string[];
12
+ };
13
+ /**
14
+ * Base state machine event
15
+ */
16
+ export type StateMachineEvent = {
17
+ type: string;
18
+ actor: Actor;
19
+ timestamp: Date;
20
+ metadata?: Record<string, any>;
21
+ };
22
+ /**
23
+ * Base state machine transition
24
+ */
25
+ export type StateTransition<TState, TEvent> = {
26
+ from: TState;
27
+ event: TEvent;
28
+ to: TState;
29
+ actor: Actor;
30
+ timestamp: Date;
31
+ metadata?: Record<string, any>;
32
+ };
33
+ /**
34
+ * Base state machine configuration
35
+ */
36
+ export type StateMachineConfig<TState, TEvent> = {
37
+ initialState: TState;
38
+ transitions: Array<{
39
+ from: TState;
40
+ event: TEvent;
41
+ to: TState;
42
+ allowedActors: string[];
43
+ validation?: (actor: Actor, metadata?: Record<string, any>) => boolean;
44
+ }>;
45
+ finalStates: TState[];
46
+ };
47
+ /**
48
+ * Base state machine service interface
49
+ */
50
+ export interface IStateMachineService<TState, TEvent> {
51
+ getCurrentState(): TState;
52
+ canTransition(event: TEvent, actor: Actor): boolean;
53
+ transition(event: TEvent, actor: Actor, metadata?: Record<string, any>): Promise<TState>;
54
+ getValidTransitions(actor: Actor): TEvent[];
55
+ isFinalState(): boolean;
56
+ getTransitionHistory(): StateTransition<TState, TEvent>[];
57
+ }
58
+ /**
59
+ * State machine error types
60
+ */
61
+ export declare enum StateMachineErrorType {
62
+ INVALID_TRANSITION = "INVALID_TRANSITION",
63
+ UNAUTHORIZED_ACTOR = "UNAUTHORIZED_ACTOR",
64
+ INVALID_STATE = "INVALID_STATE",
65
+ VALIDATION_FAILED = "VALIDATION_FAILED"
66
+ }
67
+ /**
68
+ * State machine error
69
+ */
70
+ export type StateMachineError = {
71
+ type: StateMachineErrorType;
72
+ message: string;
73
+ currentState?: any;
74
+ attemptedEvent?: any;
75
+ actor?: Actor;
76
+ metadata?: Record<string, any>;
77
+ };
78
+ /**
79
+ * State machine audit log entry
80
+ */
81
+ export type StateMachineAuditLog = {
82
+ id: string;
83
+ entityType: string;
84
+ entityId: number;
85
+ fromState: any;
86
+ toState: any;
87
+ event: string;
88
+ actor: Actor;
89
+ timestamp: Date;
90
+ metadata?: Record<string, any>;
91
+ success: boolean;
92
+ error?: StateMachineError;
93
+ };
94
+ /**
95
+ * State machine factory configuration
96
+ */
97
+ export type StateMachineFactoryConfig = {
98
+ enableAuditLogging: boolean;
99
+ enableValidation: boolean;
100
+ maxHistorySize: number;
101
+ };
102
+ //# sourceMappingURL=state-machine.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.types.d.ts","sourceRoot":"","sources":["../../src/types/state-machine.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Base state machine types for Biome platform
4
+ * These types are shared between frontend and backend
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.StateMachineErrorType = void 0;
8
+ /**
9
+ * State machine error types
10
+ */
11
+ var StateMachineErrorType;
12
+ (function (StateMachineErrorType) {
13
+ StateMachineErrorType["INVALID_TRANSITION"] = "INVALID_TRANSITION";
14
+ StateMachineErrorType["UNAUTHORIZED_ACTOR"] = "UNAUTHORIZED_ACTOR";
15
+ StateMachineErrorType["INVALID_STATE"] = "INVALID_STATE";
16
+ StateMachineErrorType["VALIDATION_FAILED"] = "VALIDATION_FAILED";
17
+ })(StateMachineErrorType || (exports.StateMachineErrorType = StateMachineErrorType = {}));
18
+ //# sourceMappingURL=state-machine.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.types.js","sourceRoot":"","sources":["../../src/types/state-machine.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA4DH;;GAEG;AACH,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC7B,kEAAyC,CAAA;IACzC,kEAAyC,CAAA;IACzC,wDAA+B,CAAA;IAC/B,gEAAuC,CAAA;AAC3C,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC"}
@@ -0,0 +1,49 @@
1
+ import { BiomeHttpClient } from '../core/http-client';
2
+ /**
3
+ * User service - pure business logic without UI concerns
4
+ */
5
+ export declare class BiomeUsers {
6
+ private http;
7
+ constructor(http: BiomeHttpClient);
8
+ /**
9
+ * Get all users with avatar URLs
10
+ */
11
+ getAll(): Promise<UserWithAvatar[]>;
12
+ /**
13
+ * Build avatar URL for user
14
+ */
15
+ private buildAvatarUrl;
16
+ /**
17
+ * Normalize URL to be absolute
18
+ */
19
+ private normalizeUrl;
20
+ /**
21
+ * Get users with pagination and search
22
+ */
23
+ getUsers(query?: string, limit?: number): Promise<UserWithAvatar[]>;
24
+ /**
25
+ * Get user by ID
26
+ */
27
+ getUserById(id: number): Promise<UserWithAvatar | null>;
28
+ /**
29
+ * Get user by username
30
+ */
31
+ getUserByUsername(username: string): Promise<UserWithAvatar | null>;
32
+ /**
33
+ * Search users
34
+ */
35
+ searchUsers(query: string, limit?: number): Promise<UserWithAvatar[]>;
36
+ }
37
+ export interface UserWithAvatar {
38
+ id: number;
39
+ username: string;
40
+ avatarStoragePath?: string | null;
41
+ avatarDownloadUrl?: string | null;
42
+ avatarUrl?: string | null;
43
+ profilePhoto?: {
44
+ downloadUrl?: string;
45
+ storagePath?: string;
46
+ };
47
+ profilePhotoFileId?: number | null;
48
+ }
49
+ //# sourceMappingURL=user.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../src/users/user.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD;;GAEG;AACH,qBAAa,UAAU;IAEP,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAEzC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAiBzC;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBzE;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAe7D;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAezE;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAG9E;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BiomeUsers = void 0;
4
+ const error_handler_1 = require("../core/error-handler");
5
+ /**
6
+ * User service - pure business logic without UI concerns
7
+ */
8
+ class BiomeUsers {
9
+ constructor(http) {
10
+ this.http = http;
11
+ }
12
+ /**
13
+ * Get all users with avatar URLs
14
+ */
15
+ async getAll() {
16
+ try {
17
+ const response = await this.http.get('/users');
18
+ if (!response.payload) {
19
+ throw new Error('No user data received');
20
+ }
21
+ return response.payload.users.map(user => ({
22
+ ...user,
23
+ avatarUrl: this.buildAvatarUrl(user),
24
+ }));
25
+ }
26
+ catch (error) {
27
+ throw (0, error_handler_1.createSdkError)(error, 'Failed to get users');
28
+ }
29
+ }
30
+ /**
31
+ * Build avatar URL for user
32
+ */
33
+ buildAvatarUrl(user) {
34
+ if (user.avatarDownloadUrl) {
35
+ return this.normalizeUrl(user.avatarDownloadUrl);
36
+ }
37
+ if (user.avatarStoragePath) {
38
+ return this.normalizeUrl(`/trunk/files/${user.avatarStoragePath}`);
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Normalize URL to be absolute
44
+ */
45
+ normalizeUrl(path) {
46
+ if (path.startsWith('http://') || path.startsWith('https://')) {
47
+ return path;
48
+ }
49
+ // For SDK, we don't have access to environment
50
+ // This would need to be passed in via config or handled at a higher level
51
+ const baseUrl = ''; // This should be handled by HTTP client base URL
52
+ const normalizedPath = path.startsWith('/') ? path : `/${path}`;
53
+ return `${baseUrl}${normalizedPath}`;
54
+ }
55
+ /**
56
+ * Get users with pagination and search
57
+ */
58
+ async getUsers(query, limit) {
59
+ try {
60
+ const params = new URLSearchParams();
61
+ if (query)
62
+ params.set('q', query);
63
+ if (limit)
64
+ params.set('limit', limit.toString());
65
+ const response = await this.http.get(`/users?${params}`);
66
+ return response.payload.users.map(user => ({
67
+ ...user,
68
+ avatarUrl: this.buildAvatarUrl(user),
69
+ }));
70
+ }
71
+ catch (error) {
72
+ throw (0, error_handler_1.createSdkError)(error, 'Failed to get users');
73
+ }
74
+ }
75
+ /**
76
+ * Get user by ID
77
+ */
78
+ async getUserById(id) {
79
+ try {
80
+ const response = await this.http.get(`/users/${id}`);
81
+ const user = response.payload;
82
+ if (!user)
83
+ return null;
84
+ return {
85
+ ...user,
86
+ avatarUrl: this.buildAvatarUrl(user),
87
+ };
88
+ }
89
+ catch (error) {
90
+ throw (0, error_handler_1.createSdkError)(error, 'Failed to get user by ID');
91
+ }
92
+ }
93
+ /**
94
+ * Get user by username
95
+ */
96
+ async getUserByUsername(username) {
97
+ try {
98
+ const response = await this.http.get(`/users/username/${encodeURIComponent(username)}`);
99
+ const user = response.payload;
100
+ if (!user)
101
+ return null;
102
+ return {
103
+ ...user,
104
+ avatarUrl: this.buildAvatarUrl(user),
105
+ };
106
+ }
107
+ catch (error) {
108
+ throw (0, error_handler_1.createSdkError)(error, 'Failed to get user by username');
109
+ }
110
+ }
111
+ /**
112
+ * Search users
113
+ */
114
+ async searchUsers(query, limit) {
115
+ return this.getUsers(query, limit);
116
+ }
117
+ }
118
+ exports.BiomeUsers = BiomeUsers;
119
+ //# sourceMappingURL=user.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../src/users/user.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Date utilities for Biome platform
3
+ */
4
+ /**
5
+ * Formats a date to ISO string
6
+ */
7
+ export declare const toISOString: (date: Date) => string;
8
+ /**
9
+ * Parses a date from various formats
10
+ */
11
+ export declare const parseDate: (date: string | Date | null | undefined) => Date | null;
12
+ /**
13
+ * Checks if a date is valid
14
+ */
15
+ export declare const isValidDate: (date: unknown) => boolean;
16
+ /**
17
+ * Gets the current date in ISO format
18
+ */
19
+ export declare const getCurrentDate: () => string;
20
+ /**
21
+ * Adds days to a date
22
+ */
23
+ export declare const addDays: (date: Date, days: number) => Date;
24
+ /**
25
+ * Subtracts days from a date
26
+ */
27
+ export declare const subtractDays: (date: Date, days: number) => Date;
28
+ /**
29
+ * Gets the difference in days between two dates
30
+ */
31
+ export declare const getDaysDifference: (date1: Date, date2: Date) => number;
32
+ /**
33
+ * Checks if a date is in the past
34
+ */
35
+ export declare const isPast: (date: Date) => boolean;
36
+ /**
37
+ * Checks if a date is in the future
38
+ */
39
+ export declare const isFuture: (date: Date) => boolean;
40
+ /**
41
+ * Checks if a date is today
42
+ */
43
+ export declare const isToday: (date: Date) => boolean;
44
+ /**
45
+ * Formats a date for display
46
+ */
47
+ export declare const formatDate: (date: Date, locale?: string) => string;
48
+ /**
49
+ * Formats a date and time for display
50
+ */
51
+ export declare const formatDateTime: (date: Date, locale?: string) => string;
52
+ /**
53
+ * Gets the start of the day
54
+ */
55
+ export declare const getStartOfDay: (date: Date) => Date;
56
+ /**
57
+ * Gets the end of the day
58
+ */
59
+ export declare const getEndOfDay: (date: Date) => Date;
60
+ //# sourceMappingURL=date.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.utils.d.ts","sourceRoot":"","sources":["../../src/utils/date.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,KAAG,MAExC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,KAAG,IAAI,GAAG,IASzE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,OAAO,KAAG,OAI3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,QAAO,MAEjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,IAAI,EAAE,MAAM,MAAM,KAAG,IAIlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,EAAE,MAAM,MAAM,KAAG,IAEvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,IAAI,EAAE,OAAO,IAAI,KAAG,MAG5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,MAAM,IAAI,KAAG,OAEnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,IAAI,KAAG,OAErC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,IAAI,KAAG,OAGpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,EAAE,eAAgB,KAAG,MAEzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,EAAE,eAAgB,KAAG,MAE7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,KAAG,IAI1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,KAAG,IAIxC,CAAC"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ /**
3
+ * Date utilities for Biome platform
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getEndOfDay = exports.getStartOfDay = exports.formatDateTime = exports.formatDate = exports.isToday = exports.isFuture = exports.isPast = exports.getDaysDifference = exports.subtractDays = exports.addDays = exports.getCurrentDate = exports.isValidDate = exports.parseDate = exports.toISOString = void 0;
7
+ /**
8
+ * Formats a date to ISO string
9
+ */
10
+ const toISOString = (date) => {
11
+ return date.toISOString();
12
+ };
13
+ exports.toISOString = toISOString;
14
+ /**
15
+ * Parses a date from various formats
16
+ */
17
+ const parseDate = (date) => {
18
+ if (!date)
19
+ return null;
20
+ if (date instanceof Date)
21
+ return date;
22
+ try {
23
+ return new Date(date);
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ };
29
+ exports.parseDate = parseDate;
30
+ /**
31
+ * Checks if a date is valid
32
+ */
33
+ const isValidDate = (date) => {
34
+ if (!date)
35
+ return false;
36
+ const d = new Date(date);
37
+ return d instanceof Date && !isNaN(d.getTime());
38
+ };
39
+ exports.isValidDate = isValidDate;
40
+ /**
41
+ * Gets the current date in ISO format
42
+ */
43
+ const getCurrentDate = () => {
44
+ return new Date().toISOString();
45
+ };
46
+ exports.getCurrentDate = getCurrentDate;
47
+ /**
48
+ * Adds days to a date
49
+ */
50
+ const addDays = (date, days) => {
51
+ const result = new Date(date);
52
+ result.setDate(result.getDate() + days);
53
+ return result;
54
+ };
55
+ exports.addDays = addDays;
56
+ /**
57
+ * Subtracts days from a date
58
+ */
59
+ const subtractDays = (date, days) => {
60
+ return (0, exports.addDays)(date, -days);
61
+ };
62
+ exports.subtractDays = subtractDays;
63
+ /**
64
+ * Gets the difference in days between two dates
65
+ */
66
+ const getDaysDifference = (date1, date2) => {
67
+ const timeDiff = date2.getTime() - date1.getTime();
68
+ return Math.ceil(timeDiff / (1000 * 3600 * 24));
69
+ };
70
+ exports.getDaysDifference = getDaysDifference;
71
+ /**
72
+ * Checks if a date is in the past
73
+ */
74
+ const isPast = (date) => {
75
+ return date < new Date();
76
+ };
77
+ exports.isPast = isPast;
78
+ /**
79
+ * Checks if a date is in the future
80
+ */
81
+ const isFuture = (date) => {
82
+ return date > new Date();
83
+ };
84
+ exports.isFuture = isFuture;
85
+ /**
86
+ * Checks if a date is today
87
+ */
88
+ const isToday = (date) => {
89
+ const today = new Date();
90
+ return date.toDateString() === today.toDateString();
91
+ };
92
+ exports.isToday = isToday;
93
+ /**
94
+ * Formats a date for display
95
+ */
96
+ const formatDate = (date, locale = 'en-US') => {
97
+ return date.toLocaleDateString(locale);
98
+ };
99
+ exports.formatDate = formatDate;
100
+ /**
101
+ * Formats a date and time for display
102
+ */
103
+ const formatDateTime = (date, locale = 'en-US') => {
104
+ return date.toLocaleString(locale);
105
+ };
106
+ exports.formatDateTime = formatDateTime;
107
+ /**
108
+ * Gets the start of the day
109
+ */
110
+ const getStartOfDay = (date) => {
111
+ const result = new Date(date);
112
+ result.setHours(0, 0, 0, 0);
113
+ return result;
114
+ };
115
+ exports.getStartOfDay = getStartOfDay;
116
+ /**
117
+ * Gets the end of the day
118
+ */
119
+ const getEndOfDay = (date) => {
120
+ const result = new Date(date);
121
+ result.setHours(23, 59, 59, 999);
122
+ return result;
123
+ };
124
+ exports.getEndOfDay = getEndOfDay;
125
+ //# sourceMappingURL=date.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.utils.js","sourceRoot":"","sources":["../../src/utils/date.utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,IAAU,EAAU,EAAE;IAC9C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9B,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEF;;GAEG;AACI,MAAM,SAAS,GAAG,CAAC,IAAsC,EAAe,EAAE;IAC7E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,YAAY,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAI,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AATW,QAAA,SAAS,aASpB;AAEF;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,IAAa,EAAW,EAAE;IAClD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAqB,CAAC,CAAC;IAC1C,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEF;;GAEG;AACI,MAAM,cAAc,GAAG,GAAW,EAAE;IACvC,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpC,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEF;;GAEG;AACI,MAAM,OAAO,GAAG,CAAC,IAAU,EAAE,IAAY,EAAQ,EAAE;IACtD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB;AAEF;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,IAAU,EAAE,IAAY,EAAQ,EAAE;IAC3D,OAAO,IAAA,eAAO,EAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEF;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,KAAW,EAAE,KAAW,EAAU,EAAE;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAHW,QAAA,iBAAiB,qBAG5B;AAEF;;GAEG;AACI,MAAM,MAAM,GAAG,CAAC,IAAU,EAAW,EAAE;IAC1C,OAAO,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB;AAEF;;GAEG;AACI,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAW,EAAE;IAC5C,OAAO,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEF;;GAEG;AACI,MAAM,OAAO,GAAG,CAAC,IAAU,EAAW,EAAE;IAC3C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,CAAC,YAAY,EAAE,CAAC;AACxD,CAAC,CAAC;AAHW,QAAA,OAAO,WAGlB;AAEF;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,IAAU,EAAE,MAAM,GAAG,OAAO,EAAU,EAAE;IAC/D,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEF;;GAEG;AACI,MAAM,cAAc,GAAG,CAAC,IAAU,EAAE,MAAM,GAAG,OAAO,EAAU,EAAE;IACnE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,IAAU,EAAQ,EAAE;IAC9C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB;AAEF;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,IAAU,EAAQ,EAAE;IAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Creative Username Generator
3
+ *
4
+ * Generates unique, memorable usernames following the pattern:
5
+ * Adjective + Noun + Number (e.g., "BraveEagle2847", "SilverFox1923")
6
+ *
7
+ * This module is part of the SDK for reusability across frontend and backend.
8
+ *
9
+ * Features:
10
+ * - Generates creative, memorable usernames
11
+ * - Optional uniqueness checking with retry logic
12
+ * - Max 10 retry attempts if collision occurs
13
+ * - Returns predictable format: AdjNounNNNN
14
+ *
15
+ * @module username-generator
16
+ */
17
+ /**
18
+ * Generate a creative username following the pattern: Adjective + Noun + Number
19
+ *
20
+ * @param checkUniqueness - Optional function to check if username is already taken.
21
+ * Should return Promise<true> if unique, Promise<false> if taken.
22
+ * @param maxAttempts - Maximum number of retry attempts if collision occurs (default: 10)
23
+ * @returns Promise<string> - A unique username following the pattern AdjNounNNNN
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // Without uniqueness check
28
+ * const username = await generateCreativeUsername();
29
+ * console.log(username); // "BraveEagle2847"
30
+ *
31
+ * // With uniqueness check
32
+ * const username = await generateCreativeUsername(async (name) => {
33
+ * const exists = await db.users.findOne({ username: name });
34
+ * return !exists; // Return true if unique, false if taken
35
+ * });
36
+ * ```
37
+ *
38
+ * @throws {Error} If unable to generate unique username after maxAttempts
39
+ */
40
+ export declare function generateCreativeUsername(checkUniqueness?: (username: string) => Promise<boolean>, maxAttempts?: number): Promise<string>;
41
+ /**
42
+ * Generate multiple username suggestions
43
+ *
44
+ * @param count - Number of suggestions to generate (default: 3)
45
+ * @returns Promise<string[]> - Array of username suggestions
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const suggestions = await generateUsernameSuggestions(5);
50
+ * console.log(suggestions);
51
+ * // ["BraveEagle2847", "SilverFox1923", "MightyTiger4567", "NobleWolf3892", "SwiftHawk7651"]
52
+ * ```
53
+ */
54
+ export declare function generateUsernameSuggestions(count?: number): Promise<string[]>;
55
+ /**
56
+ * Validate username format
57
+ *
58
+ * Checks if a username matches the expected pattern:
59
+ * - Starts with uppercase letter
60
+ * - Followed by lowercase letters
61
+ * - Followed by uppercase letter
62
+ * - Followed by lowercase letters
63
+ * - Ends with 4 digits
64
+ *
65
+ * @param username - The username to validate
66
+ * @returns true if username matches the generated format, false otherwise
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * isValidGeneratedUsername('BraveEagle2847'); // true
71
+ * isValidGeneratedUsername('braveEagle2847'); // false (lowercase start)
72
+ * isValidGeneratedUsername('BraveEagle284'); // false (only 3 digits)
73
+ * ```
74
+ */
75
+ export declare function isValidGeneratedUsername(username: string): boolean;
76
+ //# sourceMappingURL=username-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"username-generator.d.ts","sourceRoot":"","sources":["../../src/utils/username-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmDH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,wBAAwB,CAC1C,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EACxD,WAAW,GAAE,MAAW,GACzB,OAAO,CAAC,MAAM,CAAC,CAqCjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBtF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIlE"}