@mxpicture/gcp-functions-backend 1.2.121 → 1.2.122

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,7 +1,7 @@
1
- import type { ApiFromRoutes, CrudRoutes, DocumentKey, ApiFilter, DocumentKeyAdmin, CreateInput, UpdateInput, DocumentData } from "@mxpicture/gcp-functions-common/types";
1
+ import type { DocumentKey, ApiFilter, DocumentKeyAdmin, CreateInput, UpdateInput, DocumentData } from "@mxpicture/gcp-functions-common/types";
2
2
  import type { Store } from "../store/Store.js";
3
3
  import type { Validation } from "../validation/Validation.js";
4
- import { IBackendApi } from "./IBackendApi.js";
4
+ import { BackendCustomApi } from "./BackendCustomApi.js";
5
5
  /**
6
6
  * Backend API providing standard CRUD operations for a document type.
7
7
  *
@@ -13,10 +13,8 @@ import { IBackendApi } from "./IBackendApi.js";
13
13
  * @typeParam STORE - The store implementation used for persistence.
14
14
  * @typeParam VAL - The validation implementation used for input validation.
15
15
  */
16
- export declare abstract class BackendApi<STORE_DOC extends DocumentKeyAdmin, DTO extends STORE_DOC, SIDE_EFFECTS extends DocumentData = DocumentData, STORE extends Store<STORE_DOC> = Store<STORE_DOC>, VAL extends Validation<DTO> = Validation<DTO>> extends IBackendApi<STORE_DOC, DTO, SIDE_EFFECTS, STORE, VAL> implements ApiFromRoutes<CrudRoutes<DTO>> {
17
- protected abstract loadVirtualFields(doc: STORE_DOC): Promise<DTO>;
16
+ export declare abstract class BackendApi<STORE_DOC extends DocumentKeyAdmin, DTO extends STORE_DOC, SIDE_EFFECTS extends DocumentData = DocumentData, STORE extends Store<STORE_DOC> = Store<STORE_DOC>, VAL extends Validation<DTO> = Validation<DTO>> extends BackendCustomApi<STORE_DOC, DTO, SIDE_EFFECTS, STORE, VAL> {
18
17
  protected processVirtualFields(doc: DTO): Promise<STORE_DOC>;
19
- protected abstract processSideEffects(current: DTO, prev: DTO | null, sideEffects: Partial<SIDE_EFFECTS>): Promise<DTO>;
20
18
  /**
21
19
  * Delete a document by its key.
22
20
  *
@@ -74,10 +72,5 @@ export declare abstract class BackendApi<STORE_DOC extends DocumentKeyAdmin, DTO
74
72
  * @throws {@link HttpsError} if validation fails.
75
73
  */
76
74
  update(request: UpdateInput<DTO>): Promise<DTO>;
77
- protected toDto(doc: STORE_DOC): Promise<DTO>;
78
- protected toDtos(docs: STORE_DOC[]): Promise<DTO[]>;
79
- protected fromDto(dto: DTO, prevDto: DTO | null, changedProps?: string[]): Promise<STORE_DOC>;
80
- protected fromDtoUpdate(dto: UpdateInput<DTO>): Promise<STORE_DOC>;
81
- protected fromDtoCreate(dto: CreateInput<DTO>): Promise<STORE_DOC>;
82
75
  }
83
76
  //# sourceMappingURL=BackendApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackendApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;;;;;;;;;GAUG;AACH,8BAAsB,UAAU,CAC9B,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EACrB,YAAY,SAAS,YAAY,GAAG,YAAY,EAChD,KAAK,SAAS,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,EACjD,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAE7C,SAAQ,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAC5D,YAAW,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;cAGlD,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAQlE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CACnC,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,GAAG,GAAG,IAAI,EAChB,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,GACjC,OAAO,CAAC,GAAG,CAAC;IAEf;;;;;OAKG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAKrE;;;;;OAKG;IACU,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpD;;;;;OAKG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAI9D;;;;;OAKG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1E;;;;;OAKG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAIvE;;;;;;OAMG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAO5D;;;;;;OAMG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;cAW5C,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;cAOnC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;cAIzC,OAAO,CACrB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,GAAG,IAAI,EACnB,YAAY,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,SAAS,CAAC;cA+BL,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;cAYxD,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAIzE"}
1
+ {"version":3,"file":"BackendApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,8BAAsB,UAAU,CAC9B,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EACrB,YAAY,SAAS,YAAY,GAAG,YAAY,EAChD,KAAK,SAAS,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,EACjD,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAC7C,SAAQ,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC;cAEzC,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAQ3E;;;;;OAKG;IACmB,MAAM,CAC1B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAK7B;;;;;OAKG;IACmB,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7D;;;;;OAKG;IACmB,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIvE;;;;;OAKG;IACmB,KAAK,CACzB,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GACzB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7B;;;;;OAKG;IACmB,MAAM,CAC1B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAI/B;;;;;;OAMG;IACmB,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAOrE;;;;;;OAMG;IACmB,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAUtE"}
@@ -1,5 +1,4 @@
1
- import { IBackendApi } from "./IBackendApi.js";
2
- import { toDatesDeep, toTimestampsDeep, } from "@mxpicture/gcp-functions-common/helper";
1
+ import { BackendCustomApi } from "./BackendCustomApi.js";
3
2
  /**
4
3
  * Backend API providing standard CRUD operations for a document type.
5
4
  *
@@ -11,7 +10,7 @@ import { toDatesDeep, toTimestampsDeep, } from "@mxpicture/gcp-functions-common/
11
10
  * @typeParam STORE - The store implementation used for persistence.
12
11
  * @typeParam VAL - The validation implementation used for input validation.
13
12
  */
14
- export class BackendApi extends IBackendApi {
13
+ export class BackendApi extends BackendCustomApi {
15
14
  // to be redefined
16
15
  async processVirtualFields(doc) {
17
16
  // default strip object
@@ -94,54 +93,5 @@ export class BackendApi extends IBackendApi {
94
93
  const updated = await this.store().update(id, patch);
95
94
  return this.toDto(updated);
96
95
  }
97
- async toDto(doc) {
98
- let cloned = toTimestampsDeep(doc, this.datePaths);
99
- cloned = toDatesDeep(cloned, this.datePaths);
100
- const loaded = await this.loadVirtualFields(cloned);
101
- return toDatesDeep(loaded, this.datePaths);
102
- }
103
- async toDtos(docs) {
104
- return Promise.all(docs.map((doc) => this.toDto(doc)));
105
- }
106
- async fromDto(dto, prevDto, changedProps = []) {
107
- const cloned = toDatesDeep(dto, this.datePaths);
108
- const clonedPrev = toDatesDeep(prevDto, this.datePaths);
109
- // check side effects
110
- let useSideEffects = false;
111
- for (const prop of changedProps) {
112
- if (prop === "*" || changedProps.includes(prop)) {
113
- useSideEffects = true;
114
- break;
115
- }
116
- }
117
- let sided = null;
118
- if (useSideEffects) {
119
- const se = {};
120
- for (const [key, value] of Object.entries(cloned))
121
- if (changedProps.includes("*") || changedProps.includes(key))
122
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
123
- se[key] = value;
124
- sided = await this.processSideEffects(cloned, clonedPrev, se);
125
- }
126
- else {
127
- sided = cloned;
128
- }
129
- const loaded = await this.processVirtualFields(sided);
130
- return toTimestampsDeep(loaded, this.datePaths);
131
- }
132
- async fromDtoUpdate(dto) {
133
- const existing = await this.get({ id: dto.id });
134
- const merged = { ...existing, ...dto };
135
- const changes = [];
136
- for (const [key, exVal] of Object.entries(existing))
137
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
138
- if (merged[key] !== exVal)
139
- changes.push(key);
140
- return this.fromDto(merged, existing, changes);
141
- }
142
- async fromDtoCreate(dto) {
143
- const keyAdmin = { id: this.store().createId() };
144
- return this.fromDto({ ...dto, ...keyAdmin }, null, ["*"]);
145
- }
146
96
  }
147
97
  //# sourceMappingURL=BackendApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackendApi.js","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BackendApi.js","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,UAMpB,SAAQ,gBAA0D;IAClE,kBAAkB;IACC,KAAK,CAAC,oBAAoB,CAAC,GAAQ;QACpD,uBAAuB;QACvB,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ;YACjC,8DAA8D;YAC9D,IAAK,GAAW,CAAC,GAAG,CAAC;gBAAE,OAAQ,GAAW,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACa,KAAK,CAAC,MAAM,CAC1B,OAAoB;QAEpB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACa,KAAK,CAAC,GAAG,CAAC,OAAoB;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACa,KAAK,CAAC,KAAK,CAAC,OAA0B;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACa,KAAK,CAAC,KAAK,CACzB,OAA0B;QAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACa,KAAK,CAAC,MAAM,CAC1B,OAAoB;QAEpB,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACa,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACa,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CACvC,EAAE,EACF,KAAsC,CACvC,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,84 @@
1
+ import type { ApiFromRoutes, CrudRoutes, DocumentKey, ApiFilter, DocumentKeyAdmin, CreateInput, UpdateInput, DocumentData } from "@mxpicture/gcp-functions-common/types";
2
+ import type { Store } from "../store/Store.js";
3
+ import type { Validation } from "../validation/Validation.js";
4
+ import { IBackendApi } from "./IBackendApi.js";
5
+ /**
6
+ * Backend API providing standard CRUD operations for a document type.
7
+ *
8
+ * @remarks
9
+ * Extends {@link IBackendApi} and implements all routes defined by {@link CrudRoutes}.
10
+ * Delegates persistence to a {@link Store} and input validation to a {@link Validation} instance.
11
+ *
12
+ * @typeParam DTO - The document data transfer object type.
13
+ * @typeParam STORE - The store implementation used for persistence.
14
+ * @typeParam VAL - The validation implementation used for input validation.
15
+ */
16
+ export declare abstract class BackendCustomApi<STORE_DOC extends DocumentKeyAdmin, DTO extends STORE_DOC, SIDE_EFFECTS extends DocumentData = DocumentData, STORE extends Store<STORE_DOC> = Store<STORE_DOC>, VAL extends Validation<DTO> = Validation<DTO>> extends IBackendApi<STORE_DOC, DTO, SIDE_EFFECTS, STORE, VAL> implements ApiFromRoutes<CrudRoutes<DTO>> {
17
+ protected abstract loadVirtualFields(doc: STORE_DOC): Promise<DTO>;
18
+ protected processVirtualFields(doc: DTO): Promise<STORE_DOC>;
19
+ protected abstract processSideEffects(current: DTO, prev: DTO | null, sideEffects: Partial<SIDE_EFFECTS>): Promise<DTO>;
20
+ /**
21
+ * Delete a document by its key.
22
+ *
23
+ * @param request - The document key identifying the document to delete.
24
+ * @returns An object confirming the deletion.
25
+ */
26
+ abstract delete(request: DocumentKey): Promise<{
27
+ deleted: true;
28
+ }>;
29
+ /**
30
+ * Retrieve a single document by its key.
31
+ *
32
+ * @param request - The document key identifying the document to retrieve.
33
+ * @returns The document including its key metadata.
34
+ */
35
+ abstract get(request: DocumentKey): Promise<DTO>;
36
+ /**
37
+ * Query documents with optional filters.
38
+ *
39
+ * @param request - Optional filter criteria to narrow the query results.
40
+ * @returns An array of documents matching the filter criteria.
41
+ */
42
+ abstract query(request?: ApiFilter | null): Promise<DTO[]>;
43
+ /**
44
+ * Count documents matching optional filter criteria.
45
+ *
46
+ * @param request - Optional filter criteria to narrow the count.
47
+ * @returns An object containing the count of matching documents.
48
+ */
49
+ abstract count(request?: ApiFilter | null): Promise<{
50
+ count: number;
51
+ }>;
52
+ /**
53
+ * Check whether a document exists by its key.
54
+ *
55
+ * @param request - The document key identifying the document to check.
56
+ * @returns An object indicating whether the document exists.
57
+ */
58
+ abstract exists(request: DocumentKey): Promise<{
59
+ exists: boolean;
60
+ }>;
61
+ /**
62
+ * Create a new document after validating the input.
63
+ *
64
+ * @param request - The document data without key metadata.
65
+ * @returns The newly created document including its generated key.
66
+ * @throws {@link HttpsError} if validation fails.
67
+ */
68
+ abstract create(request: CreateInput<DTO>): Promise<DTO>;
69
+ /**
70
+ * Update an existing document after validating the partial input.
71
+ *
72
+ * @param request - The partial document data including the key of the document to update.
73
+ * @returns The updated document including its key metadata.
74
+ * @throws {@link HttpsError} if validation fails.
75
+ */
76
+ abstract update(request: UpdateInput<DTO>): Promise<DTO>;
77
+ protected toDto(doc: STORE_DOC): Promise<DTO>;
78
+ protected toDtos(docs: STORE_DOC[]): Promise<DTO[]>;
79
+ protected fromDto(dto: DTO, prevDto: DTO | null, changedProps?: string[]): Promise<STORE_DOC>;
80
+ protected fromDtoUpdate(dto: UpdateInput<DTO>): Promise<STORE_DOC>;
81
+ protected fromDtoCreate(dto: CreateInput<DTO>): Promise<STORE_DOC>;
82
+ protected createId(id?: string): string;
83
+ }
84
+ //# sourceMappingURL=BackendCustomApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackendCustomApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendCustomApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;;;;;;;;;GAUG;AACH,8BAAsB,gBAAgB,CACpC,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EACrB,YAAY,SAAS,YAAY,GAAG,YAAY,EAChD,KAAK,SAAS,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,EACjD,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAE7C,SAAQ,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAC5D,YAAW,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;cAGlD,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAQlE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CACnC,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,GAAG,GAAG,IAAI,EAChB,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,GACjC,OAAO,CAAC,GAAG,CAAC;IAEf;;;;;OAKG;aACa,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAExE;;;;;OAKG;aACa,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAEvD;;;;;OAKG;aACa,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEjE;;;;;OAKG;aACa,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7E;;;;;OAKG;aACa,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAE1E;;;;;;OAMG;aACa,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAE/D;;;;;;OAMG;aACa,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;cAE/C,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;cAOnC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;cAIzC,OAAO,CACrB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,GAAG,IAAI,EACnB,YAAY,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,SAAS,CAAC;cA+BL,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;cAYxD,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAKxE,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAOxC"}
@@ -0,0 +1,83 @@
1
+ import * as uuid from "short-uuid";
2
+ import { IBackendApi } from "./IBackendApi.js";
3
+ import { toDatesDeep, toTimestampsDeep, } from "@mxpicture/gcp-functions-common/helper";
4
+ /**
5
+ * Backend API providing standard CRUD operations for a document type.
6
+ *
7
+ * @remarks
8
+ * Extends {@link IBackendApi} and implements all routes defined by {@link CrudRoutes}.
9
+ * Delegates persistence to a {@link Store} and input validation to a {@link Validation} instance.
10
+ *
11
+ * @typeParam DTO - The document data transfer object type.
12
+ * @typeParam STORE - The store implementation used for persistence.
13
+ * @typeParam VAL - The validation implementation used for input validation.
14
+ */
15
+ export class BackendCustomApi extends IBackendApi {
16
+ // to be redefined
17
+ async processVirtualFields(doc) {
18
+ // default strip object
19
+ for (const { key } of this.virtuals)
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ if (doc[key])
22
+ delete doc[key];
23
+ return doc;
24
+ }
25
+ async toDto(doc) {
26
+ let cloned = toTimestampsDeep(doc, this.datePaths);
27
+ cloned = toDatesDeep(cloned, this.datePaths);
28
+ const loaded = await this.loadVirtualFields(cloned);
29
+ return toDatesDeep(loaded, this.datePaths);
30
+ }
31
+ async toDtos(docs) {
32
+ return Promise.all(docs.map((doc) => this.toDto(doc)));
33
+ }
34
+ async fromDto(dto, prevDto, changedProps = []) {
35
+ const cloned = toDatesDeep(dto, this.datePaths);
36
+ const clonedPrev = toDatesDeep(prevDto, this.datePaths);
37
+ // check side effects
38
+ let useSideEffects = false;
39
+ for (const prop of changedProps) {
40
+ if (prop === "*" || changedProps.includes(prop)) {
41
+ useSideEffects = true;
42
+ break;
43
+ }
44
+ }
45
+ let sided = null;
46
+ if (useSideEffects) {
47
+ const se = {};
48
+ for (const [key, value] of Object.entries(cloned))
49
+ if (changedProps.includes("*") || changedProps.includes(key))
50
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
+ se[key] = value;
52
+ sided = await this.processSideEffects(cloned, clonedPrev, se);
53
+ }
54
+ else {
55
+ sided = cloned;
56
+ }
57
+ const loaded = await this.processVirtualFields(sided);
58
+ return toTimestampsDeep(loaded, this.datePaths);
59
+ }
60
+ async fromDtoUpdate(dto) {
61
+ const existing = await this.get({ id: dto.id });
62
+ const merged = { ...existing, ...dto };
63
+ const changes = [];
64
+ for (const [key, exVal] of Object.entries(existing))
65
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
66
+ if (merged[key] !== exVal)
67
+ changes.push(key);
68
+ return this.fromDto(merged, existing, changes);
69
+ }
70
+ async fromDtoCreate(dto) {
71
+ const keyAdmin = { id: this.createId() };
72
+ return this.fromDto({ ...dto, ...keyAdmin }, null, ["*"]);
73
+ }
74
+ createId(id) {
75
+ try {
76
+ return this.store().createId(id);
77
+ }
78
+ catch {
79
+ return id ?? uuid.generate();
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=BackendCustomApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackendCustomApi.js","sourceRoot":"","sources":["../../src/api/BackendCustomApi.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from "./BackendApi.js";
2
+ export * from "./BackendCustomApi.js";
2
3
  export * from "./IBackendApi.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
package/dist/api/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // This file is auto-generated by build-cli. Do not edit manually.
2
2
  export * from "./BackendApi.js";
3
+ export * from "./BackendCustomApi.js";
3
4
  export * from "./IBackendApi.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxpicture/gcp-functions-backend",
3
- "version": "1.2.121",
3
+ "version": "1.2.122",
4
4
  "description": "Utils for google cloud functions, publishing both CommonJS and ESM builds",
5
5
  "type": "module",
6
6
  "author": "MXPicture",
@@ -54,7 +54,7 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@google-cloud/tasks": "^6.2.1",
57
- "@mxpicture/gcp-functions-common": "^1.2.121",
57
+ "@mxpicture/gcp-functions-common": "^1.2.122",
58
58
  "express": "^5.2.1",
59
59
  "firebase-admin": "^13.7.0",
60
60
  "firebase-functions": "^7.0.6",