@uluops/ops-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1647 -0
  3. package/dist/client.d.ts +191 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +168 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config/constants.d.ts +27 -0
  8. package/dist/config/constants.d.ts.map +1 -0
  9. package/dist/config/constants.js +35 -0
  10. package/dist/config/constants.js.map +1 -0
  11. package/dist/config/index.d.ts +4 -0
  12. package/dist/config/index.d.ts.map +1 -0
  13. package/dist/config/index.js +4 -0
  14. package/dist/config/index.js.map +1 -0
  15. package/dist/config/loaders.d.ts +41 -0
  16. package/dist/config/loaders.d.ts.map +1 -0
  17. package/dist/config/loaders.js +43 -0
  18. package/dist/config/loaders.js.map +1 -0
  19. package/dist/config/validators.d.ts +163 -0
  20. package/dist/config/validators.d.ts.map +1 -0
  21. package/dist/config/validators.js +126 -0
  22. package/dist/config/validators.js.map +1 -0
  23. package/dist/errors/errors.d.ts +7 -0
  24. package/dist/errors/errors.d.ts.map +1 -0
  25. package/dist/errors/errors.js +7 -0
  26. package/dist/errors/errors.js.map +1 -0
  27. package/dist/errors/index.d.ts +2 -0
  28. package/dist/errors/index.d.ts.map +1 -0
  29. package/dist/errors/index.js +2 -0
  30. package/dist/errors/index.js.map +1 -0
  31. package/dist/http/auth-strategy.d.ts +5 -0
  32. package/dist/http/auth-strategy.d.ts.map +1 -0
  33. package/dist/http/auth-strategy.js +5 -0
  34. package/dist/http/auth-strategy.js.map +1 -0
  35. package/dist/http/fetch-adapter.d.ts +5 -0
  36. package/dist/http/fetch-adapter.d.ts.map +1 -0
  37. package/dist/http/fetch-adapter.js +2 -0
  38. package/dist/http/fetch-adapter.js.map +1 -0
  39. package/dist/http/http-client.d.ts +29 -0
  40. package/dist/http/http-client.d.ts.map +1 -0
  41. package/dist/http/http-client.js +25 -0
  42. package/dist/http/http-client.js.map +1 -0
  43. package/dist/http/index.d.ts +6 -0
  44. package/dist/http/index.d.ts.map +1 -0
  45. package/dist/http/index.js +3 -0
  46. package/dist/http/index.js.map +1 -0
  47. package/dist/index.d.ts +8 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +13 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/operations/admin.d.ts +89 -0
  52. package/dist/operations/admin.d.ts.map +1 -0
  53. package/dist/operations/admin.js +134 -0
  54. package/dist/operations/admin.js.map +1 -0
  55. package/dist/operations/analytics.d.ts +81 -0
  56. package/dist/operations/analytics.d.ts.map +1 -0
  57. package/dist/operations/analytics.js +111 -0
  58. package/dist/operations/analytics.js.map +1 -0
  59. package/dist/operations/auth.d.ts +81 -0
  60. package/dist/operations/auth.d.ts.map +1 -0
  61. package/dist/operations/auth.js +115 -0
  62. package/dist/operations/auth.js.map +1 -0
  63. package/dist/operations/index.d.ts +8 -0
  64. package/dist/operations/index.d.ts.map +1 -0
  65. package/dist/operations/index.js +8 -0
  66. package/dist/operations/index.js.map +1 -0
  67. package/dist/operations/issues.d.ts +59 -0
  68. package/dist/operations/issues.d.ts.map +1 -0
  69. package/dist/operations/issues.js +141 -0
  70. package/dist/operations/issues.js.map +1 -0
  71. package/dist/operations/projects.d.ts +56 -0
  72. package/dist/operations/projects.d.ts.map +1 -0
  73. package/dist/operations/projects.js +99 -0
  74. package/dist/operations/projects.js.map +1 -0
  75. package/dist/operations/query-utils.d.ts +20 -0
  76. package/dist/operations/query-utils.d.ts.map +1 -0
  77. package/dist/operations/query-utils.js +22 -0
  78. package/dist/operations/query-utils.js.map +1 -0
  79. package/dist/operations/runs.d.ts +53 -0
  80. package/dist/operations/runs.d.ts.map +1 -0
  81. package/dist/operations/runs.js +118 -0
  82. package/dist/operations/runs.js.map +1 -0
  83. package/dist/operations/taxonomy.d.ts +7 -0
  84. package/dist/operations/taxonomy.d.ts.map +1 -0
  85. package/dist/operations/taxonomy.js +7 -0
  86. package/dist/operations/taxonomy.js.map +1 -0
  87. package/dist/types/analytics.d.ts +338 -0
  88. package/dist/types/analytics.d.ts.map +1 -0
  89. package/dist/types/analytics.js +2 -0
  90. package/dist/types/analytics.js.map +1 -0
  91. package/dist/types/auth.d.ts +303 -0
  92. package/dist/types/auth.d.ts.map +1 -0
  93. package/dist/types/auth.js +2 -0
  94. package/dist/types/auth.js.map +1 -0
  95. package/dist/types/enums.d.ts +200 -0
  96. package/dist/types/enums.d.ts.map +1 -0
  97. package/dist/types/enums.js +222 -0
  98. package/dist/types/enums.js.map +1 -0
  99. package/dist/types/index.d.ts +10 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +16 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/dist/types/issues.d.ts +182 -0
  104. package/dist/types/issues.d.ts.map +1 -0
  105. package/dist/types/issues.js +2 -0
  106. package/dist/types/issues.js.map +1 -0
  107. package/dist/types/projects.d.ts +123 -0
  108. package/dist/types/projects.d.ts.map +1 -0
  109. package/dist/types/projects.js +2 -0
  110. package/dist/types/projects.js.map +1 -0
  111. package/dist/types/response-schemas.d.ts +3441 -0
  112. package/dist/types/response-schemas.d.ts.map +1 -0
  113. package/dist/types/response-schemas.js +388 -0
  114. package/dist/types/response-schemas.js.map +1 -0
  115. package/dist/types/responses.d.ts +84 -0
  116. package/dist/types/responses.d.ts.map +1 -0
  117. package/dist/types/responses.js +2 -0
  118. package/dist/types/responses.js.map +1 -0
  119. package/dist/types/runs.d.ts +232 -0
  120. package/dist/types/runs.d.ts.map +1 -0
  121. package/dist/types/runs.js +2 -0
  122. package/dist/types/runs.js.map +1 -0
  123. package/dist/types/schemas.d.ts +914 -0
  124. package/dist/types/schemas.d.ts.map +1 -0
  125. package/dist/types/schemas.js +280 -0
  126. package/dist/types/schemas.js.map +1 -0
  127. package/dist/utils/helpers.d.ts +64 -0
  128. package/dist/utils/helpers.d.ts.map +1 -0
  129. package/dist/utils/helpers.js +127 -0
  130. package/dist/utils/helpers.js.map +1 -0
  131. package/dist/utils/index.d.ts +3 -0
  132. package/dist/utils/index.d.ts.map +1 -0
  133. package/dist/utils/index.js +3 -0
  134. package/dist/utils/index.js.map +1 -0
  135. package/dist/utils/logger.d.ts +5 -0
  136. package/dist/utils/logger.d.ts.map +1 -0
  137. package/dist/utils/logger.js +5 -0
  138. package/dist/utils/logger.js.map +1 -0
  139. package/package.json +103 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,280 @@
1
+ import { z } from 'zod';
2
+ import { PRIORITIES, STATUSES, SEVERITIES, FAILURE_DOMAINS, ISSUE_TYPES, NOTE_TYPES, USER_ROLES, SUBSCRIPTION_TIERS, AVATAR_MIME_TYPES, FAILURE_CODE_PATTERN, } from './enums.js';
3
+ // ============================================
4
+ // SHARED SCHEMAS
5
+ // ============================================
6
+ export const UuidSchema = z.string().uuid();
7
+ export const PrioritySchema = z.enum(PRIORITIES);
8
+ export const StatusSchema = z.enum(STATUSES);
9
+ export const SeveritySchema = z.enum(SEVERITIES);
10
+ export const FailureDomainSchema = z.enum(FAILURE_DOMAINS);
11
+ export const IssueTypeSchema = z.enum(ISSUE_TYPES);
12
+ export const NoteTypeSchema = z.enum(NOTE_TYPES);
13
+ export const UserRoleSchema = z.enum(USER_ROLES);
14
+ export const SubscriptionTierSchema = z.enum(SUBSCRIPTION_TIERS);
15
+ export const AvatarMimeTypeSchema = z.enum(AVATAR_MIME_TYPES);
16
+ export const FailureCodeSchema = z.string().regex(FAILURE_CODE_PATTERN, {
17
+ message: 'Invalid failure code format. Expected: DOMAIN-MODE/SEVERITY (e.g., SEM-VAL/H)',
18
+ });
19
+ // ============================================
20
+ // AUTH SCHEMAS
21
+ // ============================================
22
+ const PasswordSchema = z
23
+ .string()
24
+ .min(8)
25
+ .max(128)
26
+ .regex(/[a-z]/, 'Password must contain at least one lowercase letter')
27
+ .regex(/[A-Z]/, 'Password must contain at least one uppercase letter')
28
+ .regex(/[0-9]/, 'Password must contain at least one digit');
29
+ export const RegisterInputSchema = z.object({
30
+ email: z.string().email().max(255),
31
+ password: PasswordSchema,
32
+ });
33
+ export const LoginInputSchema = z.object({
34
+ email: z.string().email(),
35
+ password: z.string(),
36
+ });
37
+ export const UpdateProfileInputSchema = z
38
+ .object({
39
+ username: z
40
+ .string()
41
+ .regex(/^[a-z][a-z0-9_]{2,29}$/)
42
+ .nullish(),
43
+ name: z.string().max(100).nullish(),
44
+ bio: z.string().max(500).nullish(),
45
+ timezone: z.string().nullish(),
46
+ websiteUrl: z.string().url().max(500).nullish(),
47
+ avatar: z.string().nullish(), // base64
48
+ avatarMimeType: AvatarMimeTypeSchema.nullish(),
49
+ })
50
+ .refine((data) => Object.values(data).some((v) => v !== undefined), {
51
+ message: 'At least one field must be provided',
52
+ });
53
+ export const ChangePasswordInputSchema = z.object({
54
+ currentPassword: z.string(),
55
+ newPassword: PasswordSchema,
56
+ });
57
+ export const ResetPasswordInputSchema = z.object({
58
+ token: z.string(),
59
+ password: PasswordSchema,
60
+ });
61
+ export const CreateApiKeyInputSchema = z.object({
62
+ name: z.string().max(100).optional(),
63
+ expiresAt: z.string().datetime().optional(),
64
+ });
65
+ // ============================================
66
+ // PROJECT SCHEMAS
67
+ // ============================================
68
+ export const CreateProjectInputSchema = z.object({
69
+ name: z.string().min(1).max(200),
70
+ });
71
+ export const UpdateProjectInputSchema = z.object({
72
+ name: z.string().min(1).max(200).optional(),
73
+ });
74
+ export const DeleteProjectInputSchema = z.object({
75
+ confirm: z.literal(true),
76
+ confirmationPhrase: z.string(),
77
+ });
78
+ export const RenameProjectInputSchema = z.object({
79
+ oldName: z.string().min(1),
80
+ newName: z.string().min(1).max(200),
81
+ });
82
+ // ============================================
83
+ // RUN SCHEMAS
84
+ // ============================================
85
+ export const TokenUsageSchema = z.object({
86
+ inputTokens: z.number().int().nonnegative(),
87
+ outputTokens: z.number().int().nonnegative(),
88
+ cacheCreationTokens: z.number().int().nonnegative().optional(),
89
+ cacheReadTokens: z.number().int().nonnegative().optional(),
90
+ totalEffectiveTokens: z.number().int().nonnegative().optional(),
91
+ });
92
+ export const ValidatorInputSchema = z.object({
93
+ name: z.string().min(1).max(100),
94
+ score: z.number().min(0).max(100),
95
+ maxScore: z.number().min(0).max(100).optional(),
96
+ status: z.string().min(1).max(50),
97
+ model: z.string().max(50).optional(),
98
+ tokens: TokenUsageSchema.optional(),
99
+ durationMs: z.number().int().nonnegative().optional(),
100
+ });
101
+ export const RecommendationInputSchema = z.object({
102
+ validator: z.string().min(1).max(100),
103
+ title: z.string().min(1).max(500),
104
+ priority: PrioritySchema,
105
+ type: IssueTypeSchema.optional(),
106
+ severity: SeveritySchema.optional(),
107
+ failureCode: FailureCodeSchema.optional(),
108
+ failureDomain: FailureDomainSchema.optional(),
109
+ failureMode: z.string().max(50).optional(),
110
+ category: z.string().max(100).optional(),
111
+ filePath: z.string().max(1000).optional(),
112
+ lineNumber: z.number().int().nonnegative().optional(),
113
+ description: z.string().max(10000).optional(),
114
+ classificationConfidence: z.enum(['high', 'medium', 'low']).optional(),
115
+ classifiedBy: z.enum(['validator', 'classifier', 'human']).optional(),
116
+ secondaryFailureCodes: z.array(z.string()).optional(),
117
+ taxonomyVersion: z.string().optional(),
118
+ });
119
+ export const SaveFeaturesListInputSchema = z.object({
120
+ project: z.string().min(1).max(200),
121
+ workflowType: z.string().min(1).max(100),
122
+ validators: z.array(ValidatorInputSchema).min(1),
123
+ recommendations: z.array(RecommendationInputSchema),
124
+ timestamp: z.string().datetime().optional(),
125
+ rawMarkdown: z.string().optional(),
126
+ summary: z
127
+ .object({
128
+ allGatesPassed: z.boolean().optional(),
129
+ averageScore: z.number().min(0).max(100).optional(),
130
+ })
131
+ .optional(),
132
+ idempotencyKey: z.string().max(100).optional(),
133
+ });
134
+ export const ArchiveRunsInputSchema = z.object({
135
+ project: z.string().min(1),
136
+ beforeRunNumber: z.number().int().positive().optional(),
137
+ beforeDate: z.string().datetime().optional(),
138
+ keepLast: z.number().int().positive().optional(),
139
+ reason: z.string().max(500).optional(),
140
+ });
141
+ // ============================================
142
+ // ISSUE SCHEMAS
143
+ // ============================================
144
+ export const CreateUserIssueInputSchema = z.object({
145
+ project: z.string().min(1).max(200),
146
+ title: z.string().min(1).max(500),
147
+ priority: PrioritySchema,
148
+ severity: SeveritySchema.optional(),
149
+ category: z.string().max(100).optional(),
150
+ description: z.string().max(10000).optional(),
151
+ filePath: z.string().max(1000).optional(),
152
+ lineNumber: z.number().int().nonnegative().optional(),
153
+ failureCode: FailureCodeSchema.optional(),
154
+ failureDomain: FailureDomainSchema.optional(),
155
+ failureMode: z.string().max(50).optional(),
156
+ validator: z.string().min(1).max(100).optional(),
157
+ type: IssueTypeSchema.optional(),
158
+ });
159
+ export const UpdateIssueInputSchema = z.object({
160
+ title: z.string().min(1).max(500).optional(),
161
+ status: StatusSchema.optional(),
162
+ priority: PrioritySchema.optional(),
163
+ severity: SeveritySchema.nullish(),
164
+ failureCode: FailureCodeSchema.nullish(),
165
+ failureDomain: FailureDomainSchema.nullish(),
166
+ failureMode: z.string().max(50).nullish(),
167
+ category: z.string().max(100).nullish(),
168
+ type: IssueTypeSchema.nullish(),
169
+ filePath: z.string().max(1000).nullish(),
170
+ lineNumber: z.number().int().nonnegative().nullish(),
171
+ });
172
+ export const UpdateIssueStatusInputSchema = z.object({
173
+ status: StatusSchema,
174
+ reason: z.string().max(500).optional(),
175
+ });
176
+ export const CreateIssueNoteInputSchema = z.object({
177
+ content: z.string().min(1).max(10000),
178
+ noteType: NoteTypeSchema.optional(),
179
+ createdBy: z.string().max(200).optional(),
180
+ });
181
+ export const BulkStatusUpdateItemSchema = z.object({
182
+ issueId: UuidSchema.optional(),
183
+ id: UuidSchema.optional(),
184
+ status: StatusSchema,
185
+ reason: z.string().max(500).optional(),
186
+ });
187
+ export const BulkStatusUpdateInputSchema = z.object({
188
+ updates: z.array(BulkStatusUpdateItemSchema).min(1).max(100),
189
+ });
190
+ // ============================================
191
+ // QUERY SCHEMAS
192
+ // ============================================
193
+ export const ListIssuesQuerySchema = z.object({
194
+ status: StatusSchema.optional(),
195
+ priority: PrioritySchema.optional(),
196
+ severity: SeveritySchema.optional(),
197
+ failureDomain: FailureDomainSchema.optional(),
198
+ validator: z.string().optional(),
199
+ limit: z.coerce.number().int().min(1).max(100).optional(),
200
+ offset: z.coerce.number().int().nonnegative().optional(),
201
+ includeResolved: z.coerce.boolean().optional(),
202
+ minTimesSeen: z.coerce.number().int().positive().optional(),
203
+ dateStart: z.string().datetime().optional(),
204
+ dateEnd: z.string().datetime().optional(),
205
+ });
206
+ export const IssueSearchQuerySchema = z.object({
207
+ query: z.string().optional(),
208
+ projects: z.array(z.string()).optional(),
209
+ validators: z.array(z.string()).optional(),
210
+ status: z.union([StatusSchema, z.literal('all')]).optional(),
211
+ priority: z.union([PrioritySchema, z.literal('all')]).optional(),
212
+ severities: z.array(SeveritySchema).optional(),
213
+ failureDomains: z.array(FailureDomainSchema).optional(),
214
+ limit: z.coerce.number().int().min(1).max(100).optional(),
215
+ });
216
+ export const AnalyticsQuerySchema = z.object({
217
+ project: z.string().optional(),
218
+ days: z.coerce.number().int().min(1).max(365).optional(),
219
+ limit: z.coerce.number().int().min(1).max(100).optional(),
220
+ });
221
+ export const BurndownQuerySchema = AnalyticsQuerySchema.extend({
222
+ granularity: z.enum(['daily', 'weekly']).optional(),
223
+ });
224
+ export const VelocityQuerySchema = AnalyticsQuerySchema.extend({
225
+ alertThreshold: z.coerce.number().int().min(10).max(500).optional(),
226
+ });
227
+ export const DiscoveryQuerySchema = AnalyticsQuerySchema.extend({
228
+ groupBy: z.enum(['day', 'week', 'month']).optional(),
229
+ });
230
+ export const ValidatorMatrixQuerySchema = AnalyticsQuerySchema.extend({
231
+ minIssues: z.coerce.number().int().min(1).max(1000).optional(),
232
+ });
233
+ // ============================================
234
+ // ADMIN SCHEMAS
235
+ // ============================================
236
+ export const AdminCreateUserInputSchema = z.object({
237
+ email: z.string().email().max(255),
238
+ password: PasswordSchema.optional(),
239
+ role: UserRoleSchema,
240
+ subscriptionTier: SubscriptionTierSchema,
241
+ sendWelcomeEmail: z.boolean().optional(),
242
+ });
243
+ export const AdminUpdateUserInputSchema = z
244
+ .object({
245
+ email: z.string().email().max(255).optional(),
246
+ role: UserRoleSchema.optional(),
247
+ subscriptionTier: SubscriptionTierSchema.optional(),
248
+ })
249
+ .refine((data) => Object.values(data).some((v) => v !== undefined), {
250
+ message: 'At least one field must be provided',
251
+ });
252
+ export const BulkDeactivateInputSchema = z.object({
253
+ userIds: z.array(UuidSchema).min(1).max(50),
254
+ });
255
+ export const ListUsersQuerySchema = z.object({
256
+ search: z.string().optional(),
257
+ role: z.union([UserRoleSchema, z.array(UserRoleSchema)]).optional(),
258
+ subscriptionTier: z.union([SubscriptionTierSchema, z.array(SubscriptionTierSchema)]).optional(),
259
+ isActive: z.coerce.boolean().optional(),
260
+ sortBy: z.enum(['email', 'createdAt', 'updatedAt', 'role']).optional(),
261
+ sortOrder: z.enum(['asc', 'desc']).optional(),
262
+ page: z.coerce.number().int().positive().optional(),
263
+ limit: z.coerce.number().int().min(1).max(100).optional(),
264
+ });
265
+ export const ListSessionsQuerySchema = z.object({
266
+ userId: UuidSchema.optional(),
267
+ sortBy: z.enum(['createdAt', 'lastActiveAt', 'expiresAt']).optional(),
268
+ sortOrder: z.enum(['asc', 'desc']).optional(),
269
+ page: z.coerce.number().int().positive().optional(),
270
+ limit: z.coerce.number().int().min(1).max(100).optional(),
271
+ });
272
+ export const ListKeysQuerySchema = z.object({
273
+ userId: UuidSchema.optional(),
274
+ search: z.string().max(100).optional(),
275
+ sortBy: z.enum(['createdAt', 'lastUsedAt', 'expiresAt']).optional(),
276
+ sortOrder: z.enum(['asc', 'desc']).optional(),
277
+ page: z.coerce.number().int().positive().optional(),
278
+ limit: z.coerce.number().int().min(1).max(100).optional(),
279
+ });
280
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/types/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Utility functions for @uluops/ops-sdk
3
+ *
4
+ * Shared utilities are re-exported from @uluops/sdk-core.
5
+ * SDK-specific utilities are defined here.
6
+ */
7
+ export { sleep, retry, truncate, isPlainObject, isUuid } from '@uluops/sdk-core/utils';
8
+ /**
9
+ * Deep merge two objects, recursively merging nested objects
10
+ * @param target - Base object to merge into
11
+ * @param source - Object with values to overlay
12
+ * @returns New merged object (does not mutate inputs)
13
+ */
14
+ export declare function deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T;
15
+ /**
16
+ * Pick specified keys from an object
17
+ * @param obj - Source object
18
+ * @param keys - Keys to include in the result
19
+ * @returns New object containing only the specified keys
20
+ */
21
+ export declare function pick<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
22
+ /**
23
+ * Omit specified keys from an object
24
+ * @param obj - Source object
25
+ * @param keys - Keys to exclude from the result
26
+ * @returns New object without the specified keys
27
+ */
28
+ export declare function omit<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
29
+ /**
30
+ * Remove undefined values from an object
31
+ * @param obj - Source object to compact
32
+ * @returns New object with undefined values removed
33
+ */
34
+ export declare function compact<T extends Record<string, unknown>>(obj: T): Partial<T>;
35
+ /**
36
+ * Format a date for display as an ISO 8601 string
37
+ * @param date - Date object or date string to format
38
+ * @returns ISO 8601 formatted date string
39
+ */
40
+ export declare function formatDate(date: string | Date): string;
41
+ /**
42
+ * Convert camelCase to snake_case
43
+ * @param str - camelCase string to convert
44
+ * @returns snake_case formatted string
45
+ */
46
+ export declare function toSnakeCase(str: string): string;
47
+ /**
48
+ * Convert snake_case to camelCase
49
+ * @param str - snake_case string to convert
50
+ * @returns camelCase formatted string
51
+ */
52
+ export declare function toCamelCase(str: string): string;
53
+ /**
54
+ * Get a property from an object, trying camelCase first then snake_case
55
+ * Useful for handling API responses that may use either format
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const count = getFlexibleProperty(response, 'newIssues', 0);
60
+ * // Tries response.newIssues, then response.new_issues, then returns 0
61
+ * ```
62
+ */
63
+ export declare function getFlexibleProperty<T>(obj: object, camelCaseKey: string, defaultValue: T): T;
64
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAYvF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CAeH;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACvE,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EAAE,GACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAUZ;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACvE,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EAAE,GACR,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAQZ;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAU7E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,CAAC,GACd,CAAC,CAYH"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Utility functions for @uluops/ops-sdk
3
+ *
4
+ * Shared utilities are re-exported from @uluops/sdk-core.
5
+ * SDK-specific utilities are defined here.
6
+ */
7
+ // Re-export shared utilities from sdk-core
8
+ export { sleep, retry, truncate, isPlainObject, isUuid } from '@uluops/sdk-core/utils';
9
+ // ---- SDK-specific utilities ----
10
+ /**
11
+ * Check if a value is a plain object (local copy for deepMerge to avoid
12
+ * importing the re-exported version which could cause issues)
13
+ */
14
+ function isObj(value) {
15
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
16
+ }
17
+ /**
18
+ * Deep merge two objects, recursively merging nested objects
19
+ * @param target - Base object to merge into
20
+ * @param source - Object with values to overlay
21
+ * @returns New merged object (does not mutate inputs)
22
+ */
23
+ export function deepMerge(target, source) {
24
+ const result = { ...target };
25
+ for (const key of Object.keys(source)) {
26
+ const sourceValue = source[key];
27
+ const targetValue = result[key];
28
+ if (isObj(sourceValue) && isObj(targetValue)) {
29
+ result[key] = deepMerge(targetValue, sourceValue);
30
+ }
31
+ else if (sourceValue !== undefined) {
32
+ result[key] = sourceValue;
33
+ }
34
+ }
35
+ return result;
36
+ }
37
+ /**
38
+ * Pick specified keys from an object
39
+ * @param obj - Source object
40
+ * @param keys - Keys to include in the result
41
+ * @returns New object containing only the specified keys
42
+ */
43
+ export function pick(obj, keys) {
44
+ const result = {};
45
+ for (const key of keys) {
46
+ if (key in obj) {
47
+ result[key] = obj[key];
48
+ }
49
+ }
50
+ return result;
51
+ }
52
+ /**
53
+ * Omit specified keys from an object
54
+ * @param obj - Source object
55
+ * @param keys - Keys to exclude from the result
56
+ * @returns New object without the specified keys
57
+ */
58
+ export function omit(obj, keys) {
59
+ const result = { ...obj };
60
+ for (const key of keys) {
61
+ delete result[key];
62
+ }
63
+ return result;
64
+ }
65
+ /**
66
+ * Remove undefined values from an object
67
+ * @param obj - Source object to compact
68
+ * @returns New object with undefined values removed
69
+ */
70
+ export function compact(obj) {
71
+ const result = {};
72
+ for (const [key, value] of Object.entries(obj)) {
73
+ if (value !== undefined) {
74
+ result[key] = value;
75
+ }
76
+ }
77
+ return result;
78
+ }
79
+ /**
80
+ * Format a date for display as an ISO 8601 string
81
+ * @param date - Date object or date string to format
82
+ * @returns ISO 8601 formatted date string
83
+ */
84
+ export function formatDate(date) {
85
+ const d = typeof date === 'string' ? new Date(date) : date;
86
+ return d.toISOString();
87
+ }
88
+ /**
89
+ * Convert camelCase to snake_case
90
+ * @param str - camelCase string to convert
91
+ * @returns snake_case formatted string
92
+ */
93
+ export function toSnakeCase(str) {
94
+ return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
95
+ }
96
+ /**
97
+ * Convert snake_case to camelCase
98
+ * @param str - snake_case string to convert
99
+ * @returns camelCase formatted string
100
+ */
101
+ export function toCamelCase(str) {
102
+ return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
103
+ }
104
+ /**
105
+ * Get a property from an object, trying camelCase first then snake_case
106
+ * Useful for handling API responses that may use either format
107
+ *
108
+ * @example
109
+ * ```typescript
110
+ * const count = getFlexibleProperty(response, 'newIssues', 0);
111
+ * // Tries response.newIssues, then response.new_issues, then returns 0
112
+ * ```
113
+ */
114
+ export function getFlexibleProperty(obj, camelCaseKey, defaultValue) {
115
+ const record = obj;
116
+ // Try camelCase first
117
+ if (camelCaseKey in record && record[camelCaseKey] !== undefined) {
118
+ return record[camelCaseKey];
119
+ }
120
+ // Try snake_case
121
+ const snakeKey = toSnakeCase(camelCaseKey);
122
+ if (snakeKey in record && record[snakeKey] !== undefined) {
123
+ return record[snakeKey];
124
+ }
125
+ return defaultValue;
126
+ }
127
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { createLogger, redactSensitive, sanitizeForDisplay, sanitizeForLog, type Logger, } from './logger.js';
2
+ export * from './helpers.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,KAAK,MAAM,GACZ,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createLogger, redactSensitive, sanitizeForDisplay, sanitizeForLog, } from './logger.js';
2
+ export * from './helpers.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,GAEf,MAAM,aAAa,CAAC;AACrB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Logger re-exported from @uluops/sdk-core
3
+ */
4
+ export { createLogger, redactSensitive, sanitizeForDisplay, sanitizeForLog, type Logger, } from '@uluops/sdk-core/utils';
5
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,KAAK,MAAM,GACZ,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Logger re-exported from @uluops/sdk-core
3
+ */
4
+ export { createLogger, redactSensitive, sanitizeForDisplay, sanitizeForLog, } from '@uluops/sdk-core/utils';
5
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,cAAc,GAEf,MAAM,wBAAwB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,103 @@
1
+ {
2
+ "name": "@uluops/ops-sdk",
3
+ "version": "0.1.0",
4
+ "description": "SDK for the UluOps validation tracker API",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./types": {
14
+ "import": "./dist/types/index.js",
15
+ "types": "./dist/types/index.d.ts"
16
+ },
17
+ "./types/enums": {
18
+ "import": "./dist/types/enums.js",
19
+ "types": "./dist/types/enums.d.ts"
20
+ },
21
+ "./types/auth": {
22
+ "import": "./dist/types/auth.js",
23
+ "types": "./dist/types/auth.d.ts"
24
+ },
25
+ "./types/projects": {
26
+ "import": "./dist/types/projects.js",
27
+ "types": "./dist/types/projects.d.ts"
28
+ },
29
+ "./types/runs": {
30
+ "import": "./dist/types/runs.js",
31
+ "types": "./dist/types/runs.d.ts"
32
+ },
33
+ "./types/issues": {
34
+ "import": "./dist/types/issues.js",
35
+ "types": "./dist/types/issues.d.ts"
36
+ },
37
+ "./types/analytics": {
38
+ "import": "./dist/types/analytics.js",
39
+ "types": "./dist/types/analytics.d.ts"
40
+ },
41
+ "./types/responses": {
42
+ "import": "./dist/types/responses.js",
43
+ "types": "./dist/types/responses.d.ts"
44
+ },
45
+ "./types/schemas": {
46
+ "import": "./dist/types/schemas.js",
47
+ "types": "./dist/types/schemas.d.ts"
48
+ },
49
+ "./errors": {
50
+ "import": "./dist/errors/index.js",
51
+ "types": "./dist/errors/index.d.ts"
52
+ },
53
+ "./config": {
54
+ "import": "./dist/config/index.js",
55
+ "types": "./dist/config/index.d.ts"
56
+ }
57
+ },
58
+ "files": [
59
+ "dist"
60
+ ],
61
+ "scripts": {
62
+ "build": "tsc",
63
+ "typecheck": "tsc --noEmit",
64
+ "test": "vitest run",
65
+ "test:watch": "vitest watch",
66
+ "test:coverage": "vitest run --coverage",
67
+ "lint": "eslint src/",
68
+ "prepublishOnly": "npm run build"
69
+ },
70
+ "keywords": [
71
+ "uluops",
72
+ "validation",
73
+ "tracker",
74
+ "sdk",
75
+ "api"
76
+ ],
77
+ "author": "Uluops <engineering@uluops.com>",
78
+ "license": "MIT",
79
+ "repository": {
80
+ "type": "git",
81
+ "url": "git+https://github.com/Uluops/-uluops-ops-sdk.git"
82
+ },
83
+ "dependencies": {
84
+ "@uluops/sdk-core": "^0.1.0",
85
+ "zod": "^3.24.1"
86
+ },
87
+ "devDependencies": {
88
+ "@types/node": "^22.12.0",
89
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
90
+ "@typescript-eslint/parser": "^8.54.0",
91
+ "eslint": "^9.39.2",
92
+ "nock": "^14.0.1",
93
+ "typescript": "^5.7.3",
94
+ "typescript-eslint": "^8.54.0",
95
+ "vitest": "^3.0.4"
96
+ },
97
+ "publishConfig": {
98
+ "access": "restricted"
99
+ },
100
+ "engines": {
101
+ "node": ">=18.0.0"
102
+ }
103
+ }