@breadstone/archipel-mcp 0.0.20 → 0.0.22
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 +10 -0
- package/data/guides/analytics-and-error-tracking.md +6 -0
- package/data/guides/cryptography-and-otp.md +20 -2
- package/data/guides/database-setup.md +4 -3
- package/data/guides/document-generation.md +26 -0
- package/data/guides/email-delivery.md +23 -0
- package/data/guides/email-templates.md +298 -0
- package/data/guides/esigning-integration.md +1 -1
- package/data/guides/getting-started.md +6 -6
- package/data/guides/index.md +1 -0
- package/data/guides/mcp-server.md +9 -0
- package/data/guides/payments-and-feature-gating.md +18 -0
- package/data/guides/resource-management.md +9 -9
- package/data/guides/telemetry-and-observability.md +7 -1
- package/data/packages/platform-analytics/api/Class.AppInsightsAnalyticsClient.md +55 -6
- package/data/packages/platform-analytics/api/Class.DatadogAnalyticsClient.md +32 -6
- package/data/packages/platform-analytics/api/Class.SentryAnalyticsClient.md +55 -6
- package/data/packages/platform-analytics/index.md +13 -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-core/api/Class.ErrorTemplateService.md +1 -1
- package/data/packages/platform-core/api/Class.EventHub.md +7 -7
- package/data/packages/platform-core/api/Class.HostService.md +1 -1
- package/data/packages/platform-core/api/Class.SseHub.md +29 -6
- package/data/packages/platform-core/api/Variable.ID_GENERATOR_TOKEN.md +1 -1
- package/data/packages/platform-core/api/index.md +0 -27
- package/data/packages/platform-core/index.md +8 -4
- package/data/packages/platform-cryptography/api/Class.BcryptService.md +4 -4
- package/data/packages/platform-cryptography/api/Class.CryptoService.md +3 -3
- package/data/packages/platform-cryptography/api/Class.OtpService.md +6 -6
- package/data/packages/platform-cryptography/api/Variable.BCRYPT_OPTIONS.md +2 -2
- package/data/packages/platform-cryptography/api/Variable.MAX_BCRYPT_PASSWORD_BYTES.md +1 -1
- package/data/packages/platform-cryptography/api/Variable.MIN_BCRYPT_ROUNDS.md +1 -1
- package/data/packages/platform-cryptography/api/Variable.OTP_OPTIONS.md +2 -2
- package/data/packages/platform-cryptography/api/Variable.OTP_SERVICE_TOKEN.md +2 -2
- package/data/packages/platform-cryptography/api/Variable.TOTP_EPOCH_TOLERANCE.md +1 -1
- package/data/packages/platform-cryptography/api/index.md +3 -3
- package/data/packages/platform-cryptography/index.md +10 -0
- package/data/packages/platform-documents/api/Class.BaseDocumentRenderer.md +32 -1
- package/data/packages/platform-documents/api/Class.DocumentEngine.md +4 -4
- package/data/packages/platform-documents/api/Class.DocumentError.md +61 -0
- package/data/packages/platform-documents/api/Class.DocumentModule.md +2 -2
- package/data/packages/platform-documents/api/Class.DocumentRenderError.md +53 -0
- package/data/packages/platform-documents/api/Class.DocumentValidationError.md +52 -0
- package/data/packages/platform-documents/api/Class.DocxDocumentRenderer2.md +333 -0
- package/data/packages/platform-documents/api/Class.ImageProcessingError.md +53 -0
- package/data/packages/platform-documents/api/Class.PdfDocumentRenderer.md +355 -0
- package/data/packages/platform-documents/api/Class.SharpImageProcessor.md +5 -5
- package/data/packages/platform-documents/api/Interface.IDocumentModuleOptions.md +31 -5
- package/data/packages/platform-documents/api/Variable.DOCUMENT_MODULE_OPTIONS.md +1 -1
- package/data/packages/platform-documents/api/Variable.DOCUMENT_PARSER_TOKEN.md +1 -1
- package/data/packages/platform-documents/api/Variable.DOCUMENT_RENDERER_TOKEN.md +1 -1
- package/data/packages/platform-documents/api/Variable.IMAGE_PROCESSOR_TOKEN.md +1 -1
- package/data/packages/platform-documents/api/index.md +6 -0
- package/data/packages/platform-documents/index.md +27 -0
- package/data/packages/platform-esigning/api/Class.EsigningClientPort.md +2 -2
- package/data/packages/platform-esigning/api/Class.InternalEsigningProvider.md +8 -8
- package/data/packages/platform-esigning/index.md +2 -0
- package/data/packages/platform-health/index.md +128 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceCapabilityRegistry.md +3 -3
- package/data/packages/platform-intelligence/api/Class.IntelligenceConfigurationError.md +50 -0
- package/data/packages/platform-intelligence/api/Class.IntelligenceTextGenerator.md +27 -4
- package/data/packages/platform-intelligence/api/Class.IntelligenceValidationError.md +50 -0
- package/data/packages/platform-intelligence/api/Function.loadProviderFactory.md +1 -1
- package/data/packages/platform-intelligence/api/index.md +2 -0
- package/data/packages/platform-intelligence/index.md +32 -0
- package/data/packages/platform-logging/api/Class.LoggerModule.md +1 -1
- package/data/packages/platform-logging/index.md +2 -0
- package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +0 -1
- package/data/packages/platform-mailing/api/Class.MailDeliveryError.md +65 -0
- package/data/packages/platform-mailing/api/Class.MailModule.md +1 -1
- package/data/packages/platform-mailing/api/Class.MailgunDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.PostmarkDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.ResendDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.SendGridDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.SmtpDeliveryStrategy.md +3 -3
- package/data/packages/platform-mailing/api/Class.TemplateFetchStrategyBase.md +0 -5
- package/data/packages/platform-mailing/api/Variable.SMTP_CONFIG_ENTRIES.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_HOST.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_PASSWORD.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_PORT.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_SECURE.md +14 -0
- package/data/packages/platform-mailing/api/Variable.SMTP_USER.md +14 -0
- package/data/packages/platform-mailing/api/index.md +7 -3
- package/data/packages/platform-mailing/index.md +29 -0
- package/data/packages/platform-mapping/index.md +121 -0
- package/data/packages/platform-mcp/api/Class.McpServerService.md +8 -8
- package/data/packages/platform-mcp/api/Variable.MCP_MODULE_OPTIONS.md +1 -1
- package/data/packages/platform-mcp/index.md +11 -0
- package/data/packages/platform-openapi/api/Class.SwaggerMultiDocumentService.md +4 -4
- package/data/packages/platform-openapi/api/Class.SwaggerTheme.md +2 -2
- package/data/packages/platform-openapi/index.md +1 -1
- package/data/packages/platform-payments/api/Class.LemonSqueezyClient.md +6 -6
- package/data/packages/platform-payments/api/Class.MollieClient.md +6 -6
- package/data/packages/platform-payments/api/Class.PaddleClient.md +6 -6
- package/data/packages/platform-payments/api/Class.PaymentError.md +65 -0
- package/data/packages/platform-payments/api/Class.StripeClient.md +6 -6
- package/data/packages/platform-payments/api/index.md +1 -0
- package/data/packages/platform-payments/index.md +29 -0
- package/data/packages/platform-reporting/api/Class.ReportingContributorRegistry.md +1 -1
- package/data/packages/platform-reporting/index.md +3 -1
- package/data/packages/platform-resources/index.md +135 -0
- package/data/packages/platform-telemetry/api/Class.MetricsService.md +29 -3
- package/data/packages/platform-telemetry/api/Class.OtelSdkHolder.md +3 -2
- package/data/packages/platform-telemetry/api/Class.TelemetryLoggerService.md +6 -6
- package/data/packages/platform-telemetry/api/Class.TelemetryRuleEngine.md +3 -3
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_ENABLED.md +1 -1
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_FACADE.md +1 -1
- package/data/packages/platform-telemetry/api/Variable.TELEMETRY_OPTIONS.md +1 -1
- package/data/packages/platform-telemetry/api/index.md +1 -1
- package/data/packages/platform-telemetry/index.md +3 -1
- package/{src/knowledge/configPattern.js → data/patterns/config-pattern.md} +44 -47
- package/{src/knowledge/dtoPattern.js → data/patterns/dto-pattern.md} +58 -61
- package/{src/knowledge/errorHandlingPattern.js → data/patterns/error-handling-pattern.md} +35 -38
- package/{src/knowledge/guardPattern.js → data/patterns/guard-pattern.md} +35 -38
- package/{src/knowledge/mappingPattern.js → data/patterns/mapping-pattern.md} +43 -144
- package/data/patterns/module-pattern.md +182 -0
- package/data/patterns/query-pattern.md +137 -0
- package/data/patterns/repository-pattern.md +208 -0
- package/{src/knowledge/testingPattern.js → data/patterns/testing-pattern.md} +37 -40
- package/package.json +1 -1
- package/src/PatternsLoader.d.ts +12 -0
- package/src/PatternsLoader.js +65 -0
- package/src/generators/mappingPatternGenerator.d.ts +5 -0
- package/src/generators/mappingPatternGenerator.js +107 -0
- package/src/generators/modulePatternGenerator.d.ts +5 -0
- package/src/generators/modulePatternGenerator.js +107 -0
- package/src/generators/queryPatternGenerator.d.ts +4 -0
- package/src/generators/queryPatternGenerator.js +83 -0
- package/src/generators/repositoryPatternGenerator.d.ts +5 -0
- package/src/generators/repositoryPatternGenerator.js +165 -0
- package/src/main.js +15 -9
- package/src/models/IPatternDoc.d.ts +15 -0
- package/src/models/IPatternDoc.js +3 -0
- package/src/tools/registerGetConfigPatternTool.d.ts +2 -1
- package/src/tools/registerGetConfigPatternTool.js +4 -3
- package/src/tools/registerGetDtoPatternTool.d.ts +2 -1
- package/src/tools/registerGetDtoPatternTool.js +4 -3
- package/src/tools/registerGetErrorHandlingPatternTool.d.ts +2 -1
- package/src/tools/registerGetErrorHandlingPatternTool.js +4 -3
- package/src/tools/registerGetGuardPatternTool.d.ts +2 -1
- package/src/tools/registerGetGuardPatternTool.js +4 -3
- package/src/tools/registerGetMappingPatternTool.d.ts +2 -1
- package/src/tools/registerGetMappingPatternTool.js +5 -4
- package/src/tools/registerGetModulePatternTool.d.ts +2 -1
- package/src/tools/registerGetModulePatternTool.js +5 -4
- package/src/tools/registerGetQueryPatternTool.d.ts +2 -1
- package/src/tools/registerGetQueryPatternTool.js +5 -4
- package/src/tools/registerGetRepositoryPatternTool.d.ts +2 -1
- package/src/tools/registerGetRepositoryPatternTool.js +5 -4
- package/src/tools/registerGetTestingPatternTool.d.ts +2 -1
- package/src/tools/registerGetTestingPatternTool.js +4 -3
- package/data/packages/platform-core/api/Class.BlobResourceStrategy.md +0 -195
- package/data/packages/platform-core/api/Class.EmbeddedResourceStrategy.md +0 -215
- package/data/packages/platform-core/api/Class.FileResourceStrategy.md +0 -192
- package/data/packages/platform-core/api/Class.HealthModule.md +0 -42
- package/data/packages/platform-core/api/Class.HealthOrchestrator.md +0 -64
- package/data/packages/platform-core/api/Class.MappingBuilder.md +0 -110
- package/data/packages/platform-core/api/Class.MappingModule.md +0 -46
- package/data/packages/platform-core/api/Class.MappingNotRegisteredError.md +0 -56
- package/data/packages/platform-core/api/Class.MappingProfileBase.md +0 -52
- package/data/packages/platform-core/api/Class.MappingService.md +0 -284
- package/data/packages/platform-core/api/Class.ResourceManager.md +0 -565
- package/data/packages/platform-core/api/Class.ResourceModule.md +0 -46
- package/data/packages/platform-core/api/Class.TypeMappingNotRegisteredError.md +0 -57
- package/data/packages/platform-core/api/Function.createMappingKey.md +0 -39
- package/data/packages/platform-core/api/Interface.IBlobResourceStrategyConfig.md +0 -28
- package/data/packages/platform-core/api/Interface.IBlobServiceAdapter.md +0 -40
- package/data/packages/platform-core/api/Interface.IFileResourceStrategyConfig.md +0 -72
- package/data/packages/platform-core/api/Interface.IHealthCheckResult.md +0 -46
- package/data/packages/platform-core/api/Interface.IHealthIndicator.md +0 -41
- package/data/packages/platform-core/api/Interface.IMappingBuilder.md +0 -76
- package/data/packages/platform-core/api/Interface.IMappingKey.md +0 -58
- package/data/packages/platform-core/api/Interface.IMappingProfile.md +0 -32
- package/data/packages/platform-core/api/Interface.IResourceManagerConfig.md +0 -89
- package/data/packages/platform-core/api/Interface.IResourceMetadata.md +0 -94
- package/data/packages/platform-core/api/Interface.IResourceResult.md +0 -34
- package/data/packages/platform-core/api/Interface.IResourceStrategy.md +0 -134
- package/data/packages/platform-core/api/Variable.HEALTH_INDICATORS_TOKEN.md +0 -14
- package/data/packages/platform-mailing/api/Class.BlobTemplateFetchStrategy.md +0 -60
- package/data/packages/platform-mailing/api/Class.FileTemplateFetchStrategy.md +0 -58
- package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +0 -71
- package/src/knowledge/configPattern.d.ts +0 -5
- package/src/knowledge/dtoPattern.d.ts +0 -5
- package/src/knowledge/errorHandlingPattern.d.ts +0 -5
- package/src/knowledge/guardPattern.d.ts +0 -5
- package/src/knowledge/mappingPattern.d.ts +0 -6
- package/src/knowledge/modulePattern.d.ts +0 -6
- package/src/knowledge/modulePattern.js +0 -283
- package/src/knowledge/queryPattern.d.ts +0 -6
- package/src/knowledge/queryPattern.js +0 -215
- package/src/knowledge/repositoryPattern.d.ts +0 -6
- package/src/knowledge/repositoryPattern.js +0 -367
- package/src/knowledge/testingPattern.d.ts +0 -5
|
@@ -171,7 +171,13 @@ This prevents noisy endpoints (health checks, readiness probes) from overwhelmin
|
|
|
171
171
|
|
|
172
172
|
## Graceful Shutdown
|
|
173
173
|
|
|
174
|
-
The module registers a shutdown hook that flushes all pending telemetry data before the process exits.
|
|
174
|
+
The module registers a shutdown hook that flushes all pending telemetry data before the process exits. The SDK shutdown is capped at **5 seconds** to prevent the process from hanging if the OTEL collector is unreachable.
|
|
175
|
+
|
|
176
|
+
### Lifecycle Details
|
|
177
|
+
|
|
178
|
+
- **`MetricsService`** creates metric instruments eagerly via `OnModuleInit` (not lazily on first use).
|
|
179
|
+
- **`OtelSdkHolder`** enforces a write-once guard — calling `setSdk()` twice logs a warning instead of overwriting.
|
|
180
|
+
- **`TelemetryRuleEngine`** logs rule evaluation failures as warnings instead of silently swallowing errors. This ensures you don't lose metrics or traces during deployments or scaling events.
|
|
175
181
|
|
|
176
182
|
---
|
|
177
183
|
|
|
@@ -14,6 +14,11 @@ Uses the `applicationinsights` SDK for error tracking and analytics.
|
|
|
14
14
|
|
|
15
15
|
- [`AnalyticsClientPort`](Class.AnalyticsClientPort)
|
|
16
16
|
|
|
17
|
+
## Implements
|
|
18
|
+
|
|
19
|
+
- `OnModuleInit`
|
|
20
|
+
- `OnModuleDestroy`
|
|
21
|
+
|
|
17
22
|
## Constructors
|
|
18
23
|
|
|
19
24
|
### Constructor
|
|
@@ -22,7 +27,7 @@ Uses the `applicationinsights` SDK for error tracking and analytics.
|
|
|
22
27
|
new AppInsightsAnalyticsClient(configService): AppInsightsAnalyticsClient;
|
|
23
28
|
```
|
|
24
29
|
|
|
25
|
-
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:
|
|
30
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:33](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L33)
|
|
26
31
|
|
|
27
32
|
#### Parameters
|
|
28
33
|
|
|
@@ -46,7 +51,7 @@ Defined in: [application-insights/AppInsightsAnalyticsClient.ts:32](https://gith
|
|
|
46
51
|
addBreadcrumb(breadcrumb): void;
|
|
47
52
|
```
|
|
48
53
|
|
|
49
|
-
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:
|
|
54
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:100](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L100)
|
|
50
55
|
|
|
51
56
|
Add a breadcrumb entry to the analytics trail.
|
|
52
57
|
|
|
@@ -72,7 +77,7 @@ Add a breadcrumb entry to the analytics trail.
|
|
|
72
77
|
captureException(error, context?): void;
|
|
73
78
|
```
|
|
74
79
|
|
|
75
|
-
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:
|
|
80
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:68](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L68)
|
|
76
81
|
|
|
77
82
|
Capture an exception with optional context.
|
|
78
83
|
|
|
@@ -102,7 +107,7 @@ captureMessage(
|
|
|
102
107
|
context?): void;
|
|
103
108
|
```
|
|
104
109
|
|
|
105
|
-
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:
|
|
110
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:76](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L76)
|
|
106
111
|
|
|
107
112
|
Capture a message with a specific severity level.
|
|
108
113
|
|
|
@@ -130,7 +135,7 @@ Capture a message with a specific severity level.
|
|
|
130
135
|
clearUser(): void;
|
|
131
136
|
```
|
|
132
137
|
|
|
133
|
-
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:
|
|
138
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:94](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L94)
|
|
134
139
|
|
|
135
140
|
Clear the current user context.
|
|
136
141
|
|
|
@@ -144,13 +149,57 @@ Clear the current user context.
|
|
|
144
149
|
|
|
145
150
|
***
|
|
146
151
|
|
|
152
|
+
### onModuleDestroy()
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
onModuleDestroy(): Promise<void>;
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:62](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L62)
|
|
159
|
+
|
|
160
|
+
Flushes pending Application Insights telemetry before shutdown.
|
|
161
|
+
|
|
162
|
+
#### Returns
|
|
163
|
+
|
|
164
|
+
`Promise`\<`void`\>
|
|
165
|
+
|
|
166
|
+
#### Implementation of
|
|
167
|
+
|
|
168
|
+
```ts
|
|
169
|
+
OnModuleDestroy.onModuleDestroy
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
***
|
|
173
|
+
|
|
174
|
+
### onModuleInit()
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
onModuleInit(): void;
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:47](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L47)
|
|
181
|
+
|
|
182
|
+
Initializes the Application Insights SDK.
|
|
183
|
+
|
|
184
|
+
#### Returns
|
|
185
|
+
|
|
186
|
+
`void`
|
|
187
|
+
|
|
188
|
+
#### Implementation of
|
|
189
|
+
|
|
190
|
+
```ts
|
|
191
|
+
OnModuleInit.onModuleInit
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
***
|
|
195
|
+
|
|
147
196
|
### setUser()
|
|
148
197
|
|
|
149
198
|
```ts
|
|
150
199
|
setUser(user): void;
|
|
151
200
|
```
|
|
152
201
|
|
|
153
|
-
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:
|
|
202
|
+
Defined in: [application-insights/AppInsightsAnalyticsClient.ts:85](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/application-insights/AppInsightsAnalyticsClient.ts#L85)
|
|
154
203
|
|
|
155
204
|
Set the current user context for subsequent events.
|
|
156
205
|
|
|
@@ -14,6 +14,10 @@ Uses the `dd-trace` SDK for error tracking and analytics.
|
|
|
14
14
|
|
|
15
15
|
- [`AnalyticsClientPort`](Class.AnalyticsClientPort)
|
|
16
16
|
|
|
17
|
+
## Implements
|
|
18
|
+
|
|
19
|
+
- `OnModuleInit`
|
|
20
|
+
|
|
17
21
|
## Constructors
|
|
18
22
|
|
|
19
23
|
### Constructor
|
|
@@ -22,7 +26,7 @@ Uses the `dd-trace` SDK for error tracking and analytics.
|
|
|
22
26
|
new DatadogAnalyticsClient(configService): DatadogAnalyticsClient;
|
|
23
27
|
```
|
|
24
28
|
|
|
25
|
-
Defined in: [datadog/DatadogAnalyticsClient.ts:
|
|
29
|
+
Defined in: [datadog/DatadogAnalyticsClient.ts:33](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/datadog/DatadogAnalyticsClient.ts#L33)
|
|
26
30
|
|
|
27
31
|
#### Parameters
|
|
28
32
|
|
|
@@ -46,7 +50,7 @@ Defined in: [datadog/DatadogAnalyticsClient.ts:32](https://github.com/RueDeRenne
|
|
|
46
50
|
addBreadcrumb(breadcrumb): void;
|
|
47
51
|
```
|
|
48
52
|
|
|
49
|
-
Defined in: [datadog/DatadogAnalyticsClient.ts:
|
|
53
|
+
Defined in: [datadog/DatadogAnalyticsClient.ts:129](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/datadog/DatadogAnalyticsClient.ts#L129)
|
|
50
54
|
|
|
51
55
|
Add a breadcrumb entry to the analytics trail.
|
|
52
56
|
|
|
@@ -72,7 +76,7 @@ Add a breadcrumb entry to the analytics trail.
|
|
|
72
76
|
captureException(error, context?): void;
|
|
73
77
|
```
|
|
74
78
|
|
|
75
|
-
Defined in: [datadog/DatadogAnalyticsClient.ts:
|
|
79
|
+
Defined in: [datadog/DatadogAnalyticsClient.ts:59](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/datadog/DatadogAnalyticsClient.ts#L59)
|
|
76
80
|
|
|
77
81
|
Capture an exception with optional context.
|
|
78
82
|
|
|
@@ -102,7 +106,7 @@ captureMessage(
|
|
|
102
106
|
context?): void;
|
|
103
107
|
```
|
|
104
108
|
|
|
105
|
-
Defined in: [datadog/DatadogAnalyticsClient.ts:
|
|
109
|
+
Defined in: [datadog/DatadogAnalyticsClient.ts:84](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/datadog/DatadogAnalyticsClient.ts#L84)
|
|
106
110
|
|
|
107
111
|
Capture a message with a specific severity level.
|
|
108
112
|
|
|
@@ -130,7 +134,7 @@ Capture a message with a specific severity level.
|
|
|
130
134
|
clearUser(): void;
|
|
131
135
|
```
|
|
132
136
|
|
|
133
|
-
Defined in: [datadog/DatadogAnalyticsClient.ts:
|
|
137
|
+
Defined in: [datadog/DatadogAnalyticsClient.ts:124](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/datadog/DatadogAnalyticsClient.ts#L124)
|
|
134
138
|
|
|
135
139
|
Clear the current user context.
|
|
136
140
|
|
|
@@ -144,13 +148,35 @@ Clear the current user context.
|
|
|
144
148
|
|
|
145
149
|
***
|
|
146
150
|
|
|
151
|
+
### onModuleInit()
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
onModuleInit(): void;
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Defined in: [datadog/DatadogAnalyticsClient.ts:49](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/datadog/DatadogAnalyticsClient.ts#L49)
|
|
158
|
+
|
|
159
|
+
Initializes the Datadog tracer SDK.
|
|
160
|
+
|
|
161
|
+
#### Returns
|
|
162
|
+
|
|
163
|
+
`void`
|
|
164
|
+
|
|
165
|
+
#### Implementation of
|
|
166
|
+
|
|
167
|
+
```ts
|
|
168
|
+
OnModuleInit.onModuleInit
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
***
|
|
172
|
+
|
|
147
173
|
### setUser()
|
|
148
174
|
|
|
149
175
|
```ts
|
|
150
176
|
setUser(user): void;
|
|
151
177
|
```
|
|
152
178
|
|
|
153
|
-
Defined in: [datadog/DatadogAnalyticsClient.ts:
|
|
179
|
+
Defined in: [datadog/DatadogAnalyticsClient.ts:105](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/datadog/DatadogAnalyticsClient.ts#L105)
|
|
154
180
|
|
|
155
181
|
Set the current user context for subsequent events.
|
|
156
182
|
|
|
@@ -14,6 +14,11 @@ Uses the official `@sentry/node` SDK for error tracking and analytics.
|
|
|
14
14
|
|
|
15
15
|
- [`AnalyticsClientPort`](Class.AnalyticsClientPort)
|
|
16
16
|
|
|
17
|
+
## Implements
|
|
18
|
+
|
|
19
|
+
- `OnModuleInit`
|
|
20
|
+
- `OnModuleDestroy`
|
|
21
|
+
|
|
17
22
|
## Constructors
|
|
18
23
|
|
|
19
24
|
### Constructor
|
|
@@ -22,7 +27,7 @@ Uses the official `@sentry/node` SDK for error tracking and analytics.
|
|
|
22
27
|
new SentryAnalyticsClient(configService): SentryAnalyticsClient;
|
|
23
28
|
```
|
|
24
29
|
|
|
25
|
-
Defined in: [sentry/SentryAnalyticsClient.ts:
|
|
30
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:31](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L31)
|
|
26
31
|
|
|
27
32
|
#### Parameters
|
|
28
33
|
|
|
@@ -46,7 +51,7 @@ Defined in: [sentry/SentryAnalyticsClient.ts:30](https://github.com/RueDeRennes/
|
|
|
46
51
|
addBreadcrumb(breadcrumb): void;
|
|
47
52
|
```
|
|
48
53
|
|
|
49
|
-
Defined in: [sentry/SentryAnalyticsClient.ts:
|
|
54
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:92](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L92)
|
|
50
55
|
|
|
51
56
|
Add a breadcrumb entry to the analytics trail.
|
|
52
57
|
|
|
@@ -72,7 +77,7 @@ Add a breadcrumb entry to the analytics trail.
|
|
|
72
77
|
captureException(error, context?): void;
|
|
73
78
|
```
|
|
74
79
|
|
|
75
|
-
Defined in: [sentry/SentryAnalyticsClient.ts:
|
|
80
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:64](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L64)
|
|
76
81
|
|
|
77
82
|
Capture an exception with optional context.
|
|
78
83
|
|
|
@@ -102,7 +107,7 @@ captureMessage(
|
|
|
102
107
|
context?): void;
|
|
103
108
|
```
|
|
104
109
|
|
|
105
|
-
Defined in: [sentry/SentryAnalyticsClient.ts:
|
|
110
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:69](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L69)
|
|
106
111
|
|
|
107
112
|
Capture a message with a specific severity level.
|
|
108
113
|
|
|
@@ -130,7 +135,7 @@ Capture a message with a specific severity level.
|
|
|
130
135
|
clearUser(): void;
|
|
131
136
|
```
|
|
132
137
|
|
|
133
|
-
Defined in: [sentry/SentryAnalyticsClient.ts:
|
|
138
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:87](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L87)
|
|
134
139
|
|
|
135
140
|
Clear the current user context.
|
|
136
141
|
|
|
@@ -144,13 +149,57 @@ Clear the current user context.
|
|
|
144
149
|
|
|
145
150
|
***
|
|
146
151
|
|
|
152
|
+
### onModuleDestroy()
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
onModuleDestroy(): Promise<void>;
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:59](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L59)
|
|
159
|
+
|
|
160
|
+
Flushes pending Sentry events before shutdown.
|
|
161
|
+
|
|
162
|
+
#### Returns
|
|
163
|
+
|
|
164
|
+
`Promise`\<`void`\>
|
|
165
|
+
|
|
166
|
+
#### Implementation of
|
|
167
|
+
|
|
168
|
+
```ts
|
|
169
|
+
OnModuleDestroy.onModuleDestroy
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
***
|
|
173
|
+
|
|
174
|
+
### onModuleInit()
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
onModuleInit(): void;
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:45](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L45)
|
|
181
|
+
|
|
182
|
+
Initializes the Sentry SDK.
|
|
183
|
+
|
|
184
|
+
#### Returns
|
|
185
|
+
|
|
186
|
+
`void`
|
|
187
|
+
|
|
188
|
+
#### Implementation of
|
|
189
|
+
|
|
190
|
+
```ts
|
|
191
|
+
OnModuleInit.onModuleInit
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
***
|
|
195
|
+
|
|
147
196
|
### setUser()
|
|
148
197
|
|
|
149
198
|
```ts
|
|
150
199
|
setUser(user): void;
|
|
151
200
|
```
|
|
152
201
|
|
|
153
|
-
Defined in: [sentry/SentryAnalyticsClient.ts:
|
|
202
|
+
Defined in: [sentry/SentryAnalyticsClient.ts:77](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-analytics/src/sentry/SentryAnalyticsClient.ts#L77)
|
|
154
203
|
|
|
155
204
|
Set the current user context for subsequent events.
|
|
156
205
|
|
|
@@ -155,6 +155,19 @@ Each provider is tree-shakeable via sub-path imports:
|
|
|
155
155
|
|
|
156
156
|
---
|
|
157
157
|
|
|
158
|
+
## Lifecycle & Shutdown
|
|
159
|
+
|
|
160
|
+
All built-in clients implement `OnModuleInit` and `OnModuleDestroy`:
|
|
161
|
+
|
|
162
|
+
| Phase | Behavior |
|
|
163
|
+
| ----------- | --------------------------------------------------------------------------- |
|
|
164
|
+
| **Init** | SDK initialization is deferred to `onModuleInit()` — no constructor I/O |
|
|
165
|
+
| **Destroy** | Pending events are flushed and the SDK is closed with a 5-second timeout |
|
|
166
|
+
|
|
167
|
+
This ensures no events are lost during application shutdown and prevents hanging processes if the analytics backend is unreachable.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
158
171
|
## Exports Summary
|
|
159
172
|
|
|
160
173
|
| Export | Type | Description |
|
|
@@ -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: [
|
|
12
|
+
Defined in: [BlobStorageTokens.ts:6](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/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: [
|
|
12
|
+
Defined in: [BlobStorageTokens.ts:5](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/BlobStorageTokens.ts#L5)
|
|
@@ -9,4 +9,4 @@ editUrl: false
|
|
|
9
9
|
const BLOB_PROVIDER: typeof BLOB_PROVIDER;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [
|
|
12
|
+
Defined in: [BlobStorageTokens.ts:3](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/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: [
|
|
12
|
+
Defined in: [BlobStorageTokens.ts:4](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-blob-storage/src/BlobStorageTokens.ts#L4)
|
|
@@ -30,7 +30,7 @@ Constructs a new instance of the `ErrorTemplateService` class.
|
|
|
30
30
|
| ------ | ------ |
|
|
31
31
|
| `configService` | `ConfigService` |
|
|
32
32
|
| `contentTemplateEngine` | [`ContentTemplateEngine`](Class.ContentTemplateEngine) |
|
|
33
|
-
| `resourceManager` |
|
|
33
|
+
| `resourceManager` | `ResourceManager` |
|
|
34
34
|
|
|
35
35
|
#### Returns
|
|
36
36
|
|
|
@@ -5,7 +5,7 @@ editUrl: false
|
|
|
5
5
|
---
|
|
6
6
|
# Class: EventHub
|
|
7
7
|
|
|
8
|
-
Defined in: [events/EventHub.ts:
|
|
8
|
+
Defined in: [events/EventHub.ts:37](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/events/EventHub.ts#L37)
|
|
9
9
|
|
|
10
10
|
Provides a strongly typed event hub that can publish and subscribe to events.
|
|
11
11
|
|
|
@@ -21,7 +21,7 @@ Provides a strongly typed event hub that can publish and subscribe to events.
|
|
|
21
21
|
new EventHub(): EventHub;
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
Defined in: [events/EventHub.ts:
|
|
24
|
+
Defined in: [events/EventHub.ts:49](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/events/EventHub.ts#L49)
|
|
25
25
|
|
|
26
26
|
Initializes a new instance of the EventHub class.
|
|
27
27
|
|
|
@@ -39,7 +39,7 @@ Initializes a new instance of the EventHub class.
|
|
|
39
39
|
get events(): Observable<AnyEventNotification>;
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
Defined in: [events/EventHub.ts:
|
|
42
|
+
Defined in: [events/EventHub.ts:63](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/events/EventHub.ts#L63)
|
|
43
43
|
|
|
44
44
|
Gets the observable sequence that exposes all events published within the hub.
|
|
45
45
|
|
|
@@ -55,7 +55,7 @@ Gets the observable sequence that exposes all events published within the hub.
|
|
|
55
55
|
observe<TEvents, TKey>(eventKey): Observable<TEvents[TKey]>;
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
Defined in: [events/EventHub.ts:
|
|
58
|
+
Defined in: [events/EventHub.ts:122](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/events/EventHub.ts#L122)
|
|
59
59
|
|
|
60
60
|
Returns an observable that emits payloads for the specified event.
|
|
61
61
|
|
|
@@ -86,7 +86,7 @@ An observable sequence that emits payloads of the specified event
|
|
|
86
86
|
onModuleDestroy(): void;
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
Defined in: [events/EventHub.ts:
|
|
89
|
+
Defined in: [events/EventHub.ts:140](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/events/EventHub.ts#L140)
|
|
90
90
|
|
|
91
91
|
Completes the event stream when the module is destroyed.
|
|
92
92
|
|
|
@@ -108,7 +108,7 @@ OnModuleDestroy.onModuleDestroy
|
|
|
108
108
|
publish<TEvents, TKey>(eventKey, payload): void;
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
Defined in: [events/EventHub.ts:
|
|
111
|
+
Defined in: [events/EventHub.ts:78](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/events/EventHub.ts#L78)
|
|
112
112
|
|
|
113
113
|
Publishes an event with the specified payload to all subscribers.
|
|
114
114
|
|
|
@@ -138,7 +138,7 @@ Publishes an event with the specified payload to all subscribers.
|
|
|
138
138
|
subscribe<TEvents, TKey>(eventKey, handler): Subscription;
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
Defined in: [events/EventHub.ts:
|
|
141
|
+
Defined in: [events/EventHub.ts:102](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/events/EventHub.ts#L102)
|
|
142
142
|
|
|
143
143
|
Subscribes to the specified event and invokes the handler whenever the event is published.
|
|
144
144
|
|
|
@@ -30,7 +30,7 @@ Constructs a new instance of the `HostService` class.
|
|
|
30
30
|
| ------ | ------ |
|
|
31
31
|
| `configService` | `ConfigService` |
|
|
32
32
|
| `contentTemplateEngine` | [`ContentTemplateEngine`](Class.ContentTemplateEngine) |
|
|
33
|
-
| `resourceManager` |
|
|
33
|
+
| `resourceManager` | `ResourceManager` |
|
|
34
34
|
|
|
35
35
|
#### Returns
|
|
36
36
|
|
|
@@ -12,6 +12,7 @@ Represents a server-sent event service.
|
|
|
12
12
|
## Implements
|
|
13
13
|
|
|
14
14
|
- [`ISseHub`](Interface.ISseHub)
|
|
15
|
+
- `OnModuleDestroy`
|
|
15
16
|
|
|
16
17
|
## Constructors
|
|
17
18
|
|
|
@@ -37,7 +38,7 @@ Constructs a new instance of the `SseService` class.
|
|
|
37
38
|
clearEvent(id): void;
|
|
38
39
|
```
|
|
39
40
|
|
|
40
|
-
Defined in: [sse/services/SseHub.ts:
|
|
41
|
+
Defined in: [sse/services/SseHub.ts:122](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/sse/services/SseHub.ts#L122)
|
|
41
42
|
|
|
42
43
|
Clears the event with the specified ID.
|
|
43
44
|
|
|
@@ -63,7 +64,7 @@ Clears the event with the specified ID.
|
|
|
63
64
|
emitEvent(id, data): void;
|
|
64
65
|
```
|
|
65
66
|
|
|
66
|
-
Defined in: [sse/services/SseHub.ts:
|
|
67
|
+
Defined in: [sse/services/SseHub.ts:94](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/sse/services/SseHub.ts#L94)
|
|
67
68
|
|
|
68
69
|
Emits an event with the specified ID and data.
|
|
69
70
|
|
|
@@ -90,7 +91,7 @@ Emits an event with the specified ID and data.
|
|
|
90
91
|
getObservable(eventId): Observable<ISseEventData<unknown>>;
|
|
91
92
|
```
|
|
92
93
|
|
|
93
|
-
Defined in: [sse/services/SseHub.ts:
|
|
94
|
+
Defined in: [sse/services/SseHub.ts:152](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/sse/services/SseHub.ts#L152)
|
|
94
95
|
|
|
95
96
|
Gets an observable for the event with the specified ID.
|
|
96
97
|
|
|
@@ -118,7 +119,7 @@ An observable for the event.
|
|
|
118
119
|
isEventActive(id): boolean;
|
|
119
120
|
```
|
|
120
121
|
|
|
121
|
-
Defined in: [sse/services/SseHub.ts:
|
|
122
|
+
Defined in: [sse/services/SseHub.ts:139](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/sse/services/SseHub.ts#L139)
|
|
122
123
|
|
|
123
124
|
Determines whether the event with the specified ID is active.
|
|
124
125
|
|
|
@@ -140,13 +141,35 @@ Determines whether the event with the specified ID is active.
|
|
|
140
141
|
|
|
141
142
|
***
|
|
142
143
|
|
|
144
|
+
### onModuleDestroy()
|
|
145
|
+
|
|
146
|
+
```ts
|
|
147
|
+
onModuleDestroy(): void;
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Defined in: [sse/services/SseHub.ts:44](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/sse/services/SseHub.ts#L44)
|
|
151
|
+
|
|
152
|
+
Completes all active event subjects and clears the registry on module destruction.
|
|
153
|
+
|
|
154
|
+
#### Returns
|
|
155
|
+
|
|
156
|
+
`void`
|
|
157
|
+
|
|
158
|
+
#### Implementation of
|
|
159
|
+
|
|
160
|
+
```ts
|
|
161
|
+
OnModuleDestroy.onModuleDestroy
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
***
|
|
165
|
+
|
|
143
166
|
### registerEvent()
|
|
144
167
|
|
|
145
168
|
```ts
|
|
146
169
|
registerEvent(id): void;
|
|
147
170
|
```
|
|
148
171
|
|
|
149
|
-
Defined in: [sse/services/SseHub.ts:
|
|
172
|
+
Defined in: [sse/services/SseHub.ts:58](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/sse/services/SseHub.ts#L58)
|
|
150
173
|
|
|
151
174
|
Registers an event with the specified ID.
|
|
152
175
|
|
|
@@ -168,7 +191,7 @@ Registers an event with the specified ID.
|
|
|
168
191
|
unregisterEvent(id): void;
|
|
169
192
|
```
|
|
170
193
|
|
|
171
|
-
Defined in: [sse/services/SseHub.ts:
|
|
194
|
+
Defined in: [sse/services/SseHub.ts:77](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/sse/services/SseHub.ts#L77)
|
|
172
195
|
|
|
173
196
|
Unregisters an event with the specified ID.
|
|
174
197
|
|
|
@@ -9,6 +9,6 @@ editUrl: false
|
|
|
9
9
|
const ID_GENERATOR_TOKEN: typeof ID_GENERATOR_TOKEN;
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Defined in: [identifiers/IdentifierTokens.ts:6](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/identifiers/IdentifierTokens.ts#L6)
|
|
12
|
+
Defined in: [identifiers/tokens/IdentifierTokens.ts:6](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-core/src/identifiers/tokens/IdentifierTokens.ts#L6)
|
|
13
13
|
|
|
14
14
|
Interface for ID generators
|