@parsrun/core 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.
@@ -0,0 +1,261 @@
1
+ // src/error-codes.ts
2
+ var ErrorCodes = {
3
+ // ============================================================================
4
+ // Authentication Errors (401, 403, 423)
5
+ // ============================================================================
6
+ AUTH_ERROR: {
7
+ code: "AUTH_ERROR",
8
+ status: 401,
9
+ category: "auth"
10
+ },
11
+ UNAUTHORIZED: {
12
+ code: "UNAUTHORIZED",
13
+ status: 401,
14
+ category: "auth"
15
+ },
16
+ FORBIDDEN: {
17
+ code: "FORBIDDEN",
18
+ status: 403,
19
+ category: "auth"
20
+ },
21
+ INVALID_CREDENTIALS: {
22
+ code: "INVALID_CREDENTIALS",
23
+ status: 401,
24
+ category: "auth"
25
+ },
26
+ SESSION_EXPIRED: {
27
+ code: "SESSION_EXPIRED",
28
+ status: 401,
29
+ category: "auth"
30
+ },
31
+ TOKEN_EXPIRED: {
32
+ code: "TOKEN_EXPIRED",
33
+ status: 401,
34
+ category: "auth"
35
+ },
36
+ TOKEN_INVALID: {
37
+ code: "TOKEN_INVALID",
38
+ status: 401,
39
+ category: "auth"
40
+ },
41
+ TWO_FACTOR_REQUIRED: {
42
+ code: "TWO_FACTOR_REQUIRED",
43
+ status: 403,
44
+ category: "auth"
45
+ },
46
+ TWO_FACTOR_INVALID: {
47
+ code: "TWO_FACTOR_INVALID",
48
+ status: 401,
49
+ category: "auth"
50
+ },
51
+ ACCOUNT_LOCKED: {
52
+ code: "ACCOUNT_LOCKED",
53
+ status: 423,
54
+ category: "auth"
55
+ },
56
+ ACCOUNT_DISABLED: {
57
+ code: "ACCOUNT_DISABLED",
58
+ status: 403,
59
+ category: "auth"
60
+ },
61
+ PASSWORD_RESET_REQUIRED: {
62
+ code: "PASSWORD_RESET_REQUIRED",
63
+ status: 403,
64
+ category: "auth"
65
+ },
66
+ // ============================================================================
67
+ // Tenant Errors (400, 403, 404)
68
+ // ============================================================================
69
+ TENANT_ERROR: {
70
+ code: "TENANT_ERROR",
71
+ status: 400,
72
+ category: "tenant"
73
+ },
74
+ TENANT_NOT_FOUND: {
75
+ code: "TENANT_NOT_FOUND",
76
+ status: 404,
77
+ category: "tenant"
78
+ },
79
+ TENANT_SUSPENDED: {
80
+ code: "TENANT_SUSPENDED",
81
+ status: 403,
82
+ category: "tenant"
83
+ },
84
+ TENANT_LIMIT_EXCEEDED: {
85
+ code: "TENANT_LIMIT_EXCEEDED",
86
+ status: 403,
87
+ category: "tenant"
88
+ },
89
+ MEMBERSHIP_ERROR: {
90
+ code: "MEMBERSHIP_ERROR",
91
+ status: 400,
92
+ category: "tenant"
93
+ },
94
+ MEMBERSHIP_NOT_FOUND: {
95
+ code: "MEMBERSHIP_NOT_FOUND",
96
+ status: 404,
97
+ category: "tenant"
98
+ },
99
+ MEMBERSHIP_EXPIRED: {
100
+ code: "MEMBERSHIP_EXPIRED",
101
+ status: 403,
102
+ category: "tenant"
103
+ },
104
+ // ============================================================================
105
+ // Validation Errors (400, 422)
106
+ // ============================================================================
107
+ VALIDATION_ERROR: {
108
+ code: "VALIDATION_ERROR",
109
+ status: 400,
110
+ category: "validation"
111
+ },
112
+ BAD_REQUEST: {
113
+ code: "BAD_REQUEST",
114
+ status: 400,
115
+ category: "validation"
116
+ },
117
+ INVALID_INPUT: {
118
+ code: "INVALID_INPUT",
119
+ status: 422,
120
+ category: "validation"
121
+ },
122
+ MISSING_REQUIRED_FIELD: {
123
+ code: "MISSING_REQUIRED_FIELD",
124
+ status: 400,
125
+ category: "validation"
126
+ },
127
+ INVALID_FORMAT: {
128
+ code: "INVALID_FORMAT",
129
+ status: 400,
130
+ category: "validation"
131
+ },
132
+ // ============================================================================
133
+ // Resource Errors (404, 409, 410)
134
+ // ============================================================================
135
+ NOT_FOUND: {
136
+ code: "NOT_FOUND",
137
+ status: 404,
138
+ category: "resource"
139
+ },
140
+ CONFLICT: {
141
+ code: "CONFLICT",
142
+ status: 409,
143
+ category: "resource"
144
+ },
145
+ DUPLICATE: {
146
+ code: "DUPLICATE",
147
+ status: 409,
148
+ category: "resource"
149
+ },
150
+ GONE: {
151
+ code: "GONE",
152
+ status: 410,
153
+ category: "resource"
154
+ },
155
+ RESOURCE_LOCKED: {
156
+ code: "RESOURCE_LOCKED",
157
+ status: 423,
158
+ category: "resource"
159
+ },
160
+ // ============================================================================
161
+ // Rate Limiting (429)
162
+ // ============================================================================
163
+ RATE_LIMIT_EXCEEDED: {
164
+ code: "RATE_LIMIT_EXCEEDED",
165
+ status: 429,
166
+ category: "rate_limit",
167
+ retryable: true
168
+ },
169
+ QUOTA_EXCEEDED: {
170
+ code: "QUOTA_EXCEEDED",
171
+ status: 429,
172
+ category: "rate_limit"
173
+ },
174
+ // ============================================================================
175
+ // Server Errors (500, 502, 503, 504)
176
+ // ============================================================================
177
+ INTERNAL_ERROR: {
178
+ code: "INTERNAL_ERROR",
179
+ status: 500,
180
+ category: "server"
181
+ },
182
+ BAD_GATEWAY: {
183
+ code: "BAD_GATEWAY",
184
+ status: 502,
185
+ category: "server",
186
+ retryable: true
187
+ },
188
+ SERVICE_UNAVAILABLE: {
189
+ code: "SERVICE_UNAVAILABLE",
190
+ status: 503,
191
+ category: "server",
192
+ retryable: true
193
+ },
194
+ GATEWAY_TIMEOUT: {
195
+ code: "GATEWAY_TIMEOUT",
196
+ status: 504,
197
+ category: "server",
198
+ retryable: true
199
+ },
200
+ // ============================================================================
201
+ // Database Errors (500)
202
+ // ============================================================================
203
+ DATABASE_ERROR: {
204
+ code: "DATABASE_ERROR",
205
+ status: 500,
206
+ category: "database"
207
+ },
208
+ CONNECTION_ERROR: {
209
+ code: "CONNECTION_ERROR",
210
+ status: 503,
211
+ category: "database",
212
+ retryable: true
213
+ },
214
+ TRANSACTION_ERROR: {
215
+ code: "TRANSACTION_ERROR",
216
+ status: 500,
217
+ category: "database"
218
+ },
219
+ RLS_ERROR: {
220
+ code: "RLS_ERROR",
221
+ status: 500,
222
+ category: "database"
223
+ },
224
+ // ============================================================================
225
+ // External Service Errors (502, 503)
226
+ // ============================================================================
227
+ EXTERNAL_SERVICE_ERROR: {
228
+ code: "EXTERNAL_SERVICE_ERROR",
229
+ status: 502,
230
+ category: "external",
231
+ retryable: true
232
+ },
233
+ EXTERNAL_TIMEOUT: {
234
+ code: "EXTERNAL_TIMEOUT",
235
+ status: 504,
236
+ category: "external",
237
+ retryable: true
238
+ }
239
+ };
240
+ function getErrorCode(code) {
241
+ return ErrorCodes[code];
242
+ }
243
+ function getErrorCodesByCategory(category) {
244
+ return Object.values(ErrorCodes).filter((e) => e.category === category);
245
+ }
246
+ function isRetryableError(code) {
247
+ const errorCode = getErrorCode(code);
248
+ return errorCode?.retryable === true;
249
+ }
250
+ function getStatusForCode(code) {
251
+ const errorCode = getErrorCode(code);
252
+ return errorCode?.status ?? 500;
253
+ }
254
+ export {
255
+ ErrorCodes,
256
+ getErrorCode,
257
+ getErrorCodesByCategory,
258
+ getStatusForCode,
259
+ isRetryableError
260
+ };
261
+ //# sourceMappingURL=error-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/error-codes.ts"],"sourcesContent":["/**\n * @parsrun/core - Error Code Catalog\n * Centralized error code definitions for the entire framework\n */\n\n/**\n * Error category for grouping and filtering\n */\nexport type ErrorCategory =\n | \"auth\"\n | \"tenant\"\n | \"validation\"\n | \"resource\"\n | \"rate_limit\"\n | \"server\"\n | \"database\"\n | \"external\";\n\n/**\n * Error code definition\n */\nexport interface ErrorCodeDefinition {\n readonly code: string;\n readonly status: number;\n readonly category: ErrorCategory;\n readonly retryable?: boolean;\n}\n\n/**\n * Centralized error code catalog\n * All error codes used throughout the framework are defined here\n */\nexport const ErrorCodes = {\n // ============================================================================\n // Authentication Errors (401, 403, 423)\n // ============================================================================\n AUTH_ERROR: {\n code: \"AUTH_ERROR\",\n status: 401,\n category: \"auth\",\n },\n UNAUTHORIZED: {\n code: \"UNAUTHORIZED\",\n status: 401,\n category: \"auth\",\n },\n FORBIDDEN: {\n code: \"FORBIDDEN\",\n status: 403,\n category: \"auth\",\n },\n INVALID_CREDENTIALS: {\n code: \"INVALID_CREDENTIALS\",\n status: 401,\n category: \"auth\",\n },\n SESSION_EXPIRED: {\n code: \"SESSION_EXPIRED\",\n status: 401,\n category: \"auth\",\n },\n TOKEN_EXPIRED: {\n code: \"TOKEN_EXPIRED\",\n status: 401,\n category: \"auth\",\n },\n TOKEN_INVALID: {\n code: \"TOKEN_INVALID\",\n status: 401,\n category: \"auth\",\n },\n TWO_FACTOR_REQUIRED: {\n code: \"TWO_FACTOR_REQUIRED\",\n status: 403,\n category: \"auth\",\n },\n TWO_FACTOR_INVALID: {\n code: \"TWO_FACTOR_INVALID\",\n status: 401,\n category: \"auth\",\n },\n ACCOUNT_LOCKED: {\n code: \"ACCOUNT_LOCKED\",\n status: 423,\n category: \"auth\",\n },\n ACCOUNT_DISABLED: {\n code: \"ACCOUNT_DISABLED\",\n status: 403,\n category: \"auth\",\n },\n PASSWORD_RESET_REQUIRED: {\n code: \"PASSWORD_RESET_REQUIRED\",\n status: 403,\n category: \"auth\",\n },\n\n // ============================================================================\n // Tenant Errors (400, 403, 404)\n // ============================================================================\n TENANT_ERROR: {\n code: \"TENANT_ERROR\",\n status: 400,\n category: \"tenant\",\n },\n TENANT_NOT_FOUND: {\n code: \"TENANT_NOT_FOUND\",\n status: 404,\n category: \"tenant\",\n },\n TENANT_SUSPENDED: {\n code: \"TENANT_SUSPENDED\",\n status: 403,\n category: \"tenant\",\n },\n TENANT_LIMIT_EXCEEDED: {\n code: \"TENANT_LIMIT_EXCEEDED\",\n status: 403,\n category: \"tenant\",\n },\n MEMBERSHIP_ERROR: {\n code: \"MEMBERSHIP_ERROR\",\n status: 400,\n category: \"tenant\",\n },\n MEMBERSHIP_NOT_FOUND: {\n code: \"MEMBERSHIP_NOT_FOUND\",\n status: 404,\n category: \"tenant\",\n },\n MEMBERSHIP_EXPIRED: {\n code: \"MEMBERSHIP_EXPIRED\",\n status: 403,\n category: \"tenant\",\n },\n\n // ============================================================================\n // Validation Errors (400, 422)\n // ============================================================================\n VALIDATION_ERROR: {\n code: \"VALIDATION_ERROR\",\n status: 400,\n category: \"validation\",\n },\n BAD_REQUEST: {\n code: \"BAD_REQUEST\",\n status: 400,\n category: \"validation\",\n },\n INVALID_INPUT: {\n code: \"INVALID_INPUT\",\n status: 422,\n category: \"validation\",\n },\n MISSING_REQUIRED_FIELD: {\n code: \"MISSING_REQUIRED_FIELD\",\n status: 400,\n category: \"validation\",\n },\n INVALID_FORMAT: {\n code: \"INVALID_FORMAT\",\n status: 400,\n category: \"validation\",\n },\n\n // ============================================================================\n // Resource Errors (404, 409, 410)\n // ============================================================================\n NOT_FOUND: {\n code: \"NOT_FOUND\",\n status: 404,\n category: \"resource\",\n },\n CONFLICT: {\n code: \"CONFLICT\",\n status: 409,\n category: \"resource\",\n },\n DUPLICATE: {\n code: \"DUPLICATE\",\n status: 409,\n category: \"resource\",\n },\n GONE: {\n code: \"GONE\",\n status: 410,\n category: \"resource\",\n },\n RESOURCE_LOCKED: {\n code: \"RESOURCE_LOCKED\",\n status: 423,\n category: \"resource\",\n },\n\n // ============================================================================\n // Rate Limiting (429)\n // ============================================================================\n RATE_LIMIT_EXCEEDED: {\n code: \"RATE_LIMIT_EXCEEDED\",\n status: 429,\n category: \"rate_limit\",\n retryable: true,\n },\n QUOTA_EXCEEDED: {\n code: \"QUOTA_EXCEEDED\",\n status: 429,\n category: \"rate_limit\",\n },\n\n // ============================================================================\n // Server Errors (500, 502, 503, 504)\n // ============================================================================\n INTERNAL_ERROR: {\n code: \"INTERNAL_ERROR\",\n status: 500,\n category: \"server\",\n },\n BAD_GATEWAY: {\n code: \"BAD_GATEWAY\",\n status: 502,\n category: \"server\",\n retryable: true,\n },\n SERVICE_UNAVAILABLE: {\n code: \"SERVICE_UNAVAILABLE\",\n status: 503,\n category: \"server\",\n retryable: true,\n },\n GATEWAY_TIMEOUT: {\n code: \"GATEWAY_TIMEOUT\",\n status: 504,\n category: \"server\",\n retryable: true,\n },\n\n // ============================================================================\n // Database Errors (500)\n // ============================================================================\n DATABASE_ERROR: {\n code: \"DATABASE_ERROR\",\n status: 500,\n category: \"database\",\n },\n CONNECTION_ERROR: {\n code: \"CONNECTION_ERROR\",\n status: 503,\n category: \"database\",\n retryable: true,\n },\n TRANSACTION_ERROR: {\n code: \"TRANSACTION_ERROR\",\n status: 500,\n category: \"database\",\n },\n RLS_ERROR: {\n code: \"RLS_ERROR\",\n status: 500,\n category: \"database\",\n },\n\n // ============================================================================\n // External Service Errors (502, 503)\n // ============================================================================\n EXTERNAL_SERVICE_ERROR: {\n code: \"EXTERNAL_SERVICE_ERROR\",\n status: 502,\n category: \"external\",\n retryable: true,\n },\n EXTERNAL_TIMEOUT: {\n code: \"EXTERNAL_TIMEOUT\",\n status: 504,\n category: \"external\",\n retryable: true,\n },\n} as const;\n\n/**\n * Error code type (union of all error code keys)\n */\nexport type ErrorCode = keyof typeof ErrorCodes;\n\n/**\n * Get error code definition by code string\n */\nexport function getErrorCode(code: string): ErrorCodeDefinition | undefined {\n return (ErrorCodes as Record<string, ErrorCodeDefinition>)[code];\n}\n\n/**\n * Get all error codes by category\n */\nexport function getErrorCodesByCategory(\n category: ErrorCategory\n): ErrorCodeDefinition[] {\n return Object.values(ErrorCodes).filter((e) => e.category === category);\n}\n\n/**\n * Check if an error code is retryable\n */\nexport function isRetryableError(code: string): boolean {\n const errorCode = getErrorCode(code);\n return errorCode?.retryable === true;\n}\n\n/**\n * Get HTTP status for an error code\n */\nexport function getStatusForCode(code: string): number {\n const errorCode = getErrorCode(code);\n return errorCode?.status ?? 500;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @parsrun/core - Error Classes
3
+ */
4
+ declare class ParsError extends Error {
5
+ readonly code: string;
6
+ readonly statusCode: number;
7
+ readonly details: Record<string, unknown> | undefined;
8
+ constructor(message: string, code: string, statusCode?: number, details?: Record<string, unknown>);
9
+ toJSON(): {
10
+ name: string;
11
+ message: string;
12
+ code: string;
13
+ statusCode: number;
14
+ details: Record<string, unknown> | undefined;
15
+ };
16
+ }
17
+ declare class AuthError extends ParsError {
18
+ constructor(message: string, code?: string, statusCode?: number, details?: Record<string, unknown>);
19
+ }
20
+ declare class UnauthorizedError extends AuthError {
21
+ constructor(message?: string, details?: Record<string, unknown>);
22
+ }
23
+ declare class ForbiddenError extends AuthError {
24
+ constructor(message?: string, details?: Record<string, unknown>);
25
+ }
26
+ declare class InvalidCredentialsError extends AuthError {
27
+ constructor(message?: string, details?: Record<string, unknown>);
28
+ }
29
+ declare class SessionExpiredError extends AuthError {
30
+ constructor(message?: string, details?: Record<string, unknown>);
31
+ }
32
+ declare class TwoFactorRequiredError extends AuthError {
33
+ readonly challengeId: string;
34
+ constructor(message: string | undefined, challengeId: string, details?: Record<string, unknown>);
35
+ }
36
+ declare class AccountLockedError extends AuthError {
37
+ readonly lockedUntil?: Date | undefined;
38
+ constructor(message?: string, lockedUntil?: Date | undefined, details?: Record<string, unknown>);
39
+ }
40
+ declare class TenantError extends ParsError {
41
+ constructor(message: string, code?: string, statusCode?: number, details?: Record<string, unknown>);
42
+ }
43
+ declare class TenantNotFoundError extends TenantError {
44
+ constructor(message?: string, details?: Record<string, unknown>);
45
+ }
46
+ declare class TenantSuspendedError extends TenantError {
47
+ constructor(message?: string, details?: Record<string, unknown>);
48
+ }
49
+ declare class MembershipError extends TenantError {
50
+ constructor(message?: string, code?: string, statusCode?: number, details?: Record<string, unknown>);
51
+ }
52
+ declare class MembershipNotFoundError extends MembershipError {
53
+ constructor(message?: string, details?: Record<string, unknown>);
54
+ }
55
+ declare class MembershipExpiredError extends MembershipError {
56
+ constructor(message?: string, details?: Record<string, unknown>);
57
+ }
58
+ declare class ValidationError extends ParsError {
59
+ readonly errors: ValidationErrorDetail[];
60
+ constructor(message: string | undefined, errors: ValidationErrorDetail[], details?: Record<string, unknown>);
61
+ }
62
+ interface ValidationErrorDetail {
63
+ field: string;
64
+ message: string;
65
+ code?: string;
66
+ }
67
+ declare class RateLimitError extends ParsError {
68
+ readonly retryAfter?: number | undefined;
69
+ constructor(message?: string, retryAfter?: number | undefined, details?: Record<string, unknown>);
70
+ }
71
+ declare class NotFoundError extends ParsError {
72
+ constructor(resource?: string, message?: string, details?: Record<string, unknown>);
73
+ }
74
+ declare class ConflictError extends ParsError {
75
+ constructor(message?: string, details?: Record<string, unknown>);
76
+ }
77
+ declare class DuplicateError extends ConflictError {
78
+ constructor(resource?: string, field?: string, details?: Record<string, unknown>);
79
+ }
80
+
81
+ export { AccountLockedError, AuthError, ConflictError, DuplicateError, ForbiddenError, InvalidCredentialsError, MembershipError, MembershipExpiredError, MembershipNotFoundError, NotFoundError, ParsError, RateLimitError, SessionExpiredError, TenantError, TenantNotFoundError, TenantSuspendedError, TwoFactorRequiredError, UnauthorizedError, ValidationError, type ValidationErrorDetail };
package/dist/errors.js ADDED
@@ -0,0 +1,161 @@
1
+ // src/errors.ts
2
+ var ParsError = class extends Error {
3
+ code;
4
+ statusCode;
5
+ details;
6
+ constructor(message, code, statusCode = 500, details) {
7
+ super(message);
8
+ this.name = "ParsError";
9
+ this.code = code;
10
+ this.statusCode = statusCode;
11
+ this.details = details ?? void 0;
12
+ Error.captureStackTrace?.(this, this.constructor);
13
+ }
14
+ toJSON() {
15
+ return {
16
+ name: this.name,
17
+ message: this.message,
18
+ code: this.code,
19
+ statusCode: this.statusCode,
20
+ details: this.details
21
+ };
22
+ }
23
+ };
24
+ var AuthError = class extends ParsError {
25
+ constructor(message, code = "AUTH_ERROR", statusCode = 401, details) {
26
+ super(message, code, statusCode, details);
27
+ this.name = "AuthError";
28
+ }
29
+ };
30
+ var UnauthorizedError = class extends AuthError {
31
+ constructor(message = "Unauthorized", details) {
32
+ super(message, "UNAUTHORIZED", 401, details);
33
+ this.name = "UnauthorizedError";
34
+ }
35
+ };
36
+ var ForbiddenError = class extends AuthError {
37
+ constructor(message = "Forbidden", details) {
38
+ super(message, "FORBIDDEN", 403, details);
39
+ this.name = "ForbiddenError";
40
+ }
41
+ };
42
+ var InvalidCredentialsError = class extends AuthError {
43
+ constructor(message = "Invalid credentials", details) {
44
+ super(message, "INVALID_CREDENTIALS", 401, details);
45
+ this.name = "InvalidCredentialsError";
46
+ }
47
+ };
48
+ var SessionExpiredError = class extends AuthError {
49
+ constructor(message = "Session expired", details) {
50
+ super(message, "SESSION_EXPIRED", 401, details);
51
+ this.name = "SessionExpiredError";
52
+ }
53
+ };
54
+ var TwoFactorRequiredError = class extends AuthError {
55
+ constructor(message = "Two-factor authentication required", challengeId, details) {
56
+ super(message, "TWO_FACTOR_REQUIRED", 403, { ...details, challengeId });
57
+ this.challengeId = challengeId;
58
+ this.name = "TwoFactorRequiredError";
59
+ }
60
+ };
61
+ var AccountLockedError = class extends AuthError {
62
+ constructor(message = "Account locked", lockedUntil, details) {
63
+ super(message, "ACCOUNT_LOCKED", 423, { ...details, lockedUntil });
64
+ this.lockedUntil = lockedUntil;
65
+ this.name = "AccountLockedError";
66
+ }
67
+ };
68
+ var TenantError = class extends ParsError {
69
+ constructor(message, code = "TENANT_ERROR", statusCode = 400, details) {
70
+ super(message, code, statusCode, details);
71
+ this.name = "TenantError";
72
+ }
73
+ };
74
+ var TenantNotFoundError = class extends TenantError {
75
+ constructor(message = "Tenant not found", details) {
76
+ super(message, "TENANT_NOT_FOUND", 404, details);
77
+ this.name = "TenantNotFoundError";
78
+ }
79
+ };
80
+ var TenantSuspendedError = class extends TenantError {
81
+ constructor(message = "Tenant suspended", details) {
82
+ super(message, "TENANT_SUSPENDED", 403, details);
83
+ this.name = "TenantSuspendedError";
84
+ }
85
+ };
86
+ var MembershipError = class extends TenantError {
87
+ constructor(message = "Membership error", code = "MEMBERSHIP_ERROR", statusCode = 400, details) {
88
+ super(message, code, statusCode, details);
89
+ this.name = "MembershipError";
90
+ }
91
+ };
92
+ var MembershipNotFoundError = class extends MembershipError {
93
+ constructor(message = "Membership not found", details) {
94
+ super(message, "MEMBERSHIP_NOT_FOUND", 404, details);
95
+ this.name = "MembershipNotFoundError";
96
+ }
97
+ };
98
+ var MembershipExpiredError = class extends MembershipError {
99
+ constructor(message = "Membership expired", details) {
100
+ super(message, "MEMBERSHIP_EXPIRED", 403, details);
101
+ this.name = "MembershipExpiredError";
102
+ }
103
+ };
104
+ var ValidationError = class extends ParsError {
105
+ constructor(message = "Validation failed", errors, details) {
106
+ super(message, "VALIDATION_ERROR", 400, { ...details, errors });
107
+ this.errors = errors;
108
+ this.name = "ValidationError";
109
+ }
110
+ };
111
+ var RateLimitError = class extends ParsError {
112
+ constructor(message = "Rate limit exceeded", retryAfter, details) {
113
+ super(message, "RATE_LIMIT_EXCEEDED", 429, { ...details, retryAfter });
114
+ this.retryAfter = retryAfter;
115
+ this.name = "RateLimitError";
116
+ }
117
+ };
118
+ var NotFoundError = class extends ParsError {
119
+ constructor(resource = "Resource", message, details) {
120
+ super(message ?? `${resource} not found`, "NOT_FOUND", 404, { ...details, resource });
121
+ this.name = "NotFoundError";
122
+ }
123
+ };
124
+ var ConflictError = class extends ParsError {
125
+ constructor(message = "Conflict", details) {
126
+ super(message, "CONFLICT", 409, details);
127
+ this.name = "ConflictError";
128
+ }
129
+ };
130
+ var DuplicateError = class extends ConflictError {
131
+ constructor(resource = "Resource", field, details) {
132
+ super(`${resource} already exists${field ? ` with this ${field}` : ""}`, {
133
+ ...details,
134
+ resource,
135
+ field
136
+ });
137
+ this.name = "DuplicateError";
138
+ }
139
+ };
140
+ export {
141
+ AccountLockedError,
142
+ AuthError,
143
+ ConflictError,
144
+ DuplicateError,
145
+ ForbiddenError,
146
+ InvalidCredentialsError,
147
+ MembershipError,
148
+ MembershipExpiredError,
149
+ MembershipNotFoundError,
150
+ NotFoundError,
151
+ ParsError,
152
+ RateLimitError,
153
+ SessionExpiredError,
154
+ TenantError,
155
+ TenantNotFoundError,
156
+ TenantSuspendedError,
157
+ TwoFactorRequiredError,
158
+ UnauthorizedError,
159
+ ValidationError
160
+ };
161
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts"],"sourcesContent":["/**\n * @parsrun/core - Error Classes\n */\n\nexport class ParsError extends Error {\n public readonly code: string;\n public readonly statusCode: number;\n public readonly details: Record<string, unknown> | undefined;\n\n constructor(\n message: string,\n code: string,\n statusCode: number = 500,\n details?: Record<string, unknown>\n ) {\n super(message);\n this.name = \"ParsError\";\n this.code = code;\n this.statusCode = statusCode;\n this.details = details ?? undefined;\n Error.captureStackTrace?.(this, this.constructor);\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n statusCode: this.statusCode,\n details: this.details,\n };\n }\n}\n\n// ============================================\n// AUTH ERRORS\n// ============================================\n\nexport class AuthError extends ParsError {\n constructor(\n message: string,\n code: string = \"AUTH_ERROR\",\n statusCode: number = 401,\n details?: Record<string, unknown>\n ) {\n super(message, code, statusCode, details);\n this.name = \"AuthError\";\n }\n}\n\nexport class UnauthorizedError extends AuthError {\n constructor(message: string = \"Unauthorized\", details?: Record<string, unknown>) {\n super(message, \"UNAUTHORIZED\", 401, details);\n this.name = \"UnauthorizedError\";\n }\n}\n\nexport class ForbiddenError extends AuthError {\n constructor(message: string = \"Forbidden\", details?: Record<string, unknown>) {\n super(message, \"FORBIDDEN\", 403, details);\n this.name = \"ForbiddenError\";\n }\n}\n\nexport class InvalidCredentialsError extends AuthError {\n constructor(message: string = \"Invalid credentials\", details?: Record<string, unknown>) {\n super(message, \"INVALID_CREDENTIALS\", 401, details);\n this.name = \"InvalidCredentialsError\";\n }\n}\n\nexport class SessionExpiredError extends AuthError {\n constructor(message: string = \"Session expired\", details?: Record<string, unknown>) {\n super(message, \"SESSION_EXPIRED\", 401, details);\n this.name = \"SessionExpiredError\";\n }\n}\n\nexport class TwoFactorRequiredError extends AuthError {\n constructor(\n message: string = \"Two-factor authentication required\",\n public readonly challengeId: string,\n details?: Record<string, unknown>\n ) {\n super(message, \"TWO_FACTOR_REQUIRED\", 403, { ...details, challengeId });\n this.name = \"TwoFactorRequiredError\";\n }\n}\n\nexport class AccountLockedError extends AuthError {\n constructor(\n message: string = \"Account locked\",\n public readonly lockedUntil?: Date,\n details?: Record<string, unknown>\n ) {\n super(message, \"ACCOUNT_LOCKED\", 423, { ...details, lockedUntil });\n this.name = \"AccountLockedError\";\n }\n}\n\n// ============================================\n// TENANT ERRORS\n// ============================================\n\nexport class TenantError extends ParsError {\n constructor(\n message: string,\n code: string = \"TENANT_ERROR\",\n statusCode: number = 400,\n details?: Record<string, unknown>\n ) {\n super(message, code, statusCode, details);\n this.name = \"TenantError\";\n }\n}\n\nexport class TenantNotFoundError extends TenantError {\n constructor(message: string = \"Tenant not found\", details?: Record<string, unknown>) {\n super(message, \"TENANT_NOT_FOUND\", 404, details);\n this.name = \"TenantNotFoundError\";\n }\n}\n\nexport class TenantSuspendedError extends TenantError {\n constructor(message: string = \"Tenant suspended\", details?: Record<string, unknown>) {\n super(message, \"TENANT_SUSPENDED\", 403, details);\n this.name = \"TenantSuspendedError\";\n }\n}\n\nexport class MembershipError extends TenantError {\n constructor(\n message: string = \"Membership error\",\n code: string = \"MEMBERSHIP_ERROR\",\n statusCode: number = 400,\n details?: Record<string, unknown>\n ) {\n super(message, code, statusCode, details);\n this.name = \"MembershipError\";\n }\n}\n\nexport class MembershipNotFoundError extends MembershipError {\n constructor(message: string = \"Membership not found\", details?: Record<string, unknown>) {\n super(message, \"MEMBERSHIP_NOT_FOUND\", 404, details);\n this.name = \"MembershipNotFoundError\";\n }\n}\n\nexport class MembershipExpiredError extends MembershipError {\n constructor(message: string = \"Membership expired\", details?: Record<string, unknown>) {\n super(message, \"MEMBERSHIP_EXPIRED\", 403, details);\n this.name = \"MembershipExpiredError\";\n }\n}\n\n// ============================================\n// VALIDATION ERRORS\n// ============================================\n\nexport class ValidationError extends ParsError {\n constructor(\n message: string = \"Validation failed\",\n public readonly errors: ValidationErrorDetail[],\n details?: Record<string, unknown>\n ) {\n super(message, \"VALIDATION_ERROR\", 400, { ...details, errors });\n this.name = \"ValidationError\";\n }\n}\n\nexport interface ValidationErrorDetail {\n field: string;\n message: string;\n code?: string;\n}\n\n// ============================================\n// RATE LIMIT ERRORS\n// ============================================\n\nexport class RateLimitError extends ParsError {\n constructor(\n message: string = \"Rate limit exceeded\",\n public readonly retryAfter?: number,\n details?: Record<string, unknown>\n ) {\n super(message, \"RATE_LIMIT_EXCEEDED\", 429, { ...details, retryAfter });\n this.name = \"RateLimitError\";\n }\n}\n\n// ============================================\n// NOT FOUND ERRORS\n// ============================================\n\nexport class NotFoundError extends ParsError {\n constructor(\n resource: string = \"Resource\",\n message?: string,\n details?: Record<string, unknown>\n ) {\n super(message ?? `${resource} not found`, \"NOT_FOUND\", 404, { ...details, resource });\n this.name = \"NotFoundError\";\n }\n}\n\n// ============================================\n// CONFLICT ERRORS\n// ============================================\n\nexport class ConflictError extends ParsError {\n constructor(message: string = \"Conflict\", details?: Record<string, unknown>) {\n super(message, \"CONFLICT\", 409, details);\n this.name = \"ConflictError\";\n }\n}\n\nexport class DuplicateError extends ConflictError {\n constructor(\n resource: string = \"Resource\",\n field?: string,\n details?: Record<string, unknown>\n ) {\n super(`${resource} already exists${field ? ` with this ${field}` : \"\"}`, {\n ...details,\n resource,\n field,\n });\n this.name = \"DuplicateError\";\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,116 @@
1
+ export { Runtime, detectRuntime, getRuntimeVersion, isBrowser, isBun, isCloudflare, isDeno, isEdge, isNode, isServer, runtime, runtimeInfo } from './runtime.js';
2
+ export { EnvMode, clearEdgeEnv, createEnvConfig, getEnv, getEnvArray, getEnvBoolean, getEnvFloat, getEnvJson, getEnvMode, getEnvNumber, isDevelopment, isProduction, isTest, requireEnv, setEdgeEnv } from './env.js';
3
+ export { o as BaseTransportOptions, p as BatchTransportOptions, B as Breadcrumb, j as CombinedTransport, C as ConsoleTransport, k as ErrorContext, E as ErrorTransport, n as ErrorUser, g as LogEntry, a as LogLevel, e as LogLevelName, f as LogLevelValue, h as LogTransport, L as Logger, i as LoggerConfig, c as createLogger, d as createRequestLogger, b as logError, l as logger, m as measureTime } from './logger-aEibH9Mv.js';
4
+ export { Decimal, DecimalUtils, decimal } from './decimal.js';
5
+ export { AccessLevel, AuthContext, DeepPartial, IpRestrictions, MembershipPermissions, MembershipStatus, PaginatedResult, PaginationParams, Prettify, RequireAtLeastOne, ResourceRestrictions, Result, Session, Tenant, TenantMembership, TenantStatus, TimeRestrictions, User, err, ok } from './types.js';
6
+ export { AccountLockedError, AuthError, ConflictError, DuplicateError, ForbiddenError, InvalidCredentialsError, MembershipError, MembershipExpiredError, MembershipNotFoundError, NotFoundError, ParsError, RateLimitError, SessionExpiredError, TenantError, TenantNotFoundError, TenantSuspendedError, TwoFactorRequiredError, UnauthorizedError, ValidationError, ValidationErrorDetail } from './errors.js';
7
+ export { ErrorCategory, ErrorCode, ErrorCodeDefinition, ErrorCodes, getErrorCode, getErrorCodesByCategory, getStatusForCode, isRetryableError } from './error-codes.js';
8
+ export { AxiomTransport, AxiomTransportOptions, LogtapeLogger, LogtapeTransport, LogtapeTransportOptions, SentryClient, SentryEvent, SentryTransport, SentryTransportOptions, createAxiomTransport, createLogtapeTransport, createSentryTransport } from './transports/index.js';
9
+
10
+ /**
11
+ * @parsrun/core
12
+ * Core utilities and types for Pars framework
13
+ * Edge-compatible, zero dependencies
14
+ */
15
+
16
+ /**
17
+ * Generate a cryptographically secure random string (hex)
18
+ */
19
+ declare function generateRandomString(length: number): Promise<string>;
20
+ /**
21
+ * Generate a UUID v4
22
+ */
23
+ declare function generateId(): string;
24
+ /**
25
+ * Hash a string using SHA-256
26
+ */
27
+ declare function sha256(input: string): Promise<string>;
28
+ /**
29
+ * Hash a string using SHA-256 and return as ArrayBuffer
30
+ */
31
+ declare function sha256Bytes(input: string): Promise<ArrayBuffer>;
32
+ /**
33
+ * Constant-time string comparison (timing-safe)
34
+ */
35
+ declare function constantTimeEquals(a: string, b: string): boolean;
36
+ /**
37
+ * Sleep for a given number of milliseconds
38
+ */
39
+ declare function sleep(ms: number): Promise<void>;
40
+ /**
41
+ * Retry a function with exponential backoff
42
+ */
43
+ declare function retry<T>(fn: () => Promise<T>, options?: {
44
+ maxRetries?: number;
45
+ initialDelayMs?: number;
46
+ maxDelayMs?: number;
47
+ backoffMultiplier?: number;
48
+ shouldRetry?: (error: unknown) => boolean;
49
+ onRetry?: (error: unknown, attempt: number) => void;
50
+ }): Promise<T>;
51
+ /**
52
+ * Omit keys from an object
53
+ */
54
+ declare function omit<T extends object, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
55
+ /**
56
+ * Pick keys from an object
57
+ */
58
+ declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
59
+ /**
60
+ * Deep merge two objects
61
+ */
62
+ declare function deepMerge<T extends object>(target: T, source: Partial<T>): T;
63
+ /**
64
+ * Deep clone an object
65
+ */
66
+ declare function deepClone<T>(obj: T): T;
67
+ /**
68
+ * Check if a value is a plain object
69
+ */
70
+ declare function isPlainObject(value: unknown): value is Record<string, unknown>;
71
+ /**
72
+ * Check if value is null or undefined
73
+ */
74
+ declare function isNil(value: unknown): value is null | undefined;
75
+ /**
76
+ * Check if value is empty (null, undefined, empty string, empty array, empty object)
77
+ */
78
+ declare function isEmpty(value: unknown): boolean;
79
+ /**
80
+ * Normalize email address
81
+ */
82
+ declare function normalizeEmail(email: string): string;
83
+ /**
84
+ * Validate email format
85
+ */
86
+ declare function isValidEmail(email: string): boolean;
87
+ /**
88
+ * Generate a URL-friendly slug from a string
89
+ */
90
+ declare function slugify(str: string): string;
91
+ /**
92
+ * Truncate string to a maximum length
93
+ */
94
+ declare function truncate(str: string, maxLength: number, suffix?: string): string;
95
+ /**
96
+ * Debounce a function
97
+ */
98
+ declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, wait: number): (...args: Parameters<T>) => void;
99
+ /**
100
+ * Throttle a function
101
+ */
102
+ declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, wait: number): (...args: Parameters<T>) => void;
103
+ /**
104
+ * Create a deferred promise
105
+ */
106
+ declare function createDeferred<T>(): {
107
+ promise: Promise<T>;
108
+ resolve: (value: T) => void;
109
+ reject: (reason?: unknown) => void;
110
+ };
111
+ /**
112
+ * Run promises with concurrency limit
113
+ */
114
+ declare function pLimit<T>(tasks: (() => Promise<T>)[], concurrency: number): Promise<T[]>;
115
+
116
+ export { constantTimeEquals, createDeferred, debounce, deepClone, deepMerge, generateId, generateRandomString, isEmpty, isNil, isPlainObject, isValidEmail, normalizeEmail, omit, pLimit, pick, retry, sha256, sha256Bytes, sleep, slugify, throttle, truncate };