@aotter/mantle-cloudflare 0.1.0-alpha.7 → 0.1.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -8
- package/dist/auth/conventionalAuth.d.ts +3 -0
- package/dist/auth/conventionalAuth.d.ts.map +1 -1
- package/dist/auth/conventionalAuth.js +23 -6
- package/dist/auth/conventionalAuth.js.map +1 -1
- package/dist/auth/createAuth.d.ts +30 -13
- package/dist/auth/createAuth.d.ts.map +1 -1
- package/dist/auth/createAuth.js +173 -154
- package/dist/auth/createAuth.js.map +1 -1
- package/dist/bindings/AssetsAssetServer.d.ts +4 -4
- package/dist/bindings/AssetsAssetServer.d.ts.map +1 -1
- package/dist/bindings/AssetsAssetServer.js +2 -2
- package/dist/bindings/D1DatabaseDriver.d.ts +3 -4
- package/dist/bindings/D1DatabaseDriver.d.ts.map +1 -1
- package/dist/bindings/D1DatabaseDriver.js +4 -91
- package/dist/bindings/D1DatabaseDriver.js.map +1 -1
- package/dist/bindings/WorkersQueueHookDispatcher.d.ts +2 -2
- package/dist/bindings/WorkersQueueHookDispatcher.d.ts.map +1 -1
- package/dist/bindings/WorkersQueueHookDispatcher.js +1 -1
- package/dist/bindings/WorkersQueueHookDispatcher.js.map +1 -1
- package/dist/bindings/conventionalBindings.d.ts +2 -3
- package/dist/bindings/conventionalBindings.d.ts.map +1 -1
- package/dist/bindings/conventionalBindings.js +1 -3
- package/dist/bindings/conventionalBindings.js.map +1 -1
- package/dist/handlers/turnstile.d.ts +1 -1
- package/dist/handlers/turnstile.d.ts.map +1 -1
- package/dist/handlers/turnstile.js +3 -1
- package/dist/handlers/turnstile.js.map +1 -1
- package/dist/mount/bootRuntimeOnce.d.ts +15 -8
- package/dist/mount/bootRuntimeOnce.d.ts.map +1 -1
- package/dist/mount/bootRuntimeOnce.js +36 -21
- package/dist/mount/bootRuntimeOnce.js.map +1 -1
- package/dist/mount/cmsConfig.d.ts +17 -9
- package/dist/mount/cmsConfig.d.ts.map +1 -1
- package/dist/mount/index.d.ts +4 -4
- package/dist/mount/index.d.ts.map +1 -1
- package/dist/mount/index.js +3 -3
- package/dist/mount/index.js.map +1 -1
- package/dist/mount/mountAdmin.d.ts +6 -0
- package/dist/mount/mountAdmin.d.ts.map +1 -0
- package/dist/mount/mountAdmin.js +16 -0
- package/dist/mount/mountAdmin.js.map +1 -0
- package/dist/mount/mountMcp.d.ts +7 -10
- package/dist/mount/mountMcp.d.ts.map +1 -1
- package/dist/mount/mountMcp.js +57 -49
- package/dist/mount/mountMcp.js.map +1 -1
- package/dist/mount/mountPublicRoutes.d.ts +4 -4
- package/dist/mount/mountPublicRoutes.d.ts.map +1 -1
- package/dist/mount/mountPublicRoutes.js +31 -24
- package/dist/mount/mountPublicRoutes.js.map +1 -1
- package/dist/mount/mountRuntimeEndpoints.d.ts +7 -0
- package/dist/mount/mountRuntimeEndpoints.d.ts.map +1 -0
- package/dist/mount/mountRuntimeEndpoints.js +49 -0
- package/dist/mount/mountRuntimeEndpoints.js.map +1 -0
- package/dist/mount/resolveCaller.d.ts.map +1 -1
- package/dist/mount/resolveCaller.js +0 -33
- package/dist/mount/resolveCaller.js.map +1 -1
- package/dist/oauth/cachePolicy.d.ts.map +1 -1
- package/dist/oauth/cachePolicy.js +2 -4
- package/dist/oauth/cachePolicy.js.map +1 -1
- package/dist/oauth/consentHtml.d.ts +2 -2
- package/dist/oauth/consentHtml.d.ts.map +1 -1
- package/dist/oauth/consentHtml.js +5 -5
- package/dist/oauth/consentHtml.js.map +1 -1
- package/dist/oauth/index.d.ts +0 -2
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +0 -2
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/mountOAuth.d.ts +2 -16
- package/dist/oauth/mountOAuth.d.ts.map +1 -1
- package/dist/oauth/mountOAuth.js +24 -99
- package/dist/oauth/mountOAuth.js.map +1 -1
- package/dist/worker/createMantleWorker.d.ts +12 -13
- package/dist/worker/createMantleWorker.d.ts.map +1 -1
- package/dist/worker/createMantleWorker.js +31 -24
- package/dist/worker/createMantleWorker.js.map +1 -1
- package/package.json +12 -11
- package/dist/mount/mountServerEndpoints.d.ts +0 -9
- package/dist/mount/mountServerEndpoints.d.ts.map +0 -1
- package/dist/mount/mountServerEndpoints.js +0 -1625
- package/dist/mount/mountServerEndpoints.js.map +0 -1
- package/dist/mount/runMantleUseCase.d.ts +0 -3
- package/dist/mount/runMantleUseCase.d.ts.map +0 -1
- package/dist/mount/runMantleUseCase.js +0 -41
- package/dist/mount/runMantleUseCase.js.map +0 -1
- package/dist/oauth/oauthConstants.d.ts +0 -15
- package/dist/oauth/oauthConstants.d.ts.map +0 -1
- package/dist/oauth/oauthConstants.js +0 -15
- package/dist/oauth/oauthConstants.js.map +0 -1
- package/dist/oauth/oauthSingleton.d.ts +0 -33
- package/dist/oauth/oauthSingleton.d.ts.map +0 -1
- package/dist/oauth/oauthSingleton.js +0 -39
- package/dist/oauth/oauthSingleton.js.map +0 -1
package/dist/oauth/mountOAuth.js
CHANGED
|
@@ -1,112 +1,37 @@
|
|
|
1
1
|
import { rejectCrossOriginMutation } from "../auth/rejectCrossOriginMutation.js";
|
|
2
2
|
import { detectConsentLocale, renderConsentHtml, } from "./consentHtml.js";
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* Hono app must be passed to `createOAuthProvider({ defaultHandler })`;
|
|
6
|
-
* the lib injects `OAUTH_PROVIDER` helpers onto env BEFORE forwarding
|
|
7
|
-
* the request here, so we read `c.env.OAUTH_PROVIDER` directly.
|
|
8
|
-
*
|
|
9
|
-
* `/token` + `/register` + `/.well-known/oauth-*` are intercepted by
|
|
10
|
-
* the OAuthProvider itself and never reach defaultHandler — do not
|
|
11
|
-
* mount them here.
|
|
12
|
-
*/
|
|
3
|
+
/** Mount Mantle's small server-rendered consent page. Better Auth owns the
|
|
4
|
+
* signed authorization query, client lookup, decision, and redirect. */
|
|
13
5
|
export function mountAuthorize(app, options) {
|
|
14
|
-
const { auth
|
|
15
|
-
|
|
6
|
+
const { auth } = options;
|
|
7
|
+
app.get("/oauth/consent", async (c) => {
|
|
16
8
|
const locale = detectConsentLocale(c.req.header("accept-language") ?? null);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
let model = null;
|
|
10
|
+
try {
|
|
11
|
+
model = await auth.getOAuthConsentRequest(c.req.raw);
|
|
20
12
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return new Response("unauthenticated", { status: 401 });
|
|
25
|
-
}
|
|
26
|
-
const u = new URL(c.req.url);
|
|
27
|
-
const returnTo = encodeURIComponent(u.pathname + u.search);
|
|
28
|
-
return new Response(null, {
|
|
29
|
-
status: 302,
|
|
30
|
-
headers: { location: `${loginPath}?return=${returnTo}` },
|
|
31
|
-
});
|
|
13
|
+
catch {
|
|
14
|
+
// Invalid, expired, or unauthenticated signed queries render the same
|
|
15
|
+
// non-sensitive failure page.
|
|
32
16
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (rejected)
|
|
44
|
-
return rejected;
|
|
45
|
-
const form = await c.req.raw.formData();
|
|
46
|
-
const oauthRequestJson = form.get("oauth_request");
|
|
47
|
-
if (typeof oauthRequestJson !== "string") {
|
|
48
|
-
return new Response("missing oauth_request", { status: 400 });
|
|
49
|
-
}
|
|
50
|
-
if (form.get("decision") !== "approve") {
|
|
51
|
-
return new Response("authorization denied", { status: 400 });
|
|
52
|
-
}
|
|
53
|
-
let reqInfo;
|
|
54
|
-
try {
|
|
55
|
-
reqInfo = JSON.parse(oauthRequestJson);
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
return new Response("invalid oauth_request json", { status: 400 });
|
|
59
|
-
}
|
|
60
|
-
// The form-field oauth_request is caller-editable — a malicious
|
|
61
|
-
// submit could swap redirectUri / scope post-consent. Re-validate
|
|
62
|
-
// clientId + redirectUri against the registered client record;
|
|
63
|
-
// refuse if either drifted. Fail closed when no registered URIs
|
|
64
|
-
// exist — a misconfigured client with no allowlist must not get
|
|
65
|
-
// a free pass.
|
|
66
|
-
const registered = await helpers.lookupClient(reqInfo.clientId);
|
|
67
|
-
if (!registered) {
|
|
68
|
-
return new Response("unknown client", { status: 400 });
|
|
69
|
-
}
|
|
70
|
-
if (!Array.isArray(registered.redirectUris) ||
|
|
71
|
-
registered.redirectUris.length === 0 ||
|
|
72
|
-
!registered.redirectUris.includes(reqInfo.redirectUri)) {
|
|
73
|
-
return new Response("redirect_uri mismatch", { status: 400 });
|
|
74
|
-
}
|
|
75
|
-
// If claude.ai forgets to request a scope, default to ["mcp"]
|
|
76
|
-
// so the token grant is non-empty (claude.ai post-token
|
|
77
|
-
// verification rejects empty-scope tokens in some flows).
|
|
78
|
-
const grantedScope = reqInfo.scope && reqInfo.scope.length > 0 ? reqInfo.scope : ["mcp"];
|
|
79
|
-
const { redirectTo } = await helpers.completeAuthorization({
|
|
80
|
-
request: reqInfo,
|
|
81
|
-
userId: session.user.id,
|
|
82
|
-
metadata: {},
|
|
83
|
-
scope: grantedScope,
|
|
84
|
-
// The provider's token-exchange callback derives token-specific API
|
|
85
|
-
// props from verified grant fields and the effective token scope.
|
|
86
|
-
props: {},
|
|
87
|
-
});
|
|
88
|
-
return new Response(null, { status: 302, headers: { location: redirectTo } });
|
|
17
|
+
return c.html(renderConsentHtml(locale, model), model ? 200 : 400);
|
|
18
|
+
});
|
|
19
|
+
app.post("/oauth/consent", async (c) => {
|
|
20
|
+
const rejected = rejectCrossOriginMutation(c.req.raw);
|
|
21
|
+
if (rejected)
|
|
22
|
+
return rejected;
|
|
23
|
+
const body = await c.req.text();
|
|
24
|
+
const decision = new URLSearchParams(body).get("decision");
|
|
25
|
+
if (decision !== "approve" && decision !== "deny") {
|
|
26
|
+
return new Response("invalid consent decision", { status: 400 });
|
|
89
27
|
}
|
|
90
|
-
let model = null;
|
|
91
28
|
try {
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
model = {
|
|
95
|
-
clientName: clientInfo?.clientName ?? "(unknown client)",
|
|
96
|
-
redirectUri: reqInfo.redirectUri,
|
|
97
|
-
scopes: reqInfo.scope ?? [],
|
|
98
|
-
oauthRequestJson: JSON.stringify(reqInfo),
|
|
99
|
-
};
|
|
29
|
+
const redirect = await auth.completeOAuthConsent(new Request(c.req.raw, { body }), decision === "approve");
|
|
30
|
+
return c.redirect(redirect, 302);
|
|
100
31
|
}
|
|
101
32
|
catch {
|
|
102
|
-
|
|
103
|
-
// the "invalid authorization request" branch in renderConsentHtml.
|
|
33
|
+
return new Response("invalid authorization request", { status: 400 });
|
|
104
34
|
}
|
|
105
|
-
|
|
106
|
-
headers: { "content-type": "text/html; charset=utf-8" },
|
|
107
|
-
});
|
|
108
|
-
};
|
|
109
|
-
app.get("/oauth/authorize", consentHandler);
|
|
110
|
-
app.post("/oauth/authorize", consentHandler);
|
|
35
|
+
});
|
|
111
36
|
}
|
|
112
37
|
//# sourceMappingURL=mountOAuth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mountOAuth.js","sourceRoot":"","sources":["../../src/oauth/mountOAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"mountOAuth.js","sourceRoot":"","sources":["../../src/oauth/mountOAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAM1B;wEACwE;AACxE,MAAM,UAAU,cAAc,CAC5B,GAAY,EACZ,OAA8B;IAE9B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAC;QAC5E,IAAI,KAAK,GAA+B,IAAI,CAAC;QAC7C,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,8BAA8B;QAChC,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAClD,OAAO,IAAI,QAAQ,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC9C,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAChC,QAAQ,KAAK,SAAS,CACvB,CAAC;YACF,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,QAAQ,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Hono, type Env as HonoEnv, type Handler, type MiddlewareHandler } from "hono";
|
|
2
|
-
import type { AnyHandler,
|
|
3
|
-
import type {
|
|
2
|
+
import type { AnyHandler, RuntimePlan } from "@aotter/mantle-runtime";
|
|
3
|
+
import type { PublicPathResolver, TemplateRegistry } from "@aotter/mantle-web";
|
|
4
|
+
import type { SiteDefaults } from "@aotter/mantle-spec";
|
|
4
5
|
import { type ConventionalAuthEnv } from "../auth/conventionalAuth.js";
|
|
5
6
|
import type { Auth } from "../auth/createAuth.js";
|
|
6
7
|
import { type MantleWorkerBindings } from "../bindings/conventionalBindings.js";
|
|
7
|
-
import { type
|
|
8
|
-
import type {
|
|
8
|
+
import { type CloudflareMantleRuntime, type MantleRuntimeRef } from "../mount/bootRuntimeOnce.js";
|
|
9
|
+
import type { MantleCloudflareConfig } from "../mount/cmsConfig.js";
|
|
9
10
|
import type { ConsumerCredentialResolver } from "../mount/resolveCaller.js";
|
|
10
11
|
/** Fixed namespaces owned by Mantle's standard Worker surfaces. */
|
|
11
12
|
export declare const MANTLE_RESERVED_PATH_PREFIXES: readonly ["/admin", "/_mantle", "/api/auth", "/api/views", "/oauth", "/mcp"];
|
|
@@ -41,32 +42,30 @@ export interface MantleExtensionApp<Bindings extends object> {
|
|
|
41
42
|
route<const Path extends string, SubEnv extends HonoEnv>(path: SafePath<Path>, app: Hono<SubEnv>): MantleExtensionApp<Bindings>;
|
|
42
43
|
}
|
|
43
44
|
export interface MantleCloudflareEnv extends ConventionalAuthEnv {
|
|
44
|
-
readonly
|
|
45
|
-
readonly ASSETS: Fetcher;
|
|
45
|
+
readonly ASSETS?: Fetcher;
|
|
46
46
|
}
|
|
47
47
|
export interface MantleWorkerBootstrapContext<Env extends MantleCloudflareEnv> {
|
|
48
48
|
readonly env: Env;
|
|
49
49
|
readonly auth: Auth;
|
|
50
50
|
readonly bindings: MantleWorkerBindings;
|
|
51
51
|
/** Safe to retain and call later; do not call synchronously inside `extend`. */
|
|
52
|
-
readonly getRuntime: () => Promise<
|
|
52
|
+
readonly getRuntime: () => Promise<CloudflareMantleRuntime>;
|
|
53
53
|
}
|
|
54
54
|
export interface MantleWorkerMountContext<Env extends MantleCloudflareEnv> extends MantleWorkerBootstrapContext<Env> {
|
|
55
55
|
readonly app: MantleExtensionApp<Env>;
|
|
56
|
-
readonly ref:
|
|
56
|
+
readonly ref: MantleRuntimeRef;
|
|
57
57
|
}
|
|
58
58
|
/** The one opt-in seam for application handlers, auth inputs and routes. */
|
|
59
59
|
export interface MantleWorkerExtension<Env extends MantleCloudflareEnv> {
|
|
60
60
|
readonly handlers?: Readonly<Record<string, AnyHandler>>;
|
|
61
61
|
readonly credentialResolver?: ConsumerCredentialResolver;
|
|
62
|
-
readonly jwtBearer?:
|
|
63
|
-
readonly scopesSupported?: readonly string[];
|
|
62
|
+
readonly jwtBearer?: MantleCloudflareConfig["jwtBearer"];
|
|
64
63
|
/** Standard routes mount first; extension routes may only add new paths. */
|
|
65
64
|
readonly mount?: (context: MantleWorkerMountContext<Env>) => void;
|
|
66
65
|
}
|
|
67
66
|
export interface CreateMantleWorkerOptions<Env extends MantleCloudflareEnv> {
|
|
68
|
-
/**
|
|
69
|
-
readonly
|
|
67
|
+
/** Sealed generated plan imported from `.mantle/generated/mantle.js`. */
|
|
68
|
+
readonly plan: RuntimePlan;
|
|
70
69
|
readonly handlers?: Readonly<Record<string, AnyHandler>>;
|
|
71
70
|
readonly siteDefaults?: SiteDefaults | ((env: Env) => SiteDefaults);
|
|
72
71
|
readonly templates?: TemplateRegistry;
|
|
@@ -81,7 +80,7 @@ export interface CreateMantleWorkerOptions<Env extends MantleCloudflareEnv> {
|
|
|
81
80
|
export interface MantleWorkerHandler<Env extends MantleCloudflareEnv> {
|
|
82
81
|
/** Boot and return the same runtime used by fetch. Queue/scheduled handlers
|
|
83
82
|
* use this instead of constructing a second runtime or bypassing it. */
|
|
84
|
-
getRuntime(env: Env): Promise<
|
|
83
|
+
getRuntime(env: Env): Promise<CloudflareMantleRuntime>;
|
|
85
84
|
fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response>;
|
|
86
85
|
}
|
|
87
86
|
/** Assemble Mantle's conventional Worker once per isolate. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMantleWorker.d.ts","sourceRoot":"","sources":["../../src/worker/createMantleWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,GAAG,IAAI,OAAO,EACnB,KAAK,OAAO,EACZ,KAAK,iBAAiB,EACvB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EACV,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"createMantleWorker.d.ts","sourceRoot":"","sources":["../../src/worker/createMantleWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Hono, } from "hono";
|
|
2
|
-
import { createConventionalAuth, setupIncompleteAuthResponse, } from "../auth/conventionalAuth.js";
|
|
2
|
+
import { conventionalMcpResource, createConventionalAuth, setupIncompleteAuthResponse, } from "../auth/conventionalAuth.js";
|
|
3
3
|
import { createConventionalBindings, } from "../bindings/conventionalBindings.js";
|
|
4
|
-
import {
|
|
4
|
+
import { createMantleRuntimeRef, } from "../mount/bootRuntimeOnce.js";
|
|
5
5
|
import { createMcpApiHandler } from "../mount/mountMcp.js";
|
|
6
|
-
import {
|
|
6
|
+
import { mountAdmin } from "../mount/mountAdmin.js";
|
|
7
|
+
import { mountRuntimeEndpoints } from "../mount/mountRuntimeEndpoints.js";
|
|
7
8
|
import { mountAuthorize } from "../oauth/mountOAuth.js";
|
|
8
|
-
import {
|
|
9
|
-
import { createOAuthProvider } from "../oauth/oauthSingleton.js";
|
|
10
|
-
import { PUBLIC_CACHE_TAG } from "../oauth/cachePolicy.js";
|
|
9
|
+
import { applyCachePolicy, PUBLIC_CACHE_TAG } from "../oauth/cachePolicy.js";
|
|
11
10
|
/** Fixed namespaces owned by Mantle's standard Worker surfaces. */
|
|
12
11
|
export const MANTLE_RESERVED_PATH_PREFIXES = [
|
|
13
12
|
"/admin",
|
|
@@ -36,12 +35,17 @@ export function createMantleWorker(options) {
|
|
|
36
35
|
: Promise.reject(new Error("Mantle runtime is unavailable until `extend` returns."));
|
|
37
36
|
const bootstrap = { env, auth, bindings, getRuntime };
|
|
38
37
|
const extension = options.extend?.(bootstrap) ?? {};
|
|
39
|
-
ref =
|
|
40
|
-
|
|
38
|
+
ref = createMantleRuntimeRef({
|
|
39
|
+
plan: options.plan,
|
|
41
40
|
handlers: mergeHandlers(options.handlers, extension.handlers),
|
|
42
41
|
siteDefaults: resolve(options.siteDefaults, env),
|
|
43
42
|
templates: options.templates,
|
|
44
43
|
publicPathResolver: options.publicPathResolver,
|
|
44
|
+
reservedHttpPathPrefixes: [
|
|
45
|
+
...MANTLE_RESERVED_PATH_PREFIXES,
|
|
46
|
+
MANTLE_RESERVED_WELL_KNOWN_PREFIX,
|
|
47
|
+
auth.basePath,
|
|
48
|
+
],
|
|
45
49
|
mediaAllowSvg: resolve(options.mediaAllowSvg, env),
|
|
46
50
|
bindings,
|
|
47
51
|
auth,
|
|
@@ -50,8 +54,23 @@ export function createMantleWorker(options) {
|
|
|
50
54
|
onPublicChange: purgePublicCache,
|
|
51
55
|
});
|
|
52
56
|
const app = new Hono();
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
mountRuntimeEndpoints(app, ref);
|
|
58
|
+
if (bindings.adminAssets)
|
|
59
|
+
mountAdmin(app, ref, bindings.adminAssets);
|
|
60
|
+
mountAuthorize(app, { auth });
|
|
61
|
+
const mcpResource = auth.mcpResource ?? conventionalMcpResource(env);
|
|
62
|
+
const publicMcp = createMcpApiHandler({
|
|
63
|
+
ref,
|
|
64
|
+
surface: "public",
|
|
65
|
+
resource: mcpResource,
|
|
66
|
+
});
|
|
67
|
+
const staffMcp = createMcpApiHandler({
|
|
68
|
+
ref,
|
|
69
|
+
surface: "staff",
|
|
70
|
+
resource: mcpResource,
|
|
71
|
+
});
|
|
72
|
+
app.all("/mcp", (c) => publicMcp.fetch(c.req.raw, c.env, c.executionCtx));
|
|
73
|
+
app.all("/mcp/staff", (c) => staffMcp.fetch(c.req.raw, c.env, c.executionCtx));
|
|
55
74
|
const standardRouteCount = app.routes.length;
|
|
56
75
|
extension.mount?.({
|
|
57
76
|
...bootstrap,
|
|
@@ -59,20 +78,10 @@ export function createMantleWorker(options) {
|
|
|
59
78
|
ref,
|
|
60
79
|
});
|
|
61
80
|
assertExtensionRoutes(app, standardRouteCount, auth.basePath);
|
|
62
|
-
const provider = createOAuthProvider({
|
|
63
|
-
defaultHandler: {
|
|
64
|
-
fetch: (request, workerEnv, ctx) => app.fetch(request, workerEnv, ctx),
|
|
65
|
-
},
|
|
66
|
-
apiHandlers: {
|
|
67
|
-
"/mcp/staff": createMcpApiHandler({ ref, surface: "staff" }),
|
|
68
|
-
"/mcp": createMcpApiHandler({ ref, surface: "public" }),
|
|
69
|
-
},
|
|
70
|
-
scopesSupported: [...new Set(["mcp", ...(extension.scopesSupported ?? [])])],
|
|
71
|
-
});
|
|
72
81
|
const next = {
|
|
73
82
|
auth,
|
|
74
83
|
getRuntime,
|
|
75
|
-
fetch: (request, workerEnv, ctx) =>
|
|
84
|
+
fetch: async (request, workerEnv, ctx) => applyCachePolicy(request, await app.fetch(request, workerEnv, ctx)),
|
|
76
85
|
};
|
|
77
86
|
assembled = next;
|
|
78
87
|
return next;
|
|
@@ -106,9 +115,7 @@ async function purgePublicCache() {
|
|
|
106
115
|
}
|
|
107
116
|
function isRuntimeIndependentOAuthRequest(request) {
|
|
108
117
|
const pathname = new URL(request.url).pathname;
|
|
109
|
-
if (pathname
|
|
110
|
-
pathname === OAUTH_REGISTER_PATH ||
|
|
111
|
-
pathname.startsWith(MANTLE_RESERVED_WELL_KNOWN_PREFIX))
|
|
118
|
+
if (pathname.startsWith(MANTLE_RESERVED_WELL_KNOWN_PREFIX))
|
|
112
119
|
return true;
|
|
113
120
|
return (pathname === "/mcp" || pathname.startsWith("/mcp/")) &&
|
|
114
121
|
!request.headers.has("authorization");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMantleWorker.js","sourceRoot":"","sources":["../../src/worker/createMantleWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,GAIL,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"createMantleWorker.js","sourceRoot":"","sources":["../../src/worker/createMantleWorker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aotter/mantle-cloudflare",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
4
|
-
"description": "Cloudflare Workers adapter for
|
|
3
|
+
"version": "0.1.0-alpha.8",
|
|
4
|
+
"description": "Cloudflare Workers adapter for Mantle runtime, Admin, MCP, and public Web mounts.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://mantle.tools/",
|
|
7
7
|
"repository": {
|
|
@@ -29,29 +29,30 @@
|
|
|
29
29
|
"README.md"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@better-auth/
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
35
|
-
"@aotter/mantle-
|
|
32
|
+
"@better-auth/cimd": "^1.7.1",
|
|
33
|
+
"@better-auth/mcp": "^1.7.1",
|
|
34
|
+
"@better-auth/oauth-provider": "^1.7.1",
|
|
35
|
+
"@aotter/mantle-runtime": "0.1.0-alpha.8",
|
|
36
|
+
"@aotter/mantle-spec": "0.1.0-alpha.8",
|
|
37
|
+
"@aotter/mantle-web": "0.1.0-alpha.8",
|
|
38
|
+
"@aotter/mantle-admin": "0.1.0-alpha.8"
|
|
36
39
|
},
|
|
37
40
|
"peerDependencies": {
|
|
38
|
-
"@cloudflare/workers-oauth-provider": "^0.8.2",
|
|
39
41
|
"aws4fetch": "^1.0.20",
|
|
40
|
-
"better-auth": "^1.
|
|
42
|
+
"better-auth": "^1.7.1",
|
|
41
43
|
"hono": "^4.12.0",
|
|
42
44
|
"zod": "^4.0.0"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
|
-
"@cloudflare/workers-oauth-provider": "^0.8.2",
|
|
46
47
|
"@cloudflare/workers-types": "^5.20260729.1",
|
|
47
48
|
"@types/node": "^26",
|
|
48
49
|
"aws4fetch": "^1.0.20",
|
|
49
|
-
"better-auth": "^1.
|
|
50
|
+
"better-auth": "^1.7.1",
|
|
50
51
|
"hono": "^4.12.34",
|
|
51
52
|
"typescript": "^6.0.3",
|
|
52
53
|
"vitest": "^4.1.10",
|
|
53
54
|
"wrangler": "^4.115.0",
|
|
54
|
-
"zod": "^4.4.
|
|
55
|
+
"zod": "^4.4.3"
|
|
55
56
|
},
|
|
56
57
|
"scripts": {
|
|
57
58
|
"prebuild": "rm -rf dist .tsbuildinfo",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Env, Hono } from "hono";
|
|
2
|
-
import type { CmsRuntimeRef } from "./bootRuntimeOnce.js";
|
|
3
|
-
/** Mount HTTP Triggers + Views + the Better Auth admin surface.
|
|
4
|
-
* HTTP Triggers resolve configured credentials and sessions through
|
|
5
|
-
* `resolveCaller`; the target Procedure's `requires.auth` owns
|
|
6
|
-
* authorization. */
|
|
7
|
-
export declare function mountServerEndpoints<E extends Env>(app: Hono<E>, ref: CmsRuntimeRef): void;
|
|
8
|
-
export type { CmsRuntimeRef };
|
|
9
|
-
//# sourceMappingURL=mountServerEndpoints.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mountServerEndpoints.d.ts","sourceRoot":"","sources":["../../src/mount/mountServerEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,GAAG,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAkC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAa1D;;;qBAGqB;AACrB,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,GAAG,EAChD,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EACZ,GAAG,EAAE,aAAa,GACjB,IAAI,CAuCN;AA28DD,YAAY,EAAE,aAAa,EAAE,CAAC"}
|