@paroicms/server 1.97.0 → 1.98.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/admin-backend/document/document.resolver.extend.js +1 -1
- package/dist/admin-backend/document/document.resolver.js +14 -14
- package/dist/admin-backend/document/load-documents.queries.d.ts +7 -7
- package/dist/admin-backend/document/load-documents.queries.js +5 -5
- package/dist/admin-backend/document/save-documents.queries.d.ts +5 -5
- package/dist/admin-backend/document/save-documents.queries.js +10 -10
- package/dist/admin-backend/fields/_fields.helpers.d.ts +1 -1
- package/dist/admin-backend/fields/_fields.helpers.js +2 -2
- package/dist/admin-backend/fields/fields.resolver.d.ts +1 -1
- package/dist/admin-backend/fields/fields.resolver.js +10 -10
- package/dist/admin-backend/fields/fields.resolver.js.map +1 -1
- package/dist/admin-backend/fields/labeling.queries.js +1 -1
- package/dist/admin-backend/fields/load-fields-of.queries.d.ts +3 -3
- package/dist/admin-backend/fields/load-fields-of.queries.js +15 -15
- package/dist/admin-backend/fields/load-fields.queries.js +14 -14
- package/dist/admin-backend/fields/save-fields.queries.js +3 -3
- package/dist/admin-backend/{nodel/nodel-wrap.formatters.js → lnode/lnode-wrap.formatters.js} +1 -1
- package/dist/admin-backend/{nodel/nodel-wrap.formatters.js.map → lnode/lnode-wrap.formatters.js.map} +1 -1
- package/dist/admin-backend/{nodel/nodel-wrap.resolver.d.ts → lnode/lnode-wrap.resolver.d.ts} +2 -2
- package/dist/admin-backend/{nodel/nodel-wrap.resolver.js → lnode/lnode-wrap.resolver.js} +31 -31
- package/dist/admin-backend/{nodel/nodel-wrap.resolver.js.map → lnode/lnode-wrap.resolver.js.map} +1 -1
- package/dist/admin-backend/{nodel/nodel.queries.d.ts → lnode/lnode.queries.d.ts} +14 -16
- package/dist/admin-backend/{nodel/nodel.queries.js → lnode/lnode.queries.js} +50 -71
- package/dist/admin-backend/lnode/lnode.queries.js.map +1 -0
- package/dist/admin-backend/node/node.queries.js +1 -1
- package/dist/admin-backend/node/node.resolver.extend.d.ts +1 -1
- package/dist/admin-backend/node/node.resolver.extend.js +2 -2
- package/dist/admin-backend/part/part.queries.d.ts +7 -7
- package/dist/admin-backend/part/part.queries.js +33 -33
- package/dist/admin-backend/part/part.resolver.extend.d.ts +1 -1
- package/dist/admin-backend/part/part.resolver.extend.js +2 -2
- package/dist/admin-backend/part/part.resolver.extend.js.map +1 -1
- package/dist/admin-backend/part/part.resolver.js +8 -8
- package/dist/common/data-format.d.ts +1 -1
- package/dist/common/data-format.js +2 -2
- package/dist/common/media-handles.helpers.js +1 -1
- package/dist/common/text-cache.d.ts +10 -10
- package/dist/common/text-cache.js +6 -6
- package/dist/common/text-cache.js.map +1 -1
- package/dist/graphql/apollo-server-init.js +8 -8
- package/dist/graphql/apollo-server-init.js.map +1 -1
- package/dist/helpers/make-backend-plugin-service.js +2 -2
- package/dist/helpers/running-instance-connector.js +1 -1
- package/dist/helpers/utils-helper.d.ts +1 -1
- package/dist/helpers/utils-helper.js +3 -3
- package/dist/public-api/public-api-rendering.d.ts +2 -2
- package/dist/public-api/search-text/search-text.queries.d.ts +1 -1
- package/dist/public-api/search-text/search-text.queries.js +2 -2
- package/dist/rendered-site/feed/feed-generator.js +5 -5
- package/dist/rendered-site/liquidjs-filters/inject-menu-items-data.js +5 -5
- package/dist/rendered-site/liquidjs-tags/get-doc-tag.js +2 -2
- package/dist/rendered-site/liquidjs-tags/get-docs-tag.js +2 -2
- package/dist/rendered-site/liquidjs-tags/get-paginated-docs-tag.d.ts +2 -2
- package/dist/rendered-site/liquidjs-tags/get-paginated-docs-tag.js +2 -2
- package/dist/rendered-site/page-route/make-url.d.ts +3 -3
- package/dist/rendered-site/page-route/make-url.js +4 -4
- package/dist/rendered-site/page-route/raw-document-payload.js +3 -3
- package/dist/rendering-payload/breadcrumb.queries.d.ts +2 -2
- package/dist/rendering-payload/breadcrumb.queries.js +3 -3
- package/dist/rendering-payload/create-doc-drop.js +14 -14
- package/dist/rendering-payload/create-part-drop.js +5 -5
- package/dist/rendering-payload/doc-values.queries.d.ts +5 -5
- package/dist/rendering-payload/doc-values.queries.js +2 -2
- package/dist/rendering-payload/excerpt.queries.d.ts +2 -2
- package/dist/rendering-payload/excerpt.queries.js +3 -3
- package/dist/rendering-payload/field-values.d.ts +2 -2
- package/dist/rendering-payload/field-values.js +9 -9
- package/dist/rendering-payload/get-siblings.queries.d.ts +2 -2
- package/dist/rendering-payload/get-siblings.queries.js +1 -1
- package/dist/rendering-payload/parts.queries.d.ts +3 -3
- package/dist/rendering-payload/parts.queries.js +6 -6
- package/dist/rendering-payload/rendering-payload.types.d.ts +5 -5
- package/dist/rendering-payload/site-payload.d.ts +1 -1
- package/dist/rendering-payload/site-payload.js +7 -7
- package/dist/rendering-payload/translations.queries.d.ts +2 -2
- package/dist/rendering-payload/translations.queries.js +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/schema.graphql +25 -25
- package/dist/admin-backend/nodel/nodel.queries.js.map +0 -1
- /package/dist/admin-backend/{nodel/nodel-wrap.formatters.d.ts → lnode/lnode-wrap.formatters.d.ts} +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getBreadcrumb } from "../../admin-backend/
|
|
1
|
+
import { encodeLNodeId, parseLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
|
+
import { getBreadcrumb } from "../../admin-backend/lnode/lnode.queries.js";
|
|
3
3
|
export async function injectMenuItemsData(value, { renderingContext }) {
|
|
4
4
|
const str = typeof value === "string" ? value : typeof value === "number" ? String(value) : undefined;
|
|
5
5
|
if (!str)
|
|
6
6
|
return "";
|
|
7
7
|
const { siteContext } = renderingContext;
|
|
8
|
-
const documentId =
|
|
8
|
+
const documentId = parseLNodeId(str);
|
|
9
9
|
const breadcrumb = await getBreadcrumb(siteContext, renderingContext.tracker, documentId, {
|
|
10
10
|
ensurePublished: false,
|
|
11
11
|
});
|
|
12
12
|
breadcrumb.shift();
|
|
13
13
|
const content = {
|
|
14
|
-
id:
|
|
15
|
-
parents: breadcrumb.map((item) =>
|
|
14
|
+
id: encodeLNodeId(documentId),
|
|
15
|
+
parents: breadcrumb.map((item) => encodeLNodeId(item.documentId)),
|
|
16
16
|
};
|
|
17
17
|
return JSON.stringify(content);
|
|
18
18
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNumeric, omitProperty,
|
|
1
|
+
import { isNumeric, omitProperty, parseLNodeId, } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import { type } from "arktype";
|
|
3
3
|
import { makeCacheDependencyKey } from "../../common/text-cache.js";
|
|
4
4
|
import { makeTagCacheKeyForRendering, } from "../../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
@@ -24,7 +24,7 @@ export function createGetDocLiquidTag({ deprecated } = {}) {
|
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
else {
|
|
27
|
-
documentId =
|
|
27
|
+
documentId = parseLNodeId(options.id);
|
|
28
28
|
}
|
|
29
29
|
renderingContext.addDependencyKey(makeCacheDependencyKey({ documentId }));
|
|
30
30
|
const cacheVal = renderingContext.getValueFromCache(cacheKey);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseSorting } from "@paroicms/connector";
|
|
2
|
-
import { isDef, omitProperty,
|
|
2
|
+
import { isDef, omitProperty, parseLNodeId, } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import { type } from "arktype";
|
|
4
4
|
import { makeCacheDependencyKey } from "../../common/text-cache.js";
|
|
5
5
|
import { toNodeId } from "../../helpers/utils-helper.js";
|
|
@@ -26,7 +26,7 @@ export function createGetDocsLiquidTag({ deprecated } = {}) {
|
|
|
26
26
|
const options = validateParameters(parameters, siteContext, { variableName });
|
|
27
27
|
if (options.parentId === undefined)
|
|
28
28
|
return;
|
|
29
|
-
const parentId =
|
|
29
|
+
const parentId = parseLNodeId(options.parentId);
|
|
30
30
|
const cacheKey = makeTagCacheKeyForRendering("getDocs", { tagParameters: options });
|
|
31
31
|
renderingContext.addDependencyKey(makeCacheDependencyKey({ documentId: parentId, relation: "children" }));
|
|
32
32
|
const cacheVal = renderingContext.getValueFromCache(cacheKey);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ParsedLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import type { DropInst } from "../../liquidjs-tools/liquidjs-drop.js";
|
|
3
3
|
import { type RenderingContext } from "../../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
4
4
|
import { type PaginatedResult } from "../../rendering-payload/doc-values.queries.js";
|
|
@@ -23,5 +23,5 @@ interface GetPaginatedDocsRawParameters {
|
|
|
23
23
|
pageIndex?: number;
|
|
24
24
|
pageSize: number;
|
|
25
25
|
}
|
|
26
|
-
export declare function loadPaginatedDocs(renderingContext: RenderingContext, parentId:
|
|
26
|
+
export declare function loadPaginatedDocs(renderingContext: RenderingContext, parentId: ParsedLNodeId, options: GetPaginatedDocsRawParameters): Promise<PaginatedResult<DropInst<TpDocPayload>>>;
|
|
27
27
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseSorting } from "@paroicms/connector";
|
|
2
|
-
import { isDef, omitProperty,
|
|
2
|
+
import { isDef, omitProperty, parseLNodeId, } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import { type } from "arktype";
|
|
4
4
|
import { makeCacheDependencyKey } from "../../common/text-cache.js";
|
|
5
5
|
import { toNodeId } from "../../helpers/utils-helper.js";
|
|
@@ -22,7 +22,7 @@ export function createGetPaginatedDocsLiquidTag() {
|
|
|
22
22
|
const options = validateParameters(parameters, siteContext, { variableName });
|
|
23
23
|
if (options.parentId === undefined)
|
|
24
24
|
return;
|
|
25
|
-
const parentId =
|
|
25
|
+
const parentId = parseLNodeId(options.parentId);
|
|
26
26
|
const cacheKey = makeTagCacheKeyForRendering("getPaginatedDocs", { tagParameters: options });
|
|
27
27
|
renderingContext.addDependencyKey(makeCacheDependencyKey({ documentId: parentId, relation: "children" }));
|
|
28
28
|
const cacheVal = renderingContext.getValueFromCache(cacheKey);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type Tracker } from "@paroicms/internal-server-lib";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ParsedLNodeId } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import type { SiteContext } from "../../site-context/site-context.types.js";
|
|
4
|
-
export declare function getUrlOfDocument(siteContext: SiteContext, tracker: Tracker, documentId:
|
|
5
|
-
export declare function getUrlOfDocument(siteContext: SiteContext, tracker: Tracker, documentId:
|
|
4
|
+
export declare function getUrlOfDocument(siteContext: SiteContext, tracker: Tracker, documentId: ParsedLNodeId): Promise<string>;
|
|
5
|
+
export declare function getUrlOfDocument(siteContext: SiteContext, tracker: Tracker, documentId: ParsedLNodeId, options: {
|
|
6
6
|
returnUrlDependencyKeys: true;
|
|
7
7
|
}): Promise<{
|
|
8
8
|
url: string;
|
|
@@ -46,9 +46,9 @@ export async function getUrlOfDocument(siteContext, tracker, documentId, options
|
|
|
46
46
|
}, tracker);
|
|
47
47
|
return options.returnUrlDependencyKeys ? { url, dependencyKeys } : url;
|
|
48
48
|
}
|
|
49
|
-
function buildUrlQuery(siteContext,
|
|
49
|
+
function buildUrlQuery(siteContext, lNodeId, depth) {
|
|
50
50
|
const { cn } = siteContext;
|
|
51
|
-
const { nodeId, language } =
|
|
51
|
+
const { nodeId, language } = lNodeId;
|
|
52
52
|
let cur = depth;
|
|
53
53
|
let query = cn(`PaNode as l${cur}`)
|
|
54
54
|
.select([
|
|
@@ -58,7 +58,7 @@ function buildUrlQuery(siteContext, nodelId, depth) {
|
|
|
58
58
|
`l${cur}.publishDate as publishDate${cur}`,
|
|
59
59
|
`d${cur}.slug as slug${cur}`,
|
|
60
60
|
])
|
|
61
|
-
.innerJoin(`
|
|
61
|
+
.innerJoin(`PaLNode as s${cur}`, {
|
|
62
62
|
[`s${cur}.nodeId`]: `l${cur}.id`,
|
|
63
63
|
[`s${cur}.language`]: cn.raw("?", [language]),
|
|
64
64
|
})
|
|
@@ -85,7 +85,7 @@ function buildUrlQuery(siteContext, nodelId, depth) {
|
|
|
85
85
|
]);
|
|
86
86
|
query = query
|
|
87
87
|
.innerJoin(`PaNode as l${cur}`, `l${cur}.id`, `l${prev}.parentId`)
|
|
88
|
-
.innerJoin(`
|
|
88
|
+
.innerJoin(`PaLNode as s${cur}`, {
|
|
89
89
|
[`s${cur}.nodeId`]: `l${cur}.id`,
|
|
90
90
|
[`s${cur}.language`]: cn.raw("?", [language]),
|
|
91
91
|
})
|
|
@@ -11,7 +11,7 @@ export async function fetchRawDocPayload(siteContext, parsedRoute) {
|
|
|
11
11
|
function buildRawDocPayloadQuery(siteContext, parsedRoute) {
|
|
12
12
|
const { cn } = siteContext;
|
|
13
13
|
let query = cn("PaNode as l0")
|
|
14
|
-
.innerJoin("
|
|
14
|
+
.innerJoin("PaLNode as s0", {
|
|
15
15
|
"l0.id": "s0.nodeId",
|
|
16
16
|
"s0.language": cn.raw("?", [parsedRoute.language]),
|
|
17
17
|
})
|
|
@@ -28,7 +28,7 @@ function buildRawDocPayloadQuery(siteContext, parsedRoute) {
|
|
|
28
28
|
[`l${prev}.id`]: `l${cur}.parentId`,
|
|
29
29
|
[`l${cur}.typeName`]: cn.raw("?", [typeNameParam]),
|
|
30
30
|
})
|
|
31
|
-
.innerJoin(`
|
|
31
|
+
.innerJoin(`PaLNode as s${cur}`, {
|
|
32
32
|
[`l${cur}.id`]: `s${cur}.nodeId`,
|
|
33
33
|
[`s${cur}.language`]: cn.raw("?", [parsedRoute.language]),
|
|
34
34
|
})
|
|
@@ -44,7 +44,7 @@ function buildRawDocPayloadQuery(siteContext, parsedRoute) {
|
|
|
44
44
|
[`l${prev}.id`]: `l${cur}.parentId`,
|
|
45
45
|
[`l${cur}.relativeId`]: cn.raw("?", [relativeId]),
|
|
46
46
|
})
|
|
47
|
-
.innerJoin(`
|
|
47
|
+
.innerJoin(`PaLNode as s${cur}`, {
|
|
48
48
|
[`l${cur}.id`]: `s${cur}.nodeId`,
|
|
49
49
|
[`s${cur}.language`]: cn.raw("?", [parsedRoute.language]),
|
|
50
50
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ParsedLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import type { RenderingContext } from "../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
3
3
|
import type { TpBreadcrumbItem } from "./rendering-payload.types.js";
|
|
4
|
-
export declare function getPublicBreadcrumb(renderingContext: RenderingContext, documentId:
|
|
4
|
+
export declare function getPublicBreadcrumb(renderingContext: RenderingContext, documentId: ParsedLNodeId): Promise<TpBreadcrumbItem[]>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getBreadcrumb } from "../admin-backend/
|
|
1
|
+
import { encodeLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
|
+
import { getBreadcrumb } from "../admin-backend/lnode/lnode.queries.js";
|
|
3
3
|
import { makeCacheDependencyKey } from "../common/text-cache.js";
|
|
4
4
|
import { getUrlOfDocument } from "../rendered-site/page-route/make-url.js";
|
|
5
5
|
export async function getPublicBreadcrumb(renderingContext, documentId) {
|
|
@@ -12,7 +12,7 @@ export async function getPublicBreadcrumb(renderingContext, documentId) {
|
|
|
12
12
|
for (const item of items) {
|
|
13
13
|
const url = await getUrlOfDocument(siteContext, renderingContext.tracker, item.documentId);
|
|
14
14
|
result.push({
|
|
15
|
-
id:
|
|
15
|
+
id: encodeLNodeId(item.documentId),
|
|
16
16
|
url,
|
|
17
17
|
title: item.title,
|
|
18
18
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getDocumentTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
2
2
|
import { toAbsoluteUrl } from "@paroicms/internal-server-lib";
|
|
3
|
-
import {
|
|
3
|
+
import { encodeLNodeId, } from "@paroicms/public-anywhere-lib";
|
|
4
4
|
import { type } from "arktype";
|
|
5
5
|
import { getSiteFieldValue } from "../admin-backend/fields/load-fields.queries.js";
|
|
6
6
|
import { getHandleOfSiteField } from "../common/media-handles.helpers.js";
|
|
@@ -18,7 +18,7 @@ import { getSiblingDocuments } from "./get-siblings.queries.js";
|
|
|
18
18
|
import { loadDefaultImage } from "./load-default-image.js";
|
|
19
19
|
import { makeImageAvailable } from "./make-image-available.js";
|
|
20
20
|
import { countPartsOf, formatListOfPartValues, keyOfParentPartData, loadPartsOf, } from "./parts.queries.js";
|
|
21
|
-
import {
|
|
21
|
+
import { toPublicRoutingDocumentLNodeIds } from "./site-payload.js";
|
|
22
22
|
import { loadTranslationsAsDrops } from "./translations.queries.js";
|
|
23
23
|
const StringOrUndefinedAT = type("string|undefined");
|
|
24
24
|
export function createDocPayloadDrop(renderingContext, docValues, options = {}) {
|
|
@@ -30,7 +30,7 @@ export function createDocPayloadDrop(renderingContext, docValues, options = {})
|
|
|
30
30
|
});
|
|
31
31
|
return createLiquidDrop({
|
|
32
32
|
renderingContext,
|
|
33
|
-
renderingCacheKey: `doc:${
|
|
33
|
+
renderingCacheKey: `doc:${encodeLNodeId(docValues)}:${options.fieldNames?.join(",") ?? "full"}`,
|
|
34
34
|
values: {
|
|
35
35
|
kind: options.kind ??
|
|
36
36
|
(documentType.documentKind === "routing" ? "routingDocument" : "regularDocument"),
|
|
@@ -42,7 +42,7 @@ export function createDocPayloadDrop(renderingContext, docValues, options = {})
|
|
|
42
42
|
siteContext.logger.warn("'leafId' is deprecated, use 'nodeId' instead");
|
|
43
43
|
return docValues.nodeId;
|
|
44
44
|
},
|
|
45
|
-
id:
|
|
45
|
+
id: encodeLNodeId(docValues),
|
|
46
46
|
get routingIds() {
|
|
47
47
|
return getChildRoutingIds(siteContext.siteIds.homeIds, documentType, docValues);
|
|
48
48
|
},
|
|
@@ -54,7 +54,7 @@ export function createDocPayloadDrop(renderingContext, docValues, options = {})
|
|
|
54
54
|
languageLabel: siteContext.siteSchema.languageLabels[docValues.language],
|
|
55
55
|
url: options.url ?? (() => loadUrlOfDocument(renderingContext, docValues)),
|
|
56
56
|
excerpt: () => loadExcerpt(siteContext, renderingContext.tracker, {
|
|
57
|
-
|
|
57
|
+
lNodeId: docValues,
|
|
58
58
|
fieldTypes: documentType.fields ?? [],
|
|
59
59
|
}),
|
|
60
60
|
list: createPartsDrop(renderingContext, docValues, documentType),
|
|
@@ -93,14 +93,14 @@ export function createDocPayloadDrop(renderingContext, docValues, options = {})
|
|
|
93
93
|
},
|
|
94
94
|
field: () => loadPublicFieldValues(renderingContext, {
|
|
95
95
|
typeName: docValues.type,
|
|
96
|
-
|
|
96
|
+
lNodeId: docValues,
|
|
97
97
|
fieldNames: options.fieldNames,
|
|
98
98
|
}),
|
|
99
99
|
fields: () => {
|
|
100
100
|
siteContext.logger.warn("'fields' is deprecated, use 'field' instead");
|
|
101
101
|
return loadPublicFieldValues(renderingContext, {
|
|
102
102
|
typeName: docValues.type,
|
|
103
|
-
|
|
103
|
+
lNodeId: docValues,
|
|
104
104
|
fieldNames: options.fieldNames,
|
|
105
105
|
});
|
|
106
106
|
},
|
|
@@ -130,7 +130,7 @@ function createPartsDrop(renderingContext, documentId, documentType) {
|
|
|
130
130
|
const { siteContext } = renderingContext;
|
|
131
131
|
return createLiquidDrop({
|
|
132
132
|
renderingContext,
|
|
133
|
-
renderingCacheKey: `partsOf:${
|
|
133
|
+
renderingCacheKey: `partsOf:${encodeLNodeId(documentId)}`,
|
|
134
134
|
values: Object.fromEntries((documentType.lists ?? []).map((listType) => [
|
|
135
135
|
listType.listName,
|
|
136
136
|
async () => {
|
|
@@ -148,7 +148,7 @@ function createPartCountDrop(renderingContext, documentId, documentType) {
|
|
|
148
148
|
const { siteContext } = renderingContext;
|
|
149
149
|
return createLiquidDrop({
|
|
150
150
|
renderingContext,
|
|
151
|
-
renderingCacheKey: `partCountersOf:${
|
|
151
|
+
renderingCacheKey: `partCountersOf:${encodeLNodeId(documentId)}`,
|
|
152
152
|
values: Object.fromEntries((documentType.lists ?? []).map((listType) => [
|
|
153
153
|
listType.listName,
|
|
154
154
|
() => countPartsOf(siteContext, renderingContext.tracker, documentId, listType),
|
|
@@ -165,13 +165,13 @@ async function loadUrlOfDocument(renderingContext, documentId) {
|
|
|
165
165
|
}
|
|
166
166
|
async function makeOgValuesPayload(renderingContext, documentType, docValues, options) {
|
|
167
167
|
const { siteContext } = renderingContext;
|
|
168
|
-
const excerpt = await loadOrFromRenderingCache(renderingContext, `excerpt:${
|
|
169
|
-
|
|
168
|
+
const excerpt = await loadOrFromRenderingCache(renderingContext, `excerpt:${encodeLNodeId(docValues)}:full`, () => loadExcerpt(siteContext, renderingContext.tracker, {
|
|
169
|
+
lNodeId: docValues,
|
|
170
170
|
fieldTypes: documentType.fields ?? [],
|
|
171
171
|
}));
|
|
172
172
|
const url = options.url ??
|
|
173
|
-
(await loadOrFromRenderingCache(renderingContext, `url:${
|
|
174
|
-
const featuredImageId = await loadOrFromRenderingCache(renderingContext, `featuredImage:${
|
|
173
|
+
(await loadOrFromRenderingCache(renderingContext, `url:${encodeLNodeId(docValues)}`, () => loadUrlOfDocument(renderingContext, docValues)));
|
|
174
|
+
const featuredImageId = await loadOrFromRenderingCache(renderingContext, `featuredImage:${encodeLNodeId(docValues)}`, async () => (await getFeaturedImageOf(renderingContext, {
|
|
175
175
|
nodeId: docValues.nodeId,
|
|
176
176
|
documentType,
|
|
177
177
|
}))?.id);
|
|
@@ -217,7 +217,7 @@ function getChildRoutingIds(ids, documentType, parentDocument) {
|
|
|
217
217
|
if (documentType.typeName !== ids.typeName) {
|
|
218
218
|
throw new Error(`Routing identifier type mismatch: "${documentType.typeName}" ≠ "${ids.typeName}"`);
|
|
219
219
|
}
|
|
220
|
-
const { id, ...rest } =
|
|
220
|
+
const { id, ...rest } = toPublicRoutingDocumentLNodeIds(ids, language);
|
|
221
221
|
return Object.keys(rest).length > 0 ? rest : undefined;
|
|
222
222
|
}
|
|
223
223
|
for (const childIds of Object.values(ids.children ?? {})) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getPartTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
2
|
-
import {
|
|
2
|
+
import { encodeLNodeId } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import { toTpSourceMedia } from "../common/medias/to-media-values.js";
|
|
4
4
|
import { getNodeTypeLabel } from "../helpers/label-translator.helper.js";
|
|
5
5
|
import { createLiquidDrop } from "../liquidjs-tools/liquidjs-drop.js";
|
|
@@ -15,7 +15,7 @@ export function createPartDrop(renderingContext, docValues, options) {
|
|
|
15
15
|
});
|
|
16
16
|
return createLiquidDrop({
|
|
17
17
|
renderingContext,
|
|
18
|
-
renderingCacheKey: `part:${
|
|
18
|
+
renderingCacheKey: `part:${encodeLNodeId(docValues)}:${options.fieldNames?.join(",") ?? "full"}`,
|
|
19
19
|
values: {
|
|
20
20
|
kind: "part",
|
|
21
21
|
leafType: async () => {
|
|
@@ -26,7 +26,7 @@ export function createPartDrop(renderingContext, docValues, options) {
|
|
|
26
26
|
siteContext.logger.warn("'leafId' is deprecated, use 'nodeId' instead");
|
|
27
27
|
return docValues.nodeId;
|
|
28
28
|
},
|
|
29
|
-
id:
|
|
29
|
+
id: encodeLNodeId(docValues),
|
|
30
30
|
...docValues,
|
|
31
31
|
typeLabel: typeLabel,
|
|
32
32
|
num: () => {
|
|
@@ -52,14 +52,14 @@ export function createPartDrop(renderingContext, docValues, options) {
|
|
|
52
52
|
},
|
|
53
53
|
field: () => loadPublicFieldValues(renderingContext, {
|
|
54
54
|
typeName: docValues.type,
|
|
55
|
-
|
|
55
|
+
lNodeId: docValues,
|
|
56
56
|
fieldNames: options.fieldNames,
|
|
57
57
|
}),
|
|
58
58
|
fields: () => {
|
|
59
59
|
siteContext.logger.warn("'part.fields' is deprecated, use 'part.field' instead");
|
|
60
60
|
return loadPublicFieldValues(renderingContext, {
|
|
61
61
|
typeName: docValues.type,
|
|
62
|
-
|
|
62
|
+
lNodeId: docValues,
|
|
63
63
|
fieldNames: options.fieldNames,
|
|
64
64
|
});
|
|
65
65
|
},
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type Tracker } from "@paroicms/internal-server-lib";
|
|
2
|
-
import type { Obj,
|
|
2
|
+
import type { Obj, ParsedLNodeId, ScDocumentKind, ScSorting } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import type { LabeledBy } from "@paroicms/public-server-lib";
|
|
4
4
|
import type { Knex } from "knex";
|
|
5
5
|
import type { RenderingContext } from "../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
6
6
|
import type { SiteContext } from "../site-context/site-context.types.js";
|
|
7
7
|
import type { TpDocValues } from "./rendering-payload.types.js";
|
|
8
|
-
export declare function getDocItem(siteContext: SiteContext, tracker: Tracker, documentId:
|
|
9
|
-
export declare function getDocItem(siteContext: SiteContext, tracker: Tracker, documentId:
|
|
8
|
+
export declare function getDocItem(siteContext: SiteContext, tracker: Tracker, documentId: ParsedLNodeId): Promise<TpDocValues>;
|
|
9
|
+
export declare function getDocItem(siteContext: SiteContext, tracker: Tracker, documentId: ParsedLNodeId, options: {
|
|
10
10
|
allowUndef: true;
|
|
11
11
|
}): Promise<TpDocValues | undefined>;
|
|
12
12
|
export interface PaginatedResult<T> {
|
|
@@ -17,7 +17,7 @@ export interface PaginatedResult<T> {
|
|
|
17
17
|
pageSize: number;
|
|
18
18
|
}
|
|
19
19
|
export interface GetPaginatedDocsOptions {
|
|
20
|
-
parentId:
|
|
20
|
+
parentId: ParsedLNodeId;
|
|
21
21
|
documentKind: ScDocumentKind;
|
|
22
22
|
orderBy?: ScSorting;
|
|
23
23
|
labeledBy?: LabeledBy;
|
|
@@ -26,7 +26,7 @@ export interface GetPaginatedDocsOptions {
|
|
|
26
26
|
}
|
|
27
27
|
export declare function getPaginatedListOfDocValues(renderingContext: RenderingContext, options: GetPaginatedDocsOptions): Promise<PaginatedResult<TpDocValues>>;
|
|
28
28
|
export interface GetDocsOptions {
|
|
29
|
-
parentId:
|
|
29
|
+
parentId: ParsedLNodeId;
|
|
30
30
|
documentKind: ScDocumentKind;
|
|
31
31
|
orderBy?: ScSorting;
|
|
32
32
|
offset?: number;
|
|
@@ -9,7 +9,7 @@ export async function getDocItem(siteContext, tracker, documentId, options = {})
|
|
|
9
9
|
const query = siteContext.cn("PaDocument as d");
|
|
10
10
|
querySelectDocValues(query, { omitId: true });
|
|
11
11
|
query
|
|
12
|
-
.innerJoin("
|
|
12
|
+
.innerJoin("PaLNode as s", {
|
|
13
13
|
"s.nodeId": "d.nodeId",
|
|
14
14
|
"s.language": "d.language",
|
|
15
15
|
})
|
|
@@ -113,7 +113,7 @@ export function querySelectDocValues(query, { omitId } = {}) {
|
|
|
113
113
|
function createBaseDocItemsQueryBuilder(siteContext, { parentId }) {
|
|
114
114
|
const { cn } = siteContext;
|
|
115
115
|
return cn("PaNode as l")
|
|
116
|
-
.innerJoin("
|
|
116
|
+
.innerJoin("PaLNode as s", {
|
|
117
117
|
"s.nodeId": "l.id",
|
|
118
118
|
"s.language": cn.raw("?", [parentId.language]),
|
|
119
119
|
})
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Tracker } from "@paroicms/internal-server-lib";
|
|
2
2
|
import type { ScFieldType } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import type { SiteContext } from "../site-context/site-context.types.js";
|
|
4
|
-
export declare function loadExcerpt(siteContext: SiteContext, tracker: Tracker, {
|
|
5
|
-
|
|
4
|
+
export declare function loadExcerpt(siteContext: SiteContext, tracker: Tracker, { lNodeId, fieldTypes, maxLength, }: {
|
|
5
|
+
lNodeId: {
|
|
6
6
|
nodeId: string;
|
|
7
7
|
language: string;
|
|
8
8
|
};
|
|
@@ -8,7 +8,7 @@ const ExcerptRowAT = type({
|
|
|
8
8
|
}).pipe((data) => ({
|
|
9
9
|
excerpt: data.excerpt ?? undefined,
|
|
10
10
|
}));
|
|
11
|
-
export async function loadExcerpt(siteContext, tracker, {
|
|
11
|
+
export async function loadExcerpt(siteContext, tracker, { lNodeId, fieldTypes, maxLength, }) {
|
|
12
12
|
const excerptFieldTypes = [];
|
|
13
13
|
for (const field of fieldTypes ?? []) {
|
|
14
14
|
if (field.storedAs === "text" &&
|
|
@@ -23,13 +23,13 @@ export async function loadExcerpt(siteContext, tracker, { nodelId, fieldTypes, m
|
|
|
23
23
|
}
|
|
24
24
|
const orderedFieldTypes = excerptFieldTypes.sort((a, b) => a.useAsExcerpt - b.useAsExcerpt);
|
|
25
25
|
for (const field of orderedFieldTypes) {
|
|
26
|
-
const dbLanguage = field.localized ?
|
|
26
|
+
const dbLanguage = field.localized ? lNodeId.language : dbAnyLanguage;
|
|
27
27
|
const row = await siteContext
|
|
28
28
|
.cn("PaFieldText as f")
|
|
29
29
|
.select("f.excerpt")
|
|
30
30
|
.where({
|
|
31
31
|
"f.field": field.name,
|
|
32
|
-
"f.nodeId":
|
|
32
|
+
"f.nodeId": lNodeId.nodeId,
|
|
33
33
|
"f.language": dbLanguage,
|
|
34
34
|
})
|
|
35
35
|
.first();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ParsedLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import { type DropInst } from "../liquidjs-tools/liquidjs-drop.js";
|
|
3
3
|
import type { RenderingContext } from "../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
4
4
|
import type { TpFieldValues } from "./rendering-payload.types.js";
|
|
@@ -9,6 +9,6 @@ export declare function getPublicSiteFieldValues(renderingContext: RenderingCont
|
|
|
9
9
|
}>;
|
|
10
10
|
export declare function loadPublicFieldValues(renderingContext: RenderingContext, options: {
|
|
11
11
|
typeName: string;
|
|
12
|
-
|
|
12
|
+
lNodeId: ParsedLNodeId;
|
|
13
13
|
fieldNames?: string[];
|
|
14
14
|
}): Promise<TpFieldValues>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getNodeTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { encodeLNodeId, isJsonFieldValue, isMediaHandleValue, isReadLabelingFieldValue, pickATermTitle, } from "@paroicms/public-anywhere-lib";
|
|
3
|
+
import { languageIfLNode } from "../admin-backend/fields/_fields.helpers.js";
|
|
4
4
|
import { loadFieldValues } from "../admin-backend/fields/load-fields.queries.js";
|
|
5
5
|
import { preprocessFields } from "../admin-backend/fields/preprocess-fields.js";
|
|
6
6
|
import { getHandleOfFieldOnNode } from "../common/media-handles.helpers.js";
|
|
@@ -23,7 +23,7 @@ export function getPublicSiteFieldValues(renderingContext, language, { deprecate
|
|
|
23
23
|
const rawFValues = await loadFieldValues(siteContext, {
|
|
24
24
|
fieldTypes,
|
|
25
25
|
nodeId: siteNodeId,
|
|
26
|
-
language:
|
|
26
|
+
language: languageIfLNode(language, fType),
|
|
27
27
|
publishedOnly: true,
|
|
28
28
|
});
|
|
29
29
|
const fValues = await preprocessFields(renderingContext, rawFValues, fieldTypes, {
|
|
@@ -53,8 +53,8 @@ export async function loadPublicFieldValues(renderingContext, options) {
|
|
|
53
53
|
}
|
|
54
54
|
const rawValues = await loadFieldValues(siteContext, {
|
|
55
55
|
fieldTypes,
|
|
56
|
-
nodeId: options.
|
|
57
|
-
language: options.
|
|
56
|
+
nodeId: options.lNodeId.nodeId,
|
|
57
|
+
language: options.lNodeId.language,
|
|
58
58
|
publishedOnly: true,
|
|
59
59
|
});
|
|
60
60
|
const values = await preprocessFields(renderingContext, rawValues, fieldTypes, {
|
|
@@ -66,14 +66,14 @@ export async function loadPublicFieldValues(renderingContext, options) {
|
|
|
66
66
|
const fType = map.get(fieldName);
|
|
67
67
|
if (!fType || !(fType.name in values))
|
|
68
68
|
throw new Error(`missing field type for '${fieldName}'`);
|
|
69
|
-
result[fieldName] = makeFieldValueOrLoader(renderingContext, fType, value, options.
|
|
69
|
+
result[fieldName] = makeFieldValueOrLoader(renderingContext, fType, value, options.lNodeId.language);
|
|
70
70
|
if (fType.withGallery) {
|
|
71
|
-
result[`${fieldName}_gallery`] = createWithGalleryFieldLoader(renderingContext, fType, options.
|
|
71
|
+
result[`${fieldName}_gallery`] = createWithGalleryFieldLoader(renderingContext, fType, options.lNodeId.nodeId);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
return createLiquidDrop({
|
|
75
75
|
renderingContext,
|
|
76
|
-
renderingCacheKey: `fields:${
|
|
76
|
+
renderingCacheKey: `fields:${encodeLNodeId(options.lNodeId)}:${options.fieldNames?.join(",") ?? "full"}`,
|
|
77
77
|
values: result,
|
|
78
78
|
});
|
|
79
79
|
}
|
|
@@ -113,7 +113,7 @@ function createTpTerm(renderingContext, term, rightLanguage) {
|
|
|
113
113
|
renderingContext.addDependencyKey(makeCacheDependencyKey({ documentId: termId }));
|
|
114
114
|
return createLiquidDrop({
|
|
115
115
|
renderingContext,
|
|
116
|
-
renderingCacheKey: `term:${
|
|
116
|
+
renderingCacheKey: `term:${encodeLNodeId(termId)}`,
|
|
117
117
|
values: {
|
|
118
118
|
nodeId: term.nodeId,
|
|
119
119
|
title,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ParsedLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import type { RenderingContext } from "../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
3
3
|
import type { TpSiblingDocuments } from "./rendering-payload.types.js";
|
|
4
|
-
export declare function getSiblingDocuments(renderingContext: RenderingContext, documentId:
|
|
4
|
+
export declare function getSiblingDocuments(renderingContext: RenderingContext, documentId: ParsedLNodeId): Promise<TpSiblingDocuments>;
|
|
@@ -66,7 +66,7 @@ async function getSiblingDocumentIds(siteContext, tracker, { documentId, parentN
|
|
|
66
66
|
const { language } = documentId;
|
|
67
67
|
const { cn } = siteContext;
|
|
68
68
|
const subQuery = cn("PaNode as l")
|
|
69
|
-
.innerJoin("
|
|
69
|
+
.innerJoin("PaLNode as s", {
|
|
70
70
|
"s.nodeId": "l.id",
|
|
71
71
|
"s.language": cn.raw("?", [language]),
|
|
72
72
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Tracker } from "@paroicms/internal-server-lib";
|
|
2
|
-
import { type
|
|
2
|
+
import { type ParsedLNodeId, type ScListType } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import type { SiteContext } from "../site-context/site-context.types.js";
|
|
4
4
|
import type * as publicPayload from "./rendering-payload.types.js";
|
|
5
5
|
interface BasePartData {
|
|
@@ -15,11 +15,11 @@ export interface CompletedPartData extends BasePartData {
|
|
|
15
15
|
inRightLanguage: boolean;
|
|
16
16
|
language: string;
|
|
17
17
|
}
|
|
18
|
-
export declare function loadPartsOf(siteContext: SiteContext, tracker: Tracker, documentId:
|
|
18
|
+
export declare function loadPartsOf(siteContext: SiteContext, tracker: Tracker, documentId: ParsedLNodeId, listType: ScListType): Promise<Map<string, CompletedPartData[]>>;
|
|
19
19
|
export declare function keyOfParentPartData(item: {
|
|
20
20
|
listName: string;
|
|
21
21
|
parentNodeId: string;
|
|
22
22
|
}): string;
|
|
23
23
|
export declare function formatListOfPartValues(siteContext: SiteContext, list: CompletedPartData[], listType: ScListType): publicPayload.TpPartValues[];
|
|
24
|
-
export declare function countPartsOf(siteContext: SiteContext, tracker: Tracker, parentId:
|
|
24
|
+
export declare function countPartsOf(siteContext: SiteContext, tracker: Tracker, parentId: ParsedLNodeId, listType: Pick<ScListType, "listName">): Promise<number>;
|
|
25
25
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mainDbSchemaName } from "@paroicms/connector";
|
|
2
2
|
import { getPartTypeByName, sortParts } from "@paroicms/internal-anywhere-lib";
|
|
3
3
|
import { parseSqliteDateTime } from "@paroicms/internal-server-lib";
|
|
4
|
-
import {
|
|
4
|
+
import { encodeLNodeId, } from "@paroicms/public-anywhere-lib";
|
|
5
5
|
import { type } from "arktype";
|
|
6
6
|
const LoadPartsRowAT = type({
|
|
7
7
|
nodeId: "number",
|
|
@@ -38,7 +38,7 @@ export async function loadPartsOf(siteContext, tracker, documentId, listType) {
|
|
|
38
38
|
"s.nodeId as tNodeId",
|
|
39
39
|
])
|
|
40
40
|
.innerJoin("PaPartNode as p", "p.nodeId", "l.id")
|
|
41
|
-
.leftJoin("
|
|
41
|
+
.leftJoin("PaLNode as s", {
|
|
42
42
|
"s.nodeId": "l.id",
|
|
43
43
|
"s.language": cn.raw("?", [documentId.language]),
|
|
44
44
|
"s.ready": cn.raw("?", [1]),
|
|
@@ -126,19 +126,19 @@ async function completeMissingTranslations(siteContext, tracker, list) {
|
|
|
126
126
|
let otherLanguageItems;
|
|
127
127
|
if (missingNodeIds.length > 0) {
|
|
128
128
|
const rows = await siteContext
|
|
129
|
-
.cn("
|
|
129
|
+
.cn("PaLNode as s")
|
|
130
130
|
.select(["s.nodeId", "s.language", "l.typeName"])
|
|
131
131
|
.innerJoin("PaNode as l", "l.id", "s.nodeId")
|
|
132
132
|
.whereIn("s.nodeId", missingNodeIds);
|
|
133
|
-
tracker.trackAccess(mainDbSchemaName, "
|
|
133
|
+
tracker.trackAccess(mainDbSchemaName, "PaLNode", "read");
|
|
134
134
|
const formatted = rows.map((row) => MissingTranslationsRowAT.assert(row));
|
|
135
|
-
otherLanguageItems = new Map(formatted.map((item) => [
|
|
135
|
+
otherLanguageItems = new Map(formatted.map((item) => [encodeLNodeId(item), item]));
|
|
136
136
|
}
|
|
137
137
|
return list.map((item) => {
|
|
138
138
|
if (item.inRightLanguage)
|
|
139
139
|
return item;
|
|
140
140
|
for (const language of siteContext.siteSchema.languages) {
|
|
141
|
-
const found = otherLanguageItems?.get(
|
|
141
|
+
const found = otherLanguageItems?.get(encodeLNodeId({ nodeId: item.nodeId, language }));
|
|
142
142
|
if (found) {
|
|
143
143
|
return {
|
|
144
144
|
typeName: item.typeName,
|
|
@@ -29,17 +29,17 @@ export interface TpSitePayload extends TpBaseSitePayload {
|
|
|
29
29
|
kind: "site";
|
|
30
30
|
language: string;
|
|
31
31
|
languageLabel: string;
|
|
32
|
-
home:
|
|
32
|
+
home: TpHomeRoutingDocumentLNodeIds;
|
|
33
33
|
}
|
|
34
|
-
export interface
|
|
34
|
+
export interface TpHomeRoutingDocumentLNodeIds extends TpRoutingDocumentLNodeIds {
|
|
35
35
|
url: string;
|
|
36
36
|
}
|
|
37
|
-
export interface
|
|
37
|
+
export interface TpRoutingDocumentLNodeIds {
|
|
38
38
|
id: string;
|
|
39
|
-
[typeName: string]:
|
|
39
|
+
[typeName: string]: TpRoutingDocumentLNodeIds | string;
|
|
40
40
|
}
|
|
41
41
|
export interface TpChildRoutingIds {
|
|
42
|
-
[typeName: string]:
|
|
42
|
+
[typeName: string]: TpRoutingDocumentLNodeIds | string;
|
|
43
43
|
}
|
|
44
44
|
export interface TpDetachedDocPayload {
|
|
45
45
|
kind: "detached";
|
|
@@ -2,4 +2,4 @@ import type { RoutingIds } from "@paroicms/public-anywhere-lib";
|
|
|
2
2
|
import type { RenderingContext } from "../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
3
3
|
import type * as publicPayload from "./rendering-payload.types.js";
|
|
4
4
|
export declare function makeSitePayload(renderingContext: RenderingContext, language: string): publicPayload.TpSitePayload;
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function toPublicRoutingDocumentLNodeIds(ids: RoutingIds, language: string): publicPayload.TpRoutingDocumentLNodeIds;
|