@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.
Files changed (69) hide show
  1. package/dist/P1AuthShell.d.ts +5 -0
  2. package/dist/P1AuthShell.d.ts.map +1 -0
  3. package/dist/P1AuthShell.js +83 -0
  4. package/dist/P1AuthShell.js.map +1 -0
  5. package/dist/P1NextRouterProvider.d.ts +5 -0
  6. package/dist/P1NextRouterProvider.d.ts.map +1 -0
  7. package/dist/P1NextRouterProvider.js +18 -0
  8. package/dist/P1NextRouterProvider.js.map +1 -0
  9. package/dist/auth-handler.d.ts +15 -0
  10. package/dist/auth-handler.d.ts.map +1 -0
  11. package/dist/auth-handler.js +17 -0
  12. package/dist/auth-handler.js.map +1 -0
  13. package/dist/handler-actions.d.ts +15 -0
  14. package/dist/handler-actions.d.ts.map +1 -0
  15. package/dist/handler-actions.js +15 -0
  16. package/dist/handler-actions.js.map +1 -0
  17. package/dist/handler.d.ts +56 -0
  18. package/dist/handler.d.ts.map +1 -0
  19. package/dist/handler.js +85 -0
  20. package/dist/handler.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/pages-handler.d.ts +40 -0
  26. package/dist/pages-handler.d.ts.map +1 -0
  27. package/dist/pages-handler.js +93 -0
  28. package/dist/pages-handler.js.map +1 -0
  29. package/dist/routes/broker.d.ts +4 -0
  30. package/dist/routes/broker.d.ts.map +1 -0
  31. package/dist/routes/broker.js +56 -0
  32. package/dist/routes/broker.js.map +1 -0
  33. package/dist/routes/datasource-context.d.ts +12 -0
  34. package/dist/routes/datasource-context.d.ts.map +1 -0
  35. package/dist/routes/datasource-context.js +29 -0
  36. package/dist/routes/datasource-context.js.map +1 -0
  37. package/dist/routes/editor-context.d.ts +16 -0
  38. package/dist/routes/editor-context.d.ts.map +1 -0
  39. package/dist/routes/editor-context.js +25 -0
  40. package/dist/routes/editor-context.js.map +1 -0
  41. package/dist/routes/page-data.d.ts +8 -0
  42. package/dist/routes/page-data.d.ts.map +1 -0
  43. package/dist/routes/page-data.js +17 -0
  44. package/dist/routes/page-data.js.map +1 -0
  45. package/dist/routes/preview-meta.d.ts +10 -0
  46. package/dist/routes/preview-meta.d.ts.map +1 -0
  47. package/dist/routes/preview-meta.js +24 -0
  48. package/dist/routes/preview-meta.js.map +1 -0
  49. package/dist/routes/publish.d.ts +8 -0
  50. package/dist/routes/publish.d.ts.map +1 -0
  51. package/dist/routes/publish.js +20 -0
  52. package/dist/routes/publish.js.map +1 -0
  53. package/dist/routes/remote-datasources-api.d.ts +30 -0
  54. package/dist/routes/remote-datasources-api.d.ts.map +1 -0
  55. package/dist/routes/remote-datasources-api.js +81 -0
  56. package/dist/routes/remote-datasources-api.js.map +1 -0
  57. package/dist/routes/resolve-preview.d.ts +9 -0
  58. package/dist/routes/resolve-preview.d.ts.map +1 -0
  59. package/dist/routes/resolve-preview.js +17 -0
  60. package/dist/routes/resolve-preview.js.map +1 -0
  61. package/dist/routes/structure.d.ts +18 -0
  62. package/dist/routes/structure.d.ts.map +1 -0
  63. package/dist/routes/structure.js +45 -0
  64. package/dist/routes/structure.js.map +1 -0
  65. package/dist/server.d.ts +4 -0
  66. package/dist/server.d.ts.map +1 -0
  67. package/dist/server.js +4 -0
  68. package/dist/server.js.map +1 -0
  69. package/package.json +52 -0
@@ -0,0 +1,12 @@
1
+ import { NextResponse } from "next/server";
2
+ import type { RemoteDatasourceFetcher } from "@pantheon-systems/puck-css/server";
3
+ export interface DatasourceContextOptions {
4
+ builtinFetchers?: RemoteDatasourceFetcher[];
5
+ }
6
+ export declare function getDatasourceContext(request: Request, options: DatasourceContextOptions): Promise<NextResponse<{
7
+ error: string;
8
+ }> | NextResponse<{
9
+ id: string;
10
+ data: {};
11
+ }>>;
12
+ //# sourceMappingURL=datasource-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasource-context.d.ts","sourceRoot":"","sources":["../../src/routes/datasource-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,OAAO,KAAK,EACV,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,WAAW,wBAAwB;IACvC,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAC7C;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,wBAAwB;;;;;IAgClC"}
@@ -0,0 +1,29 @@
1
+ import { NextResponse } from "next/server";
2
+ import { normalizePath, listRouteTemplateKeysFromDatabase, getPageEditorPreviewParams, loadRemoteDatasourceContext, } from "@pantheon-systems/puck-css/server";
3
+ export async function getDatasourceContext(request, options) {
4
+ const url = new URL(request.url);
5
+ const rawPath = url.searchParams.get("path") ?? "/";
6
+ const id = url.searchParams.get("id");
7
+ if (!id) {
8
+ return NextResponse.json({ error: "missing_id" }, { status: 400 });
9
+ }
10
+ const path = rawPath === "/" ? "/" : normalizePath(rawPath);
11
+ if (path === null) {
12
+ return NextResponse.json({ error: "invalid_path" }, { status: 400 });
13
+ }
14
+ const [routeTemplateKeys, savedPreviewParams] = await Promise.all([
15
+ listRouteTemplateKeysFromDatabase(),
16
+ Promise.resolve(getPageEditorPreviewParams(path)),
17
+ ]);
18
+ const referencedDatasourceIds = new Set([id]);
19
+ const context = await loadRemoteDatasourceContext({
20
+ searchParams: Object.fromEntries(url.searchParams.entries()),
21
+ pagePath: path,
22
+ routeTemplateKeys,
23
+ savedPreviewParams,
24
+ builtinFetchers: options.builtinFetchers,
25
+ referencedDatasourceIds,
26
+ });
27
+ return NextResponse.json({ id, data: context[id] ?? {} });
28
+ }
29
+ //# sourceMappingURL=datasource-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasource-context.js","sourceRoot":"","sources":["../../src/routes/datasource-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,aAAa,EACb,iCAAiC,EACjC,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAS3C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAgB,EAChB,OAAiC;IAEjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IACpD,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChE,iCAAiC,EAAE;QACnC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;KAClD,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,MAAM,2BAA2B,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5D,QAAQ,EAAE,IAAI;QACd,iBAAiB;QACjB,kBAAkB;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,uBAAuB;KACxB,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { NextResponse } from "next/server";
2
+ import type { RemoteDatasourceFetcher, RemoteDatasourceDefinition } from "@pantheon-systems/puck-css/server";
3
+ export interface EditorContextOptions {
4
+ builtinFetchers?: RemoteDatasourceFetcher[];
5
+ builtinDatasourceRegistry?: RemoteDatasourceDefinition[];
6
+ }
7
+ export declare function getEditorContext(request: Request, options: EditorContextOptions): Promise<NextResponse<{
8
+ error: string;
9
+ }> | NextResponse<{
10
+ remoteDatasourceContext: {};
11
+ routes: import("@pantheon-systems/puck-css").RouteRow[];
12
+ routeTemplateKeys: string[];
13
+ savedPreviewParams: Record<string, string>;
14
+ remoteDatasourceRegistry: RemoteDatasourceDefinition[];
15
+ }>>;
16
+ //# sourceMappingURL=editor-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-context.d.ts","sourceRoot":"","sources":["../../src/routes/editor-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,mCAAmC,CAAC;AAE3C,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAC5C,yBAAyB,CAAC,EAAE,0BAA0B,EAAE,CAAC;CAC1D;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,oBAAoB;;;;;;;;IA8B9B"}
@@ -0,0 +1,25 @@
1
+ import { NextResponse } from "next/server";
2
+ import { normalizePath, listRoutes, listRouteTemplateKeysFromDatabase, getPageEditorPreviewParams, buildRemoteDatasourceRegistry, listRemoteDatasourcesForPage, } from "@pantheon-systems/puck-css/server";
3
+ export async function getEditorContext(request, options) {
4
+ const url = new URL(request.url);
5
+ const rawPath = url.searchParams.get("path") ?? "/";
6
+ const path = rawPath === "/" ? "/" : normalizePath(rawPath);
7
+ if (path === null) {
8
+ return NextResponse.json({ error: "invalid_path" }, { status: 400 });
9
+ }
10
+ const [routes, routeTemplateKeys, savedPreviewParams, userDefs] = await Promise.all([
11
+ listRoutes(),
12
+ listRouteTemplateKeysFromDatabase(),
13
+ Promise.resolve(getPageEditorPreviewParams(path)),
14
+ Promise.resolve(listRemoteDatasourcesForPage(path)),
15
+ ]);
16
+ const remoteDatasourceRegistry = buildRemoteDatasourceRegistry(options.builtinDatasourceRegistry ?? [], userDefs.global, userDefs.page);
17
+ return NextResponse.json({
18
+ remoteDatasourceContext: {},
19
+ routes,
20
+ routeTemplateKeys,
21
+ savedPreviewParams,
22
+ remoteDatasourceRegistry,
23
+ });
24
+ }
25
+ //# sourceMappingURL=editor-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-context.js","sourceRoot":"","sources":["../../src/routes/editor-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,aAAa,EACb,UAAU,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC;AAW3C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgB,EAChB,OAA6B;IAE7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IACpD,MAAM,IAAI,GAAG,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,CAAC,GAC7D,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,UAAU,EAAE;QACZ,iCAAiC,EAAE;QACnC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;KACpD,CAAC,CAAC;IAEL,MAAM,wBAAwB,GAAG,6BAA6B,CAC5D,OAAO,CAAC,yBAAyB,IAAI,EAAE,EACvC,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,IAAI,CACd,CAAC;IAEF,OAAO,YAAY,CAAC,IAAI,CAAC;QACvB,uBAAuB,EAAE,EAAE;QAC3B,MAAM;QACN,iBAAiB;QACjB,kBAAkB;QAClB,wBAAwB;KACzB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { NextResponse } from "next/server";
2
+ export declare function getPageData(request: Request): Promise<NextResponse<{
3
+ error: string;
4
+ }> | NextResponse<{
5
+ data: import("@puckeditor/core").Data;
6
+ }>>;
7
+ export { getPageData as GET };
8
+ //# sourceMappingURL=page-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-data.d.ts","sourceRoot":"","sources":["../../src/routes/page-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO;;;;IAYjD;AAED,OAAO,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { NextResponse } from "next/server";
2
+ import { getPage, normalizePath } from "@pantheon-systems/puck-css/server";
3
+ export async function getPageData(request) {
4
+ const url = new URL(request.url);
5
+ const raw = url.searchParams.get("path") ?? "/";
6
+ const path = raw === "/" ? "/" : normalizePath(raw);
7
+ if (path === null) {
8
+ return NextResponse.json({ error: "invalid_path" }, { status: 400 });
9
+ }
10
+ const data = await getPage(path);
11
+ if (!data) {
12
+ return NextResponse.json({ error: "not_found" }, { status: 404 });
13
+ }
14
+ return NextResponse.json({ data });
15
+ }
16
+ export { getPageData as GET };
17
+ //# sourceMappingURL=page-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-data.js","sourceRoot":"","sources":["../../src/routes/page-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAE3E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAgB;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IAChD,MAAM,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { NextResponse } from "next/server";
2
+ export { postPreviewMeta as POST };
3
+ export declare function postPreviewMeta(request: Request): Promise<NextResponse<{
4
+ ok: boolean;
5
+ error: string;
6
+ }> | NextResponse<{
7
+ ok: boolean;
8
+ path: string;
9
+ }>>;
10
+ //# sourceMappingURL=preview-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-meta.d.ts","sourceRoot":"","sources":["../../src/routes/preview-meta.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,CAAC;AAEnC,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO;;;;;;IAsBrD"}
@@ -0,0 +1,24 @@
1
+ import { revalidatePath } from "next/cache";
2
+ import { NextResponse } from "next/server";
3
+ import { setPageEditorPreviewParams, normalizePath } from "@pantheon-systems/puck-css/server";
4
+ export { postPreviewMeta as POST };
5
+ export async function postPreviewMeta(request) {
6
+ let body;
7
+ try {
8
+ body = (await request.json());
9
+ }
10
+ catch {
11
+ return NextResponse.json({ ok: false, error: "invalid_json" }, { status: 400 });
12
+ }
13
+ const previewParams = body.previewParams && typeof body.previewParams === "object" && !Array.isArray(body.previewParams)
14
+ ? body.previewParams
15
+ : {};
16
+ const normalized = normalizePath(body.path);
17
+ if (!normalized) {
18
+ return NextResponse.json({ ok: false, error: "Invalid or reserved path" }, { status: 400 });
19
+ }
20
+ setPageEditorPreviewParams(normalized, previewParams);
21
+ revalidatePath(normalized);
22
+ return NextResponse.json({ ok: true, path: normalized });
23
+ }
24
+ //# sourceMappingURL=preview-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-meta.js","sourceRoot":"","sources":["../../src/routes/preview-meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAE9F,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB;IACpD,IAAI,IAA+D,CAAC;IACpE,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAgB,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,aAAa,GACjB,IAAI,CAAC,aAAa,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAChG,CAAC,CAAC,IAAI,CAAC,aAAa;QACpB,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,0BAA0B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,CAAC;IAE3B,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { NextResponse } from "next/server";
2
+ export { postPublish as POST };
3
+ export declare function postPublish(request: Request): Promise<NextResponse<{
4
+ error: string;
5
+ }> | NextResponse<{
6
+ status: string;
7
+ }>>;
8
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/routes/publish.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC;AAE/B,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO;;;;IAkBjD"}
@@ -0,0 +1,20 @@
1
+ import { revalidatePath } from "next/cache";
2
+ import { NextResponse } from "next/server";
3
+ import { isRouteTemplatePath, normalizePath, listOverridePathsForBase, persistPublishedPage, } from "@pantheon-systems/puck-css/server";
4
+ export { postPublish as POST };
5
+ export async function postPublish(request) {
6
+ const payload = (await request.json());
7
+ const path = payload.path === "/" ? "/" : normalizePath(payload.path);
8
+ if (path === null) {
9
+ return NextResponse.json({ error: "invalid_path" }, { status: 400 });
10
+ }
11
+ await persistPublishedPage(path, payload.data);
12
+ revalidatePath(path);
13
+ if (isRouteTemplatePath(path)) {
14
+ for (const p of await listOverridePathsForBase(path)) {
15
+ revalidatePath(p);
16
+ }
17
+ }
18
+ return NextResponse.json({ status: "ok" });
19
+ }
20
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/routes/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAgB;IAChD,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAiC,CAAC;IAEvE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,cAAc,CAAC,IAAI,CAAC,CAAC;IAErB,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,cAAc,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { NextResponse } from "next/server";
2
+ export { getRemoteDatasources as GET, postRemoteDatasources as POST, deleteRemoteDatasources as DELETE };
3
+ export declare function getRemoteDatasources(request: Request): Promise<NextResponse<{
4
+ ok: boolean;
5
+ error: string;
6
+ }> | NextResponse<{
7
+ ok: boolean;
8
+ path: string;
9
+ global: import("@pantheon-systems/puck-css/server").HttpJsonRemoteDatasourceDefinition[];
10
+ page: import("@pantheon-systems/puck-css/server").HttpJsonRemoteDatasourceDefinition[];
11
+ }>>;
12
+ export declare function postRemoteDatasources(request: Request): Promise<NextResponse<{
13
+ ok: boolean;
14
+ error: string;
15
+ }> | NextResponse<{
16
+ ok: boolean;
17
+ scope: "global" | "page";
18
+ path: string;
19
+ id: string;
20
+ }>>;
21
+ export declare function deleteRemoteDatasources(request: Request): Promise<NextResponse<{
22
+ ok: boolean;
23
+ error: string;
24
+ }> | NextResponse<{
25
+ ok: boolean;
26
+ scope: "global" | "page";
27
+ path: string;
28
+ id: string;
29
+ }>>;
30
+ //# sourceMappingURL=remote-datasources-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-datasources-api.d.ts","sourceRoot":"","sources":["../../src/routes/remote-datasources-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAc3C,OAAO,EAAE,oBAAoB,IAAI,GAAG,EAAE,qBAAqB,IAAI,IAAI,EAAE,uBAAuB,IAAI,MAAM,EAAE,CAAC;AAEzG,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO;;;;;;;;IAgB1D;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,OAAO;;;;;;;;IAsD3D;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,OAAO;;;;;;;;IA2C7D"}
@@ -0,0 +1,81 @@
1
+ import { revalidatePath } from "next/cache";
2
+ import { NextResponse } from "next/server";
3
+ import { deleteGlobalRemoteDatasource, deletePageRemoteDatasource, idConflictsForRemoteDatasourceScope, listRemoteDatasourcesForPage, normalizeRemoteDatasourceDefinition, upsertGlobalRemoteDatasource, upsertPageRemoteDatasource, } from "@pantheon-systems/puck-css/server";
4
+ import { normalizePath } from "@pantheon-systems/puck-css/server";
5
+ export { getRemoteDatasources as GET, postRemoteDatasources as POST, deleteRemoteDatasources as DELETE };
6
+ export async function getRemoteDatasources(request) {
7
+ const url = new URL(request.url);
8
+ const path = normalizePath(url.searchParams.get("path") ?? "/");
9
+ if (!path) {
10
+ return NextResponse.json({ ok: false, error: "invalid_path" }, { status: 400 });
11
+ }
12
+ const data = listRemoteDatasourcesForPage(path);
13
+ return NextResponse.json({
14
+ ok: true,
15
+ path,
16
+ global: data.global,
17
+ page: data.page,
18
+ });
19
+ }
20
+ export async function postRemoteDatasources(request) {
21
+ let body;
22
+ try {
23
+ body = (await request.json());
24
+ }
25
+ catch {
26
+ return NextResponse.json({ ok: false, error: "invalid_json" }, { status: 400 });
27
+ }
28
+ const scope = body.scope;
29
+ if (scope !== "global" && scope !== "page") {
30
+ return NextResponse.json({ ok: false, error: "invalid_scope" }, { status: 400 });
31
+ }
32
+ const path = normalizePath(body.path ?? "/");
33
+ if (!path) {
34
+ return NextResponse.json({ ok: false, error: "invalid_path" }, { status: 400 });
35
+ }
36
+ const definition = normalizeRemoteDatasourceDefinition(body.definition);
37
+ if (!definition) {
38
+ return NextResponse.json({ ok: false, error: "invalid_definition" }, { status: 400 });
39
+ }
40
+ else if (idConflictsForRemoteDatasourceScope(scope, definition.id, path)) {
41
+ return NextResponse.json({ ok: false, error: "id_conflict" }, { status: 409 });
42
+ }
43
+ if (scope === "global") {
44
+ upsertGlobalRemoteDatasource(definition);
45
+ }
46
+ else {
47
+ upsertPageRemoteDatasource(path, definition);
48
+ }
49
+ revalidatePath(path);
50
+ return NextResponse.json({ ok: true, scope, path, id: definition.id });
51
+ }
52
+ export async function deleteRemoteDatasources(request) {
53
+ let body;
54
+ try {
55
+ body = (await request.json());
56
+ }
57
+ catch {
58
+ return NextResponse.json({ ok: false, error: "invalid_json" }, { status: 400 });
59
+ }
60
+ const scope = body.scope;
61
+ if (scope !== "global" && scope !== "page") {
62
+ return NextResponse.json({ ok: false, error: "invalid_scope" }, { status: 400 });
63
+ }
64
+ const path = normalizePath(body.path ?? "/");
65
+ if (!path) {
66
+ return NextResponse.json({ ok: false, error: "invalid_path" }, { status: 400 });
67
+ }
68
+ const id = typeof body.id === "string" ? body.id.trim() : "";
69
+ if (!id) {
70
+ return NextResponse.json({ ok: false, error: "invalid_id" }, { status: 400 });
71
+ }
72
+ if (scope === "global") {
73
+ deleteGlobalRemoteDatasource(id);
74
+ }
75
+ else {
76
+ deletePageRemoteDatasource(path, id);
77
+ }
78
+ revalidatePath(path);
79
+ return NextResponse.json({ ok: true, scope, path, id });
80
+ }
81
+ //# sourceMappingURL=remote-datasources-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-datasources-api.js","sourceRoot":"","sources":["../../src/routes/remote-datasources-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Data } from "@puckeditor/core";
2
+ import { NextResponse } from "next/server";
3
+ export { postResolvePreview as POST };
4
+ export declare function postResolvePreview(request: Request): Promise<NextResponse<{
5
+ error: string;
6
+ }> | NextResponse<{
7
+ data: Partial<Data>;
8
+ }>>;
9
+ //# sourceMappingURL=resolve-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-preview.d.ts","sourceRoot":"","sources":["../../src/routes/resolve-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,EAAE,kBAAkB,IAAI,IAAI,EAAE,CAAC;AAEtC,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO;;;;IAaxD"}
@@ -0,0 +1,17 @@
1
+ import { NextResponse } from "next/server";
2
+ import { resolveDataTemplates } from "@pantheon-systems/puck-css/server";
3
+ export { postResolvePreview as POST };
4
+ export async function postResolvePreview(request) {
5
+ let body;
6
+ try {
7
+ body = (await request.json());
8
+ }
9
+ catch {
10
+ return NextResponse.json({ error: "invalid_json" }, { status: 400 });
11
+ }
12
+ const data = body.data ?? {};
13
+ const datasourceContext = body.datasourceContext ?? {};
14
+ const resolved = await resolveDataTemplates(data, datasourceContext);
15
+ return NextResponse.json({ data: resolved });
16
+ }
17
+ //# sourceMappingURL=resolve-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-preview.js","sourceRoot":"","sources":["../../src/routes/resolve-preview.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,IAAI,IAAI,EAAE,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAgB;IACvD,IAAI,IAA2E,CAAC;IAChF,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAgB,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,IAAqB,EAAE,iBAAiB,CAAC,CAAC;IACtF,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { NextResponse } from "next/server";
2
+ type StructureKind = "page" | "template" | "override";
3
+ export declare function postStructure(request: Request, kind: StructureKind): Promise<NextResponse<{
4
+ ok: boolean;
5
+ error: string;
6
+ }> | NextResponse<{
7
+ ok: boolean;
8
+ path: string;
9
+ }>>;
10
+ export declare function deleteStructurePage(request: Request): Promise<NextResponse<{
11
+ ok: boolean;
12
+ error: string;
13
+ }> | NextResponse<{
14
+ ok: boolean;
15
+ deletedPaths: string[];
16
+ }>>;
17
+ export {};
18
+ //# sourceMappingURL=structure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../src/routes/structure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAQtD,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa;;;;;;IAaxE;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO;;;;;;IAoBzD"}
@@ -0,0 +1,45 @@
1
+ import { revalidatePath } from "next/cache";
2
+ import { NextResponse } from "next/server";
3
+ import { createStaticPage, createCollectionTemplate, createCollectionOverride, deletePageAtPath, } from "@pantheon-systems/puck-css/server";
4
+ const structureCreators = {
5
+ page: createStaticPage,
6
+ template: createCollectionTemplate,
7
+ override: createCollectionOverride,
8
+ };
9
+ export async function postStructure(request, kind) {
10
+ const body = (await request.json());
11
+ const path = typeof body.path === "string" ? body.path.trim() : "";
12
+ if (!path) {
13
+ return NextResponse.json({ ok: false, error: "Missing path" }, { status: 400 });
14
+ }
15
+ const result = await structureCreators[kind](path);
16
+ if (result.ok === false) {
17
+ return NextResponse.json({ ok: false, error: result.error }, { status: 400 });
18
+ }
19
+ revalidatePath(result.path);
20
+ revalidatePath("/p1");
21
+ return NextResponse.json({ ok: true, path: result.path });
22
+ }
23
+ export async function deleteStructurePage(request) {
24
+ let body;
25
+ try {
26
+ body = (await request.json());
27
+ }
28
+ catch {
29
+ return NextResponse.json({ ok: false, error: "invalid_json" }, { status: 400 });
30
+ }
31
+ const path = typeof body.path === "string" ? body.path.trim() : "";
32
+ if (!path) {
33
+ return NextResponse.json({ ok: false, error: "Missing path" }, { status: 400 });
34
+ }
35
+ const result = await deletePageAtPath(path);
36
+ if (result.ok === false) {
37
+ return NextResponse.json({ ok: false, error: result.error }, { status: 400 });
38
+ }
39
+ for (const p of result.deletedPaths) {
40
+ revalidatePath(p);
41
+ }
42
+ revalidatePath("/p1");
43
+ return NextResponse.json({ ok: true, deletedPaths: result.deletedPaths });
44
+ }
45
+ //# sourceMappingURL=structure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/routes/structure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { createP1Handler, type P1HandlerConfig } from "./handler";
2
+ export { createP1AuthHandler, type P1AuthHandlerConfig } from "./auth-handler";
3
+ export { createP1Pages, type P1PagesConfig } from "./pages-handler";
4
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/server.js ADDED
@@ -0,0 +1,4 @@
1
+ export { createP1Handler } from "./handler";
2
+ export { createP1AuthHandler } from "./auth-handler";
3
+ export { createP1Pages } from "./pages-handler";
4
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwB,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAA4B,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@pantheon-systems/p1-next-sdk",
3
+ "version": "0.1.0",
4
+ "description": "Next.js SDK for P1 editor integration",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/pantheon-systems/puck-css-integration.git",
8
+ "directory": "packages/p1-next-sdk"
9
+ },
10
+ "type": "module",
11
+ "main": "./dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "import": "./dist/index.js",
16
+ "types": "./dist/index.d.ts"
17
+ },
18
+ "./server": {
19
+ "import": "./dist/server.js",
20
+ "types": "./dist/server.d.ts"
21
+ }
22
+ },
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "dependencies": {
27
+ "server-only": "^0.0.1",
28
+ "@pantheon-systems/puck-css": "0.4.0"
29
+ },
30
+ "peerDependencies": {
31
+ "@puckeditor/core": ">=0.21.0",
32
+ "next": ">=14.0.0",
33
+ "react": ">=18.0.0",
34
+ "react-dom": ">=18.0.0"
35
+ },
36
+ "devDependencies": {
37
+ "@testing-library/dom": "^10.4.1",
38
+ "@testing-library/react": "^16.3.2",
39
+ "@types/react": "^19.2.14",
40
+ "eslint": "^9.27.0",
41
+ "jsdom": "^24.1.3",
42
+ "typescript": "^5.9.3",
43
+ "vitest": "^4.1.5",
44
+ "@pantheon-systems/eslint-config": "0.1.0"
45
+ },
46
+ "scripts": {
47
+ "build": "tsc",
48
+ "clean": "rm -rf dist *.tsbuildinfo",
49
+ "test": "vitest run",
50
+ "lint": "eslint src"
51
+ }
52
+ }