@paroicms/public-server-lib 0.32.0 → 0.34.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/index.d.ts CHANGED
@@ -5,5 +5,4 @@ export * from "./html-helpers/html-helpers.js";
5
5
  export * from "./obfuscate.helper.js";
6
6
  export * from "./server-image-cache-engine.helper.js";
7
7
  export * from "./simple-i18n.js";
8
- export * from "./url.helpers.js";
9
8
  export * from "./vite-config.helper.js";
package/dist/index.js CHANGED
@@ -4,6 +4,5 @@ export * from "./html-helpers/html-helpers.js";
4
4
  export * from "./obfuscate.helper.js";
5
5
  export * from "./server-image-cache-engine.helper.js";
6
6
  export * from "./simple-i18n.js";
7
- export * from "./url.helpers.js";
8
7
  export * from "./vite-config.helper.js";
9
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC"}
@@ -1,5 +1,18 @@
1
- import { type ImageSize, type VariantName } from "@paroicms/public-anywhere-lib";
2
- export declare function isImageSize(imageSize: string): imageSize is ImageSize;
3
- export declare function isVariantName(variantName: string): variantName is VariantName;
1
+ import { type ResizeRule, type SizeName } from "@paroicms/public-anywhere-lib";
4
2
  export declare function generateImageSlug(fromName?: string): string | undefined;
5
- export declare function applyRatioToImageSize(imageSize: ImageSize, pixelRatio: number): ImageSize;
3
+ export declare function applyPixelRatioToSizeName(renderedSizeName: SizeName, pixelRatio: number): SizeName;
4
+ export declare function applyPixelRatioToResizeRule(renderedResizeRule: ResizeRule, pixelRatio: number): ResizeRule;
5
+ export declare function rawToRenderedSize(rawResizeR: {
6
+ rawWidth: number;
7
+ rawHeight: number;
8
+ }, pixelRatio: number): {
9
+ width: number;
10
+ height: number;
11
+ };
12
+ export declare function renderedToRawSize(renderedSize: {
13
+ width: number;
14
+ height: number;
15
+ }, pixelRatio: number): {
16
+ rawWidth: number;
17
+ rawHeight: number;
18
+ };
@@ -1,18 +1,15 @@
1
1
  import { nbVal } from "@paroi/data-formatters-lib";
2
2
  import { generateSlug } from "@paroicms/public-anywhere-lib";
3
- export function isImageSize(imageSize) {
4
- return /^[0-9]+x|x[0-9]+|x[0-9]+x|[0-9]+x[0-9]+$/.test(imageSize);
5
- }
6
- export function isVariantName(variantName) {
7
- return /^[0-9]+x[0-9]+$/.test(variantName);
8
- }
9
3
  export function generateImageSlug(fromName) {
10
4
  if (!fromName)
11
5
  return;
12
6
  return generateSlug(fromName).substring(0, 12).replace(/-$/g, "");
13
7
  }
14
- export function applyRatioToImageSize(imageSize, pixelRatio) {
15
- const splitted = imageSize.split("x");
8
+ export function applyPixelRatioToSizeName(renderedSizeName, pixelRatio) {
9
+ return applyPixelRatioToResizeRule(renderedSizeName, pixelRatio);
10
+ }
11
+ export function applyPixelRatioToResizeRule(renderedResizeRule, pixelRatio) {
12
+ const splitted = renderedResizeRule.split("x");
16
13
  if (splitted.length === 3) {
17
14
  const value = splitted[1];
18
15
  splitted[1] = `${Math.round(nbVal(value) * pixelRatio)}`;
@@ -27,4 +24,14 @@ export function applyRatioToImageSize(imageSize, pixelRatio) {
27
24
  }
28
25
  return splitted.join("x");
29
26
  }
27
+ export function rawToRenderedSize(rawResizeR, pixelRatio) {
28
+ const width = Math.round(rawResizeR.rawWidth / pixelRatio);
29
+ const height = Math.round(rawResizeR.rawHeight / pixelRatio);
30
+ return { width, height };
31
+ }
32
+ export function renderedToRawSize(renderedSize, pixelRatio) {
33
+ const rawWidth = Math.round(renderedSize.width * pixelRatio);
34
+ const rawHeight = Math.round(renderedSize.height * pixelRatio);
35
+ return { rawWidth, rawHeight };
36
+ }
30
37
  //# sourceMappingURL=server-image-cache-engine.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-image-cache-engine.helper.js","sourceRoot":"","sources":["../src/server-image-cache-engine.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAoC,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE/F,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,OAAO,0CAA0C,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAoB,EAAE,UAAkB;IAC5E,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;IAC3D,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,MAAM,KAAK,EAAE;YAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;QAC7E,IAAI,KAAK,KAAK,EAAE;YAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAc,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"server-image-cache-engine.helper.js","sourceRoot":"","sources":["../src/server-image-cache-engine.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAkC,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7F,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,gBAA0B,EAC1B,UAAkB;IAElB,OAAO,2BAA2B,CAAC,gBAAgB,EAAE,UAAU,CAAa,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,kBAA8B,EAC9B,UAAkB;IAElB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;IAC3D,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,MAAM,KAAK,EAAE;YAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;QAC7E,IAAI,KAAK,KAAK,EAAE;YAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAe,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,UAAmD,EACnD,UAAkB;IAElB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;IAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAA+C,EAC/C,UAAkB;IAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAC/D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/public-server-lib",
3
- "version": "0.32.0",
3
+ "version": "0.34.0",
4
4
  "description": "Common utilitaries for paroicms plugins (backend side).",
5
5
  "author": "Paroi Team",
6
6
  "repository": {
@@ -15,14 +15,14 @@
15
15
  "scripts": {
16
16
  "build": "tsc",
17
17
  "test": "vitest",
18
- "test:run": "vitest run",
18
+ "test:once": "vitest run",
19
19
  "clear": "rimraf dist/*",
20
20
  "dev": "tsc --watch --preserveWatchOutput"
21
21
  },
22
22
  "dependencies": {
23
23
  "@paroi/data-formatters-lib": "~0.4.0",
24
- "@paroicms/internal-anywhere-lib": "1.28.0",
25
- "@paroicms/public-anywhere-lib": "0.22.0",
24
+ "@paroicms/internal-anywhere-lib": "1.29.0",
25
+ "@paroicms/public-anywhere-lib": "0.23.0",
26
26
  "@types/express": "~4.17.21"
27
27
  },
28
28
  "devDependencies": {
@@ -1,13 +1,18 @@
1
1
  import type { Obj } from "@paroi/data-formatters-lib";
2
2
  import type {
3
- ImageSize,
4
3
  JsonFieldValue,
4
+ MImageVariant,
5
+ MSourceImage,
6
+ MSourceMedia,
5
7
  ParsedNodelId,
6
8
  ReadFieldValue,
9
+ ResizeRule,
7
10
  ScFieldDataType,
8
11
  ScSiteSchema,
9
12
  SiteIds,
10
13
  ThemeConf,
14
+ UpdateLabelingFieldValue,
15
+ WithAttachedData,
11
16
  } from "@paroicms/public-anywhere-lib";
12
17
  import type Stream from "node:stream";
13
18
 
@@ -95,10 +100,13 @@ export interface BackendPluginInitService {
95
100
  pluginAssetsUrl: string;
96
101
  }
97
102
 
98
- export type BackendHookHandler = (service: BackendPluginService, params: any) => any;
103
+ export type BackendHookHandler = (
104
+ service: BackendPluginService,
105
+ params: any,
106
+ ) => Promise<unknown> | unknown;
99
107
 
100
108
  export type PluginLiquidFilterHandler = (
101
- service: BackendPluginRenderService,
109
+ service: PluginRenderingService,
102
110
  value: unknown,
103
111
  options: {
104
112
  /**
@@ -109,18 +117,18 @@ export type PluginLiquidFilterHandler = (
109
117
  },
110
118
  ) => string | Promise<string>;
111
119
 
112
- export type PublicApiHandler = (
113
- service: BackendPluginRenderService,
114
- httpContext: PaHttpContext,
115
- relativePath: string,
116
- ) => Promise<void> | void;
117
-
118
120
  export type FieldPreprocessor = (
119
- service: BackendPluginRenderService,
121
+ service: PluginRenderingService,
120
122
  value: ReadFieldValue,
121
123
  options: FieldPreprocessorOptions,
122
124
  ) => ReadFieldValue | undefined | Promise<ReadFieldValue | undefined>;
123
125
 
126
+ export type PublicApiHandler = (
127
+ service: BackendPluginService,
128
+ httpContext: PaHttpContext,
129
+ relativePath: string,
130
+ ) => Promise<void> | void;
131
+
124
132
  export interface BackendPluginService {
125
133
  fqdn: string;
126
134
  siteUrl: string;
@@ -129,12 +137,38 @@ export interface BackendPluginService {
129
137
  logger: AppLogger;
130
138
  validateRecaptchaResponse: (gRecaptchaResponse: string | undefined) => Promise<boolean>;
131
139
  sendMail: ({ subject, html, replyTo, to }: MailData) => Promise<void>;
132
- executeHook<T = unknown>(hookName: string, params?: any): T[];
140
+ executeHook(hookName: string, params?: any): Promise<unknown[]>;
133
141
  registeredSite: RegisteredSite;
134
142
  configuration: PluginConfiguration;
135
143
  pluginAssetsUrl: string;
136
144
  /** This is the connector of the running instance of ParoiCMS. */
137
145
  connector: RunningInstanceConnector;
146
+ getSiteFieldValue: (options: {
147
+ fieldName: string;
148
+ language?: string;
149
+ }) => Promise<ReadFieldValue | undefined>;
150
+ getMedia: (
151
+ sel: { mediaId: string } | { handle: string },
152
+ options?: {
153
+ absoluteUrl?: boolean;
154
+ withAttachedData?: WithAttachedData;
155
+ },
156
+ ) => Promise<MSourceMedia | undefined>;
157
+ useUnversionedImage: (
158
+ /** An image or a `mediaId` */
159
+ image: MSourceImage | string,
160
+ /** Must be listed in the theme configuration */
161
+ resizeRule: ResizeRule,
162
+ options?: {
163
+ pixelRatio?: number;
164
+ absoluteUrl?: boolean;
165
+ },
166
+ ) => Promise<MImageVariant | undefined>;
167
+ openRenderingService: (options: {
168
+ language: string;
169
+ /** This will be used for generating a cache key, so it has to be unique for the rendering. */
170
+ urlLike: string;
171
+ }) => Promise<PluginRenderingService>;
138
172
  }
139
173
 
140
174
  export interface NewSiteOptions {
@@ -144,11 +178,9 @@ export interface NewSiteOptions {
144
178
  version?: string;
145
179
  }
146
180
 
147
- export interface BackendPluginRenderService extends BackendPluginService {
148
- getSiteFieldValue: (options: {
149
- fieldName: string;
150
- language?: string;
151
- }) => Promise<ReadFieldValue | undefined>;
181
+ export interface PluginRenderingService {
182
+ pluginService: BackendPluginService;
183
+ language: string;
152
184
  renderChildPartials(
153
185
  ctx: PaHttpContext,
154
186
  options: {
@@ -167,8 +199,20 @@ export interface BackendPluginRenderService extends BackendPluginService {
167
199
  templateName: string;
168
200
  },
169
201
  ): Promise<void>;
170
- useImage: (options: { imageUid: string; size: ImageSize }) => Promise<UsedImage>;
202
+
203
+ useImage: (
204
+ /** An image or a `mediaId` */
205
+ image: MSourceImage | string,
206
+ resizeRule: ResizeRule,
207
+ options?: {
208
+ pixelRatio?: number;
209
+ absoluteUrl?: boolean;
210
+ },
211
+ ) => Promise<MImageVariant | undefined>;
212
+
171
213
  getDocument: (documentId: string) => Promise<PublicDocument | undefined>;
214
+
215
+ close(): Promise<void>;
172
216
  }
173
217
 
174
218
  export interface LabeledBy {
@@ -188,13 +232,6 @@ export interface PublicDocument {
188
232
  publishDate: string;
189
233
  }
190
234
 
191
- export interface UsedImage {
192
- url: string;
193
- width: number;
194
- height: number;
195
- mediaType: string;
196
- }
197
-
198
235
  export interface FieldPreprocessorOptions {
199
236
  absoluteUrls?: boolean;
200
237
  outputType?: "plainText";
@@ -231,7 +268,6 @@ export interface AppLogger {
231
268
 
232
269
  export interface PartialsParamsInput {
233
270
  templateName: string;
234
- documentId: string;
235
271
  offset: string;
236
272
  limit: string;
237
273
  }
@@ -270,20 +306,22 @@ export interface SubDomainSitePackConfiguration extends SitePackConfigurationBas
270
306
  parentDomain: string;
271
307
  }
272
308
 
309
+ /* Running instance types */
310
+
273
311
  export interface RunningInstanceConnector {
274
312
  getSitePackConf(packName: string): SitePackConfiguration;
275
- loadSiteSchemaAndIds(fqdn: string): Promise<SiteSchemaAndIds>;
313
+ loadSiteSchemaAndIds(fqdn: string): Promise<RiSiteSchemaAndIds>;
276
314
  createAccount(
277
315
  fqdn: string,
278
316
  account: RiNewAccount,
279
317
  options?: { asContactEmail?: boolean },
280
- ): Promise<void>;
318
+ ): Promise<string>;
281
319
  updateSiteFields(fqdn: string, fields: RiFieldSetContent): Promise<void>;
282
- updateDocumentContent(
320
+ updateNodeContent(
283
321
  fqdn: string,
284
322
  options: {
285
323
  nodeId: string;
286
- content: RiDocumentContent;
324
+ content: RiNodeContent;
287
325
  },
288
326
  ): Promise<void>;
289
327
  addMultipleDocumentContents(
@@ -292,19 +330,19 @@ export interface RunningInstanceConnector {
292
330
  parentNodeId: string;
293
331
  contents: RiDocumentContent[];
294
332
  },
295
- ): Promise<void>;
333
+ ): Promise<ParsedNodelId[]>;
296
334
  addMultiplePartContents(
297
335
  fqdn: string,
298
336
  options: {
299
337
  parentNodeId: string;
300
338
  contents: RiPartContent[];
301
339
  },
302
- ): Promise<void>;
340
+ ): Promise<ParsedNodelId[]>;
303
341
  registerNewSite: (options: NewSiteOptions) => Promise<RegisteredSite>;
304
342
  removeSite: (fqdn: string) => Promise<void>;
305
343
  }
306
344
 
307
- export interface SiteSchemaAndIds {
345
+ export interface RiSiteSchemaAndIds {
308
346
  siteSchema: ScSiteSchema;
309
347
  siteIds: SiteIds;
310
348
  }
@@ -324,7 +362,6 @@ export interface RiExternalNewAccount {
324
362
  name: string;
325
363
  }
326
364
 
327
- /** "Nc" stands for Node Content. */
328
365
  export type RiNodeContent = RiDocumentContent | RiPartContent;
329
366
 
330
367
  export interface RiDocumentContent {
@@ -351,7 +388,8 @@ export type RiFieldContent =
351
388
  | RiBooleanContent
352
389
  | RiQuillDeltaContent
353
390
  | RiMediaContent
354
- | RiGalleryContent;
391
+ | RiGalleryContent
392
+ | RiLabelingContent;
355
393
 
356
394
  export type RiStringContent = RiFieldContentTemplate<"string", string>;
357
395
  export type RiNumberContent = RiFieldContentTemplate<"number", number>;
@@ -359,6 +397,7 @@ export type RiBooleanContent = RiFieldContentTemplate<"boolean", boolean>;
359
397
  export type RiQuillDeltaContent = RiFieldContentTemplate<"json", JsonFieldValue>;
360
398
  export type RiMediaContent = RiFieldContentTemplate<"media", RiMediaValue>;
361
399
  export type RiGalleryContent = RiFieldContentTemplate<"gallery", RiGalleryValue>;
400
+ export type RiLabelingContent = RiUnlocalizedFieldContent<"labeling", UpdateLabelingFieldValue>;
362
401
 
363
402
  export type RiFieldContentTemplate<T extends ScFieldDataType, V> =
364
403
  | RiLocalizedFieldContent<T, V>
@@ -1,40 +0,0 @@
1
- import type { VariantName } from "@paroicms/public-anywhere-lib";
2
- import type { BackendPluginService } from "../types/backend-plugin-types.d.ts";
3
- export interface MakeUrlOptions {
4
- protocol: "http" | "https";
5
- fqdn: string;
6
- port?: number;
7
- path?: string;
8
- }
9
- export declare function makeUrl({ path, fqdn, protocol, port }: MakeUrlOptions): string;
10
- export interface UrlOfMediaFileValues {
11
- mediaUid: string;
12
- mediaType: string;
13
- originalName: string | undefined;
14
- absoluteUrl?: boolean;
15
- }
16
- export declare function makeUrlOfMediaFile(service: Pick<BackendPluginService, "siteUrl">, values: UrlOfMediaFileValues): string;
17
- export declare function makeUrlOfMediaFile(service: Pick<BackendPluginService, "siteUrl">, values: UrlOfMediaFileValues, options: {
18
- returnObj: true;
19
- }): {
20
- url: string;
21
- fileName: string;
22
- };
23
- export interface UrlOfImageVariantValues {
24
- mediaUid: string;
25
- mediaType: string;
26
- variantName: VariantName;
27
- resourceVersion: string | undefined;
28
- slug: string | undefined;
29
- absoluteUrl?: boolean;
30
- }
31
- export declare function makeUrlOfImageVariant(service: Pick<BackendPluginService, "siteUrl">, values: UrlOfImageVariantValues): string;
32
- export declare function makeUrlOfImageVariant(service: Pick<BackendPluginService, "siteUrl">, values: UrlOfImageVariantValues, options: {
33
- returnObj: true;
34
- }): {
35
- url: string;
36
- fileName: string;
37
- };
38
- export declare function fileExtensionOf(mediaType: string): string;
39
- export declare function toAbsoluteUrl(service: Pick<BackendPluginService, "siteUrl">, url: string): string;
40
- export declare function makeFeedUrl(service: Pick<BackendPluginService, "siteSchema" | "siteUrl">, language?: string): string;
@@ -1,44 +0,0 @@
1
- export function makeUrl({ path, fqdn, protocol, port }) {
2
- const portPart = port === undefined || port === 80 ? "" : `:${port}`;
3
- return `${protocol}://${fqdn}${portPart}${path ?? ""}`;
4
- }
5
- export function makeUrlOfMediaFile(service, values, options) {
6
- const { mediaUid, mediaType, originalName, absoluteUrl } = values;
7
- const fileName = `${originalName ?? "unamed"}${fileExtensionOf(mediaType)}`;
8
- const relUrl = `/medias/${encodeURIComponent(mediaUid)}/file/${encodeURIComponent(fileName)}`;
9
- const url = absoluteUrl ? toAbsoluteUrl(service, relUrl) : relUrl;
10
- return options?.returnObj ? { url, fileName } : url;
11
- }
12
- export function makeUrlOfImageVariant(service, values, options) {
13
- const { mediaUid, mediaType, variantName, slug, resourceVersion, absoluteUrl } = values;
14
- const fileName = `${slug ?? "unamed"}-${variantName}${fileExtensionOf(mediaType)}`;
15
- let relUrl;
16
- if (resourceVersion) {
17
- relUrl = `/medias/${encodeURIComponent(mediaUid)}/image/${encodeURIComponent(resourceVersion)}/${encodeURIComponent(fileName)}`;
18
- }
19
- else {
20
- relUrl = `/medias/${encodeURIComponent(mediaUid)}/image/${encodeURIComponent(fileName)}`;
21
- }
22
- const url = absoluteUrl ? toAbsoluteUrl(service, relUrl) : relUrl;
23
- return options?.returnObj ? { url, fileName } : url;
24
- }
25
- export function fileExtensionOf(mediaType) {
26
- if (mediaType === "image/svg+xml")
27
- return ".svg";
28
- const regexMatchArray = mediaType.match(/\w+\/([-+.\w]+)/);
29
- if (!regexMatchArray) {
30
- throw new Error("media extension is incorrect.");
31
- }
32
- return `.${regexMatchArray[1]}`;
33
- }
34
- export function toAbsoluteUrl(service, url) {
35
- return url.startsWith("/") ? `${service.siteUrl}${url}` : url;
36
- }
37
- export function makeFeedUrl(service, language) {
38
- const isMultilingual = service.siteSchema.isMultilingual;
39
- if (isMultilingual && !language) {
40
- throw new Error("language is required for multilingual site");
41
- }
42
- return toAbsoluteUrl(service, isMultilingual ? `/${language}/feed` : "/feed");
43
- }
44
- //# sourceMappingURL=url.helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"url.helpers.js","sourceRoot":"","sources":["../src/url.helpers.ts"],"names":[],"mappings":"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"}