@breadstone/archipel-mcp 0.0.28 → 0.0.30
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/data/guides/queue-infrastructure.md +62 -0
- package/data/packages/platform-analytics/index.md +2 -0
- package/data/packages/platform-authentication/api/Class.AuthModule.md +3 -3
- package/data/packages/platform-authentication/api/Class.JwtAuthGuard.md +37 -5
- package/data/packages/platform-authentication/api/Interface.IAuthModuleOptions.md +12 -12
- package/data/packages/platform-authentication/api/index.md +1 -2
- package/data/packages/platform-authentication/index.md +2 -0
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_PROVIDER_OPTIONS.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.AZURE_BLOB_PROVIDER_OPTIONS.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.BLOB_PROVIDER.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.VERCEL_BLOB_PROVIDER_OPTIONS.md +1 -1
- package/data/packages/platform-blob-storage/index.md +2 -0
- package/data/packages/platform-caching/index.md +2 -0
- package/data/packages/platform-configuration/index.md +2 -0
- package/data/packages/platform-core/index.md +2 -0
- package/data/packages/platform-cryptography/index.md +2 -0
- package/data/packages/platform-database/index.md +2 -0
- package/data/packages/platform-documents/index.md +2 -0
- package/data/packages/platform-esigning/index.md +2 -0
- package/data/packages/platform-health/index.md +2 -0
- package/data/packages/platform-intelligence/index.md +2 -0
- package/data/packages/platform-logging/index.md +2 -0
- package/data/packages/platform-mailing/index.md +2 -0
- package/data/packages/platform-mapping/index.md +2 -0
- package/data/packages/platform-mcp/index.md +2 -0
- package/data/packages/platform-openapi/index.md +2 -0
- package/data/packages/platform-payments/index.md +2 -0
- package/data/packages/platform-queue/api/Class.VercelQueue.md +234 -0
- package/data/packages/platform-queue/api/Interface.IVercelQueueOptions.md +91 -0
- package/data/packages/platform-queue/api/Variable.VERCEL_CONFIG_ENTRIES.md +17 -0
- package/data/packages/platform-queue/api/Variable.VERCEL_QUEUE_CONSUMER_GROUP.md +14 -0
- package/data/packages/platform-queue/api/Variable.VERCEL_QUEUE_DEPLOYMENT_ID.md +14 -0
- package/data/packages/platform-queue/api/Variable.VERCEL_QUEUE_REGION.md +14 -0
- package/data/packages/platform-queue/api/Variable.VERCEL_QUEUE_TOKEN.md +16 -0
- package/data/packages/platform-queue/api/Variable.VERCEL_QUEUE_VISIBILITY_TIMEOUT_SECONDS.md +23 -0
- package/data/packages/platform-queue/api/index.md +8 -0
- package/data/packages/platform-queue/index.md +27 -3
- package/data/packages/platform-reporting/index.md +2 -0
- package/data/packages/platform-resources/index.md +2 -0
- package/data/packages/platform-telemetry/index.md +2 -0
- package/package.json +1 -1
- package/data/packages/platform-authentication/api/Class.GithubAuthGuard.md +0 -40
|
@@ -28,6 +28,12 @@ For Azure Service Bus:
|
|
|
28
28
|
yarn add @azure/service-bus
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
+
For Vercel Queues:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
yarn add @vercel/queue
|
|
35
|
+
```
|
|
36
|
+
|
|
31
37
|
---
|
|
32
38
|
|
|
33
39
|
## Configuration
|
|
@@ -58,6 +64,18 @@ AZURE_RECEIVE_WAIT_MS=5000
|
|
|
58
64
|
|
|
59
65
|
`AZURE_CONNECTION_STRING` is required when using `AzureQueue`. `AZURE_RECEIVE_WAIT_MS` is optional (defaults to `5000`).
|
|
60
66
|
|
|
67
|
+
### Vercel Queues Variables
|
|
68
|
+
|
|
69
|
+
```env
|
|
70
|
+
VERCEL_QUEUE_REGION=iad1
|
|
71
|
+
VERCEL_QUEUE_CONSUMER_GROUP=my-consumer
|
|
72
|
+
VERCEL_QUEUE_TOKEN=
|
|
73
|
+
VERCEL_QUEUE_DEPLOYMENT_ID=
|
|
74
|
+
VERCEL_QUEUE_VISIBILITY_TIMEOUT_SECONDS=300
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
`VERCEL_QUEUE_REGION` and `VERCEL_QUEUE_CONSUMER_GROUP` are required when using `VercelQueue`. `VERCEL_QUEUE_TOKEN` is auto-fetched via OIDC when omitted. `VERCEL_QUEUE_VISIBILITY_TIMEOUT_SECONDS` defaults to `300`.
|
|
78
|
+
|
|
61
79
|
### Using Config Keys
|
|
62
80
|
|
|
63
81
|
Import the typed config keys and pass them to your module registration:
|
|
@@ -66,6 +84,7 @@ Import the typed config keys and pass them to your module registration:
|
|
|
66
84
|
import { PLATFORM_QUEUE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-queue';
|
|
67
85
|
import { BULLMQ_CONFIG_ENTRIES } from '@breadstone/archipel-platform-queue/bullmq';
|
|
68
86
|
import { AZURE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-queue/azure';
|
|
87
|
+
import { VERCEL_CONFIG_ENTRIES } from '@breadstone/archipel-platform-queue/vercel';
|
|
69
88
|
```
|
|
70
89
|
|
|
71
90
|
---
|
|
@@ -79,6 +98,7 @@ import { AZURE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-queue/azure'
|
|
|
79
98
|
| `MemoryQueue` | In-memory | No | Development, testing, single-instance apps |
|
|
80
99
|
| `BullMqQueue` | Redis via BullMQ | Yes | Multi-instance deployments, distributed jobs|
|
|
81
100
|
| `AzureQueue` | Azure Service Bus | Yes | Enterprise cloud messaging, peek-lock |
|
|
101
|
+
| `VercelQueue` | Vercel Queues | Yes | Serverless Vercel deployments |
|
|
82
102
|
|
|
83
103
|
All implementations share the same `IQueue` contract, so switching providers requires only changing the import and constructor options — no business logic changes.
|
|
84
104
|
|
|
@@ -200,6 +220,48 @@ Senders and receivers are lazily created per queue name and cached for the lifet
|
|
|
200
220
|
|
|
201
221
|
---
|
|
202
222
|
|
|
223
|
+
## Vercel Queues
|
|
224
|
+
|
|
225
|
+
### Basic Setup
|
|
226
|
+
|
|
227
|
+
`VercelQueue` uses the official `@vercel/queue` SDK (`PollingQueueClient`) for durable, serverless message streaming on Vercel:
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
import { Module } from '@nestjs/common';
|
|
231
|
+
import { VercelQueue } from '@breadstone/archipel-platform-queue/vercel';
|
|
232
|
+
|
|
233
|
+
@Module({
|
|
234
|
+
providers: [
|
|
235
|
+
{
|
|
236
|
+
provide: 'IQueue',
|
|
237
|
+
useFactory: () =>
|
|
238
|
+
new VercelQueue({
|
|
239
|
+
region: 'iad1',
|
|
240
|
+
consumerGroup: 'my-consumer',
|
|
241
|
+
}),
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
exports: ['IQueue'],
|
|
245
|
+
})
|
|
246
|
+
export class QueueModule {}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### How It Works
|
|
250
|
+
|
|
251
|
+
`enqueue()` calls `send()` on the SDK to publish a message to the given topic. `dequeue()` calls `receive()`, which invokes a handler callback when a message is available. The handler is suspended via an internal gate promise until `markCompleted()` or `markFailed()` is called, at which point the handler completes and the SDK auto-acknowledges the message.
|
|
252
|
+
|
|
253
|
+
Both `markCompleted()` and `markFailed()` acknowledge (remove) the message. If retry behaviour is desired, re-enqueue the job explicitly.
|
|
254
|
+
|
|
255
|
+
### Authentication
|
|
256
|
+
|
|
257
|
+
When deployed on Vercel, the SDK auto-fetches an OIDC token. For local development, provide a `token` in the constructor options.
|
|
258
|
+
|
|
259
|
+
### Graceful Shutdown
|
|
260
|
+
|
|
261
|
+
`VercelQueue` implements `OnModuleDestroy` and releases all pending gates, causing in-flight SDK handlers to complete normally and acknowledge their messages.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
203
265
|
## Usage in Services
|
|
204
266
|
|
|
205
267
|
Inject the `IQueue` token and use the same API regardless of the underlying provider:
|
|
@@ -5,7 +5,7 @@ editUrl: false
|
|
|
5
5
|
---
|
|
6
6
|
# Class: AuthModule
|
|
7
7
|
|
|
8
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
8
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:145](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L145)
|
|
9
9
|
|
|
10
10
|
The `AuthModule` handles JWT-based authentication,
|
|
11
11
|
including token creation and validation.
|
|
@@ -39,7 +39,7 @@ new AuthModule(): AuthModule;
|
|
|
39
39
|
configure(consumer): void;
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
42
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:265](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L265)
|
|
43
43
|
|
|
44
44
|
#### Parameters
|
|
45
45
|
|
|
@@ -59,7 +59,7 @@ Defined in: [libs/platform-authentication/src/AuthModule.ts:268](https://github.
|
|
|
59
59
|
static register(options): DynamicModule;
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
62
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:155](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L155)
|
|
63
63
|
|
|
64
64
|
Registers the auth module with the provided port implementations.
|
|
65
65
|
|
|
@@ -5,9 +5,12 @@ editUrl: false
|
|
|
5
5
|
---
|
|
6
6
|
# Class: JwtAuthGuard
|
|
7
7
|
|
|
8
|
-
Defined in: [libs/platform-authentication/src/guards/JwtAuthGuard.ts:
|
|
8
|
+
Defined in: [libs/platform-authentication/src/guards/JwtAuthGuard.ts:19](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/guards/JwtAuthGuard.ts#L19)
|
|
9
9
|
|
|
10
10
|
The `JwtAuthGuard` protects routes using JWT-based authentication.
|
|
11
|
+
It checks for the `@Public()` decorator metadata.
|
|
12
|
+
When registered as `APP_GUARD`, all routes require JWT authentication by default.
|
|
13
|
+
Routes decorated with `@Public()` are exempt.
|
|
11
14
|
|
|
12
15
|
## Extends
|
|
13
16
|
|
|
@@ -18,23 +21,52 @@ The `JwtAuthGuard` protects routes using JWT-based authentication.
|
|
|
18
21
|
### Constructor
|
|
19
22
|
|
|
20
23
|
```ts
|
|
21
|
-
new JwtAuthGuard(
|
|
24
|
+
new JwtAuthGuard(reflector): JwtAuthGuard;
|
|
22
25
|
```
|
|
23
26
|
|
|
24
|
-
Defined in:
|
|
27
|
+
Defined in: [libs/platform-authentication/src/guards/JwtAuthGuard.ts:22](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/guards/JwtAuthGuard.ts#L22)
|
|
25
28
|
|
|
26
29
|
#### Parameters
|
|
27
30
|
|
|
28
31
|
| Parameter | Type |
|
|
29
32
|
| ------ | ------ |
|
|
30
|
-
|
|
|
33
|
+
| `reflector` | `Reflector` |
|
|
31
34
|
|
|
32
35
|
#### Returns
|
|
33
36
|
|
|
34
37
|
`JwtAuthGuard`
|
|
35
38
|
|
|
36
|
-
####
|
|
39
|
+
#### Overrides
|
|
37
40
|
|
|
38
41
|
```ts
|
|
39
42
|
AuthGuard('jwt').constructor
|
|
40
43
|
```
|
|
44
|
+
|
|
45
|
+
## Methods
|
|
46
|
+
|
|
47
|
+
### canActivate()
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
canActivate(context): boolean | Promise<boolean> | Observable<boolean>;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Defined in: [libs/platform-authentication/src/guards/JwtAuthGuard.ts:30](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/guards/JwtAuthGuard.ts#L30)
|
|
54
|
+
|
|
55
|
+
#### Parameters
|
|
56
|
+
|
|
57
|
+
| Parameter | Type | Description |
|
|
58
|
+
| ------ | ------ | ------ |
|
|
59
|
+
| `context` | `ExecutionContext` | Current execution context. Provides access to details about the current request pipeline. |
|
|
60
|
+
|
|
61
|
+
#### Returns
|
|
62
|
+
|
|
63
|
+
`boolean` \| `Promise`\<`boolean`\> \| `Observable`\<`boolean`\>
|
|
64
|
+
|
|
65
|
+
Value indicating whether or not the current request is allowed to
|
|
66
|
+
proceed.
|
|
67
|
+
|
|
68
|
+
#### Overrides
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
AuthGuard('jwt').canActivate
|
|
72
|
+
```
|
|
@@ -5,7 +5,7 @@ editUrl: false
|
|
|
5
5
|
---
|
|
6
6
|
# Interface: IAuthModuleOptions
|
|
7
7
|
|
|
8
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
8
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:56](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L56)
|
|
9
9
|
|
|
10
10
|
Options for configuring the `AuthModule`.
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ Options for configuring the `AuthModule`.
|
|
|
17
17
|
optional additionalConfigEntries?: readonly Omit<IConfigRegistryEntry<unknown>, "module">[];
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
20
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:96](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L96)
|
|
21
21
|
|
|
22
22
|
Optional additional configuration entries to register (e.g. provider-specific OAuth keys).
|
|
23
23
|
Import them from the provider-specific sub-paths
|
|
@@ -31,7 +31,7 @@ Import them from the provider-specific sub-paths
|
|
|
31
31
|
optional additionalProviders?: Provider[];
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
34
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:118](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L118)
|
|
35
35
|
|
|
36
36
|
Optional additional providers required by optional features (e.g. TOTP MFA).
|
|
37
37
|
Import them from the provider-specific sub-paths
|
|
@@ -45,7 +45,7 @@ Import them from the provider-specific sub-paths
|
|
|
45
45
|
authSubject: Type<AuthSubjectPort>;
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
48
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:60](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L60)
|
|
49
49
|
|
|
50
50
|
Implementation of the auth subject port (user lookup for JWT/Local/Anonymous connectors).
|
|
51
51
|
|
|
@@ -57,7 +57,7 @@ Implementation of the auth subject port (user lookup for JWT/Local/Anonymous con
|
|
|
57
57
|
optional challengeStore?: Type<ChallengeStorePort>;
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
60
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:125](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L125)
|
|
61
61
|
|
|
62
62
|
Optional implementation of the challenge store port.
|
|
63
63
|
Defaults to an in-memory store suitable for single-instance deployments.
|
|
@@ -71,7 +71,7 @@ For multi-instance deployments, provide a Redis-backed implementation.
|
|
|
71
71
|
optional mfaChannels?: Type<any>[];
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
74
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:111](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L111)
|
|
75
75
|
|
|
76
76
|
Optional array of additional MFA channel types to register (e.g. `TotpMfaChannel`).
|
|
77
77
|
Import them from the provider-specific sub-paths
|
|
@@ -87,7 +87,7 @@ Built-in channels (SMS, Email, Push) are always registered.
|
|
|
87
87
|
mfaSubject: Type<MfaSubjectPort>;
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
90
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:65](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L65)
|
|
91
91
|
|
|
92
92
|
Implementation of the MFA subject port (MFA state persistence).
|
|
93
93
|
|
|
@@ -99,7 +99,7 @@ Implementation of the MFA subject port (MFA state persistence).
|
|
|
99
99
|
sessionPersistence: Type<SessionPersistencePort>;
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
102
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:70](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L70)
|
|
103
103
|
|
|
104
104
|
Implementation of the session persistence port.
|
|
105
105
|
|
|
@@ -111,7 +111,7 @@ Implementation of the session persistence port.
|
|
|
111
111
|
optional socialAuth?: Type<SocialAuthPort>;
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
114
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:81](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L81)
|
|
115
115
|
|
|
116
116
|
Optional implementation of the social auth port (OAuth connectors).
|
|
117
117
|
When provided together with `socialConnectors`, the social auth flow is enabled.
|
|
@@ -124,7 +124,7 @@ When provided together with `socialConnectors`, the social auth flow is enabled.
|
|
|
124
124
|
optional socialConnectors?: Type<any>[];
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
127
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:89](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L89)
|
|
128
128
|
|
|
129
129
|
Optional array of social connector types to register (e.g. `AppleConnector`, `GithubConnector`).
|
|
130
130
|
Import them from the provider-specific sub-paths
|
|
@@ -139,7 +139,7 @@ Requires `socialAuth` to be set.
|
|
|
139
139
|
optional tokenEnricher?: Type<TokenEnricherPort>;
|
|
140
140
|
```
|
|
141
141
|
|
|
142
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
142
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:102](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L102)
|
|
143
143
|
|
|
144
144
|
Optional implementation of the token enricher port.
|
|
145
145
|
When provided, additional claims are added to JWT tokens.
|
|
@@ -152,6 +152,6 @@ When provided, additional claims are added to JWT tokens.
|
|
|
152
152
|
verificationSubject: Type<VerificationSubjectPort>;
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
-
Defined in: [libs/platform-authentication/src/AuthModule.ts:
|
|
155
|
+
Defined in: [libs/platform-authentication/src/AuthModule.ts:75](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/AuthModule.ts#L75)
|
|
156
156
|
|
|
157
157
|
Implementation of the verification subject port (email/pin verification).
|
|
@@ -17,10 +17,9 @@ editUrl: false
|
|
|
17
17
|
| [AuthTokenService](Class.AuthTokenService) | Generic service responsible for creating JWT access tokens. Builds a base payload from [IAuthSubject](Interface.IAuthSubject) and optionally enriches it via the [TokenEnricherPort](Class.TokenEnricherPort) with product-specific claims. |
|
|
18
18
|
| [ChallengeService](Class.ChallengeService) | Stores and validates MFA login challenges. |
|
|
19
19
|
| [ChallengeStorePort](Class.ChallengeStorePort) | Abstract port for persisting MFA challenge state. |
|
|
20
|
-
| [GithubAuthGuard](Class.GithubAuthGuard) | The `GithubAuthGuard` protects routes using GitHub authentication. |
|
|
21
20
|
| [GithubConnector](Class.GithubConnector) | - |
|
|
22
21
|
| [GoogleConnector](Class.GoogleConnector) | The `GoogleConnector` integrates Google OAuth authentication. |
|
|
23
|
-
| [JwtAuthGuard](Class.JwtAuthGuard) | The `JwtAuthGuard` protects routes using JWT-based authentication. |
|
|
22
|
+
| [JwtAuthGuard](Class.JwtAuthGuard) | The `JwtAuthGuard` protects routes using JWT-based authentication. It checks for the `@Public()` decorator metadata. When registered as `APP_GUARD`, all routes require JWT authentication by default. Routes decorated with `@Public()` are exempt. |
|
|
24
23
|
| [JwtPayloadBase](Class.JwtPayloadBase) | Abstract base class for JWT payloads. Products extend this to add their own claims (e.g. `profileId`, `isPro`). Used as both a serialization contract and NestJS injection token. |
|
|
25
24
|
| [LastActiveMiddleware](Class.LastActiveMiddleware) | Middleware to automatically update the lastActive timestamp for authenticated sessions. Extracts the JWT token from the Authorization header and updates the session asynchronously. |
|
|
26
25
|
| [LocalAuthGuard](Class.LocalAuthGuard) | The `LocalAuthGuard` protects routes using local authentication. |
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const AWS_S3_PROVIDER_OPTIONS: typeof AWS_S3_PROVIDER_OPTIONS;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [BlobStorageTokens.ts:6](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/BlobStorageTokens.ts#L6)
|
|
12
|
+
Defined in: [tokens/BlobStorageTokens.ts:6](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/tokens/BlobStorageTokens.ts#L6)
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const AZURE_BLOB_PROVIDER_OPTIONS: typeof AZURE_BLOB_PROVIDER_OPTIONS;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [BlobStorageTokens.ts:5](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/BlobStorageTokens.ts#L5)
|
|
12
|
+
Defined in: [tokens/BlobStorageTokens.ts:5](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/tokens/BlobStorageTokens.ts#L5)
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const BLOB_PROVIDER: typeof BLOB_PROVIDER;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [BlobStorageTokens.ts:3](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/BlobStorageTokens.ts#L3)
|
|
12
|
+
Defined in: [tokens/BlobStorageTokens.ts:3](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/tokens/BlobStorageTokens.ts#L3)
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const VERCEL_BLOB_PROVIDER_OPTIONS: typeof VERCEL_BLOB_PROVIDER_OPTIONS;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [BlobStorageTokens.ts:4](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/BlobStorageTokens.ts#L4)
|
|
12
|
+
Defined in: [tokens/BlobStorageTokens.ts:4](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/tokens/BlobStorageTokens.ts#L4)
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Class: VercelQueue'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Class: VercelQueue
|
|
7
|
+
|
|
8
|
+
Defined in: [vercel/VercelQueue.ts:117](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L117)
|
|
9
|
+
|
|
10
|
+
Vercel Queues implementation of the [IQueue](Interface.IQueue) contract.
|
|
11
|
+
|
|
12
|
+
Uses the official `@vercel/queue` SDK (`PollingQueueClient`) for
|
|
13
|
+
durable, serverless message streaming. Messages are published to
|
|
14
|
+
topics and consumed via poll-based consumer groups.
|
|
15
|
+
|
|
16
|
+
## Remarks
|
|
17
|
+
|
|
18
|
+
This adapter maps the topic/consumer-group model to the
|
|
19
|
+
[IQueue](Interface.IQueue) interface by treating topic names as queue names.
|
|
20
|
+
|
|
21
|
+
[dequeue](#dequeue) calls `receive()` on the SDK. The handler callback
|
|
22
|
+
is suspended via an internal gate promise until
|
|
23
|
+
[markCompleted](#markcompleted) or [markFailed](#markfailed) is invoked, at which
|
|
24
|
+
point the handler completes and the SDK auto-acknowledges the
|
|
25
|
+
message. This gives callers explicit control over the job lifecycle
|
|
26
|
+
while relying on the SDK for authentication, serialisation, and
|
|
27
|
+
visibility-timeout extension.
|
|
28
|
+
|
|
29
|
+
Both [markCompleted](#markcompleted) and [markFailed](#markfailed) acknowledge
|
|
30
|
+
(remove) the message. If retry behaviour is desired, re-enqueue
|
|
31
|
+
the job explicitly.
|
|
32
|
+
|
|
33
|
+
## Implements
|
|
34
|
+
|
|
35
|
+
- [`IQueue`](Interface.IQueue)
|
|
36
|
+
- `OnModuleDestroy`
|
|
37
|
+
|
|
38
|
+
## Constructors
|
|
39
|
+
|
|
40
|
+
### Constructor
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
new VercelQueue(options): VercelQueue;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Defined in: [vercel/VercelQueue.ts:160](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L160)
|
|
47
|
+
|
|
48
|
+
Creates a new VercelQueue instance.
|
|
49
|
+
|
|
50
|
+
#### Parameters
|
|
51
|
+
|
|
52
|
+
| Parameter | Type | Description |
|
|
53
|
+
| ------ | ------ | ------ |
|
|
54
|
+
| `options` | [`IVercelQueueOptions`](Interface.IVercelQueueOptions) | Region, consumer group, and optional SDK configuration. See [IVercelQueueOptions](Interface.IVercelQueueOptions). |
|
|
55
|
+
|
|
56
|
+
#### Returns
|
|
57
|
+
|
|
58
|
+
`VercelQueue`
|
|
59
|
+
|
|
60
|
+
## Methods
|
|
61
|
+
|
|
62
|
+
### dequeue()
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
dequeue(queueName): Promise<IQueueJob<unknown> | null>;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Defined in: [vercel/VercelQueue.ts:202](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L202)
|
|
69
|
+
|
|
70
|
+
Dequeues the next pending job from the named queue.
|
|
71
|
+
|
|
72
|
+
The returned job transitions to `processing` status.
|
|
73
|
+
|
|
74
|
+
#### Parameters
|
|
75
|
+
|
|
76
|
+
| Parameter | Type | Description |
|
|
77
|
+
| ------ | ------ | ------ |
|
|
78
|
+
| `queueName` | `string` | The name of the queue to dequeue from. |
|
|
79
|
+
|
|
80
|
+
#### Returns
|
|
81
|
+
|
|
82
|
+
`Promise`\<[`IQueueJob`](Interface.IQueueJob)\<`unknown`\> \| `null`\>
|
|
83
|
+
|
|
84
|
+
The next pending job, or `null` if the queue is empty.
|
|
85
|
+
|
|
86
|
+
#### Implementation of
|
|
87
|
+
|
|
88
|
+
[`IQueue`](Interface.IQueue).[`dequeue`](Interface.IQueue#dequeue)
|
|
89
|
+
|
|
90
|
+
***
|
|
91
|
+
|
|
92
|
+
### enqueue()
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
enqueue<T>(queueName, payload): Promise<IQueueJob<T>>;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Defined in: [vercel/VercelQueue.ts:175](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L175)
|
|
99
|
+
|
|
100
|
+
Enqueues a new job into the named queue.
|
|
101
|
+
|
|
102
|
+
#### Type Parameters
|
|
103
|
+
|
|
104
|
+
| Type Parameter | Default type | Description |
|
|
105
|
+
| ------ | ------ | ------ |
|
|
106
|
+
| `T` | `unknown` | |
|
|
107
|
+
|
|
108
|
+
#### Parameters
|
|
109
|
+
|
|
110
|
+
| Parameter | Type | Description |
|
|
111
|
+
| ------ | ------ | ------ |
|
|
112
|
+
| `queueName` | `string` | The name of the target queue. |
|
|
113
|
+
| `payload` | `T` | The job payload. |
|
|
114
|
+
|
|
115
|
+
#### Returns
|
|
116
|
+
|
|
117
|
+
`Promise`\<[`IQueueJob`](Interface.IQueueJob)\<`T`\>\>
|
|
118
|
+
|
|
119
|
+
The created job in `pending` status.
|
|
120
|
+
|
|
121
|
+
#### Implementation of
|
|
122
|
+
|
|
123
|
+
[`IQueue`](Interface.IQueue).[`enqueue`](Interface.IQueue#enqueue)
|
|
124
|
+
|
|
125
|
+
***
|
|
126
|
+
|
|
127
|
+
### getJobs()
|
|
128
|
+
|
|
129
|
+
```ts
|
|
130
|
+
getJobs(queueName): Promise<readonly IQueueJob<unknown>[]>;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Defined in: [vercel/VercelQueue.ts:326](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L326)
|
|
134
|
+
|
|
135
|
+
Returns all jobs for the given queue in insertion order.
|
|
136
|
+
|
|
137
|
+
#### Parameters
|
|
138
|
+
|
|
139
|
+
| Parameter | Type | Description |
|
|
140
|
+
| ------ | ------ | ------ |
|
|
141
|
+
| `queueName` | `string` | The name of the queue. |
|
|
142
|
+
|
|
143
|
+
#### Returns
|
|
144
|
+
|
|
145
|
+
`Promise`\<readonly [`IQueueJob`](Interface.IQueueJob)\<`unknown`\>[]\>
|
|
146
|
+
|
|
147
|
+
An array of jobs, possibly empty.
|
|
148
|
+
|
|
149
|
+
#### Implementation of
|
|
150
|
+
|
|
151
|
+
[`IQueue`](Interface.IQueue).[`getJobs`](Interface.IQueue#getjobs)
|
|
152
|
+
|
|
153
|
+
***
|
|
154
|
+
|
|
155
|
+
### markCompleted()
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
markCompleted(jobId): Promise<IQueueJob<unknown>>;
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Defined in: [vercel/VercelQueue.ts:250](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L250)
|
|
162
|
+
|
|
163
|
+
Marks a processing job as completed.
|
|
164
|
+
|
|
165
|
+
#### Parameters
|
|
166
|
+
|
|
167
|
+
| Parameter | Type | Description |
|
|
168
|
+
| ------ | ------ | ------ |
|
|
169
|
+
| `jobId` | `string` | The ID of the job to complete. |
|
|
170
|
+
|
|
171
|
+
#### Returns
|
|
172
|
+
|
|
173
|
+
`Promise`\<[`IQueueJob`](Interface.IQueueJob)\<`unknown`\>\>
|
|
174
|
+
|
|
175
|
+
The updated job in `completed` status.
|
|
176
|
+
|
|
177
|
+
#### Implementation of
|
|
178
|
+
|
|
179
|
+
[`IQueue`](Interface.IQueue).[`markCompleted`](Interface.IQueue#markcompleted)
|
|
180
|
+
|
|
181
|
+
***
|
|
182
|
+
|
|
183
|
+
### markFailed()
|
|
184
|
+
|
|
185
|
+
```ts
|
|
186
|
+
markFailed(jobId, errorMessage): Promise<IQueueJob<unknown>>;
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Defined in: [vercel/VercelQueue.ts:285](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L285)
|
|
190
|
+
|
|
191
|
+
Marks a processing job as failed.
|
|
192
|
+
|
|
193
|
+
#### Parameters
|
|
194
|
+
|
|
195
|
+
| Parameter | Type | Description |
|
|
196
|
+
| ------ | ------ | ------ |
|
|
197
|
+
| `jobId` | `string` | The ID of the job to mark as failed. |
|
|
198
|
+
| `errorMessage` | `string` | A human-readable error message. |
|
|
199
|
+
|
|
200
|
+
#### Returns
|
|
201
|
+
|
|
202
|
+
`Promise`\<[`IQueueJob`](Interface.IQueueJob)\<`unknown`\>\>
|
|
203
|
+
|
|
204
|
+
The updated job in `failed` status.
|
|
205
|
+
|
|
206
|
+
#### Implementation of
|
|
207
|
+
|
|
208
|
+
[`IQueue`](Interface.IQueue).[`markFailed`](Interface.IQueue#markfailed)
|
|
209
|
+
|
|
210
|
+
***
|
|
211
|
+
|
|
212
|
+
### onModuleDestroy()
|
|
213
|
+
|
|
214
|
+
```ts
|
|
215
|
+
onModuleDestroy(): Promise<void>;
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Defined in: [vercel/VercelQueue.ts:341](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L341)
|
|
219
|
+
|
|
220
|
+
Releases all pending gates and clears internal tracking maps.
|
|
221
|
+
|
|
222
|
+
Releasing the gates causes pending SDK handlers to complete
|
|
223
|
+
normally, acknowledging in-flight messages. This prevents
|
|
224
|
+
dangling handlers during graceful shutdown.
|
|
225
|
+
|
|
226
|
+
#### Returns
|
|
227
|
+
|
|
228
|
+
`Promise`\<`void`\>
|
|
229
|
+
|
|
230
|
+
#### Implementation of
|
|
231
|
+
|
|
232
|
+
```ts
|
|
233
|
+
OnModuleDestroy.onModuleDestroy
|
|
234
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Interface: IVercelQueueOptions'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Interface: IVercelQueueOptions
|
|
7
|
+
|
|
8
|
+
Defined in: [vercel/VercelQueue.ts:35](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L35)
|
|
9
|
+
|
|
10
|
+
Configuration options for [VercelQueue](Class.VercelQueue).
|
|
11
|
+
|
|
12
|
+
## Properties
|
|
13
|
+
|
|
14
|
+
### consumerGroup
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
consumerGroup: string;
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Defined in: [vercel/VercelQueue.ts:55](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L55)
|
|
21
|
+
|
|
22
|
+
Consumer group name used when receiving messages.
|
|
23
|
+
|
|
24
|
+
Each consumer group independently tracks its position in the topic.
|
|
25
|
+
|
|
26
|
+
***
|
|
27
|
+
|
|
28
|
+
### deploymentId?
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
optional deploymentId?: string | null;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Defined in: [vercel/VercelQueue.ts:75](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L75)
|
|
35
|
+
|
|
36
|
+
Deployment ID for per-deployment message isolation.
|
|
37
|
+
|
|
38
|
+
- `undefined` — auto-detected from `VERCEL_DEPLOYMENT_ID` (pinned).
|
|
39
|
+
- `null` — unpinned (messages shared across deployments).
|
|
40
|
+
- Explicit string — pinned to the given deployment.
|
|
41
|
+
|
|
42
|
+
***
|
|
43
|
+
|
|
44
|
+
### region
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
region: string;
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Defined in: [vercel/VercelQueue.ts:46](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L46)
|
|
51
|
+
|
|
52
|
+
Vercel region code (e.g. `iad1`, `fra1`, `sfo1`).
|
|
53
|
+
|
|
54
|
+
Required — messages can only be consumed from the region they were
|
|
55
|
+
sent to. Use a fixed region for both sending and receiving.
|
|
56
|
+
|
|
57
|
+
***
|
|
58
|
+
|
|
59
|
+
### token?
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
optional token?: string;
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Defined in: [vercel/VercelQueue.ts:64](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L64)
|
|
66
|
+
|
|
67
|
+
Vercel OIDC bearer token for authentication.
|
|
68
|
+
|
|
69
|
+
When omitted the SDK auto-fetches a token via OIDC.
|
|
70
|
+
|
|
71
|
+
***
|
|
72
|
+
|
|
73
|
+
### visibilityTimeoutSeconds?
|
|
74
|
+
|
|
75
|
+
```ts
|
|
76
|
+
optional visibilityTimeoutSeconds?: number;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Defined in: [vercel/VercelQueue.ts:86](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/VercelQueue.ts#L86)
|
|
80
|
+
|
|
81
|
+
Visibility timeout in seconds for received messages.
|
|
82
|
+
|
|
83
|
+
The SDK automatically re-extends the lease while the handler is
|
|
84
|
+
running, so the default of 300 s is suitable for most workloads.
|
|
85
|
+
|
|
86
|
+
#### Default Value
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
300
|
|
90
|
+
@public
|
|
91
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Variable: VERCEL\_CONFIG\_ENTRIES'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Variable: VERCEL\_CONFIG\_ENTRIES
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const VERCEL_CONFIG_ENTRIES: ReadonlyArray<Omit<IConfigRegistryEntry, "module">>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Defined in: [vercel/env.ts:65](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/env.ts#L65)
|
|
13
|
+
|
|
14
|
+
All configuration entries required by the Vercel queue provider.
|
|
15
|
+
|
|
16
|
+
Pass this array to the module's `register()` method so that the
|
|
17
|
+
configuration service validates and provides the values at startup.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Variable: VERCEL\_QUEUE\_CONSUMER\_GROUP'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Variable: VERCEL\_QUEUE\_CONSUMER\_GROUP
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const VERCEL_QUEUE_CONSUMER_GROUP: IConfigKey<string>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Defined in: [vercel/env.ts:32](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/env.ts#L32)
|
|
13
|
+
|
|
14
|
+
Consumer group name for receiving messages.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Variable: VERCEL\_QUEUE\_DEPLOYMENT\_ID'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Variable: VERCEL\_QUEUE\_DEPLOYMENT\_ID
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const VERCEL_QUEUE_DEPLOYMENT_ID: IConfigKey<string>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Defined in: [vercel/env.ts:51](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/env.ts#L51)
|
|
13
|
+
|
|
14
|
+
Optional Vercel deployment ID for per-deployment message isolation.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Variable: VERCEL\_QUEUE\_REGION'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Variable: VERCEL\_QUEUE\_REGION
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const VERCEL_QUEUE_REGION: IConfigKey<string>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Defined in: [vercel/env.ts:16](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/env.ts#L16)
|
|
13
|
+
|
|
14
|
+
Vercel region code (e.g. `iad1`, `fra1`, `sfo1`).
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Variable: VERCEL\_QUEUE\_TOKEN'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Variable: VERCEL\_QUEUE\_TOKEN
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const VERCEL_QUEUE_TOKEN: IConfigKey<string>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Defined in: [vercel/env.ts:25](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/env.ts#L25)
|
|
13
|
+
|
|
14
|
+
Vercel OIDC bearer token for queue authentication.
|
|
15
|
+
|
|
16
|
+
When omitted the SDK auto-fetches a token via OIDC.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Variable: VERCEL\_QUEUE\_VISIBILITY\_TIMEOUT\_SECONDS'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Variable: VERCEL\_QUEUE\_VISIBILITY\_TIMEOUT\_SECONDS
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
const VERCEL_QUEUE_VISIBILITY_TIMEOUT_SECONDS: IConfigKey<number>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Defined in: [vercel/env.ts:42](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-queue/src/vercel/env.ts#L42)
|
|
13
|
+
|
|
14
|
+
Visibility timeout in seconds for received messages.
|
|
15
|
+
|
|
16
|
+
The SDK automatically re-extends the lease while the handler runs.
|
|
17
|
+
|
|
18
|
+
## Default Value
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
300
|
|
22
|
+
@public
|
|
23
|
+
```
|
|
@@ -17,6 +17,7 @@ editUrl: false
|
|
|
17
17
|
| [QueueJobNotFoundError](Class.QueueJobNotFoundError) | Thrown when a queue job cannot be found by its ID. |
|
|
18
18
|
| [QueueJobStateError](Class.QueueJobStateError) | Thrown when a queue job is in an invalid state for the requested transition. |
|
|
19
19
|
| [QueueValidationError](Class.QueueValidationError) | Thrown when a queue operation receives invalid input. |
|
|
20
|
+
| [VercelQueue](Class.VercelQueue) | Vercel Queues implementation of the [IQueue](Interface.IQueue) contract. |
|
|
20
21
|
|
|
21
22
|
## Interfaces
|
|
22
23
|
|
|
@@ -27,6 +28,7 @@ editUrl: false
|
|
|
27
28
|
| [IMemoryQueueOptions](Interface.IMemoryQueueOptions) | Configuration options for [MemoryQueue](Class.MemoryQueue). |
|
|
28
29
|
| [IQueue](Interface.IQueue) | Contract for queue implementations. |
|
|
29
30
|
| [IQueueJob](Interface.IQueueJob) | Represents a job in a named queue with tracking metadata. |
|
|
31
|
+
| [IVercelQueueOptions](Interface.IVercelQueueOptions) | Configuration options for [VercelQueue](Class.VercelQueue). |
|
|
30
32
|
|
|
31
33
|
## Type Aliases
|
|
32
34
|
|
|
@@ -47,3 +49,9 @@ editUrl: false
|
|
|
47
49
|
| [PLATFORM\_QUEUE\_CONFIG\_ENTRIES](Variable.PLATFORM_QUEUE_CONFIG_ENTRIES) | All configuration entries required by `platform-queue`. |
|
|
48
50
|
| [QUEUE\_JOB\_STATUS](Variable.QUEUE_JOB_STATUS) | Possible statuses of a queue job. |
|
|
49
51
|
| [QUEUE\_MAX\_JOBS](Variable.QUEUE_MAX_JOBS) | Maximum number of jobs retained in the in-memory queue before eviction. |
|
|
52
|
+
| [VERCEL\_CONFIG\_ENTRIES](Variable.VERCEL_CONFIG_ENTRIES) | All configuration entries required by the Vercel queue provider. |
|
|
53
|
+
| [VERCEL\_QUEUE\_CONSUMER\_GROUP](Variable.VERCEL_QUEUE_CONSUMER_GROUP) | Consumer group name for receiving messages. |
|
|
54
|
+
| [VERCEL\_QUEUE\_DEPLOYMENT\_ID](Variable.VERCEL_QUEUE_DEPLOYMENT_ID) | Optional Vercel deployment ID for per-deployment message isolation. |
|
|
55
|
+
| [VERCEL\_QUEUE\_REGION](Variable.VERCEL_QUEUE_REGION) | Vercel region code (e.g. `iad1`, `fra1`, `sfo1`). |
|
|
56
|
+
| [VERCEL\_QUEUE\_TOKEN](Variable.VERCEL_QUEUE_TOKEN) | Vercel OIDC bearer token for queue authentication. |
|
|
57
|
+
| [VERCEL\_QUEUE\_VISIBILITY\_TIMEOUT\_SECONDS](Variable.VERCEL_QUEUE_VISIBILITY_TIMEOUT_SECONDS) | Visibility timeout in seconds for received messages. |
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: platform-queue
|
|
3
|
-
description: Provider-agnostic queue infrastructure with support for in-memory FIFO, BullMQ (Redis),
|
|
3
|
+
description: Provider-agnostic queue infrastructure with support for in-memory FIFO, BullMQ (Redis), Azure Service Bus, and Vercel Queues.
|
|
4
4
|
order: 19
|
|
5
|
-
tags: [queue, job-queue, fifo, memory-queue, bullmq, redis, azure-service-bus, ports-and-adapters, health]
|
|
5
|
+
tags: [queue, job-queue, fifo, memory-queue, bullmq, redis, azure-service-bus, vercel-queues, ports-and-adapters, health]
|
|
6
6
|
package: '@breadstone/archipel-platform-queue'
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# platform-queue
|
|
10
10
|
|
|
11
|
-
Provider-agnostic queue infrastructure for NestJS. Exposes a unified `IQueue` contract with
|
|
11
|
+
Provider-agnostic queue infrastructure for NestJS. Exposes a unified `IQueue` contract with four ready-made implementations: in-memory FIFO (`MemoryQueue`), BullMQ/Redis (`BullMqQueue`), Azure Service Bus (`AzureQueue`), and Vercel Queues (`VercelQueue`). Jobs follow a lifecycle from pending through processing to completed or failed, with full metadata tracking.
|
|
12
12
|
|
|
13
13
|
**Package:** `@breadstone/archipel-platform-queue`
|
|
14
14
|
|
|
15
|
+
<InstallTabs />
|
|
16
|
+
|
|
15
17
|
## Architecture
|
|
16
18
|
|
|
17
19
|
```mermaid
|
|
@@ -19,12 +21,15 @@ graph TD
|
|
|
19
21
|
Core["@breadstone/archipel-platform-queue<br/><i>IQueue, models, errors, MemoryQueue</i>"]
|
|
20
22
|
BullMQ["@breadstone/archipel-platform-queue/bullmq<br/><i>BullMqQueue</i>"]
|
|
21
23
|
Azure["@breadstone/archipel-platform-queue/azure<br/><i>AzureQueue</i>"]
|
|
24
|
+
Vercel["@breadstone/archipel-platform-queue/vercel<br/><i>VercelQueue</i>"]
|
|
22
25
|
|
|
23
26
|
BullMQ -->|implements| Core
|
|
24
27
|
Azure -->|implements| Core
|
|
28
|
+
Vercel -->|implements| Core
|
|
25
29
|
|
|
26
30
|
BullMQ -.-|requires| R["bullmq"]
|
|
27
31
|
Azure -.-|requires| S["@azure/service-bus"]
|
|
32
|
+
Vercel -.-|requires| V["@vercel/queue"]
|
|
28
33
|
```
|
|
29
34
|
|
|
30
35
|
Each provider SDK is an **optional peer dependency**. Install only the one you need. `MemoryQueue` ships with the core entry point and requires no additional dependencies.
|
|
@@ -39,6 +44,7 @@ Each provider SDK is an **optional peer dependency**. Install only the one you n
|
|
|
39
44
|
# Pick one (or use MemoryQueue without any extra SDK):
|
|
40
45
|
yarn add bullmq
|
|
41
46
|
yarn add @azure/service-bus
|
|
47
|
+
yarn add @vercel/queue
|
|
42
48
|
```
|
|
43
49
|
|
|
44
50
|
### 2. Register the queue
|
|
@@ -112,6 +118,23 @@ import { BullMqQueue, BULLMQ_CONFIG_ENTRIES } from '@breadstone/archipel-platfor
|
|
|
112
118
|
import { AzureQueue, AZURE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-queue/azure';
|
|
113
119
|
```
|
|
114
120
|
|
|
121
|
+
### Vercel Queues
|
|
122
|
+
|
|
123
|
+
**Subpath:** `@breadstone/archipel-platform-queue/vercel`
|
|
124
|
+
**SDK:** `@vercel/queue` ≥ 0.1.0
|
|
125
|
+
|
|
126
|
+
| Variable | Required | Default | Description |
|
|
127
|
+
| --------------------------------------- | -------- | ------- | ----------------------------------------------------- |
|
|
128
|
+
| `VERCEL_QUEUE_REGION` | Yes | — | Vercel region code (e.g. `iad1`, `fra1`, `sfo1`) |
|
|
129
|
+
| `VERCEL_QUEUE_CONSUMER_GROUP` | Yes | — | Consumer group name for receiving messages |
|
|
130
|
+
| `VERCEL_QUEUE_TOKEN` | No | — | OIDC bearer token (auto-fetched when omitted) |
|
|
131
|
+
| `VERCEL_QUEUE_DEPLOYMENT_ID` | No | — | Deployment ID for per-deployment message isolation |
|
|
132
|
+
| `VERCEL_QUEUE_VISIBILITY_TIMEOUT_SECONDS`| No | `300` | Visibility timeout in seconds for received messages |
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import { VercelQueue, VERCEL_CONFIG_ENTRIES } from '@breadstone/archipel-platform-queue/vercel';
|
|
136
|
+
```
|
|
137
|
+
|
|
115
138
|
---
|
|
116
139
|
|
|
117
140
|
## Job Lifecycle
|
|
@@ -166,3 +189,4 @@ export class AppModule {}
|
|
|
166
189
|
| `@nestjs/common` | Yes | NestJS core |
|
|
167
190
|
| `bullmq` | Optional | Required for BullMQ provider |
|
|
168
191
|
| `@azure/service-bus` | Optional | Required for Azure Service Bus |
|
|
192
|
+
| `@vercel/queue` | Optional | Required for Vercel Queues |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breadstone/archipel-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.30",
|
|
4
4
|
"description": "MCP server providing Archipel platform knowledge - documentation, query patterns, and coding conventions - to AI development tools.",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./src/main.js",
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 'Class: GithubAuthGuard'
|
|
3
|
-
generated: true
|
|
4
|
-
editUrl: false
|
|
5
|
-
---
|
|
6
|
-
# Class: GithubAuthGuard
|
|
7
|
-
|
|
8
|
-
Defined in: [libs/platform-authentication/src/guards/GithubAuthGuard.ts:14](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-authentication/src/guards/GithubAuthGuard.ts#L14)
|
|
9
|
-
|
|
10
|
-
The `GithubAuthGuard` protects routes using GitHub authentication.
|
|
11
|
-
|
|
12
|
-
## Extends
|
|
13
|
-
|
|
14
|
-
- `IAuthGuard`
|
|
15
|
-
|
|
16
|
-
## Constructors
|
|
17
|
-
|
|
18
|
-
### Constructor
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
new GithubAuthGuard(...args): GithubAuthGuard;
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Defined in: node\_modules/@nestjs/passport/dist/interfaces/type.interface.d.ts:2
|
|
25
|
-
|
|
26
|
-
#### Parameters
|
|
27
|
-
|
|
28
|
-
| Parameter | Type |
|
|
29
|
-
| ------ | ------ |
|
|
30
|
-
| ...`args` | `any`[] |
|
|
31
|
-
|
|
32
|
-
#### Returns
|
|
33
|
-
|
|
34
|
-
`GithubAuthGuard`
|
|
35
|
-
|
|
36
|
-
#### Inherited from
|
|
37
|
-
|
|
38
|
-
```ts
|
|
39
|
-
AuthGuard('github').constructor
|
|
40
|
-
```
|