@breadstone/archipel-mcp 0.0.45 → 0.0.47
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/ai-text-generation.md +2 -2
- package/data/guides/authentication-and-authorization.md +2 -2
- package/data/guides/blob-storage.md +3 -3
- package/data/guides/caching.md +2 -2
- package/data/guides/composition-context.md +462 -0
- package/data/guides/database-setup.md +4 -4
- package/data/guides/email-delivery.md +6 -6
- package/data/guides/index.md +1 -0
- package/data/guides/openapi-and-feature-discovery.md +1 -1
- package/data/guides/queue-infrastructure.md +4 -4
- package/data/guides/telemetry-and-observability.md +1 -1
- package/data/packages/platform-blob-storage/api/Class.BlobStorageStrategyBase.md +1 -0
- package/data/packages/platform-blob-storage/api/Class.EmptyBlobStorageStrategy.md +183 -0
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_ACCESS_KEY_ID.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_BUCKET.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_CONFIG_ENTRIES.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_ENDPOINT.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_REGION.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.AWS_S3_SECRET_ACCESS_KEY.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.LOCAL_BLOB_BASE_PATH.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.LOCAL_BLOB_BUCKET.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.LOCAL_CONFIG_ENTRIES.md +1 -1
- package/data/packages/platform-blob-storage/api/Variable.PLATFORM_BLOB_STORAGE_CONFIG_ENTRIES.md +1 -1
- package/data/packages/platform-blob-storage/api/index.md +1 -0
- package/data/packages/platform-blob-storage/index.md +21 -1
- package/data/packages/platform-bootstrap/api/Class.CompositionContext.md +226 -0
- package/data/packages/platform-bootstrap/api/Class.CompositionModule.md +56 -0
- package/data/packages/platform-bootstrap/api/Class.CompositionResolver.md +206 -0
- package/data/packages/platform-bootstrap/api/Class.PlatformApplicationBuilder.md +75 -8
- package/data/packages/platform-bootstrap/api/Function.createCompositionContext.md +56 -0
- package/data/packages/platform-bootstrap/api/Interface.ICompositionContext.md +179 -0
- package/data/packages/platform-bootstrap/api/Interface.ICreateCompositionContextOptions.md +54 -0
- package/data/packages/platform-bootstrap/api/Interface.ICreateWithCompositionOptions.md +128 -0
- package/data/packages/platform-bootstrap/api/Interface.IProviderDecision.md +36 -0
- package/data/packages/platform-bootstrap/api/TypeAlias.CompositionImport.md +20 -0
- package/data/packages/platform-bootstrap/api/TypeAlias.ProviderComposer.md +53 -0
- package/data/packages/platform-bootstrap/api/index.md +10 -0
- package/data/packages/platform-cryptography/api/Class.OtpService.md +6 -6
- package/data/packages/platform-cryptography/api/Variable.TOTP_EPOCH_TOLERANCE.md +1 -1
- package/data/packages/platform-feature-flags/index.md +103 -0
- package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +0 -1
- package/data/packages/platform-mailing/api/index.md +0 -1
- package/package.json +1 -1
- package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +0 -71
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Interface: ICreateWithCompositionOptions\<TApplication\>'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Interface: ICreateWithCompositionOptions\<TApplication\>
|
|
7
|
+
|
|
8
|
+
Defined in: [application/PlatformApplicationBuilder.ts:22](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-bootstrap/src/application/PlatformApplicationBuilder.ts#L22)
|
|
9
|
+
|
|
10
|
+
Options for creating a composed application.
|
|
11
|
+
|
|
12
|
+
## Type Parameters
|
|
13
|
+
|
|
14
|
+
| Type Parameter | Default type |
|
|
15
|
+
| ------ | ------ |
|
|
16
|
+
| `TApplication` *extends* `INestApplication` | `INestApplication` |
|
|
17
|
+
|
|
18
|
+
## Properties
|
|
19
|
+
|
|
20
|
+
### adapter?
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
readonly optional adapter?: unknown;
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Defined in: [application/PlatformApplicationBuilder.ts:70](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-bootstrap/src/application/PlatformApplicationBuilder.ts#L70)
|
|
27
|
+
|
|
28
|
+
Custom HTTP adapter to use.
|
|
29
|
+
|
|
30
|
+
#### Example
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { ExpressAdapter } from '@nestjs/platform-express';
|
|
34
|
+
|
|
35
|
+
const builder = await PlatformApplicationBuilder.createWithComposition({
|
|
36
|
+
adapter: new ExpressAdapter(),
|
|
37
|
+
// ...
|
|
38
|
+
});
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
***
|
|
42
|
+
|
|
43
|
+
### appFactory?
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
readonly optional appFactory?: (composedModule) => Promise<TApplication>;
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Defined in: [application/PlatformApplicationBuilder.ts:91](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-bootstrap/src/application/PlatformApplicationBuilder.ts#L91)
|
|
50
|
+
|
|
51
|
+
Factory function that creates the application type.
|
|
52
|
+
|
|
53
|
+
If provided, this takes precedence over the default `NestFactory.create()` call.
|
|
54
|
+
Use this for custom application types or adapters.
|
|
55
|
+
|
|
56
|
+
#### Parameters
|
|
57
|
+
|
|
58
|
+
| Parameter | Type |
|
|
59
|
+
| ------ | ------ |
|
|
60
|
+
| `composedModule` | `DynamicModule` |
|
|
61
|
+
|
|
62
|
+
#### Returns
|
|
63
|
+
|
|
64
|
+
`Promise`\<`TApplication`\>
|
|
65
|
+
|
|
66
|
+
#### Example
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
const builder = await PlatformApplicationBuilder.createWithComposition({
|
|
70
|
+
appFactory: (module) => NestFactory.create<NestExpressApplication>(
|
|
71
|
+
module,
|
|
72
|
+
new ExpressAdapter()
|
|
73
|
+
),
|
|
74
|
+
// ...
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
***
|
|
79
|
+
|
|
80
|
+
### compositionModule?
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
readonly optional compositionModule?: Type<unknown>;
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Defined in: [application/PlatformApplicationBuilder.ts:30](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-bootstrap/src/application/PlatformApplicationBuilder.ts#L30)
|
|
87
|
+
|
|
88
|
+
Custom composition module that provides the composition services.
|
|
89
|
+
|
|
90
|
+
If not provided, the default [CompositionModule](Class.CompositionModule) is used.
|
|
91
|
+
|
|
92
|
+
***
|
|
93
|
+
|
|
94
|
+
### enableCompositionLogging?
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
readonly optional enableCompositionLogging?: boolean;
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Defined in: [application/PlatformApplicationBuilder.ts:39](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-bootstrap/src/application/PlatformApplicationBuilder.ts#L39)
|
|
101
|
+
|
|
102
|
+
Whether to enable logging for the composition context.
|
|
103
|
+
|
|
104
|
+
Defaults to `false`.
|
|
105
|
+
|
|
106
|
+
***
|
|
107
|
+
|
|
108
|
+
### nestOptions?
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
readonly optional nestOptions?: NestApplicationOptions;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Defined in: [application/PlatformApplicationBuilder.ts:46](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-bootstrap/src/application/PlatformApplicationBuilder.ts#L46)
|
|
115
|
+
|
|
116
|
+
NestJS application options passed to `NestFactory.create()`.
|
|
117
|
+
|
|
118
|
+
***
|
|
119
|
+
|
|
120
|
+
### platformOptions?
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
readonly optional platformOptions?: IPlatformApplicationOptions;
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Defined in: [application/PlatformApplicationBuilder.ts:53](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-bootstrap/src/application/PlatformApplicationBuilder.ts#L53)
|
|
127
|
+
|
|
128
|
+
Platform application options for the builder.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Interface: IProviderDecision'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Interface: IProviderDecision
|
|
7
|
+
|
|
8
|
+
Defined in: composition/types/IProviderDecision.ts:12
|
|
9
|
+
|
|
10
|
+
Represents the result of a provider composition decision.
|
|
11
|
+
|
|
12
|
+
## Properties
|
|
13
|
+
|
|
14
|
+
### imports
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
readonly imports: readonly CompositionImport[];
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Defined in: composition/types/IProviderDecision.ts:27
|
|
21
|
+
|
|
22
|
+
The modules to import when [shouldImport](#shouldimport) is `true`.
|
|
23
|
+
|
|
24
|
+
When [shouldImport](#shouldimport) is `false`, this array should be empty or omitted.
|
|
25
|
+
|
|
26
|
+
***
|
|
27
|
+
|
|
28
|
+
### shouldImport
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
readonly shouldImport: boolean;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Defined in: composition/types/IProviderDecision.ts:18
|
|
35
|
+
|
|
36
|
+
Whether the provider should be imported into the application module graph.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Type Alias: CompositionImport'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Type Alias: CompositionImport
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
type CompositionImport =
|
|
10
|
+
| Type<unknown>
|
|
11
|
+
| DynamicModule
|
|
12
|
+
| Promise<DynamicModule>
|
|
13
|
+
| ForwardReference<unknown>;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Defined in: composition/types/CompositionImport.ts:14
|
|
17
|
+
|
|
18
|
+
Represents a valid NestJS module import that can be used during composition.
|
|
19
|
+
|
|
20
|
+
This type mirrors the allowed import types in NestJS module metadata.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Type Alias: ProviderComposer\<TContext\>'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
# Type Alias: ProviderComposer\<TContext\>
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
type ProviderComposer<TContext> = (context) => Promise<IProviderDecision>;
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Defined in: composition/types/ProviderComposer.ts:37
|
|
13
|
+
|
|
14
|
+
Function signature for a provider composer.
|
|
15
|
+
|
|
16
|
+
A provider composer is responsible for determining which modules should be
|
|
17
|
+
imported based on the current composition context (configuration, stage, etc.).
|
|
18
|
+
|
|
19
|
+
## Type Parameters
|
|
20
|
+
|
|
21
|
+
| Type Parameter | Default type | Description |
|
|
22
|
+
| ------ | ------ | ------ |
|
|
23
|
+
| `TContext` *extends* [`ICompositionContext`](Interface.ICompositionContext) | [`ICompositionContext`](Interface.ICompositionContext) | The composition context type. Defaults to [ICompositionContext](Interface.ICompositionContext). |
|
|
24
|
+
|
|
25
|
+
## Parameters
|
|
26
|
+
|
|
27
|
+
| Parameter | Type |
|
|
28
|
+
| ------ | ------ |
|
|
29
|
+
| `context` | `TContext` |
|
|
30
|
+
|
|
31
|
+
## Returns
|
|
32
|
+
|
|
33
|
+
`Promise`\<[`IProviderDecision`](Interface.IProviderDecision)\>
|
|
34
|
+
|
|
35
|
+
## Example
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
const composeMailProvider: ProviderComposer = async (context) => {
|
|
39
|
+
const driver = context.config.tryGet('MAIL_DRIVER', 'log');
|
|
40
|
+
|
|
41
|
+
if (driver === 'smtp') {
|
|
42
|
+
const { MailModule } = await import('@breadstone/archipel-platform-mailing');
|
|
43
|
+
const { SmtpDeliveryStrategy } = await import('@breadstone/archipel-platform-mailing/delivering/smtp');
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
shouldImport: true,
|
|
47
|
+
imports: [MailModule.register({ deliveryStrategy: SmtpDeliveryStrategy })]
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return { shouldImport: false, imports: [] };
|
|
52
|
+
};
|
|
53
|
+
```
|
|
@@ -9,6 +9,9 @@ editUrl: false
|
|
|
9
9
|
|
|
10
10
|
| Class | Description |
|
|
11
11
|
| ------ | ------ |
|
|
12
|
+
| [CompositionContext](Class.CompositionContext) | Default implementation of the composition context. |
|
|
13
|
+
| [CompositionModule](Class.CompositionModule) | Minimal module providing configuration access for composition. |
|
|
14
|
+
| [CompositionResolver](Class.CompositionResolver) | Abstract base class for composition-time feature resolution. |
|
|
12
15
|
| [PlatformApplication](Class.PlatformApplication) | Entry point for composing an existing NestJS application with Archipel bootstrap steps. |
|
|
13
16
|
| [PlatformApplicationBuilder](Class.PlatformApplicationBuilder) | Fluent builder that composes NestJS bootstrap steps and executes them once. |
|
|
14
17
|
| [PlatformBootstrapContext](Class.PlatformBootstrapContext) | Runtime context shared by platform bootstrap steps. |
|
|
@@ -20,11 +23,15 @@ editUrl: false
|
|
|
20
23
|
| ------ | ------ |
|
|
21
24
|
| [IApiStepOptions](Interface.IApiStepOptions) | Options for the generic Archipel API bootstrap step. |
|
|
22
25
|
| [IApiValidationOptions](Interface.IApiValidationOptions) | Validation options used by the generic Archipel API bootstrap step. |
|
|
26
|
+
| [ICompositionContext](Interface.ICompositionContext) | Pre-bootstrap context for stage-aware module composition. |
|
|
27
|
+
| [ICreateCompositionContextOptions](Interface.ICreateCompositionContextOptions) | Options for creating the composition context. |
|
|
28
|
+
| [ICreateWithCompositionOptions](Interface.ICreateWithCompositionOptions) | Options for creating a composed application. |
|
|
23
29
|
| [IExpressServerStepOptions](Interface.IExpressServerStepOptions) | Options for the Express-compatible server bootstrap step. |
|
|
24
30
|
| [IOpenApiStepOptions](Interface.IOpenApiStepOptions) | Options for the OpenAPI bootstrap step. |
|
|
25
31
|
| [IPlatformApplicationOptions](Interface.IPlatformApplicationOptions) | Options for wrapping an existing NestJS application with Archipel platform bootstrap support. |
|
|
26
32
|
| [IPlatformListenOptions](Interface.IPlatformListenOptions) | Options for resolving the HTTP listen port from typed configuration keys. |
|
|
27
33
|
| [IPlatformTestApplication](Interface.IPlatformTestApplication) | In-memory application contract used by platform bootstrap tests. |
|
|
34
|
+
| [IProviderDecision](Interface.IProviderDecision) | Represents the result of a provider composition decision. |
|
|
28
35
|
| [ISecurityStepOptions](Interface.ISecurityStepOptions) | Options for the generic security bootstrap step. |
|
|
29
36
|
| [ISessionStepOptions](Interface.ISessionStepOptions) | Options for the Express-compatible session bootstrap step. |
|
|
30
37
|
|
|
@@ -32,10 +39,12 @@ editUrl: false
|
|
|
32
39
|
|
|
33
40
|
| Type Alias | Description |
|
|
34
41
|
| ------ | ------ |
|
|
42
|
+
| [CompositionImport](TypeAlias.CompositionImport) | Represents a valid NestJS module import that can be used during composition. |
|
|
35
43
|
| [PlatformBootstrapNext](TypeAlias.PlatformBootstrapNext) | Continues execution with the next platform bootstrap step. |
|
|
36
44
|
| [PlatformBootstrapStep](TypeAlias.PlatformBootstrapStep) | A composable bootstrap step in the platform application pipeline. |
|
|
37
45
|
| [PlatformContentSecurityPolicyMode](TypeAlias.PlatformContentSecurityPolicyMode) | Named content-security-policy modes supported by `platform-bootstrap/security`. |
|
|
38
46
|
| [PlatformCorsOptions](TypeAlias.PlatformCorsOptions) | CORS options accepted by the security bootstrap step. |
|
|
47
|
+
| [ProviderComposer](TypeAlias.ProviderComposer) | Function signature for a provider composer. |
|
|
39
48
|
| [SecurityRateLimitOptions](TypeAlias.SecurityRateLimitOptions) | Rate-limit options accepted by the security bootstrap step. |
|
|
40
49
|
|
|
41
50
|
## Variables
|
|
@@ -57,6 +66,7 @@ editUrl: false
|
|
|
57
66
|
|
|
58
67
|
| Function | Description |
|
|
59
68
|
| ------ | ------ |
|
|
69
|
+
| [createCompositionContext](Function.createCompositionContext) | Creates a temporary NestJS context for stage-aware module composition. |
|
|
60
70
|
| [createPlatformTestApplication](Function.createPlatformTestApplication) | Creates a lightweight in-memory NestJS application double for platform bootstrap tests. |
|
|
61
71
|
| [useApi](Function.useApi) | Creates the generic Archipel API bootstrap step. |
|
|
62
72
|
| [useExpressServer](Function.useExpressServer) | Creates an Express-compatible server bootstrap step. |
|
|
@@ -5,7 +5,7 @@ editUrl: false
|
|
|
5
5
|
---
|
|
6
6
|
# Class: OtpService
|
|
7
7
|
|
|
8
|
-
Defined in: [otp/OtpService.ts:
|
|
8
|
+
Defined in: [otp/OtpService.ts:42](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-cryptography/src/otp/OtpService.ts#L42)
|
|
9
9
|
|
|
10
10
|
OTP service implementation backed by otplib v13.
|
|
11
11
|
|
|
@@ -25,7 +25,7 @@ the library version.
|
|
|
25
25
|
new OtpService(options?): OtpService;
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
-
Defined in: [otp/OtpService.ts:
|
|
28
|
+
Defined in: [otp/OtpService.ts:57](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-cryptography/src/otp/OtpService.ts#L57)
|
|
29
29
|
|
|
30
30
|
Initializes a new instance of the `OtpService` class.
|
|
31
31
|
|
|
@@ -47,7 +47,7 @@ Initializes a new instance of the `OtpService` class.
|
|
|
47
47
|
generateSecret(): string;
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Defined in: [otp/OtpService.ts:
|
|
50
|
+
Defined in: [otp/OtpService.ts:66](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-cryptography/src/otp/OtpService.ts#L66)
|
|
51
51
|
|
|
52
52
|
Generates a cryptographically random secret suitable for TOTP.
|
|
53
53
|
|
|
@@ -69,7 +69,7 @@ The generated secret string.
|
|
|
69
69
|
generateUri(options): string;
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
Defined in: [otp/OtpService.ts:
|
|
72
|
+
Defined in: [otp/OtpService.ts:71](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-cryptography/src/otp/OtpService.ts#L71)
|
|
73
73
|
|
|
74
74
|
Generates an `otpauth://` URI for QR code enrollment.
|
|
75
75
|
|
|
@@ -97,7 +97,7 @@ The formatted `otpauth://` URI.
|
|
|
97
97
|
verify(token, secret): boolean;
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
Defined in: [otp/OtpService.ts:
|
|
100
|
+
Defined in: [otp/OtpService.ts:83](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-cryptography/src/otp/OtpService.ts#L83)
|
|
101
101
|
|
|
102
102
|
Verifies a TOTP token against the given secret.
|
|
103
103
|
|
|
@@ -132,7 +132,7 @@ verifyHotp(
|
|
|
132
132
|
counter): Promise<boolean>;
|
|
133
133
|
```
|
|
134
134
|
|
|
135
|
-
Defined in: [otp/OtpService.ts:
|
|
135
|
+
Defined in: [otp/OtpService.ts:96](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-cryptography/src/otp/OtpService.ts#L96)
|
|
136
136
|
|
|
137
137
|
Verifies an HOTP (counter-based) token against the given secret and counter.
|
|
138
138
|
|
|
@@ -9,7 +9,7 @@ editUrl: false
|
|
|
9
9
|
const TOTP_EPOCH_TOLERANCE: 30 = 30;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [otp/OtpService.ts:
|
|
12
|
+
Defined in: [otp/OtpService.ts:30](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-cryptography/src/otp/OtpService.ts#L30)
|
|
13
13
|
|
|
14
14
|
Default TOTP verification tolerance expressed in **seconds** (otplib v13 `epochTolerance`).
|
|
15
15
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: platform-feature-flags
|
|
3
|
+
description: Provider-agnostic feature flag infrastructure for NestJS with support for Azure App Configuration and Vercel Edge Config.
|
|
4
|
+
order: 3
|
|
5
|
+
tags: [feature-flags, azure, vercel, edge-config, configuration]
|
|
6
|
+
package: '@breadstone/archipel-platform-feature-flags'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# platform-feature-flags
|
|
10
|
+
|
|
11
|
+
Provider-agnostic feature flag infrastructure for NestJS with support for Azure App Configuration and Vercel Edge Config.
|
|
12
|
+
|
|
13
|
+
**Package:** `@breadstone/archipel-platform-feature-flags`
|
|
14
|
+
|
|
15
|
+
<InstallTabs />
|
|
16
|
+
|
|
17
|
+
## Provider Subpaths
|
|
18
|
+
|
|
19
|
+
Import only the providers you need:
|
|
20
|
+
|
|
21
|
+
| Provider | Subpath | SDK |
|
|
22
|
+
| ----------------------- | ---------------------------------------------------- | --------------------------------------------------------------------- |
|
|
23
|
+
| Azure App Configuration | `@breadstone/archipel-platform-feature-flags/azure` | `@azure/app-configuration-provider` + `@microsoft/feature-management` |
|
|
24
|
+
| Vercel Edge Config | `@breadstone/archipel-platform-feature-flags/vercel` | `@vercel/edge-config` |
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { Module } from '@nestjs/common';
|
|
30
|
+
import { FeatureFlagsModule } from '@breadstone/archipel-platform-feature-flags';
|
|
31
|
+
import { AzureFeatureFlagsClient, AZURE_FEATURE_FLAGS_CONFIG_ENTRIES } from '@breadstone/archipel-platform-feature-flags/azure';
|
|
32
|
+
|
|
33
|
+
@Module({
|
|
34
|
+
imports: [
|
|
35
|
+
FeatureFlagsModule.register({
|
|
36
|
+
client: AzureFeatureFlagsClient,
|
|
37
|
+
configEntries: AZURE_FEATURE_FLAGS_CONFIG_ENTRIES,
|
|
38
|
+
}),
|
|
39
|
+
],
|
|
40
|
+
})
|
|
41
|
+
export class AppModule {}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Environment Variables
|
|
45
|
+
|
|
46
|
+
### Azure App Configuration
|
|
47
|
+
|
|
48
|
+
| Variable | Required | Description |
|
|
49
|
+
| --------------------------------------- | -------- | ------------------------------------------------ |
|
|
50
|
+
| `AZURE_APP_CONFIGURATION_CONNECTION_STRING` | Yes | Connection string for Azure App Configuration |
|
|
51
|
+
| `AZURE_FEATURE_FLAGS_LABEL` | No | Label filter for feature flags (e.g., `prod`) |
|
|
52
|
+
|
|
53
|
+
### Vercel Edge Config
|
|
54
|
+
|
|
55
|
+
| Variable | Required | Description |
|
|
56
|
+
| ----------------------- | -------- | ------------------------------------ |
|
|
57
|
+
| `EDGE_CONFIG` | Yes | Vercel Edge Config connection string |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Checking Feature Flags
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
import { Injectable } from '@nestjs/common';
|
|
65
|
+
import { FeatureFlagsService } from '@breadstone/archipel-platform-feature-flags';
|
|
66
|
+
|
|
67
|
+
@Injectable()
|
|
68
|
+
export class MyService {
|
|
69
|
+
public constructor(private readonly _featureFlags: FeatureFlagsService) {}
|
|
70
|
+
|
|
71
|
+
public async doSomething(): Promise<void> {
|
|
72
|
+
const isEnabled = await this._featureFlags.isEnabled('my-feature');
|
|
73
|
+
|
|
74
|
+
if (isEnabled) {
|
|
75
|
+
// Feature is enabled
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Architecture
|
|
84
|
+
|
|
85
|
+
```mermaid
|
|
86
|
+
flowchart TB
|
|
87
|
+
subgraph FeatureFlagsModule
|
|
88
|
+
Service[FeatureFlagsService]
|
|
89
|
+
Port[FeatureFlagsClientPort]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
subgraph Providers
|
|
93
|
+
Azure[AzureFeatureFlagsClient]
|
|
94
|
+
Vercel[VercelFeatureFlagsClient]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
Service --> Port
|
|
98
|
+
Port -.-> Azure
|
|
99
|
+
Port -.-> Vercel
|
|
100
|
+
|
|
101
|
+
Azure --> AzureSDK[@azure/app-configuration-provider]
|
|
102
|
+
Vercel --> VercelSDK[@vercel/edge-config]
|
|
103
|
+
```
|
|
@@ -11,7 +11,6 @@ Represents the base class for all email delivery strategies.
|
|
|
11
11
|
|
|
12
12
|
## Extended by
|
|
13
13
|
|
|
14
|
-
- [`LogDeliveryStrategy`](Class.LogDeliveryStrategy)
|
|
15
14
|
- [`SmtpDeliveryStrategy`](Class.SmtpDeliveryStrategy)
|
|
16
15
|
- [`PostmarkDeliveryStrategy`](Class.PostmarkDeliveryStrategy)
|
|
17
16
|
- [`ResendDeliveryStrategy`](Class.ResendDeliveryStrategy)
|
|
@@ -13,7 +13,6 @@ editUrl: false
|
|
|
13
13
|
| [DatabaseTemplateFetchStrategy](Class.DatabaseTemplateFetchStrategy) | Template fetch strategy that loads templates from a database via the [IMailTemplateRepository](Interface.IMailTemplateRepository) port. |
|
|
14
14
|
| [DeliveryStrategyBase](Class.DeliveryStrategyBase) | Represents the base class for all email delivery strategies. |
|
|
15
15
|
| [FileTemplateFetchStrategy](Class.FileTemplateFetchStrategy) | The `FileTemplateFetchStrategy` class. |
|
|
16
|
-
| [LogDeliveryStrategy](Class.LogDeliveryStrategy) | The `LogDeliveryStrategy` class. |
|
|
17
16
|
| [MailDeliveryError](Class.MailDeliveryError) | Domain error thrown when email delivery fails. |
|
|
18
17
|
| [MailgunDeliveryStrategy](Class.MailgunDeliveryStrategy) | Delivers emails via the Mailgun API. |
|
|
19
18
|
| [MailHealthIndicator](Class.MailHealthIndicator) | Health indicator for mail service. |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breadstone/archipel-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.47",
|
|
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,71 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: 'Class: LogDeliveryStrategy'
|
|
3
|
-
generated: true
|
|
4
|
-
editUrl: false
|
|
5
|
-
---
|
|
6
|
-
# Class: LogDeliveryStrategy
|
|
7
|
-
|
|
8
|
-
Defined in: [platform-mailing/src/delivering/strategies/logger/LogDeliveryStrategy.ts:14](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-mailing/src/delivering/strategies/logger/LogDeliveryStrategy.ts#L14)
|
|
9
|
-
|
|
10
|
-
The `LogDeliveryStrategy` class.
|
|
11
|
-
|
|
12
|
-
## Extends
|
|
13
|
-
|
|
14
|
-
- [`DeliveryStrategyBase`](Class.DeliveryStrategyBase)
|
|
15
|
-
|
|
16
|
-
## Constructors
|
|
17
|
-
|
|
18
|
-
### Constructor
|
|
19
|
-
|
|
20
|
-
```ts
|
|
21
|
-
new LogDeliveryStrategy(): LogDeliveryStrategy;
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Defined in: [platform-mailing/src/delivering/strategies/logger/LogDeliveryStrategy.ts:28](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-mailing/src/delivering/strategies/logger/LogDeliveryStrategy.ts#L28)
|
|
25
|
-
|
|
26
|
-
Constructs a new instance of the `LogDelivery` class.
|
|
27
|
-
|
|
28
|
-
#### Returns
|
|
29
|
-
|
|
30
|
-
`LogDeliveryStrategy`
|
|
31
|
-
|
|
32
|
-
#### Overrides
|
|
33
|
-
|
|
34
|
-
[`DeliveryStrategyBase`](Class.DeliveryStrategyBase).[`constructor`](Class.DeliveryStrategyBase#constructor)
|
|
35
|
-
|
|
36
|
-
## Methods
|
|
37
|
-
|
|
38
|
-
### send()
|
|
39
|
-
|
|
40
|
-
```ts
|
|
41
|
-
abstract send(
|
|
42
|
-
from,
|
|
43
|
-
to,
|
|
44
|
-
subject,
|
|
45
|
-
content,
|
|
46
|
-
isHtml,
|
|
47
|
-
_attachments?): Promise<void>;
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Defined in: [platform-mailing/src/delivering/strategies/logger/LogDeliveryStrategy.ts:36](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-mailing/src/delivering/strategies/logger/LogDeliveryStrategy.ts#L36)
|
|
51
|
-
|
|
52
|
-
Sends an email with either plain text or HTML content.
|
|
53
|
-
|
|
54
|
-
#### Parameters
|
|
55
|
-
|
|
56
|
-
| Parameter | Type | Description |
|
|
57
|
-
| ------ | ------ | ------ |
|
|
58
|
-
| `from` | `string` | Sender's email address (optional, defaults to config) |
|
|
59
|
-
| `to` | `string` | Recipient's email address |
|
|
60
|
-
| `subject` | `string` | Subject of the email |
|
|
61
|
-
| `content` | `string` | Email body content (plain text or HTML) |
|
|
62
|
-
| `isHtml` | `boolean` | Flag to indicate whether the email is HTML (true) or plain text (false) |
|
|
63
|
-
| `_attachments?` | [`IMailAttachment`](Interface.IMailAttachment)[] | - |
|
|
64
|
-
|
|
65
|
-
#### Returns
|
|
66
|
-
|
|
67
|
-
`Promise`\<`void`\>
|
|
68
|
-
|
|
69
|
-
#### Overrides
|
|
70
|
-
|
|
71
|
-
[`DeliveryStrategyBase`](Class.DeliveryStrategyBase).[`send`](Class.DeliveryStrategyBase#send)
|