@soulbatical/tetra-core 0.10.4 → 0.10.5
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 +50 -36
- 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.d.ts +4 -10
- package/dist/generators.d.ts.map +1 -1
- package/dist/generators.js +3 -7
- package/dist/generators.js.map +1 -1
- package/dist/index.d.ts +9 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -27
- package/dist/index.js.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/shared/telegram/routes.d.ts +6 -1
- package/dist/shared/telegram/routes.d.ts.map +1 -1
- package/dist/shared/telegram/routes.js +68 -18
- package/dist/shared/telegram/routes.js.map +1 -1
- package/dist/shared/telegram/types.d.ts +19 -1
- package/dist/shared/telegram/types.d.ts.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +5 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +12 -42
- 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
package/dist/generators.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @soulbatical/tetra-core/generators
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Compatibility entrypoint.
|
|
5
|
+
* The canonical generator surface now lives in `@soulbatical/tetra-supabase`.
|
|
5
6
|
*/
|
|
6
|
-
export { generateRLS, generateRLSBatch } from '
|
|
7
|
-
export { getAuditChecks, generateAuditSQL } from './generators/rls-auditor.js';
|
|
8
|
-
export { runRLSCheck, runRLSCheckDebug } from './generators/rls-checker.js';
|
|
9
|
-
export { generateExecSQL, checkExecSQLExists } from './generators/rls-exec-sql.js';
|
|
10
|
-
// RPC Generator
|
|
11
|
-
export { RPCGenerator, DetailRPCGenerator, validateConfig as validateRPCConfig, generateAuthCheck, generateAuthWhereClause, generateAuthDeclarations, generateTimestamp, getTableAlias, escapeIdentifier } from './generators/rpc/index.js';
|
|
7
|
+
export { generateRLS, generateRLSBatch, getAuditChecks, generateAuditSQL, runRLSCheck, runRLSCheckDebug, generateExecSQL, checkExecSQLExists, RPCGenerator, DetailRPCGenerator, validateRPCConfig, generateAuthCheck, generateAuthWhereClause, generateAuthDeclarations, generateTimestamp, getTableAlias, escapeIdentifier, } from '@soulbatical/tetra-supabase';
|
|
12
8
|
//# sourceMappingURL=generators.js.map
|
package/dist/generators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,6BAA6B,CAAC"}
|
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,14 @@ 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 {
|
|
107
|
-
export type {
|
|
108
|
-
export { getAuditChecks, generateAuditSQL } from '
|
|
109
|
-
export type { AuditCheck } from '
|
|
110
|
-
export {
|
|
111
|
-
export type {
|
|
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';
|
|
102
|
+
export { addTelegramRoutes, TelegramSecretError } from './shared/telegram/index.js';
|
|
103
|
+
export type { TelegramRoutesConfig, TelegramService, TelegramUserSettings, TelegramRule, TelegramMessageHandler, TelegramCallbackHandler, TelegramMessageContext, TelegramCallbackContext, RuleConditions, RuleAction, RulePreset, InlineKeyboard, NotifyEventOptions, TelegramNotificationFilterContext, TelegramMessageSentContext, TelegramSendPhotoOptions, TelegramSendDocumentOptions, } from './shared/telegram/index.js';
|
|
104
|
+
export { generateRLS, generateRLSBatch, getAuditChecks, generateAuditSQL, runRLSCheck, runRLSCheckDebug, generateExecSQL, checkExecSQLExists } from '@soulbatical/tetra-supabase';
|
|
105
|
+
export type { RLSConfig, RLSTableType, RLSGeneratorResult, AuditCheck, RLSReport, RLSCheckResult, RLSViolation, RLSCategorySummary } from '@soulbatical/tetra-supabase';
|
|
106
|
+
export { RPCGenerator, DetailRPCGenerator, validateRPCConfig, generateAuthCheck, generateAuthWhereClause, generateAuthDeclarations, generateTimestamp, getTableAlias, escapeIdentifier } from '@soulbatical/tetra-supabase';
|
|
107
|
+
export type { GeneratedSQL, FilterDefinition, RPCGeneratorOptions, DetailRPCGeneratorOptions, RPCValidationResult, RPCValidationError, AccessLevel, CreatorVisibilityConfig as RPCCreatorVisibilityConfig } from '@soulbatical/tetra-supabase';
|
|
130
108
|
export { initSentry, setupSentryErrorHandler, getSentry, isSentryActive } from './core/sentry.js';
|
|
131
109
|
export type { SentryConfig } from './core/sentry.js';
|
|
132
110
|
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';
|
|
@@ -91,37 +92,14 @@ 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';
|
|
97
|
+
// ─── Telegram Integration ───────────────────────────────────
|
|
98
|
+
export { addTelegramRoutes, TelegramSecretError } from './shared/telegram/index.js';
|
|
101
99
|
// ─── Generators ──────────────────────────────────────────────
|
|
102
|
-
export { generateRLS, generateRLSBatch } from '
|
|
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';
|
|
100
|
+
export { generateRLS, generateRLSBatch, getAuditChecks, generateAuditSQL, runRLSCheck, runRLSCheckDebug, generateExecSQL, checkExecSQLExists } from '@soulbatical/tetra-supabase';
|
|
106
101
|
// RPC Generator (SQL Generator v3.17)
|
|
107
|
-
export { RPCGenerator, DetailRPCGenerator,
|
|
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';
|
|
102
|
+
export { RPCGenerator, DetailRPCGenerator, validateRPCConfig, generateAuthCheck, generateAuthWhereClause, generateAuthDeclarations, generateTimestamp, getTableAlias, escapeIdentifier } from '@soulbatical/tetra-supabase';
|
|
125
103
|
// ─── Sentry (optional) ────────────────────────────────────
|
|
126
104
|
export { initSentry, setupSentryErrorHandler, getSentry, isSentryActive } from './core/sentry.js';
|
|
127
105
|
// ─── 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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"}
|
|
@@ -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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"}
|
|
@@ -7,9 +7,14 @@
|
|
|
7
7
|
* - Notification service (notifyEvent, editMessage, sendMessage)
|
|
8
8
|
* - Webhook auto-registration
|
|
9
9
|
*
|
|
10
|
+
* Canonical install/import target for consumers:
|
|
11
|
+
* `@soulbatical/tetra-telegram`
|
|
12
|
+
*
|
|
13
|
+
* The `@soulbatical/tetra-core` surface is temporary compatibility only.
|
|
14
|
+
*
|
|
10
15
|
* Usage:
|
|
11
16
|
* ```typescript
|
|
12
|
-
* import { addTelegramRoutes } from '@soulbatical/tetra-
|
|
17
|
+
* import { addTelegramRoutes } from '@soulbatical/tetra-telegram';
|
|
13
18
|
*
|
|
14
19
|
* const telegram = addTelegramRoutes({
|
|
15
20
|
* botToken: process.env.MY_TELEGRAM_BOT_TOKEN!,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/shared/telegram/routes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/shared/telegram/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAQH,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EAahB,MAAM,YAAY,CAAC;AAapB,qBAAa,mBAAoB,SAAQ,KAAK;IACzB,OAAO,EAAE,MAAM,EAAE;gBAAjB,OAAO,EAAE,MAAM,EAAE;CAIrC;AAwGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAm2B/E"}
|