@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,15 +1,15 @@
|
|
|
1
1
|
import { createNode } from "@paroicms/connector";
|
|
2
2
|
import { getDocumentTypeByName, getPartTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
3
3
|
import { parseSqliteDateTime } from "@paroicms/internal-server-lib";
|
|
4
|
-
import {
|
|
4
|
+
import { encodeLNodeId, isDef, } from "@paroicms/public-anywhere-lib";
|
|
5
5
|
import { ApiError } from "@paroicms/public-server-lib";
|
|
6
6
|
import { type } from "arktype";
|
|
7
7
|
import { getHandleOfFeaturedImage } from "../../common/media-handles.helpers.js";
|
|
8
8
|
import { invalidateDocumentInCache } from "../../common/text-cache.js";
|
|
9
|
-
import { isOrphanNode } from "../
|
|
9
|
+
import { isOrphanNode } from "../lnode/lnode.queries.js";
|
|
10
10
|
import { createPartNode, shiftPartNodeOrdersAfterDeletion } from "./part-node.queries.js";
|
|
11
11
|
export async function createPartOnNode(siteContext, newId) {
|
|
12
|
-
await siteContext.cn("
|
|
12
|
+
await siteContext.cn("PaLNode").insert({
|
|
13
13
|
language: newId.language,
|
|
14
14
|
nodeId: newId.nodeId,
|
|
15
15
|
ready: true,
|
|
@@ -31,8 +31,8 @@ const OrderNumAT = type({
|
|
|
31
31
|
}).pipe((r) => ({
|
|
32
32
|
orderNum: r.orderNum ?? undefined,
|
|
33
33
|
}));
|
|
34
|
-
export async function createNodeWithPart(siteContext, {
|
|
35
|
-
const { language, nodeId: parentNodeId } =
|
|
34
|
+
export async function createNodeWithPart(siteContext, { parentLNodeId, listName, typeName, }) {
|
|
35
|
+
const { language, nodeId: parentNodeId } = parentLNodeId;
|
|
36
36
|
const { cn, siteSchema } = siteContext;
|
|
37
37
|
const row = await cn("PaNode as l")
|
|
38
38
|
.select(["l.typeName as typeName", "p.documentNodeId as documentNodeId"])
|
|
@@ -64,7 +64,7 @@ export async function createNodeWithPart(siteContext, { parentNodelId, listName,
|
|
|
64
64
|
throw new ApiError("maximum parts reached", 400);
|
|
65
65
|
}
|
|
66
66
|
if (!listType.parts.includes(typeName)) {
|
|
67
|
-
throw new ApiError(`Invalid
|
|
67
|
+
throw new ApiError(`Invalid lNodeType typeName: '${typeName}' for listName '${listName}'`, 400);
|
|
68
68
|
}
|
|
69
69
|
let lastOrderNum;
|
|
70
70
|
if (listType.sorting) {
|
|
@@ -87,14 +87,14 @@ export async function createNodeWithPart(siteContext, { parentNodelId, listName,
|
|
|
87
87
|
isOrdered: !!listType.sorting,
|
|
88
88
|
lastOrderNum,
|
|
89
89
|
});
|
|
90
|
-
await tx("
|
|
90
|
+
await tx("PaLNode").insert({
|
|
91
91
|
language,
|
|
92
92
|
nodeId,
|
|
93
93
|
ready: true,
|
|
94
94
|
});
|
|
95
95
|
return { language, nodeId };
|
|
96
96
|
});
|
|
97
|
-
await invalidateDocumentInCache(siteContext, { documentId:
|
|
97
|
+
await invalidateDocumentInCache(siteContext, { documentId: parentLNodeId });
|
|
98
98
|
return newId;
|
|
99
99
|
}
|
|
100
100
|
const PartSeedRowAT = type({
|
|
@@ -115,7 +115,7 @@ const PartSeedRowAT = type({
|
|
|
115
115
|
orderNum: r.orderNum ?? undefined,
|
|
116
116
|
ready: Boolean(r.ready),
|
|
117
117
|
}));
|
|
118
|
-
export async function loadPartSeed(siteContext,
|
|
118
|
+
export async function loadPartSeed(siteContext, lNodeId) {
|
|
119
119
|
const { cn } = siteContext;
|
|
120
120
|
const row = await cn("PaNode as l")
|
|
121
121
|
.select([
|
|
@@ -128,44 +128,44 @@ export async function loadPartSeed(siteContext, nodelId) {
|
|
|
128
128
|
"s.ready",
|
|
129
129
|
])
|
|
130
130
|
.innerJoin("PaPartNode as p", "p.nodeId", "l.id")
|
|
131
|
-
.innerJoin("
|
|
131
|
+
.innerJoin("PaLNode as s", {
|
|
132
132
|
"s.nodeId": "l.id",
|
|
133
|
-
"s.language": cn.raw("?", [
|
|
133
|
+
"s.language": cn.raw("?", [lNodeId.language]),
|
|
134
134
|
})
|
|
135
135
|
.leftJoin("PaOrderedNode as o", "o.nodeId", "l.id")
|
|
136
|
-
.where("l.id",
|
|
136
|
+
.where("l.id", lNodeId.nodeId)
|
|
137
137
|
.whereNotExists(function () {
|
|
138
138
|
this.select(1).from("PaDocument as d").where("d.nodeId", "l.id");
|
|
139
139
|
})
|
|
140
140
|
.first();
|
|
141
141
|
if (!row) {
|
|
142
|
-
throw new ApiError(`cannot find part '${
|
|
142
|
+
throw new ApiError(`cannot find part '${lNodeId.language}:${lNodeId.nodeId}'`, 404);
|
|
143
143
|
}
|
|
144
144
|
const { typeName, publishDate, parentId, listName, documentNodeId, orderNum, ready } = PartSeedRowAT.assert(row);
|
|
145
145
|
return {
|
|
146
146
|
typeName,
|
|
147
|
-
partId:
|
|
148
|
-
nodeId:
|
|
147
|
+
partId: encodeLNodeId(lNodeId),
|
|
148
|
+
nodeId: lNodeId.nodeId,
|
|
149
149
|
listName,
|
|
150
150
|
parentNodeId: parentId,
|
|
151
|
-
documentId:
|
|
151
|
+
documentId: encodeLNodeId({ language: lNodeId.language, nodeId: documentNodeId }),
|
|
152
152
|
orderNum,
|
|
153
153
|
ready,
|
|
154
154
|
publishDate,
|
|
155
|
-
language:
|
|
155
|
+
language: lNodeId.language,
|
|
156
156
|
scheduled: publishDate ? publishDate.getTime() > Date.now() : false,
|
|
157
157
|
};
|
|
158
158
|
}
|
|
159
|
-
export async function deletePart(siteContext,
|
|
160
|
-
const nodeId =
|
|
159
|
+
export async function deletePart(siteContext, lNodeId) {
|
|
160
|
+
const nodeId = lNodeId.nodeId;
|
|
161
161
|
const documentNodeId = await getDocumentNodeIdOfPart(siteContext, nodeId);
|
|
162
162
|
const { shouldDeleteNode } = await siteContext.cn.transaction(async (tx) => {
|
|
163
163
|
await tx("PaFieldVarchar")
|
|
164
164
|
.where("nodeId", nodeId)
|
|
165
|
-
.where("language",
|
|
165
|
+
.where("language", lNodeId.language)
|
|
166
166
|
.delete();
|
|
167
|
-
await tx("PaFieldText").where("nodeId", nodeId).where("language",
|
|
168
|
-
await tx("
|
|
167
|
+
await tx("PaFieldText").where("nodeId", nodeId).where("language", lNodeId.language).delete();
|
|
168
|
+
await tx("PaLNode").where("nodeId", nodeId).where("language", lNodeId.language).delete();
|
|
169
169
|
const shouldDeleteNode = await isOrphanNode(tx, nodeId);
|
|
170
170
|
if (shouldDeleteNode) {
|
|
171
171
|
await shiftPartNodeOrdersAfterDeletion(tx, nodeId);
|
|
@@ -177,12 +177,12 @@ export async function deletePart(siteContext, nodelId) {
|
|
|
177
177
|
await invalidateDocumentInCache(siteContext, {
|
|
178
178
|
documentId: {
|
|
179
179
|
nodeId: documentNodeId,
|
|
180
|
-
language:
|
|
180
|
+
language: lNodeId.language,
|
|
181
181
|
},
|
|
182
182
|
});
|
|
183
183
|
if (shouldDeleteNode) {
|
|
184
184
|
const deletedIds = await siteContext.mediaStorage.deleteMedia({
|
|
185
|
-
handle: getHandleOfFeaturedImage(
|
|
185
|
+
handle: getHandleOfFeaturedImage(lNodeId.nodeId),
|
|
186
186
|
});
|
|
187
187
|
await siteContext.imageCache.invalidate({ mediaIds: deletedIds });
|
|
188
188
|
}
|
|
@@ -195,7 +195,7 @@ const PartRowAT = type({
|
|
|
195
195
|
listName: "string",
|
|
196
196
|
orderNum: "number|null",
|
|
197
197
|
language: "string|null",
|
|
198
|
-
|
|
198
|
+
lNodeNodeId: "number|null",
|
|
199
199
|
ready: "number",
|
|
200
200
|
"+": "reject",
|
|
201
201
|
}).pipe((r) => ({
|
|
@@ -206,7 +206,7 @@ const PartRowAT = type({
|
|
|
206
206
|
listName: r.listName,
|
|
207
207
|
orderNum: r.orderNum ?? undefined,
|
|
208
208
|
language: r.language ?? undefined,
|
|
209
|
-
|
|
209
|
+
lNodeNodeId: isDef(r.lNodeNodeId) ? String(r.lNodeNodeId) : undefined,
|
|
210
210
|
ready: Boolean(r.ready),
|
|
211
211
|
}));
|
|
212
212
|
export async function readPartSeedsOf({ cn }, { documentNodeId, language, }) {
|
|
@@ -219,26 +219,26 @@ export async function readPartSeedsOf({ cn }, { documentNodeId, language, }) {
|
|
|
219
219
|
"p.listName",
|
|
220
220
|
"o.orderNum",
|
|
221
221
|
"s.language",
|
|
222
|
-
"s.nodeId as
|
|
222
|
+
"s.nodeId as lNodeNodeId",
|
|
223
223
|
"s.ready",
|
|
224
224
|
])
|
|
225
225
|
.innerJoin("PaPartNode as p", "p.nodeId", "l.id")
|
|
226
|
-
.leftJoin("
|
|
226
|
+
.leftJoin("PaLNode as s", {
|
|
227
227
|
"s.nodeId": "l.id",
|
|
228
228
|
"s.language": cn.raw("?", [language]),
|
|
229
229
|
})
|
|
230
230
|
.leftJoin("PaOrderedNode as o", "o.nodeId", "l.id")
|
|
231
231
|
.where("p.documentNodeId", documentNodeId);
|
|
232
232
|
return parts.map((item) => {
|
|
233
|
-
const { nodeId, publishDate, typeName, parentId, listName, orderNum,
|
|
234
|
-
const isPlaceholder =
|
|
233
|
+
const { nodeId, publishDate, typeName, parentId, listName, orderNum, lNodeNodeId, ready } = PartRowAT.assert(item);
|
|
234
|
+
const isPlaceholder = lNodeNodeId === undefined;
|
|
235
235
|
if (isPlaceholder) {
|
|
236
236
|
const seed = {
|
|
237
237
|
typeName,
|
|
238
238
|
nodeId,
|
|
239
239
|
listName,
|
|
240
240
|
parentNodeId: parentId,
|
|
241
|
-
documentId:
|
|
241
|
+
documentId: encodeLNodeId({ language, nodeId: documentNodeId }),
|
|
242
242
|
orderNum,
|
|
243
243
|
publishDate,
|
|
244
244
|
};
|
|
@@ -246,11 +246,11 @@ export async function readPartSeedsOf({ cn }, { documentNodeId, language, }) {
|
|
|
246
246
|
}
|
|
247
247
|
const seed = {
|
|
248
248
|
typeName,
|
|
249
|
-
partId:
|
|
249
|
+
partId: encodeLNodeId({ language, nodeId }),
|
|
250
250
|
nodeId,
|
|
251
251
|
listName,
|
|
252
252
|
parentNodeId: parentId,
|
|
253
|
-
documentId:
|
|
253
|
+
documentId: encodeLNodeId({ language, nodeId: documentNodeId }),
|
|
254
254
|
orderNum,
|
|
255
255
|
publishDate,
|
|
256
256
|
language,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { GqlResolvers } from "../../graphql/generated-graphql-types.d.ts";
|
|
2
2
|
import type { GraphqlContext } from "../../graphql/graphql.types.js";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const extendLNodeWrapWithPartResolvers: GqlResolvers<GraphqlContext>;
|
|
@@ -2,8 +2,8 @@ import { getDocumentTypeByName, getPartTypeByName } from "@paroicms/internal-any
|
|
|
2
2
|
import { authGuard } from "../auth/auth.helper.js";
|
|
3
3
|
import { getTypeNameOf } from "../node/node.queries.js";
|
|
4
4
|
import { readPartSeedsOf } from "./part.queries.js";
|
|
5
|
-
export const
|
|
6
|
-
|
|
5
|
+
export const extendLNodeWrapWithPartResolvers = {
|
|
6
|
+
LNodeWrap: {
|
|
7
7
|
parts: async ({ nodeId, language }, _args, { siteContext, httpContext }) => {
|
|
8
8
|
authGuard(httpContext);
|
|
9
9
|
const typeName = await getTypeNameOf(siteContext, nodeId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part.resolver.extend.js","sourceRoot":"","sources":["../../../src/admin-backend/part/part.resolver.extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"part.resolver.extend.js","sourceRoot":"","sources":["../../../src/admin-backend/part/part.resolver.extend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAG3F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAiB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,MAAM,gCAAgC,GAAiC;IAC5E,SAAS,EAAE;QACT,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAiB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;YACxF,SAAS,CAAC,WAAW,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAE7E,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAExC,OAAO,MAAM,eAAe,CAAC,WAAW,EAAE;gBACxC,cAAc,EAAE,MAAM;gBACtB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;KACF;IAED,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAY,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;YACnF,SAAS,CAAC,WAAW,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YAEhC,OAAO,MAAM,eAAe,CAAC,WAAW,EAAE;gBACxC,cAAc,EAAE,MAAM;gBACtB,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;KACF;IAED,iBAAiB,EAAE;QACjB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;KAC3E;CACF,CAAC"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { getDocumentTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
2
|
-
import {
|
|
2
|
+
import { parseLNodeId } from "@paroicms/public-anywhere-lib";
|
|
3
3
|
import { authGuard } from "../auth/auth.helper.js";
|
|
4
4
|
import { getTypeNameOf } from "../node/node.queries.js";
|
|
5
5
|
import { movePart } from "./part-moving.queries.js";
|
|
6
6
|
import { createNodeWithPart, createPartOnNode, deletePart, loadPartSeed, readPartSeedsOf, } from "./part.queries.js";
|
|
7
7
|
export const partResolvers = {
|
|
8
8
|
Query: {
|
|
9
|
-
part: async (_parent, {
|
|
9
|
+
part: async (_parent, { lNodeId }, { siteContext, httpContext }) => {
|
|
10
10
|
authGuard(httpContext);
|
|
11
|
-
return await loadPartSeed(siteContext,
|
|
11
|
+
return await loadPartSeed(siteContext, parseLNodeId(lNodeId));
|
|
12
12
|
},
|
|
13
13
|
partsOf: async (_parent, { documentId }, { siteContext, httpContext }) => {
|
|
14
14
|
authGuard(httpContext);
|
|
15
|
-
const { nodeId, language } =
|
|
15
|
+
const { nodeId, language } = parseLNodeId(documentId);
|
|
16
16
|
const typeName = await getTypeNameOf(siteContext, nodeId);
|
|
17
17
|
const documentType = getDocumentTypeByName(siteContext.siteSchema, typeName);
|
|
18
18
|
if (!documentType.lists || documentType.lists.length === 0)
|
|
@@ -32,18 +32,18 @@ export const partResolvers = {
|
|
|
32
32
|
});
|
|
33
33
|
return await loadPartSeed(siteContext, newId);
|
|
34
34
|
},
|
|
35
|
-
createNodeWithPart: async (_parent, {
|
|
35
|
+
createNodeWithPart: async (_parent, { parentLNodeId, listName, typeName }, { siteContext, httpContext }) => {
|
|
36
36
|
authGuard(httpContext);
|
|
37
37
|
const newId = await createNodeWithPart(siteContext, {
|
|
38
38
|
listName,
|
|
39
|
-
|
|
39
|
+
parentLNodeId: parseLNodeId(parentLNodeId),
|
|
40
40
|
typeName,
|
|
41
41
|
});
|
|
42
42
|
return await loadPartSeed(siteContext, newId);
|
|
43
43
|
},
|
|
44
|
-
deletePart: async (_parent, {
|
|
44
|
+
deletePart: async (_parent, { lNodeId }, { siteContext, httpContext }) => {
|
|
45
45
|
authGuard(httpContext);
|
|
46
|
-
await deletePart(siteContext,
|
|
46
|
+
await deletePart(siteContext, parseLNodeId(lNodeId));
|
|
47
47
|
return true;
|
|
48
48
|
},
|
|
49
49
|
movePart: async (_parent, { partNodeId, newParentNodeId, newListName }, { siteContext, httpContext }) => {
|
|
@@ -19,7 +19,7 @@ export declare const AccountPreferencesAT: import("arktype/internal/methods/obje
|
|
|
19
19
|
export declare function formatAuthenticatedAccount(data: AccountRow): AuthenticatedAccount;
|
|
20
20
|
export declare function formatAccount(data: AccountRow): Account;
|
|
21
21
|
export interface DocumentSeed {
|
|
22
|
-
|
|
22
|
+
lNodeId: string;
|
|
23
23
|
nodeId: string;
|
|
24
24
|
language: string;
|
|
25
25
|
title?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { encodeLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import { type } from "arktype";
|
|
3
3
|
import { cmsVersion } from "../context.js";
|
|
4
4
|
import { getHandleOfFeaturedImage } from "./media-handles.helpers.js";
|
|
@@ -20,7 +20,7 @@ export function formatAccount(data) {
|
|
|
20
20
|
}
|
|
21
21
|
export function toDocumentSeed(document) {
|
|
22
22
|
return {
|
|
23
|
-
|
|
23
|
+
lNodeId: encodeLNodeId({
|
|
24
24
|
language: document.language,
|
|
25
25
|
nodeId: document.nodeId,
|
|
26
26
|
}),
|
|
@@ -11,7 +11,7 @@ export function getHandleOfField(siteContext, options) {
|
|
|
11
11
|
const { fieldType, nodeId, language } = options;
|
|
12
12
|
if (fieldType.localized && !fieldType.withGallery) {
|
|
13
13
|
if (language === undefined)
|
|
14
|
-
throw new Error("Missing language for
|
|
14
|
+
throw new Error("Missing language for lNode field");
|
|
15
15
|
if (nodeId === siteContext.siteIds.siteNodeId)
|
|
16
16
|
return `site:${fieldType.name}:${language}`;
|
|
17
17
|
return `sect:${nodeId}:${fieldType.name}:${language}`;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ParsedLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import type { AppLogger } from "@paroicms/public-server-lib";
|
|
3
3
|
import type { SiteContext } from "../site-context/site-context.types.js";
|
|
4
4
|
export declare function makeCacheDependencyKey(options: {
|
|
5
|
-
documentId:
|
|
5
|
+
documentId: ParsedLNodeId;
|
|
6
6
|
perimeter?: "slug";
|
|
7
7
|
} | {
|
|
8
|
-
documentId:
|
|
8
|
+
documentId: ParsedLNodeId;
|
|
9
9
|
relation: "children";
|
|
10
10
|
} | {
|
|
11
11
|
relation: "labeled";
|
|
@@ -26,7 +26,7 @@ export declare function makeCacheKey(logger: AppLogger, options: {
|
|
|
26
26
|
}): string;
|
|
27
27
|
export declare function makeCacheKey(logger: AppLogger, options: {
|
|
28
28
|
kind: "url";
|
|
29
|
-
documentId:
|
|
29
|
+
documentId: ParsedLNodeId;
|
|
30
30
|
}): string;
|
|
31
31
|
export declare function makeCacheKey(logger: AppLogger, options: {
|
|
32
32
|
kind: "html";
|
|
@@ -45,20 +45,20 @@ export declare function makePluginCacheKey(logger: AppLogger, options: {
|
|
|
45
45
|
urlLike: string;
|
|
46
46
|
}): string;
|
|
47
47
|
export declare function invalidateDocumentInCache(siteContext: Pick<SiteContext, "cn" | "textCache" | "siteSchema">, options: {
|
|
48
|
-
parentOf:
|
|
48
|
+
parentOf: ParsedLNodeId;
|
|
49
49
|
} | {
|
|
50
|
-
documentId:
|
|
50
|
+
documentId: ParsedLNodeId;
|
|
51
51
|
perimeter?: "slug";
|
|
52
52
|
} | {
|
|
53
|
-
documentId:
|
|
53
|
+
documentId: ParsedLNodeId;
|
|
54
54
|
fully: true;
|
|
55
|
-
parentId:
|
|
55
|
+
parentId: ParsedLNodeId | undefined;
|
|
56
56
|
}): Promise<void>;
|
|
57
57
|
export declare function invalidateNodeInCache(siteContext: Pick<SiteContext, "textCache" | "cn" | "siteSchema">, { nodeId }: {
|
|
58
58
|
nodeId: string;
|
|
59
59
|
}): Promise<void>;
|
|
60
60
|
export declare function invalidateDocumentRelationCache(siteContext: Pick<SiteContext, "textCache">, options: {
|
|
61
|
-
documentId:
|
|
61
|
+
documentId: ParsedLNodeId;
|
|
62
62
|
relation: "children";
|
|
63
63
|
} | {
|
|
64
64
|
relation: "labeled";
|
|
@@ -71,7 +71,7 @@ export declare function depKeysOfNodeRelationCache(siteContext: Pick<SiteContext
|
|
|
71
71
|
}): Promise<string[]>;
|
|
72
72
|
export declare function invalidateMultipleDocumentsInCache(siteContext: Pick<SiteContext, "cn" | "textCache" | "siteSchema">, options: {
|
|
73
73
|
nodeId: string;
|
|
74
|
-
parentIds?:
|
|
74
|
+
parentIds?: ParsedLNodeId[];
|
|
75
75
|
fully?: boolean;
|
|
76
76
|
} | {
|
|
77
77
|
parentOfNodeId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { encodeLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import { allDependencyKey } from "@paroicms/server-text-cache-system";
|
|
3
|
-
import { getParentDocumentIdsOf,
|
|
3
|
+
import { getParentDocumentIdsOf, getParentLNodeIdOf, getParentNodeIdOf, } from "../admin-backend/document/load-documents.queries.js";
|
|
4
4
|
import { normalizeUrlForCache } from "./url-helpers.js";
|
|
5
5
|
export function makeCacheDependencyKey(options) {
|
|
6
6
|
if ("global" in options)
|
|
@@ -18,7 +18,7 @@ export function makeCacheDependencyKey(options) {
|
|
|
18
18
|
if ("nodeId" in options) {
|
|
19
19
|
return `*:${options.nodeId}`;
|
|
20
20
|
}
|
|
21
|
-
const encodedId =
|
|
21
|
+
const encodedId = encodeLNodeId(options.documentId);
|
|
22
22
|
if ("relation" in options)
|
|
23
23
|
return `${encodedId}:${options.relation}`;
|
|
24
24
|
if (options.perimeter)
|
|
@@ -39,7 +39,7 @@ export function makeCacheKey(logger, options) {
|
|
|
39
39
|
if (kind === "redirect")
|
|
40
40
|
return `${kind}:${urlKey}`;
|
|
41
41
|
if (documentId)
|
|
42
|
-
return `${kind}:${
|
|
42
|
+
return `${kind}:${encodeLNodeId(documentId)}`;
|
|
43
43
|
throw new Error("invalid parameter");
|
|
44
44
|
}
|
|
45
45
|
export function makePluginCacheKey(logger, options) {
|
|
@@ -48,7 +48,7 @@ export function makePluginCacheKey(logger, options) {
|
|
|
48
48
|
export async function invalidateDocumentInCache(siteContext, options) {
|
|
49
49
|
const documentId = "documentId" in options
|
|
50
50
|
? options.documentId
|
|
51
|
-
: await
|
|
51
|
+
: await getParentLNodeIdOf(siteContext, options.parentOf);
|
|
52
52
|
if (!documentId)
|
|
53
53
|
return;
|
|
54
54
|
const fully = "fully" in options && options.fully;
|
|
@@ -63,7 +63,7 @@ export async function invalidateDocumentInCache(siteContext, options) {
|
|
|
63
63
|
if (fully) {
|
|
64
64
|
dependencyKeys.push(makeCacheDependencyKey({ documentId, relation: "children" }));
|
|
65
65
|
}
|
|
66
|
-
const parentId = "parentId" in options ? options.parentId : await
|
|
66
|
+
const parentId = "parentId" in options ? options.parentId : await getParentLNodeIdOf(siteContext, documentId);
|
|
67
67
|
if (parentId) {
|
|
68
68
|
dependencyKeys.push(makeCacheDependencyKey({ documentId: parentId, relation: "children" }));
|
|
69
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-cache.js","sourceRoot":"","sources":["../../src/common/text-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsB,MAAM,+BAA+B,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EACL,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"text-cache.js","sourceRoot":"","sources":["../../src/common/text-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,13 @@ import { accountResolvers } from "../admin-backend/account/account.resolver.js";
|
|
|
4
4
|
import { backupResolvers } from "../admin-backend/backup/backup.resolver.js";
|
|
5
5
|
import { extendWithDocumentResolver } from "../admin-backend/document/document.resolver.extend.js";
|
|
6
6
|
import { documentResolvers } from "../admin-backend/document/document.resolver.js";
|
|
7
|
-
import {
|
|
7
|
+
import { extendLNodeWrapWithFieldValuesResolvers, extendPartWithFieldValuesResolver, fieldResolvers, } from "../admin-backend/fields/fields.resolver.js";
|
|
8
|
+
import { lNodeWrapResolvers } from "../admin-backend/lnode/lnode-wrap.resolver.js";
|
|
8
9
|
import { extendDocumentWithMediaResolver } from "../admin-backend/media/media.resolver.extend.js";
|
|
9
10
|
import { mediaResolvers } from "../admin-backend/media/media.resolver.js";
|
|
10
|
-
import {
|
|
11
|
+
import { extendLNodeWrapWithNodeResolver } from "../admin-backend/node/node.resolver.extend.js";
|
|
11
12
|
import { nodeResolvers } from "../admin-backend/node/node.resolver.js";
|
|
12
|
-
import {
|
|
13
|
-
import { extendNodelWrapWithPartResolvers } from "../admin-backend/part/part.resolver.extend.js";
|
|
13
|
+
import { extendLNodeWrapWithPartResolvers } from "../admin-backend/part/part.resolver.extend.js";
|
|
14
14
|
import { partResolvers } from "../admin-backend/part/part.resolver.js";
|
|
15
15
|
import { siteConstantsResolvers } from "../admin-backend/site-constants/site-constants.resolver.js";
|
|
16
16
|
import { unprotectedResolvers } from "../admin-backend/unprotected/unprotected.resolver.js";
|
|
@@ -24,14 +24,14 @@ export function federateResolvers() {
|
|
|
24
24
|
documentResolvers,
|
|
25
25
|
extendWithDocumentResolver,
|
|
26
26
|
fieldResolvers,
|
|
27
|
-
|
|
27
|
+
extendLNodeWrapWithFieldValuesResolvers,
|
|
28
28
|
extendPartWithFieldValuesResolver,
|
|
29
29
|
nodeResolvers,
|
|
30
|
-
|
|
30
|
+
extendLNodeWrapWithNodeResolver,
|
|
31
31
|
mediaResolvers,
|
|
32
32
|
partResolvers,
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
extendLNodeWrapWithPartResolvers,
|
|
34
|
+
lNodeWrapResolvers,
|
|
35
35
|
siteConstantsResolvers,
|
|
36
36
|
unprotectedResolvers,
|
|
37
37
|
scalarTypeResolvers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apollo-server-init.js","sourceRoot":"","sources":["../../src/graphql/apollo-server-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EACL,uCAAuC,EACvC,iCAAiC,EACjC,cAAc,GACf,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"apollo-server-init.js","sourceRoot":"","sources":["../../src/graphql/apollo-server-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EACL,uCAAuC,EACvC,iCAAiC,EACjC,cAAc,GACf,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4DAA4D,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAIhF,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;AAEjF,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,gBAAgB;QAChB,eAAe;QACf,iBAAiB;QACjB,0BAA0B;QAC1B,cAAc;QACd,uCAAuC;QACvC,iCAAiC;QACjC,aAAa;QACb,+BAA+B;QAC/B,cAAc;QACd,aAAa;QACb,gCAAgC;QAChC,kBAAkB;QAClB,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;QACnB,+BAA+B;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getPluginAssetsUrl } from "@paroicms/connector";
|
|
2
2
|
import { createTracker, toAbsoluteUrl } from "@paroicms/internal-server-lib";
|
|
3
|
-
import { messageOf,
|
|
3
|
+
import { messageOf, parseLNodeId, unwrapReadFieldValue } from "@paroicms/public-anywhere-lib";
|
|
4
4
|
import { generateImageSlug, } from "@paroicms/public-server-lib";
|
|
5
5
|
import { getSiteFieldValue } from "../admin-backend/fields/load-fields.queries.js";
|
|
6
6
|
import { sendMail } from "../common/mail/sendMail.helpers.js";
|
|
@@ -170,7 +170,7 @@ function createUseImageFn(renderingContext) {
|
|
|
170
170
|
}
|
|
171
171
|
async function getDocument(renderingContext, rawDocumentId) {
|
|
172
172
|
const { siteContext } = renderingContext;
|
|
173
|
-
const documentId =
|
|
173
|
+
const documentId = parseLNodeId(rawDocumentId);
|
|
174
174
|
renderingContext.addDependencyKey(makeCacheDependencyKey({ documentId }));
|
|
175
175
|
const docPayload = await getDocItem(siteContext, renderingContext.tracker, documentId, {
|
|
176
176
|
allowUndef: true,
|
|
@@ -201,7 +201,7 @@ async function addMultiplePartContents(fqdn, options) {
|
|
|
201
201
|
for (const [language, values] of Object.entries(multilingualFieldValues)) {
|
|
202
202
|
if (nodeId === undefined) {
|
|
203
203
|
const created = await createNodeWithPart(siteContext, {
|
|
204
|
-
|
|
204
|
+
parentLNodeId: {
|
|
205
205
|
nodeId: parentNodeId,
|
|
206
206
|
language,
|
|
207
207
|
},
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function toNodeId(
|
|
1
|
+
export declare function toNodeId(nodeOrLNodeId: string): string;
|
|
2
2
|
export declare function removeExtensionFromFileName(filename: string): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export function toNodeId(
|
|
3
|
-
return
|
|
1
|
+
import { parseLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
|
+
export function toNodeId(nodeOrLNodeId) {
|
|
3
|
+
return nodeOrLNodeId.indexOf(":") !== -1 ? parseLNodeId(nodeOrLNodeId).nodeId : nodeOrLNodeId;
|
|
4
4
|
}
|
|
5
5
|
export function removeExtensionFromFileName(filename) {
|
|
6
6
|
const i = filename.lastIndexOf(".");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ParsedLNodeId } from "@paroicms/public-anywhere-lib";
|
|
2
2
|
import type { LabeledBy, PaHttpContext, PartialsParamsInput } from "@paroicms/public-server-lib";
|
|
3
3
|
import type { RenderingContext } from "../liquidjs-tools/liquidjs-rendering/rendering-context.js";
|
|
4
4
|
export declare function renderChildPartials(renderingContext: RenderingContext, httpContext: PaHttpContext, options: {
|
|
5
5
|
params: PartialsParamsInput;
|
|
6
|
-
parentDocumentId:
|
|
6
|
+
parentDocumentId: ParsedLNodeId;
|
|
7
7
|
labeledBy?: LabeledBy;
|
|
8
8
|
}): Promise<void>;
|
|
9
9
|
export declare function renderSearchPartials(renderingContext: RenderingContext, httpContext: PaHttpContext, options: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OrderByItem } from "../../admin-backend/
|
|
1
|
+
import type { OrderByItem } from "../../admin-backend/lnode/lnode.queries.js";
|
|
2
2
|
import type { TpDocValues } from "../../rendering-payload/rendering-payload.types.js";
|
|
3
3
|
import type { SiteContext } from "../../site-context/site-context.types.js";
|
|
4
4
|
export interface SearchTextOptions {
|
|
@@ -44,7 +44,7 @@ export async function searchText(siteContext, options) {
|
|
|
44
44
|
function createBaseSearchTextQueryBuilder(siteContext, { language, words, onlyPublished, }) {
|
|
45
45
|
const { cn } = siteContext;
|
|
46
46
|
const query = cn("PaDocument as d")
|
|
47
|
-
.innerJoin("
|
|
47
|
+
.innerJoin("PaLNode as s", {
|
|
48
48
|
"s.nodeId": "d.nodeId",
|
|
49
49
|
"s.language": "d.language",
|
|
50
50
|
})
|
|
@@ -73,7 +73,7 @@ function createBaseSearchTextQueryBuilder(siteContext, { language, words, onlyPu
|
|
|
73
73
|
select 1
|
|
74
74
|
from PaNode l2
|
|
75
75
|
inner join PaPartNode p2 on p2.nodeId = l2.id
|
|
76
|
-
inner join
|
|
76
|
+
inner join PaLNode s2 on s2.nodeId = l2.id and s2.language = ?
|
|
77
77
|
left join PaFieldVarchar fv2 on fv2.nodeId = s2.nodeId and (fv2.language = s2.language or fv2.language = ?)
|
|
78
78
|
left join PaFieldText ft2 on ft2.nodeId = s2.nodeId and (ft2.language = s2.language or ft2.language = ?)
|
|
79
79
|
where p2.documentNodeId = l.id ${onlyPublished ? "and s2.ready = 1 and l2.publishDate <= current_timestamp" : ""} and (fv2.val like ? or ft2.val like ?)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mainDbSchemaName } from "@paroicms/connector";
|
|
2
2
|
import { getNodeTypeByName } from "@paroicms/internal-anywhere-lib";
|
|
3
3
|
import { parseSqliteDateTime, toAbsoluteUrl } from "@paroicms/internal-server-lib";
|
|
4
|
-
import {
|
|
4
|
+
import { encodeLNodeId, ensureString, isMediaHandleValue, isReadLabelingFieldValue, parseLNodeId, } from "@paroicms/public-anywhere-lib";
|
|
5
5
|
import { escapeHtml } from "@paroicms/public-server-lib";
|
|
6
6
|
import { type } from "arktype";
|
|
7
7
|
import { Feed } from "feed";
|
|
@@ -92,11 +92,11 @@ async function buildFeedEntries(renderingContext, options) {
|
|
|
92
92
|
}
|
|
93
93
|
const content = await loadFeedItemContent(renderingContext, item, language);
|
|
94
94
|
const excerpt = await loadExcerpt(siteContext, renderingContext.tracker, {
|
|
95
|
-
|
|
95
|
+
lNodeId: item,
|
|
96
96
|
fieldTypes: nodeType.fields ?? [],
|
|
97
97
|
maxLength: 300,
|
|
98
98
|
});
|
|
99
|
-
const link = toAbsoluteUrl(siteContext, await getUrlOfDocument(siteContext, renderingContext.tracker,
|
|
99
|
+
const link = toAbsoluteUrl(siteContext, await getUrlOfDocument(siteContext, renderingContext.tracker, parseLNodeId(`${item.nodeId}:${item.language}`)));
|
|
100
100
|
const defaultImage = await loadDefaultImage(renderingContext, {
|
|
101
101
|
nodeId: item.nodeId,
|
|
102
102
|
language,
|
|
@@ -106,7 +106,7 @@ async function buildFeedEntries(renderingContext, options) {
|
|
|
106
106
|
? undefined
|
|
107
107
|
: await makeImageAvailableById(renderingContext, { mediaId: defaultImage.id }, { resizeRule: "x720x", pixelRatio: 1, mediaType: "image/jpeg" });
|
|
108
108
|
feedEntries.push({
|
|
109
|
-
guid: `${siteContext.fqdn}:${
|
|
109
|
+
guid: `${siteContext.fqdn}:${encodeLNodeId(item)}`,
|
|
110
110
|
link,
|
|
111
111
|
title: item.title ?? simpleI18n.translate({ key: "feed.missingTitle", language }),
|
|
112
112
|
description: excerpt,
|
|
@@ -193,7 +193,7 @@ function createFeedItemsQueryBuilder(siteContext, language) {
|
|
|
193
193
|
"d.title as title",
|
|
194
194
|
"l.publishDate as publishDate",
|
|
195
195
|
])
|
|
196
|
-
.innerJoin("
|
|
196
|
+
.innerJoin("PaLNode as s", {
|
|
197
197
|
"s.nodeId": "l.id",
|
|
198
198
|
"s.language": cn.raw("?", [language]),
|
|
199
199
|
})
|