@mxpicture/gcp-functions-backend 1.3.49 → 1.3.51
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/api/BackendBaseApi.d.ts +74 -0
- package/dist/api/BackendBaseApi.d.ts.map +1 -0
- package/dist/api/BackendBaseApi.js +102 -0
- package/dist/api/BackendBaseApi.js.map +1 -0
- package/dist/api/{BackendCustomApi.d.ts → BackendCrudApi.d.ts} +4 -4
- package/dist/api/BackendCrudApi.d.ts.map +1 -0
- package/dist/api/{BackendCustomApi.js → BackendCrudApi.js} +4 -4
- package/dist/api/BackendCrudApi.js.map +1 -0
- package/dist/api/{BackendApi.d.ts → BackendDefaultApi.d.ts} +4 -4
- package/dist/api/BackendDefaultApi.d.ts.map +1 -0
- package/dist/api/{BackendApi.js → BackendDefaultApi.js} +4 -4
- package/dist/api/BackendDefaultApi.js.map +1 -0
- package/dist/api/BackendStoreApi.d.ts +34 -0
- package/dist/api/BackendStoreApi.d.ts.map +1 -0
- package/dist/api/BackendStoreApi.js +37 -0
- package/dist/api/BackendStoreApi.js.map +1 -0
- package/dist/api/index.d.ts +4 -3
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +4 -3
- package/dist/api/index.js.map +1 -1
- package/dist/function/IBackendFunction.d.ts +3 -4
- package/dist/function/IBackendFunction.d.ts.map +1 -1
- package/dist/function/IBackendFunction.js +4 -14
- package/dist/function/IBackendFunction.js.map +1 -1
- package/dist/validation/Validation.d.ts +2 -2
- package/dist/validation/Validation.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/api/BackendApi.d.ts.map +0 -1
- package/dist/api/BackendApi.js.map +0 -1
- package/dist/api/BackendCustomApi.d.ts.map +0 -1
- package/dist/api/BackendCustomApi.js.map +0 -1
- package/dist/api/IBackendApi.d.ts +0 -61
- package/dist/api/IBackendApi.d.ts.map +0 -1
- package/dist/api/IBackendApi.js +0 -81
- package/dist/api/IBackendApi.js.map +0 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { DecoPropertyVirtual, DocumentData } from "@mxpicture/gcp-functions-common/types";
|
|
2
|
+
import type { Validation } from "../validation/Validation.js";
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base class for backend API implementations.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Provides dependency-injection points for a {@link Validation} instance.
|
|
8
|
+
* Subclasses implement the concrete API methods while relying on the injected store and
|
|
9
|
+
* validation via {@link BackendBaseApi.useStore} and {@link BackendBaseApi.useValidation}.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam DTO - The document data transfer object type.
|
|
12
|
+
* @typeParam VAL - The validation implementation used for input validation.
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class BackendBaseApi<DTO extends DocumentData, SIDE_EFFECTS extends DocumentData = DocumentData, VAL extends Validation<DTO> = Validation<DTO>> {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
protected readonly datePaths: string[];
|
|
17
|
+
protected readonly virtuals: DecoPropertyVirtual[];
|
|
18
|
+
protected readonly sideEffects: string[];
|
|
19
|
+
protected _validation?: VAL;
|
|
20
|
+
protected _functionUrl?: string;
|
|
21
|
+
protected _routes?: string[];
|
|
22
|
+
/**
|
|
23
|
+
* Create a new backend API instance.
|
|
24
|
+
*
|
|
25
|
+
* @param name - A descriptive name for this API, used in error messages.
|
|
26
|
+
* @param datePaths - JSON paths within the response payload that contain date values to convert to Firestore Timestamps.
|
|
27
|
+
*/
|
|
28
|
+
constructor(name: string, datePaths: string[], virtuals: DecoPropertyVirtual[], sideEffects: string[]);
|
|
29
|
+
useFunctionUrl(url: string): void;
|
|
30
|
+
get functionUrl(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Inject the validation instance used for input validation.
|
|
33
|
+
*
|
|
34
|
+
* @param validation - The validation to use for input checking.
|
|
35
|
+
*/
|
|
36
|
+
useValidation(validation: VAL): void;
|
|
37
|
+
/**
|
|
38
|
+
* Register the allowed route names for this function.
|
|
39
|
+
*
|
|
40
|
+
* @param routes - An array of route names or a record whose values are route names.
|
|
41
|
+
*/
|
|
42
|
+
useRoutes(routes: {
|
|
43
|
+
[key: string]: string;
|
|
44
|
+
} | string[]): void;
|
|
45
|
+
/**
|
|
46
|
+
* Retrieve the registered route names.
|
|
47
|
+
*
|
|
48
|
+
* @returns The array of allowed route names.
|
|
49
|
+
* @throws {@link Error} if no routes have been provided via {@link useRoutes}.
|
|
50
|
+
*/
|
|
51
|
+
get routes(): string[];
|
|
52
|
+
/**
|
|
53
|
+
* Retrieve the injected validation instance.
|
|
54
|
+
*
|
|
55
|
+
* @returns The validation instance.
|
|
56
|
+
* @throws {@link Error} if no validation has been provided via {@link useValidation}.
|
|
57
|
+
*/
|
|
58
|
+
protected validation(): VAL;
|
|
59
|
+
/**
|
|
60
|
+
* Route an incoming function request to the appropriate API method.
|
|
61
|
+
*
|
|
62
|
+
* @remarks
|
|
63
|
+
* Validates that the requested route is registered, delegates to the API, and
|
|
64
|
+
* converts date fields in the response payload to Firestore Timestamps.
|
|
65
|
+
*
|
|
66
|
+
* @typeParam REQ - The request payload type.
|
|
67
|
+
* @typeParam RES - The response document data type.
|
|
68
|
+
* @param request - The incoming function request containing route and data.
|
|
69
|
+
* @returns The function response wrapping the API result.
|
|
70
|
+
* @throws {@link Error} with `invalid-argument` if the route is not registered.
|
|
71
|
+
*/
|
|
72
|
+
ingress<REQ, RES extends DocumentData>(route: string, data: REQ): Promise<RES>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=BackendBaseApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendBaseApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendBaseApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAM9D;;;;;;;;;;GAUG;AACH,8BAAsB,cAAc,CAClC,GAAG,SAAS,YAAY,EAExB,YAAY,SAAS,YAAY,GAAG,YAAY,EAChD,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;aAa3B,IAAI,EAAE,MAAM;IAC5B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;IACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,EAAE;IAClD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;IAd1C,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAC5B,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;;;OAKG;gBAEe,IAAI,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,WAAW,EAAE,MAAM,EAAE;IAGnC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAW,WAAW,IAAI,MAAM,CAG/B;IAED;;;;OAIG;IACI,aAAa,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAI3C;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE,GAAG,IAAI;IAIpE;;;;;OAKG;IACH,IAAW,MAAM,IAAI,MAAM,EAAE,CAM5B;IAED;;;;;OAKG;IACH,SAAS,CAAC,UAAU,IAAI,GAAG;IAQ3B;;;;;;;;;;;;OAYG;IACU,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,YAAY,EAChD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,GAAG,CAAC;CAWhB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { toDatesDeep, toTimestampsDeep, } from "@mxpicture/gcp-functions-common/helper";
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for backend API implementations.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Provides dependency-injection points for a {@link Validation} instance.
|
|
7
|
+
* Subclasses implement the concrete API methods while relying on the injected store and
|
|
8
|
+
* validation via {@link BackendBaseApi.useStore} and {@link BackendBaseApi.useValidation}.
|
|
9
|
+
*
|
|
10
|
+
* @typeParam DTO - The document data transfer object type.
|
|
11
|
+
* @typeParam VAL - The validation implementation used for input validation.
|
|
12
|
+
*/
|
|
13
|
+
export class BackendBaseApi {
|
|
14
|
+
name;
|
|
15
|
+
datePaths;
|
|
16
|
+
virtuals;
|
|
17
|
+
sideEffects;
|
|
18
|
+
_validation;
|
|
19
|
+
_functionUrl;
|
|
20
|
+
_routes;
|
|
21
|
+
/**
|
|
22
|
+
* Create a new backend API instance.
|
|
23
|
+
*
|
|
24
|
+
* @param name - A descriptive name for this API, used in error messages.
|
|
25
|
+
* @param datePaths - JSON paths within the response payload that contain date values to convert to Firestore Timestamps.
|
|
26
|
+
*/
|
|
27
|
+
constructor(name, datePaths, virtuals, sideEffects) {
|
|
28
|
+
this.name = name;
|
|
29
|
+
this.datePaths = datePaths;
|
|
30
|
+
this.virtuals = virtuals;
|
|
31
|
+
this.sideEffects = sideEffects;
|
|
32
|
+
}
|
|
33
|
+
useFunctionUrl(url) {
|
|
34
|
+
this._functionUrl = url;
|
|
35
|
+
}
|
|
36
|
+
get functionUrl() {
|
|
37
|
+
if (!this._functionUrl)
|
|
38
|
+
throw new Error(`No Url provided. ${this.name}`);
|
|
39
|
+
return this._functionUrl;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Inject the validation instance used for input validation.
|
|
43
|
+
*
|
|
44
|
+
* @param validation - The validation to use for input checking.
|
|
45
|
+
*/
|
|
46
|
+
useValidation(validation) {
|
|
47
|
+
this._validation = validation;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Register the allowed route names for this function.
|
|
51
|
+
*
|
|
52
|
+
* @param routes - An array of route names or a record whose values are route names.
|
|
53
|
+
*/
|
|
54
|
+
useRoutes(routes) {
|
|
55
|
+
this._routes = Array.isArray(routes) ? routes : Object.values(routes);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Retrieve the registered route names.
|
|
59
|
+
*
|
|
60
|
+
* @returns The array of allowed route names.
|
|
61
|
+
* @throws {@link Error} if no routes have been provided via {@link useRoutes}.
|
|
62
|
+
*/
|
|
63
|
+
get routes() {
|
|
64
|
+
if (!this._routes)
|
|
65
|
+
throw new Error(`${this.name}: routes not provided. Use "useRoutes" method`);
|
|
66
|
+
return this._routes;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Retrieve the injected validation instance.
|
|
70
|
+
*
|
|
71
|
+
* @returns The validation instance.
|
|
72
|
+
* @throws {@link Error} if no validation has been provided via {@link useValidation}.
|
|
73
|
+
*/
|
|
74
|
+
validation() {
|
|
75
|
+
if (!this._validation)
|
|
76
|
+
throw new Error(`${this.name}: validation not provided. Use "useValidation" method`);
|
|
77
|
+
return this._validation;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Route an incoming function request to the appropriate API method.
|
|
81
|
+
*
|
|
82
|
+
* @remarks
|
|
83
|
+
* Validates that the requested route is registered, delegates to the API, and
|
|
84
|
+
* converts date fields in the response payload to Firestore Timestamps.
|
|
85
|
+
*
|
|
86
|
+
* @typeParam REQ - The request payload type.
|
|
87
|
+
* @typeParam RES - The response document data type.
|
|
88
|
+
* @param request - The incoming function request containing route and data.
|
|
89
|
+
* @returns The function response wrapping the API result.
|
|
90
|
+
* @throws {@link Error} with `invalid-argument` if the route is not registered.
|
|
91
|
+
*/
|
|
92
|
+
async ingress(route, data) {
|
|
93
|
+
const routes = this.routes;
|
|
94
|
+
if (!routes.includes(route))
|
|
95
|
+
throw new Error(`Route ${route} not available`);
|
|
96
|
+
const requestData = toDatesDeep(data, this.datePaths);
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
98
|
+
const payload = await this[route](requestData);
|
|
99
|
+
return toTimestampsDeep(payload, this.datePaths);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=BackendBaseApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendBaseApi.js","sourceRoot":"","sources":["../../src/api/BackendBaseApi.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EACX,gBAAgB,GACjB,MAAM,wCAAwC,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,cAAc;IAiBhB;IACG;IACA;IACA;IAdX,WAAW,CAAO;IAClB,YAAY,CAAU;IACtB,OAAO,CAAY;IAE7B;;;;;OAKG;IACH,YACkB,IAAY,EACT,SAAmB,EACnB,QAA+B,EAC/B,WAAqB;QAHxB,SAAI,GAAJ,IAAI,CAAQ;QACT,cAAS,GAAT,SAAS,CAAU;QACnB,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,gBAAW,GAAX,WAAW,CAAU;IACvC,CAAC;IAEG,cAAc,CAAC,GAAW;QAC/B,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED,IAAW,WAAW;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,UAAe;QAClC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,MAA4C;QAC3D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,IAAW,MAAM;QACf,IAAI,CAAC,IAAI,CAAC,OAAO;YACf,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,IAAI,+CAA+C,CAC5D,CAAC;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACO,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,IAAI,uDAAuD,CACpE,CAAC;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,OAAO,CAClB,KAAa,EACb,IAAS;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtD,8DAA8D;QAC9D,MAAM,OAAO,GAAG,MAAO,IAAY,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;QACxD,OAAO,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import type { ApiFromRoutes, CrudRoutes, 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 {
|
|
4
|
+
import { BackendStoreApi } from "./BackendStoreApi.js";
|
|
5
5
|
/**
|
|
6
6
|
* Backend API providing standard CRUD operations for a document type.
|
|
7
7
|
*
|
|
8
8
|
* @remarks
|
|
9
|
-
* Extends {@link
|
|
9
|
+
* Extends {@link BackendStoreApi} and implements all routes defined by {@link CrudRoutes}.
|
|
10
10
|
* Delegates persistence to a {@link Store} and input validation to a {@link Validation} instance.
|
|
11
11
|
*
|
|
12
12
|
* @typeParam DTO - The document data transfer object type.
|
|
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
|
|
16
|
+
export declare abstract class BackendCrudApi<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 BackendStoreApi<STORE_DOC, DTO, SIDE_EFFECTS, STORE, VAL> implements ApiFromRoutes<CrudRoutes<DTO>> {
|
|
17
17
|
protected abstract loadVirtualFields(doc: STORE_DOC): Promise<DTO>;
|
|
18
18
|
protected processVirtualFields(doc: DTO): Promise<STORE_DOC>;
|
|
19
19
|
protected abstract processSideEffects(current: DTO, prev: DTO | null, sideEffects: Partial<SIDE_EFFECTS>): Promise<DTO>;
|
|
@@ -81,4 +81,4 @@ export declare abstract class BackendCustomApi<STORE_DOC extends DocumentKeyAdmi
|
|
|
81
81
|
protected fromDtoCreate(dto: CreateInput<DTO>): Promise<STORE_DOC>;
|
|
82
82
|
protected createId(id?: string): string;
|
|
83
83
|
}
|
|
84
|
-
//# sourceMappingURL=
|
|
84
|
+
//# sourceMappingURL=BackendCrudApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendCrudApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendCrudApi.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,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD;;;;;;;;;;GAUG;AACH,8BAAsB,cAAc,CAClC,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,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAChE,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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as uuid from "short-uuid";
|
|
2
|
-
import {
|
|
2
|
+
import { BackendStoreApi } from "./BackendStoreApi.js";
|
|
3
3
|
import { toDatesDeep, toTimestampsDeep, } from "@mxpicture/gcp-functions-common/helper";
|
|
4
4
|
/**
|
|
5
5
|
* Backend API providing standard CRUD operations for a document type.
|
|
6
6
|
*
|
|
7
7
|
* @remarks
|
|
8
|
-
* Extends {@link
|
|
8
|
+
* Extends {@link BackendStoreApi} and implements all routes defined by {@link CrudRoutes}.
|
|
9
9
|
* Delegates persistence to a {@link Store} and input validation to a {@link Validation} instance.
|
|
10
10
|
*
|
|
11
11
|
* @typeParam DTO - The document data transfer object type.
|
|
12
12
|
* @typeParam STORE - The store implementation used for persistence.
|
|
13
13
|
* @typeParam VAL - The validation implementation used for input validation.
|
|
14
14
|
*/
|
|
15
|
-
export class
|
|
15
|
+
export class BackendCrudApi extends BackendStoreApi {
|
|
16
16
|
// to be redefined
|
|
17
17
|
async processVirtualFields(doc) {
|
|
18
18
|
// default strip object
|
|
@@ -80,4 +80,4 @@ export class BackendCustomApi extends IBackendApi {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
//# sourceMappingURL=
|
|
83
|
+
//# sourceMappingURL=BackendCrudApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendCrudApi.js","sourceRoot":"","sources":["../../src/api/BackendCrudApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
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 {
|
|
4
|
+
import { BackendCrudApi } from "./BackendCrudApi.js";
|
|
5
5
|
/**
|
|
6
6
|
* Backend API providing standard CRUD operations for a document type.
|
|
7
7
|
*
|
|
8
8
|
* @remarks
|
|
9
|
-
* Extends {@link
|
|
9
|
+
* Extends {@link BackendStoreApi} and implements all routes defined by {@link CrudRoutes}.
|
|
10
10
|
* Delegates persistence to a {@link Store} and input validation to a {@link Validation} instance.
|
|
11
11
|
*
|
|
12
12
|
* @typeParam DTO - The document data transfer object type.
|
|
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
|
|
16
|
+
export declare abstract class BackendDefaultApi<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 BackendCrudApi<STORE_DOC, DTO, SIDE_EFFECTS, STORE, VAL> {
|
|
17
17
|
protected processVirtualFields(doc: DTO): Promise<STORE_DOC>;
|
|
18
18
|
/**
|
|
19
19
|
* Delete a document by its key.
|
|
@@ -82,4 +82,4 @@ export declare abstract class BackendApi<STORE_DOC extends DocumentKeyAdmin, DTO
|
|
|
82
82
|
changedPaths: string[];
|
|
83
83
|
}>;
|
|
84
84
|
}
|
|
85
|
-
//# sourceMappingURL=
|
|
85
|
+
//# sourceMappingURL=BackendDefaultApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendDefaultApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendDefaultApi.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,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,8BAAsB,iBAAiB,CACrC,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,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC;cAEvC,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;cAMrD,aAAa,CAC3B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GACxB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;KAAE,CAAC;cAOrC,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC;cAIJ,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EACzB,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAQrD"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BackendCrudApi } from "./BackendCrudApi.js";
|
|
2
2
|
/**
|
|
3
3
|
* Backend API providing standard CRUD operations for a document type.
|
|
4
4
|
*
|
|
5
5
|
* @remarks
|
|
6
|
-
* Extends {@link
|
|
6
|
+
* Extends {@link BackendStoreApi} and implements all routes defined by {@link CrudRoutes}.
|
|
7
7
|
* Delegates persistence to a {@link Store} and input validation to a {@link Validation} instance.
|
|
8
8
|
*
|
|
9
9
|
* @typeParam DTO - The document data transfer object type.
|
|
10
10
|
* @typeParam STORE - The store implementation used for persistence.
|
|
11
11
|
* @typeParam VAL - The validation implementation used for input validation.
|
|
12
12
|
*/
|
|
13
|
-
export class
|
|
13
|
+
export class BackendDefaultApi extends BackendCrudApi {
|
|
14
14
|
// to be redefined
|
|
15
15
|
async processVirtualFields(doc) {
|
|
16
16
|
// default strip object
|
|
@@ -105,4 +105,4 @@ export class BackendApi extends BackendCustomApi {
|
|
|
105
105
|
return { updated: await this.toDto(updated), changedPaths };
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
//# sourceMappingURL=
|
|
108
|
+
//# sourceMappingURL=BackendDefaultApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendDefaultApi.js","sourceRoot":"","sources":["../../src/api/BackendDefaultApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { DocumentData, DocumentKeyAdmin } from "@mxpicture/gcp-functions-common/types";
|
|
2
|
+
import type { Store } from "../store/Store.js";
|
|
3
|
+
import type { Validation } from "../validation/Validation.js";
|
|
4
|
+
import { BackendBaseApi } from "./BackendBaseApi.js";
|
|
5
|
+
/**
|
|
6
|
+
* Abstract base class for backend API implementations.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Provides dependency-injection points for a {@link Store} and {@link Validation} instance.
|
|
10
|
+
* Subclasses implement the concrete API methods while relying on the injected store and
|
|
11
|
+
* validation via {@link BackendStoreApi.useStore} and {@link BackendStoreApi.useValidation}.
|
|
12
|
+
*
|
|
13
|
+
* @typeParam DTO - The document data transfer object type.
|
|
14
|
+
* @typeParam STORE_DOC - The store document type.
|
|
15
|
+
* @typeParam STORE - The store implementation used for persistence.
|
|
16
|
+
* @typeParam VAL - The validation implementation used for input validation.
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class BackendStoreApi<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 BackendBaseApi<DTO, SIDE_EFFECTS, VAL> {
|
|
19
|
+
protected _store?: STORE;
|
|
20
|
+
/**
|
|
21
|
+
* Inject the store instance used for data persistence.
|
|
22
|
+
*
|
|
23
|
+
* @param store - The store to use for persistence operations.
|
|
24
|
+
*/
|
|
25
|
+
useStore(store: STORE): void;
|
|
26
|
+
/**
|
|
27
|
+
* Retrieve the injected store instance.
|
|
28
|
+
*
|
|
29
|
+
* @returns The store instance.
|
|
30
|
+
* @throws {@link Error} if no store has been provided via {@link useStore}.
|
|
31
|
+
*/
|
|
32
|
+
protected store(): STORE;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=BackendStoreApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendStoreApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendStoreApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EACjB,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,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,8BAAsB,eAAe,CACnC,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,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC;IAC9C,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAEzB;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAInC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,IAAI,KAAK;CAOzB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BackendBaseApi } from "./BackendBaseApi.js";
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for backend API implementations.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Provides dependency-injection points for a {@link Store} and {@link Validation} instance.
|
|
7
|
+
* Subclasses implement the concrete API methods while relying on the injected store and
|
|
8
|
+
* validation via {@link BackendStoreApi.useStore} and {@link BackendStoreApi.useValidation}.
|
|
9
|
+
*
|
|
10
|
+
* @typeParam DTO - The document data transfer object type.
|
|
11
|
+
* @typeParam STORE_DOC - The store document type.
|
|
12
|
+
* @typeParam STORE - The store implementation used for persistence.
|
|
13
|
+
* @typeParam VAL - The validation implementation used for input validation.
|
|
14
|
+
*/
|
|
15
|
+
export class BackendStoreApi extends BackendBaseApi {
|
|
16
|
+
_store;
|
|
17
|
+
/**
|
|
18
|
+
* Inject the store instance used for data persistence.
|
|
19
|
+
*
|
|
20
|
+
* @param store - The store to use for persistence operations.
|
|
21
|
+
*/
|
|
22
|
+
useStore(store) {
|
|
23
|
+
this._store = store;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Retrieve the injected store instance.
|
|
27
|
+
*
|
|
28
|
+
* @returns The store instance.
|
|
29
|
+
* @throws {@link Error} if no store has been provided via {@link useStore}.
|
|
30
|
+
*/
|
|
31
|
+
store() {
|
|
32
|
+
if (!this._store)
|
|
33
|
+
throw new Error(`${this.name}: store not provided. Use "useStore" method`);
|
|
34
|
+
return this._store;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=BackendStoreApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackendStoreApi.js","sourceRoot":"","sources":["../../src/api/BackendStoreApi.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAgB,eAMpB,SAAQ,cAAsC;IACpC,MAAM,CAAS;IAEzB;;;;OAIG;IACI,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACO,KAAK;QACb,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,IAAI,6CAA6C,CAC1D,CAAC;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
1
|
+
export * from "./BackendBaseApi.js";
|
|
2
|
+
export * from "./BackendCrudApi.js";
|
|
3
|
+
export * from "./BackendDefaultApi.js";
|
|
4
|
+
export * from "./BackendStoreApi.js";
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
package/dist/api/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// This file is auto-generated by build-cli. Do not edit manually.
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
2
|
+
export * from "./BackendBaseApi.js";
|
|
3
|
+
export * from "./BackendCrudApi.js";
|
|
4
|
+
export * from "./BackendDefaultApi.js";
|
|
5
|
+
export * from "./BackendStoreApi.js";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import type { DocumentData, DocumentKeyAdmin, FunctionRequest, FunctionResponse } from "@mxpicture/gcp-functions-common/types";
|
|
2
2
|
import type { CallableFunction, HttpsFunction } from "firebase-functions/v2/https";
|
|
3
3
|
import type { ExpressAuthHandler } from "../types/types.express.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { BackendBaseApi } from "../api/BackendBaseApi.js";
|
|
5
5
|
/**
|
|
6
6
|
* Abstract base class for Firebase callable backend functions.
|
|
7
7
|
*
|
|
8
8
|
* @remarks
|
|
9
|
-
* Encapsulates the wiring between an incoming callable request and a {@link
|
|
9
|
+
* Encapsulates the wiring between an incoming callable request and a {@link BackendDefaultApi}.
|
|
10
10
|
* Subclasses configure the API, routes, region, and service account, then call
|
|
11
11
|
* {@link IBackendFunction.buildFunction} to produce a deployable Cloud Function.
|
|
12
12
|
*
|
|
13
13
|
* @typeParam DTO - The document data transfer object type.
|
|
14
14
|
* @typeParam API - The backend API implementation that handles route logic.
|
|
15
15
|
*/
|
|
16
|
-
export declare abstract class IBackendFunction<STORE_DOC extends DocumentKeyAdmin, DTO extends STORE_DOC, SIDE_EFFECTS extends DocumentData, API extends
|
|
16
|
+
export declare abstract class IBackendFunction<STORE_DOC extends DocumentKeyAdmin, DTO extends STORE_DOC, SIDE_EFFECTS extends DocumentData, API extends BackendBaseApi<DTO, SIDE_EFFECTS>> {
|
|
17
17
|
readonly name: string;
|
|
18
18
|
readonly projectId: string;
|
|
19
19
|
readonly region: string;
|
|
20
20
|
readonly serviceAccount: string;
|
|
21
21
|
protected readonly datePaths: string[];
|
|
22
22
|
protected _api?: API;
|
|
23
|
-
protected _routes?: string[];
|
|
24
23
|
/**
|
|
25
24
|
* Create a new backend function instance.
|
|
26
25
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IBackendFunction.d.ts","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"IBackendFunction.d.ts","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,8BAAsB,gBAAgB,CACpC,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EACrB,YAAY,SAAS,YAAY,EACjC,GAAG,SAAS,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC;aAa3B,IAAI,EAAE,MAAM;aACZ,SAAS,EAAE,MAAM;aACjB,MAAM,EAAE,MAAM;aACd,cAAc,EAAE,MAAM;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;IAfxC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAErB;;;;;;;OAOG;gBAEe,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE;IAGxC,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAK7B;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE,GAAG,IAAI;IAIpE;;;;;OAKG;IACH,IAAW,GAAG,IAAI,GAAG,CAIpB;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,MAAM,EAAE,CAE5B;IAED;;;;;;;;;;;;;OAaG;IACU,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,YAAY,EAChD,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,EAC7B,eAAe,EAAE,OAAO,GACvB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAejC;;;;;;;;OAQG;IACI,qBAAqB,IAAI,gBAAgB,CAE9C,eAAe,CAAC,GAAG,CAAC,EAEpB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC/B;IAOD;;;;;;;;OAQG;IACI,kBAAkB,CACvB,IAAI,GAAE,kBAAkB,GAAG,IAAuB,GACjD,aAAa;CAwCjB"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { onCall, HttpsError, onRequest } from "firebase-functions/v2/https";
|
|
2
2
|
import express from "express";
|
|
3
|
-
import { toDatesDeep, toTimestampsDeep, } from "@mxpicture/gcp-functions-common/helper";
|
|
4
3
|
import { checkServiceAuth } from "../firebase/firebase.express.js";
|
|
5
4
|
/**
|
|
6
5
|
* Abstract base class for Firebase callable backend functions.
|
|
7
6
|
*
|
|
8
7
|
* @remarks
|
|
9
|
-
* Encapsulates the wiring between an incoming callable request and a {@link
|
|
8
|
+
* Encapsulates the wiring between an incoming callable request and a {@link BackendDefaultApi}.
|
|
10
9
|
* Subclasses configure the API, routes, region, and service account, then call
|
|
11
10
|
* {@link IBackendFunction.buildFunction} to produce a deployable Cloud Function.
|
|
12
11
|
*
|
|
@@ -20,7 +19,6 @@ export class IBackendFunction {
|
|
|
20
19
|
serviceAccount;
|
|
21
20
|
datePaths;
|
|
22
21
|
_api;
|
|
23
|
-
_routes;
|
|
24
22
|
/**
|
|
25
23
|
* Create a new backend function instance.
|
|
26
24
|
*
|
|
@@ -54,7 +52,7 @@ export class IBackendFunction {
|
|
|
54
52
|
* @param routes - An array of route names or a record whose values are route names.
|
|
55
53
|
*/
|
|
56
54
|
useRoutes(routes) {
|
|
57
|
-
this.
|
|
55
|
+
this.api.useRoutes(routes);
|
|
58
56
|
}
|
|
59
57
|
/**
|
|
60
58
|
* Retrieve the injected API instance.
|
|
@@ -74,9 +72,7 @@ export class IBackendFunction {
|
|
|
74
72
|
* @throws {@link Error} if no routes have been provided via {@link useRoutes}.
|
|
75
73
|
*/
|
|
76
74
|
get routes() {
|
|
77
|
-
|
|
78
|
-
throw new Error(`${this.name}: routes not provided. Use "useRoutes" method`);
|
|
79
|
-
return this._routes;
|
|
75
|
+
return this.api.routes;
|
|
80
76
|
}
|
|
81
77
|
/**
|
|
82
78
|
* Route an incoming function request to the appropriate API method.
|
|
@@ -95,15 +91,9 @@ export class IBackendFunction {
|
|
|
95
91
|
async ingress(request, isAuthenticated) {
|
|
96
92
|
if (!isAuthenticated)
|
|
97
93
|
throw new HttpsError("unauthenticated", "Sign-in required");
|
|
98
|
-
const routes = this.routes;
|
|
99
|
-
if (!routes.find((m) => m === request.route))
|
|
100
|
-
throw new HttpsError("invalid-argument", `Route ${request.route} not available`);
|
|
101
94
|
try {
|
|
102
|
-
const requestData = toDatesDeep(request.data, this.datePaths);
|
|
103
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
|
-
const payload = await this.api[request.route](requestData);
|
|
105
95
|
return {
|
|
106
|
-
data:
|
|
96
|
+
data: await this.api.ingress(request.route, request.data),
|
|
107
97
|
};
|
|
108
98
|
}
|
|
109
99
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IBackendFunction.js","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"IBackendFunction.js","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ZodError, type ZodObject, type ZodRawShape } from "zod";
|
|
2
|
-
import type { CreateInput,
|
|
2
|
+
import type { CreateInput, DocumentData, UpdateInput, ValidationResult } from "@mxpicture/gcp-functions-common/types";
|
|
3
3
|
/**
|
|
4
4
|
* Zod-based validation for document data transfer objects.
|
|
5
5
|
*
|
|
@@ -10,7 +10,7 @@ import type { CreateInput, DocumentKeyAdmin, UpdateInput, ValidationResult } fro
|
|
|
10
10
|
*
|
|
11
11
|
* @typeParam DTO - The document data transfer object type.
|
|
12
12
|
*/
|
|
13
|
-
export declare class Validation<DTO extends
|
|
13
|
+
export declare class Validation<DTO extends DocumentData> {
|
|
14
14
|
readonly name: string;
|
|
15
15
|
protected _createSchema?: ZodObject;
|
|
16
16
|
protected _updateSchema?: ZodObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/validation/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAEzE,OAAO,KAAK,EACV,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/validation/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAEzE,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAG/C;;;;;;;;;GASG;AACH,qBAAa,UAAU,CAAC,GAAG,SAAS,YAAY;aAYX,IAAI,EAAE,MAAM;IAX/C,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IACpC,SAAS,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IACpC,SAAS,CAAC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAC1C,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE/B;;;;OAIG;gBACgC,IAAI,EAAE,MAAM;IAE/C;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIzC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,IAAI,WAAW;IAQ9B;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,WAAW;IAOrC;;;;OAIG;IACH,SAAS,CAAC,YAAY,IAAI,SAAS;IAKnC;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,IAAI,SAAS;IAKnC;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,IAAI,SAAS;IAMzC,SAAS,CAAC,SAAS,IAAI,SAAS;IAKhC;;;;;;OAMG;IACI,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;IAW9D;;;;;;OAMG;IACI,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;IAW9D;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,gBAAgB;CAUvE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mxpicture/gcp-functions-backend",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.51",
|
|
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.3.
|
|
57
|
+
"@mxpicture/gcp-functions-common": "^1.3.51",
|
|
58
58
|
"express": "^5.2.1",
|
|
59
59
|
"firebase-admin": "^13.7.0",
|
|
60
60
|
"firebase-functions": "^7.0.6",
|
|
@@ -1 +0,0 @@
|
|
|
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;cAMrD,aAAa,CAC3B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GACxB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;KAAE,CAAC;cAOrC,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC;cAIJ,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,EACzB,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAQrD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BackendApi.js","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BackendCustomApi.js","sourceRoot":"","sources":["../../src/api/BackendCustomApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import type { DecoPropertyVirtual, DocumentData, DocumentKeyAdmin } from "@mxpicture/gcp-functions-common/types";
|
|
2
|
-
import type { Store } from "../store/Store.js";
|
|
3
|
-
import type { Validation } from "../validation/Validation.js";
|
|
4
|
-
/**
|
|
5
|
-
* Abstract base class for backend API implementations.
|
|
6
|
-
*
|
|
7
|
-
* @remarks
|
|
8
|
-
* Provides dependency-injection points for a {@link Store} and {@link Validation} instance.
|
|
9
|
-
* Subclasses implement the concrete API methods while relying on the injected store and
|
|
10
|
-
* validation via {@link IBackendApi.useStore} and {@link IBackendApi.useValidation}.
|
|
11
|
-
*
|
|
12
|
-
* @typeParam DTO - The document data transfer object type.
|
|
13
|
-
* @typeParam STORE_DOC - The store document type.
|
|
14
|
-
* @typeParam STORE - The store implementation used for persistence.
|
|
15
|
-
* @typeParam VAL - The validation implementation used for input validation.
|
|
16
|
-
*/
|
|
17
|
-
export declare abstract class IBackendApi<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>> {
|
|
18
|
-
readonly name: string;
|
|
19
|
-
protected readonly datePaths: string[];
|
|
20
|
-
protected readonly virtuals: DecoPropertyVirtual[];
|
|
21
|
-
protected readonly sideEffects: string[];
|
|
22
|
-
protected _store?: STORE;
|
|
23
|
-
protected _validation?: VAL;
|
|
24
|
-
protected _functionUrl?: string;
|
|
25
|
-
/**
|
|
26
|
-
* Create a new backend API instance.
|
|
27
|
-
*
|
|
28
|
-
* @param name - A descriptive name for this API, used in error messages.
|
|
29
|
-
* @param datePaths - JSON paths within the response payload that contain date values to convert to Firestore Timestamps.
|
|
30
|
-
*/
|
|
31
|
-
constructor(name: string, datePaths: string[], virtuals: DecoPropertyVirtual[], sideEffects: string[]);
|
|
32
|
-
useFunctionUrl(url: string): void;
|
|
33
|
-
get functionUrl(): string;
|
|
34
|
-
/**
|
|
35
|
-
* Inject the store instance used for data persistence.
|
|
36
|
-
*
|
|
37
|
-
* @param store - The store to use for persistence operations.
|
|
38
|
-
*/
|
|
39
|
-
useStore(store: STORE): void;
|
|
40
|
-
/**
|
|
41
|
-
* Inject the validation instance used for input validation.
|
|
42
|
-
*
|
|
43
|
-
* @param validation - The validation to use for input checking.
|
|
44
|
-
*/
|
|
45
|
-
useValidation(validation: VAL): void;
|
|
46
|
-
/**
|
|
47
|
-
* Retrieve the injected store instance.
|
|
48
|
-
*
|
|
49
|
-
* @returns The store instance.
|
|
50
|
-
* @throws {@link Error} if no store has been provided via {@link useStore}.
|
|
51
|
-
*/
|
|
52
|
-
protected store(): STORE;
|
|
53
|
-
/**
|
|
54
|
-
* Retrieve the injected validation instance.
|
|
55
|
-
*
|
|
56
|
-
* @returns The validation instance.
|
|
57
|
-
* @throws {@link Error} if no validation has been provided via {@link useValidation}.
|
|
58
|
-
*/
|
|
59
|
-
protected validation(): VAL;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=IBackendApi.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IBackendApi.d.ts","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,8BAAsB,WAAW,CAC/B,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EAErB,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;aAa3B,IAAI,EAAE,MAAM;IAC5B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;IACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,EAAE;IAClD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;IAd1C,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACzB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAC5B,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;OAKG;gBAEe,IAAI,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,WAAW,EAAE,MAAM,EAAE;IAGnC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxC,IAAW,WAAW,IAAI,MAAM,CAG/B;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAInC;;;;OAIG;IACI,aAAa,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAI3C;;;;;OAKG;IACH,SAAS,CAAC,KAAK,IAAI,KAAK;IAQxB;;;;;OAKG;IACH,SAAS,CAAC,UAAU,IAAI,GAAG;CAO5B"}
|
package/dist/api/IBackendApi.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Abstract base class for backend API implementations.
|
|
3
|
-
*
|
|
4
|
-
* @remarks
|
|
5
|
-
* Provides dependency-injection points for a {@link Store} and {@link Validation} instance.
|
|
6
|
-
* Subclasses implement the concrete API methods while relying on the injected store and
|
|
7
|
-
* validation via {@link IBackendApi.useStore} and {@link IBackendApi.useValidation}.
|
|
8
|
-
*
|
|
9
|
-
* @typeParam DTO - The document data transfer object type.
|
|
10
|
-
* @typeParam STORE_DOC - The store document type.
|
|
11
|
-
* @typeParam STORE - The store implementation used for persistence.
|
|
12
|
-
* @typeParam VAL - The validation implementation used for input validation.
|
|
13
|
-
*/
|
|
14
|
-
export class IBackendApi {
|
|
15
|
-
name;
|
|
16
|
-
datePaths;
|
|
17
|
-
virtuals;
|
|
18
|
-
sideEffects;
|
|
19
|
-
_store;
|
|
20
|
-
_validation;
|
|
21
|
-
_functionUrl;
|
|
22
|
-
/**
|
|
23
|
-
* Create a new backend API instance.
|
|
24
|
-
*
|
|
25
|
-
* @param name - A descriptive name for this API, used in error messages.
|
|
26
|
-
* @param datePaths - JSON paths within the response payload that contain date values to convert to Firestore Timestamps.
|
|
27
|
-
*/
|
|
28
|
-
constructor(name, datePaths, virtuals, sideEffects) {
|
|
29
|
-
this.name = name;
|
|
30
|
-
this.datePaths = datePaths;
|
|
31
|
-
this.virtuals = virtuals;
|
|
32
|
-
this.sideEffects = sideEffects;
|
|
33
|
-
}
|
|
34
|
-
useFunctionUrl(url) {
|
|
35
|
-
this._functionUrl = url;
|
|
36
|
-
}
|
|
37
|
-
get functionUrl() {
|
|
38
|
-
if (!this._functionUrl)
|
|
39
|
-
throw new Error(`No Url provided. ${this.name}`);
|
|
40
|
-
return this._functionUrl;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Inject the store instance used for data persistence.
|
|
44
|
-
*
|
|
45
|
-
* @param store - The store to use for persistence operations.
|
|
46
|
-
*/
|
|
47
|
-
useStore(store) {
|
|
48
|
-
this._store = store;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Inject the validation instance used for input validation.
|
|
52
|
-
*
|
|
53
|
-
* @param validation - The validation to use for input checking.
|
|
54
|
-
*/
|
|
55
|
-
useValidation(validation) {
|
|
56
|
-
this._validation = validation;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Retrieve the injected store instance.
|
|
60
|
-
*
|
|
61
|
-
* @returns The store instance.
|
|
62
|
-
* @throws {@link Error} if no store has been provided via {@link useStore}.
|
|
63
|
-
*/
|
|
64
|
-
store() {
|
|
65
|
-
if (!this._store)
|
|
66
|
-
throw new Error(`${this.name}: store not provided. Use "useStore" method`);
|
|
67
|
-
return this._store;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Retrieve the injected validation instance.
|
|
71
|
-
*
|
|
72
|
-
* @returns The validation instance.
|
|
73
|
-
* @throws {@link Error} if no validation has been provided via {@link useValidation}.
|
|
74
|
-
*/
|
|
75
|
-
validation() {
|
|
76
|
-
if (!this._validation)
|
|
77
|
-
throw new Error(`${this.name}: validation not provided. Use "useValidation" method`);
|
|
78
|
-
return this._validation;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=IBackendApi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IBackendApi.js","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAgB,WAAW;IAmBb;IACG;IACA;IACA;IAdX,MAAM,CAAS;IACf,WAAW,CAAO;IAClB,YAAY,CAAU;IAEhC;;;;;OAKG;IACH,YACkB,IAAY,EACT,SAAmB,EACnB,QAA+B,EAC/B,WAAqB;QAHxB,SAAI,GAAJ,IAAI,CAAQ;QACT,cAAS,GAAT,SAAS,CAAU;QACnB,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,gBAAW,GAAX,WAAW,CAAU;IACvC,CAAC;IAEG,cAAc,CAAC,GAAW;QAC/B,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED,IAAW,WAAW;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAY;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,UAAe;QAClC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACO,KAAK;QACb,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,IAAI,6CAA6C,CAC1D,CAAC;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACO,UAAU;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,CAAC,IAAI,uDAAuD,CACpE,CAAC;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|