@pantheon-systems/p1-next-sdk 0.1.0
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/dist/P1AuthShell.d.ts +5 -0
- package/dist/P1AuthShell.d.ts.map +1 -0
- package/dist/P1AuthShell.js +83 -0
- package/dist/P1AuthShell.js.map +1 -0
- package/dist/P1NextRouterProvider.d.ts +5 -0
- package/dist/P1NextRouterProvider.d.ts.map +1 -0
- package/dist/P1NextRouterProvider.js +18 -0
- package/dist/P1NextRouterProvider.js.map +1 -0
- package/dist/auth-handler.d.ts +15 -0
- package/dist/auth-handler.d.ts.map +1 -0
- package/dist/auth-handler.js +17 -0
- package/dist/auth-handler.js.map +1 -0
- package/dist/handler-actions.d.ts +15 -0
- package/dist/handler-actions.d.ts.map +1 -0
- package/dist/handler-actions.js +15 -0
- package/dist/handler-actions.js.map +1 -0
- package/dist/handler.d.ts +56 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +85 -0
- package/dist/handler.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/pages-handler.d.ts +40 -0
- package/dist/pages-handler.d.ts.map +1 -0
- package/dist/pages-handler.js +93 -0
- package/dist/pages-handler.js.map +1 -0
- package/dist/routes/broker.d.ts +4 -0
- package/dist/routes/broker.d.ts.map +1 -0
- package/dist/routes/broker.js +56 -0
- package/dist/routes/broker.js.map +1 -0
- package/dist/routes/datasource-context.d.ts +12 -0
- package/dist/routes/datasource-context.d.ts.map +1 -0
- package/dist/routes/datasource-context.js +29 -0
- package/dist/routes/datasource-context.js.map +1 -0
- package/dist/routes/editor-context.d.ts +16 -0
- package/dist/routes/editor-context.d.ts.map +1 -0
- package/dist/routes/editor-context.js +25 -0
- package/dist/routes/editor-context.js.map +1 -0
- package/dist/routes/page-data.d.ts +8 -0
- package/dist/routes/page-data.d.ts.map +1 -0
- package/dist/routes/page-data.js +17 -0
- package/dist/routes/page-data.js.map +1 -0
- package/dist/routes/preview-meta.d.ts +10 -0
- package/dist/routes/preview-meta.d.ts.map +1 -0
- package/dist/routes/preview-meta.js +24 -0
- package/dist/routes/preview-meta.js.map +1 -0
- package/dist/routes/publish.d.ts +8 -0
- package/dist/routes/publish.d.ts.map +1 -0
- package/dist/routes/publish.js +20 -0
- package/dist/routes/publish.js.map +1 -0
- package/dist/routes/remote-datasources-api.d.ts +30 -0
- package/dist/routes/remote-datasources-api.d.ts.map +1 -0
- package/dist/routes/remote-datasources-api.js +81 -0
- package/dist/routes/remote-datasources-api.js.map +1 -0
- package/dist/routes/resolve-preview.d.ts +9 -0
- package/dist/routes/resolve-preview.d.ts.map +1 -0
- package/dist/routes/resolve-preview.js +17 -0
- package/dist/routes/resolve-preview.js.map +1 -0
- package/dist/routes/structure.d.ts +18 -0
- package/dist/routes/structure.d.ts.map +1 -0
- package/dist/routes/structure.js +45 -0
- package/dist/routes/structure.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"P1AuthShell.d.ts","sourceRoot":"","sources":["../src/P1AuthShell.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAqIvC,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAgBhE"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createNextConfig, P1AuthProvider, useP1Auth } from "@pantheon-systems/puck-css";
|
|
4
|
+
import { AuthGate } from "@pantheon-systems/puck-css/auth-gate";
|
|
5
|
+
let p1Config = null;
|
|
6
|
+
let p1ConfigError = null;
|
|
7
|
+
try {
|
|
8
|
+
p1Config = createNextConfig();
|
|
9
|
+
}
|
|
10
|
+
catch (e) {
|
|
11
|
+
p1ConfigError = e instanceof Error ? e.message : String(e);
|
|
12
|
+
}
|
|
13
|
+
function UserBar() {
|
|
14
|
+
const { user, logout } = useP1Auth();
|
|
15
|
+
if (!user)
|
|
16
|
+
return null;
|
|
17
|
+
return (_jsxs("div", { style: {
|
|
18
|
+
display: "flex",
|
|
19
|
+
alignItems: "center",
|
|
20
|
+
justifyContent: "flex-end",
|
|
21
|
+
gap: 12,
|
|
22
|
+
padding: "6px 16px",
|
|
23
|
+
background: "#1b1b1b",
|
|
24
|
+
color: "#e0e0e0",
|
|
25
|
+
fontSize: 13,
|
|
26
|
+
fontFamily: "system-ui, sans-serif",
|
|
27
|
+
borderBottom: "1px solid #333",
|
|
28
|
+
}, children: [user.picture ? (_jsx("img", { src: user.picture, alt: "", referrerPolicy: "no-referrer", style: { width: 24, height: 24, borderRadius: "50%" } })) : (_jsx("div", { style: {
|
|
29
|
+
width: 24,
|
|
30
|
+
height: 24,
|
|
31
|
+
borderRadius: "50%",
|
|
32
|
+
background: "#555",
|
|
33
|
+
display: "flex",
|
|
34
|
+
alignItems: "center",
|
|
35
|
+
justifyContent: "center",
|
|
36
|
+
fontSize: 12,
|
|
37
|
+
color: "#fff",
|
|
38
|
+
}, children: (user.name || user.email || "?").charAt(0).toUpperCase() })), _jsx("span", { style: { opacity: 0.9 }, children: user.name || user.email || "User" }), _jsx("button", { onClick: logout, style: {
|
|
39
|
+
background: "transparent",
|
|
40
|
+
color: "#888",
|
|
41
|
+
border: "1px solid #555",
|
|
42
|
+
borderRadius: 4,
|
|
43
|
+
padding: "2px 10px",
|
|
44
|
+
fontSize: 12,
|
|
45
|
+
cursor: "pointer",
|
|
46
|
+
marginLeft: 4,
|
|
47
|
+
}, children: "Log out" })] }));
|
|
48
|
+
}
|
|
49
|
+
function ConfigError({ message }) {
|
|
50
|
+
return (_jsx("div", { style: {
|
|
51
|
+
display: "flex",
|
|
52
|
+
alignItems: "center",
|
|
53
|
+
justifyContent: "center",
|
|
54
|
+
minHeight: "100vh",
|
|
55
|
+
fontFamily: "system-ui, -apple-system, sans-serif",
|
|
56
|
+
background: "#f5f5f5",
|
|
57
|
+
}, children: _jsxs("div", { style: {
|
|
58
|
+
background: "white",
|
|
59
|
+
borderRadius: 12,
|
|
60
|
+
boxShadow: "0 4px 24px rgba(0,0,0,0.1)",
|
|
61
|
+
padding: 40,
|
|
62
|
+
maxWidth: 480,
|
|
63
|
+
width: "100%",
|
|
64
|
+
textAlign: "center",
|
|
65
|
+
}, children: [_jsx("div", { style: { fontSize: 40, marginBottom: 16 }, children: "\u26A0" }), _jsx("h1", { style: { fontSize: 22, fontWeight: 600, margin: "0 0 12px", color: "#1a1a1a" }, children: "Configuration Required" }), _jsx("p", { style: { fontSize: 14, color: "#666", marginBottom: 24, lineHeight: 1.6 }, children: "The editor cannot start because required environment variables are missing." }), _jsx("div", { style: {
|
|
66
|
+
background: "#fff0f0",
|
|
67
|
+
border: "1px solid #fecaca",
|
|
68
|
+
borderRadius: 8,
|
|
69
|
+
padding: "12px 16px",
|
|
70
|
+
fontSize: 13,
|
|
71
|
+
color: "#991b1b",
|
|
72
|
+
fontFamily: "ui-monospace, monospace",
|
|
73
|
+
textAlign: "left",
|
|
74
|
+
marginBottom: 24,
|
|
75
|
+
}, children: message }), _jsxs("p", { style: { fontSize: 13, color: "#888", lineHeight: 1.5 }, children: ["Set ", _jsx("code", { style: { background: "#f0f0f0", padding: "2px 6px", borderRadius: 4 }, children: "NEXT_PUBLIC_CSS_BASE_URL" }), " and", " ", _jsx("code", { style: { background: "#f0f0f0", padding: "2px 6px", borderRadius: 4 }, children: "NEXT_PUBLIC_CSS_SITE_ID" }), " in your", " ", _jsx("code", { style: { background: "#f0f0f0", padding: "2px 6px", borderRadius: 4 }, children: ".env" }), " file."] })] }) }));
|
|
76
|
+
}
|
|
77
|
+
export function P1AuthShell({ children }) {
|
|
78
|
+
if (!p1Config) {
|
|
79
|
+
return _jsx(ConfigError, { message: p1ConfigError ?? "CSS configuration is missing." });
|
|
80
|
+
}
|
|
81
|
+
return (_jsx(P1AuthProvider, { authMode: p1Config.authMode, p1BaseUrl: p1Config.baseUrl, children: _jsxs(AuthGate, { children: [_jsx(UserBar, {}), children] }) }));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=P1AuthShell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"P1AuthShell.js","sourceRoot":"","sources":["../src/P1AuthShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"P1NextRouterProvider.d.ts","sourceRoot":"","sources":["../src/P1NextRouterProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhD,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAqBzE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useRouter, usePathname, useSearchParams } from "next/navigation";
|
|
4
|
+
import { useMemo } from "react";
|
|
5
|
+
import { P1RouterContext } from "@pantheon-systems/puck-css";
|
|
6
|
+
export function P1NextRouterProvider({ children }) {
|
|
7
|
+
const nextRouter = useRouter();
|
|
8
|
+
const pathname = usePathname();
|
|
9
|
+
const searchParams = useSearchParams();
|
|
10
|
+
const router = useMemo(() => ({
|
|
11
|
+
refresh: () => nextRouter.refresh(),
|
|
12
|
+
replace: (url, options) => nextRouter.replace(url, options),
|
|
13
|
+
pathname,
|
|
14
|
+
searchParams,
|
|
15
|
+
}), [nextRouter, pathname, searchParams]);
|
|
16
|
+
return (_jsx(P1RouterContext.Provider, { value: router, children: children }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=P1NextRouterProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"P1NextRouterProvider.js","sourceRoot":"","sources":["../src/P1NextRouterProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,eAAe,EAAiB,MAAM,4BAA4B,CAAC;AAE5E,MAAM,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAA2B;IACxE,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAa,OAAO,CAC9B,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE;QACnC,OAAO,EAAE,CAAC,GAAW,EAAE,OAA8B,EAAE,EAAE,CACvD,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;QAClC,QAAQ;QACR,YAAY;KACb,CAAC,EACF,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CACrC,CAAC;IAEF,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACpC,QAAQ,GACgB,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
export interface P1AuthHandlerConfig {
|
|
3
|
+
p1ApiKey?: string;
|
|
4
|
+
p1BaseUrl?: string;
|
|
5
|
+
redirectUrl?: string;
|
|
6
|
+
prompt?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function createP1AuthHandler(opts: P1AuthHandlerConfig): {
|
|
9
|
+
POST: (request: Request, { params }: {
|
|
10
|
+
params: Promise<{
|
|
11
|
+
action?: string[];
|
|
12
|
+
}>;
|
|
13
|
+
}) => Promise<NextResponse<any>>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=auth-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-handler.d.ts","sourceRoot":"","sources":["../src/auth-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB;oBAEhD,OAAO,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE;EAgBzD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { postBrokerLogin, postBrokerRedeem } from "./routes/broker";
|
|
3
|
+
export function createP1AuthHandler(opts) {
|
|
4
|
+
async function POST(request, { params }) {
|
|
5
|
+
const { action = [] } = await params;
|
|
6
|
+
const route = action[0];
|
|
7
|
+
if (route === "login") {
|
|
8
|
+
return postBrokerLogin(request, opts.p1ApiKey, opts.p1BaseUrl, opts.redirectUrl, opts.prompt);
|
|
9
|
+
}
|
|
10
|
+
if (route === "redeem") {
|
|
11
|
+
return postBrokerRedeem(request, opts.p1ApiKey, opts.p1BaseUrl);
|
|
12
|
+
}
|
|
13
|
+
return NextResponse.json({ error: "not_found" }, { status: 404 });
|
|
14
|
+
}
|
|
15
|
+
return { POST };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=auth-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-handler.js","sourceRoot":"","sources":["../src/auth-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AASpE,MAAM,UAAU,mBAAmB,CAAC,IAAyB;IAC3D,KAAK,UAAU,IAAI,CACjB,OAAgB,EAChB,EAAE,MAAM,EAA8C;QAEtD,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,OAAO,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel re-export for handler actions.
|
|
3
|
+
* Each domain lives in its own route module under `./routes/`.
|
|
4
|
+
*/
|
|
5
|
+
export { normalizePath } from "@pantheon-systems/puck-css/server";
|
|
6
|
+
export { getPageData } from "./routes/page-data";
|
|
7
|
+
export { getEditorContext } from "./routes/editor-context";
|
|
8
|
+
export { getDatasourceContext } from "./routes/datasource-context";
|
|
9
|
+
export { getRemoteDatasources, postRemoteDatasources, deleteRemoteDatasources } from "./routes/remote-datasources-api";
|
|
10
|
+
export { postPublish } from "./routes/publish";
|
|
11
|
+
export { postResolvePreview } from "./routes/resolve-preview";
|
|
12
|
+
export { postPreviewMeta } from "./routes/preview-meta";
|
|
13
|
+
export { postStructure, deleteStructurePage } from "./routes/structure";
|
|
14
|
+
export { postBrokerLogin, postBrokerRedeem } from "./routes/broker";
|
|
15
|
+
//# sourceMappingURL=handler-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-actions.d.ts","sourceRoot":"","sources":["../src/handler-actions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel re-export for handler actions.
|
|
3
|
+
* Each domain lives in its own route module under `./routes/`.
|
|
4
|
+
*/
|
|
5
|
+
export { normalizePath } from "@pantheon-systems/puck-css/server";
|
|
6
|
+
export { getPageData } from "./routes/page-data";
|
|
7
|
+
export { getEditorContext } from "./routes/editor-context";
|
|
8
|
+
export { getDatasourceContext } from "./routes/datasource-context";
|
|
9
|
+
export { getRemoteDatasources, postRemoteDatasources, deleteRemoteDatasources } from "./routes/remote-datasources-api";
|
|
10
|
+
export { postPublish } from "./routes/publish";
|
|
11
|
+
export { postResolvePreview } from "./routes/resolve-preview";
|
|
12
|
+
export { postPreviewMeta } from "./routes/preview-meta";
|
|
13
|
+
export { postStructure, deleteStructurePage } from "./routes/structure";
|
|
14
|
+
export { postBrokerLogin, postBrokerRedeem } from "./routes/broker";
|
|
15
|
+
//# sourceMappingURL=handler-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-actions.js","sourceRoot":"","sources":["../src/handler-actions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P1 Next SDK handler — NextAuth-style catch-all for `/p1/api/[...p1]`.
|
|
3
|
+
*
|
|
4
|
+
* Usage in your Next.js app:
|
|
5
|
+
*
|
|
6
|
+
* // app/p1/api/[...p1]/route.ts
|
|
7
|
+
* import { createP1Handler } from "@pantheon-systems/p1-next-sdk";
|
|
8
|
+
* import config from "../../../../puck.config";
|
|
9
|
+
* const handler = createP1Handler({ config });
|
|
10
|
+
* export const { GET, POST, DELETE } = handler;
|
|
11
|
+
*/
|
|
12
|
+
import type { Config } from "@puckeditor/core";
|
|
13
|
+
import { NextResponse } from "next/server";
|
|
14
|
+
import type { RemoteDatasourceFetcher, RemoteDatasourceDefinition } from "@pantheon-systems/puck-css/server";
|
|
15
|
+
import { type P1DataConfig } from "@pantheon-systems/puck-css/server";
|
|
16
|
+
export type P1HandlerConfig = P1DataConfig & {
|
|
17
|
+
config: Config;
|
|
18
|
+
builtinFetchers?: RemoteDatasourceFetcher[];
|
|
19
|
+
builtinDatasourceRegistry?: RemoteDatasourceDefinition[];
|
|
20
|
+
};
|
|
21
|
+
export declare function createP1Handler(opts: P1HandlerConfig): {
|
|
22
|
+
GET: (request: Request, { params }: {
|
|
23
|
+
params: Promise<{
|
|
24
|
+
p1?: string[];
|
|
25
|
+
}>;
|
|
26
|
+
}) => Promise<NextResponse<{
|
|
27
|
+
error: string;
|
|
28
|
+
}> | NextResponse<{
|
|
29
|
+
data: import("@puckeditor/core").Data;
|
|
30
|
+
}> | NextResponse<{
|
|
31
|
+
remoteDatasourceContext: {};
|
|
32
|
+
routes: import("@pantheon-systems/puck-css").RouteRow[];
|
|
33
|
+
routeTemplateKeys: string[];
|
|
34
|
+
savedPreviewParams: Record<string, string>;
|
|
35
|
+
remoteDatasourceRegistry: RemoteDatasourceDefinition[];
|
|
36
|
+
}> | NextResponse<{
|
|
37
|
+
id: string;
|
|
38
|
+
data: {};
|
|
39
|
+
}> | NextResponse<{
|
|
40
|
+
ok: boolean;
|
|
41
|
+
path: string;
|
|
42
|
+
global: import("@pantheon-systems/puck-css/server").HttpJsonRemoteDatasourceDefinition[];
|
|
43
|
+
page: import("@pantheon-systems/puck-css/server").HttpJsonRemoteDatasourceDefinition[];
|
|
44
|
+
}>>;
|
|
45
|
+
POST: (request: Request, { params }: {
|
|
46
|
+
params: Promise<{
|
|
47
|
+
p1?: string[];
|
|
48
|
+
}>;
|
|
49
|
+
}) => Promise<NextResponse<unknown>>;
|
|
50
|
+
DELETE: (request: Request, { params }: {
|
|
51
|
+
params: Promise<{
|
|
52
|
+
p1?: string[];
|
|
53
|
+
}>;
|
|
54
|
+
}) => Promise<NextResponse<unknown>>;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC7G,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAwBzF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC5C,yBAAyB,CAAC,EAAE,0BAA0B,EAAE,CAAC;CAC1D,CAAC;AAeF,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe;mBAIxC,OAAO,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE;;;;;;;;;;;;;;;;;;;oBAsBzC,OAAO,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE;sBAiBzC,OAAO,cACJ;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE;EAcrD"}
|
package/dist/handler.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P1 Next SDK handler — NextAuth-style catch-all for `/p1/api/[...p1]`.
|
|
3
|
+
*
|
|
4
|
+
* Usage in your Next.js app:
|
|
5
|
+
*
|
|
6
|
+
* // app/p1/api/[...p1]/route.ts
|
|
7
|
+
* import { createP1Handler } from "@pantheon-systems/p1-next-sdk";
|
|
8
|
+
* import config from "../../../../puck.config";
|
|
9
|
+
* const handler = createP1Handler({ config });
|
|
10
|
+
* export const { GET, POST, DELETE } = handler;
|
|
11
|
+
*/
|
|
12
|
+
import { NextResponse } from "next/server";
|
|
13
|
+
import { ensureInitialized } from "@pantheon-systems/puck-css/server";
|
|
14
|
+
import { runWithAuthToken } from "@pantheon-systems/puck-css/server";
|
|
15
|
+
import { getPageData, getRemoteDatasources, getEditorContext, getDatasourceContext, postPublish, postResolvePreview, postPreviewMeta, postRemoteDatasources, postStructure, deleteRemoteDatasources, deleteStructurePage, } from "./handler-actions";
|
|
16
|
+
/** Extract the sub-path segments from the catch-all `p1` param under `/p1/api/`. */
|
|
17
|
+
function parseP1Segments(p1) {
|
|
18
|
+
if (p1.length === 0)
|
|
19
|
+
return { action: "", rest: [] };
|
|
20
|
+
const [first, ...rest] = p1;
|
|
21
|
+
return { action: first, rest };
|
|
22
|
+
}
|
|
23
|
+
function extractBearerToken(request) {
|
|
24
|
+
const header = request.headers.get("authorization");
|
|
25
|
+
if (!header)
|
|
26
|
+
return undefined;
|
|
27
|
+
const match = header.match(/^Bearer\s+(.+)$/i);
|
|
28
|
+
return match?.[1];
|
|
29
|
+
}
|
|
30
|
+
function withAuth(request, fn) {
|
|
31
|
+
const token = extractBearerToken(request);
|
|
32
|
+
if (token)
|
|
33
|
+
return runWithAuthToken(token, fn);
|
|
34
|
+
return NextResponse.json({ error: "unauthorized" }, { status: 401 });
|
|
35
|
+
}
|
|
36
|
+
export function createP1Handler(opts) {
|
|
37
|
+
const initPromise = ensureInitialized(opts);
|
|
38
|
+
async function GET(request, { params }) {
|
|
39
|
+
await initPromise;
|
|
40
|
+
const { p1 = [] } = await params;
|
|
41
|
+
const { action } = parseP1Segments(p1);
|
|
42
|
+
if (action === "page-data")
|
|
43
|
+
return getPageData(request);
|
|
44
|
+
if (action === "datasources")
|
|
45
|
+
return getRemoteDatasources(request);
|
|
46
|
+
if (action === "editor-context")
|
|
47
|
+
return getEditorContext(request, {
|
|
48
|
+
builtinFetchers: opts.builtinFetchers,
|
|
49
|
+
builtinDatasourceRegistry: opts.builtinDatasourceRegistry,
|
|
50
|
+
});
|
|
51
|
+
if (action === "datasource-context")
|
|
52
|
+
return getDatasourceContext(request, {
|
|
53
|
+
builtinFetchers: opts.builtinFetchers,
|
|
54
|
+
});
|
|
55
|
+
return NextResponse.json({ error: "not_found" }, { status: 404 });
|
|
56
|
+
}
|
|
57
|
+
async function POST(request, { params }) {
|
|
58
|
+
await initPromise;
|
|
59
|
+
const { p1 = [] } = await params;
|
|
60
|
+
const { action, rest } = parseP1Segments(p1);
|
|
61
|
+
if (action === "publish")
|
|
62
|
+
return withAuth(request, () => postPublish(request));
|
|
63
|
+
if (action === "resolve-preview")
|
|
64
|
+
return postResolvePreview(request);
|
|
65
|
+
if (action === "preview-meta")
|
|
66
|
+
return postPreviewMeta(request);
|
|
67
|
+
if (action === "datasources")
|
|
68
|
+
return withAuth(request, () => postRemoteDatasources(request));
|
|
69
|
+
if (action === "structure" && (rest[0] === "page" || rest[0] === "template" || rest[0] === "override"))
|
|
70
|
+
return withAuth(request, () => postStructure(request, rest[0]));
|
|
71
|
+
return NextResponse.json({ error: "not_found" }, { status: 404 });
|
|
72
|
+
}
|
|
73
|
+
async function DELETE(request, { params }) {
|
|
74
|
+
await initPromise;
|
|
75
|
+
const { p1 = [] } = await params;
|
|
76
|
+
const { action, rest } = parseP1Segments(p1);
|
|
77
|
+
if (action === "datasources")
|
|
78
|
+
return withAuth(request, () => deleteRemoteDatasources(request));
|
|
79
|
+
if (action === "structure" && rest[0] === "page")
|
|
80
|
+
return withAuth(request, () => deleteStructurePage(request));
|
|
81
|
+
return NextResponse.json({ error: "not_found" }, { status: 404 });
|
|
82
|
+
}
|
|
83
|
+
return { GET, POST, DELETE };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../src/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P1 Next SDK page handler — provides page components for `/p1/[...p1]`.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* // app/p1/[...p1]/page.tsx
|
|
6
|
+
* import { createP1Pages } from "@pantheon-systems/p1-next-sdk";
|
|
7
|
+
* import config from "../../../puck.config";
|
|
8
|
+
* const pages = createP1Pages({ config });
|
|
9
|
+
* export default pages.Page;
|
|
10
|
+
* export const generateMetadata = pages.generateMetadata;
|
|
11
|
+
* export const dynamic = "force-dynamic";
|
|
12
|
+
*/
|
|
13
|
+
import "@puckeditor/core/puck.css";
|
|
14
|
+
import type { Config, Data } from "@puckeditor/core";
|
|
15
|
+
import type { Metadata } from "next";
|
|
16
|
+
import { type P1DataConfig } from "@pantheon-systems/puck-css/server";
|
|
17
|
+
export type P1PagesConfig = P1DataConfig & {
|
|
18
|
+
config: Config;
|
|
19
|
+
/** React component to render the editor. Receives only the page path; handles its own data loading and auth via P1App. */
|
|
20
|
+
EditorClient: React.ComponentType<{
|
|
21
|
+
path: string;
|
|
22
|
+
}>;
|
|
23
|
+
/** React component to render published pages. Provided by the consuming app's client wrapper. */
|
|
24
|
+
RenderClient: React.ComponentType<{
|
|
25
|
+
data: Data;
|
|
26
|
+
}>;
|
|
27
|
+
};
|
|
28
|
+
export declare function createP1Pages(opts: P1PagesConfig): {
|
|
29
|
+
Page: ({ params, }: {
|
|
30
|
+
params: Promise<{
|
|
31
|
+
p1?: string[];
|
|
32
|
+
}>;
|
|
33
|
+
}) => Promise<import("react/jsx-runtime").JSX.Element>;
|
|
34
|
+
generateMetadata: ({ params, }: {
|
|
35
|
+
params: Promise<{
|
|
36
|
+
p1?: string[];
|
|
37
|
+
}>;
|
|
38
|
+
}) => Promise<Metadata>;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=pages-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages-handler.d.ts","sourceRoot":"","sources":["../src/pages-handler.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,mCAAmC,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,0HAA0H;IAC1H,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,iGAAiG;IACjG,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC;KACZ,CAAC,CAAC;CACJ,CAAC;AAsBF,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa;wBAwB5C;QACD,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KACpC;oCApBE;QACD,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KACpC,KAAG,OAAO,CAAC,QAAQ,CAAC;EA+GtB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* P1 Next SDK page handler — provides page components for `/p1/[...p1]`.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* // app/p1/[...p1]/page.tsx
|
|
7
|
+
* import { createP1Pages } from "@pantheon-systems/p1-next-sdk";
|
|
8
|
+
* import config from "../../../puck.config";
|
|
9
|
+
* const pages = createP1Pages({ config });
|
|
10
|
+
* export default pages.Page;
|
|
11
|
+
* export const generateMetadata = pages.generateMetadata;
|
|
12
|
+
* export const dynamic = "force-dynamic";
|
|
13
|
+
*/
|
|
14
|
+
import "@puckeditor/core/puck.css";
|
|
15
|
+
import { listRoutes, pagePathFromCatchAllSegments, ensureInitialized, } from "@pantheon-systems/puck-css/server";
|
|
16
|
+
import { P1NextRouterProvider } from "./P1NextRouterProvider.js";
|
|
17
|
+
import { P1AuthShell } from "./P1AuthShell.js";
|
|
18
|
+
function parsePath(path) {
|
|
19
|
+
if (path.length === 0)
|
|
20
|
+
return { mode: "dashboard", pagePath: "/" };
|
|
21
|
+
const command = path[0];
|
|
22
|
+
// /p1/api/... is handled by the route handler, not the page
|
|
23
|
+
if (command === "api")
|
|
24
|
+
return { mode: "api", pagePath: "/" };
|
|
25
|
+
// /p1/structure
|
|
26
|
+
if (command === "structure")
|
|
27
|
+
return { mode: "structure", pagePath: "/" };
|
|
28
|
+
// /p1/edit/... -> editor for the path
|
|
29
|
+
if (command === "edit") {
|
|
30
|
+
const rest = path.slice(1);
|
|
31
|
+
return { mode: "editor", pagePath: pagePathFromCatchAllSegments(rest) };
|
|
32
|
+
}
|
|
33
|
+
// /p1/... (anything else) -> editor for that path
|
|
34
|
+
return { mode: "editor", pagePath: pagePathFromCatchAllSegments(path) };
|
|
35
|
+
}
|
|
36
|
+
export function createP1Pages(opts) {
|
|
37
|
+
const { EditorClient } = opts;
|
|
38
|
+
const initPromise = ensureInitialized(opts);
|
|
39
|
+
async function generateMetadata({ params, }) {
|
|
40
|
+
await initPromise;
|
|
41
|
+
const { p1 = [] } = await params;
|
|
42
|
+
const { mode, pagePath } = parsePath(p1);
|
|
43
|
+
if (mode === "dashboard") {
|
|
44
|
+
return { title: "P1 Dashboard" };
|
|
45
|
+
}
|
|
46
|
+
if (mode === "structure") {
|
|
47
|
+
return { title: "Site Structure" };
|
|
48
|
+
}
|
|
49
|
+
return { title: "P1 Editor: " + pagePath };
|
|
50
|
+
}
|
|
51
|
+
async function Page({ params, }) {
|
|
52
|
+
await initPromise;
|
|
53
|
+
const { p1 = [] } = await params;
|
|
54
|
+
const { mode, pagePath } = parsePath(p1);
|
|
55
|
+
// Dashboard
|
|
56
|
+
if (mode === "dashboard") {
|
|
57
|
+
let routes = [];
|
|
58
|
+
try {
|
|
59
|
+
routes = await listRoutes();
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Backend timeout or API error — show empty state
|
|
63
|
+
}
|
|
64
|
+
return (_jsx(P1AuthShell, { children: _jsxs("div", { style: {
|
|
65
|
+
fontFamily: "system-ui, sans-serif",
|
|
66
|
+
padding: "24px 32px",
|
|
67
|
+
maxWidth: 960,
|
|
68
|
+
}, children: [_jsx("h1", { style: { fontSize: 22, fontWeight: 600, margin: "0 0 16px" }, children: "P1 Dashboard" }), _jsx("p", { style: { color: "#555", marginBottom: 24 }, children: "Manage your site pages and templates." }), _jsx("div", { style: { display: "flex", gap: 12, marginBottom: 24 }, children: _jsx("a", { href: "/p1/structure", style: {
|
|
69
|
+
padding: "8px 16px",
|
|
70
|
+
background: "#2563eb",
|
|
71
|
+
color: "#fff",
|
|
72
|
+
borderRadius: 6,
|
|
73
|
+
textDecoration: "none",
|
|
74
|
+
fontSize: 14,
|
|
75
|
+
}, children: "Site Structure" }) }), routes.length > 0 ? (_jsx("ul", { style: { listStyle: "none", padding: 0 }, children: routes.map((r) => (_jsxs("li", { style: { marginBottom: 8 }, children: [_jsx("a", { href: `/p1${r.path === "/" ? "" : r.path}`, style: {
|
|
76
|
+
fontFamily: "ui-monospace, monospace",
|
|
77
|
+
fontSize: 14,
|
|
78
|
+
}, children: r.path }), _jsx("span", { style: { color: "#888", fontSize: 13, marginLeft: 8 }, children: r.kind })] }, r.path))) })) : (_jsx("p", { style: { color: "#666" }, children: "No pages yet. Use Site Structure to create one." }))] }) }));
|
|
79
|
+
}
|
|
80
|
+
// Structure page
|
|
81
|
+
if (mode === "structure") {
|
|
82
|
+
const { StructurePage } = await import("@pantheon-systems/puck-css/server");
|
|
83
|
+
return (_jsx(P1AuthShell, { children: _jsx(P1NextRouterProvider, { children: _jsx(StructurePage, {}) }) }));
|
|
84
|
+
}
|
|
85
|
+
// Editor — P1App handles auth and data loading client-side
|
|
86
|
+
if (mode === "editor") {
|
|
87
|
+
return _jsx(EditorClient, { path: pagePath });
|
|
88
|
+
}
|
|
89
|
+
return _jsx("div", { children: "Not found" });
|
|
90
|
+
}
|
|
91
|
+
return { Page, generateMetadata };
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=pages-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages-handler.js","sourceRoot":"","sources":["../src/pages-handler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
export declare function postBrokerLogin(request: Request, apiKey: string | undefined, baseUrl: string | undefined, redirectUrl?: string, prompt?: string): Promise<NextResponse<any>>;
|
|
3
|
+
export declare function postBrokerRedeem(request: Request, apiKey: string | undefined, baseUrl: string | undefined): Promise<NextResponse<any>>;
|
|
4
|
+
//# sourceMappingURL=broker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/routes/broker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,8BAmChB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,8BA0C5B"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
export async function postBrokerLogin(request, apiKey, baseUrl, redirectUrl, prompt) {
|
|
3
|
+
if (!apiKey || !baseUrl) {
|
|
4
|
+
return NextResponse.json({ error: "Server configuration error" }, { status: 500 });
|
|
5
|
+
}
|
|
6
|
+
const headers = {
|
|
7
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
8
|
+
};
|
|
9
|
+
const fetchInit = {
|
|
10
|
+
method: "POST",
|
|
11
|
+
headers,
|
|
12
|
+
};
|
|
13
|
+
const requestUrl = new URL(request.url);
|
|
14
|
+
const basePath = requestUrl.pathname.replace(/\/auth\/.*$/, '') || '/';
|
|
15
|
+
const effectiveRedirectUrl = redirectUrl ?? requestUrl.origin + basePath;
|
|
16
|
+
headers["Content-Type"] = "application/json";
|
|
17
|
+
fetchInit.body = JSON.stringify({
|
|
18
|
+
redirectUrl: effectiveRedirectUrl,
|
|
19
|
+
...(prompt !== undefined ? { prompt } : {}),
|
|
20
|
+
});
|
|
21
|
+
const response = await fetch(`${baseUrl}/broker/login`, fetchInit);
|
|
22
|
+
const body = await response.json().catch(() => ({ error: "Unknown error" }));
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
return NextResponse.json(body, { status: response.status });
|
|
25
|
+
}
|
|
26
|
+
return NextResponse.json(body);
|
|
27
|
+
}
|
|
28
|
+
export async function postBrokerRedeem(request, apiKey, baseUrl) {
|
|
29
|
+
if (!apiKey || !baseUrl) {
|
|
30
|
+
return NextResponse.json({ error: "Server configuration error" }, { status: 500 });
|
|
31
|
+
}
|
|
32
|
+
let parsed;
|
|
33
|
+
try {
|
|
34
|
+
parsed = await request.json();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return NextResponse.json({ error: "Invalid JSON body" }, { status: 400 });
|
|
38
|
+
}
|
|
39
|
+
if (!parsed.transactionId) {
|
|
40
|
+
return NextResponse.json({ error: "Missing transactionId" }, { status: 400 });
|
|
41
|
+
}
|
|
42
|
+
const response = await fetch(`${baseUrl}/broker/redeem`, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: {
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
47
|
+
},
|
|
48
|
+
body: JSON.stringify({ transactionId: parsed.transactionId }),
|
|
49
|
+
});
|
|
50
|
+
const body = await response.json().catch(() => ({ error: "Unknown error" }));
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
return NextResponse.json(body, { status: response.status });
|
|
53
|
+
}
|
|
54
|
+
return NextResponse.json(body);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=broker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/routes/broker.ts"],"names":[],"mappings":"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"}
|