@getstrata/core 1.1.3 → 1.1.4
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/CHANGELOG.md +4 -0
- package/dist/core/http/index.d.ts +1 -1
- package/dist/core/http/parseMultipartUpload.d.ts +2 -1
- package/dist/entries/http/parseMultipartUpload.js +22 -15
- package/dist/entries/http/uploads.js +62 -0
- package/dist/framework/public-api.d.ts +1 -1
- package/dist/index.js +21 -14
- package/package.json +7 -2
package/CHANGELOG.md
CHANGED
|
@@ -10,7 +10,7 @@ export type { Middleware, RouteHandler } from "./middleware";
|
|
|
10
10
|
export { applyMiddlewareToRoutes, composeMiddleware, requestIdMiddleware, wrapRouteHandler, } from "./middleware";
|
|
11
11
|
export { buildPaginationMeta, DEFAULT_PER_PAGE, MAX_PER_PAGE, paginatedResponse, parsePaginationQuery, } from "./pagination";
|
|
12
12
|
export type { ParsedUpload } from "./parseMultipartUpload";
|
|
13
|
-
export { parseMultipartUpload, sanitizeUploadFileName } from "./parseMultipartUpload";
|
|
13
|
+
export { parseMultipartUpload, sanitizeUploadFileName, validateUploadFile, } from "./parseMultipartUpload";
|
|
14
14
|
export { createRequireAuthMiddleware } from "./requireAuthMiddleware";
|
|
15
15
|
export { serializeDate, toPaginatedResourceCollection, toResourceCollection } from "./resources";
|
|
16
16
|
export { createdResponse, errorResponse, jsonResponse, noContentResponse, withErrorHandling, } from "./response";
|
|
@@ -5,6 +5,7 @@ interface ParsedUpload {
|
|
|
5
5
|
contents: Uint8Array;
|
|
6
6
|
}
|
|
7
7
|
declare function sanitizeUploadFileName(name: string): string;
|
|
8
|
+
declare function validateUploadFile(file: File, fieldName?: string): Promise<ParsedUpload>;
|
|
8
9
|
declare function parseMultipartUpload(request: Request, fieldName?: string): Promise<ParsedUpload>;
|
|
9
10
|
export type { ParsedUpload };
|
|
10
|
-
export { parseMultipartUpload, sanitizeUploadFileName };
|
|
11
|
+
export { parseMultipartUpload, sanitizeUploadFileName, validateUploadFile };
|
|
@@ -67,35 +67,42 @@ function sanitizeUploadFileName(name) {
|
|
|
67
67
|
const sanitized = base.replace(/[^\w.\-()+ ]+/g, "_").slice(0, 200);
|
|
68
68
|
return sanitized.length > 0 ? sanitized : "upload";
|
|
69
69
|
}
|
|
70
|
-
async function
|
|
71
|
-
|
|
72
|
-
if (!contentType.includes("multipart/form-data")) {
|
|
73
|
-
throw new BadRequestError("Expected multipart form data.");
|
|
74
|
-
}
|
|
75
|
-
const formData = await request.formData();
|
|
76
|
-
const value = formData.get(fieldName);
|
|
77
|
-
if (!(value instanceof File)) {
|
|
70
|
+
async function validateUploadFile(file, fieldName = "file") {
|
|
71
|
+
if (!(file instanceof File)) {
|
|
78
72
|
throw new BadRequestError(`Missing upload field "${fieldName}".`);
|
|
79
73
|
}
|
|
80
|
-
if (
|
|
74
|
+
if (file.size <= 0) {
|
|
81
75
|
throw new BadRequestError("Uploaded file is empty.");
|
|
82
76
|
}
|
|
83
77
|
const maxBytes = resolveMaxUploadBytes();
|
|
84
|
-
if (
|
|
78
|
+
if (file.size > maxBytes) {
|
|
85
79
|
throw new PayloadTooLargeError(`Upload exceeds the ${maxBytes} byte limit.`);
|
|
86
80
|
}
|
|
87
|
-
const mimeType = normalizeMimeType2(
|
|
81
|
+
const mimeType = normalizeMimeType2(file.type.trim() || "application/octet-stream");
|
|
88
82
|
if (!isAllowedMimeType(mimeType)) {
|
|
89
83
|
throw new BadRequestError(`File type "${mimeType}" is not allowed.`);
|
|
90
84
|
}
|
|
91
85
|
return {
|
|
92
|
-
fileName: sanitizeUploadFileName(
|
|
86
|
+
fileName: sanitizeUploadFileName(file.name),
|
|
93
87
|
mimeType,
|
|
94
|
-
size:
|
|
95
|
-
contents: new Uint8Array(await
|
|
88
|
+
size: file.size,
|
|
89
|
+
contents: new Uint8Array(await file.arrayBuffer())
|
|
96
90
|
};
|
|
97
91
|
}
|
|
92
|
+
async function parseMultipartUpload(request, fieldName = "file") {
|
|
93
|
+
const contentType = request.headers.get("content-type")?.toLowerCase() ?? "";
|
|
94
|
+
if (!contentType.includes("multipart/form-data")) {
|
|
95
|
+
throw new BadRequestError("Expected multipart form data.");
|
|
96
|
+
}
|
|
97
|
+
const formData = await request.formData();
|
|
98
|
+
const value = formData.get(fieldName);
|
|
99
|
+
if (!(value instanceof File)) {
|
|
100
|
+
throw new BadRequestError(`Missing upload field "${fieldName}".`);
|
|
101
|
+
}
|
|
102
|
+
return validateUploadFile(value, fieldName);
|
|
103
|
+
}
|
|
98
104
|
export {
|
|
99
105
|
parseMultipartUpload,
|
|
100
|
-
sanitizeUploadFileName
|
|
106
|
+
sanitizeUploadFileName,
|
|
107
|
+
validateUploadFile
|
|
101
108
|
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// ../../src/core/runtime/appEnv.ts
|
|
3
|
+
var NON_PRODUCTION_APP_ENVS = new Set(["local", "development", "dev", "test", "testing", "ci"]);
|
|
4
|
+
function normalizeEnvValue(value) {
|
|
5
|
+
return (value ?? "").trim().toLowerCase();
|
|
6
|
+
}
|
|
7
|
+
function isProductionEnv(env = process.env) {
|
|
8
|
+
const appEnv = normalizeEnvValue(env.APP_ENV);
|
|
9
|
+
const nodeEnv = normalizeEnvValue(env.NODE_ENV);
|
|
10
|
+
if (appEnv === "production" || nodeEnv === "production") {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
if (appEnv === "") {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return !NON_PRODUCTION_APP_ENVS.has(appEnv);
|
|
17
|
+
}
|
|
18
|
+
function envFlagEnabled(value) {
|
|
19
|
+
return value === "true";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// ../../src/core/http/uploads.ts
|
|
23
|
+
var DEFAULT_MAX_UPLOAD_BYTES = 5 * 1024 * 1024;
|
|
24
|
+
var ALLOWED_UPLOAD_MIME_TYPES = new Set([
|
|
25
|
+
"application/pdf",
|
|
26
|
+
"application/json",
|
|
27
|
+
"application/zip",
|
|
28
|
+
"application/x-zip-compressed",
|
|
29
|
+
"image/jpeg",
|
|
30
|
+
"image/png",
|
|
31
|
+
"image/gif",
|
|
32
|
+
"image/webp",
|
|
33
|
+
"text/plain",
|
|
34
|
+
"text/csv"
|
|
35
|
+
]);
|
|
36
|
+
function resolveMaxUploadBytes() {
|
|
37
|
+
const raw = process.env.MAX_UPLOAD_BYTES?.trim() ?? process.env.MAX_REQUEST_BODY_BYTES?.trim();
|
|
38
|
+
if (!raw) {
|
|
39
|
+
return DEFAULT_MAX_UPLOAD_BYTES;
|
|
40
|
+
}
|
|
41
|
+
const parsed = Number.parseInt(raw, 10);
|
|
42
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
43
|
+
return DEFAULT_MAX_UPLOAD_BYTES;
|
|
44
|
+
}
|
|
45
|
+
return parsed;
|
|
46
|
+
}
|
|
47
|
+
function normalizeMimeType(mimeType) {
|
|
48
|
+
return mimeType.split(";")[0]?.trim().toLowerCase() ?? "";
|
|
49
|
+
}
|
|
50
|
+
function isAllowedMimeType(mimeType) {
|
|
51
|
+
const normalized = normalizeMimeType(mimeType);
|
|
52
|
+
if (!normalized || normalized === "application/octet-stream") {
|
|
53
|
+
return envFlagEnabled(process.env.UPLOAD_ALLOW_UNKNOWN_MIME);
|
|
54
|
+
}
|
|
55
|
+
return ALLOWED_UPLOAD_MIME_TYPES.has(normalized);
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
ALLOWED_UPLOAD_MIME_TYPES,
|
|
59
|
+
DEFAULT_MAX_UPLOAD_BYTES,
|
|
60
|
+
isAllowedMimeType,
|
|
61
|
+
resolveMaxUploadBytes
|
|
62
|
+
};
|
|
@@ -91,7 +91,7 @@ export { createLoginThrottleMiddleware, createMemoryLoginThrottleMiddleware, res
|
|
|
91
91
|
export { createMemoryThrottleMiddleware, resetMemoryThrottleForTests, } from "../core/http/memoryThrottleMiddleware.ts";
|
|
92
92
|
export { createMetricsMiddleware, normalizeMetricPath } from "../core/http/metricsMiddleware.ts";
|
|
93
93
|
export type { Middleware, RouteHandler } from "../core/http/middleware.ts";
|
|
94
|
-
export { type ParsedUpload, parseMultipartUpload, sanitizeUploadFileName, } from "../core/http/parseMultipartUpload.ts";
|
|
94
|
+
export { type ParsedUpload, parseMultipartUpload, sanitizeUploadFileName, validateUploadFile, } from "../core/http/parseMultipartUpload.ts";
|
|
95
95
|
export type { RequestMeta } from "../core/http/requestMetaContext.ts";
|
|
96
96
|
export { currentRequestMeta, requestMetaContext, runWithRequestMeta, } from "../core/http/requestMetaContext.ts";
|
|
97
97
|
export { createRequireAbilityMiddleware } from "../core/http/requireAbilityMiddleware.ts";
|
package/dist/index.js
CHANGED
|
@@ -9080,34 +9080,40 @@ function sanitizeUploadFileName(name) {
|
|
|
9080
9080
|
const sanitized = base.replace(/[^\w.\-()+ ]+/g, "_").slice(0, 200);
|
|
9081
9081
|
return sanitized.length > 0 ? sanitized : "upload";
|
|
9082
9082
|
}
|
|
9083
|
-
async function
|
|
9084
|
-
|
|
9085
|
-
if (!contentType.includes("multipart/form-data")) {
|
|
9086
|
-
throw new BadRequestError("Expected multipart form data.");
|
|
9087
|
-
}
|
|
9088
|
-
const formData = await request.formData();
|
|
9089
|
-
const value = formData.get(fieldName);
|
|
9090
|
-
if (!(value instanceof File)) {
|
|
9083
|
+
async function validateUploadFile(file, fieldName = "file") {
|
|
9084
|
+
if (!(file instanceof File)) {
|
|
9091
9085
|
throw new BadRequestError(`Missing upload field "${fieldName}".`);
|
|
9092
9086
|
}
|
|
9093
|
-
if (
|
|
9087
|
+
if (file.size <= 0) {
|
|
9094
9088
|
throw new BadRequestError("Uploaded file is empty.");
|
|
9095
9089
|
}
|
|
9096
9090
|
const maxBytes = resolveMaxUploadBytes();
|
|
9097
|
-
if (
|
|
9091
|
+
if (file.size > maxBytes) {
|
|
9098
9092
|
throw new PayloadTooLargeError(`Upload exceeds the ${maxBytes} byte limit.`);
|
|
9099
9093
|
}
|
|
9100
|
-
const mimeType = normalizeMimeType2(
|
|
9094
|
+
const mimeType = normalizeMimeType2(file.type.trim() || "application/octet-stream");
|
|
9101
9095
|
if (!isAllowedMimeType(mimeType)) {
|
|
9102
9096
|
throw new BadRequestError(`File type "${mimeType}" is not allowed.`);
|
|
9103
9097
|
}
|
|
9104
9098
|
return {
|
|
9105
|
-
fileName: sanitizeUploadFileName(
|
|
9099
|
+
fileName: sanitizeUploadFileName(file.name),
|
|
9106
9100
|
mimeType,
|
|
9107
|
-
size:
|
|
9108
|
-
contents: new Uint8Array(await
|
|
9101
|
+
size: file.size,
|
|
9102
|
+
contents: new Uint8Array(await file.arrayBuffer())
|
|
9109
9103
|
};
|
|
9110
9104
|
}
|
|
9105
|
+
async function parseMultipartUpload(request, fieldName = "file") {
|
|
9106
|
+
const contentType = request.headers.get("content-type")?.toLowerCase() ?? "";
|
|
9107
|
+
if (!contentType.includes("multipart/form-data")) {
|
|
9108
|
+
throw new BadRequestError("Expected multipart form data.");
|
|
9109
|
+
}
|
|
9110
|
+
const formData = await request.formData();
|
|
9111
|
+
const value = formData.get(fieldName);
|
|
9112
|
+
if (!(value instanceof File)) {
|
|
9113
|
+
throw new BadRequestError(`Missing upload field "${fieldName}".`);
|
|
9114
|
+
}
|
|
9115
|
+
return validateUploadFile(value, fieldName);
|
|
9116
|
+
}
|
|
9111
9117
|
// ../../src/core/http/requireAuthMiddleware.ts
|
|
9112
9118
|
function createRequireAuthMiddleware(auth) {
|
|
9113
9119
|
return async (request, next) => {
|
|
@@ -12036,6 +12042,7 @@ export {
|
|
|
12036
12042
|
unregisterNamedConnection,
|
|
12037
12043
|
useSqlDialect,
|
|
12038
12044
|
validateObject,
|
|
12045
|
+
validateUploadFile,
|
|
12039
12046
|
verifyCsrfToken,
|
|
12040
12047
|
verifyJwt,
|
|
12041
12048
|
webErrorResponse,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/core",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Strata Bun framework public API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -620,6 +620,11 @@
|
|
|
620
620
|
"import": "./dist/entries/http/throttleMiddleware.js",
|
|
621
621
|
"default": "./dist/entries/http/throttleMiddleware.js"
|
|
622
622
|
},
|
|
623
|
+
"./http/uploads": {
|
|
624
|
+
"types": "./dist/core/http/uploads.d.ts",
|
|
625
|
+
"import": "./dist/entries/http/uploads.js",
|
|
626
|
+
"default": "./dist/entries/http/uploads.js"
|
|
627
|
+
},
|
|
623
628
|
"./http/validation": {
|
|
624
629
|
"types": "./dist/core/http/validation.d.ts",
|
|
625
630
|
"import": "./dist/entries/http/validation.js",
|
|
@@ -923,7 +928,7 @@
|
|
|
923
928
|
"build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta --external mysql2 --external @node-saml/node-saml",
|
|
924
929
|
"build:types": "tsc -p tsconfig.types.json",
|
|
925
930
|
"prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
|
|
926
|
-
"build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/emailVerification.ts entries/auth/jwt.ts entries/auth/jwtGuard.ts entries/auth/basicAuthGuard.ts entries/auth/tokenAbilityChecker.ts entries/auth/membershipMiddleware.ts entries/auth/membershipScope.ts entries/auth/membershipService.ts entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/saml/samlServiceProvider.ts entries/auth/password.ts entries/auth/passwordLogin.ts entries/auth/oneTimeToken.ts entries/auth/intendedUrlCookie.ts entries/auth/passwordConfirmCookie.ts entries/auth/policy.ts entries/auth/scimAuthMiddleware.ts entries/auth/sessionCookie.ts entries/auth/sessionGuard.ts entries/auth/tokenHash.ts entries/audit/exportAuditLogs.ts entries/audit/siemFormatter.ts entries/admin/formatValue.ts entries/admin/registry.ts entries/admin/types.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/authUserDirectory.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/errors.ts entries/database/factory.ts entries/database/migrations.ts entries/database/migrations/types.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/repositoryQuery.ts entries/database/seeders.ts entries/database/seeders/types.ts entries/database/schema.ts entries/database/sqliteConnection.ts entries/database/table.ts entries/database/types.ts entries/database/whereBuilder.ts entries/facades.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/clientIp.ts entries/http/cookies.ts entries/http/contentNegotiation.ts entries/http/conditionalResponse.ts entries/http/corsMiddleware.ts entries/http/csrfMiddleware.ts entries/http/csrfProtection.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/flashMiddleware.ts entries/http/formRequest.ts entries/http/metricsMiddleware.ts entries/http/memoryThrottleMiddleware.ts entries/http/pagination.ts entries/http/parseFormBody.ts entries/http/parseMultipartUpload.ts entries/http/requireAbilityMiddleware.ts entries/http/requireAuthMiddleware.ts entries/http/requireGlobalAdminMiddleware.ts entries/http/requireWebAuthMiddleware.ts entries/http/requireVerifiedMiddleware.ts entries/http/requirePasswordConfirmMiddleware.ts entries/http/resources.ts entries/http/response.ts entries/http/route.ts entries/http/routeMiddleware.ts entries/http/routeModelBinding.ts entries/http/safeInternalPath.ts entries/http/signedUrl.ts entries/http/statelessAuth.ts entries/http/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/validation.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/logging/logger.ts entries/logging/requestLoggingMiddleware.ts entries/mail/mailer.ts entries/mail/markdownMail.ts entries/mail/markdownMailable.ts entries/mail/sanitizeMailHtml.ts entries/media/imageTransform.ts entries/metrics/prometheus.ts entries/openapi/generator.ts entries/openapi/registeredRoute.ts entries/openapi/validate.ts entries/pagination.ts entries/queue.ts entries/queue/createAppQueue.ts entries/queue/failedJobRepository.ts entries/queue/failedJobService.ts entries/queue/jobRunner.ts entries/queue/queueMetrics.ts entries/queue/publicQueue.ts entries/queue/redisQueue.ts entries/queue/types.ts entries/runtime/appEnv.ts entries/runtime/frontendMode.ts entries/runtime/asyncContextStore.ts entries/scheduler/schedule.ts entries/scheduler/osCron.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/recoveryCodes.ts entries/security/safeFetch.ts entries/security/safePath.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/timingSafeCompare.ts entries/security/tokenExpiry.ts entries/security/totp.ts entries/storage/storage.ts entries/tenant/tenancyConfig.ts entries/tenant/tenantDatabaseScope.ts entries/tenant/databaseTenantContext.ts entries/tenant/enableTenantRls.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts --outdir dist --root . --target bun --external bun --external eta --external mysql2 --external @node-saml/node-saml --external @getstrata/core --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/emailVerification --external @getstrata/core/auth/guard --external @getstrata/core/auth/jwt --external @getstrata/core/auth/jwtGuard --external @getstrata/core/auth/basicAuthGuard --external @getstrata/core/auth/tokenAbilityChecker --external @getstrata/core/auth/membershipContext --external @getstrata/core/auth/membershipMiddleware --external @getstrata/core/auth/membershipScope --external @getstrata/core/auth/membershipService --external @getstrata/core/auth/oauth/oidcProvider --external @getstrata/core/auth/oauth/providers --external @getstrata/core/auth/oauth/samlProvider --external @getstrata/core/auth/oauth/types --external @getstrata/core/auth/saml/samlServiceProvider --external @getstrata/core/auth/password --external @getstrata/core/auth/passwordLogin --external @getstrata/core/auth/oneTimeToken --external @getstrata/core/auth/intendedUrlCookie --external @getstrata/core/auth/passwordConfirmCookie --external @getstrata/core/auth/policy --external @getstrata/core/auth/scimAuthMiddleware --external @getstrata/core/auth/sessionCookie --external @getstrata/core/auth/sessionGuard --external @getstrata/core/auth/tokenHash --external @getstrata/core/audit/exportAuditLogs --external @getstrata/core/audit/siemFormatter --external @getstrata/core/admin/formatValue --external @getstrata/core/admin/registry --external @getstrata/core/admin/types --external @getstrata/core/cache/tags --external @getstrata/core/cache/createCacheStore --external @getstrata/core/cache/repository --external @getstrata/core/cache/simpleCache --external @getstrata/core/cache/simpleCacheStore --external @getstrata/core/config/envSchema --external @getstrata/core/contracts/serviceTokens --external @getstrata/core/contracts/authUserDirectory --external @getstrata/core/contracts/container --external @getstrata/core/contracts/di --external @getstrata/core/crypto/fieldEncryption --external @getstrata/core/crypto/mfaSecret --external @getstrata/core/database --external @getstrata/core/database/baseRepository --external @getstrata/core/database/bindConnection --external @getstrata/core/database/boundConnection --external @getstrata/core/database/bunSql --external @getstrata/core/database/connection --external @getstrata/core/database/connectionContext --external @getstrata/core/database/defaultConnection --external @getstrata/core/database/dialect --external @getstrata/core/database/mysqlConnection --external @getstrata/core/database/namedConnections --external @getstrata/core/database/errors --external @getstrata/core/database/factory --external @getstrata/core/database/migrations --external @getstrata/core/database/migrations/types --external @getstrata/core/database/model --external @getstrata/core/database/query --external @getstrata/core/database/relationships --external @getstrata/core/database/repositoryConnection --external @getstrata/core/database/repositoryQuery --external @getstrata/core/database/seeders --external @getstrata/core/database/seeders/types --external @getstrata/core/database/schema --external @getstrata/core/database/sqliteConnection --external @getstrata/core/database/table --external @getstrata/core/database/transaction --external @getstrata/core/database/types --external @getstrata/core/database/whereBuilder --external @getstrata/core/errors/http --external @getstrata/core/events --external @getstrata/core/facades --external @getstrata/core/http --external @getstrata/core/http/authMiddleware --external @getstrata/core/http/authorizeMiddleware --external @getstrata/core/http/bodySizeLimitMiddleware --external @getstrata/core/http/clientIp --external @getstrata/core/http/cookies --external @getstrata/core/http/contentNegotiation --external @getstrata/core/http/contentSecurityPolicy --external @getstrata/core/http/conditionalResponse --external @getstrata/core/http/corsMiddleware --external @getstrata/core/http/csrfMiddleware --external @getstrata/core/http/csrfProtection --external @getstrata/core/http/csrfToken --external @getstrata/core/http/etag --external @getstrata/core/http/flashSession --external @getstrata/core/http/flashMiddleware --external @getstrata/core/http/formRequest --external @getstrata/core/http/middleware --external @getstrata/core/http/metricsMiddleware --external @getstrata/core/http/loginThrottleMiddleware --external @getstrata/core/http/memoryThrottleMiddleware --external @getstrata/core/http/pagination --external @getstrata/core/http/parseFormBody --external @getstrata/core/http/parseMultipartUpload --external @getstrata/core/http/requireAbilityMiddleware --external @getstrata/core/http/requireAuthMiddleware --external @getstrata/core/http/requireGlobalAdminMiddleware --external @getstrata/core/http/requireWebAuthMiddleware --external @getstrata/core/http/requireVerifiedMiddleware --external @getstrata/core/http/requirePasswordConfirmMiddleware --external @getstrata/core/http/resources --external @getstrata/core/http/response --external @getstrata/core/http/route --external @getstrata/core/http/routeMiddleware --external @getstrata/core/http/routeModelBinding --external @getstrata/core/http/safeInternalPath --external @getstrata/core/http/signedUrl --external @getstrata/core/http/statelessAuth --external @getstrata/core/http/scimThrottleMiddleware --external @getstrata/core/http/securityHeadersMiddleware --external @getstrata/core/http/securedRouteModelBinding --external @getstrata/core/http/requestMetaContext --external @getstrata/core/http/webErrorResponse --external @getstrata/core/http/webFormRequest --external @getstrata/core/http/throttleMiddleware --external @getstrata/core/http/validation --external @getstrata/core/jobs/exportAuditLogsJob --external @getstrata/core/jobs/invalidateCacheTagsJob --external @getstrata/core/lifecycle/gracefulShutdown --external @getstrata/core/logging/logger --external @getstrata/core/logging/requestLoggingMiddleware --external @getstrata/core/mail/mailer --external @getstrata/core/mail/markdownMail --external @getstrata/core/mail/markdownMailable --external @getstrata/core/mail/sanitizeMailHtml --external @getstrata/core/media/imageTransform --external @getstrata/core/metrics/prometheus --external @getstrata/core/notifications --external @getstrata/core/openapi/generator --external @getstrata/core/openapi/registeredRoute --external @getstrata/core/openapi/validate --external @getstrata/core/pagination --external @getstrata/core/queue --external @getstrata/core/queue/createAppQueue --external @getstrata/core/queue/failedJobRepository --external @getstrata/core/queue/failedJobService --external @getstrata/core/queue/jobRegistry --external @getstrata/core/queue/jobRunner --external @getstrata/core/queue/queueMetrics --external @getstrata/core/queue/publicQueue --external @getstrata/core/queue/redisQueue --external @getstrata/core/queue/types --external @getstrata/core/runtime/appEnv --external @getstrata/core/runtime/appKeyPrefix --external @getstrata/core/runtime/frontendMode --external @getstrata/core/runtime/applicationRegistry --external @getstrata/core/runtime/asyncContextStore --external @getstrata/core/scheduler/schedule --external @getstrata/core/scheduler/osCron --external @getstrata/core/security/oauthState --external @getstrata/core/security/publicReads --external @getstrata/core/security/recoveryCodes --external @getstrata/core/security/safeFetch --external @getstrata/core/security/safePath --external @getstrata/core/security/safeUrl --external @getstrata/core/security/scimTenantTokens --external @getstrata/core/security/securityEvents --external @getstrata/core/security/stripeWebhook --external @getstrata/core/security/timingSafeCompare --external @getstrata/core/security/tokenExpiry --external @getstrata/core/security/totp --external @getstrata/core/storage/storage --external @getstrata/core/tenant/tenancyConfig --external @getstrata/core/tenant/tenantContext --external @getstrata/core/tenant/tenantDatabaseScope --external @getstrata/core/tenant/databaseTenantContext --external @getstrata/core/tenant/tenantMiddleware --external @getstrata/core/tenant/enableTenantRls --external @getstrata/core/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
|
|
931
|
+
"build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.ts entries/auth/emailVerification.ts entries/auth/jwt.ts entries/auth/jwtGuard.ts entries/auth/basicAuthGuard.ts entries/auth/tokenAbilityChecker.ts entries/auth/membershipMiddleware.ts entries/auth/membershipScope.ts entries/auth/membershipService.ts entries/auth/oauth/oidcProvider.ts entries/auth/oauth/providers.ts entries/auth/oauth/samlProvider.ts entries/auth/oauth/types.ts entries/auth/saml/samlServiceProvider.ts entries/auth/password.ts entries/auth/passwordLogin.ts entries/auth/oneTimeToken.ts entries/auth/intendedUrlCookie.ts entries/auth/passwordConfirmCookie.ts entries/auth/policy.ts entries/auth/scimAuthMiddleware.ts entries/auth/sessionCookie.ts entries/auth/sessionGuard.ts entries/auth/tokenHash.ts entries/audit/exportAuditLogs.ts entries/audit/siemFormatter.ts entries/admin/formatValue.ts entries/admin/registry.ts entries/admin/types.ts entries/cache/tags.ts entries/cache/createCacheStore.ts entries/cache/repository.ts entries/cache/simpleCache.ts entries/cache/simpleCacheStore.ts entries/config/envSchema.ts entries/contracts/serviceTokens.ts entries/contracts/authUserDirectory.ts entries/contracts/container.ts entries/contracts/di.ts entries/crypto/fieldEncryption.ts entries/crypto/mfaSecret.ts entries/database/errors.ts entries/database/factory.ts entries/database/migrations.ts entries/database/migrations/types.ts entries/database/model.ts entries/database/query.ts entries/database/relationships.ts entries/database/repositoryQuery.ts entries/database/seeders.ts entries/database/seeders/types.ts entries/database/schema.ts entries/database/sqliteConnection.ts entries/database/table.ts entries/database/types.ts entries/database/whereBuilder.ts entries/facades.ts entries/http/authMiddleware.ts entries/http/authorizeMiddleware.ts entries/http/bodySizeLimitMiddleware.ts entries/http/clientIp.ts entries/http/cookies.ts entries/http/contentNegotiation.ts entries/http/conditionalResponse.ts entries/http/corsMiddleware.ts entries/http/csrfMiddleware.ts entries/http/csrfProtection.ts entries/http/csrfToken.ts entries/http/etag.ts entries/http/flashSession.ts entries/http/flashMiddleware.ts entries/http/formRequest.ts entries/http/metricsMiddleware.ts entries/http/memoryThrottleMiddleware.ts entries/http/pagination.ts entries/http/parseFormBody.ts entries/http/parseMultipartUpload.ts entries/http/requireAbilityMiddleware.ts entries/http/requireAuthMiddleware.ts entries/http/requireGlobalAdminMiddleware.ts entries/http/requireWebAuthMiddleware.ts entries/http/requireVerifiedMiddleware.ts entries/http/requirePasswordConfirmMiddleware.ts entries/http/resources.ts entries/http/response.ts entries/http/route.ts entries/http/routeMiddleware.ts entries/http/routeModelBinding.ts entries/http/safeInternalPath.ts entries/http/signedUrl.ts entries/http/statelessAuth.ts entries/http/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/uploads.ts entries/http/validation.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/logging/logger.ts entries/logging/requestLoggingMiddleware.ts entries/mail/mailer.ts entries/mail/markdownMail.ts entries/mail/markdownMailable.ts entries/mail/sanitizeMailHtml.ts entries/media/imageTransform.ts entries/metrics/prometheus.ts entries/openapi/generator.ts entries/openapi/registeredRoute.ts entries/openapi/validate.ts entries/pagination.ts entries/queue.ts entries/queue/createAppQueue.ts entries/queue/failedJobRepository.ts entries/queue/failedJobService.ts entries/queue/jobRunner.ts entries/queue/queueMetrics.ts entries/queue/publicQueue.ts entries/queue/redisQueue.ts entries/queue/types.ts entries/runtime/appEnv.ts entries/runtime/frontendMode.ts entries/runtime/asyncContextStore.ts entries/scheduler/schedule.ts entries/scheduler/osCron.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/recoveryCodes.ts entries/security/safeFetch.ts entries/security/safePath.ts entries/security/scimTenantTokens.ts entries/security/stripeWebhook.ts entries/security/timingSafeCompare.ts entries/security/tokenExpiry.ts entries/security/totp.ts entries/storage/storage.ts entries/tenant/tenancyConfig.ts entries/tenant/tenantDatabaseScope.ts entries/tenant/databaseTenantContext.ts entries/tenant/enableTenantRls.ts entries/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts --outdir dist --root . --target bun --external bun --external eta --external mysql2 --external @node-saml/node-saml --external @getstrata/core --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/emailVerification --external @getstrata/core/auth/guard --external @getstrata/core/auth/jwt --external @getstrata/core/auth/jwtGuard --external @getstrata/core/auth/basicAuthGuard --external @getstrata/core/auth/tokenAbilityChecker --external @getstrata/core/auth/membershipContext --external @getstrata/core/auth/membershipMiddleware --external @getstrata/core/auth/membershipScope --external @getstrata/core/auth/membershipService --external @getstrata/core/auth/oauth/oidcProvider --external @getstrata/core/auth/oauth/providers --external @getstrata/core/auth/oauth/samlProvider --external @getstrata/core/auth/oauth/types --external @getstrata/core/auth/saml/samlServiceProvider --external @getstrata/core/auth/password --external @getstrata/core/auth/passwordLogin --external @getstrata/core/auth/oneTimeToken --external @getstrata/core/auth/intendedUrlCookie --external @getstrata/core/auth/passwordConfirmCookie --external @getstrata/core/auth/policy --external @getstrata/core/auth/scimAuthMiddleware --external @getstrata/core/auth/sessionCookie --external @getstrata/core/auth/sessionGuard --external @getstrata/core/auth/tokenHash --external @getstrata/core/audit/exportAuditLogs --external @getstrata/core/audit/siemFormatter --external @getstrata/core/admin/formatValue --external @getstrata/core/admin/registry --external @getstrata/core/admin/types --external @getstrata/core/cache/tags --external @getstrata/core/cache/createCacheStore --external @getstrata/core/cache/repository --external @getstrata/core/cache/simpleCache --external @getstrata/core/cache/simpleCacheStore --external @getstrata/core/config/envSchema --external @getstrata/core/contracts/serviceTokens --external @getstrata/core/contracts/authUserDirectory --external @getstrata/core/contracts/container --external @getstrata/core/contracts/di --external @getstrata/core/crypto/fieldEncryption --external @getstrata/core/crypto/mfaSecret --external @getstrata/core/database --external @getstrata/core/database/baseRepository --external @getstrata/core/database/bindConnection --external @getstrata/core/database/boundConnection --external @getstrata/core/database/bunSql --external @getstrata/core/database/connection --external @getstrata/core/database/connectionContext --external @getstrata/core/database/defaultConnection --external @getstrata/core/database/dialect --external @getstrata/core/database/mysqlConnection --external @getstrata/core/database/namedConnections --external @getstrata/core/database/errors --external @getstrata/core/database/factory --external @getstrata/core/database/migrations --external @getstrata/core/database/migrations/types --external @getstrata/core/database/model --external @getstrata/core/database/query --external @getstrata/core/database/relationships --external @getstrata/core/database/repositoryConnection --external @getstrata/core/database/repositoryQuery --external @getstrata/core/database/seeders --external @getstrata/core/database/seeders/types --external @getstrata/core/database/schema --external @getstrata/core/database/sqliteConnection --external @getstrata/core/database/table --external @getstrata/core/database/transaction --external @getstrata/core/database/types --external @getstrata/core/database/whereBuilder --external @getstrata/core/errors/http --external @getstrata/core/events --external @getstrata/core/facades --external @getstrata/core/http --external @getstrata/core/http/authMiddleware --external @getstrata/core/http/authorizeMiddleware --external @getstrata/core/http/bodySizeLimitMiddleware --external @getstrata/core/http/clientIp --external @getstrata/core/http/cookies --external @getstrata/core/http/contentNegotiation --external @getstrata/core/http/contentSecurityPolicy --external @getstrata/core/http/conditionalResponse --external @getstrata/core/http/corsMiddleware --external @getstrata/core/http/csrfMiddleware --external @getstrata/core/http/csrfProtection --external @getstrata/core/http/csrfToken --external @getstrata/core/http/etag --external @getstrata/core/http/flashSession --external @getstrata/core/http/flashMiddleware --external @getstrata/core/http/formRequest --external @getstrata/core/http/middleware --external @getstrata/core/http/metricsMiddleware --external @getstrata/core/http/loginThrottleMiddleware --external @getstrata/core/http/memoryThrottleMiddleware --external @getstrata/core/http/pagination --external @getstrata/core/http/parseFormBody --external @getstrata/core/http/parseMultipartUpload --external @getstrata/core/http/requireAbilityMiddleware --external @getstrata/core/http/requireAuthMiddleware --external @getstrata/core/http/requireGlobalAdminMiddleware --external @getstrata/core/http/requireWebAuthMiddleware --external @getstrata/core/http/requireVerifiedMiddleware --external @getstrata/core/http/requirePasswordConfirmMiddleware --external @getstrata/core/http/resources --external @getstrata/core/http/response --external @getstrata/core/http/route --external @getstrata/core/http/routeMiddleware --external @getstrata/core/http/routeModelBinding --external @getstrata/core/http/safeInternalPath --external @getstrata/core/http/signedUrl --external @getstrata/core/http/statelessAuth --external @getstrata/core/http/scimThrottleMiddleware --external @getstrata/core/http/securityHeadersMiddleware --external @getstrata/core/http/securedRouteModelBinding --external @getstrata/core/http/requestMetaContext --external @getstrata/core/http/webErrorResponse --external @getstrata/core/http/webFormRequest --external @getstrata/core/http/throttleMiddleware --external @getstrata/core/http/uploads --external @getstrata/core/http/validation --external @getstrata/core/jobs/exportAuditLogsJob --external @getstrata/core/jobs/invalidateCacheTagsJob --external @getstrata/core/lifecycle/gracefulShutdown --external @getstrata/core/logging/logger --external @getstrata/core/logging/requestLoggingMiddleware --external @getstrata/core/mail/mailer --external @getstrata/core/mail/markdownMail --external @getstrata/core/mail/markdownMailable --external @getstrata/core/mail/sanitizeMailHtml --external @getstrata/core/media/imageTransform --external @getstrata/core/metrics/prometheus --external @getstrata/core/notifications --external @getstrata/core/openapi/generator --external @getstrata/core/openapi/registeredRoute --external @getstrata/core/openapi/validate --external @getstrata/core/pagination --external @getstrata/core/queue --external @getstrata/core/queue/createAppQueue --external @getstrata/core/queue/failedJobRepository --external @getstrata/core/queue/failedJobService --external @getstrata/core/queue/jobRegistry --external @getstrata/core/queue/jobRunner --external @getstrata/core/queue/queueMetrics --external @getstrata/core/queue/publicQueue --external @getstrata/core/queue/redisQueue --external @getstrata/core/queue/types --external @getstrata/core/runtime/appEnv --external @getstrata/core/runtime/appKeyPrefix --external @getstrata/core/runtime/frontendMode --external @getstrata/core/runtime/applicationRegistry --external @getstrata/core/runtime/asyncContextStore --external @getstrata/core/scheduler/schedule --external @getstrata/core/scheduler/osCron --external @getstrata/core/security/oauthState --external @getstrata/core/security/publicReads --external @getstrata/core/security/recoveryCodes --external @getstrata/core/security/safeFetch --external @getstrata/core/security/safePath --external @getstrata/core/security/safeUrl --external @getstrata/core/security/scimTenantTokens --external @getstrata/core/security/securityEvents --external @getstrata/core/security/stripeWebhook --external @getstrata/core/security/timingSafeCompare --external @getstrata/core/security/tokenExpiry --external @getstrata/core/security/totp --external @getstrata/core/storage/storage --external @getstrata/core/tenant/tenancyConfig --external @getstrata/core/tenant/tenantContext --external @getstrata/core/tenant/tenantDatabaseScope --external @getstrata/core/tenant/databaseTenantContext --external @getstrata/core/tenant/tenantMiddleware --external @getstrata/core/tenant/enableTenantRls --external @getstrata/core/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
|
|
927
932
|
"build:shims": "bun ../../scripts/write-core-shared-shims.ts"
|
|
928
933
|
},
|
|
929
934
|
"publishConfig": {
|