@venizia/ignis-docs 0.0.8-3 → 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.
- package/README.md +7 -7
- package/{wiki → content}/best-practices/api-usage-examples.md +15 -12
- package/{wiki → content}/best-practices/architectural-patterns.md +70 -78
- package/{wiki → content}/best-practices/architecture-decisions.md +91 -60
- package/{wiki → content}/best-practices/code-style-standards/advanced-patterns.md +56 -44
- package/{wiki → content}/best-practices/code-style-standards/constants-configuration.md +11 -11
- package/{wiki → content}/best-practices/code-style-standards/control-flow.md +5 -2
- package/{wiki → content}/best-practices/code-style-standards/documentation.md +13 -13
- package/{wiki → content}/best-practices/code-style-standards/function-patterns.md +9 -10
- package/{wiki → content}/best-practices/code-style-standards/index.md +1 -1
- package/{wiki → content}/best-practices/code-style-standards/naming-conventions.md +10 -8
- package/{wiki → content}/best-practices/code-style-standards/route-definitions.md +30 -12
- package/{wiki → content}/best-practices/code-style-standards/tooling.md +8 -5
- package/{wiki → content}/best-practices/code-style-standards/type-safety.md +13 -12
- package/{wiki → content}/best-practices/common-pitfalls.md +56 -37
- package/{wiki → content}/best-practices/contribution-workflow.md +13 -14
- package/{wiki → content}/best-practices/data-modeling.md +44 -20
- package/{wiki → content}/best-practices/deployment-strategies.md +28 -27
- package/{wiki → content}/best-practices/error-handling.md +48 -24
- package/{wiki → content}/best-practices/index.md +5 -5
- package/{wiki → content}/best-practices/performance-optimization.md +36 -28
- package/{wiki → content}/best-practices/security-guidelines.md +52 -23
- package/{wiki → content}/best-practices/testing-strategies.md +65 -51
- package/{wiki → content}/best-practices/troubleshooting-tips.md +24 -24
- package/{wiki/extensions/components/swagger.md → content/extensions/components/api-reference.md} +40 -31
- package/{wiki → content}/extensions/components/authentication/api.md +19 -19
- package/{wiki → content}/extensions/components/authentication/errors.md +7 -7
- package/{wiki → content}/extensions/components/authentication/index.md +10 -8
- package/{wiki → content}/extensions/components/authentication/usage.md +101 -6
- package/{wiki → content}/extensions/components/authorization/api.md +45 -25
- package/{wiki → content}/extensions/components/authorization/errors.md +6 -6
- package/{wiki → content}/extensions/components/authorization/index.md +11 -10
- package/{wiki → content}/extensions/components/authorization/usage.md +21 -21
- package/{wiki → content}/extensions/components/health-check.md +1 -1
- package/{wiki → content}/extensions/components/index.md +5 -5
- package/{wiki → content}/extensions/components/mail/errors.md +15 -15
- package/{wiki → content}/extensions/components/mail/index.md +1 -2
- package/{wiki → content}/extensions/components/mail/usage.md +1 -1
- package/{wiki → content}/extensions/components/request-tracker.md +1 -1
- package/{wiki → content}/extensions/components/socket-io/api.md +9 -9
- package/{wiki → content}/extensions/components/socket-io/errors.md +5 -5
- package/{wiki → content}/extensions/components/socket-io/index.md +8 -8
- package/{wiki → content}/extensions/components/socket-io/usage.md +1 -1
- package/{wiki → content}/extensions/components/static-asset/api.md +17 -4
- package/{wiki → content}/extensions/components/static-asset/errors.md +4 -4
- package/{wiki → content}/extensions/components/static-asset/index.md +26 -28
- package/{wiki → content}/extensions/components/static-asset/usage.md +13 -12
- package/{wiki → content}/extensions/components/template/index.md +2 -2
- package/{wiki → content}/extensions/components/template/setup-page.md +1 -1
- package/{wiki → content}/extensions/components/websocket/api.md +3 -3
- package/{wiki → content}/extensions/components/websocket/errors.md +5 -5
- package/{wiki → content}/extensions/components/websocket/index.md +5 -5
- package/{wiki → content}/extensions/components/websocket/usage.md +3 -3
- package/{wiki → content}/extensions/helpers/cron/index.md +2 -2
- package/{wiki → content}/extensions/helpers/crypto/index.md +1 -1
- package/{wiki → content}/extensions/helpers/env/index.md +27 -12
- package/content/extensions/helpers/error/index.md +283 -0
- package/{wiki → content}/extensions/helpers/index.md +2 -3
- package/{wiki → content}/extensions/helpers/inversion/index.md +15 -7
- package/{wiki → content}/extensions/helpers/kafka/examples.md +1 -1
- package/{wiki → content}/extensions/helpers/logger/index.md +32 -2
- package/{wiki → content}/extensions/helpers/network/index.md +6 -0
- package/{wiki → content}/extensions/helpers/queue/index.md +14 -17
- package/content/extensions/helpers/redis/index.md +713 -0
- package/{wiki → content}/extensions/helpers/socket-io/index.md +14 -10
- package/{wiki → content}/extensions/helpers/storage/api.md +44 -8
- package/{wiki → content}/extensions/helpers/storage/index.md +43 -7
- package/{wiki → content}/extensions/helpers/template/index.md +6 -3
- package/{wiki → content}/extensions/helpers/types/index.md +11 -8
- package/{wiki → content}/extensions/helpers/websocket/api.md +9 -9
- package/{wiki → content}/extensions/helpers/websocket/index.md +7 -7
- package/{wiki → content}/extensions/helpers/worker-thread/index.md +2 -2
- package/{wiki → content}/extensions/index.md +3 -4
- package/{wiki → content}/extensions/src-details/mcp-server.md +18 -24
- package/{wiki → content}/guides/core-concepts/application/bootstrapping.md +11 -14
- package/{wiki → content}/guides/core-concepts/application/index.md +3 -3
- package/{wiki → content}/guides/core-concepts/components.md +19 -10
- package/{wiki → content}/guides/core-concepts/dependency-injection.md +6 -3
- package/{wiki → content}/guides/core-concepts/grpc-controllers.md +6 -5
- package/{wiki → content}/guides/core-concepts/persistent/datasources.md +33 -27
- package/{wiki → content}/guides/core-concepts/persistent/index.md +16 -5
- package/{wiki → content}/guides/core-concepts/persistent/models.md +24 -20
- package/content/guides/core-concepts/persistent/postgres-drivers.md +167 -0
- package/{wiki → content}/guides/core-concepts/persistent/repositories.md +40 -23
- package/content/guides/core-concepts/persistent/search-meilisearch.md +183 -0
- package/content/guides/core-concepts/persistent/search-typesense.md +429 -0
- package/{wiki → content}/guides/core-concepts/persistent/transactions.md +61 -25
- package/{wiki → content}/guides/core-concepts/rest-controllers.md +12 -9
- package/content/guides/core-concepts/services.md +389 -0
- package/{wiki → content}/guides/get-started/5-minute-quickstart.md +19 -19
- package/{wiki → content}/guides/get-started/philosophy.md +36 -36
- package/{wiki → content}/guides/get-started/setup.md +3 -3
- package/{wiki → content}/guides/index.md +3 -3
- package/content/guides/migrations/redis-helpers-migration.md +177 -0
- package/{wiki → content}/guides/migrations/scoped-rbac-migration.md +17 -17
- package/content/guides/migrations/unified-connectors-migration.md +113 -0
- package/{wiki → content}/guides/reference/glossary.md +19 -12
- package/{wiki → content}/guides/reference/mcp-docs-server.md +22 -18
- package/{wiki → content}/guides/tutorials/building-a-crud-api.md +30 -33
- package/{wiki → content}/guides/tutorials/complete-installation.md +17 -17
- package/{wiki → content}/guides/tutorials/ecommerce-api.md +158 -119
- package/{wiki → content}/guides/tutorials/realtime-chat.md +176 -130
- package/content/guides/tutorials/testing.md +264 -0
- package/content/index.md +5 -0
- package/content/public/apple-touch-icon.png +0 -0
- package/content/public/og-image.png +0 -0
- package/content/public/site.webmanifest +11 -0
- package/{wiki → content}/references/base/application.md +4 -5
- package/{wiki → content}/references/base/bootstrapping.md +18 -5
- package/{wiki → content}/references/base/components.md +149 -120
- package/content/references/base/connectors.md +178 -0
- package/{wiki → content}/references/base/controllers.md +41 -30
- package/content/references/base/datasources.md +527 -0
- package/{wiki → content}/references/base/dependency-injection.md +34 -22
- package/{wiki → content}/references/base/filter-system/application-usage.md +17 -14
- package/{wiki → content}/references/base/filter-system/array-operators.md +7 -2
- package/{wiki → content}/references/base/filter-system/comparison-operators.md +3 -0
- package/{wiki → content}/references/base/filter-system/default-filter.md +89 -71
- package/{wiki → content}/references/base/filter-system/fields-order-pagination.md +22 -22
- package/{wiki → content}/references/base/filter-system/index.md +6 -3
- package/{wiki → content}/references/base/filter-system/json-filtering.md +20 -1
- package/{wiki → content}/references/base/filter-system/list-operators.md +1 -1
- package/{wiki → content}/references/base/filter-system/logical-operators.md +33 -1
- package/{wiki → content}/references/base/filter-system/null-operators.md +30 -1
- package/{wiki → content}/references/base/filter-system/quick-reference.md +23 -4
- package/{wiki → content}/references/base/filter-system/tips.md +5 -5
- package/{wiki → content}/references/base/filter-system/use-cases.md +12 -12
- package/{wiki → content}/references/base/grpc-controllers.md +13 -13
- package/{wiki → content}/references/base/index.md +24 -12
- package/{wiki/references/base/middleware.md → content/references/base/middlewares.md} +205 -24
- package/{wiki → content}/references/base/models.md +63 -49
- package/{wiki → content}/references/base/providers.md +136 -130
- package/{wiki → content}/references/base/repositories/advanced.md +59 -58
- package/{wiki → content}/references/base/repositories/index.md +115 -91
- package/content/references/base/repositories/mixins.md +99 -0
- package/{wiki → content}/references/base/repositories/relations.md +54 -64
- package/{wiki → content}/references/base/repositories/soft-deletable.md +31 -30
- package/content/references/base/services.md +404 -0
- package/{wiki → content}/references/configuration/environment-variables.md +46 -30
- package/{wiki → content}/references/configuration/index.md +6 -6
- package/{wiki → content}/references/index.md +17 -12
- package/{wiki → content}/references/quick-reference.md +65 -106
- package/content/references/utilities/crypto.md +98 -0
- package/{wiki → content}/references/utilities/index.md +3 -3
- package/{wiki → content}/references/utilities/jsx.md +6 -4
- package/content/references/utilities/module.md +90 -0
- package/{wiki → content}/references/utilities/parse.md +4 -14
- package/{wiki → content}/references/utilities/promise.md +9 -7
- package/{wiki → content}/references/utilities/schema.md +5 -3
- package/dist/mcp-server/common/guards.d.ts +8 -0
- package/dist/mcp-server/common/guards.d.ts.map +1 -0
- package/dist/mcp-server/common/guards.js +14 -0
- package/dist/mcp-server/common/guards.js.map +1 -0
- package/dist/mcp-server/common/index.d.ts +1 -0
- package/dist/mcp-server/common/index.d.ts.map +1 -1
- package/dist/mcp-server/common/index.js +1 -0
- package/dist/mcp-server/common/index.js.map +1 -1
- package/dist/mcp-server/common/paths.d.ts.map +1 -1
- package/dist/mcp-server/common/paths.js +2 -2
- package/dist/mcp-server/common/paths.js.map +1 -1
- package/dist/mcp-server/helpers/docs.helper.d.ts.map +1 -1
- package/dist/mcp-server/helpers/docs.helper.js +4 -2
- package/dist/mcp-server/helpers/docs.helper.js.map +1 -1
- package/dist/mcp-server/helpers/github.helper.js +1 -1
- package/dist/mcp-server/index.js +7 -2
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/mcp-server/tools/base.tool.d.ts +6 -2
- package/dist/mcp-server/tools/base.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/base.tool.js.map +1 -1
- package/dist/mcp-server/tools/docs/search-documents.tool.d.ts +1 -1
- package/dist/mcp-server/tools/github/list-project-files.tool.d.ts +1 -1
- package/dist/mcp-server/tools/github/search-code.tool.d.ts +1 -1
- package/dist/mcp-server/tools/github/search-code.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/github/search-code.tool.js +4 -1
- package/dist/mcp-server/tools/github/search-code.tool.js.map +1 -1
- package/dist/mcp-server/tools/github/verify-dependencies.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/github/verify-dependencies.tool.js +3 -1
- package/dist/mcp-server/tools/github/verify-dependencies.tool.js.map +1 -1
- package/package.json +12 -12
- package/wiki/extensions/helpers/error/index.md +0 -227
- package/wiki/extensions/helpers/redis/index.md +0 -488
- package/wiki/extensions/helpers/testing/index.md +0 -510
- package/wiki/guides/core-concepts/services.md +0 -119
- package/wiki/guides/tutorials/testing.md +0 -722
- package/wiki/index.md +0 -183
- package/wiki/references/base/datasources.md +0 -454
- package/wiki/references/base/middlewares.md +0 -590
- package/wiki/references/base/repositories/mixins.md +0 -335
- package/wiki/references/base/services.md +0 -201
- package/wiki/references/utilities/crypto.md +0 -56
- package/wiki/references/utilities/module.md +0 -42
- /package/{wiki → content}/extensions/components/mail/api.md +0 -0
- /package/{wiki → content}/extensions/components/template/api-page.md +0 -0
- /package/{wiki → content}/extensions/components/template/errors-page.md +0 -0
- /package/{wiki → content}/extensions/components/template/single-page.md +0 -0
- /package/{wiki → content}/extensions/components/template/usage-page.md +0 -0
- /package/{wiki → content}/extensions/helpers/kafka/admin.md +0 -0
- /package/{wiki → content}/extensions/helpers/kafka/consumer.md +0 -0
- /package/{wiki → content}/extensions/helpers/kafka/index.md +0 -0
- /package/{wiki → content}/extensions/helpers/kafka/producer.md +0 -0
- /package/{wiki → content}/extensions/helpers/kafka/schema-registry.md +0 -0
- /package/{wiki → content}/extensions/helpers/network/api.md +0 -0
- /package/{wiki → content}/extensions/helpers/socket-io/api.md +0 -0
- /package/{wiki → content}/extensions/helpers/template/single-page.md +0 -0
- /package/{wiki → content}/extensions/helpers/uid/index.md +0 -0
- /package/{wiki → content}/guides/core-concepts/components-guide.md +0 -0
- /package/{wiki → content}/public/logo.svg +0 -0
- /package/{wiki → content}/references/base/filter-system/pattern-matching.md +0 -0
- /package/{wiki → content}/references/base/filter-system/range-operators.md +0 -0
- /package/{wiki → content}/references/utilities/date.md +0 -0
- /package/{wiki → content}/references/utilities/performance.md +0 -0
- /package/{wiki → content}/references/utilities/request.md +0 -0
- /package/{wiki → content}/references/utilities/statuses.md +0 -0
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
# Error
|
|
2
|
-
|
|
3
|
-
Standardized error class and factory for throwing HTTP-aware errors with machine-readable codes across the application.
|
|
4
|
-
|
|
5
|
-
## Quick Reference
|
|
6
|
-
|
|
7
|
-
| Item | Value |
|
|
8
|
-
|------|-------|
|
|
9
|
-
| **Package** | `@venizia/ignis-helpers` |
|
|
10
|
-
| **Class** | `ApplicationError` |
|
|
11
|
-
| **Extends** | `Error` (native) |
|
|
12
|
-
| **Runtimes** | Both |
|
|
13
|
-
|
|
14
|
-
#### Import Paths
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
import { ApplicationError, getError } from '@venizia/ignis-helpers';
|
|
18
|
-
import { ErrorSchema } from '@venizia/ignis-helpers';
|
|
19
|
-
import type { TError } from '@venizia/ignis-helpers';
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Creating an Instance
|
|
23
|
-
|
|
24
|
-
`ApplicationError` extends the native `Error` class with an HTTP `statusCode` and an optional `messageCode` for machine-readable error identification.
|
|
25
|
-
|
|
26
|
-
```typescript
|
|
27
|
-
import { ApplicationError, HTTP } from '@venizia/ignis-helpers';
|
|
28
|
-
|
|
29
|
-
const error = new ApplicationError({
|
|
30
|
-
message: 'User not found',
|
|
31
|
-
statusCode: HTTP.ResultCodes.RS_4.NotFound,
|
|
32
|
-
messageCode: 'USER_NOT_FOUND',
|
|
33
|
-
});
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
#### Constructor Options (`TError`)
|
|
37
|
-
|
|
38
|
-
| Option | Type | Default | Description |
|
|
39
|
-
|--------|------|---------|-------------|
|
|
40
|
-
| `message` | `string` | -- (required) | Human-readable error message |
|
|
41
|
-
| `statusCode` | `number` | `400` | HTTP status code |
|
|
42
|
-
| `messageCode` | `string` | `undefined` | Machine-readable error code for client-side handling |
|
|
43
|
-
| `name` | `string` | `undefined` | Error name |
|
|
44
|
-
|
|
45
|
-
> [!TIP]
|
|
46
|
-
> The `TError` type is derived from `ErrorSchema` (a Zod schema) and uses `.catchall(z.any())`, so you can pass additional arbitrary properties beyond the four listed above.
|
|
47
|
-
|
|
48
|
-
#### `getError()` Factory Function
|
|
49
|
-
|
|
50
|
-
For convenience, use the standalone `getError()` function instead of calling `new ApplicationError()` directly. This is the preferred pattern throughout the Ignis codebase.
|
|
51
|
-
|
|
52
|
-
```typescript
|
|
53
|
-
import { getError, HTTP } from '@venizia/ignis-helpers';
|
|
54
|
-
|
|
55
|
-
throw getError({
|
|
56
|
-
message: 'Invalid credentials',
|
|
57
|
-
statusCode: HTTP.ResultCodes.RS_4.Unauthorized,
|
|
58
|
-
messageCode: 'INVALID_CREDENTIALS',
|
|
59
|
-
});
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
#### `ApplicationError.getError()` Static Method
|
|
63
|
-
|
|
64
|
-
An equivalent static factory method on the class itself:
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
throw ApplicationError.getError({
|
|
68
|
-
message: 'Configuration missing',
|
|
69
|
-
statusCode: HTTP.ResultCodes.RS_5.InternalServerError,
|
|
70
|
-
});
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Usage
|
|
74
|
-
|
|
75
|
-
### Throwing Errors in Services
|
|
76
|
-
|
|
77
|
-
The most common pattern is throwing `ApplicationError` from service methods to signal HTTP-level failures. The framework's error handling middleware catches these and formats the response automatically.
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
import { getError, HTTP } from '@venizia/ignis-helpers';
|
|
81
|
-
|
|
82
|
-
class AuthenticationService {
|
|
83
|
-
async signUp(opts: { username: string; credential: string }) {
|
|
84
|
-
const existingUser = await this.userRepository.findByUsername(opts.username);
|
|
85
|
-
if (existingUser) {
|
|
86
|
-
throw getError({
|
|
87
|
-
statusCode: HTTP.ResultCodes.RS_4.Conflict,
|
|
88
|
-
message: 'Username already exists',
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
// ...
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Using `messageCode` for Client-Side Handling
|
|
97
|
-
|
|
98
|
-
The `messageCode` field allows frontend applications to map errors to localized messages or specific UI behaviors without parsing the human-readable `message` string.
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
throw getError({
|
|
102
|
-
message: 'Email verification required before login',
|
|
103
|
-
statusCode: HTTP.ResultCodes.RS_4.Forbidden,
|
|
104
|
-
messageCode: 'auth.email_not_verified',
|
|
105
|
-
});
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Error Response Format
|
|
109
|
-
|
|
110
|
-
The built-in `appErrorHandler` middleware (from `@venizia/ignis`) catches `ApplicationError` instances and formats them into consistent JSON responses. The response shape differs by environment.
|
|
111
|
-
|
|
112
|
-
#### Production Response
|
|
113
|
-
|
|
114
|
-
```json
|
|
115
|
-
{
|
|
116
|
-
"message": "User not found",
|
|
117
|
-
"statusCode": 404,
|
|
118
|
-
"requestId": "abc-123-def"
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
#### Development Response
|
|
123
|
-
|
|
124
|
-
In development (`NODE_ENV=development`), additional debugging fields are included:
|
|
125
|
-
|
|
126
|
-
```json
|
|
127
|
-
{
|
|
128
|
-
"message": "User not found",
|
|
129
|
-
"statusCode": 404,
|
|
130
|
-
"requestId": "abc-123-def",
|
|
131
|
-
"details": {
|
|
132
|
-
"url": "http://localhost:3000/api/users/123",
|
|
133
|
-
"path": "/api/users/123",
|
|
134
|
-
"stack": "Error: User not found\n at ...",
|
|
135
|
-
"cause": "..."
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### ErrorSchema (Zod)
|
|
141
|
-
|
|
142
|
-
`ErrorSchema` is a Zod object schema used for OpenAPI response documentation. It is typically referenced in route definitions to describe error responses.
|
|
143
|
-
|
|
144
|
-
```typescript
|
|
145
|
-
import { ErrorSchema, HTTP } from '@venizia/ignis-helpers';
|
|
146
|
-
|
|
147
|
-
// In route definition responses
|
|
148
|
-
const responses = {
|
|
149
|
-
[HTTP.ResultCodes.RS_4.NotFound]: {
|
|
150
|
-
description: 'Resource not found',
|
|
151
|
-
content: {
|
|
152
|
-
'application/json': { schema: ErrorSchema },
|
|
153
|
-
},
|
|
154
|
-
},
|
|
155
|
-
};
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
The schema shape:
|
|
159
|
-
|
|
160
|
-
```typescript
|
|
161
|
-
const ErrorSchema = z
|
|
162
|
-
.object({
|
|
163
|
-
name: z.string().optional(),
|
|
164
|
-
statusCode: z.number().optional(),
|
|
165
|
-
messageCode: z.string().optional(),
|
|
166
|
-
message: z.string(),
|
|
167
|
-
})
|
|
168
|
-
.catchall(z.any());
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### Common Status Code Patterns
|
|
172
|
-
|
|
173
|
-
| Scenario | Status Code | `HTTP.ResultCodes` Path |
|
|
174
|
-
|----------|-------------|-------------------------|
|
|
175
|
-
| Invalid input / bad request | 400 | `RS_4.BadRequest` |
|
|
176
|
-
| Missing or invalid auth | 401 | `RS_4.Unauthorized` |
|
|
177
|
-
| Insufficient permissions | 403 | `RS_4.Forbidden` |
|
|
178
|
-
| Resource not found | 404 | `RS_4.NotFound` |
|
|
179
|
-
| Duplicate resource | 409 | `RS_4.Conflict` |
|
|
180
|
-
| Validation error | 422 | `RS_4.UnprocessableEntity` |
|
|
181
|
-
| Server failure | 500 | `RS_5.InternalServerError` |
|
|
182
|
-
|
|
183
|
-
## Troubleshooting
|
|
184
|
-
|
|
185
|
-
### `statusCode` defaults to 400
|
|
186
|
-
|
|
187
|
-
**Cause:** `getError()` was called without specifying a `statusCode`. The `ApplicationError` constructor defaults to `400` (Bad Request).
|
|
188
|
-
|
|
189
|
-
**Fix:** Always provide an explicit status code using `HTTP.ResultCodes`:
|
|
190
|
-
|
|
191
|
-
```typescript
|
|
192
|
-
throw getError({
|
|
193
|
-
message: 'Resource not found',
|
|
194
|
-
statusCode: HTTP.ResultCodes.RS_4.NotFound,
|
|
195
|
-
});
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### Error response missing `stack` and `cause`
|
|
199
|
-
|
|
200
|
-
**Cause:** The application is running in production mode. The `appErrorHandler` middleware strips `stack`, `cause`, `url`, and `path` from responses when `NODE_ENV` is not `development`.
|
|
201
|
-
|
|
202
|
-
**Fix:** Set `NODE_ENV=development` to see full error details during debugging.
|
|
203
|
-
|
|
204
|
-
### Errors returning 500 instead of expected status code
|
|
205
|
-
|
|
206
|
-
**Cause:** A plain `Error` (not `ApplicationError`) was thrown. The `appErrorHandler` middleware only reads `statusCode` from errors that have that property. Native `Error` instances default to `500`.
|
|
207
|
-
|
|
208
|
-
**Fix:** Use `getError()` or `new ApplicationError()` instead of `new Error()`:
|
|
209
|
-
|
|
210
|
-
```typescript
|
|
211
|
-
// Incorrect -- will return 500
|
|
212
|
-
throw new Error('Not found');
|
|
213
|
-
|
|
214
|
-
// Correct -- will return 404
|
|
215
|
-
throw getError({
|
|
216
|
-
message: 'Not found',
|
|
217
|
-
statusCode: HTTP.ResultCodes.RS_4.NotFound,
|
|
218
|
-
});
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
## See Also
|
|
222
|
-
|
|
223
|
-
- [Controllers](/references/base/controllers) -- Throwing errors in route handlers
|
|
224
|
-
- [Services](/references/base/services) -- Error handling in business logic
|
|
225
|
-
- [Middlewares](/references/base/middlewares) -- The `appErrorHandler` middleware
|
|
226
|
-
- [Helpers Index](/extensions/helpers/) -- All available helpers
|
|
227
|
-
- [Logger Helper](/extensions/helpers/logger/) -- Logging errors
|