@paroicms/public-server-lib 1.0.2 → 1.2.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,4 @@
1
+ import { type } from "arktype";
2
+ import type { PaHttpContext } from "../types/backend-plugin-types.d.ts";
3
+ export declare function assertBody<T extends type.Any>(bodyType: T, httpContext: PaHttpContext): T["infer"];
4
+ //# sourceMappingURL=assert-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-body.d.ts","sourceRoot":"","sources":["../src/assert-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGxE,wBAAgB,UAAU,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,EAC3C,QAAQ,EAAE,CAAC,EACX,WAAW,EAAE,aAAa,GACzB,CAAC,CAAC,OAAO,CAAC,CAIZ"}
@@ -0,0 +1,9 @@
1
+ import { type } from "arktype";
2
+ import { ApiError } from "./api-error-handler.js";
3
+ export function assertBody(bodyType, httpContext) {
4
+ const result = bodyType(httpContext.req.body);
5
+ if (result instanceof type.errors)
6
+ throw new ApiError(result.summary, 400);
7
+ return result;
8
+ }
9
+ //# sourceMappingURL=assert-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-body.js","sourceRoot":"","sources":["../src/assert-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,UAAU,UAAU,CACxB,QAAW,EACX,WAA0B;IAE1B,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,MAAM,YAAY,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export type * from "../types/backend-plugin-types.d.ts";
6
6
  export type * from "../types/load-descriptor-types.d.ts";
7
7
  export type * from "../types/template-payload.types.d.ts";
8
8
  export * from "./api-error-handler.js";
9
+ export * from "./assert-body.js";
9
10
  export * from "./html-helpers.js";
10
11
  export * from "./load-descriptors.js";
11
12
  export * from "./media-handle-helpers.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,2CAA2C,CAAC;AAC/D,mBAAmB,sCAAsC,CAAC;AAC1D,mBAAmB,yCAAyC,CAAC;AAC7D,mBAAmB,mCAAmC,CAAC;AACvD,mBAAmB,oCAAoC,CAAC;AACxD,mBAAmB,qCAAqC,CAAC;AACzD,mBAAmB,sCAAsC,CAAC;AAC1D,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,2CAA2C,CAAC;AAC/D,mBAAmB,sCAAsC,CAAC;AAC1D,mBAAmB,yCAAyC,CAAC;AAC7D,mBAAmB,mCAAmC,CAAC;AACvD,mBAAmB,oCAAoC,CAAC;AACxD,mBAAmB,qCAAqC,CAAC;AACzD,mBAAmB,sCAAsC,CAAC;AAC1D,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./api-error-handler.js";
2
+ export * from "./assert-body.js";
2
3
  export * from "./html-helpers.js";
3
4
  export * from "./load-descriptors.js";
4
5
  export * from "./media-handle-helpers.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,iCAAiC,CAAC;AAChD,cAAc,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"load-descriptors.d.ts","sourceRoot":"","sources":["../src/load-descriptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EAC1B,MAAM,mCAAmC,CAAC;AAI3C,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,qBAAqB,CAAC;CAC7C;AAED,MAAM,WAAW,6BAA6B;IAC5C,oBAAoB,EAAE,6BAA6B,CAAC;CACrD;AAED,MAAM,WAAW,2BAA2B;IAC1C,oBAAoB,EAAE,0BAA0B,CAAC;CAClD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,EACN,cAAc,EAAE,yBAAyB,GACxC,CAAC,GAAG,6BAA6B,CAAC;AACrC,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,EACN,cAAc,EAAE,uBAAuB,GACtC,CAAC,GAAG,2BAA2B,CAAC;AACnC,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,EACN,cAAc,EAAE,cAAc,GAC7B,CAAC,GAAG,kBAAkB,CAAC;AAM1B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAK9E;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,OAAO,GACX,yBAAyB,GAAG,SAAS,CAIvC;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAIhG;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,kBAAkB,EAC9D,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,kBAAkB,GAC5B,CAAC,CAeH"}
1
+ {"version":3,"file":"load-descriptors.d.ts","sourceRoot":"","sources":["../src/load-descriptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EAC1B,MAAM,mCAAmC,CAAC;AAI3C,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,qBAAqB,CAAC;CAC7C;AAED,MAAM,WAAW,6BAA6B;IAC5C,oBAAoB,EAAE,6BAA6B,CAAC;CACrD;AAED,MAAM,WAAW,2BAA2B;IAC1C,oBAAoB,EAAE,0BAA0B,CAAC;CAClD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,EACN,cAAc,EAAE,yBAAyB,GACxC,CAAC,GAAG,6BAA6B,CAAC;AACrC,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,EACN,cAAc,EAAE,uBAAuB,GACtC,CAAC,GAAG,2BAA2B,CAAC;AACnC,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,CAAC,EACN,cAAc,EAAE,cAAc,GAC7B,CAAC,GAAG,kBAAkB,CAAC;AAM1B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAK9E;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,OAAO,GACX,yBAAyB,GAAG,SAAS,CAIvC;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,CAIhG;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,kBAAkB,EAC9D,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,kBAAkB,GAC5B,CAAC,CAkBH"}
@@ -28,6 +28,9 @@ export function mergeListDescriptor(base, newValues) {
28
28
  if (newValues.labeledWith) {
29
29
  target.labeledWith = newValues.labeledWith;
30
30
  }
31
+ if (newValues.fieldEquals) {
32
+ target.fieldEquals = newValues.fieldEquals;
33
+ }
31
34
  if (newValues.sorting) {
32
35
  target.sorting = newValues.sorting;
33
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"load-descriptors.js","sourceRoot":"","sources":["../src/load-descriptors.ts"],"names":[],"mappings":"AAOA,MAAM,oBAAoB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AA0BtD,MAAM,UAAU,oBAAoB,CAAC,GAAQ,EAAE,cAA8B;IAC3E,GAAG,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC;IAC3C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IACpD,IAAI,CAAC,CAAC,oBAAoB,IAAI,GAAG,CAAC;QAAE,OAAO;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAmB,CAAC;IAC5D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,GAAY;IAEZ,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,OAAO,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,GAAY;IACzD,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAO,EACP,SAA6B;IAE7B,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC7C,CAAC;IACD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACnC,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"load-descriptors.js","sourceRoot":"","sources":["../src/load-descriptors.ts"],"names":[],"mappings":"AAOA,MAAM,oBAAoB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AA0BtD,MAAM,UAAU,oBAAoB,CAAC,GAAQ,EAAE,cAA8B;IAC3E,GAAG,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC;IAC3C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IACpD,IAAI,CAAC,CAAC,oBAAoB,IAAI,GAAG,CAAC;QAAE,OAAO;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAmB,CAAC;IAC5D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,GAAY;IAEZ,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,OAAO,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,GAAY;IACzD,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAO,EACP,SAA6B;IAE7B,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC7C,CAAC;IACD,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAC7C,CAAC;IACD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IACrC,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACnC,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/public-server-lib",
3
- "version": "1.0.2",
3
+ "version": "1.2.0",
4
4
  "description": "Common utilitaries for paroicms plugins (backend side).",
5
5
  "author": "Paroi Team",
6
6
  "repository": {
@@ -24,9 +24,9 @@
24
24
  "dev": "tsc --watch --preserveWatchOutput"
25
25
  },
26
26
  "dependencies": {
27
- "@paroicms/internal-anywhere-lib": "1.39.8",
27
+ "@paroicms/internal-anywhere-lib": "1.40.0",
28
28
  "@paroicms/public-anywhere-lib": "1.0.1",
29
- "@paroicms/script-lib": "1.0.1",
29
+ "@paroicms/script-lib": "1.0.2",
30
30
  "@typeonly/validator": "~1.1.2",
31
31
  "arktype": "~2.2.1"
32
32
  },
@@ -113,6 +113,10 @@ export interface BackendPluginInitService extends PluginStaticConfiguration {
113
113
  UpdateFieldValue
114
114
  >,
115
115
  ): void;
116
+ registerHook(
117
+ hookName: "afterSaveValues",
118
+ handler: BackendHookHandler<undefined, AfterSaveValuesInfo, void>,
119
+ ): void;
116
120
  registerHook(hookName: "sendMail", handler: BackendHookHandler<MailData, undefined, void>): void;
117
121
  registerHook(
118
122
  hookName: "markdownToNative",
@@ -136,6 +140,24 @@ export type BackendHookHandler<V = unknown, O = unknown, R = unknown> = (hookPay
136
140
  options: O;
137
141
  }) => Promise<R> | R;
138
142
 
143
+ export interface AfterSaveValuesInfo {
144
+ nodeKind: "document" | "part" | "site";
145
+ /** Absent for `"site"`. For a part, this is the partId. */
146
+ lNodeId?: string;
147
+ /** Absent for `"site"`. */
148
+ nodeId?: string;
149
+ /** `"_site"` for site saves. */
150
+ typeName: string;
151
+ language?: string;
152
+ changes: SavedFieldChange[];
153
+ }
154
+
155
+ export interface SavedFieldChange {
156
+ fieldName: string;
157
+ oldValue: ReadFieldValue | undefined;
158
+ newValue: ReadFieldValue | undefined;
159
+ }
160
+
139
161
  export type RenderingHookHandler<V extends ReadFieldValue = ReadFieldValue> = (hookPayload: {
140
162
  service: PluginRenderingService;
141
163
  value: V;
@@ -263,10 +285,13 @@ export interface PluginRenderingService {
263
285
  homeUrl: string;
264
286
  setRenderState(key: string, value: any): void;
265
287
 
266
- loadDocuments(loadDescriptor: DocumentsLoadDescriptor): Promise<LiquidPayload<TpDocPayload>[]>;
267
288
  loadDocuments(
268
289
  loadDescriptor: DocumentsLoadDescriptor,
269
- options: { withTotal: true },
290
+ options?: { onlyPublished?: boolean },
291
+ ): Promise<LiquidPayload<TpDocPayload>[]>;
292
+ loadDocuments(
293
+ loadDescriptor: DocumentsLoadDescriptor,
294
+ options: { withTotal: true; onlyPublished?: boolean },
270
295
  ): Promise<{ documents: LiquidPayload<TpDocPayload>[]; total: number }>;
271
296
 
272
297
  renderDocument(templateName: string, doc: LiquidPayload<TpDocPayload>): Promise<string>;
@@ -403,6 +428,8 @@ export interface RunningSiteConnector {
403
428
  createPart(input: CreatePartInput): Promise<MinimalPartInfo>;
404
429
  createPartTranslation(input: CreatePartTranslationInput): Promise<MinimalPartInfo>;
405
430
  setMedia(input: SetMediaInput): Promise<MSourceMedia>;
431
+ /** Returns the deleted media ids. */
432
+ deleteMedia(input: { handle: string; mediaId?: string }): Promise<string[]>;
406
433
  }
407
434
 
408
435
  export interface MinimalDocumentInfo {
@@ -484,6 +511,11 @@ export interface CreateDocumentInput {
484
511
  typeName: string;
485
512
  title?: string;
486
513
  slug?: string;
514
+ /**
515
+ * Honored when the document type's route is `":relativeId"` (validated for format and sibling
516
+ * uniqueness); ignored otherwise.
517
+ */
518
+ relativeId?: string;
487
519
  values?: UpdateFieldValues;
488
520
  }
489
521
 
@@ -553,7 +585,10 @@ export interface RiLocalNewAccount {
553
585
  kind: "local";
554
586
  email: string;
555
587
  name: string;
556
- password: string;
588
+ /** When absent, a password-reset link is emailed to the account. */
589
+ password?: string;
590
+ /** Language of the password-reset email; defaults to the site's default language. */
591
+ language?: string;
557
592
  roles: string[];
558
593
  }
559
594
 
@@ -9,6 +9,7 @@ export interface ListBaseDescriptor {
9
9
  limit?: number;
10
10
  sorting?: ScSorting;
11
11
  labeledWith?: LabeledWithDescriptor;
12
+ fieldEquals?: FieldEqualsDescriptor;
12
13
  }
13
14
 
14
15
  export interface LabeledWithDescriptor {
@@ -16,6 +17,11 @@ export interface LabeledWithDescriptor {
16
17
  termNodeId: string;
17
18
  }
18
19
 
20
+ export interface FieldEqualsDescriptor {
21
+ fieldName: string;
22
+ value: string;
23
+ }
24
+
19
25
  export interface ChildDocumentsLoadDescriptor extends ListBaseDescriptor {
20
26
  load: "list";
21
27
  nodeKind: "document";