@getstrata/core 0.5.67 → 0.5.69
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 +9 -0
- package/README.md +1 -1
- package/dist/core/auth/membershipService.d.ts +1 -0
- package/dist/core/contracts/membership.d.ts +1 -0
- package/dist/core/http/corsMiddleware.d.ts +8 -1
- package/dist/{config/queue.d.ts → core/queue/queueConfig.d.ts} +2 -1
- package/dist/entries/auth/membershipMiddleware.js +3 -0
- package/dist/entries/auth/membershipScope.js +3 -0
- package/dist/entries/auth/membershipService.js +6 -0
- package/dist/entries/http/corsMiddleware.js +20 -18
- package/dist/entries/http/parseMultipartUpload.js +1 -1
- package/dist/entries/http/requireAbilityMiddleware.js +4 -1
- package/dist/entries/http/response.js +4 -1
- package/dist/entries/http/webErrorResponse.js +18 -15
- package/dist/entries/queue/createAppQueue.js +20 -18
- package/dist/entries/queue/jobRunner.js +23 -21
- package/dist/entries/queue/publicQueue.js +20 -18
- package/dist/entries/queue/queueMetrics.js +23 -21
- package/dist/entries/queue/redisQueue.js +20 -18
- package/dist/entries/runtime/frontendMode.js +23 -0
- package/dist/entries/security/publicReads.js +1 -22
- package/dist/index.js +47 -47
- package/package.json +7 -2
- package/dist/bootstrap/config.d.ts +0 -15
- package/dist/config/cors.d.ts +0 -9
- package/dist/config/features.d.ts +0 -18
- /package/dist/{config → core/http}/uploads.d.ts +0 -0
- /package/dist/{config/frontend.d.ts → core/runtime/frontendMode.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @getstrata/core changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.69
|
|
4
|
+
|
|
5
|
+
- `MembershipLookup.updateMemberRole(organizationId, userId, role)` is required. The uninitialized lookup throws until `configureMembershipLookup()` is called. `MembershipService.updateMemberRole` delegates to the adapter.
|
|
6
|
+
|
|
7
|
+
## 0.5.68
|
|
8
|
+
|
|
9
|
+
- Published core no longer imports WorkHub `src/config`. Frontend mode, queue retries, CORS, and upload limits read env (`FRONTEND_MODE`, `QUEUE_*`, `CORS_ALLOWED_ORIGINS`, `MAX_UPLOAD_BYTES`).
|
|
10
|
+
- `@getstrata/core/runtime/frontendMode` exports `readFrontendMode` / `isViewsEnabled` / `isSpaEnabled`.
|
|
11
|
+
|
|
3
12
|
## 0.5.67
|
|
4
13
|
|
|
5
14
|
- OpenAPI title, server URLs, and generated SDK class name come from `APP_NAME` / `APP_URL` / `API_PREFIX` / `APP_SDK_CLASS` instead of importing WorkHub `src/config/app`.
|
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ import type { Migration } from "@getstrata/core/database/migrations/types";
|
|
|
82
82
|
Package name: **`@getstrata/core`** (npm org [`@getstrata`](https://www.npmjs.com/org/getstrata)).
|
|
83
83
|
|
|
84
84
|
1. Add `NPM_TOKEN` to GitHub repository secrets.
|
|
85
|
-
2. Tag a release: `git tag v0.5.
|
|
85
|
+
2. Tag a release: `git tag v0.5.70 && git push origin v0.5.70`
|
|
86
86
|
3. [Release workflow](../../.github/workflows/release.yml) builds and runs `npm publish --access public`.
|
|
87
87
|
|
|
88
88
|
Previously published as `@eyk-workhub/framework@0.1.0`, deprecated in favor of this package.
|
|
@@ -16,6 +16,7 @@ declare class MembershipService {
|
|
|
16
16
|
role?: OrganizationMemberRole;
|
|
17
17
|
}): Promise<import("../contracts/membership").MembershipRecord>;
|
|
18
18
|
removeMember(organizationId: number, userId: number): Promise<unknown>;
|
|
19
|
+
updateMemberRole(organizationId: number, userId: number, role: OrganizationMemberRole): Promise<import("../contracts/membership").MembershipRecord>;
|
|
19
20
|
}
|
|
20
21
|
export type { MembershipRepositoryLike };
|
|
21
22
|
export default MembershipService;
|
|
@@ -16,5 +16,6 @@ interface MembershipLookup {
|
|
|
16
16
|
role?: OrganizationMemberRole;
|
|
17
17
|
}): Promise<MembershipRecord>;
|
|
18
18
|
removeMember(organizationId: number, userId: number): Promise<unknown>;
|
|
19
|
+
updateMemberRole(organizationId: number, userId: number, role: OrganizationMemberRole): Promise<MembershipRecord>;
|
|
19
20
|
}
|
|
20
21
|
export type { MembershipLookup, MembershipRecord, OrganizationMemberRole };
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
import type { Middleware } from "./middleware";
|
|
2
|
+
interface CorsConfig {
|
|
3
|
+
allowedOrigins: string[];
|
|
4
|
+
allowedMethods: string[];
|
|
5
|
+
allowedHeaders: string[];
|
|
6
|
+
maxAgeSeconds: number;
|
|
7
|
+
}
|
|
8
|
+
declare function resolveCorsConfig(): CorsConfig;
|
|
2
9
|
declare function createCorsMiddleware(): Middleware;
|
|
3
|
-
export { createCorsMiddleware };
|
|
10
|
+
export { createCorsMiddleware, resolveCorsConfig };
|
|
@@ -3,6 +3,7 @@ interface QueueConfig {
|
|
|
3
3
|
maxAttempts: number;
|
|
4
4
|
backoffMs: number;
|
|
5
5
|
}
|
|
6
|
+
declare function resolveQueueConfig(): QueueConfig;
|
|
6
7
|
declare const queueConfig: QueueConfig;
|
|
7
8
|
export type { QueueConfig };
|
|
8
|
-
export { queueConfig };
|
|
9
|
+
export { queueConfig, resolveQueueConfig };
|
|
@@ -69,6 +69,9 @@ var uninitializedMembershipLookup = {
|
|
|
69
69
|
},
|
|
70
70
|
async removeMember() {
|
|
71
71
|
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
72
|
+
},
|
|
73
|
+
async updateMemberRole() {
|
|
74
|
+
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
72
75
|
}
|
|
73
76
|
};
|
|
74
77
|
var membershipRepository = uninitializedMembershipLookup;
|
|
@@ -73,6 +73,9 @@ var uninitializedMembershipLookup = {
|
|
|
73
73
|
},
|
|
74
74
|
async removeMember() {
|
|
75
75
|
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
76
|
+
},
|
|
77
|
+
async updateMemberRole() {
|
|
78
|
+
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
76
79
|
}
|
|
77
80
|
};
|
|
78
81
|
var membershipRepository = uninitializedMembershipLookup;
|
|
@@ -72,6 +72,9 @@ var uninitializedMembershipLookup = {
|
|
|
72
72
|
},
|
|
73
73
|
async removeMember() {
|
|
74
74
|
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
75
|
+
},
|
|
76
|
+
async updateMemberRole() {
|
|
77
|
+
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
75
78
|
}
|
|
76
79
|
};
|
|
77
80
|
var membershipRepository = uninitializedMembershipLookup;
|
|
@@ -157,6 +160,9 @@ class MembershipService {
|
|
|
157
160
|
removeMember(organizationId, userId) {
|
|
158
161
|
return this.members.removeMember(organizationId, userId);
|
|
159
162
|
}
|
|
163
|
+
updateMemberRole(organizationId, userId, role) {
|
|
164
|
+
return this.members.updateMemberRole(organizationId, userId, role);
|
|
165
|
+
}
|
|
160
166
|
}
|
|
161
167
|
var membershipService_default = MembershipService;
|
|
162
168
|
export {
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// ../../src/config/cors.ts
|
|
3
|
-
var corsConfig = {
|
|
4
|
-
allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
|
|
5
|
-
allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
|
|
6
|
-
allowedHeaders: [
|
|
7
|
-
"Authorization",
|
|
8
|
-
"Content-Type",
|
|
9
|
-
"X-Request-Id",
|
|
10
|
-
"X-Tenant-Id",
|
|
11
|
-
"X-Authenticated-User-Id",
|
|
12
|
-
"X-Authenticated-User-Role",
|
|
13
|
-
"If-Match",
|
|
14
|
-
"If-None-Match"
|
|
15
|
-
],
|
|
16
|
-
maxAgeSeconds: 86400
|
|
17
|
-
};
|
|
18
|
-
|
|
19
2
|
// ../../src/core/http/corsMiddleware.ts
|
|
3
|
+
function resolveCorsConfig() {
|
|
4
|
+
return {
|
|
5
|
+
allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
|
|
6
|
+
allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
|
|
7
|
+
allowedHeaders: [
|
|
8
|
+
"Authorization",
|
|
9
|
+
"Content-Type",
|
|
10
|
+
"X-Request-Id",
|
|
11
|
+
"X-Tenant-Id",
|
|
12
|
+
"X-Authenticated-User-Id",
|
|
13
|
+
"X-Authenticated-User-Role",
|
|
14
|
+
"If-Match",
|
|
15
|
+
"If-None-Match"
|
|
16
|
+
],
|
|
17
|
+
maxAgeSeconds: 86400
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
20
|
function createCorsMiddleware() {
|
|
21
21
|
return async (request, next) => {
|
|
22
22
|
if (request.method === "OPTIONS") {
|
|
@@ -40,6 +40,7 @@ function createCorsMiddleware() {
|
|
|
40
40
|
function buildCorsHeaders(request) {
|
|
41
41
|
const headers = new Headers;
|
|
42
42
|
const origin = request.headers.get("origin");
|
|
43
|
+
const corsConfig = resolveCorsConfig();
|
|
43
44
|
const allowedOrigins = corsConfig.allowedOrigins;
|
|
44
45
|
const allowOrigin = allowedOrigins.includes("*") || origin && allowedOrigins.includes(origin) ? origin ?? "*" : allowedOrigins[0] ?? "*";
|
|
45
46
|
headers.set("Access-Control-Allow-Origin", allowOrigin);
|
|
@@ -50,5 +51,6 @@ function buildCorsHeaders(request) {
|
|
|
50
51
|
return headers;
|
|
51
52
|
}
|
|
52
53
|
export {
|
|
53
|
-
createCorsMiddleware
|
|
54
|
+
createCorsMiddleware,
|
|
55
|
+
resolveCorsConfig
|
|
54
56
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// ../../src/core/http/parseMultipartUpload.ts
|
|
3
3
|
import { BadRequestError, PayloadTooLargeError } from "@getstrata/core/errors/http";
|
|
4
4
|
|
|
5
|
-
// ../../src/
|
|
5
|
+
// ../../src/core/http/uploads.ts
|
|
6
6
|
var DEFAULT_MAX_UPLOAD_BYTES = 5 * 1024 * 1024;
|
|
7
7
|
var ALLOWED_UPLOAD_MIME_TYPES = new Set([
|
|
8
8
|
"application/pdf",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { currentAuthUser } from "@getstrata/core/auth/authContext";
|
|
4
4
|
import { ForbiddenError } from "@getstrata/core/errors/http";
|
|
5
5
|
|
|
6
|
-
// ../../src/
|
|
6
|
+
// ../../src/core/runtime/frontendMode.ts
|
|
7
7
|
function readFrontendMode() {
|
|
8
8
|
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
9
9
|
if (mode === "server-htmx") {
|
|
@@ -17,6 +17,9 @@ function readFrontendMode() {
|
|
|
17
17
|
function isViewsEnabled() {
|
|
18
18
|
return readFrontendMode() === "server-htmx";
|
|
19
19
|
}
|
|
20
|
+
function isSpaEnabled() {
|
|
21
|
+
return readFrontendMode() === "spa-react";
|
|
22
|
+
}
|
|
20
23
|
|
|
21
24
|
// ../../src/core/http/contentNegotiation.ts
|
|
22
25
|
function requestPrefersJson(request) {
|
|
@@ -68,7 +68,7 @@ async function withDatabaseErrorHandling(operation) {
|
|
|
68
68
|
// ../../src/core/http/webErrorResponse.ts
|
|
69
69
|
import { HttpError as HttpError2, UnauthorizedError, ValidationError } from "@getstrata/core/errors/http";
|
|
70
70
|
|
|
71
|
-
// ../../src/
|
|
71
|
+
// ../../src/core/runtime/frontendMode.ts
|
|
72
72
|
function readFrontendMode() {
|
|
73
73
|
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
74
74
|
if (mode === "server-htmx") {
|
|
@@ -82,6 +82,9 @@ function readFrontendMode() {
|
|
|
82
82
|
function isViewsEnabled() {
|
|
83
83
|
return readFrontendMode() === "server-htmx";
|
|
84
84
|
}
|
|
85
|
+
function isSpaEnabled() {
|
|
86
|
+
return readFrontendMode() === "spa-react";
|
|
87
|
+
}
|
|
85
88
|
|
|
86
89
|
// ../../src/core/view/webErrorView.ts
|
|
87
90
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
@@ -2,21 +2,6 @@
|
|
|
2
2
|
// ../../src/core/http/webErrorResponse.ts
|
|
3
3
|
import { HttpError as HttpError2, UnauthorizedError, ValidationError } from "@getstrata/core/errors/http";
|
|
4
4
|
|
|
5
|
-
// ../../src/config/frontend.ts
|
|
6
|
-
function readFrontendMode() {
|
|
7
|
-
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
8
|
-
if (mode === "server-htmx") {
|
|
9
|
-
return "server-htmx";
|
|
10
|
-
}
|
|
11
|
-
if (mode === "spa-react") {
|
|
12
|
-
return "spa-react";
|
|
13
|
-
}
|
|
14
|
-
return "api";
|
|
15
|
-
}
|
|
16
|
-
function isViewsEnabled() {
|
|
17
|
-
return readFrontendMode() === "server-htmx";
|
|
18
|
-
}
|
|
19
|
-
|
|
20
5
|
// ../../src/core/database/errors.ts
|
|
21
6
|
import {
|
|
22
7
|
BadRequestError,
|
|
@@ -80,6 +65,24 @@ async function withDatabaseErrorHandling(operation) {
|
|
|
80
65
|
}
|
|
81
66
|
}
|
|
82
67
|
|
|
68
|
+
// ../../src/core/runtime/frontendMode.ts
|
|
69
|
+
function readFrontendMode() {
|
|
70
|
+
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
71
|
+
if (mode === "server-htmx") {
|
|
72
|
+
return "server-htmx";
|
|
73
|
+
}
|
|
74
|
+
if (mode === "spa-react") {
|
|
75
|
+
return "spa-react";
|
|
76
|
+
}
|
|
77
|
+
return "api";
|
|
78
|
+
}
|
|
79
|
+
function isViewsEnabled() {
|
|
80
|
+
return readFrontendMode() === "server-htmx";
|
|
81
|
+
}
|
|
82
|
+
function isSpaEnabled() {
|
|
83
|
+
return readFrontendMode() === "spa-react";
|
|
84
|
+
}
|
|
85
|
+
|
|
83
86
|
// ../../src/core/view/webErrorView.ts
|
|
84
87
|
import { currentRequestMeta } from "@getstrata/core/http/requestMetaContext";
|
|
85
88
|
|
|
@@ -100,25 +100,27 @@ function readSharedJobRegistry() {
|
|
|
100
100
|
}
|
|
101
101
|
var jobRegistry = readSharedJobRegistry();
|
|
102
102
|
|
|
103
|
-
// ../../src/
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
} from "@getstrata/core/contracts/serviceTokens";
|
|
115
|
-
var DEFAULT_QUEUE_DRIVER = "sync";
|
|
116
|
-
|
|
117
|
-
// ../../src/config/queue.ts
|
|
103
|
+
// ../../src/core/queue/queueConfig.ts
|
|
104
|
+
function resolveQueueConfig() {
|
|
105
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
106
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
107
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
108
|
+
return {
|
|
109
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
110
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
111
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
112
|
+
};
|
|
113
|
+
}
|
|
118
114
|
var queueConfig = {
|
|
119
|
-
driver
|
|
120
|
-
|
|
121
|
-
|
|
115
|
+
get driver() {
|
|
116
|
+
return resolveQueueConfig().driver;
|
|
117
|
+
},
|
|
118
|
+
get maxAttempts() {
|
|
119
|
+
return resolveQueueConfig().maxAttempts;
|
|
120
|
+
},
|
|
121
|
+
get backoffMs() {
|
|
122
|
+
return resolveQueueConfig().backoffMs;
|
|
123
|
+
}
|
|
122
124
|
};
|
|
123
125
|
|
|
124
126
|
// ../../src/core/queue/jobRunner.ts
|
|
@@ -1,25 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// ../../src/bootstrap/config.ts
|
|
3
|
-
import {
|
|
4
|
-
CORE_ABILITY_CHECKER_TOKEN,
|
|
5
|
-
CORE_AUTH_TOKEN,
|
|
6
|
-
CORE_AUTH_USER_DIRECTORY_TOKEN,
|
|
7
|
-
CORE_CACHE_TOKEN,
|
|
8
|
-
CORE_CONFIG_TOKEN,
|
|
9
|
-
CORE_EVENT_BUS_TOKEN,
|
|
10
|
-
CORE_POLICY_GATE_TOKEN,
|
|
11
|
-
CORE_QUEUE_TOKEN,
|
|
12
|
-
CORE_TOKEN_SERVICE_TOKEN
|
|
13
|
-
} from "@getstrata/core/contracts/serviceTokens";
|
|
14
|
-
var DEFAULT_QUEUE_DRIVER = "sync";
|
|
15
|
-
|
|
16
|
-
// ../../src/config/queue.ts
|
|
17
|
-
var queueConfig = {
|
|
18
|
-
driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
|
|
19
|
-
maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
|
|
20
|
-
backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
|
|
21
|
-
};
|
|
22
|
-
|
|
23
2
|
// ../../src/core/queue/jobRegistry.ts
|
|
24
3
|
class JobRegistry {
|
|
25
4
|
factories = new Map;
|
|
@@ -57,6 +36,29 @@ function readSharedJobRegistry() {
|
|
|
57
36
|
}
|
|
58
37
|
var jobRegistry = readSharedJobRegistry();
|
|
59
38
|
|
|
39
|
+
// ../../src/core/queue/queueConfig.ts
|
|
40
|
+
function resolveQueueConfig() {
|
|
41
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
42
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
43
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
44
|
+
return {
|
|
45
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
46
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
47
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
var queueConfig = {
|
|
51
|
+
get driver() {
|
|
52
|
+
return resolveQueueConfig().driver;
|
|
53
|
+
},
|
|
54
|
+
get maxAttempts() {
|
|
55
|
+
return resolveQueueConfig().maxAttempts;
|
|
56
|
+
},
|
|
57
|
+
get backoffMs() {
|
|
58
|
+
return resolveQueueConfig().backoffMs;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
60
62
|
// ../../src/core/queue/jobRunner.ts
|
|
61
63
|
async function runQueueJob(envelope, failedJobs) {
|
|
62
64
|
const job = jobRegistry.create(envelope.name);
|
|
@@ -100,25 +100,27 @@ function readSharedJobRegistry() {
|
|
|
100
100
|
}
|
|
101
101
|
var jobRegistry = readSharedJobRegistry();
|
|
102
102
|
|
|
103
|
-
// ../../src/
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
} from "@getstrata/core/contracts/serviceTokens";
|
|
115
|
-
var DEFAULT_QUEUE_DRIVER = "sync";
|
|
116
|
-
|
|
117
|
-
// ../../src/config/queue.ts
|
|
103
|
+
// ../../src/core/queue/queueConfig.ts
|
|
104
|
+
function resolveQueueConfig() {
|
|
105
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
106
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
107
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
108
|
+
return {
|
|
109
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
110
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
111
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
112
|
+
};
|
|
113
|
+
}
|
|
118
114
|
var queueConfig = {
|
|
119
|
-
driver
|
|
120
|
-
|
|
121
|
-
|
|
115
|
+
get driver() {
|
|
116
|
+
return resolveQueueConfig().driver;
|
|
117
|
+
},
|
|
118
|
+
get maxAttempts() {
|
|
119
|
+
return resolveQueueConfig().maxAttempts;
|
|
120
|
+
},
|
|
121
|
+
get backoffMs() {
|
|
122
|
+
return resolveQueueConfig().backoffMs;
|
|
123
|
+
}
|
|
122
124
|
};
|
|
123
125
|
|
|
124
126
|
// ../../src/core/queue/jobRunner.ts
|
|
@@ -2,27 +2,6 @@
|
|
|
2
2
|
// ../../src/core/queue/queueMetrics.ts
|
|
3
3
|
var {RedisClient: RedisClient2 } = globalThis.Bun;
|
|
4
4
|
|
|
5
|
-
// ../../src/bootstrap/config.ts
|
|
6
|
-
import {
|
|
7
|
-
CORE_ABILITY_CHECKER_TOKEN,
|
|
8
|
-
CORE_AUTH_TOKEN,
|
|
9
|
-
CORE_AUTH_USER_DIRECTORY_TOKEN,
|
|
10
|
-
CORE_CACHE_TOKEN,
|
|
11
|
-
CORE_CONFIG_TOKEN,
|
|
12
|
-
CORE_EVENT_BUS_TOKEN,
|
|
13
|
-
CORE_POLICY_GATE_TOKEN,
|
|
14
|
-
CORE_QUEUE_TOKEN,
|
|
15
|
-
CORE_TOKEN_SERVICE_TOKEN
|
|
16
|
-
} from "@getstrata/core/contracts/serviceTokens";
|
|
17
|
-
var DEFAULT_QUEUE_DRIVER = "sync";
|
|
18
|
-
|
|
19
|
-
// ../../src/config/queue.ts
|
|
20
|
-
var queueConfig = {
|
|
21
|
-
driver: process.env.QUEUE_DRIVER === "redis" || process.env.QUEUE_DRIVER === "async" || process.env.QUEUE_DRIVER === "sync" ? process.env.QUEUE_DRIVER : DEFAULT_QUEUE_DRIVER,
|
|
22
|
-
maxAttempts: Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3"),
|
|
23
|
-
backoffMs: Number(process.env.QUEUE_BACKOFF_MS ?? "1000")
|
|
24
|
-
};
|
|
25
|
-
|
|
26
5
|
// ../../src/core/queue/failedJobRepository.ts
|
|
27
6
|
import { BaseRepository } from "@getstrata/core/database/baseRepository";
|
|
28
7
|
|
|
@@ -124,6 +103,29 @@ function readSharedJobRegistry() {
|
|
|
124
103
|
}
|
|
125
104
|
var jobRegistry = readSharedJobRegistry();
|
|
126
105
|
|
|
106
|
+
// ../../src/core/queue/queueConfig.ts
|
|
107
|
+
function resolveQueueConfig() {
|
|
108
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
109
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
110
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
111
|
+
return {
|
|
112
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
113
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
114
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
var queueConfig = {
|
|
118
|
+
get driver() {
|
|
119
|
+
return resolveQueueConfig().driver;
|
|
120
|
+
},
|
|
121
|
+
get maxAttempts() {
|
|
122
|
+
return resolveQueueConfig().maxAttempts;
|
|
123
|
+
},
|
|
124
|
+
get backoffMs() {
|
|
125
|
+
return resolveQueueConfig().backoffMs;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
127
129
|
// ../../src/core/queue/jobRunner.ts
|
|
128
130
|
async function runQueueJob(envelope, failedJobs) {
|
|
129
131
|
const job = jobRegistry.create(envelope.name);
|
|
@@ -87,25 +87,27 @@ function readSharedJobRegistry() {
|
|
|
87
87
|
}
|
|
88
88
|
var jobRegistry = readSharedJobRegistry();
|
|
89
89
|
|
|
90
|
-
// ../../src/
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
} from "@getstrata/core/contracts/serviceTokens";
|
|
102
|
-
var DEFAULT_QUEUE_DRIVER = "sync";
|
|
103
|
-
|
|
104
|
-
// ../../src/config/queue.ts
|
|
90
|
+
// ../../src/core/queue/queueConfig.ts
|
|
91
|
+
function resolveQueueConfig() {
|
|
92
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
93
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
94
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
95
|
+
return {
|
|
96
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
97
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
98
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
99
|
+
};
|
|
100
|
+
}
|
|
105
101
|
var queueConfig = {
|
|
106
|
-
driver
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
get driver() {
|
|
103
|
+
return resolveQueueConfig().driver;
|
|
104
|
+
},
|
|
105
|
+
get maxAttempts() {
|
|
106
|
+
return resolveQueueConfig().maxAttempts;
|
|
107
|
+
},
|
|
108
|
+
get backoffMs() {
|
|
109
|
+
return resolveQueueConfig().backoffMs;
|
|
110
|
+
}
|
|
109
111
|
};
|
|
110
112
|
|
|
111
113
|
// ../../src/core/queue/jobRunner.ts
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// ../../src/core/runtime/frontendMode.ts
|
|
3
|
+
function readFrontendMode() {
|
|
4
|
+
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
5
|
+
if (mode === "server-htmx") {
|
|
6
|
+
return "server-htmx";
|
|
7
|
+
}
|
|
8
|
+
if (mode === "spa-react") {
|
|
9
|
+
return "spa-react";
|
|
10
|
+
}
|
|
11
|
+
return "api";
|
|
12
|
+
}
|
|
13
|
+
function isViewsEnabled() {
|
|
14
|
+
return readFrontendMode() === "server-htmx";
|
|
15
|
+
}
|
|
16
|
+
function isSpaEnabled() {
|
|
17
|
+
return readFrontendMode() === "spa-react";
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
isSpaEnabled,
|
|
21
|
+
isViewsEnabled,
|
|
22
|
+
readFrontendMode
|
|
23
|
+
};
|
|
@@ -1,28 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
// ../../src/config/features.ts
|
|
3
|
-
function readFeatureFlags() {
|
|
4
|
-
return {
|
|
5
|
-
webhooks: (process.env.FEATURE_WEBHOOKS ?? "true") !== "false",
|
|
6
|
-
fullTextSearch: (process.env.FEATURE_SEARCH ?? "true") !== "false",
|
|
7
|
-
auditLog: (process.env.FEATURE_AUDIT_LOG ?? "true") !== "false",
|
|
8
|
-
oauthLogin: (process.env.FEATURE_OAUTH ?? "true") !== "false",
|
|
9
|
-
samlLogin: (process.env.FEATURE_SAML ?? "false") === "true",
|
|
10
|
-
scim: (process.env.FEATURE_SCIM ?? "true") !== "false",
|
|
11
|
-
billing: (process.env.FEATURE_BILLING ?? "true") !== "false",
|
|
12
|
-
siemExport: (process.env.FEATURE_SIEM_EXPORT ?? "true") !== "false",
|
|
13
|
-
publicReads: (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false",
|
|
14
|
-
emailVerification: (process.env.FEATURE_EMAIL_VERIFICATION ?? "false") === "true",
|
|
15
|
-
mfa: (process.env.FEATURE_MFA ?? "false") === "true"
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
var featureFlags = readFeatureFlags();
|
|
19
|
-
function isFeatureEnabled(feature) {
|
|
20
|
-
return readFeatureFlags()[feature];
|
|
21
|
-
}
|
|
22
|
-
|
|
23
2
|
// ../../src/core/security/publicReads.ts
|
|
24
3
|
function isPublicReadsEnabled() {
|
|
25
|
-
return
|
|
4
|
+
return (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false";
|
|
26
5
|
}
|
|
27
6
|
function guestCanViewResource() {
|
|
28
7
|
return isPublicReadsEnabled();
|
package/dist/index.js
CHANGED
|
@@ -364,6 +364,9 @@ var uninitializedMembershipLookup = {
|
|
|
364
364
|
},
|
|
365
365
|
async removeMember() {
|
|
366
366
|
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
367
|
+
},
|
|
368
|
+
async updateMemberRole() {
|
|
369
|
+
throw new Error("configureMembershipLookup() must be called before mutating memberships.");
|
|
367
370
|
}
|
|
368
371
|
};
|
|
369
372
|
var membershipRepository = uninitializedMembershipLookup;
|
|
@@ -688,6 +691,9 @@ class MembershipService {
|
|
|
688
691
|
removeMember(organizationId, userId) {
|
|
689
692
|
return this.members.removeMember(organizationId, userId);
|
|
690
693
|
}
|
|
694
|
+
updateMemberRole(organizationId, userId, role) {
|
|
695
|
+
return this.members.updateMemberRole(organizationId, userId, role);
|
|
696
|
+
}
|
|
691
697
|
}
|
|
692
698
|
var membershipService_default = MembershipService;
|
|
693
699
|
// ../../src/core/auth/policy.ts
|
|
@@ -4485,24 +4491,24 @@ function readRequestCookie(request, name) {
|
|
|
4485
4491
|
function readBunRequestCookie(request, name) {
|
|
4486
4492
|
return request.cookies.get(name) ?? readRequestCookie(request, name);
|
|
4487
4493
|
}
|
|
4488
|
-
// ../../src/config/cors.ts
|
|
4489
|
-
var corsConfig = {
|
|
4490
|
-
allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
|
|
4491
|
-
allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
|
|
4492
|
-
allowedHeaders: [
|
|
4493
|
-
"Authorization",
|
|
4494
|
-
"Content-Type",
|
|
4495
|
-
"X-Request-Id",
|
|
4496
|
-
"X-Tenant-Id",
|
|
4497
|
-
"X-Authenticated-User-Id",
|
|
4498
|
-
"X-Authenticated-User-Role",
|
|
4499
|
-
"If-Match",
|
|
4500
|
-
"If-None-Match"
|
|
4501
|
-
],
|
|
4502
|
-
maxAgeSeconds: 86400
|
|
4503
|
-
};
|
|
4504
|
-
|
|
4505
4494
|
// ../../src/core/http/corsMiddleware.ts
|
|
4495
|
+
function resolveCorsConfig() {
|
|
4496
|
+
return {
|
|
4497
|
+
allowedOrigins: (process.env.CORS_ALLOWED_ORIGINS ?? "*").split(",").map((origin) => origin.trim()).filter(Boolean),
|
|
4498
|
+
allowedMethods: ["GET", "POST", "PATCH", "PUT", "DELETE", "OPTIONS"],
|
|
4499
|
+
allowedHeaders: [
|
|
4500
|
+
"Authorization",
|
|
4501
|
+
"Content-Type",
|
|
4502
|
+
"X-Request-Id",
|
|
4503
|
+
"X-Tenant-Id",
|
|
4504
|
+
"X-Authenticated-User-Id",
|
|
4505
|
+
"X-Authenticated-User-Role",
|
|
4506
|
+
"If-Match",
|
|
4507
|
+
"If-None-Match"
|
|
4508
|
+
],
|
|
4509
|
+
maxAgeSeconds: 86400
|
|
4510
|
+
};
|
|
4511
|
+
}
|
|
4506
4512
|
function createCorsMiddleware() {
|
|
4507
4513
|
return async (request, next) => {
|
|
4508
4514
|
if (request.method === "OPTIONS") {
|
|
@@ -4526,6 +4532,7 @@ function createCorsMiddleware() {
|
|
|
4526
4532
|
function buildCorsHeaders(request) {
|
|
4527
4533
|
const headers = new Headers;
|
|
4528
4534
|
const origin = request.headers.get("origin");
|
|
4535
|
+
const corsConfig = resolveCorsConfig();
|
|
4529
4536
|
const allowedOrigins = corsConfig.allowedOrigins;
|
|
4530
4537
|
const allowOrigin = allowedOrigins.includes("*") || origin && allowedOrigins.includes(origin) ? origin ?? "*" : allowedOrigins[0] ?? "*";
|
|
4531
4538
|
headers.set("Access-Control-Allow-Origin", allowOrigin);
|
|
@@ -4950,7 +4957,7 @@ function parsePaginationQuery(request) {
|
|
|
4950
4957
|
function paginatedResponse(data, meta, init = {}) {
|
|
4951
4958
|
return Response.json({ data, meta }, init);
|
|
4952
4959
|
}
|
|
4953
|
-
// ../../src/
|
|
4960
|
+
// ../../src/core/http/uploads.ts
|
|
4954
4961
|
var DEFAULT_MAX_UPLOAD_BYTES = 5 * 1024 * 1024;
|
|
4955
4962
|
var ALLOWED_UPLOAD_MIME_TYPES = new Set([
|
|
4956
4963
|
"application/pdf",
|
|
@@ -5046,7 +5053,7 @@ function toPaginatedResourceCollection(items, meta, transformer) {
|
|
|
5046
5053
|
meta
|
|
5047
5054
|
};
|
|
5048
5055
|
}
|
|
5049
|
-
// ../../src/
|
|
5056
|
+
// ../../src/core/runtime/frontendMode.ts
|
|
5050
5057
|
function readFrontendMode() {
|
|
5051
5058
|
const mode = (process.env.FRONTEND_MODE ?? "api").trim();
|
|
5052
5059
|
if (mode === "server-htmx") {
|
|
@@ -6243,14 +6250,28 @@ function readSharedJobRegistry() {
|
|
|
6243
6250
|
return registry;
|
|
6244
6251
|
}
|
|
6245
6252
|
var jobRegistry = readSharedJobRegistry();
|
|
6246
|
-
// ../../src/bootstrap/config.ts
|
|
6247
|
-
var DEFAULT_QUEUE_DRIVER = "sync";
|
|
6248
6253
|
|
|
6249
|
-
// ../../src/
|
|
6254
|
+
// ../../src/core/queue/queueConfig.ts
|
|
6255
|
+
function resolveQueueConfig() {
|
|
6256
|
+
const driver = process.env.QUEUE_DRIVER;
|
|
6257
|
+
const maxAttempts = Number(process.env.QUEUE_MAX_ATTEMPTS ?? "3");
|
|
6258
|
+
const backoffMs = Number(process.env.QUEUE_BACKOFF_MS ?? "1000");
|
|
6259
|
+
return {
|
|
6260
|
+
driver: driver === "redis" || driver === "async" || driver === "sync" ? driver : "sync",
|
|
6261
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0 ? maxAttempts : 3,
|
|
6262
|
+
backoffMs: Number.isFinite(backoffMs) && backoffMs >= 0 ? backoffMs : 1000
|
|
6263
|
+
};
|
|
6264
|
+
}
|
|
6250
6265
|
var queueConfig = {
|
|
6251
|
-
driver
|
|
6252
|
-
|
|
6253
|
-
|
|
6266
|
+
get driver() {
|
|
6267
|
+
return resolveQueueConfig().driver;
|
|
6268
|
+
},
|
|
6269
|
+
get maxAttempts() {
|
|
6270
|
+
return resolveQueueConfig().maxAttempts;
|
|
6271
|
+
},
|
|
6272
|
+
get backoffMs() {
|
|
6273
|
+
return resolveQueueConfig().backoffMs;
|
|
6274
|
+
}
|
|
6254
6275
|
};
|
|
6255
6276
|
|
|
6256
6277
|
// ../../src/core/queue/jobRunner.ts
|
|
@@ -6549,30 +6570,9 @@ async function runDueScheduledTasks(schedule = appSchedule, now = new Date) {
|
|
|
6549
6570
|
}
|
|
6550
6571
|
return due.length;
|
|
6551
6572
|
}
|
|
6552
|
-
// ../../src/config/features.ts
|
|
6553
|
-
function readFeatureFlags() {
|
|
6554
|
-
return {
|
|
6555
|
-
webhooks: (process.env.FEATURE_WEBHOOKS ?? "true") !== "false",
|
|
6556
|
-
fullTextSearch: (process.env.FEATURE_SEARCH ?? "true") !== "false",
|
|
6557
|
-
auditLog: (process.env.FEATURE_AUDIT_LOG ?? "true") !== "false",
|
|
6558
|
-
oauthLogin: (process.env.FEATURE_OAUTH ?? "true") !== "false",
|
|
6559
|
-
samlLogin: (process.env.FEATURE_SAML ?? "false") === "true",
|
|
6560
|
-
scim: (process.env.FEATURE_SCIM ?? "true") !== "false",
|
|
6561
|
-
billing: (process.env.FEATURE_BILLING ?? "true") !== "false",
|
|
6562
|
-
siemExport: (process.env.FEATURE_SIEM_EXPORT ?? "true") !== "false",
|
|
6563
|
-
publicReads: (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false",
|
|
6564
|
-
emailVerification: (process.env.FEATURE_EMAIL_VERIFICATION ?? "false") === "true",
|
|
6565
|
-
mfa: (process.env.FEATURE_MFA ?? "false") === "true"
|
|
6566
|
-
};
|
|
6567
|
-
}
|
|
6568
|
-
var featureFlags = readFeatureFlags();
|
|
6569
|
-
function isFeatureEnabled(feature) {
|
|
6570
|
-
return readFeatureFlags()[feature];
|
|
6571
|
-
}
|
|
6572
|
-
|
|
6573
6573
|
// ../../src/core/security/publicReads.ts
|
|
6574
6574
|
function isPublicReadsEnabled() {
|
|
6575
|
-
return
|
|
6575
|
+
return (process.env.FEATURE_PUBLIC_READS ?? "true") !== "false";
|
|
6576
6576
|
}
|
|
6577
6577
|
function guestCanViewResource() {
|
|
6578
6578
|
return isPublicReadsEnabled();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getstrata/core",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.69",
|
|
4
4
|
"description": "Strata — Laravel-inspired Bun framework public API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -670,6 +670,11 @@
|
|
|
670
670
|
"import": "./dist/entries/runtime/appKeyPrefix.js",
|
|
671
671
|
"default": "./dist/entries/runtime/appKeyPrefix.js"
|
|
672
672
|
},
|
|
673
|
+
"./runtime/frontendMode": {
|
|
674
|
+
"types": "./dist/core/runtime/frontendMode.d.ts",
|
|
675
|
+
"import": "./dist/entries/runtime/frontendMode.js",
|
|
676
|
+
"default": "./dist/entries/runtime/frontendMode.js"
|
|
677
|
+
},
|
|
673
678
|
"./runtime/applicationRegistry": {
|
|
674
679
|
"types": "./dist/core/runtime/applicationRegistry.d.ts",
|
|
675
680
|
"import": "./dist/entries/runtime/applicationRegistry.js",
|
|
@@ -808,7 +813,7 @@
|
|
|
808
813
|
"build:bundle": "bun build index.ts --outdir dist --target bun --external bun --external eta",
|
|
809
814
|
"build:types": "tsc -p tsconfig.types.json",
|
|
810
815
|
"prepublishOnly": "bun run build && bun ../../scripts/prepare-core-package-publish.ts",
|
|
811
|
-
"build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.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/password.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/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/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/loginThrottleMiddleware.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/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/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webErrorResponse.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/validation.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/lifecycle/gracefulShutdown.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/appKeyPrefix.ts entries/runtime/asyncContextStore.ts entries/scheduler/schedule.ts entries/scheduler/osCron.ts entries/security/oauthState.ts entries/security/publicReads.ts entries/security/safeFetch.ts entries/security/safeUrl.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/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/guard --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/password --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/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/defaultConnection --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/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/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/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/dispatchWebhookJob --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/appKeyPrefix --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/safeFetch --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/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
|
|
816
|
+
"build:subpaths": "bun build entries/auth/accessControl.ts entries/auth/abilityChecker.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/password.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/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/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/loginThrottleMiddleware.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/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/scimThrottleMiddleware.ts entries/http/securityHeadersMiddleware.ts entries/http/securedRouteModelBinding.ts entries/http/webErrorResponse.ts entries/http/webFormRequest.ts entries/http/throttleMiddleware.ts entries/http/validation.ts entries/jobs/dispatchWebhookJob.ts entries/jobs/exportAuditLogsJob.ts entries/jobs/invalidateCacheTagsJob.ts entries/lifecycle/gracefulShutdown.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/appKeyPrefix.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/safeFetch.ts entries/security/safeUrl.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/terminal/runShell.ts entries/tracing/tracingMiddleware.ts entries/validation/rules.ts entries/view.ts --outdir dist --root . --target bun --external bun --external eta --external @getstrata/core --external @getstrata/core/auth/accessControl --external @getstrata/core/auth/abilityChecker --external @getstrata/core/auth/authContext --external @getstrata/core/auth/guard --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/password --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/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/defaultConnection --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/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/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/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/dispatchWebhookJob --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/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/safeFetch --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/terminal/runShell --external @getstrata/core/tracing/traceContext --external @getstrata/core/tracing/tracingMiddleware --external @getstrata/core/validation/rules --external @getstrata/core/view",
|
|
812
817
|
"build:shims": "bun ../../scripts/write-core-shared-shims.ts"
|
|
813
818
|
},
|
|
814
819
|
"publishConfig": {
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
declare const APP_PORT_CONFIG_KEY = "app.port";
|
|
2
|
-
declare const CACHE_TTL_MS_CONFIG_KEY = "cache.ttlMs";
|
|
3
|
-
declare const CACHE_MAX_ENTRIES_CONFIG_KEY = "cache.maxEntries";
|
|
4
|
-
declare const CACHE_DRIVER_CONFIG_KEY = "cache.driver";
|
|
5
|
-
declare const REDIS_URL_CONFIG_KEY = "cache.redisUrl";
|
|
6
|
-
declare const DATABASE_URL_CONFIG_KEY = "database.url";
|
|
7
|
-
export { CORE_ABILITY_CHECKER_TOKEN, CORE_AUTH_TOKEN, CORE_AUTH_USER_DIRECTORY_TOKEN, CORE_CACHE_TOKEN, CORE_CONFIG_TOKEN, CORE_EVENT_BUS_TOKEN, CORE_POLICY_GATE_TOKEN, CORE_QUEUE_TOKEN, CORE_TOKEN_SERVICE_TOKEN, } from "@getstrata/core/contracts/serviceTokens";
|
|
8
|
-
declare const AUTH_DEV_HEADERS_CONFIG_KEY = "auth.allowDevHeaders";
|
|
9
|
-
declare const DEFAULT_APP_PORT = 3000;
|
|
10
|
-
declare const DEFAULT_CACHE_TTL_MS = 3600000;
|
|
11
|
-
declare const DEFAULT_CACHE_MAX_ENTRIES = 100;
|
|
12
|
-
declare const DEFAULT_CACHE_DRIVER = "array";
|
|
13
|
-
declare const DEFAULT_API_TOKEN = "";
|
|
14
|
-
declare const DEFAULT_QUEUE_DRIVER = "sync";
|
|
15
|
-
export { APP_PORT_CONFIG_KEY, AUTH_DEV_HEADERS_CONFIG_KEY, CACHE_DRIVER_CONFIG_KEY, CACHE_MAX_ENTRIES_CONFIG_KEY, CACHE_TTL_MS_CONFIG_KEY, DATABASE_URL_CONFIG_KEY, DEFAULT_API_TOKEN, DEFAULT_APP_PORT, DEFAULT_CACHE_DRIVER, DEFAULT_CACHE_MAX_ENTRIES, DEFAULT_CACHE_TTL_MS, DEFAULT_QUEUE_DRIVER, REDIS_URL_CONFIG_KEY, };
|
package/dist/config/cors.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
interface FeatureFlags {
|
|
2
|
-
webhooks: boolean;
|
|
3
|
-
fullTextSearch: boolean;
|
|
4
|
-
auditLog: boolean;
|
|
5
|
-
oauthLogin: boolean;
|
|
6
|
-
samlLogin: boolean;
|
|
7
|
-
scim: boolean;
|
|
8
|
-
billing: boolean;
|
|
9
|
-
siemExport: boolean;
|
|
10
|
-
publicReads: boolean;
|
|
11
|
-
emailVerification: boolean;
|
|
12
|
-
mfa: boolean;
|
|
13
|
-
}
|
|
14
|
-
declare function readFeatureFlags(): FeatureFlags;
|
|
15
|
-
declare const featureFlags: FeatureFlags;
|
|
16
|
-
declare function isFeatureEnabled(feature: keyof FeatureFlags): boolean;
|
|
17
|
-
export type { FeatureFlags };
|
|
18
|
-
export { featureFlags, isFeatureEnabled, readFeatureFlags };
|
|
File without changes
|
|
File without changes
|