@paroicms/public-server-lib 0.29.0 → 0.31.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.
@@ -0,0 +1,7 @@
1
+ export type ApiErrorStatus = 400 | 401 | 403 | 404 | 409 | 500;
2
+ export declare class ApiError extends Error {
3
+ readonly status: ApiErrorStatus;
4
+ readonly statusLabel: string;
5
+ constructor(status: ApiErrorStatus);
6
+ constructor(message: string, status: ApiErrorStatus);
7
+ }
@@ -0,0 +1,30 @@
1
+ export class ApiError extends Error {
2
+ status;
3
+ statusLabel;
4
+ constructor(arg1, arg2) {
5
+ const message = typeof arg1 === "string" ? arg1 : getErrorLabel(arg1);
6
+ const status = (typeof arg1 === "string" ? arg2 : arg1) ?? 500;
7
+ super(message);
8
+ this.status = status;
9
+ this.statusLabel = getErrorLabel(status);
10
+ }
11
+ }
12
+ function getErrorLabel(status) {
13
+ switch (status) {
14
+ case 400:
15
+ return "Bad Request";
16
+ case 401:
17
+ return "Unauthorized";
18
+ case 403:
19
+ return "Forbidden";
20
+ case 404:
21
+ return "Not Found";
22
+ case 409:
23
+ return "Conflict";
24
+ case 500:
25
+ return "Internal Server Error";
26
+ default:
27
+ return "Unknown Error";
28
+ }
29
+ }
30
+ //# sourceMappingURL=api-error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-error-handler.js","sourceRoot":"","sources":["../src/api-error-handler.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,MAAM,CAAiB;IACvB,WAAW,CAAS;IAI7B,YAAY,IAA6B,EAAE,IAAqB;QAC9D,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;CACF;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,aAAa,CAAC;QACvB,KAAK,GAAG;YACN,OAAO,cAAc,CAAC;QACxB,KAAK,GAAG;YACN,OAAO,WAAW,CAAC;QACrB,KAAK,GAAG;YACN,OAAO,WAAW,CAAC;QACrB,KAAK,GAAG;YACN,OAAO,UAAU,CAAC;QACpB,KAAK,GAAG;YACN,OAAO,uBAAuB,CAAC;QACjC;YACE,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @see https://stackoverflow.com/a/4835406/3786294
3
3
  */
4
- export declare function escapeHtml(text: string, options?: {
4
+ export declare function escapeHtml(text: string | undefined, options?: {
5
5
  newLinesToBr?: boolean;
6
6
  }): string;
7
7
  export declare function decodeHtmlEntities(str: string): string;
@@ -9,6 +9,8 @@ const htmlEntities = {
9
9
  "'": "'",
10
10
  };
11
11
  export function escapeHtml(text, options = {}) {
12
+ if (!text)
13
+ return "";
12
14
  let val = text;
13
15
  val = val.replace(/[&<>"']/g, (m) => htmlEntities[m]);
14
16
  if (options.newLinesToBr) {
@@ -1 +1 @@
1
- {"version":3,"file":"html-helpers.js","sourceRoot":"","sources":["../../src/html-helpers/html-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-helpers.js","sourceRoot":"","sources":["../../src/html-helpers/html-helpers.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export type * from "../types/backend-plugin-types.d.ts";
2
+ export * from "./api-error-handler.js";
2
3
  export * from "./esm-module.helper.js";
3
4
  export * from "./html-helpers/html-helpers.js";
4
5
  export * from "./obfuscate.helper.js";
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./api-error-handler.js";
1
2
  export * from "./esm-module.helper.js";
2
3
  export * from "./html-helpers/html-helpers.js";
3
4
  export * from "./obfuscate.helper.js";
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,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,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/public-server-lib",
3
- "version": "0.29.0",
3
+ "version": "0.31.0",
4
4
  "description": "Common utilitaries for paroicms plugins (backend side).",
5
5
  "author": "Paroi Team",
6
6
  "repository": {
@@ -21,8 +21,8 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@paroi/data-formatters-lib": "~0.4.0",
24
- "@paroicms/internal-anywhere-lib": "1.26.0",
25
- "@paroicms/public-anywhere-lib": "0.20.0",
24
+ "@paroicms/internal-anywhere-lib": "1.27.0",
25
+ "@paroicms/public-anywhere-lib": "0.21.0",
26
26
  "@types/express": "~4.17.21"
27
27
  },
28
28
  "devDependencies": {
@@ -1,8 +1,9 @@
1
1
  import type { Obj } from "@paroi/data-formatters-lib";
2
2
  import type {
3
- FieldValue,
4
3
  ImageSize,
4
+ JsonFieldValue,
5
5
  ParsedNodelId,
6
+ ReadFieldValue,
6
7
  ScFieldDataType,
7
8
  ScSiteSchema,
8
9
  SiteIds,
@@ -74,11 +75,11 @@ export interface BackendPluginInitService {
74
75
  handler: PluginLiquidFilterHandler,
75
76
  options?: { raw?: boolean },
76
77
  ): void;
77
- registerFieldPreprocessor(dataType: string, handler: FieldPreprocessor): void;
78
+ registerFieldPreprocessor(handler: FieldPreprocessor): void;
78
79
  registerHook(hookName: string, handler: BackendHookHandler, options?: { unique?: boolean }): void;
79
80
  setPublicApiHandler(handler: PublicApiHandler): void;
80
81
  addHeadTag(...htmlTags: string[]): void;
81
- pluginConf: PluginConf;
82
+ configuration: PluginConfiguration;
82
83
  pluginAssetsUrl: string;
83
84
  }
84
85
 
@@ -104,9 +105,9 @@ export type PublicApiHandler = (
104
105
 
105
106
  export type FieldPreprocessor = (
106
107
  service: BackendPluginRenderService,
107
- value: FieldValue,
108
+ value: ReadFieldValue,
108
109
  options: FieldPreprocessorOptions,
109
- ) => FieldValue | undefined | Promise<FieldValue | undefined>;
110
+ ) => ReadFieldValue | undefined | Promise<ReadFieldValue | undefined>;
110
111
 
111
112
  export interface BackendPluginService {
112
113
  fqdn: string;
@@ -117,7 +118,7 @@ export interface BackendPluginService {
117
118
  validateRecaptchaResponse: (gRecaptchaResponse: string | undefined) => Promise<boolean>;
118
119
  sendMail: ({ subject, html, replyTo, to }: MailData) => Promise<void>;
119
120
  executeHook<T = unknown>(hookName: string, params?: any): T[];
120
- pluginConf: PluginConf;
121
+ configuration: PluginConfiguration;
121
122
  pluginAssetsUrl: string;
122
123
  registerNewSite: (options: NewSiteOptions) => Promise<Readonly<SiteConf>>;
123
124
  /** This is the connector of the running instance of ParoiCMS. */
@@ -135,13 +136,13 @@ export interface BackendPluginRenderService extends BackendPluginService {
135
136
  getSiteFieldValue: (options: {
136
137
  fieldName: string;
137
138
  language?: string;
138
- }) => Promise<FieldValue | undefined>;
139
+ }) => Promise<ReadFieldValue | undefined>;
139
140
  renderChildPartials(
140
141
  ctx: PaHttpContext,
141
142
  options: {
142
143
  params: PartialsParamsInput;
143
144
  parentDocumentId: ParsedNodelId;
144
- labeledByTermId?: string;
145
+ labeledBy?: LabeledBy;
145
146
  },
146
147
  ): Promise<void>;
147
148
  renderSearchPartials(
@@ -158,6 +159,11 @@ export interface BackendPluginRenderService extends BackendPluginService {
158
159
  getDocument: (documentId: string) => Promise<PublicDocument | undefined>;
159
160
  }
160
161
 
162
+ export interface LabeledBy {
163
+ termNodeId: string;
164
+ fieldName: string;
165
+ }
166
+
161
167
  export interface PublicDocument {
162
168
  id: string;
163
169
  getUrl: (options?: { absoluteUrl?: boolean }) => Promise<string>;
@@ -182,13 +188,14 @@ export interface FieldPreprocessorOptions {
182
188
  outputType?: "plainText";
183
189
  }
184
190
 
185
- export interface PluginConfs {
186
- [pluginName: string]: PluginConf;
191
+ export interface PluginConfigurations {
192
+ [pluginName: string]: PluginConfiguration;
187
193
  }
188
194
 
189
- export interface PluginConf {
195
+ export interface PluginConfiguration {
190
196
  [key: string]: unknown;
191
197
  backOffice?: Obj;
198
+ googleRecaptchaKey?: string;
192
199
  }
193
200
 
194
201
  export interface MailData {
@@ -338,7 +345,7 @@ export type RiFieldContent =
338
345
  export type RiStringContent = RiFieldContentTemplate<"string", string>;
339
346
  export type RiNumberContent = RiFieldContentTemplate<"number", number>;
340
347
  export type RiBooleanContent = RiFieldContentTemplate<"boolean", boolean>;
341
- export type RiQuillDeltaContent = RiFieldContentTemplate<"quillDelta", QuillDeltaValue>;
348
+ export type RiQuillDeltaContent = RiFieldContentTemplate<"json", JsonFieldValue>;
342
349
  export type RiMediaContent = RiFieldContentTemplate<"media", RiMediaValue>;
343
350
  export type RiGalleryContent = RiFieldContentTemplate<"gallery", RiGalleryValue>;
344
351
 
@@ -367,8 +374,3 @@ export interface RiMediaValue {
367
374
  export interface RiGalleryValue {
368
375
  files: string[];
369
376
  }
370
-
371
- // TODO: replace with markdown content. The plugin should convert markdown to quill delta.
372
- export interface QuillDeltaValue {
373
- ops: any[];
374
- }