@getstrata/core 1.0.3 → 1.0.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  3. package/dist/core/runtime/appEnv.d.ts +16 -2
  4. package/dist/core/runtime/appKeyPrefix.d.ts +8 -1
  5. package/dist/entries/audit/exportAuditLogs.js +83 -18
  6. package/dist/entries/audit/siemFormatter.js +32 -3
  7. package/dist/entries/auth/intendedUrlCookie.js +33 -4
  8. package/dist/entries/auth/jwt.js +36 -4
  9. package/dist/entries/auth/jwtGuard.js +36 -4
  10. package/dist/entries/auth/oauth/providers.js +32 -3
  11. package/dist/entries/auth/oauth/samlProvider.js +32 -3
  12. package/dist/entries/auth/passwordConfirmCookie.js +35 -6
  13. package/dist/entries/auth/sessionCookie.js +35 -6
  14. package/dist/entries/auth/sessionGuard.js +35 -6
  15. package/dist/entries/auth/tokenHash.js +33 -4
  16. package/dist/entries/cache/createCacheStore.js +32 -3
  17. package/dist/entries/database/mysqlConnection.js +1 -132
  18. package/dist/entries/facades.js +32 -3
  19. package/dist/entries/http/corsMiddleware.js +16 -1
  20. package/dist/entries/http/csrfMiddleware.js +34 -5
  21. package/dist/entries/http/csrfToken.js +34 -5
  22. package/dist/entries/http/flashMiddleware.js +33 -4
  23. package/dist/entries/http/flashSession.js +33 -4
  24. package/dist/entries/http/loginThrottleMiddleware.js +1 -373
  25. package/dist/entries/http/memoryThrottleMiddleware.js +32 -58
  26. package/dist/entries/http/response.js +16 -56
  27. package/dist/entries/http/scimThrottleMiddleware.js +32 -3
  28. package/dist/entries/http/securityHeadersMiddleware.js +32 -3
  29. package/dist/entries/http/signedUrl.js +33 -4
  30. package/dist/entries/http/throttleMiddleware.js +32 -58
  31. package/dist/entries/http/webErrorResponse.js +1 -401
  32. package/dist/entries/jobs/exportAuditLogsJob.js +83 -18
  33. package/dist/entries/lifecycle/gracefulShutdown.js +1 -50
  34. package/dist/entries/mail/mailer.js +32 -3
  35. package/dist/entries/openapi/generator.js +32 -3
  36. package/dist/entries/queue/createAppQueue.js +32 -3
  37. package/dist/entries/queue/publicQueue.js +32 -3
  38. package/dist/entries/queue/queueMetrics.js +32 -3
  39. package/dist/entries/queue/redisQueue.js +32 -3
  40. package/dist/entries/runtime/appEnv.js +18 -1
  41. package/dist/entries/runtime/appKeyPrefix.js +1 -70
  42. package/dist/entries/security/oauthState.js +33 -4
  43. package/dist/entries/security/safeFetch.js +32 -9
  44. package/dist/entries/security/safeUrl.js +1 -105
  45. package/dist/entries/security/totp.js +32 -3
  46. package/dist/entries/tenant/databaseTenantContext.js +48 -6
  47. package/dist/entries/tracing/tracingMiddleware.js +32 -3
  48. package/dist/entries/view.js +1 -778
  49. package/dist/framework/public-api.d.ts +28 -19
  50. package/dist/index.js +448 -53
  51. package/package.json +2 -2
@@ -14,7 +14,7 @@ export { ApiTokenGuard, AuthManager, CompositeGuard, DatabaseTokenGuard, GuestGu
14
14
  export type { JwtPayload } from "../core/auth/jwt.ts";
15
15
  export { jwtTtlSeconds, signJwt, verifyJwt } from "../core/auth/jwt.ts";
16
16
  export { JwtGuard } from "../core/auth/jwtGuard.ts";
17
- export { configureMembershipLookup, currentOrganizationIds, currentOrgRole, hasMinimumOrgRole, hasOrgMembership, resolveMembershipLookup, runWithMembershipContext, } from "../core/auth/membershipContext.ts";
17
+ export { configureMembershipLookup, currentOrganizationIds, currentOrgRole, hasMinimumOrgRole, hasOrgMembership, membershipContext, membershipRepository, resetMembershipLookupForTests, resolveMembershipLookup, runWithMembershipContext, } from "../core/auth/membershipContext.ts";
18
18
  export { createMembershipMiddleware } from "../core/auth/membershipMiddleware.ts";
19
19
  export { appendOrganizationScope, appendProjectScope, assertOrganizationReadable, assertResourceInCurrentTenant, emptyPaginateResult, resolveOrganizationScope, scopedOrganizationIds, } from "../core/auth/membershipScope.ts";
20
20
  export { default as MembershipService, resolveMembershipService, } from "../core/auth/membershipService.ts";
@@ -33,22 +33,24 @@ export { bindDatabaseConnection, getBoundDatabaseConnection, resetBoundDatabaseC
33
33
  export { bindBunSql, createBunSqlPool } from "../core/database/bunSql.ts";
34
34
  export { createDatabaseConnection } from "../core/database/connection.ts";
35
35
  export { getActiveDatabaseConnection, hasActiveDatabaseConnection, runWithDatabaseConnection, } from "../core/database/connectionContext.ts";
36
- export { getDefaultDatabasePool, getDefaultDatabaseQuery, registerDefaultDatabasePool, } from "../core/database/defaultConnection.ts";
36
+ export { getDefaultDatabasePool, getDefaultDatabaseQuery, registerDefaultDatabasePool, resetDefaultDatabasePoolForTests, } from "../core/database/defaultConnection.ts";
37
37
  export type { SqlDialect } from "../core/database/dialect.ts";
38
38
  export { currentSqlDialect, dialectFor, resetSqlDialect, runWithSqlDialect, sqlTimestamp, useSqlDialect, } from "../core/database/dialect.ts";
39
+ export { mapDatabaseError, withDatabaseErrorHandling } from "../core/database/errors.ts";
39
40
  export { Factory } from "../core/database/factory.ts";
40
41
  export { foreignKeyFromTable, pivotTableName, singularize } from "../core/database/inflection.ts";
41
42
  export { withMigrationLock } from "../core/database/migrations/advisoryLock.ts";
42
43
  export { freshDatabase, getMigrationStatus, loadMigrationsFromDirectory, migrateDatabase, rollbackDatabase, } from "../core/database/migrations/runner.ts";
43
44
  export type { Migration, MigrationDatabase, MigrationStatus, } from "../core/database/migrations/types.ts";
44
45
  export type { CastType, GlobalScopeFn, ModelConstructor } from "../core/database/model.ts";
45
- export { applyCasts, BelongsToManyRelationQuery, BelongsToRelationQuery, dehydrateValue, filterMassAssignable, HasManyRelationQuery, HasOneRelationQuery, hydrateValue, Model, ModelQuery, MorphManyRelationQuery, MorphOneRelationQuery, MorphToRelationQuery, registerModelClass, registerModelRepository, } from "../core/database/model.ts";
46
+ export { applyCasts, BelongsToManyRelationQuery, BelongsToRelationQuery, dehydrateValue, filterMassAssignable, HasManyRelationQuery, HasManyThroughRelationQuery, HasOneRelationQuery, hydrateValue, Model, ModelQuery, MorphManyRelationQuery, MorphOneRelationQuery, MorphToRelationQuery, registerModelClass, registerModelRepository, } from "../core/database/model.ts";
46
47
  export type { MysqlConnection, MysqlExecutable, MysqlPool, } from "../core/database/mysqlConnection.ts";
47
- export { createMysqlConnection, createMysqlConnectionFromPool, createMysqlPool, } from "../core/database/mysqlConnection.ts";
48
+ export { createMysqlConnection, createMysqlConnectionFromPool, createMysqlPool, resetMysqlLoaderForTests, } from "../core/database/mysqlConnection.ts";
48
49
  export { getNamedConnection, hasNamedConnection, registerNamedConnection, resetNamedConnections, runOnNamedConnection, unregisterNamedConnection, } from "../core/database/namedConnections.ts";
50
+ export { buildAdvancedWhereClause, buildCountQuery, buildDeleteByIdQuery, buildGroupedCountQuery, buildInsertQuery, buildJoinClause, buildOrderByClause, buildProjectionQuery, buildQueryWhereClause, buildRestoreByIdQuery, buildSelectQuery, buildSoftDeleteByIdQuery, buildUpdateQuery, buildWhereClause, parseQualifiedColumn, qualifyColumn, quoteIdentifier, resolveQualifiedColumn, resolveSoftDeleteColumn, } from "../core/database/query.ts";
49
51
  export { createDatabaseQueryProxy } from "../core/database/queryProxy.ts";
50
- export type { BelongsToManyRelation, BelongsToRelation, HasManyRelation, HasOneRelation, MorphManyRelation, MorphOneRelation, MorphToRelation, } from "../core/database/relationships.ts";
51
- export { belongsTo, belongsToMany, hasMany, hasOne, indexBelongsToManyRelation, indexBelongsToRelation, indexHasManyRelation, indexHasOneRelation, indexMorphManyRelation, indexMorphOneRelation, indexMorphToRelation, morphMany, morphOne, morphTo, } from "../core/database/relationships.ts";
52
+ export type { BelongsToManyRelation, BelongsToRelation, HasManyRelation, HasManyThroughRelation, HasOneRelation, MorphManyRelation, MorphOneRelation, MorphToRelation, } from "../core/database/relationships.ts";
53
+ export { belongsTo, belongsToMany, hasMany, hasManyThrough, hasOne, indexBelongsToManyRelation, indexBelongsToRelation, indexHasManyRelation, indexHasManyThroughRelation, indexHasOneRelation, indexMorphManyRelation, indexMorphOneRelation, indexMorphToRelation, morphMany, morphOne, morphTo, } from "../core/database/relationships.ts";
52
54
  export { repositoryConnection, resolveRepositoryConnection, } from "../core/database/repositoryConnection.ts";
53
55
  export { RepositoryQuery } from "../core/database/repositoryQuery.ts";
54
56
  export type { BlueprintAction, BlueprintCallback, ColumnKind, DatabaseDriver, ForeignKeyOptions, Grammar, IndexDefinition, IndexKind, ResolveDatabaseDriverOptions, SchemaBuilder, } from "../core/database/schema/index.ts";
@@ -63,43 +65,46 @@ export type { WhereNode } from "../core/database/whereBuilder.ts";
63
65
  export { WhereBuilder } from "../core/database/whereBuilder.ts";
64
66
  export { BadRequestError, ConflictError, ForbiddenError, HttpError, InternalServerError, isHttpErrorLike, NotFoundError, PayloadTooLargeError, PreconditionFailedError, toHttpError, UnauthorizedError, UnprocessableEntityError, ValidationError, } from "../core/errors/http.ts";
65
67
  export type { EventListener } from "../core/events/eventBus.ts";
66
- export { EventBus, eventBus } from "../core/events/eventBus.ts";
68
+ export { EventBus, eventBus, readSharedEventBus } from "../core/events/eventBus.ts";
67
69
  export { modelEventName } from "../core/events/index.ts";
68
70
  export { auth, cache, config, events, log, mail, policyGate, queue, storage, } from "../core/facades/index.ts";
69
71
  export { createBodySizeLimitMiddleware } from "../core/http/bodySizeLimitMiddleware.ts";
70
72
  export { readClientIp, trustForwardedFor } from "../core/http/clientIp.ts";
71
73
  export { conditionalJsonResponse } from "../core/http/conditionalResponse.ts";
72
74
  export type { ContentSecurityPolicyDirectives, ContentSecurityPolicyOptions, } from "../core/http/contentSecurityPolicy.ts";
73
- export { configureContentSecurityPolicy, generateCspNonce, resolveContentSecurityPolicy, resolveHtmlContentSecurityPolicy, serverHtmxContentSecurityPolicy, spaContentSecurityPolicy, strictApiContentSecurityPolicy, } from "../core/http/contentSecurityPolicy.ts";
75
+ export { configureContentSecurityPolicy, generateCspNonce, HTMX_2_0_4_INDICATOR_STYLE_HASH, resetContentSecurityPolicyForTests, resolveContentSecurityPolicy, resolveHtmlContentSecurityPolicy, serverHtmxContentSecurityPolicy, spaContentSecurityPolicy, strictApiContentSecurityPolicy, } from "../core/http/contentSecurityPolicy.ts";
74
76
  export { readBunRequestCookie, readRequestCookie } from "../core/http/cookies.ts";
75
77
  export { createCorsMiddleware } from "../core/http/corsMiddleware.ts";
76
78
  export { createCsrfMiddleware } from "../core/http/csrfMiddleware.ts";
77
79
  export { createCsrfProtection } from "../core/http/csrfProtection.ts";
78
80
  export { createCsrfTokenCookie, readSubmittedCsrfToken, readSubmittedCsrfTokenFromBody, resolveCsrfToken, resolveCsrfTokenForRequest, verifyCsrfToken, } from "../core/http/csrfToken.ts";
79
- export { applyConditionalGet, assertIfMatch, type EtagVersioned, etagFromResource, isEtagEnabled, } from "../core/http/etag.ts";
81
+ export { applyConditionalGet, assertIfMatch, computeEtagFromJson, type EtagVersioned, etagFromResource, etagValuesMatch, ifMatchSatisfied, ifNoneMatchSatisfied, isEtagEnabled, notModifiedResponse, } from "../core/http/etag.ts";
80
82
  export { createFlashMiddleware } from "../core/http/flashMiddleware.ts";
81
- export { FormRequest } from "../core/http/formRequest.ts";
82
- export { applyMiddlewareToRoutes, bindRouteModel, buildRequestCacheKey, composeMiddleware, createAuthMiddleware, createAuthorizeMiddleware, createRequireAuthMiddleware, paginatedResponse, parsePaginationQuery, parsePositiveIntParam, requestIdMiddleware, securedBindRouteModel, securedBindRouteModelByKey, withMiddleware, wrapRouteHandler, } from "../core/http/index.ts";
83
- export { createLoginThrottleMiddleware } from "../core/http/loginThrottleMiddleware.ts";
83
+ export { FormRequest, QueryFormRequest } from "../core/http/formRequest.ts";
84
+ export { applyMiddlewareToRoutes, bindRouteModel, buildPaginationMeta, buildRequestCacheKey, composeMiddleware, createAuthMiddleware, createAuthorizeMiddleware, createRequireAuthMiddleware, DEFAULT_PER_PAGE, MAX_PER_PAGE, paginatedResponse, parsePaginationQuery, parsePositiveIntParam, requestIdMiddleware, securedBindRouteModel, securedBindRouteModelByKey, withMiddleware, wrapRouteHandler, } from "../core/http/index.ts";
85
+ export { createLoginThrottleMiddleware, createMemoryLoginThrottleMiddleware, resetMemoryLoginThrottleForTests, resolveLoginEmail, resolveLoginIdentity, } from "../core/http/loginThrottleMiddleware.ts";
84
86
  export { createMemoryThrottleMiddleware, resetMemoryThrottleForTests, } from "../core/http/memoryThrottleMiddleware.ts";
85
87
  export { createMetricsMiddleware, normalizeMetricPath } from "../core/http/metricsMiddleware.ts";
86
88
  export type { Middleware, RouteHandler } from "../core/http/middleware.ts";
87
- export { type ParsedUpload, parseMultipartUpload } from "../core/http/parseMultipartUpload.ts";
89
+ export { type ParsedUpload, parseMultipartUpload, sanitizeUploadFileName, } from "../core/http/parseMultipartUpload.ts";
88
90
  export type { RequestMeta } from "../core/http/requestMetaContext.ts";
89
- export { currentRequestMeta, runWithRequestMeta } from "../core/http/requestMetaContext.ts";
91
+ export { currentRequestMeta, requestMetaContext, runWithRequestMeta, } from "../core/http/requestMetaContext.ts";
90
92
  export { createRequireAbilityMiddleware } from "../core/http/requireAbilityMiddleware.ts";
91
93
  export { createRequireGlobalAdminMiddleware } from "../core/http/requireGlobalAdminMiddleware.ts";
92
94
  export { createRequireWebAuthMiddleware } from "../core/http/requireWebAuthMiddleware.ts";
93
95
  export { JsonResource, ResourceCollection, serializeDate, toPaginatedResourceCollection, toResourceCollection, whenLoaded, } from "../core/http/resources.ts";
94
- export { createdResponse, jsonResponse, noContentResponse, withErrorHandling, } from "../core/http/response.ts";
96
+ export { createdResponse, errorResponse, jsonResponse, noContentResponse, withErrorHandling, } from "../core/http/response.ts";
95
97
  export type { RouteRequest } from "../core/http/route.ts";
98
+ export { getRouteParams } from "../core/http/route.ts";
96
99
  export { loginRedirectLocation, safeInternalRedirectPath, sanitizeInternalPath, } from "../core/http/safeInternalPath.ts";
97
100
  export { createScimThrottleMiddleware } from "../core/http/scimThrottleMiddleware.ts";
98
101
  export { createSecurityHeadersMiddleware } from "../core/http/securityHeadersMiddleware.ts";
99
102
  export { absoluteTemporarySignedUrl, assertValidSignature, createValidateSignatureMiddleware, hasValidSignature, signedUrl, temporarySignedUrl, } from "../core/http/signedUrl.ts";
100
103
  export { createThrottleMiddleware } from "../core/http/throttleMiddleware.ts";
104
+ export { expectObject, getQueryParams, parseJsonBody, parseOptionalBooleanQueryParam, parseOptionalEnumQueryParam, parseOptionalPositiveIntQueryParam, readOptionalEnum, readOptionalPositiveInt, readOptionalString, readRequiredEnum, readRequiredPositiveInt, readRequiredString, } from "../core/http/validation.ts";
105
+ export { logServerError, normalizeFieldErrors, webErrorResponse, } from "../core/http/webErrorResponse.ts";
101
106
  export { WebFormRequest } from "../core/http/webFormRequest.ts";
102
- export { installGracefulShutdownSignals, registerShutdownHandler, runGracefulShutdown, } from "../core/lifecycle/gracefulShutdown.ts";
107
+ export { installGracefulShutdownSignals, registerShutdownHandler, resetGracefulShutdownForTests, runGracefulShutdown, } from "../core/lifecycle/gracefulShutdown.ts";
103
108
  export { createRequestLoggingMiddleware } from "../core/logging/requestLoggingMiddleware.ts";
104
109
  export type { MailDriver, MailMessage } from "../core/mail/mailer.ts";
105
110
  export { buildSmtpPayload, LogMailDriver, Mailer, mailer, } from "../core/mail/mailer.ts";
@@ -115,13 +120,17 @@ export { createNotificationDispatcher, Notification, NotificationDispatcher, } f
115
120
  export type { CursorPaginatedResult, PaginatedResult, PaginationMeta, } from "../core/pagination/index.ts";
116
121
  export type { Queue, QueuePriority } from "../core/queue/index.ts";
117
122
  export { AsyncQueue, createQueue, Job, SyncQueue } from "../core/queue/index.ts";
123
+ export { JobRegistry } from "../core/queue/jobRegistry.ts";
118
124
  export { createFailedJobService, createProductionQueue, createQueueWorker, createTrackedJob, FailedJobRepository, FailedJobService, jobRegistry, QueueWorker, RedisQueue, ResilientQueue, runQueueJob, } from "../core/queue/publicQueue.ts";
119
125
  export type { QueueMetricsSnapshot } from "../core/queue/queueMetrics.ts";
120
126
  export { collectQueueMetrics } from "../core/queue/queueMetrics.ts";
127
+ export { envFlagEnabled, isProductionEnv } from "../core/runtime/appEnv.ts";
128
+ export { apiPrefix, appCookieName, appDevSecret, appDisplayName, appEnv, appKeyPrefix, appUrl, appUserAgent, namespacedRedisKey, otelServiceName, requireConfiguredSecret, sdkClientClassName, siemEventType, smtpEhloHost, webhookSignatureHeader, } from "../core/runtime/appKeyPrefix.ts";
121
129
  export { resolveApplicationAuth, resolveApplicationCache, resolveApplicationConfig, resolveApplicationDependencies, resolveApplicationEventBus, resolveApplicationLogger, resolveApplicationPolicyGate, resolveApplicationQueue, setActiveApplicationContext, } from "../core/runtime/applicationRegistry.ts";
122
130
  export type { ScheduledTask } from "../core/scheduler/schedule.ts";
123
131
  export { appSchedule, runDueScheduledTasks, Schedule } from "../core/scheduler/schedule.ts";
124
132
  export { guestCanViewResource, isPublicReadsEnabled } from "../core/security/publicReads.ts";
133
+ export { assertSafeOutboundUrl, assertSafeOutboundUrlResolved, isBlockedHostname, isBlockedIpAddress, resetDnsLookupForTests, setDnsLookupForTests, } from "../core/security/safeUrl.ts";
125
134
  export type { SecurityEventDetails } from "../core/security/securityEvents.ts";
126
135
  export { logSecurityEvent } from "../core/security/securityEvents.ts";
127
136
  export type { StorageDriver } from "../core/storage/storage.ts";
@@ -129,14 +138,14 @@ export { createStorageDriver, LocalStorageDriver, resetDefaultStorage, StorageMa
129
138
  export type { TenancyDriver } from "../core/tenant/tenancyConfig.ts";
130
139
  export { isRlsTenancy, isTenancyEnabled, readTenancyDriver, } from "../core/tenant/tenancyConfig.ts";
131
140
  export type { TenantContext } from "../core/tenant/tenantContext.ts";
132
- export { currentTenant, currentTenantId, rateLimitMultiplierForPlan, runWithTenant, } from "../core/tenant/tenantContext.ts";
141
+ export { currentTenant, currentTenantId, rateLimitMultiplierForPlan, runWithTenant, tenantContext, } from "../core/tenant/tenantContext.ts";
133
142
  export { isInsideTenantDatabaseScope, runWithTenantDatabase, } from "../core/tenant/tenantDatabaseScope.ts";
134
143
  export { auditChecksum, createTenantMiddleware, DEFAULT_TENANT, resolveUserTenantId, } from "../core/tenant/tenantMiddleware.ts";
135
144
  export type { TraceContext } from "../core/tracing/traceContext.ts";
136
- export { currentTraceId, runWithTraceContext } from "../core/tracing/traceContext.ts";
145
+ export { currentTraceId, runWithTraceContext, traceContextStorage, } from "../core/tracing/traceContext.ts";
137
146
  export { createTracingMiddleware } from "../core/tracing/tracingMiddleware.ts";
138
147
  export type { ValidationRule, ValidationSchema } from "../core/validation/rules.ts";
139
148
  export { emailRule, maxLength, minLength, required, stringRule, validateObject, } from "../core/validation/rules.ts";
140
- export { configureWebErrorView, configureWebLayoutData, DEFAULT_VIEWS_DIRECTORY, EtaViewEngine, errorTemplateName, htmlErrorResponse, htmlResponse, isHtmxRequest, notFoundHtmlResponse, redirectResponse, renderKernelErrorChrome, resolveWebLayoutData, rssResponse, textResponse, xmlResponse, } from "../core/view/index.ts";
149
+ export { configureWebErrorView, configureWebLayoutData, DEFAULT_VIEWS_DIRECTORY, EtaViewEngine, errorTemplateName, htmlErrorResponse, htmlResponse, isHtmxRequest, notFoundHtmlResponse, redirectResponse, renderKernelErrorChrome, renderWebErrorHtml, resolveWebLayoutData, rssResponse, textResponse, xmlResponse, } from "../core/view/index.ts";
141
150
  export type { ViewEngine } from "../core/view/viewEngine.ts";
142
151
  export type { WebLayoutAuthUser, WebLayoutData, WebLayoutDataOptions, WebLayoutUserKey, } from "../core/view/webLayoutData.ts";