@paroicms/server 1.87.3 → 1.88.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/bo-backend/document/document.resolver.js +2 -3
  2. package/dist/bo-backend/document/document.resolver.js.map +1 -1
  3. package/dist/bo-backend/document/save-documents.queries.js +2 -2
  4. package/dist/bo-backend/document/save-documents.queries.js.map +1 -1
  5. package/dist/bo-backend/fields/fields.resolver.js +3 -1
  6. package/dist/bo-backend/fields/fields.resolver.js.map +1 -1
  7. package/dist/bo-backend/fields/load-fields-of.queries.js +4 -1
  8. package/dist/bo-backend/fields/load-fields-of.queries.js.map +1 -1
  9. package/dist/bo-backend/fields/preprocess-fields.d.ts +2 -3
  10. package/dist/bo-backend/fields/preprocess-fields.js +7 -5
  11. package/dist/bo-backend/fields/preprocess-fields.js.map +1 -1
  12. package/dist/bo-backend/fields/save-fields.queries.js +3 -2
  13. package/dist/bo-backend/fields/save-fields.queries.js.map +1 -1
  14. package/dist/bo-backend/media/add-media-to-node.d.ts +3 -3
  15. package/dist/bo-backend/media/add-media-to-node.js +7 -24
  16. package/dist/bo-backend/media/add-media-to-node.js.map +1 -1
  17. package/dist/bo-backend/media/media-upload.controller.d.ts +2 -1
  18. package/dist/bo-backend/media/media-upload.controller.js +24 -7
  19. package/dist/bo-backend/media/media-upload.controller.js.map +1 -1
  20. package/dist/bo-backend/media/media.resolver.extend.js +8 -1
  21. package/dist/bo-backend/media/media.resolver.extend.js.map +1 -1
  22. package/dist/bo-backend/media/media.resolver.js +78 -92
  23. package/dist/bo-backend/media/media.resolver.js.map +1 -1
  24. package/dist/bo-backend/part/part.queries.js +2 -2
  25. package/dist/bo-backend/part/part.queries.js.map +1 -1
  26. package/dist/bo-backend/site-constants/site-constants.resolver.js +3 -7
  27. package/dist/bo-backend/site-constants/site-constants.resolver.js.map +1 -1
  28. package/dist/bo-backend/unprotected/unprotected.resolver.d.ts +0 -6
  29. package/dist/bo-backend/unprotected/unprotected.resolver.js +9 -36
  30. package/dist/bo-backend/unprotected/unprotected.resolver.js.map +1 -1
  31. package/dist/common/medias/media-lib.d.ts +41 -0
  32. package/dist/common/medias/media-lib.js +160 -0
  33. package/dist/common/medias/media-lib.js.map +1 -0
  34. package/dist/common/medias/to-media-values.d.ts +40 -0
  35. package/dist/common/medias/to-media-values.js +109 -0
  36. package/dist/common/medias/to-media-values.js.map +1 -0
  37. package/dist/common/serve-text-or.js +8 -3
  38. package/dist/common/serve-text-or.js.map +1 -1
  39. package/dist/common/text-cache.d.ts +5 -0
  40. package/dist/common/text-cache.js +6 -0
  41. package/dist/common/text-cache.js.map +1 -1
  42. package/dist/context.d.ts +1 -2
  43. package/dist/context.js +3 -3
  44. package/dist/context.js.map +1 -1
  45. package/dist/express/public-api.req-handler.js +3 -3
  46. package/dist/express/public-api.req-handler.js.map +1 -1
  47. package/dist/express/serve-file.js +2 -2
  48. package/dist/express/serve-file.js.map +1 -1
  49. package/dist/express/site-middleware.js +5 -6
  50. package/dist/express/site-middleware.js.map +1 -1
  51. package/dist/helpers/make-backend-plugin-service.d.ts +7 -4
  52. package/dist/helpers/make-backend-plugin-service.js +130 -39
  53. package/dist/helpers/make-backend-plugin-service.js.map +1 -1
  54. package/dist/helpers/running-instance-connector.js +2 -2
  55. package/dist/helpers/url-helpers.d.ts +45 -0
  56. package/dist/helpers/url-helpers.js +37 -0
  57. package/dist/helpers/url-helpers.js.map +1 -0
  58. package/dist/helpers/utils-helper.d.ts +1 -1
  59. package/dist/helpers/utils-helper.js +3 -3
  60. package/dist/index.js +1 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/liquidjs-tools/liquidjs-drop.d.ts +7 -2
  63. package/dist/liquidjs-tools/liquidjs-drop.js +22 -2
  64. package/dist/liquidjs-tools/liquidjs-drop.js.map +1 -1
  65. package/dist/liquidjs-tools/liquidjs-rendering/render-liquidjs.d.ts +1 -2
  66. package/dist/liquidjs-tools/liquidjs-rendering/render-liquidjs.js +2 -1
  67. package/dist/liquidjs-tools/liquidjs-rendering/render-liquidjs.js.map +1 -1
  68. package/dist/liquidjs-tools/liquidjs-rendering/rendering-context.d.ts +17 -6
  69. package/dist/liquidjs-tools/liquidjs-rendering/rendering-context.js +30 -4
  70. package/dist/liquidjs-tools/liquidjs-rendering/rendering-context.js.map +1 -1
  71. package/dist/oauth/oauth2-client.controller.js +2 -1
  72. package/dist/oauth/oauth2-client.controller.js.map +1 -1
  73. package/dist/public-api/public-api-rendering.d.ts +3 -3
  74. package/dist/public-api/public-api-rendering.js +21 -36
  75. package/dist/public-api/public-api-rendering.js.map +1 -1
  76. package/dist/rendered-site/common-routes.controller.d.ts +2 -2
  77. package/dist/rendered-site/common-routes.controller.js +7 -29
  78. package/dist/rendered-site/common-routes.controller.js.map +1 -1
  79. package/dist/rendered-site/feed/feed-generator.d.ts +1 -1
  80. package/dist/rendered-site/feed/feed-generator.js +19 -24
  81. package/dist/rendered-site/feed/feed-generator.js.map +1 -1
  82. package/dist/rendered-site/feed/feed.req-handler.d.ts +1 -1
  83. package/dist/rendered-site/feed/feed.req-handler.js +4 -2
  84. package/dist/rendered-site/feed/feed.req-handler.js.map +1 -1
  85. package/dist/rendered-site/helpers/medias.helpers.d.ts +4 -4
  86. package/dist/rendered-site/helpers/medias.helpers.js +4 -3
  87. package/dist/rendered-site/helpers/medias.helpers.js.map +1 -1
  88. package/dist/rendered-site/liquidjs-filters/head-tags-filter.d.ts +1 -3
  89. package/dist/rendered-site/liquidjs-filters/head-tags-filter.js +9 -10
  90. package/dist/rendered-site/liquidjs-filters/head-tags-filter.js.map +1 -1
  91. package/dist/rendered-site/liquidjs-filters/info-filter.js +18 -6
  92. package/dist/rendered-site/liquidjs-filters/info-filter.js.map +1 -1
  93. package/dist/rendered-site/liquidjs-filters/inject-menu-items-data.d.ts +1 -3
  94. package/dist/rendered-site/liquidjs-filters/inject-menu-items-data.js +2 -1
  95. package/dist/rendered-site/liquidjs-filters/inject-menu-items-data.js.map +1 -1
  96. package/dist/rendered-site/liquidjs-filters/open-graph-filter.d.ts +2 -4
  97. package/dist/rendered-site/liquidjs-filters/open-graph-filter.js +8 -14
  98. package/dist/rendered-site/liquidjs-filters/open-graph-filter.js.map +1 -1
  99. package/dist/rendered-site/liquidjs-tags/get-doc-tag.d.ts +2 -2
  100. package/dist/rendered-site/liquidjs-tags/get-doc-tag.js +4 -3
  101. package/dist/rendered-site/liquidjs-tags/get-doc-tag.js.map +1 -1
  102. package/dist/rendered-site/liquidjs-tags/get-docs-tag.d.ts +2 -2
  103. package/dist/rendered-site/liquidjs-tags/get-docs-tag.js +6 -5
  104. package/dist/rendered-site/liquidjs-tags/get-docs-tag.js.map +1 -1
  105. package/dist/rendered-site/liquidjs-tags/get-paginated-docs-tag.d.ts +3 -3
  106. package/dist/rendered-site/liquidjs-tags/get-paginated-docs-tag.js +5 -4
  107. package/dist/rendered-site/liquidjs-tags/get-paginated-docs-tag.js.map +1 -1
  108. package/dist/rendered-site/liquidjs-tags/grouping-media-query.d.ts +10 -0
  109. package/dist/rendered-site/liquidjs-tags/grouping-media-query.js +125 -0
  110. package/dist/rendered-site/liquidjs-tags/grouping-media-query.js.map +1 -0
  111. package/dist/rendered-site/liquidjs-tags/use-image-tag.d.ts +14 -2
  112. package/dist/rendered-site/liquidjs-tags/use-image-tag.js +89 -39
  113. package/dist/rendered-site/liquidjs-tags/use-image-tag.js.map +1 -1
  114. package/dist/rendered-site/media-serve/_media-serve-helpers.d.ts +9 -3
  115. package/dist/rendered-site/media-serve/_media-serve-helpers.js +25 -5
  116. package/dist/rendered-site/media-serve/_media-serve-helpers.js.map +1 -1
  117. package/dist/rendered-site/media-serve/media-serve.controller.d.ts +10 -2
  118. package/dist/rendered-site/media-serve/media-serve.controller.js +122 -124
  119. package/dist/rendered-site/media-serve/media-serve.controller.js.map +1 -1
  120. package/dist/rendered-site/serve-document/serve-document.js +6 -3
  121. package/dist/rendered-site/serve-document/serve-document.js.map +1 -1
  122. package/dist/rendered-site/serve-index-page.js +8 -3
  123. package/dist/rendered-site/serve-index-page.js.map +1 -1
  124. package/dist/rendering-payload/breadcrumb.queries.d.ts +1 -2
  125. package/dist/rendering-payload/breadcrumb.queries.js +2 -1
  126. package/dist/rendering-payload/breadcrumb.queries.js.map +1 -1
  127. package/dist/rendering-payload/create-doc-drop.d.ts +2 -3
  128. package/dist/rendering-payload/create-doc-drop.js +54 -39
  129. package/dist/rendering-payload/create-doc-drop.js.map +1 -1
  130. package/dist/rendering-payload/create-part-drop.d.ts +1 -2
  131. package/dist/rendering-payload/create-part-drop.js +14 -12
  132. package/dist/rendering-payload/create-part-drop.js.map +1 -1
  133. package/dist/rendering-payload/doc-values.queries.d.ts +2 -2
  134. package/dist/rendering-payload/doc-values.queries.js +5 -3
  135. package/dist/rendering-payload/doc-values.queries.js.map +1 -1
  136. package/dist/rendering-payload/field-values.d.ts +3 -6
  137. package/dist/rendering-payload/field-values.js +41 -41
  138. package/dist/rendering-payload/field-values.js.map +1 -1
  139. package/dist/rendering-payload/get-siblings.queries.d.ts +1 -2
  140. package/dist/rendering-payload/get-siblings.queries.js +4 -3
  141. package/dist/rendering-payload/get-siblings.queries.js.map +1 -1
  142. package/dist/rendering-payload/load-default-image.d.ts +4 -5
  143. package/dist/rendering-payload/load-default-image.js +6 -5
  144. package/dist/rendering-payload/load-default-image.js.map +1 -1
  145. package/dist/rendering-payload/make-image-available.d.ts +14 -23
  146. package/dist/rendering-payload/make-image-available.js +83 -54
  147. package/dist/rendering-payload/make-image-available.js.map +1 -1
  148. package/dist/rendering-payload/make-public-payload.d.ts +2 -3
  149. package/dist/rendering-payload/make-public-payload.js +7 -5
  150. package/dist/rendering-payload/make-public-payload.js.map +1 -1
  151. package/dist/rendering-payload/rendering-payload.types.d.ts +48 -15
  152. package/dist/rendering-payload/site-payload.d.ts +1 -2
  153. package/dist/rendering-payload/site-payload.js +4 -3
  154. package/dist/rendering-payload/site-payload.js.map +1 -1
  155. package/dist/rendering-payload/translations.queries.d.ts +1 -1
  156. package/dist/rendering-payload/translations.queries.js +4 -3
  157. package/dist/rendering-payload/translations.queries.js.map +1 -1
  158. package/dist/site-context/create-site-context.js +9 -10
  159. package/dist/site-context/create-site-context.js.map +1 -1
  160. package/dist/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +14 -15
  162. package/schema.graphql +41 -48
  163. package/dist/bo-backend/media/media.d.ts +0 -21
  164. package/dist/bo-backend/media/media.js +0 -61
  165. package/dist/bo-backend/media/media.js.map +0 -1
  166. package/dist/rendered-site/liquidjs-filters/image-zoom-url.d.ts +0 -6
  167. package/dist/rendered-site/liquidjs-filters/image-zoom-url.js +0 -22
  168. package/dist/rendered-site/liquidjs-filters/image-zoom-url.js.map +0 -1
@@ -1,10 +1,20 @@
1
- import { boolValOrUndef, strVal, strValOrUndef } from "@paroi/data-formatters-lib";
2
- import { applyRatioToImageSize, isImageSize } from "@paroicms/public-server-lib";
1
+ import { boolValOrUndef, nbValOrUndef, strValOrUndef } from "@paroi/data-formatters-lib";
2
+ import { isResizeRule } from "@paroicms/public-anywhere-lib";
3
3
  import { Hash, Tag } from "liquidjs";
4
+ import { dependencyKeyOfMedia } from "../../common/text-cache.js";
5
+ import { createLiquidJsDropFromPromise } from "../../liquidjs-tools/liquidjs-drop.js";
4
6
  import { makeTagCacheKeyForRendering } from "../../liquidjs-tools/liquidjs-rendering/rendering-context.js";
5
- import { extractRenderingContext } from "../../liquidjs-tools/liquidjs-utils.js";
6
- import { makeImageAvailable, } from "../../rendering-payload/make-image-available.js";
7
- const availableParameterNames = new Set(["uid", "handle", "size", "autoCrop", "noPixelRatio"]);
7
+ import { extractRenderingContext, getLiquidJsDocValues, } from "../../liquidjs-tools/liquidjs-utils.js";
8
+ import { loadTpImageVariant } from "./grouping-media-query.js";
9
+ const availableParameterNames = new Set([
10
+ "uid",
11
+ "size",
12
+ "image",
13
+ "resize",
14
+ "autoCrop",
15
+ "pixelRatio",
16
+ "mediaType",
17
+ ]);
8
18
  export function createUseImageLiquidJsTag(siteContext) {
9
19
  return class UseImageTag extends Tag {
10
20
  #hash;
@@ -15,59 +25,99 @@ export function createUseImageLiquidJsTag(siteContext) {
15
25
  this.#hash = new Hash(tagToken.args);
16
26
  }
17
27
  *render(ctx) {
18
- const options = validateParameters(yield this.#hash.render(ctx), this.#varName, siteContext);
19
- if (!options)
28
+ const renderingContext = extractRenderingContext(ctx);
29
+ const { siteContext } = renderingContext;
30
+ const options = validateParameters(siteContext, yield this.#hash.render(ctx), this.#varName);
31
+ const { image: imageParam, resize: resizeRule } = options;
32
+ if (!imageParam)
20
33
  return;
34
+ const mediaId = typeof imageParam === "string" ? imageParam : imageParam.mediaId;
21
35
  const cacheKey = makeTagCacheKeyForRendering("useImage", { tagParameters: options });
22
- const renderingContext = extractRenderingContext(ctx);
23
36
  const cacheVal = renderingContext.getValueFromCache(cacheKey);
24
37
  if (cacheVal.found) {
25
38
  ctx.bottom()[this.#varName] = cacheVal.val;
26
39
  return;
27
40
  }
28
- const realSize = options.noPixelRatio
29
- ? options.size
30
- : applyRatioToImageSize(options.size, siteContext.themeConf.pixelRatio);
31
- const image = (yield makeImageAvailable(siteContext, renderingContext, {
41
+ const doc = getLiquidJsDocValues(ctx);
42
+ const language = strValOrUndef(doc?.language) ?? siteContext.siteSchema.defaultLanguage;
43
+ const promise = loadTpImageVariant(renderingContext, {
32
44
  ...options,
33
- size: realSize,
34
- }));
35
- if (!image)
36
- throw new Error("useImage: missing image");
37
- const imageSize = options.noPixelRatio
38
- ? {
39
- width: image.width,
40
- height: image.height,
41
- }
42
- : {
43
- width: Math.round(image.width / siteContext.themeConf.pixelRatio),
44
- height: Math.round(image.height / siteContext.themeConf.pixelRatio),
45
- };
46
- const val = {
47
- ...image,
48
- ...imageSize,
49
- };
45
+ image: imageParam,
46
+ resizeRule,
47
+ language,
48
+ });
49
+ const val = createLiquidJsDropFromPromise({
50
+ renderingCacheKey: cacheKey,
51
+ renderingContext,
52
+ value: promise,
53
+ });
54
+ renderingContext.addDependencyKey(dependencyKeyOfMedia(mediaId));
50
55
  renderingContext.setValueIntoCache(cacheKey, val);
51
56
  ctx.bottom()[this.#varName] = val;
52
57
  }
53
58
  };
54
59
  }
55
- function validateParameters(values, varName, { logger }) {
60
+ function validateParameters(siteContext, values, varName) {
61
+ const { logger } = siteContext;
56
62
  for (const name of Object.keys(values)) {
57
63
  if (!availableParameterNames.has(name) && name !== varName) {
58
64
  logger.warn(`[useImage] unknown parameter "${name}"`);
59
65
  }
60
66
  }
61
- const size = strVal(values.size);
62
- if (!isImageSize(size))
63
- throw new Error(`useImage param size is not valid, size:${size}`);
67
+ let resize;
68
+ const resizeVal = strValOrUndef(values.resize);
69
+ if (resizeVal) {
70
+ if (!isResizeRule(resizeVal))
71
+ throw new Error(`[useImage] invalid parameter resize: "${resize}"`);
72
+ resize = resizeVal;
73
+ }
74
+ else {
75
+ const size = strValOrUndef(values.size);
76
+ if (!size)
77
+ throw new Error(`[useImage] missing parameter "resize"`);
78
+ if (!isResizeRule(size))
79
+ throw new Error(`useImage param size is not valid: ${size}`);
80
+ logger.warn(`[useImage] parameter "size" is deprecated. Please use "resize" instead`);
81
+ resize = size;
82
+ }
64
83
  const uid = strValOrUndef(values.uid);
65
- const handle = strValOrUndef(values.handle);
84
+ if (uid !== undefined) {
85
+ logger.warn(`[useImage] deprecated parameter "uid". Please use "image" instead.`);
86
+ }
87
+ const image = typeof values.image === "string"
88
+ ? values.image
89
+ : toTpSourceImageOrUndefParameter(siteContext, values.image, {
90
+ warnPrefix: `[useImage] parameter "image"`,
91
+ });
66
92
  const autoCrop = boolValOrUndef(values.autoCrop);
67
- const noPixelRatio = boolValOrUndef(values.noPixelRatio);
68
- if (uid)
69
- return { imageSel: { uid }, size, autoCrop, noPixelRatio };
70
- if (handle)
71
- return { imageSel: { handle }, size, autoCrop, noPixelRatio };
93
+ const pixelRatio = nbValOrUndef(values.pixelRatio);
94
+ let mediaType = strValOrUndef(values.mediaType);
95
+ if (mediaType && !mediaType.startsWith("image/")) {
96
+ logger.warn(`[useImage] parameter "mediaType" should starts with "image/", got "${mediaType}"`);
97
+ mediaType = undefined;
98
+ }
99
+ return {
100
+ image: image ?? uid,
101
+ resize,
102
+ autoCrop,
103
+ pixelRatio,
104
+ mediaType,
105
+ };
106
+ }
107
+ export function toTpSourceImageOrUndefParameter(siteContext, image, { warnPrefix }) {
108
+ if (!image)
109
+ return;
110
+ if (image.kind === "file") {
111
+ return;
112
+ }
113
+ if (image.kind !== "image") {
114
+ siteContext.logger.warn(`${warnPrefix} should be an image`);
115
+ return;
116
+ }
117
+ if (!image.isSource) {
118
+ siteContext.logger.warn(`${warnPrefix} should be a source image (${image.mediaId}, ${image.originalName})`);
119
+ return;
120
+ }
121
+ return image;
72
122
  }
73
123
  //# sourceMappingURL=use-image-tag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-image-tag.js","sourceRoot":"","sources":["../../../src/rendered-site/liquidjs-tags/use-image-tag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-image-tag.js","sourceRoot":"","sources":["../../../src/rendered-site/liquidjs-tags/use-image-tag.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
- import type { VariantName } from "@paroicms/public-anywhere-lib";
2
- export declare function parseNameAndExt(nameAndExt: string): {
1
+ import { type ResizeRule, type SizeName } from "@paroicms/public-anywhere-lib";
2
+ export declare function parseImageRawSizeNameAndExt(nameAndExt: string): {
3
3
  slug: string;
4
- variantName: VariantName;
4
+ rawSizeName: SizeName;
5
+ mediaType: string;
6
+ } | undefined;
7
+ export declare function parseImageRenderedResizeRuleAndExt(nameAndExt: string): {
8
+ slug: string;
9
+ resizeRule: ResizeRule;
10
+ mediaType: string;
5
11
  } | undefined;
@@ -1,15 +1,35 @@
1
- import { isVariantName } from "@paroicms/public-server-lib";
2
- export function parseNameAndExt(nameAndExt) {
1
+ import { isResizeRule, isSizeName, } from "@paroicms/public-anywhere-lib";
2
+ import { extensionToMediaType } from "@paroicms/server-image-cache-engine";
3
+ export function parseImageRawSizeNameAndExt(nameAndExt) {
3
4
  const extIndex = nameAndExt.lastIndexOf(".");
4
5
  if (extIndex === -1)
5
6
  return;
7
+ const mediaType = extensionToMediaType(nameAndExt.slice(extIndex + 1));
8
+ if (!mediaType)
9
+ return;
6
10
  const name = nameAndExt.slice(0, extIndex);
7
11
  const match = name.match(/^(.+)-([0-9]+x[0-9]+)$/);
8
12
  if (!match)
9
13
  return;
10
- const [, slug, variantName] = match;
11
- if (!isVariantName(variantName))
14
+ const [, slug, rawSizeName] = match;
15
+ if (!isSizeName(rawSizeName))
16
+ return;
17
+ return { slug, rawSizeName, mediaType };
18
+ }
19
+ export function parseImageRenderedResizeRuleAndExt(nameAndExt) {
20
+ const extIndex = nameAndExt.lastIndexOf(".");
21
+ if (extIndex === -1)
22
+ return;
23
+ const mediaType = extensionToMediaType(nameAndExt.slice(extIndex + 1));
24
+ if (!mediaType)
25
+ return;
26
+ const nameAndSuffix = nameAndExt.slice(0, extIndex);
27
+ const match = nameAndSuffix.match(/^(.+)-([0-9x]+)-rendered$/);
28
+ if (!match)
29
+ return;
30
+ const [, slug, resizeRule] = match;
31
+ if (!isResizeRule(resizeRule))
12
32
  return;
13
- return { slug, variantName };
33
+ return { slug, resizeRule, mediaType };
14
34
  }
15
35
  //# sourceMappingURL=_media-serve-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_media-serve-helpers.js","sourceRoot":"","sources":["../../../src/rendered-site/media-serve/_media-serve-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,UAAU,eAAe,CAC7B,UAAkB;IAElB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO;IAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;IACpC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAAE,OAAO;IACxC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"_media-serve-helpers.js","sourceRoot":"","sources":["../../../src/rendered-site/media-serve/_media-serve-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,MAAM,UAAU,2BAA2B,CACzC,UAAkB;IAElB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO;IAC5B,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO;IACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,UAAkB;IAElB,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO;IAC5B,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC;IACnC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAAE,OAAO;IACtC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC"}
@@ -1,5 +1,13 @@
1
+ import type { ResizeRule } from "@paroicms/public-anywhere-lib";
1
2
  import { type PaHttpContext } from "@paroicms/public-server-lib";
2
3
  import type { SiteContext } from "../../site-context/site-context.types.js";
3
4
  export declare function serveFilecontroller(siteContext: SiteContext, httpContext: PaHttpContext, routeParams: Record<string, string | undefined>): Promise<void>;
4
- export declare function serveVersionedImageController(siteContext: SiteContext, httpContext: PaHttpContext, routeParams: Record<string, string | undefined>): Promise<void>;
5
- export declare function serveUnversionedImageController(siteContext: SiteContext, httpContext: PaHttpContext, routeParams: Record<string, string | undefined>): Promise<void>;
5
+ export declare function serveCacheImageController(siteContext: SiteContext, httpContext: PaHttpContext, routeParams: Record<string, string | undefined>): Promise<void>;
6
+ export declare function serveUnversionedImage(siteContext: SiteContext, httpContext: PaHttpContext, options: {
7
+ mediaId: string;
8
+ mediaType: string;
9
+ ownerHandle: string;
10
+ isHandleReusable: boolean;
11
+ resizeRule: ResizeRule;
12
+ ensureUrlFilename?: string;
13
+ }): Promise<void>;
@@ -1,63 +1,74 @@
1
- import { ApiError, generateImageSlug, isVariantName, makeUrlOfImageVariant, makeUrlOfMediaFile, } from "@paroicms/public-server-lib";
1
+ import { ApiError, applyPixelRatioToResizeRule, generateImageSlug, } from "@paroicms/public-server-lib";
2
+ import { parseSizeName } from "@paroicms/server-image-cache-engine";
2
3
  import { HTTP_MAX_AGE } from "../../express/http-constants.js";
3
4
  import { getRouteParameter, serve301Redirect, serve304NotModified, } from "../../express/http-helpers.js";
4
- import { parseNameAndExt } from "./_media-serve-helpers.js";
5
+ import { makeUrlOfImageVariant, makeUrlOfMediaFile, makeUrlOfUnversionedImageVariant, } from "../../helpers/url-helpers.js";
6
+ import { parseImageRawSizeNameAndExt, parseImageRenderedResizeRuleAndExt, } from "./_media-serve-helpers.js";
5
7
  export async function serveFilecontroller(siteContext, httpContext, routeParams) {
6
8
  const { req, res } = httpContext;
7
- const mediaUid = getRouteParameter(routeParams, "mediaUid");
9
+ const mediaId = getRouteParameter(routeParams, "mediaId");
8
10
  const nameAndExt = getRouteParameter(routeParams, "nameAndExt");
9
11
  const cacheControl = "max-age=0";
10
- const fts = await getFileToServe(siteContext, {
11
- mediaUid,
12
- ifNoneMatch: req.headers["if-none-match"],
13
- });
14
- if (fts.status === 304) {
12
+ const ifNoneMatch = req.headers["if-none-match"];
13
+ const media = await siteContext.mediaStorage.getMediaWithBinary(mediaId);
14
+ if (!media)
15
+ throw new ApiError(`media '${mediaId}' not found`, 404);
16
+ if (media.resourceVersion === ifNoneMatch) {
15
17
  return serve304NotModified(httpContext, {
16
18
  cacheControl,
17
- etag: fts.resourceVersion,
19
+ etag: media.resourceVersion,
18
20
  });
19
21
  }
20
- const { file } = fts;
21
- const { url, fileName } = makeUrlOfMediaFile(siteContext, { mediaUid, mediaType: file.mediaType, originalName: file.originalName }, { returnObj: true });
22
- if (fileName !== nameAndExt)
22
+ const { url, filename } = makeUrlOfMediaFile(siteContext, { mediaId, mediaType: media.mediaType, originalName: media.originalName }, { returnObj: true });
23
+ if (filename !== nameAndExt)
23
24
  return serve301Redirect(httpContext, url);
24
25
  res.append("Cache-Control", cacheControl);
25
- res.append("Etag", file.resourceVersion);
26
- res.append("Content-Type", file.mediaType);
27
- res.append("Content-Length", file.binaryFile.byteLength.toString());
28
- res.send(file.binaryFile);
26
+ res.append("Etag", media.resourceVersion);
27
+ res.append("Content-Type", media.mediaType);
28
+ res.append("Content-Length", media.binaryFile.byteLength.toString());
29
+ res.send(media.binaryFile);
29
30
  }
30
- export async function serveVersionedImageController(siteContext, httpContext, routeParams) {
31
- const { req, res } = httpContext;
32
- const cacheControl = `public, max-age=${HTTP_MAX_AGE}, immutable`;
33
- const mediaUid = getRouteParameter(routeParams, "mediaUid");
31
+ export async function serveCacheImageController(siteContext, httpContext, routeParams) {
32
+ const mediaId = getRouteParameter(routeParams, "mediaId");
34
33
  const resourceVersion = getRouteParameter(routeParams, "resourceVersion");
35
34
  const nameAndExt = getRouteParameter(routeParams, "nameAndExt");
36
- const parsed = parseNameAndExt(nameAndExt);
35
+ if (resourceVersion === "unversioned") {
36
+ await serveUnversionedFTextImage(siteContext, httpContext, {
37
+ mediaId,
38
+ nameAndExt,
39
+ });
40
+ return;
41
+ }
42
+ const { req, res } = httpContext;
43
+ const cacheControl = `public, max-age=${HTTP_MAX_AGE}, immutable`;
44
+ const ifNoneMatch = req.headers["if-none-match"];
45
+ const parsed = parseImageRawSizeNameAndExt(nameAndExt);
37
46
  if (!parsed)
38
- throw new ApiError("invalid name and ext", 404);
39
- const { variantName } = parsed;
40
- const fts = await getVariantImageToServe(siteContext, {
41
- mediaUid,
42
- variantName,
43
- canCreateVariant: false,
44
- ifNoneMatch: req.headers["if-none-match"],
47
+ throw new ApiError(404);
48
+ const { rawSizeName, mediaType } = parsed;
49
+ const { width: rawWidth, height: rawHeight } = parseSizeName(rawSizeName);
50
+ const file = await siteContext.imageCache.getImageVariantWithBinary({
51
+ mediaId,
52
+ mediaType,
53
+ rawWidth,
54
+ rawHeight,
45
55
  });
46
- if (fts.status === 304) {
56
+ if (!file)
57
+ throw new ApiError(404);
58
+ if (ifNoneMatch === file.resourceVersion) {
47
59
  return serve304NotModified(httpContext, {
48
60
  cacheControl,
49
- etag: fts.resourceVersion,
61
+ etag: file.resourceVersion,
50
62
  });
51
63
  }
52
- const { file } = fts;
53
64
  const newUrl = makeUrlOfImageVariant(siteContext, {
54
- mediaUid,
65
+ mediaId,
55
66
  mediaType: file.mediaType,
56
- variantName,
67
+ rawSizeName,
57
68
  resourceVersion: file.resourceVersion,
58
69
  slug: file.slug,
59
70
  }, { returnObj: true });
60
- if (file.resourceVersion !== resourceVersion || newUrl.fileName !== nameAndExt) {
71
+ if (file.resourceVersion !== resourceVersion || newUrl.filename !== nameAndExt) {
61
72
  return serve301Redirect(httpContext, newUrl.url);
62
73
  }
63
74
  res.append("Cache-Control", cacheControl);
@@ -66,105 +77,92 @@ export async function serveVersionedImageController(siteContext, httpContext, ro
66
77
  res.append("Content-Length", file.binaryFile.byteLength.toString());
67
78
  res.send(file.binaryFile);
68
79
  }
69
- export async function serveUnversionedImageController(siteContext, httpContext, routeParams) {
70
- const { req, res } = httpContext;
71
- const cacheControl = "max-age=0";
72
- const mediaUid = getRouteParameter(routeParams, "mediaUid");
73
- const nameAndExt = getRouteParameter(routeParams, "nameAndExt");
74
- const parsed = parseNameAndExt(nameAndExt);
75
- if (!parsed) {
76
- throw new ApiError("invalid name and ext", 404);
77
- }
78
- const { variantName } = parsed;
79
- if (!isVariantName(variantName))
80
- throw new ApiError("invalid variant name", 404);
81
- const fts = await getVariantImageToServe(siteContext, {
82
- mediaUid,
83
- variantName,
84
- canCreateVariant: true,
85
- ifNoneMatch: req.headers["if-none-match"],
80
+ async function serveUnversionedFTextImage(siteContext, httpContext, routeParams) {
81
+ const { mediaId, nameAndExt } = routeParams;
82
+ const parsed = parseImageRenderedResizeRuleAndExt(nameAndExt);
83
+ if (!parsed)
84
+ throw new ApiError(404);
85
+ const { resizeRule, mediaType } = parsed;
86
+ if (!siteContext.themeConf.fTextImageResizeRules.includes(resizeRule))
87
+ throw new ApiError(404);
88
+ if (mediaType !== "image/webp")
89
+ throw new ApiError(404);
90
+ await serveUnversionedImage(siteContext, httpContext, {
91
+ mediaId,
92
+ mediaType,
93
+ ownerHandle: `fText:${resizeRule}`,
94
+ isHandleReusable: true,
95
+ resizeRule,
96
+ ensureUrlFilename: nameAndExt,
86
97
  });
87
- if (fts.status === 304) {
88
- return serve304NotModified(httpContext, {
89
- cacheControl,
90
- etag: fts.resourceVersion,
91
- });
92
- }
93
- const { file } = fts;
94
- const newUrl = makeUrlOfImageVariant(siteContext, {
95
- mediaUid,
96
- mediaType: file.mediaType,
97
- variantName,
98
- resourceVersion: undefined,
99
- slug: file.slug,
100
- }, { returnObj: true });
101
- if (newUrl.fileName !== nameAndExt) {
102
- return serve301Redirect(httpContext, newUrl.url);
103
- }
104
- res.append("Cache-Control", cacheControl);
105
- res.append("Etag", file.resourceVersion);
106
- res.append("Content-Type", file.mediaType);
107
- res.append("Content-Length", file.binaryFile.byteLength.toString());
108
- res.send(file.binaryFile);
109
98
  }
110
- async function getVariantImageToServe(siteContext, options) {
111
- const { mediaUid, variantName, canCreateVariant, ifNoneMatch } = options;
112
- let file = await siteContext.imageCache.getImageVariantWithBinary({
113
- imageUid: mediaUid,
114
- variantName,
99
+ export async function serveUnversionedImage(siteContext, httpContext, options) {
100
+ const { req, res } = httpContext;
101
+ const cacheControl = "max-age=0";
102
+ const ifNoneMatch = req.headers["if-none-match"];
103
+ const { mediaId, mediaType, ownerHandle, isHandleReusable, resizeRule, ensureUrlFilename } = options;
104
+ const rawResizeR = applyPixelRatioToResizeRule(resizeRule, siteContext.themeConf.pixelRatio);
105
+ let variant = await siteContext.imageCache.getImageVariantWithBinaryByOwner({
106
+ mediaId,
107
+ mediaType,
108
+ ownerHandle,
109
+ rawResizeR,
115
110
  });
116
- if (file) {
117
- if (ifNoneMatch === file.resourceVersion) {
118
- return {
119
- status: 304,
120
- resourceVersion: file.resourceVersion,
121
- };
111
+ if (variant) {
112
+ if (ifNoneMatch === variant.resourceVersion) {
113
+ return serve304NotModified(httpContext, {
114
+ cacheControl,
115
+ etag: variant.resourceVersion,
116
+ });
122
117
  }
123
118
  }
124
119
  else {
125
- if (canCreateVariant) {
126
- file = await tryToCreateImageVariant(siteContext, { mediaUid, variantName });
127
- }
128
- if (!file)
129
- throw new ApiError("image not found", 404);
120
+ variant = await createUnversionedImageVariant(siteContext, {
121
+ ownerHandle,
122
+ isHandleReusable,
123
+ mediaId,
124
+ mediaType,
125
+ rawResizeR,
126
+ });
127
+ if (!variant)
128
+ throw new ApiError(404);
130
129
  }
131
- return {
132
- status: 200,
133
- file,
134
- };
135
- }
136
- async function getFileToServe(siteContext, options) {
137
- const { mediaUid, ifNoneMatch } = options;
138
- const media = await siteContext.mediaStorage.getMediaWithBinary(mediaUid);
139
- if (!media)
140
- throw new ApiError(`media '${mediaUid}' not found`, 404);
141
- if (media.resourceVersion === ifNoneMatch) {
142
- return {
143
- status: 304,
144
- resourceVersion: media.resourceVersion,
145
- };
130
+ if (ensureUrlFilename) {
131
+ const newUrl = makeUrlOfUnversionedImageVariant(siteContext, {
132
+ mediaId,
133
+ mediaType: variant.mediaType,
134
+ resizeRule,
135
+ slug: variant.slug,
136
+ }, { returnObj: true });
137
+ if (newUrl.filename !== ensureUrlFilename) {
138
+ return serve301Redirect(httpContext, newUrl.url);
139
+ }
146
140
  }
147
- return {
148
- status: 200,
149
- file: media,
150
- };
141
+ res.append("Cache-Control", cacheControl);
142
+ res.append("Etag", variant.resourceVersion);
143
+ res.append("Content-Type", variant.mediaType);
144
+ res.append("Content-Length", variant.binaryFile.byteLength.toString());
145
+ res.send(variant.binaryFile);
151
146
  }
152
- async function tryToCreateImageVariant(siteContext, options) {
153
- const { mediaUid, variantName } = options;
154
- const media = await siteContext.mediaStorage.getMedia({ uid: mediaUid });
155
- if (!media || media.kind !== "image") {
156
- throw new ApiError(`image '${mediaUid}' not found`, 404);
157
- }
158
- return await siteContext.imageCache.conditionallyCreateImageVariantWithBinary({
159
- imageUid: media.uid,
160
- mediaType: media.mediaType,
161
- width: media.width,
162
- height: media.height,
163
- }, {
164
- authorisedImageSizes: siteContext.themeConf.fTextImages.map((val) => val.realSize),
165
- variantName,
166
- slug: generateImageSlug(media.originalName),
167
- dependsOnUsedKey: "themeConf.fTextImages",
147
+ async function createUnversionedImageVariant(siteContext, options) {
148
+ const { ownerHandle, isHandleReusable, mediaId, mediaType, rawResizeR } = options;
149
+ const media = await siteContext.mediaStorage.getMedia({ mediaId });
150
+ if (!media || media.kind !== "image")
151
+ return;
152
+ const variant = await siteContext.imageCache.makeImageAvailable({
153
+ ownerHandle,
154
+ isHandleReusable,
155
+ rawResizeR,
156
+ mediaType,
157
+ sourceImage: {
158
+ mediaId: media.id,
159
+ mediaType: media.mediaType,
160
+ rawWidth: media.rawWidth,
161
+ rawHeight: media.rawHeight,
162
+ slug: generateImageSlug(media.originalName),
163
+ },
164
+ canBeRetrievedByOwner: true,
168
165
  });
166
+ return await siteContext.imageCache.getImageVariantWithBinary(variant);
169
167
  }
170
168
  //# sourceMappingURL=media-serve.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-serve.controller.js","sourceRoot":"","sources":["../../../src/rendered-site/media-serve/media-serve.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-serve.controller.js","sourceRoot":"","sources":["../../../src/rendered-site/media-serve/media-serve.controller.ts"],"names":[],"mappings":"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"}