@payload-onpage/plugin 0.2.1 → 0.3.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/access.d.ts +7 -4
- package/dist/access.d.ts.map +1 -1
- package/dist/access.js +23 -20
- package/dist/access.js.map +1 -1
- package/dist/admin/OnPageAdminControls.d.ts +3 -2
- package/dist/admin/OnPageAdminControls.d.ts.map +1 -1
- package/dist/admin/OnPageAdminControls.js +12 -8
- package/dist/admin/OnPageAdminControls.js.map +1 -1
- package/dist/endpoints.d.ts +22 -6
- package/dist/endpoints.d.ts.map +1 -1
- package/dist/endpoints.js +87 -80
- package/dist/endpoints.js.map +1 -1
- package/dist/hooks.d.ts +11 -5
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +2 -2
- package/dist/hooks.js.map +1 -1
- package/dist/http.d.ts +18 -4
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +30 -16
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -50
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +22 -11
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +11 -3
- package/dist/options.js.map +1 -1
- package/dist/paths.d.ts +2 -2
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +11 -24
- package/dist/paths.js.map +1 -1
- package/dist/schema.d.ts +6 -4
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +115 -62
- package/dist/schema.js.map +1 -1
- package/dist/translations.d.ts +12 -1
- package/dist/translations.d.ts.map +1 -1
- package/dist/translations.js +10 -9
- package/dist/translations.js.map +1 -1
- package/package.json +2 -2
- package/src/access.ts +26 -19
- package/src/admin/OnPageAdminControls.tsx +16 -16
- package/src/endpoints.ts +105 -98
- package/src/hooks.ts +14 -5
- package/src/http.ts +51 -15
- package/src/index.ts +77 -64
- package/src/options.ts +29 -17
- package/src/paths.ts +14 -27
- package/src/schema.ts +137 -79
- package/src/translations.ts +17 -11
package/dist/hooks.d.ts
CHANGED
|
@@ -4,15 +4,21 @@
|
|
|
4
4
|
* - beforeValidate/beforeChange: strip markers from every write, so they can't be stored
|
|
5
5
|
* - beforeChange: stale-write guard (409) when the editor sends the version it last saw
|
|
6
6
|
*/
|
|
7
|
-
import { type EncodeFilter, type SchemaField } from '@payload-onpage/core';
|
|
8
|
-
import { type PayloadRequest } from 'payload';
|
|
7
|
+
import { CONTEXT_KEY, type DocRef, type EncodeFilter, type SchemaField } from '@payload-onpage/core';
|
|
8
|
+
import { type PayloadRequest, type RequestContext } from 'payload';
|
|
9
|
+
declare module 'payload' {
|
|
10
|
+
interface RequestContext {
|
|
11
|
+
/** Set by `onpageContext()`: this read should carry auto-mapping markers. */
|
|
12
|
+
[CONTEXT_KEY]?: boolean;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
9
15
|
/** True when a read asked for auto-mapping markers (see `onpageContext()`). */
|
|
10
|
-
export declare const wantsMarkers: (context:
|
|
16
|
+
export declare const wantsMarkers: (context: RequestContext | undefined) => boolean;
|
|
11
17
|
export declare const stripMarkers: ({ data }: {
|
|
12
18
|
data?: unknown;
|
|
13
19
|
}) => unknown;
|
|
14
20
|
export declare function encodeOnRead(opts: {
|
|
15
|
-
kind: '
|
|
21
|
+
kind: DocRef['kind'];
|
|
16
22
|
slug: string;
|
|
17
23
|
fields: () => SchemaField[];
|
|
18
24
|
only?: string[];
|
|
@@ -20,7 +26,7 @@ export declare function encodeOnRead(opts: {
|
|
|
20
26
|
}): ({ doc, req, context, }: {
|
|
21
27
|
doc: Record<string, unknown>;
|
|
22
28
|
req: PayloadRequest;
|
|
23
|
-
context:
|
|
29
|
+
context: RequestContext;
|
|
24
30
|
}) => Record<string, unknown>;
|
|
25
31
|
/**
|
|
26
32
|
* Optimistic concurrency: the editor sends `x-onpage-if-unmodified-since` with
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,WAAW,EAKX,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAE5E,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,cAAc;QACtB,6EAA6E;QAC7E,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAA;KACxB;CACF;AAED,+EAA+E;AAC/E,eAAO,MAAM,YAAY,GAAI,SAAS,cAAc,GAAG,SAAS,KAAG,OAClC,CAAA;AAEjC,eAAO,MAAM,YAAY,GAAI,UAAU;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,YAAyC,CAAA;AAElG,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,WAAW,EAAE,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB,IACS,wBAIL;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,GAAG,EAAE,cAAc,CAAA;IACnB,OAAO,EAAE,cAAc,CAAA;CACxB,6BAYF;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,6BAIhC;IACD,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CACtC,KAAG,CAaH,CAAA"}
|
package/dist/hooks.js
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* - beforeValidate/beforeChange: strip markers from every write, so they can't be stored
|
|
5
5
|
* - beforeChange: stale-write guard (409) when the editor sends the version it last saw
|
|
6
6
|
*/
|
|
7
|
-
import { encodeDocument, HEADER, refKey, stegaCleanDeep, } from '@payload-onpage/core';
|
|
7
|
+
import { CONTEXT_KEY, encodeDocument, HEADER, refKey, stegaCleanDeep, } from '@payload-onpage/core';
|
|
8
8
|
import { APIError } from 'payload';
|
|
9
9
|
/** True when a read asked for auto-mapping markers (see `onpageContext()`). */
|
|
10
|
-
export const wantsMarkers = (context) =>
|
|
10
|
+
export const wantsMarkers = (context) => context?.[CONTEXT_KEY] === true;
|
|
11
11
|
export const stripMarkers = ({ data }) => (data ? stegaCleanDeep(data) : data);
|
|
12
12
|
export function encodeOnRead(opts) {
|
|
13
13
|
return ({ doc, req, context, }) => {
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,cAAc,EACd,MAAM,EACN,MAAM,EACN,cAAc,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,WAAW,EACX,cAAc,EACd,MAAM,EACN,MAAM,EACN,cAAc,GAIf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAA4C,MAAM,SAAS,CAAA;AAS5E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAmC,EAAW,EAAE,CAC3E,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,EAAsB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAElG,MAAM,UAAU,YAAY,CAAC,IAM5B;IACC,OAAO,CAAC,EACN,GAAG,EACH,GAAG,EACH,OAAO,GAKR,EAAE,EAAE;QACH,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG;YAAE,OAAO,GAAG,CAAA;QACtE,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,KAAK,QAAQ;YACpB,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI;gBACd,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAqB,EAAE,CAAC;gBAChF,CAAC,CAAC,IAAI,CAAA;QACZ,OAAO,GAAG;YACR,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACnF,CAAC,CAAC,GAAG,CAAA;IACT,CAAC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,EACjC,IAAI,EACJ,GAAG,EACH,WAAW,GAKZ,EAAK,EAAE;IACN,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,WAAW,EAAE,SAAS,CAAA;IACtC,IAAI,CAAC,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACrD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,QAAQ,CAChB,gEAAgE,EAChE,GAAG,EACH,SAAS,EACT,IAAI,CACL,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/** Request helpers shared by the endpoints. */
|
|
2
2
|
import { type DocRef } from '@payload-onpage/core';
|
|
3
|
-
import type { PayloadRequest } from 'payload';
|
|
3
|
+
import type { PayloadRequest, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload';
|
|
4
4
|
/** The site origin: `serverURL` when configured, else the request's own origin. */
|
|
5
|
-
export declare
|
|
5
|
+
export declare const originOf: (req: PayloadRequest) => string;
|
|
6
6
|
export declare const isSecure: (req: PayloadRequest) => boolean;
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Absolute URL of one of our API routes (e.g. `/onpage/preview`), built the way
|
|
9
|
+
* Payload builds its own: honours `routes.api`, Next's basePath and trailing slashes.
|
|
10
|
+
*/
|
|
11
|
+
export declare const apiURL: (req: PayloadRequest, path: `/${string}`) => string;
|
|
12
|
+
/** Plain-text reply for the form-POST / new-tab endpoints, where JSON would just be shown raw. */
|
|
8
13
|
export declare const text: (body: string, status: number) => Response;
|
|
9
14
|
export declare const json: (body: unknown, status?: number) => Response;
|
|
10
15
|
/** Redirect to a same-origin path (anything unsafe becomes "/"). 303 turns a POST into a GET. */
|
|
@@ -14,10 +19,19 @@ export declare const redirectTo: (req: PayloadRequest, path: unknown, status?: 3
|
|
|
14
19
|
* Sec-Fetch-Site when Origin is absent). Returns an error response or null.
|
|
15
20
|
*/
|
|
16
21
|
export declare function rejectCrossSite(req: PayloadRequest): Response | null;
|
|
22
|
+
/** A collection's or global's sanitized config. */
|
|
23
|
+
export declare function entityConfig(req: PayloadRequest, kind: 'collection', slug: string): SanitizedCollectionConfig | undefined;
|
|
24
|
+
export declare function entityConfig(req: PayloadRequest, kind: 'global', slug: string): SanitizedGlobalConfig | undefined;
|
|
25
|
+
export declare function entityConfig(req: PayloadRequest, kind: DocRef['kind'], slug: string): SanitizedCollectionConfig | SanitizedGlobalConfig | undefined;
|
|
17
26
|
/** A document ref from `kind`, `slug`, `id` query/body values. */
|
|
18
|
-
export declare function readRef(values: {
|
|
27
|
+
export declare function readRef(req: PayloadRequest, values: {
|
|
19
28
|
kind?: unknown;
|
|
20
29
|
slug?: unknown;
|
|
21
30
|
id?: unknown;
|
|
22
31
|
}): DocRef | null;
|
|
32
|
+
/**
|
|
33
|
+
* The ref with its id typed the way the collection stores it (number or text),
|
|
34
|
+
* so a text id that looks numeric ("007") is never coerced.
|
|
35
|
+
*/
|
|
36
|
+
export declare function withIdType(req: PayloadRequest, ref: DocRef): DocRef;
|
|
23
37
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAG/F,mFAAmF;AACnF,eAAO,MAAM,QAAQ,GAAI,KAAK,cAAc,KAAG,MAG9C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,KAAK,cAAc,KAAG,OAA6C,CAAA;AAE5F;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,cAAc,EAAE,MAAM,IAAI,MAAM,EAAE,KAAG,MAC4B,CAAA;AAE7F,kGAAkG;AAClG,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,KAAG,QAIhD,CAAA;AAEJ,eAAO,MAAM,IAAI,GAAI,MAAM,OAAO,EAAE,eAAY,KAAG,QACiC,CAAA;AAEpF,iGAAiG;AACjG,eAAO,MAAM,UAAU,GAAI,KAAK,cAAc,EAAE,MAAM,OAAO,EAAE,SAAQ,GAAG,GAAG,GAAS,KAAG,QACf,CAAA;AAE1E;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI,CAMpE;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,GACX,yBAAyB,GAAG,SAAS,CAAA;AACxC,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,GACX,qBAAqB,GAAG,SAAS,CAAA;AACpC,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EACpB,IAAI,EAAE,MAAM,GACX,yBAAyB,GAAG,qBAAqB,GAAG,SAAS,CAAA;AAOhE,kEAAkE;AAClE,wBAAgB,OAAO,CACrB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD,MAAM,GAAG,IAAI,CAQf;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMnE"}
|
package/dist/http.js
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
/** Request helpers shared by the endpoints. */
|
|
2
|
-
import {
|
|
2
|
+
import { safePath } from '@payload-onpage/core';
|
|
3
|
+
import { formatAdminURL, stripTrailingSlash } from 'payload/shared';
|
|
3
4
|
/** The site origin: `serverURL` when configured, else the request's own origin. */
|
|
4
|
-
export
|
|
5
|
+
export const originOf = (req) => {
|
|
5
6
|
const configured = req.payload.config.serverURL;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
try {
|
|
9
|
-
return new URL(req.url ?? '').origin;
|
|
10
|
-
}
|
|
11
|
-
catch {
|
|
12
|
-
const host = req.headers.get('x-forwarded-host') ?? req.headers.get('host') ?? 'localhost';
|
|
13
|
-
const proto = req.headers.get('x-forwarded-proto') ?? 'http';
|
|
14
|
-
return `${proto}://${host}`;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
7
|
+
return configured ? stripTrailingSlash(configured) : req.origin;
|
|
8
|
+
};
|
|
17
9
|
export const isSecure = (req) => originOf(req).startsWith('https:');
|
|
18
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Absolute URL of one of our API routes (e.g. `/onpage/preview`), built the way
|
|
12
|
+
* Payload builds its own: honours `routes.api`, Next's basePath and trailing slashes.
|
|
13
|
+
*/
|
|
14
|
+
export const apiURL = (req, path) => formatAdminURL({ apiRoute: req.payload.config.routes.api, path, serverURL: originOf(req) });
|
|
15
|
+
/** Plain-text reply for the form-POST / new-tab endpoints, where JSON would just be shown raw. */
|
|
19
16
|
export const text = (body, status) => new Response(body, {
|
|
20
17
|
status,
|
|
21
18
|
headers: { 'content-type': 'text/plain; charset=utf-8', 'cache-control': 'no-store' },
|
|
@@ -36,8 +33,13 @@ export function rejectCrossSite(req) {
|
|
|
36
33
|
const site = req.headers.get('sec-fetch-site');
|
|
37
34
|
return site === 'same-origin' || site === 'none' ? null : text('Cross-site request refused', 403);
|
|
38
35
|
}
|
|
36
|
+
export function entityConfig(req, kind, slug) {
|
|
37
|
+
return kind === 'global'
|
|
38
|
+
? req.payload.globals.config.find((g) => g.slug === slug)
|
|
39
|
+
: req.payload.collections[slug]?.config;
|
|
40
|
+
}
|
|
39
41
|
/** A document ref from `kind`, `slug`, `id` query/body values. */
|
|
40
|
-
export function readRef(values) {
|
|
42
|
+
export function readRef(req, values) {
|
|
41
43
|
const slug = typeof values.slug === 'string' ? values.slug : '';
|
|
42
44
|
if (!slug)
|
|
43
45
|
return null;
|
|
@@ -48,6 +50,18 @@ export function readRef(values) {
|
|
|
48
50
|
return { kind: 'collection', slug, id };
|
|
49
51
|
if (typeof id !== 'string' || !id)
|
|
50
52
|
return null;
|
|
51
|
-
return
|
|
53
|
+
return withIdType(req, { kind: 'collection', slug, id });
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The ref with its id typed the way the collection stores it (number or text),
|
|
57
|
+
* so a text id that looks numeric ("007") is never coerced.
|
|
58
|
+
*/
|
|
59
|
+
export function withIdType(req, ref) {
|
|
60
|
+
if (ref.kind === 'global')
|
|
61
|
+
return ref;
|
|
62
|
+
const type = req.payload.collections[ref.slug]?.customIDType ?? req.payload.db.defaultIDType;
|
|
63
|
+
const raw = String(ref.id);
|
|
64
|
+
const n = Number(raw);
|
|
65
|
+
return { ...ref, id: type === 'number' && Number.isSafeInteger(n) && String(n) === raw ? n : raw };
|
|
52
66
|
}
|
|
53
67
|
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Plugin } from 'payload';
|
|
2
2
|
import { type OnPageOptions } from './options.ts';
|
|
3
3
|
export declare function onpage(options: OnPageOptions): Plugin;
|
|
4
|
-
export type { OnPageDocOptions, OnPageOptions } from './options.ts';
|
|
4
|
+
export type { OnPageDocOptions, OnPageOptions, OnPageTargets } from './options.ts';
|
|
5
5
|
export { canEditDocument, canUseOnPage } from './access.ts';
|
|
6
6
|
export { createPreviewToken, verifyPreviewToken, type PreviewTokenPayload } from './tokens.ts';
|
|
7
7
|
export { serializeFields, type SerializeContext } from './schema.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAM/E,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAgJrD;AAED,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAClF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -10,54 +10,71 @@
|
|
|
10
10
|
* apply unchanged.
|
|
11
11
|
*/
|
|
12
12
|
import { DEFAULTS } from '@payload-onpage/core';
|
|
13
|
+
import { InvalidConfiguration, } from 'payload';
|
|
14
|
+
import { deepMergeSimple } from 'payload/shared';
|
|
13
15
|
import { createEndpoints } from "./endpoints.js";
|
|
14
16
|
import { encodeOnRead, guardStaleWrite, stripMarkers } from "./hooks.js";
|
|
15
17
|
import { normalizeEntries } from "./options.js";
|
|
16
18
|
import { serializeFields } from "./schema.js";
|
|
17
19
|
import { translations } from "./translations.js";
|
|
18
20
|
const APPLIED = 'payload-onpage';
|
|
19
|
-
/** Ours first; the site's own translations (any language, any key) win. */
|
|
20
|
-
function mergeTranslations(ours, theirs) {
|
|
21
|
-
const out = { ...ours };
|
|
22
|
-
for (const [lang, table] of Object.entries((theirs ?? {}))) {
|
|
23
|
-
const mine = out[lang] ?? {};
|
|
24
|
-
out[lang] = {
|
|
25
|
-
...mine,
|
|
26
|
-
...table,
|
|
27
|
-
onpage: { ...mine.onpage, ...(table.onpage ?? {}) },
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
return out;
|
|
31
|
-
}
|
|
32
21
|
export function onpage(options) {
|
|
33
22
|
return (incoming) => {
|
|
34
23
|
if (options.enabled === false || incoming.custom?.[APPLIED])
|
|
35
24
|
return incoming;
|
|
25
|
+
const { session } = options;
|
|
26
|
+
if (!session)
|
|
27
|
+
throw new InvalidConfiguration('payload-onpage: pass `session` (e.g. nextSession() from @payload-onpage/next/session). The enter, mode, exit and preview endpoints need it.');
|
|
36
28
|
const prefix = options.routePrefix ?? DEFAULTS.routePrefix;
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
29
|
+
const entries = normalizeEntries(options);
|
|
30
|
+
const keyOf = (kind, slug) => `${kind}:${slug}`;
|
|
31
|
+
const byKey = new Map(entries.map((e) => [keyOf(e.kind, e.slug), e]));
|
|
32
|
+
const missing = entries.filter((e) => e.kind === 'global'
|
|
33
|
+
? !incoming.globals?.some((g) => g.slug === e.slug)
|
|
34
|
+
: !incoming.collections?.some((c) => c.slug === e.slug));
|
|
35
|
+
if (missing.length) {
|
|
36
|
+
throw new InvalidConfiguration(`payload-onpage: unknown ${missing.map((e) => `${e.kind} "${e.slug}"`).join(', ')}`);
|
|
37
|
+
}
|
|
38
|
+
/** The hooks every enabled document gets (see ./hooks). Encoding serializes the fields once, lazily. */
|
|
39
|
+
const hooksFor = (cfg, entry) => {
|
|
44
40
|
let fields;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
41
|
+
return {
|
|
42
|
+
beforeValidate: [stripMarkers],
|
|
43
|
+
beforeChange: [stripMarkers, guardStaleWrite],
|
|
44
|
+
afterRead: [
|
|
45
|
+
encodeOnRead({
|
|
46
|
+
kind: entry.kind,
|
|
47
|
+
slug: cfg.slug,
|
|
48
|
+
fields: () => (fields ??= serializeFields(cfg.fields, { blocks: incoming.blocks })),
|
|
49
|
+
...(entry.options.fields ? { only: entry.options.fields } : {}),
|
|
50
|
+
...(options.encode ? { filter: options.encode } : {}),
|
|
51
|
+
}),
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
const withCollectionHooks = (c, entry) => {
|
|
56
|
+
const add = hooksFor(c, entry);
|
|
57
|
+
return {
|
|
58
|
+
...c,
|
|
59
|
+
hooks: {
|
|
60
|
+
...c.hooks,
|
|
61
|
+
beforeValidate: [...(c.hooks?.beforeValidate ?? []), ...add.beforeValidate],
|
|
62
|
+
beforeChange: [...(c.hooks?.beforeChange ?? []), ...add.beforeChange],
|
|
63
|
+
afterRead: [...(c.hooks?.afterRead ?? []), ...add.afterRead],
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
const withGlobalHooks = (g, entry) => {
|
|
68
|
+
const add = hooksFor(g, entry);
|
|
69
|
+
return {
|
|
70
|
+
...g,
|
|
71
|
+
hooks: {
|
|
72
|
+
...g.hooks,
|
|
73
|
+
beforeValidate: [...(g.hooks?.beforeValidate ?? []), ...add.beforeValidate],
|
|
74
|
+
beforeChange: [...(g.hooks?.beforeChange ?? []), ...add.beforeChange],
|
|
75
|
+
afterRead: [...(g.hooks?.afterRead ?? []), ...add.afterRead],
|
|
76
|
+
},
|
|
77
|
+
};
|
|
61
78
|
};
|
|
62
79
|
const control = (kind, slug) => ({
|
|
63
80
|
path: '@payload-onpage/plugin/admin#OnPageAdminControls',
|
|
@@ -101,34 +118,28 @@ export function onpage(options) {
|
|
|
101
118
|
},
|
|
102
119
|
};
|
|
103
120
|
};
|
|
104
|
-
const missing = entries.filter((e) => e.kind === 'global'
|
|
105
|
-
? !incoming.globals?.some((g) => g.slug === e.slug)
|
|
106
|
-
: !incoming.collections?.some((c) => c.slug === e.slug));
|
|
107
|
-
if (missing.length) {
|
|
108
|
-
throw new Error(`payload-onpage: unknown ${missing.map((e) => `${e.kind} "${e.slug}"`).join(', ')}`);
|
|
109
|
-
}
|
|
110
121
|
return {
|
|
111
122
|
...incoming,
|
|
112
123
|
custom: { ...incoming.custom, [APPLIED]: true },
|
|
113
124
|
i18n: {
|
|
114
125
|
...incoming.i18n,
|
|
115
|
-
translations
|
|
126
|
+
// Ours first; the site's own translations (any language, any key) win.
|
|
127
|
+
translations: deepMergeSimple(translations, incoming.i18n?.translations ?? {}),
|
|
116
128
|
},
|
|
117
129
|
collections: (incoming.collections ?? []).map((c) => {
|
|
118
|
-
const entry = byKey.get(
|
|
119
|
-
return entry ? withCollectionAdmin(
|
|
130
|
+
const entry = byKey.get(keyOf('collection', c.slug));
|
|
131
|
+
return entry ? withCollectionAdmin(withCollectionHooks(c, entry)) : c;
|
|
120
132
|
}),
|
|
121
133
|
globals: (incoming.globals ?? []).map((g) => {
|
|
122
|
-
const entry = byKey.get(
|
|
123
|
-
return entry ? withGlobalAdmin(
|
|
134
|
+
const entry = byKey.get(keyOf('global', g.slug));
|
|
135
|
+
return entry ? withGlobalAdmin(withGlobalHooks(g, entry)) : g;
|
|
124
136
|
}),
|
|
125
137
|
endpoints: [
|
|
126
138
|
...(incoming.endpoints ?? []),
|
|
127
139
|
...createEndpoints({
|
|
128
|
-
options,
|
|
140
|
+
options: { ...options, session },
|
|
129
141
|
prefix,
|
|
130
|
-
|
|
131
|
-
entry: (kind, slug) => byKey.get(`${kind}:${slug}`),
|
|
142
|
+
entry: (kind, slug) => byKey.get(keyOf(kind, slug)),
|
|
132
143
|
}),
|
|
133
144
|
],
|
|
134
145
|
onInit: async (payload) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/options.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DocRef, EncodeFilter, SessionAdapter } from '@payload-onpage/core';
|
|
2
|
-
import type { PayloadRequest } from 'payload';
|
|
2
|
+
import type { CollectionSlug, GlobalSlug, PayloadRequest } from 'payload';
|
|
3
3
|
export interface OnPageDocOptions {
|
|
4
4
|
/** Top-level fields editable on the page. Default: every top-level field the user may update. */
|
|
5
5
|
fields?: string[];
|
|
@@ -9,13 +9,19 @@ export interface OnPageDocOptions {
|
|
|
9
9
|
*/
|
|
10
10
|
url?: (args: {
|
|
11
11
|
doc: Record<string, unknown>;
|
|
12
|
-
locale?: string;
|
|
12
|
+
locale?: string | undefined;
|
|
13
13
|
req: PayloadRequest;
|
|
14
14
|
}) => string | null | Promise<string | null>;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Collections or globals to enable: a list of slugs, or slugs mapped to options.
|
|
18
|
+
* Slugs are checked against your generated Payload types (`CollectionSlug` /
|
|
19
|
+
* `GlobalSlug`), so a typo is a compile error.
|
|
20
|
+
*/
|
|
21
|
+
export type OnPageTargets<Slug extends string> = Slug[] | Partial<Record<Slug, OnPageDocOptions | true>>;
|
|
16
22
|
export interface OnPageOptions {
|
|
17
|
-
collections?:
|
|
18
|
-
globals?:
|
|
23
|
+
collections?: OnPageTargets<CollectionSlug>;
|
|
24
|
+
globals?: OnPageTargets<GlobalSlug>;
|
|
19
25
|
/**
|
|
20
26
|
* Who may use on-page editing (`ref` undefined) and edit a given document.
|
|
21
27
|
* Default: users of the admin user collection, with the document's own
|
|
@@ -25,7 +31,7 @@ export interface OnPageOptions {
|
|
|
25
31
|
req: PayloadRequest;
|
|
26
32
|
ref?: DocRef;
|
|
27
33
|
}) => boolean | Promise<boolean>;
|
|
28
|
-
/** Framework adapter that switches edit/preview mode (e.g. `nextSession()`). Required for the enter/exit/preview endpoints. */
|
|
34
|
+
/** Framework adapter that switches edit/preview mode (e.g. `nextSession()`). Required for the enter/mode/exit/preview endpoints. */
|
|
29
35
|
session?: SessionAdapter;
|
|
30
36
|
/** Narrow which strings get auto-mapping markers. */
|
|
31
37
|
encode?: EncodeFilter;
|
|
@@ -47,13 +53,18 @@ export interface OnPageOptions {
|
|
|
47
53
|
/** Auth cookie an editor's session is bound to. Default `${cookiePrefix}-token` ("payload-token"). */
|
|
48
54
|
authCookie?: string;
|
|
49
55
|
/** Endpoint prefix under the API route. Default "/onpage". */
|
|
50
|
-
routePrefix?: string
|
|
56
|
+
routePrefix?: `/${string}`;
|
|
51
57
|
enabled?: boolean;
|
|
52
58
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
59
|
+
/** One enabled collection or global, with its slug typed by kind. */
|
|
60
|
+
export type Entry = {
|
|
61
|
+
kind: 'collection';
|
|
62
|
+
slug: CollectionSlug;
|
|
56
63
|
options: OnPageDocOptions;
|
|
57
|
-
}
|
|
58
|
-
|
|
64
|
+
} | {
|
|
65
|
+
kind: 'global';
|
|
66
|
+
slug: GlobalSlug;
|
|
67
|
+
options: OnPageDocOptions;
|
|
68
|
+
};
|
|
69
|
+
export declare const normalizeEntries: (options: OnPageOptions) => Entry[];
|
|
59
70
|
//# sourceMappingURL=options.d.ts.map
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,iGAAiG;IACjG,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;;OAGG;IACH,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;QACX,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,GAAG,EAAE,cAAc,CAAA;KACpB,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC7C;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,MAAM,IAC3C,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;AAEzD,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC3C,OAAO,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,cAAc,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACpF,oIAAoI;IACpI,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,qDAAqD;IACrD,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qGAAqG;IACrG,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAC3B,GAAG,EAAE,cAAc,CAAA;QACnB,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,EAAE,EAAE,MAAM,CAAA;KACX,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sGAAsG;IACtG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,IAAI,MAAM,EAAE,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qEAAqE;AACrE,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAA;AAUnE,eAAO,MAAM,gBAAgB,GAAI,SAAS,aAAa,KAAG,KAAK,EAG9D,CAAA"}
|
package/dist/options.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
function entriesOf(input) {
|
|
2
|
+
return Array.isArray(input)
|
|
3
|
+
? input.map((slug) => ({ slug, options: {} }))
|
|
4
|
+
: Object.entries(input ?? {})
|
|
5
|
+
.filter(([, o]) => o !== undefined)
|
|
6
|
+
.map(([slug, o]) => ({ slug, options: o === true || !o ? {} : o }));
|
|
7
|
+
}
|
|
8
|
+
export const normalizeEntries = (options) => [
|
|
9
|
+
...entriesOf(options.collections).map((e) => ({ kind: 'collection', ...e })),
|
|
10
|
+
...entriesOf(options.globals).map((e) => ({ kind: 'global', ...e })),
|
|
11
|
+
];
|
|
4
12
|
//# sourceMappingURL=options.js.map
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAiEA,SAAS,SAAS,CAAsB,KAAsC;IAC5E,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAwD;aAChF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAsB,EAAW,EAAE,CAAC;IACnE,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAqB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;CAC9E,CAAA"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/** Where a document lives on the site. */
|
|
2
2
|
import { type DocRef } from '@payload-onpage/core';
|
|
3
|
-
import type { PayloadRequest } from 'payload';
|
|
3
|
+
import type { PayloadRequest, TypedLocale } from 'payload';
|
|
4
4
|
import type { Entry } from './options.ts';
|
|
5
5
|
/**
|
|
6
6
|
* The site path that shows a document: the entry's `url` option, else the
|
|
7
7
|
* collection's `admin.preview` URL, else `/<slug>`; globals default to "/".
|
|
8
8
|
* Absolute URLs must be same-origin. Returns null when there's no page.
|
|
9
9
|
*/
|
|
10
|
-
export declare function resolvePath(req: PayloadRequest, ref: DocRef, entry: Entry, locale?:
|
|
10
|
+
export declare function resolvePath(req: PayloadRequest, ref: DocRef, entry: Entry, locale?: TypedLocale): Promise<string | null>;
|
|
11
11
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BxB"}
|
package/dist/paths.js
CHANGED
|
@@ -7,34 +7,21 @@ import { originOf } from "./http.js";
|
|
|
7
7
|
* Absolute URLs must be same-origin. Returns null when there's no page.
|
|
8
8
|
*/
|
|
9
9
|
export async function resolvePath(req, ref, entry, locale) {
|
|
10
|
-
const
|
|
11
|
-
const doc =
|
|
12
|
-
? await req.payload
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
...localeArg,
|
|
19
|
-
})
|
|
20
|
-
.catch(() => null)
|
|
21
|
-
: await req.payload
|
|
22
|
-
.findByID({
|
|
23
|
-
collection: ref.slug,
|
|
24
|
-
id: ref.id,
|
|
25
|
-
draft: true,
|
|
26
|
-
depth: 0,
|
|
27
|
-
overrideAccess: true,
|
|
28
|
-
...localeArg,
|
|
29
|
-
})
|
|
30
|
-
.catch(() => null);
|
|
10
|
+
const read = { draft: true, depth: 0, overrideAccess: true, ...(locale ? { locale } : {}) };
|
|
11
|
+
const doc = entry.kind === 'global'
|
|
12
|
+
? await req.payload.findGlobal({ slug: entry.slug, ...read }).catch(() => null)
|
|
13
|
+
: ref.kind === 'collection'
|
|
14
|
+
? await req.payload
|
|
15
|
+
.findByID({ collection: entry.slug, id: ref.id, ...read })
|
|
16
|
+
.catch(() => null)
|
|
17
|
+
: null;
|
|
31
18
|
if (!doc)
|
|
32
19
|
return null;
|
|
33
20
|
let url;
|
|
34
21
|
if (entry.options.url)
|
|
35
|
-
url = await entry.options.url({ doc, locale, req });
|
|
36
|
-
else if (
|
|
37
|
-
const preview = req.payload.collections[
|
|
22
|
+
url = await entry.options.url({ doc, locale: locale ?? undefined, req });
|
|
23
|
+
else if (entry.kind === 'collection') {
|
|
24
|
+
const preview = req.payload.collections[entry.slug]?.config.admin?.preview;
|
|
38
25
|
if (preview)
|
|
39
26
|
url = await preview(doc, { locale: locale ?? '', req, token: null });
|
|
40
27
|
if (!url && typeof doc.slug === 'string')
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,QAAQ,EAAe,MAAM,sBAAsB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAmB,EACnB,GAAW,EACX,KAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,QAAQ,EAAe,MAAM,sBAAsB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAmB,EACnB,GAAW,EACX,KAAY,EACZ,MAAoB;IAEpB,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IAC3F,MAAM,GAAG,GACP,KAAK,CAAC,IAAI,KAAK,QAAQ;QACrB,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAC/E,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;YACzB,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO;iBACd,QAAQ,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;iBACzD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,IAAI,CAAA;IACZ,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IAErB,IAAI,GAA8B,CAAA;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG;QAAE,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;SAC1F,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAA;QAC1E,IAAI,OAAO;YAAE,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjF,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;IACpF,CAAC;;QAAM,GAAG,GAAG,GAAG,CAAA;IAChB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IAErB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QACpC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|