@explorins/pers-shared 2.1.40 → 2.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/shared-lib/dto/auth.dto.js +3 -2
- package/dist/cjs/shared-lib/dto/auth.dto.js.map +1 -1
- package/dist/cjs/shared-lib/dto/token/token.request.dto.d.ts +1 -0
- package/dist/cjs/shared-lib/dto/token/token.request.dto.d.ts.map +1 -1
- package/dist/cjs/shared-lib/dto/token/token.request.dto.js +7 -0
- package/dist/cjs/shared-lib/dto/token/token.request.dto.js.map +1 -1
- package/dist/cjs/shared-lib/enum/transaction-status.enum.d.ts +3 -1
- package/dist/cjs/shared-lib/enum/transaction-status.enum.d.ts.map +1 -1
- package/dist/cjs/shared-lib/enum/transaction-status.enum.js +6 -0
- package/dist/cjs/shared-lib/enum/transaction-status.enum.js.map +1 -1
- package/dist/cjs/shared-lib/errors/technical-errors.d.ts +0 -13
- package/dist/cjs/shared-lib/errors/technical-errors.d.ts.map +1 -1
- package/dist/cjs/shared-lib/errors/technical-errors.js +1 -46
- package/dist/cjs/shared-lib/errors/technical-errors.js.map +1 -1
- package/dist/cjs/shared-lib/value-objects/account-selector.vo.d.ts.map +1 -1
- package/dist/cjs/shared-lib/value-objects/account-selector.vo.js +13 -9
- package/dist/cjs/shared-lib/value-objects/account-selector.vo.js.map +1 -1
- package/dist/cjs/shared-lib/value-objects/address.value-object.d.ts.map +1 -1
- package/dist/cjs/shared-lib/value-objects/address.value-object.js +2 -1
- package/dist/cjs/shared-lib/value-objects/address.value-object.js.map +1 -1
- package/dist/cjs/shared-patterns/errors/error-factory.d.ts +150 -0
- package/dist/cjs/shared-patterns/errors/error-factory.d.ts.map +1 -0
- package/dist/cjs/shared-patterns/errors/error-factory.js +257 -0
- package/dist/cjs/shared-patterns/errors/error-factory.js.map +1 -0
- package/dist/esm/shared-lib/dto/auth.dto.js +3 -2
- package/dist/esm/shared-lib/dto/auth.dto.js.map +1 -1
- package/dist/esm/shared-lib/dto/token/token.request.dto.d.ts +1 -0
- package/dist/esm/shared-lib/dto/token/token.request.dto.d.ts.map +1 -1
- package/dist/esm/shared-lib/dto/token/token.request.dto.js +6 -0
- package/dist/esm/shared-lib/dto/token/token.request.dto.js.map +1 -1
- package/dist/esm/shared-lib/enum/transaction-status.enum.d.ts +3 -1
- package/dist/esm/shared-lib/enum/transaction-status.enum.d.ts.map +1 -1
- package/dist/esm/shared-lib/enum/transaction-status.enum.js +6 -0
- package/dist/esm/shared-lib/enum/transaction-status.enum.js.map +1 -1
- package/dist/esm/shared-lib/errors/technical-errors.d.ts +0 -13
- package/dist/esm/shared-lib/errors/technical-errors.d.ts.map +1 -1
- package/dist/esm/shared-lib/errors/technical-errors.js +0 -44
- package/dist/esm/shared-lib/errors/technical-errors.js.map +1 -1
- package/dist/esm/shared-lib/value-objects/account-selector.vo.d.ts.map +1 -1
- package/dist/esm/shared-lib/value-objects/account-selector.vo.js +13 -9
- package/dist/esm/shared-lib/value-objects/account-selector.vo.js.map +1 -1
- package/dist/esm/shared-lib/value-objects/address.value-object.d.ts.map +1 -1
- package/dist/esm/shared-lib/value-objects/address.value-object.js +2 -1
- package/dist/esm/shared-lib/value-objects/address.value-object.js.map +1 -1
- package/dist/esm/shared-patterns/errors/error-factory.d.ts +150 -0
- package/dist/esm/shared-patterns/errors/error-factory.d.ts.map +1 -0
- package/dist/esm/shared-patterns/errors/error-factory.js +254 -0
- package/dist/esm/shared-patterns/errors/error-factory.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { UserNotFoundError, BusinessNotFoundError, TokenNotFoundError, TransactionNotFoundError, AuthenticationRequiredError, InvalidTokenError, TokenExpiredError, AuthorizationFailedError, InsufficientBalanceError, InvalidInputError, RequiredFieldError, InvalidFormatError, SystemError, ExternalServiceError, ConfigurationMissingError, TokenNotActiveError, TokenIdRequiredError, TokenTypeNotFoundError, TokenUnitNotFoundError, TransactionAlreadyCompletedError, TransactionNotPendingError, TransactionValidationError, SigningAccountValidationError, SigningAccountNotFoundError, SigningAccountAlreadyExistsError, KeyGenerationError, CampaignNotFoundError, GeographicRestrictionError, LocationVerificationRequiredError, RedemptionLimitReachedError, UserStatusRestrictedError, WalletNotFoundError, WalletMissingSigningError, SmartWalletProcessingError, BusinessNotMinterError, UnexpectedValidationScenarioError } from '../../shared-lib/errors';
|
|
2
|
+
/**
|
|
3
|
+
* Universal Error Factory for NestJS Applications
|
|
4
|
+
*
|
|
5
|
+
* This factory provides a clean, discoverable API for creating errors while
|
|
6
|
+
* maintaining the domain error classes as the single source of truth.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - Domain files define canonical error classes (exported as types for frontend)
|
|
10
|
+
* - Factory methods instantiate these domain classes (no duplication)
|
|
11
|
+
* - NestJS apps use factory for clean developer experience
|
|
12
|
+
* - Frontend devs import types from domain classes
|
|
13
|
+
*/
|
|
14
|
+
export declare class ErrorFactory {
|
|
15
|
+
/**
|
|
16
|
+
* Resource "not found" patterns
|
|
17
|
+
* Uses domain classes internally for consistency
|
|
18
|
+
*/
|
|
19
|
+
static userNotFound(identifier: string): UserNotFoundError;
|
|
20
|
+
static businessNotFound(identifier: string): BusinessNotFoundError;
|
|
21
|
+
static tokenNotFound(tokenId: string): TokenNotFoundError;
|
|
22
|
+
static transactionNotFound(transactionId: string): TransactionNotFoundError;
|
|
23
|
+
static campaignNotFound(campaignId: string): CampaignNotFoundError;
|
|
24
|
+
static tokenUnitNotFound(tokenUnitId?: string): TokenUnitNotFoundError;
|
|
25
|
+
/**
|
|
26
|
+
* Authentication & Authorization patterns
|
|
27
|
+
*/
|
|
28
|
+
static authRequired(resource?: string): AuthenticationRequiredError;
|
|
29
|
+
static invalidToken(reason?: string): InvalidTokenError;
|
|
30
|
+
static tokenExpired(): TokenExpiredError;
|
|
31
|
+
static forbidden(action: string, resource: string): AuthorizationFailedError;
|
|
32
|
+
/**
|
|
33
|
+
* Business rule patterns
|
|
34
|
+
*/
|
|
35
|
+
static geographicRestriction(countryCode: string, resource?: string): GeographicRestrictionError;
|
|
36
|
+
static locationRequired(resource?: string): LocationVerificationRequiredError;
|
|
37
|
+
static limitReached(limitType: 'max_redemption' | 'user_limit'): RedemptionLimitReachedError;
|
|
38
|
+
static userStatusRestricted(): UserStatusRestrictedError;
|
|
39
|
+
/**
|
|
40
|
+
* Validation patterns
|
|
41
|
+
*/
|
|
42
|
+
static invalidInput(field: string, reason?: string): InvalidInputError;
|
|
43
|
+
static requiredField(field: string): RequiredFieldError;
|
|
44
|
+
static invalidFormat(field: string, expectedFormat: string): InvalidFormatError;
|
|
45
|
+
/**
|
|
46
|
+
* Financial/Balance patterns
|
|
47
|
+
*/
|
|
48
|
+
static insufficientBalance(required: string, available: string): InsufficientBalanceError;
|
|
49
|
+
/**
|
|
50
|
+
* Technical/Infrastructure patterns
|
|
51
|
+
*/
|
|
52
|
+
static systemError(operation: string, details: string): SystemError;
|
|
53
|
+
static externalServiceError(serviceName: string, operation: string): ExternalServiceError;
|
|
54
|
+
static configMissing(configKey: string): ConfigurationMissingError;
|
|
55
|
+
/**
|
|
56
|
+
* Token-specific patterns
|
|
57
|
+
*/
|
|
58
|
+
static tokenNotActive(tokenId: string): TokenNotActiveError;
|
|
59
|
+
static tokenIdRequired(tokenType: string): TokenIdRequiredError;
|
|
60
|
+
static tokenTypeNotFound(tokenType: string): TokenTypeNotFoundError;
|
|
61
|
+
/**
|
|
62
|
+
* Transaction-specific patterns
|
|
63
|
+
*/
|
|
64
|
+
static transactionAlreadyCompleted(transactionId: string, currentStatus: string): TransactionAlreadyCompletedError;
|
|
65
|
+
static transactionNotPending(transactionId: string, currentStatus: string): TransactionNotPendingError;
|
|
66
|
+
static transactionValidation(field: string, reason: string): TransactionValidationError;
|
|
67
|
+
/**
|
|
68
|
+
* Signing account patterns
|
|
69
|
+
*/
|
|
70
|
+
static signingAccountValidation(field: string, reason: string): SigningAccountValidationError;
|
|
71
|
+
static signingAccountNotFound(identifier: string): SigningAccountNotFoundError;
|
|
72
|
+
static signingAccountAlreadyExists(accountAddress: string): SigningAccountAlreadyExistsError;
|
|
73
|
+
static keyGeneration(reason: string): KeyGenerationError;
|
|
74
|
+
/**
|
|
75
|
+
* Wallet patterns
|
|
76
|
+
*/
|
|
77
|
+
static walletNotFound(ownerAddress: string): WalletNotFoundError;
|
|
78
|
+
static walletMissingSigning(walletAddress: string, reason: string): WalletMissingSigningError;
|
|
79
|
+
static smartWalletProcessing(reason: string): SmartWalletProcessingError;
|
|
80
|
+
/**
|
|
81
|
+
* Business patterns
|
|
82
|
+
*/
|
|
83
|
+
static businessNotMinter(businessId: string, tokenAddress: string): BusinessNotMinterError;
|
|
84
|
+
/**
|
|
85
|
+
* Validation patterns
|
|
86
|
+
*/
|
|
87
|
+
static unexpectedValidationScenario(context: string): UnexpectedValidationScenarioError;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Convenient shortcut object for the most commonly used error patterns
|
|
91
|
+
* Provides clean, discoverable API for NestJS applications
|
|
92
|
+
*/
|
|
93
|
+
export declare const Errors: {
|
|
94
|
+
userNotFound: (id: string) => UserNotFoundError;
|
|
95
|
+
businessNotFound: (id: string) => BusinessNotFoundError;
|
|
96
|
+
tokenNotFound: (id: string) => TokenNotFoundError;
|
|
97
|
+
tokenUnitNotFound: (id?: string) => TokenUnitNotFoundError;
|
|
98
|
+
transactionNotFound: (id: string) => TransactionNotFoundError;
|
|
99
|
+
campaignNotFound: (id: string) => CampaignNotFoundError;
|
|
100
|
+
authRequired: (resource?: string) => AuthenticationRequiredError;
|
|
101
|
+
invalidToken: (reason?: string) => InvalidTokenError;
|
|
102
|
+
tokenExpired: () => TokenExpiredError;
|
|
103
|
+
forbidden: (action: string, resource: string) => AuthorizationFailedError;
|
|
104
|
+
geographicRestriction: (countryCode: string, resource?: string) => GeographicRestrictionError;
|
|
105
|
+
locationRequired: (resource?: string) => LocationVerificationRequiredError;
|
|
106
|
+
limitReached: (limitType: "max_redemption" | "user_limit") => RedemptionLimitReachedError;
|
|
107
|
+
userStatusRestricted: () => UserStatusRestrictedError;
|
|
108
|
+
invalidInput: (field: string, reason?: string) => InvalidInputError;
|
|
109
|
+
requiredField: (field: string) => RequiredFieldError;
|
|
110
|
+
invalidFormat: (field: string, format: string) => InvalidFormatError;
|
|
111
|
+
insufficientBalance: (required: string, available: string) => InsufficientBalanceError;
|
|
112
|
+
systemError: (operation: string, details: string) => SystemError;
|
|
113
|
+
externalServiceError: (service: string, operation: string) => ExternalServiceError;
|
|
114
|
+
configMissing: (key: string) => ConfigurationMissingError;
|
|
115
|
+
tokenNotActive: (id: string) => TokenNotActiveError;
|
|
116
|
+
tokenIdRequired: (type: string) => TokenIdRequiredError;
|
|
117
|
+
tokenTypeNotFound: (type: string) => TokenTypeNotFoundError;
|
|
118
|
+
transactionAlreadyCompleted: (id: string, status: string) => TransactionAlreadyCompletedError;
|
|
119
|
+
transactionNotPending: (id: string, status: string) => TransactionNotPendingError;
|
|
120
|
+
transactionValidation: (field: string, reason: string) => TransactionValidationError;
|
|
121
|
+
signingAccountValidation: (field: string, reason: string) => SigningAccountValidationError;
|
|
122
|
+
signingAccountNotFound: (id: string) => SigningAccountNotFoundError;
|
|
123
|
+
signingAccountAlreadyExists: (address: string) => SigningAccountAlreadyExistsError;
|
|
124
|
+
keyGeneration: (reason: string) => KeyGenerationError;
|
|
125
|
+
walletNotFound: (address: string) => WalletNotFoundError;
|
|
126
|
+
walletMissingSigning: (address: string, reason: string) => WalletMissingSigningError;
|
|
127
|
+
smartWalletProcessing: (reason: string) => SmartWalletProcessingError;
|
|
128
|
+
businessNotMinter: (businessId: string, tokenAddress: string) => BusinessNotMinterError;
|
|
129
|
+
unexpectedValidationScenario: (context: string) => UnexpectedValidationScenarioError;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Advanced Error Builder for complex scenarios
|
|
133
|
+
* Still references domain classes when possible
|
|
134
|
+
*/
|
|
135
|
+
export declare class ErrorBuilder {
|
|
136
|
+
private config;
|
|
137
|
+
static create(): ErrorBuilder;
|
|
138
|
+
/**
|
|
139
|
+
* Use a specific domain error class
|
|
140
|
+
*/
|
|
141
|
+
useClass(errorClass: any, ...params: any[]): ErrorBuilder;
|
|
142
|
+
/**
|
|
143
|
+
* Build the error instance
|
|
144
|
+
*/
|
|
145
|
+
build(): Error;
|
|
146
|
+
buildUserNotFound(id: string): UserNotFoundError;
|
|
147
|
+
buildBusinessNotFound(id: string): BusinessNotFoundError;
|
|
148
|
+
buildAuthRequired(resource: string): AuthenticationRequiredError;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=error-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-factory.d.ts","sourceRoot":"","sources":["../../../../src/shared-patterns/errors/error-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import {
|
|
2
|
+
// Domain error classes - single source of truth
|
|
3
|
+
UserNotFoundError, BusinessNotFoundError, TokenNotFoundError, TransactionNotFoundError, AuthenticationRequiredError, InvalidTokenError, TokenExpiredError, AuthorizationFailedError, InsufficientBalanceError, InvalidInputError, RequiredFieldError, InvalidFormatError, SystemError, ExternalServiceError, ConfigurationMissingError, TokenNotActiveError, TokenIdRequiredError, TokenTypeNotFoundError, TokenUnitNotFoundError, TransactionAlreadyCompletedError, TransactionNotPendingError, TransactionValidationError, SigningAccountValidationError, SigningAccountNotFoundError, SigningAccountAlreadyExistsError, KeyGenerationError, CampaignNotFoundError, GeographicRestrictionError, LocationVerificationRequiredError, RedemptionLimitReachedError, UserStatusRestrictedError, WalletNotFoundError, WalletMissingSigningError, SmartWalletProcessingError, BusinessNotMinterError, UnexpectedValidationScenarioError } from '../../shared-lib/errors';
|
|
4
|
+
/**
|
|
5
|
+
* Universal Error Factory for NestJS Applications
|
|
6
|
+
*
|
|
7
|
+
* This factory provides a clean, discoverable API for creating errors while
|
|
8
|
+
* maintaining the domain error classes as the single source of truth.
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* - Domain files define canonical error classes (exported as types for frontend)
|
|
12
|
+
* - Factory methods instantiate these domain classes (no duplication)
|
|
13
|
+
* - NestJS apps use factory for clean developer experience
|
|
14
|
+
* - Frontend devs import types from domain classes
|
|
15
|
+
*/
|
|
16
|
+
export class ErrorFactory {
|
|
17
|
+
/**
|
|
18
|
+
* Resource "not found" patterns
|
|
19
|
+
* Uses domain classes internally for consistency
|
|
20
|
+
*/
|
|
21
|
+
static userNotFound(identifier) {
|
|
22
|
+
return new UserNotFoundError(identifier);
|
|
23
|
+
}
|
|
24
|
+
static businessNotFound(identifier) {
|
|
25
|
+
return new BusinessNotFoundError(identifier);
|
|
26
|
+
}
|
|
27
|
+
static tokenNotFound(tokenId) {
|
|
28
|
+
return new TokenNotFoundError(tokenId);
|
|
29
|
+
}
|
|
30
|
+
static transactionNotFound(transactionId) {
|
|
31
|
+
return new TransactionNotFoundError(transactionId);
|
|
32
|
+
}
|
|
33
|
+
static campaignNotFound(campaignId) {
|
|
34
|
+
return new CampaignNotFoundError(campaignId);
|
|
35
|
+
}
|
|
36
|
+
static tokenUnitNotFound(tokenUnitId) {
|
|
37
|
+
return new TokenUnitNotFoundError(tokenUnitId);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Authentication & Authorization patterns
|
|
41
|
+
*/
|
|
42
|
+
static authRequired(resource) {
|
|
43
|
+
return new AuthenticationRequiredError(resource || 'this resource');
|
|
44
|
+
}
|
|
45
|
+
static invalidToken(reason) {
|
|
46
|
+
return new InvalidTokenError(reason);
|
|
47
|
+
}
|
|
48
|
+
static tokenExpired() {
|
|
49
|
+
return new TokenExpiredError();
|
|
50
|
+
}
|
|
51
|
+
static forbidden(action, resource) {
|
|
52
|
+
return new AuthorizationFailedError(action, resource);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Business rule patterns
|
|
56
|
+
*/
|
|
57
|
+
static geographicRestriction(countryCode, resource) {
|
|
58
|
+
return new GeographicRestrictionError(countryCode, resource);
|
|
59
|
+
}
|
|
60
|
+
static locationRequired(resource) {
|
|
61
|
+
return new LocationVerificationRequiredError(resource);
|
|
62
|
+
}
|
|
63
|
+
static limitReached(limitType) {
|
|
64
|
+
return new RedemptionLimitReachedError(limitType);
|
|
65
|
+
}
|
|
66
|
+
static userStatusRestricted() {
|
|
67
|
+
return new UserStatusRestrictedError();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Validation patterns
|
|
71
|
+
*/
|
|
72
|
+
static invalidInput(field, reason) {
|
|
73
|
+
return new InvalidInputError(field, reason);
|
|
74
|
+
}
|
|
75
|
+
static requiredField(field) {
|
|
76
|
+
return new RequiredFieldError(field);
|
|
77
|
+
}
|
|
78
|
+
static invalidFormat(field, expectedFormat) {
|
|
79
|
+
return new InvalidFormatError(field, expectedFormat);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Financial/Balance patterns
|
|
83
|
+
*/
|
|
84
|
+
static insufficientBalance(required, available) {
|
|
85
|
+
return new InsufficientBalanceError(required, available);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Technical/Infrastructure patterns
|
|
89
|
+
*/
|
|
90
|
+
static systemError(operation, details) {
|
|
91
|
+
return new SystemError(operation, details);
|
|
92
|
+
}
|
|
93
|
+
static externalServiceError(serviceName, operation) {
|
|
94
|
+
return new ExternalServiceError(serviceName, operation);
|
|
95
|
+
}
|
|
96
|
+
static configMissing(configKey) {
|
|
97
|
+
return new ConfigurationMissingError(configKey);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Token-specific patterns
|
|
101
|
+
*/
|
|
102
|
+
static tokenNotActive(tokenId) {
|
|
103
|
+
return new TokenNotActiveError(tokenId);
|
|
104
|
+
}
|
|
105
|
+
static tokenIdRequired(tokenType) {
|
|
106
|
+
return new TokenIdRequiredError(tokenType);
|
|
107
|
+
}
|
|
108
|
+
static tokenTypeNotFound(tokenType) {
|
|
109
|
+
return new TokenTypeNotFoundError(tokenType);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Transaction-specific patterns
|
|
113
|
+
*/
|
|
114
|
+
static transactionAlreadyCompleted(transactionId, currentStatus) {
|
|
115
|
+
return new TransactionAlreadyCompletedError(transactionId, currentStatus);
|
|
116
|
+
}
|
|
117
|
+
static transactionNotPending(transactionId, currentStatus) {
|
|
118
|
+
return new TransactionNotPendingError(transactionId, currentStatus);
|
|
119
|
+
}
|
|
120
|
+
static transactionValidation(field, reason) {
|
|
121
|
+
return new TransactionValidationError(field, reason);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Signing account patterns
|
|
125
|
+
*/
|
|
126
|
+
static signingAccountValidation(field, reason) {
|
|
127
|
+
return new SigningAccountValidationError(field, reason);
|
|
128
|
+
}
|
|
129
|
+
static signingAccountNotFound(identifier) {
|
|
130
|
+
return new SigningAccountNotFoundError(identifier);
|
|
131
|
+
}
|
|
132
|
+
static signingAccountAlreadyExists(accountAddress) {
|
|
133
|
+
return new SigningAccountAlreadyExistsError(accountAddress);
|
|
134
|
+
}
|
|
135
|
+
static keyGeneration(reason) {
|
|
136
|
+
return new KeyGenerationError(reason);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Wallet patterns
|
|
140
|
+
*/
|
|
141
|
+
static walletNotFound(ownerAddress) {
|
|
142
|
+
return new WalletNotFoundError(ownerAddress);
|
|
143
|
+
}
|
|
144
|
+
static walletMissingSigning(walletAddress, reason) {
|
|
145
|
+
return new WalletMissingSigningError(walletAddress, reason);
|
|
146
|
+
}
|
|
147
|
+
static smartWalletProcessing(reason) {
|
|
148
|
+
return new SmartWalletProcessingError(reason);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Business patterns
|
|
152
|
+
*/
|
|
153
|
+
static businessNotMinter(businessId, tokenAddress) {
|
|
154
|
+
return new BusinessNotMinterError(businessId, tokenAddress);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Validation patterns
|
|
158
|
+
*/
|
|
159
|
+
static unexpectedValidationScenario(context) {
|
|
160
|
+
return new UnexpectedValidationScenarioError(context);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Convenient shortcut object for the most commonly used error patterns
|
|
165
|
+
* Provides clean, discoverable API for NestJS applications
|
|
166
|
+
*/
|
|
167
|
+
export const Errors = {
|
|
168
|
+
// Resource not found
|
|
169
|
+
userNotFound: (id) => ErrorFactory.userNotFound(id),
|
|
170
|
+
businessNotFound: (id) => ErrorFactory.businessNotFound(id),
|
|
171
|
+
tokenNotFound: (id) => ErrorFactory.tokenNotFound(id),
|
|
172
|
+
tokenUnitNotFound: (id) => ErrorFactory.tokenUnitNotFound(id),
|
|
173
|
+
transactionNotFound: (id) => ErrorFactory.transactionNotFound(id),
|
|
174
|
+
campaignNotFound: (id) => ErrorFactory.campaignNotFound(id),
|
|
175
|
+
// Authentication
|
|
176
|
+
authRequired: (resource) => ErrorFactory.authRequired(resource),
|
|
177
|
+
invalidToken: (reason) => ErrorFactory.invalidToken(reason),
|
|
178
|
+
tokenExpired: () => ErrorFactory.tokenExpired(),
|
|
179
|
+
forbidden: (action, resource) => ErrorFactory.forbidden(action, resource),
|
|
180
|
+
// Business rules
|
|
181
|
+
geographicRestriction: (countryCode, resource) => ErrorFactory.geographicRestriction(countryCode, resource),
|
|
182
|
+
locationRequired: (resource) => ErrorFactory.locationRequired(resource),
|
|
183
|
+
limitReached: (limitType) => ErrorFactory.limitReached(limitType),
|
|
184
|
+
userStatusRestricted: () => ErrorFactory.userStatusRestricted(),
|
|
185
|
+
// Validation
|
|
186
|
+
invalidInput: (field, reason) => ErrorFactory.invalidInput(field, reason),
|
|
187
|
+
requiredField: (field) => ErrorFactory.requiredField(field),
|
|
188
|
+
invalidFormat: (field, format) => ErrorFactory.invalidFormat(field, format),
|
|
189
|
+
// Financial
|
|
190
|
+
insufficientBalance: (required, available) => ErrorFactory.insufficientBalance(required, available),
|
|
191
|
+
// Technical
|
|
192
|
+
systemError: (operation, details) => ErrorFactory.systemError(operation, details),
|
|
193
|
+
externalServiceError: (service, operation) => ErrorFactory.externalServiceError(service, operation),
|
|
194
|
+
configMissing: (key) => ErrorFactory.configMissing(key),
|
|
195
|
+
// Token specific
|
|
196
|
+
tokenNotActive: (id) => ErrorFactory.tokenNotActive(id),
|
|
197
|
+
tokenIdRequired: (type) => ErrorFactory.tokenIdRequired(type),
|
|
198
|
+
tokenTypeNotFound: (type) => ErrorFactory.tokenTypeNotFound(type),
|
|
199
|
+
// Transaction specific
|
|
200
|
+
transactionAlreadyCompleted: (id, status) => ErrorFactory.transactionAlreadyCompleted(id, status),
|
|
201
|
+
transactionNotPending: (id, status) => ErrorFactory.transactionNotPending(id, status),
|
|
202
|
+
transactionValidation: (field, reason) => ErrorFactory.transactionValidation(field, reason),
|
|
203
|
+
// Signing account
|
|
204
|
+
signingAccountValidation: (field, reason) => ErrorFactory.signingAccountValidation(field, reason),
|
|
205
|
+
signingAccountNotFound: (id) => ErrorFactory.signingAccountNotFound(id),
|
|
206
|
+
signingAccountAlreadyExists: (address) => ErrorFactory.signingAccountAlreadyExists(address),
|
|
207
|
+
keyGeneration: (reason) => ErrorFactory.keyGeneration(reason),
|
|
208
|
+
// Wallet
|
|
209
|
+
walletNotFound: (address) => ErrorFactory.walletNotFound(address),
|
|
210
|
+
walletMissingSigning: (address, reason) => ErrorFactory.walletMissingSigning(address, reason),
|
|
211
|
+
smartWalletProcessing: (reason) => ErrorFactory.smartWalletProcessing(reason),
|
|
212
|
+
// Business
|
|
213
|
+
businessNotMinter: (businessId, tokenAddress) => ErrorFactory.businessNotMinter(businessId, tokenAddress),
|
|
214
|
+
// Validation
|
|
215
|
+
unexpectedValidationScenario: (context) => ErrorFactory.unexpectedValidationScenario(context)
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* Advanced Error Builder for complex scenarios
|
|
219
|
+
* Still references domain classes when possible
|
|
220
|
+
*/
|
|
221
|
+
export class ErrorBuilder {
|
|
222
|
+
config = {};
|
|
223
|
+
static create() {
|
|
224
|
+
return new ErrorBuilder();
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Use a specific domain error class
|
|
228
|
+
*/
|
|
229
|
+
useClass(errorClass, ...params) {
|
|
230
|
+
this.config.errorClass = errorClass;
|
|
231
|
+
this.config.params = params;
|
|
232
|
+
return this;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Build the error instance
|
|
236
|
+
*/
|
|
237
|
+
build() {
|
|
238
|
+
if (this.config.errorClass && this.config.params) {
|
|
239
|
+
return new this.config.errorClass(...this.config.params);
|
|
240
|
+
}
|
|
241
|
+
throw new Error('ErrorBuilder: No error class specified');
|
|
242
|
+
}
|
|
243
|
+
// Convenience methods for common error types
|
|
244
|
+
buildUserNotFound(id) {
|
|
245
|
+
return new UserNotFoundError(id);
|
|
246
|
+
}
|
|
247
|
+
buildBusinessNotFound(id) {
|
|
248
|
+
return new BusinessNotFoundError(id);
|
|
249
|
+
}
|
|
250
|
+
buildAuthRequired(resource) {
|
|
251
|
+
return new AuthenticationRequiredError(resource);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=error-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-factory.js","sourceRoot":"","sources":["../../../../src/shared-patterns/errors/error-factory.ts"],"names":[],"mappings":"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"}
|