@soulbatical/tetra-core 0.10.4 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -38
- package/dist/core/createApp.d.ts +1 -1
- package/dist/core/createApp.d.ts.map +1 -1
- package/dist/core/createApp.js +77 -2
- package/dist/core/createApp.js.map +1 -1
- package/dist/core/dualWriteProxy.d.ts +7 -2
- package/dist/core/dualWriteProxy.d.ts.map +1 -1
- package/dist/core/dualWriteProxy.js +16 -5
- package/dist/core/dualWriteProxy.js.map +1 -1
- package/dist/core/routeContext.d.ts +24 -0
- package/dist/core/routeContext.d.ts.map +1 -1
- package/dist/core/routeContext.js +31 -4
- package/dist/core/routeContext.js.map +1 -1
- package/dist/core/systemDb.d.ts +2 -2
- package/dist/core/systemDb.js +2 -2
- package/dist/generators/rls-checker.d.ts +1 -1
- package/dist/generators/rls-checker.js +1 -1
- package/dist/generators/rls-exec-sql.d.ts +1 -1
- package/dist/generators/rls-exec-sql.js +1 -1
- package/dist/generators/rpc/index.d.ts +1 -1
- package/dist/generators/rpc/index.js +1 -1
- package/dist/index.d.ts +3 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -32
- package/dist/index.js.map +1 -1
- package/dist/middleware/securityMiddleware.d.ts +1 -1
- package/dist/middleware/securityMiddleware.d.ts.map +1 -1
- package/dist/middleware/validateBody.d.ts.map +1 -1
- package/dist/middleware/validateBody.js +51 -8
- package/dist/middleware/validateBody.js.map +1 -1
- package/dist/shared/rfc7807ErrorResponse.d.ts +7 -0
- package/dist/shared/rfc7807ErrorResponse.d.ts.map +1 -1
- package/dist/shared/rfc7807ErrorResponse.js +19 -5
- package/dist/shared/rfc7807ErrorResponse.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +16 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +33 -77
- package/dist/affiliate.d.ts +0 -11
- package/dist/affiliate.d.ts.map +0 -1
- package/dist/affiliate.js +0 -10
- package/dist/affiliate.js.map +0 -1
- package/dist/billing.d.ts +0 -8
- package/dist/billing.d.ts.map +0 -1
- package/dist/billing.js +0 -7
- package/dist/billing.js.map +0 -1
- package/dist/email.d.ts +0 -9
- package/dist/email.d.ts.map +0 -1
- package/dist/email.js +0 -8
- package/dist/email.js.map +0 -1
- package/dist/generators/rls-exec-sql.sql +0 -57
- package/dist/generators.d.ts +0 -15
- package/dist/generators.d.ts.map +0 -1
- package/dist/generators.js +0 -12
- package/dist/generators.js.map +0 -1
- package/dist/mcp.d.ts +0 -8
- package/dist/mcp.d.ts.map +0 -1
- package/dist/mcp.js +0 -7
- package/dist/mcp.js.map +0 -1
- package/dist/planner.d.ts +0 -8
- package/dist/planner.d.ts.map +0 -1
- package/dist/planner.js +0 -7
- package/dist/planner.js.map +0 -1
- package/dist/shared/affiliate/AffiliateAttributionService.d.ts +0 -47
- package/dist/shared/affiliate/AffiliateAttributionService.d.ts.map +0 -1
- package/dist/shared/affiliate/AffiliateAttributionService.js +0 -308
- package/dist/shared/affiliate/AffiliateAttributionService.js.map +0 -1
- package/dist/shared/affiliate/AffiliateClickService.d.ts +0 -35
- package/dist/shared/affiliate/AffiliateClickService.d.ts.map +0 -1
- package/dist/shared/affiliate/AffiliateClickService.js +0 -87
- package/dist/shared/affiliate/AffiliateClickService.js.map +0 -1
- package/dist/shared/affiliate/affiliateFeatureConfig.d.ts +0 -11
- package/dist/shared/affiliate/affiliateFeatureConfig.d.ts.map +0 -1
- package/dist/shared/affiliate/affiliateFeatureConfig.js +0 -242
- package/dist/shared/affiliate/affiliateFeatureConfig.js.map +0 -1
- package/dist/shared/affiliate/index.d.ts +0 -11
- package/dist/shared/affiliate/index.d.ts.map +0 -1
- package/dist/shared/affiliate/index.js +0 -13
- package/dist/shared/affiliate/index.js.map +0 -1
- package/dist/shared/affiliate/routes.d.ts +0 -87
- package/dist/shared/affiliate/routes.d.ts.map +0 -1
- package/dist/shared/affiliate/routes.js +0 -404
- package/dist/shared/affiliate/routes.js.map +0 -1
- package/dist/shared/affiliate/types.d.ts +0 -170
- package/dist/shared/affiliate/types.d.ts.map +0 -1
- package/dist/shared/affiliate/types.js +0 -11
- package/dist/shared/affiliate/types.js.map +0 -1
- package/dist/shared/billing/BillingService.d.ts +0 -56
- package/dist/shared/billing/BillingService.d.ts.map +0 -1
- package/dist/shared/billing/BillingService.js +0 -588
- package/dist/shared/billing/BillingService.js.map +0 -1
- package/dist/shared/billing/SeatBillingService.d.ts +0 -106
- package/dist/shared/billing/SeatBillingService.d.ts.map +0 -1
- package/dist/shared/billing/SeatBillingService.js +0 -292
- package/dist/shared/billing/SeatBillingService.js.map +0 -1
- package/dist/shared/billing/index.d.ts +0 -30
- package/dist/shared/billing/index.d.ts.map +0 -1
- package/dist/shared/billing/index.js +0 -27
- package/dist/shared/billing/index.js.map +0 -1
- package/dist/shared/billing/routes.d.ts +0 -45
- package/dist/shared/billing/routes.d.ts.map +0 -1
- package/dist/shared/billing/routes.js +0 -184
- package/dist/shared/billing/routes.js.map +0 -1
- package/dist/shared/billing/seat-pricing.d.ts +0 -53
- package/dist/shared/billing/seat-pricing.d.ts.map +0 -1
- package/dist/shared/billing/seat-pricing.js +0 -81
- package/dist/shared/billing/seat-pricing.js.map +0 -1
- package/dist/shared/billing/types.d.ts +0 -109
- package/dist/shared/billing/types.d.ts.map +0 -1
- package/dist/shared/billing/types.js +0 -8
- package/dist/shared/billing/types.js.map +0 -1
- package/dist/shared/email/EmailService.d.ts +0 -64
- package/dist/shared/email/EmailService.d.ts.map +0 -1
- package/dist/shared/email/EmailService.js +0 -300
- package/dist/shared/email/EmailService.js.map +0 -1
- package/dist/shared/email/adminRoutes.d.ts +0 -30
- package/dist/shared/email/adminRoutes.d.ts.map +0 -1
- package/dist/shared/email/adminRoutes.js +0 -227
- package/dist/shared/email/adminRoutes.js.map +0 -1
- package/dist/shared/email/gmail.d.ts +0 -208
- package/dist/shared/email/gmail.d.ts.map +0 -1
- package/dist/shared/email/gmail.js +0 -626
- package/dist/shared/email/gmail.js.map +0 -1
- package/dist/shared/email/index.d.ts +0 -15
- package/dist/shared/email/index.d.ts.map +0 -1
- package/dist/shared/email/index.js +0 -18
- package/dist/shared/email/index.js.map +0 -1
- package/dist/shared/email/mailgun.d.ts +0 -18
- package/dist/shared/email/mailgun.d.ts.map +0 -1
- package/dist/shared/email/mailgun.js +0 -76
- package/dist/shared/email/mailgun.js.map +0 -1
- package/dist/shared/email/sanitize.d.ts +0 -25
- package/dist/shared/email/sanitize.d.ts.map +0 -1
- package/dist/shared/email/sanitize.js +0 -39
- package/dist/shared/email/sanitize.js.map +0 -1
- package/dist/shared/email/smtp.d.ts +0 -20
- package/dist/shared/email/smtp.d.ts.map +0 -1
- package/dist/shared/email/smtp.js +0 -53
- package/dist/shared/email/smtp.js.map +0 -1
- package/dist/shared/email/types.d.ts +0 -113
- package/dist/shared/email/types.d.ts.map +0 -1
- package/dist/shared/email/types.js +0 -7
- package/dist/shared/email/types.js.map +0 -1
- package/dist/shared/email/webhookRoutes.d.ts +0 -29
- package/dist/shared/email/webhookRoutes.d.ts.map +0 -1
- package/dist/shared/email/webhookRoutes.js +0 -125
- package/dist/shared/email/webhookRoutes.js.map +0 -1
- package/dist/shared/mcp/index.d.ts +0 -51
- package/dist/shared/mcp/index.d.ts.map +0 -1
- package/dist/shared/mcp/index.js +0 -51
- package/dist/shared/mcp/index.js.map +0 -1
- package/dist/shared/mcp/mcp-auth-routes.d.ts +0 -26
- package/dist/shared/mcp/mcp-auth-routes.d.ts.map +0 -1
- package/dist/shared/mcp/mcp-auth-routes.js +0 -141
- package/dist/shared/mcp/mcp-auth-routes.js.map +0 -1
- package/dist/shared/mcp/mcp-db.d.ts +0 -99
- package/dist/shared/mcp/mcp-db.d.ts.map +0 -1
- package/dist/shared/mcp/mcp-db.js +0 -106
- package/dist/shared/mcp/mcp-db.js.map +0 -1
- package/dist/shared/mcp/mcp-routes.d.ts +0 -29
- package/dist/shared/mcp/mcp-routes.d.ts.map +0 -1
- package/dist/shared/mcp/mcp-routes.js +0 -171
- package/dist/shared/mcp/mcp-routes.js.map +0 -1
- package/dist/shared/mcp/mcp-tokens-routes.d.ts +0 -35
- package/dist/shared/mcp/mcp-tokens-routes.d.ts.map +0 -1
- package/dist/shared/mcp/mcp-tokens-routes.js +0 -94
- package/dist/shared/mcp/mcp-tokens-routes.js.map +0 -1
- package/dist/shared/mcp/mcp-usage-routes.d.ts +0 -17
- package/dist/shared/mcp/mcp-usage-routes.d.ts.map +0 -1
- package/dist/shared/mcp/mcp-usage-routes.js +0 -81
- package/dist/shared/mcp/mcp-usage-routes.js.map +0 -1
- package/dist/shared/mcp/tenant-context.d.ts +0 -59
- package/dist/shared/mcp/tenant-context.d.ts.map +0 -1
- package/dist/shared/mcp/tenant-context.js +0 -136
- package/dist/shared/mcp/tenant-context.js.map +0 -1
- package/dist/shared/mcp/types.d.ts +0 -74
- package/dist/shared/mcp/types.d.ts.map +0 -1
- package/dist/shared/mcp/types.js +0 -7
- package/dist/shared/mcp/types.js.map +0 -1
- package/dist/shared/planner/GoogleCalendarService.d.ts +0 -137
- package/dist/shared/planner/GoogleCalendarService.d.ts.map +0 -1
- package/dist/shared/planner/GoogleCalendarService.js +0 -525
- package/dist/shared/planner/GoogleCalendarService.js.map +0 -1
- package/dist/shared/planner/PlannerService.d.ts +0 -264
- package/dist/shared/planner/PlannerService.d.ts.map +0 -1
- package/dist/shared/planner/PlannerService.js +0 -1393
- package/dist/shared/planner/PlannerService.js.map +0 -1
- package/dist/shared/planner/index.d.ts +0 -37
- package/dist/shared/planner/index.d.ts.map +0 -1
- package/dist/shared/planner/index.js +0 -35
- package/dist/shared/planner/index.js.map +0 -1
- package/dist/shared/planner/intervals.d.ts +0 -60
- package/dist/shared/planner/intervals.d.ts.map +0 -1
- package/dist/shared/planner/intervals.js +0 -141
- package/dist/shared/planner/intervals.js.map +0 -1
- package/dist/shared/planner/routes.d.ts +0 -69
- package/dist/shared/planner/routes.d.ts.map +0 -1
- package/dist/shared/planner/routes.js +0 -770
- package/dist/shared/planner/routes.js.map +0 -1
- package/dist/shared/planner/types.d.ts +0 -328
- package/dist/shared/planner/types.d.ts.map +0 -1
- package/dist/shared/planner/types.js +0 -9
- package/dist/shared/planner/types.js.map +0 -1
- package/dist/shared/storage/ImageProcessingService.d.ts +0 -32
- package/dist/shared/storage/ImageProcessingService.d.ts.map +0 -1
- package/dist/shared/storage/ImageProcessingService.js +0 -127
- package/dist/shared/storage/ImageProcessingService.js.map +0 -1
- package/dist/shared/storage/StorageProxyService.d.ts +0 -47
- package/dist/shared/storage/StorageProxyService.d.ts.map +0 -1
- package/dist/shared/storage/StorageProxyService.js +0 -196
- package/dist/shared/storage/StorageProxyService.js.map +0 -1
- package/dist/shared/storage/StorageUploadService.d.ts +0 -126
- package/dist/shared/storage/StorageUploadService.d.ts.map +0 -1
- package/dist/shared/storage/StorageUploadService.js +0 -206
- package/dist/shared/storage/StorageUploadService.js.map +0 -1
- package/dist/shared/storage/creative-urls.d.ts +0 -14
- package/dist/shared/storage/creative-urls.d.ts.map +0 -1
- package/dist/shared/storage/creative-urls.js +0 -30
- package/dist/shared/storage/creative-urls.js.map +0 -1
- package/dist/shared/storage/index.d.ts +0 -28
- package/dist/shared/storage/index.d.ts.map +0 -1
- package/dist/shared/storage/index.js +0 -27
- package/dist/shared/storage/index.js.map +0 -1
- package/dist/shared/storage/routes.d.ts +0 -42
- package/dist/shared/storage/routes.d.ts.map +0 -1
- package/dist/shared/storage/routes.js +0 -160
- package/dist/shared/storage/routes.js.map +0 -1
- package/dist/shared/storage/types.d.ts +0 -53
- package/dist/shared/storage/types.d.ts.map +0 -1
- package/dist/shared/storage/types.js +0 -2
- package/dist/shared/storage/types.js.map +0 -1
- package/dist/shared/telegram/index.d.ts +0 -4
- package/dist/shared/telegram/index.d.ts.map +0 -1
- package/dist/shared/telegram/index.js +0 -3
- package/dist/shared/telegram/index.js.map +0 -1
- package/dist/shared/telegram/routes.d.ts +0 -43
- package/dist/shared/telegram/routes.d.ts.map +0 -1
- package/dist/shared/telegram/routes.js +0 -868
- package/dist/shared/telegram/routes.js.map +0 -1
- package/dist/shared/telegram/types.d.ts +0 -168
- package/dist/shared/telegram/types.d.ts.map +0 -1
- package/dist/shared/telegram/types.js +0 -7
- package/dist/shared/telegram/types.js.map +0 -1
- package/dist/shared/telegram/utils.d.ts +0 -44
- package/dist/shared/telegram/utils.d.ts.map +0 -1
- package/dist/shared/telegram/utils.js +0 -121
- package/dist/shared/telegram/utils.js.map +0 -1
- package/dist/storage.d.ts +0 -9
- package/dist/storage.d.ts.map +0 -1
- package/dist/storage.js +0 -8
- package/dist/storage.js.map +0 -1
- package/dist/telemetry.d.ts +0 -9
- package/dist/telemetry.d.ts.map +0 -1
- package/dist/telemetry.js +0 -8
- package/dist/telemetry.js.map +0 -1
- package/scripts/postinstall.js +0 -79
- package/src/shared/affiliate/migrations/001_create_affiliates.sql +0 -49
- package/src/shared/affiliate/migrations/002_create_affiliate_commissions.sql +0 -31
- package/src/shared/affiliate/migrations/003_create_affiliate_clicks.sql +0 -26
- package/src/shared/affiliate/migrations/004_create_affiliate_payments.sql +0 -34
- package/src/shared/affiliate/migrations/005_create_affiliate_tier_history.sql +0 -19
- package/src/shared/affiliate/migrations/006_create_affiliate_rpc_functions.sql +0 -209
- package/src/shared/affiliate/migrations/007_create_affiliate_rls_policies.sql +0 -123
- package/src/shared/billing/migrations/00000000000001_billing.sql +0 -114
- package/src/shared/email/migrations/000_create_email_logs.sql +0 -27
- package/src/shared/email/migrations/001_create_email_templates.sql +0 -27
- package/src/shared/email/migrations/002_add_rls_baseline_policies.sql +0 -37
- package/src/shared/email/migrations/003_create_gmail_accounts.sql +0 -82
- package/src/shared/email/migrations/004_add_email_logs_tracking_columns.sql +0 -15
- package/src/shared/mcp/migrations/001_mcp_api_tokens.sql +0 -21
- package/src/shared/mcp/migrations/002_mcp_audit_log.sql +0 -16
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - Migration state: Tetra standards actually applied in the DB
|
|
14
14
|
*
|
|
15
15
|
* Usage:
|
|
16
|
-
* import { runRLSCheck } from '@tetra
|
|
16
|
+
* import { runRLSCheck } from '@soulbatical/tetra-supabase';
|
|
17
17
|
* const report = await runRLSCheck(supabaseClient);
|
|
18
18
|
* console.log(report.text); // Full formatted report
|
|
19
19
|
* console.log(report.passed); // true only if zero errors
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - Migration state: Tetra standards actually applied in the DB
|
|
14
14
|
*
|
|
15
15
|
* Usage:
|
|
16
|
-
* import { runRLSCheck } from '@tetra
|
|
16
|
+
* import { runRLSCheck } from '@soulbatical/tetra-supabase';
|
|
17
17
|
* const report = await runRLSCheck(supabaseClient);
|
|
18
18
|
* console.log(report.text); // Full formatted report
|
|
19
19
|
* console.log(report.passed); // true only if zero errors
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - anon and authenticated are explicitly REVOKED
|
|
11
11
|
*
|
|
12
12
|
* Usage:
|
|
13
|
-
* import { generateExecSQL } from '@soulbatical/tetra-
|
|
13
|
+
* import { generateExecSQL } from '@soulbatical/tetra-supabase';
|
|
14
14
|
* const sql = generateExecSQL();
|
|
15
15
|
* // Apply as a Supabase migration
|
|
16
16
|
*/
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - anon and authenticated are explicitly REVOKED
|
|
11
11
|
*
|
|
12
12
|
* Usage:
|
|
13
|
-
* import { generateExecSQL } from '@soulbatical/tetra-
|
|
13
|
+
* import { generateExecSQL } from '@soulbatical/tetra-supabase';
|
|
14
14
|
* const sql = generateExecSQL();
|
|
15
15
|
* // Apply as a Supabase migration
|
|
16
16
|
*/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
5
|
* ```typescript
|
|
6
|
-
* import { RPCGenerator, DetailRPCGenerator, validateConfig } from '@soulbatical/tetra-
|
|
6
|
+
* import { RPCGenerator, DetailRPCGenerator, validateConfig } from '@soulbatical/tetra-supabase';
|
|
7
7
|
*
|
|
8
8
|
* const generator = new RPCGenerator(ordersFeatureConfig, {
|
|
9
9
|
* aliasMap: { orders: 'o', orderitems: 'oi' },
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Usage:
|
|
5
5
|
* ```typescript
|
|
6
|
-
* import { RPCGenerator, DetailRPCGenerator, validateConfig } from '@soulbatical/tetra-
|
|
6
|
+
* import { RPCGenerator, DetailRPCGenerator, validateConfig } from '@soulbatical/tetra-supabase';
|
|
7
7
|
*
|
|
8
8
|
* const generator = new RPCGenerator(ordersFeatureConfig, {
|
|
9
9
|
* aliasMap: { orders: 'o', orderitems: 'oi' },
|
package/dist/index.d.ts
CHANGED
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
* } from '@tetra/core';
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
|
-
export type { FeatureConfig, FilterConfig, FilterUIConfig, CountConfig, CountConfigItem, ComputedFieldConfig, SQLComputedFieldConfig, ValidatorMapping, SortFieldConfig, PaginationConfig, EnrichmentConfig, DisplayConfig, PageDisplayConfig, ListDisplayConfig, CardDisplayConfig, CardAction, CreatorVisibilityConfig, ColumnConfig, FormFieldConfig, TestingConfig, ViewConfig, ViewOptions, PageWhitelistEntry } from '
|
|
28
|
+
export type { FeatureConfig, FilterConfig, FilterUIConfig, CountConfig, CountConfigItem, ComputedFieldConfig, SQLComputedFieldConfig, ValidatorMapping, SortFieldConfig, PaginationConfig, EnrichmentConfig, DisplayConfig, PageDisplayConfig, ListDisplayConfig, CardDisplayConfig, CardAction, CreatorVisibilityConfig, ColumnConfig, FormFieldConfig, TestingConfig, ViewConfig, ViewOptions, PageWhitelistEntry } from '@soulbatical/tetra-contracts';
|
|
29
29
|
export { generateValidators } from './shared/types/feature-config.js';
|
|
30
|
-
export type { IncludeConfig, QueryConfig } from '
|
|
30
|
+
export type { IncludeConfig, QueryConfig } from '@soulbatical/tetra-contracts';
|
|
31
31
|
export type { AutoBoundQueryController, MethodNamesConfig } from './shared/controllers/types.js';
|
|
32
32
|
export type { CustomValidators, QueryRouteConfig, MutationRouteConfig, PhaseRouteConfig, BatchRouteConfig, BatchOperation } from './shared/factories/types.js';
|
|
33
33
|
export type { RFC7807ProblemDetails } from './shared/rfc7807ErrorResponse.js';
|
|
@@ -70,6 +70,7 @@ export type { AllowlistConfig } from './middleware/validateBody.js';
|
|
|
70
70
|
export { requireJsonContentType } from './middleware/contentTypeGuard.js';
|
|
71
71
|
export { createLogger, rootLogger } from './utils/logger.js';
|
|
72
72
|
export type { Logger } from './utils/logger.js';
|
|
73
|
+
export { encryptCredential, decryptCredential, generateMasterKey, hashValue, generateSecureToken, decryptToken, encryptToken, decryptOrganizationCredentials } from './shared/crypto/index.js';
|
|
73
74
|
export { validateEnvironment, requireEnvVar } from './utils/validateEnvironment.js';
|
|
74
75
|
export { safeExecCommand } from './utils/safeExec.js';
|
|
75
76
|
export type { ExecCommandOptions } from './utils/safeExec.js';
|
|
@@ -96,37 +97,8 @@ export { webhookDB } from './core/webhookDb.js';
|
|
|
96
97
|
export { getCurrentRouteAccess, assertMinimumAccess, runInRouteContext } from './core/routeContext.js';
|
|
97
98
|
export type { RouteAccess } from './core/routeContext.js';
|
|
98
99
|
export { SupabaseUserClient } from './core/SupabaseUserClient.js';
|
|
99
|
-
export { AffiliateAttributionService } from './shared/affiliate/AffiliateAttributionService.js';
|
|
100
|
-
export { AffiliateClickService } from './shared/affiliate/AffiliateClickService.js';
|
|
101
|
-
export { defaultAffiliateFeatureConfig } from './shared/affiliate/affiliateFeatureConfig.js';
|
|
102
|
-
export { addAffiliateAdminRoutes, addAffiliateUserRoutes, addAffiliatePublicRoutes } from './shared/affiliate/routes.js';
|
|
103
|
-
export type { AffiliateConfig, AffiliateTierConfig, AffiliateAttribution, AffiliateOrder, Affiliate, AffiliateCommission, AffiliateClick, AffiliatePayment, AffiliateTierHistory, AffiliateFilters, AffiliateDashboard, AffiliateDashboardStats, AffiliateDashboardCommission, AffiliateTierProgress } from './shared/affiliate/types.js';
|
|
104
100
|
export { addPublicAuthRoutes } from './shared/auth/routes.js';
|
|
105
101
|
export type { PublicAuthRoutesConfig, OnNewUserResult, OAuthProvider, InviteConfig, MagicLinkConfig, UserProfileOrg } from './shared/auth/types.js';
|
|
106
|
-
export { generateRLS, generateRLSBatch } from './generators/rls-generator.js';
|
|
107
|
-
export type { RLSConfig, RLSTableType, RLSGeneratorResult } from './generators/rls-generator.js';
|
|
108
|
-
export { getAuditChecks, generateAuditSQL } from './generators/rls-auditor.js';
|
|
109
|
-
export type { AuditCheck } from './generators/rls-auditor.js';
|
|
110
|
-
export { runRLSCheck, runRLSCheckDebug } from './generators/rls-checker.js';
|
|
111
|
-
export type { RLSReport, RLSCheckResult, RLSViolation, RLSCategorySummary } from './generators/rls-checker.js';
|
|
112
|
-
export { generateExecSQL, checkExecSQLExists } from './generators/rls-exec-sql.js';
|
|
113
|
-
export { RPCGenerator, DetailRPCGenerator, validateConfig as validateRPCConfig, generateAuthCheck, generateAuthWhereClause, generateAuthDeclarations, generateTimestamp, getTableAlias, escapeIdentifier } from './generators/rpc/index.js';
|
|
114
|
-
export type { GeneratedSQL, FilterDefinition, RPCGeneratorOptions, DetailRPCGeneratorOptions, ValidationResult as RPCValidationResult, ValidationError as RPCValidationError, AccessLevel, CreatorVisibilityConfig as RPCCreatorVisibilityConfig } from './generators/rpc/index.js';
|
|
115
|
-
export { encryptCredential, decryptCredential, generateMasterKey, hashValue, generateSecureToken, decryptToken, encryptToken, decryptOrganizationCredentials } from './shared/crypto/index.js';
|
|
116
|
-
export { EmailService, sendMailgunEmail, sendSmtpEmail, escapeHtml, stripCRLF, sanitizeEmailHeader, stripHtml, addEmailAdminRoutes, addMailgunWebhookRoutes } from './shared/email/index.js';
|
|
117
|
-
export { GmailClient, getGmailClient, listGmailAccounts, clearGmailClientCache, disconnectGmail, getGmailAuthUrl, startGmailOAuth, getGmailAuthServerStatus, resetGmailAuthServerState, exchangeGmailCode, addGmailOAuthRoutes } from './shared/email/index.js';
|
|
118
|
-
export type { EmailAttachment, EmailConfig, SendEmailOpts, EmailTemplate, EmailLogEntry, MailgunResponse, SmtpResponse, EmailSendResponse, GmailOAuthConfig, GmailAuthServerStatus, GmailOAuthRoutesConfig, GmailSendResult, GmailSearchResult, GmailMessage, GmailAttachmentInfo, GmailProfile } from './shared/email/index.js';
|
|
119
|
-
export { addMcpRoutes, addMcpAuthRoutes, addMcpTokenRoutes, addMcpUsageRoutes, getMcpOrganizationId, getMcpTenantContext, runWithMcpTenant, validateMcpApiToken, generateMcpApiToken, mcpDB, mcpScopedDB } from './shared/mcp/index.js';
|
|
120
|
-
export type { McpRoutesConfig, McpAuthRoutesConfig, McpToolDefinition, McpToolResult, McpToolHandler, TenantContext as McpTenantContext, McpDBResult, McpDBLocalResult, McpDBOptions, GenerateMcpApiTokenOptions } from './shared/mcp/index.js';
|
|
121
|
-
export { BillingService, addBillingRoutes, addBillingWebhookRoutes } from './shared/billing/index.js';
|
|
122
|
-
export type { PlanConfig, BillingConfig, BillingCycle, BillingProvider, SubscriptionStatus, SubscriptionRecord, BillingStatusResponse, BillingRouteOptions } from './shared/billing/index.js';
|
|
123
|
-
export { addStorageProxyRoutes, addStorageUploadRoutes, StorageProxyService, StorageUploadService, ImageProcessingService, STANDARD_IMAGE_SIZES, getCreativeUrl, getCreativeStoragePath, getAdLibraryThumbnailUrl, getAdLibraryThumbnailPath } from './shared/storage/index.js';
|
|
124
|
-
export type { StorageConfig, StorageProxyOptions, StorageUploadOptions, UploadResult as StorageUploadResult, ImageSize, ProcessedImageResult, ImageProcessingOptions, FileUploadOptions, MultiSizeUploadOptions, PrivateUploadOptions, PrivateUploadResult, MultiSizeUploadResult } from './shared/storage/index.js';
|
|
125
|
-
export { addTelegramRoutes, TelegramSecretError, splitMessage, containsSecrets, scrubSecrets, SECRET_PATTERNS, generateIdempotencyHash, isDuplicate, markSent, clearIdempotencyCache } from './shared/telegram/index.js';
|
|
126
|
-
export type { TelegramRoutesConfig, TelegramService, TelegramUserSettings, TelegramRule, TelegramMessageHandler, TelegramCallbackHandler, TelegramMessageContext, TelegramCallbackContext, RuleConditions as TelegramRuleConditions, RuleAction as TelegramRuleAction, RulePreset as TelegramRulePreset, InlineKeyboard as TelegramInlineKeyboard, NotifyEventOptions as TelegramNotifyEventOptions, TelegramNotificationFilterContext, TelegramMessageSentContext, TelegramSendPhotoOptions, TelegramSendDocumentOptions } from './shared/telegram/index.js';
|
|
127
|
-
export { META_API_VERSION, META_API_BASE, metaPost, metaGet } from './shared/meta-api/index.js';
|
|
128
|
-
export { PlannerService, GoogleCalendarService, addPlannerRoutes, addPlannerPublicRoutes, addPlannerCalendarRoutes, computeAvailableSlots, timeToMinutes, minutesToTime } from './shared/planner/index.js';
|
|
129
|
-
export type { PlannerConfig, PlannerCalendarConfig, PlannerRouteOptions, PlannerCallbackContext, AvailabilitySlotRecord, AvailabilitySlotInput, AppointmentRecord, AppointmentInput, SchedulerSettingsRecord, VacationRecord, CalendarTokenRecord, PublicBookingInput, PublicBookingVisitor, TimeSlot, DayAvailability, TeamAvailability, PublicSchedulerData } from './shared/planner/index.js';
|
|
130
102
|
export { initSentry, setupSentryErrorHandler, getSentry, isSentryActive } from './core/sentry.js';
|
|
131
103
|
export type { SentryConfig } from './core/sentry.js';
|
|
132
104
|
export { createApp } from './core/createApp.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,uBAAuB,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -64,6 +64,7 @@ export { validateBody, sanitizePublicString, isValidEmail } from './middleware/v
|
|
|
64
64
|
export { requireJsonContentType } from './middleware/contentTypeGuard.js';
|
|
65
65
|
// ─── Utils ──────────────────────────────────────────────────
|
|
66
66
|
export { createLogger, rootLogger } from './utils/logger.js';
|
|
67
|
+
export { encryptCredential, decryptCredential, generateMasterKey, hashValue, generateSecureToken, decryptToken, encryptToken, decryptOrganizationCredentials } from './shared/crypto/index.js';
|
|
67
68
|
export { validateEnvironment, requireEnvVar } from './utils/validateEnvironment.js';
|
|
68
69
|
export { safeExecCommand } from './utils/safeExec.js';
|
|
69
70
|
export { RFC7807ErrorResponse } from './shared/rfc7807ErrorResponse.js';
|
|
@@ -76,9 +77,9 @@ export { buildPaginatedResponse, buildSingleResponse, buildErrorResponse } from
|
|
|
76
77
|
// ─── Validators ─────────────────────────────────────────────
|
|
77
78
|
export { validateUUID, validateUUIDOrThrow, validateUUIDs, filterValidUUIDs } from './shared/validators/uuidValidator.js';
|
|
78
79
|
export { validateOrganization, validateOrganizationOrRespond, hasOrganization } from './shared/validators/organizationValidator.js';
|
|
79
|
-
// ─── Frontend
|
|
80
|
-
//
|
|
81
|
-
//
|
|
80
|
+
// ─── Frontend split ──────────────────────────────────────────
|
|
81
|
+
// Frontend hooks + components now live in '@soulbatical/tetra-ui'.
|
|
82
|
+
// Core keeps only the pure storage URL helper re-export below for backend-safe use.
|
|
82
83
|
// ─── Storage URL Helpers (pure, no React deps) ──────────────
|
|
83
84
|
// Re-exported from frontend/storage for convenience in backend environments
|
|
84
85
|
export { configureStorageUrls } from './frontend/storage/storageUrl.js';
|
|
@@ -91,37 +92,8 @@ export { superadminDB } from './core/superadminDb.js';
|
|
|
91
92
|
export { webhookDB } from './core/webhookDb.js';
|
|
92
93
|
export { getCurrentRouteAccess, assertMinimumAccess, runInRouteContext } from './core/routeContext.js';
|
|
93
94
|
export { SupabaseUserClient } from './core/SupabaseUserClient.js';
|
|
94
|
-
// ─── Affiliate Module ──────────────────────────────────────
|
|
95
|
-
export { AffiliateAttributionService } from './shared/affiliate/AffiliateAttributionService.js';
|
|
96
|
-
export { AffiliateClickService } from './shared/affiliate/AffiliateClickService.js';
|
|
97
|
-
export { defaultAffiliateFeatureConfig } from './shared/affiliate/affiliateFeatureConfig.js';
|
|
98
|
-
export { addAffiliateAdminRoutes, addAffiliateUserRoutes, addAffiliatePublicRoutes } from './shared/affiliate/routes.js';
|
|
99
95
|
// ─── Public Auth Routes ─────────────────────────────────────
|
|
100
96
|
export { addPublicAuthRoutes } from './shared/auth/routes.js';
|
|
101
|
-
// ─── Generators ──────────────────────────────────────────────
|
|
102
|
-
export { generateRLS, generateRLSBatch } from './generators/rls-generator.js';
|
|
103
|
-
export { getAuditChecks, generateAuditSQL } from './generators/rls-auditor.js';
|
|
104
|
-
export { runRLSCheck, runRLSCheckDebug } from './generators/rls-checker.js';
|
|
105
|
-
export { generateExecSQL, checkExecSQLExists } from './generators/rls-exec-sql.js';
|
|
106
|
-
// RPC Generator (SQL Generator v3.17)
|
|
107
|
-
export { RPCGenerator, DetailRPCGenerator, validateConfig as validateRPCConfig, generateAuthCheck, generateAuthWhereClause, generateAuthDeclarations, generateTimestamp, getTableAlias, escapeIdentifier } from './generators/rpc/index.js';
|
|
108
|
-
// ─── Crypto Module ─────────────────────────────────────────
|
|
109
|
-
export { encryptCredential, decryptCredential, generateMasterKey, hashValue, generateSecureToken, decryptToken, encryptToken, decryptOrganizationCredentials } from './shared/crypto/index.js';
|
|
110
|
-
// ─── Email Module ───────────────────────────────────────────
|
|
111
|
-
export { EmailService, sendMailgunEmail, sendSmtpEmail, escapeHtml, stripCRLF, sanitizeEmailHeader, stripHtml, addEmailAdminRoutes, addMailgunWebhookRoutes } from './shared/email/index.js';
|
|
112
|
-
export { GmailClient, getGmailClient, listGmailAccounts, clearGmailClientCache, disconnectGmail, getGmailAuthUrl, startGmailOAuth, getGmailAuthServerStatus, resetGmailAuthServerState, exchangeGmailCode, addGmailOAuthRoutes } from './shared/email/index.js';
|
|
113
|
-
// ─── MCP Online Module ──────────────────────────────────────
|
|
114
|
-
export { addMcpRoutes, addMcpAuthRoutes, addMcpTokenRoutes, addMcpUsageRoutes, getMcpOrganizationId, getMcpTenantContext, runWithMcpTenant, validateMcpApiToken, generateMcpApiToken, mcpDB, mcpScopedDB } from './shared/mcp/index.js';
|
|
115
|
-
// ─── Billing Module ─────────────────────────────────────────
|
|
116
|
-
export { BillingService, addBillingRoutes, addBillingWebhookRoutes } from './shared/billing/index.js';
|
|
117
|
-
// ─── Storage Module ─────────────────────────────────────────
|
|
118
|
-
export { addStorageProxyRoutes, addStorageUploadRoutes, StorageProxyService, StorageUploadService, ImageProcessingService, STANDARD_IMAGE_SIZES, getCreativeUrl, getCreativeStoragePath, getAdLibraryThumbnailUrl, getAdLibraryThumbnailPath } from './shared/storage/index.js';
|
|
119
|
-
// ─── Telegram Module ────────────────────────────────────────
|
|
120
|
-
export { addTelegramRoutes, TelegramSecretError, splitMessage, containsSecrets, scrubSecrets, SECRET_PATTERNS, generateIdempotencyHash, isDuplicate, markSent, clearIdempotencyCache } from './shared/telegram/index.js';
|
|
121
|
-
// ─── Meta API Module ──────────────────────────────────────
|
|
122
|
-
export { META_API_VERSION, META_API_BASE, metaPost, metaGet } from './shared/meta-api/index.js';
|
|
123
|
-
// ─── Planner Module ────────────────────────────────────────
|
|
124
|
-
export { PlannerService, GoogleCalendarService, addPlannerRoutes, addPlannerPublicRoutes, addPlannerCalendarRoutes, computeAvailableSlots, timeToMinutes, minutesToTime } from './shared/planner/index.js';
|
|
125
97
|
// ─── Sentry (optional) ────────────────────────────────────
|
|
126
98
|
export { initSentry, setupSentryErrorHandler, getSentry, isSentryActive } from './core/sentry.js';
|
|
127
99
|
// ─── App Bootstrap ──────────────────────────────────────────
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@ export interface SecurityConfig {
|
|
|
64
64
|
}
|
|
65
65
|
export declare function configureSecurity(config?: SecurityConfig): {
|
|
66
66
|
enforceHTTPS: (req: Request, res: Response, next: NextFunction) => void;
|
|
67
|
-
securityHeaders: (req: import("http").IncomingMessage, res: import("http").ServerResponse, next: (err?: unknown) => void) => void;
|
|
67
|
+
securityHeaders: (req: import("node:http").IncomingMessage, res: import("node:http").ServerResponse, next: (err?: unknown) => void) => void;
|
|
68
68
|
configureCORS: (req: Request, res: Response, next: NextFunction) => void | Response<any, Record<string, any>>;
|
|
69
69
|
generalRateLimiter: import("express-rate-limit").RateLimitRequestHandler;
|
|
70
70
|
strictRateLimiter: import("express-rate-limit").RateLimitRequestHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"securityMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/securityMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAO5B,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,6EAA6E;QAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAOD,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,cAAmB;wBAIhC,OAAO,OAAO,QAAQ,QAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"securityMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/securityMiddleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAO5B,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,6EAA6E;QAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAOD,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,cAAmB;wBAIhC,OAAO,OAAO,QAAQ,QAAQ,YAAY;mHAqErD,CAAC;yBAHW,OAAO,OAAO,QAAQ,QAAQ,YAAY;;;;;;;mCA8B5B,MAAM,QAAwB,MAAM;gCAsD3C,GAAG,MAC5B,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY;4BAU1B,OAAO,OAAO,QAAQ,QAAQ,YAAY;yBAY7C,OAAO,OAAO,QAAQ,QAAQ,YAAY;EA8BvE;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateBody.d.ts","sourceRoot":"","sources":["../../src/middleware/validateBody.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAS1D,UAAU,kBAAkB;IAC1B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE9B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAEzC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACnD;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;CAC5I;AAED,KAAK,kBAAkB,GAAG,eAAe,GAAG,aAAa,CAAC;AAM1D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"validateBody.d.ts","sourceRoot":"","sources":["../../src/middleware/validateBody.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAS1D,UAAU,kBAAkB;IAC1B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE9B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;IAEzC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACnD;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KAAE,CAAC;CAC5I;AAED,KAAK,kBAAkB,GAAG,eAAe,GAAG,aAAa,CAAC;AAM1D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,IAU7C,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAyJ/D"}
|
|
@@ -68,6 +68,14 @@ export function isValidEmail(value) {
|
|
|
68
68
|
* Strips unknown fields and rejects missing required fields.
|
|
69
69
|
*/
|
|
70
70
|
export function validateBody(config) {
|
|
71
|
+
// SECURITY: in production we never echo back the concrete schema (which
|
|
72
|
+
// required field is missing, which Zod path failed, which enum values are
|
|
73
|
+
// allowed). That's a schema-disclosure primitive — an attacker sends an
|
|
74
|
+
// empty body and the server helpfully returns "missing: phone, experience,
|
|
75
|
+
// motivation" which is a 1:1 blueprint for a phishing form clone (pentest
|
|
76
|
+
// finding B-2). In development we keep the details so devs can debug.
|
|
77
|
+
const exposeSchema = process.env.NODE_ENV !== 'production';
|
|
78
|
+
const GENERIC_VALIDATION_MSG = 'Validation failed';
|
|
71
79
|
return (req, res, next) => {
|
|
72
80
|
if (!req.body || typeof req.body !== 'object') {
|
|
73
81
|
RFC7807ErrorResponse.badRequest(res, 'Request body is required');
|
|
@@ -76,8 +84,13 @@ export function validateBody(config) {
|
|
|
76
84
|
if (isZodLike(config)) {
|
|
77
85
|
const result = config.safeParse(req.body);
|
|
78
86
|
if (!result.success) {
|
|
79
|
-
const errors = result.error?.errors?.map(e => `${e.path.join('.')}: ${e.message}`) || [
|
|
80
|
-
|
|
87
|
+
const errors = result.error?.errors?.map(e => `${e.path.join('.')}: ${e.message}`) || [GENERIC_VALIDATION_MSG];
|
|
88
|
+
if (exposeSchema) {
|
|
89
|
+
RFC7807ErrorResponse.badRequest(res, `Invalid request body: ${errors.join('; ')}`, { errors });
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
RFC7807ErrorResponse.badRequest(res, GENERIC_VALIDATION_MSG);
|
|
93
|
+
}
|
|
81
94
|
return;
|
|
82
95
|
}
|
|
83
96
|
// Replace body with parsed (stripped + coerced) data
|
|
@@ -91,7 +104,12 @@ export function validateBody(config) {
|
|
|
91
104
|
if (required) {
|
|
92
105
|
const missing = required.filter(field => req.body[field] === undefined || req.body[field] === null);
|
|
93
106
|
if (missing.length > 0) {
|
|
94
|
-
|
|
107
|
+
if (exposeSchema) {
|
|
108
|
+
RFC7807ErrorResponse.badRequest(res, `Missing required fields: ${missing.join(', ')}`, { missing });
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
RFC7807ErrorResponse.badRequest(res, GENERIC_VALIDATION_MSG);
|
|
112
|
+
}
|
|
95
113
|
return;
|
|
96
114
|
}
|
|
97
115
|
}
|
|
@@ -124,7 +142,12 @@ export function validateBody(config) {
|
|
|
124
142
|
if (value === undefined || value === null || value === '')
|
|
125
143
|
continue;
|
|
126
144
|
if (!isValidEmail(value)) {
|
|
127
|
-
|
|
145
|
+
if (exposeSchema) {
|
|
146
|
+
RFC7807ErrorResponse.badRequest(res, `Invalid ${field} format`, { field });
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
RFC7807ErrorResponse.badRequest(res, GENERIC_VALIDATION_MSG);
|
|
150
|
+
}
|
|
128
151
|
return;
|
|
129
152
|
}
|
|
130
153
|
}
|
|
@@ -135,7 +158,12 @@ export function validateBody(config) {
|
|
|
135
158
|
for (const [field, max] of Object.entries(config.maxLength)) {
|
|
136
159
|
const value = cleaned[field];
|
|
137
160
|
if (typeof value === 'string' && value.length > max) {
|
|
138
|
-
|
|
161
|
+
if (exposeSchema) {
|
|
162
|
+
RFC7807ErrorResponse.badRequest(res, `Field ${field} exceeds max length (${max})`, { field, max });
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
RFC7807ErrorResponse.badRequest(res, GENERIC_VALIDATION_MSG);
|
|
166
|
+
}
|
|
139
167
|
return;
|
|
140
168
|
}
|
|
141
169
|
}
|
|
@@ -147,7 +175,12 @@ export function validateBody(config) {
|
|
|
147
175
|
if (value === undefined || value === null)
|
|
148
176
|
continue; // optional
|
|
149
177
|
if (typeof value !== 'string' || !allowedValues.includes(value)) {
|
|
150
|
-
|
|
178
|
+
if (exposeSchema) {
|
|
179
|
+
RFC7807ErrorResponse.badRequest(res, `Invalid ${field} value`, { field, allowed: allowedValues });
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
RFC7807ErrorResponse.badRequest(res, GENERIC_VALIDATION_MSG);
|
|
183
|
+
}
|
|
151
184
|
return;
|
|
152
185
|
}
|
|
153
186
|
}
|
|
@@ -159,7 +192,12 @@ export function validateBody(config) {
|
|
|
159
192
|
if (value === undefined || value === null)
|
|
160
193
|
continue;
|
|
161
194
|
if (typeof value !== 'object' || Array.isArray(value)) {
|
|
162
|
-
|
|
195
|
+
if (exposeSchema) {
|
|
196
|
+
RFC7807ErrorResponse.badRequest(res, `Field ${field} must be a plain object`, { field });
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
RFC7807ErrorResponse.badRequest(res, GENERIC_VALIDATION_MSG);
|
|
200
|
+
}
|
|
163
201
|
return;
|
|
164
202
|
}
|
|
165
203
|
const metaAllow = new Set(metaConfig.allow);
|
|
@@ -172,7 +210,12 @@ export function validateBody(config) {
|
|
|
172
210
|
if (metaConfig.maxBytes !== undefined) {
|
|
173
211
|
const serialized = JSON.stringify(filtered);
|
|
174
212
|
if (serialized.length > metaConfig.maxBytes) {
|
|
175
|
-
|
|
213
|
+
if (exposeSchema) {
|
|
214
|
+
RFC7807ErrorResponse.badRequest(res, `Field ${field} exceeds max bytes`, { field, maxBytes: metaConfig.maxBytes });
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
RFC7807ErrorResponse.badRequest(res, GENERIC_VALIDATION_MSG);
|
|
218
|
+
}
|
|
176
219
|
return;
|
|
177
220
|
}
|
|
178
221
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateBody.js","sourceRoot":"","sources":["../../src/middleware/validateBody.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,GAAG,4BAA4B,CAAC;AA6CjD,SAAS,SAAS,CAAC,MAA0B;IAC3C,OAAO,OAAQ,MAAwB,CAAC,SAAS,KAAK,UAAU,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK;SACT,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAY,sBAAsB;SACzD,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC,gBAAgB;SAC5D,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAQ,gBAAgB;SAC5D,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAW,gDAAgD;SACnF,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,oBAAoB,CAAC,UAAU,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"validateBody.js","sourceRoot":"","sources":["../../src/middleware/validateBody.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,13 @@ export declare class RFC7807ErrorResponse {
|
|
|
55
55
|
static forbidden(res: Response, detail?: string, extensions?: Record<string, any>): Response;
|
|
56
56
|
static validationError(res: Response, validationErrors: any[], extensions?: Record<string, any>): Response;
|
|
57
57
|
static conflict(res: Response, detail: string, extensions?: Record<string, any>): Response;
|
|
58
|
+
/**
|
|
59
|
+
* Generic 500 message shown to clients in production.
|
|
60
|
+
* NEVER leak internal error text (Node destructure errors, Tetra security guards,
|
|
61
|
+
* Postgres hints, stack frames, etc.) — they expose framework internals and
|
|
62
|
+
* help attackers fingerprint code paths.
|
|
63
|
+
*/
|
|
64
|
+
private static readonly GENERIC_500_DETAIL;
|
|
58
65
|
static internalError(res: Response, detail?: string | Error, extensions?: Record<string, any>): Response;
|
|
59
66
|
static badRequest(res: Response, detail: string, extensions?: Record<string, any>): Response;
|
|
60
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rfc7807ErrorResponse.d.ts","sourceRoot":"","sources":["../../src/shared/rfc7807ErrorResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAoC;IAE1D;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CACT,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC/B,QAAQ;IAoBX,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAYzG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAY/F,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAY5F,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAe1G,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAY1F,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"rfc7807ErrorResponse.d.ts","sourceRoot":"","sources":["../../src/shared/rfc7807ErrorResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,15 +69,22 @@ export class RFC7807ErrorResponse {
|
|
|
69
69
|
static conflict(res, detail, extensions) {
|
|
70
70
|
return this.send(res, 409, 'resource-conflict', 'Resource Conflict', detail, undefined, extensions);
|
|
71
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Generic 500 message shown to clients in production.
|
|
74
|
+
* NEVER leak internal error text (Node destructure errors, Tetra security guards,
|
|
75
|
+
* Postgres hints, stack frames, etc.) — they expose framework internals and
|
|
76
|
+
* help attackers fingerprint code paths.
|
|
77
|
+
*/
|
|
78
|
+
static GENERIC_500_DETAIL = 'An unexpected error occurred while processing your request';
|
|
72
79
|
static internalError(res, detail, extensions) {
|
|
73
|
-
let
|
|
80
|
+
let rawMessage = this.GENERIC_500_DETAIL;
|
|
74
81
|
let errorObject = null;
|
|
75
82
|
if (detail instanceof Error) {
|
|
76
83
|
errorObject = detail;
|
|
77
|
-
|
|
84
|
+
rawMessage = detail.message;
|
|
78
85
|
}
|
|
79
86
|
else if (typeof detail === 'string') {
|
|
80
|
-
|
|
87
|
+
rawMessage = detail;
|
|
81
88
|
}
|
|
82
89
|
if (!errorObject && extensions?.error) {
|
|
83
90
|
errorObject = extensions.error;
|
|
@@ -86,7 +93,7 @@ export class RFC7807ErrorResponse {
|
|
|
86
93
|
const isDevelopment = process.env.NODE_ENV !== 'production';
|
|
87
94
|
if (isDevelopment && errorObject) {
|
|
88
95
|
enhancedExtensions.debug = {
|
|
89
|
-
message: errorObject.message ||
|
|
96
|
+
message: errorObject.message || rawMessage,
|
|
90
97
|
code: errorObject.code,
|
|
91
98
|
hint: errorObject.hint,
|
|
92
99
|
details: errorObject.details,
|
|
@@ -96,7 +103,14 @@ export class RFC7807ErrorResponse {
|
|
|
96
103
|
};
|
|
97
104
|
delete enhancedExtensions.error;
|
|
98
105
|
}
|
|
99
|
-
|
|
106
|
+
// SECURITY: in production we ALWAYS return a generic message. Raw error text
|
|
107
|
+
// may contain Tetra security-guard strings ("[TETRA SECURITY] systemDB(...)
|
|
108
|
+
// BLOCKED in 'public' route..."), Node destructure errors ("Cannot destructure
|
|
109
|
+
// property 'x' of 'req.body' as it is undefined"), SQL hints, or file paths.
|
|
110
|
+
// All of these fingerprint internal architecture. In dev the raw message is
|
|
111
|
+
// still returned so developers can see the cause.
|
|
112
|
+
const publicDetail = isDevelopment ? rawMessage : this.GENERIC_500_DETAIL;
|
|
113
|
+
return this.send(res, 500, 'internal-server-error', 'Internal Server Error', publicDetail, undefined, enhancedExtensions);
|
|
100
114
|
}
|
|
101
115
|
static badRequest(res, detail, extensions) {
|
|
102
116
|
return this.send(res, 400, 'bad-request', 'Bad Request', detail, undefined, extensions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rfc7807ErrorResponse.js","sourceRoot":"","sources":["../../src/shared/rfc7807ErrorResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAqBH;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAC,OAAO,GAAG,gCAAgC,CAAC;IAE1D;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,GAAW;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CACT,GAAa,EACb,MAAc,EACd,WAAmB,EACnB,KAAa,EACb,MAAc,EACd,QAAiB,EACjB,UAAgC;QAEhC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QACpB,MAAM,SAAS,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,cAAc,CAAuB,CAAC;QAEvE,MAAM,OAAO,GAA0B;YACrC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,EAAE;YACtC,KAAK;YACL,MAAM;YACN,MAAM;YACN,QAAQ,EAAE,QAAQ,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG;YACzD,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;YAC/B,GAAG,UAAU;SACd,CAAC;QAEF,OAAO,GAAG;aACP,MAAM,CAAC,MAAM,CAAC;aACd,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC;aACrD,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAa,EAAE,QAAgB,EAAE,EAAW,EAAE,UAAgC;QAC5F,OAAO,IAAI,CAAC,IAAI,CACd,GAAG,EACH,GAAG,EACH,oBAAoB,EACpB,oBAAoB,EACpB,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,oDAAoD,EAC9F,SAAS,EACT,UAAU,CACX,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAa,EAAE,MAAe,EAAE,UAAgC;QAClF,OAAO,IAAI,CAAC,IAAI,CACd,GAAG,EACH,GAAG,EACH,cAAc,EACd,yBAAyB,EACzB,MAAM,IAAI,uEAAuE,EACjF,SAAS,EACT,UAAU,CACX,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAa,EAAE,MAAe,EAAE,UAAgC;QAC/E,OAAO,IAAI,CAAC,IAAI,CACd,GAAG,EACH,GAAG,EACH,WAAW,EACX,kBAAkB,EAClB,MAAM,IAAI,oDAAoD,EAC9D,SAAS,EACT,UAAU,CACX,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,GAAa,EAAE,gBAAuB,EAAE,UAAgC;QAC7F,OAAO,IAAI,CAAC,IAAI,CACd,GAAG,EACH,GAAG,EACH,mBAAmB,EACnB,mBAAmB,EACnB,uDAAuD,EACvD,SAAS,EACT;YACE,iBAAiB,EAAE,gBAAgB;YACnC,GAAG,UAAU;SACd,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAa,EAAE,MAAc,EAAE,UAAgC;QAC7E,OAAO,IAAI,CAAC,IAAI,CACd,GAAG,EACH,GAAG,EACH,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,EACN,SAAS,EACT,UAAU,CACX,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAa,EAAE,MAAuB,EAAE,UAAgC;QAC3F,IAAI,
|
|
1
|
+
{"version":3,"file":"rfc7807ErrorResponse.js","sourceRoot":"","sources":["../../src/shared/rfc7807ErrorResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAsBxB,eAAO,MAAM,UAAU,6BAiBlB,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvD,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;CAC9C;AAiBD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -15,13 +15,28 @@
|
|
|
15
15
|
* - NODE_ENV: development/staging/production
|
|
16
16
|
*/
|
|
17
17
|
import pino from 'pino';
|
|
18
|
-
|
|
18
|
+
import { createRequire } from 'node:module';
|
|
19
|
+
const isProduction = process.env.NODE_ENV === 'production';
|
|
20
|
+
const isTest = process.env.NODE_ENV === 'test' || !!process.env.VITEST;
|
|
21
|
+
const isDevelopment = !isProduction;
|
|
22
|
+
const require = createRequire(import.meta.url);
|
|
23
|
+
const hasPrettyTransport = (() => {
|
|
24
|
+
try {
|
|
25
|
+
require.resolve('pino-pretty');
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
})();
|
|
32
|
+
const usePrettyTransport = isDevelopment && !isTest && !process.env.CI && hasPrettyTransport;
|
|
19
33
|
const logLevel = process.env.LOG_LEVEL || (isDevelopment ? 'debug' : 'info');
|
|
20
34
|
// Always write logs to stderr (fd 2). Stdout (fd 1) is reserved for data —
|
|
21
35
|
// MCP stdio servers use stdout exclusively for JSON-RPC frames, and any
|
|
22
36
|
// non-JSON byte on that pipe corrupts the protocol and crashes the server.
|
|
23
37
|
// Writing logs to stderr is also the standard *nix convention.
|
|
24
38
|
export const rootLogger = isDevelopment
|
|
39
|
+
&& usePrettyTransport
|
|
25
40
|
? pino({
|
|
26
41
|
level: logLevel,
|
|
27
42
|
transport: {
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACvE,MAAM,aAAa,GAAG,CAAC,YAAY,CAAC;AACpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AACL,MAAM,kBAAkB,GAAG,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,kBAAkB,CAAC;AAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,2EAA2E;AAC3E,wEAAwE;AACxE,2EAA2E;AAC3E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa;OAClC,kBAAkB;IACrB,CAAC,CAAC,IAAI,CAAC;QACH,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE;YACT,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,UAAU;gBACzB,MAAM,EAAE,cAAc;gBACtB,WAAW,EAAE,CAAC;aACf;SACF;KACF,CAAC;IACJ,CAAC,CAAC,IAAI,CACF,EAAE,KAAK,EAAE,QAAQ,EAAE,EACnB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CACzC,CAAC;AAuBN,SAAS,UAAU,CAAC,UAAuB;IACzC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;IAC7E,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;YACjC,UAAU,CAAC,KAAK,CAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,CAAC,QAA6B,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1F,OAAO,OAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC"}
|