@paroicms/public-server-lib 0.25.0 → 0.27.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.
@@ -1,5 +1,5 @@
1
1
  import type { ScSchemaLocales, ScTranslations } from "@paroicms/public-anywhere-lib";
2
- import type { AppLogger } from "../types/backend-plugin-types.ts";
2
+ import type { AppLogger } from "../types/backend-plugin-types.d.ts";
3
3
  export interface SimpleTranslator {
4
4
  translate: (options: SimpleTranslateOptions) => string;
5
5
  }
@@ -19,4 +19,4 @@ export declare function createSimpleTranslator(options: {
19
19
  [language: string]: ScTranslations;
20
20
  } | ScSchemaLocales;
21
21
  logger: Pick<AppLogger, "warn">;
22
- }): Promise<SimpleTranslator>;
22
+ }): SimpleTranslator;
@@ -7,7 +7,7 @@ export async function loadSimpleTranslatorFromDirectory(options) {
7
7
  translate: (options) => translate(labels, options),
8
8
  };
9
9
  }
10
- export async function createSimpleTranslator(options) {
10
+ export function createSimpleTranslator(options) {
11
11
  const labels = new Map(Object.entries(options.labels).map(([k, v]) => [k, flattenLocales(v)]));
12
12
  return {
13
13
  translate: (options) => translate(labels, options),
@@ -1 +1 @@
1
- {"version":3,"file":"simple-i18n.js","sourceRoot":"","sources":["../src/simple-i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-i18n.js","sourceRoot":"","sources":["../src/simple-i18n.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/public-server-lib",
3
- "version": "0.25.0",
3
+ "version": "0.27.0",
4
4
  "description": "Common utilitaries for paroicms plugins (backend side).",
5
5
  "author": "Paroi Team",
6
6
  "repository": {
@@ -21,15 +21,15 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@paroi/data-formatters-lib": "~0.4.0",
24
- "@paroicms/internal-anywhere-lib": "1.24.0",
25
- "@paroicms/public-anywhere-lib": "0.18.0",
24
+ "@paroicms/internal-anywhere-lib": "1.25.0",
25
+ "@paroicms/public-anywhere-lib": "0.19.0",
26
26
  "@types/express": "~4.17.21"
27
27
  },
28
28
  "devDependencies": {
29
- "@types/node": "~22.10.7",
29
+ "@types/node": "~22.13.10",
30
30
  "rimraf": "~6.0.1",
31
- "typescript": "~5.7.3",
32
- "vitest": "~3.0.2"
31
+ "typescript": "~5.8.2",
32
+ "vitest": "~3.0.5"
33
33
  },
34
34
  "files": [
35
35
  "dist",
@@ -3,7 +3,9 @@ import type {
3
3
  FieldValue,
4
4
  ImageSize,
5
5
  ParsedNodelId,
6
+ ScFieldDataType,
6
7
  ScSiteSchema,
8
+ SiteIds,
7
9
  ThemeConf,
8
10
  } from "@paroicms/public-anywhere-lib";
9
11
  import type { Request, Response } from "express";
@@ -75,6 +77,16 @@ export interface BackendPluginService {
75
77
  executeHook<T = unknown>(hookName: string, params?: any): T[];
76
78
  pluginConf: PluginConf;
77
79
  pluginAssetsUrl: string;
80
+ registerNewSite: (options: NewSiteOptions) => Promise<Readonly<SiteConf>>;
81
+ /** This is the connector of the running instance of ParoiCMS. */
82
+ connector: RunningInstanceConnector;
83
+ }
84
+
85
+ export interface NewSiteOptions {
86
+ packName: string;
87
+ siteDir: string;
88
+ domain: string;
89
+ version?: string;
78
90
  }
79
91
 
80
92
  export interface BackendPluginRenderService extends BackendPluginService {
@@ -160,3 +172,159 @@ export interface PartialsParamsInput {
160
172
  offset: string;
161
173
  limit: string;
162
174
  }
175
+ export interface SiteConf {
176
+ fqdn: string;
177
+ siteName: string;
178
+ version?: string;
179
+ siteDir: string;
180
+ dataDir: string;
181
+ cacheDir: string;
182
+ backupDir: string;
183
+ siteUrl: string;
184
+ /**
185
+ * This status can be mutated.
186
+ */
187
+ loadedOnce: boolean;
188
+ redirectWww?: boolean;
189
+ trusted: boolean;
190
+ }
191
+
192
+ export type SitePackConf = FqdnSitePackConf | SubDomainSitePackConf;
193
+
194
+ export interface SitePackConfBase {
195
+ packName: string;
196
+ sitesDir?: string;
197
+ dataDir: string;
198
+ cacheDir: string;
199
+ backupDir: string;
200
+ redirectWww?: boolean;
201
+ trusted: boolean;
202
+ }
203
+
204
+ export interface FqdnSitePackConf extends SitePackConfBase {
205
+ serveOn: "fqdn";
206
+ }
207
+
208
+ export interface SubDomainSitePackConf extends SitePackConfBase {
209
+ serveOn: "subDomain";
210
+ parentDomain: string;
211
+ }
212
+
213
+ export interface RunningInstanceConnector {
214
+ getSitePackConf(packName: string): SitePackConf;
215
+ loadSiteSchemaAndIds(fqdn: string): Promise<SiteSchemaAndIds>;
216
+ createAccount(
217
+ fqdn: string,
218
+ account: RiNewAccount,
219
+ options?: { asContactEmail?: boolean },
220
+ ): Promise<void>;
221
+ updateSiteFields(fqdn: string, fields: RiFieldSetContent): Promise<void>;
222
+ updateDocumentContent(
223
+ fqdn: string,
224
+ options: {
225
+ nodeId: string;
226
+ content: RiDocumentContent;
227
+ },
228
+ ): Promise<void>;
229
+ addMultipleDocumentContents(
230
+ fqdn: string,
231
+ options: {
232
+ parentNodeId: string;
233
+ contents: RiDocumentContent[];
234
+ },
235
+ ): Promise<void>;
236
+ addMultiplePartContents(
237
+ fqdn: string,
238
+ options: {
239
+ parentNodeId: string;
240
+ contents: RiPartContent[];
241
+ },
242
+ ): Promise<void>;
243
+ }
244
+
245
+ export interface SiteSchemaAndIds {
246
+ siteSchema: ScSiteSchema;
247
+ siteIds: SiteIds;
248
+ }
249
+
250
+ export type RiNewAccount = RiLocalNewAccount | RiExternalNewAccount;
251
+
252
+ export interface RiLocalNewAccount {
253
+ kind: "local";
254
+ email: string;
255
+ name: string;
256
+ password: string;
257
+ }
258
+
259
+ export interface RiExternalNewAccount {
260
+ kind: "google";
261
+ email: string;
262
+ name: string;
263
+ }
264
+
265
+ /** "Nc" stands for Node Content. */
266
+ export type RiNodeContent = RiDocumentContent | RiPartContent;
267
+
268
+ export interface RiDocumentContent {
269
+ kind: "document";
270
+ typeName: string;
271
+ title?: { [language: string]: string };
272
+ featuredImage?: RiMediaValue;
273
+ fields: RiFieldSetContent;
274
+ }
275
+
276
+ export interface RiPartContent {
277
+ kind: "part";
278
+ typeName: string;
279
+ fields: RiFieldSetContent;
280
+ }
281
+
282
+ export interface RiFieldSetContent {
283
+ [fieldName: string]: RiFieldContent;
284
+ }
285
+
286
+ export type RiFieldContent =
287
+ | RiStringContent
288
+ | RiNumberContent
289
+ | RiBooleanContent
290
+ | RiQuillDeltaContent
291
+ | RiMediaContent
292
+ | RiGalleryContent;
293
+
294
+ export type RiStringContent = RiFieldContentTemplate<"string", string>;
295
+ export type RiNumberContent = RiFieldContentTemplate<"number", number>;
296
+ export type RiBooleanContent = RiFieldContentTemplate<"boolean", boolean>;
297
+ export type RiQuillDeltaContent = RiFieldContentTemplate<"quillDelta", QuillDeltaValue>;
298
+ export type RiMediaContent = RiFieldContentTemplate<"media", RiMediaValue>;
299
+ export type RiGalleryContent = RiFieldContentTemplate<"gallery", RiGalleryValue>;
300
+
301
+ export type RiFieldContentTemplate<T extends ScFieldDataType, V> =
302
+ | RiLocalizedFieldContent<T, V>
303
+ | RiUnlocalizedFieldContent<T, V>;
304
+
305
+ export interface RiLocalizedFieldContent<T extends ScFieldDataType, V> {
306
+ dataType: T;
307
+ localized: true;
308
+ value: {
309
+ [language: string]: V | null;
310
+ };
311
+ }
312
+
313
+ export interface RiUnlocalizedFieldContent<T extends ScFieldDataType, V> {
314
+ dataType: T;
315
+ localized: false;
316
+ value: V | null;
317
+ }
318
+
319
+ export interface RiMediaValue {
320
+ file: string;
321
+ }
322
+
323
+ export interface RiGalleryValue {
324
+ files: string[];
325
+ }
326
+
327
+ // TODO: replace with markdown content. The plugin should convert markdown to quill delta.
328
+ export interface QuillDeltaValue {
329
+ ops: any[];
330
+ }