@mxpicture/gcp-functions-backend 1.1.9 → 1.1.11

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 +1 @@
1
- {"version":3,"file":"BackendApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,qBAAa,UAAU,CACnB,GAAG,SAAS,YAAY,EACxB,KAAK,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EACrC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAE/C,SAAQ,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CACnC,YAAW,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEzC;;;;;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,OAAO,CAAC,GAAG,CAAC,CAAC;IAI7D;;;;;OAKG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAIvE;;;;;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,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAKpE;;;;;;OAMG;IACU,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAI3E"}
1
+ {"version":3,"file":"BackendApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;;;;;GAUG;AACH,qBAAa,UAAU,CACrB,GAAG,SAAS,YAAY,EACxB,KAAK,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EACrC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAE7C,SAAQ,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CACnC,YAAW,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEzC;;;;;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,OAAO,CAAC,GAAG,CAAC,CAAC;IAI7D;;;;;OAKG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAKvE;;;;;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,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAKpE;;;;;;OAMG;IACU,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAO3E"}
@@ -1,4 +1,5 @@
1
1
  import { IBackendApi } from "./IBackendApi.js";
2
+ import { tmpToDatesDeep } from "./tmp.date.js";
2
3
  /**
3
4
  * Backend API providing standard CRUD operations for a document type.
4
5
  *
@@ -28,7 +29,7 @@ export class BackendApi extends IBackendApi {
28
29
  * @returns The document including its key metadata.
29
30
  */
30
31
  async get(request) {
31
- return this.store().get(request.id);
32
+ return tmpToDatesDeep(this.store().get(request.id), this.datePaths);
32
33
  }
33
34
  /**
34
35
  * Query documents with optional filters.
@@ -37,7 +38,8 @@ export class BackendApi extends IBackendApi {
37
38
  * @returns An array of documents matching the filter criteria.
38
39
  */
39
40
  async query(request) {
40
- return this.store().query(request?.filters);
41
+ const items = await this.store().query(request?.filters);
42
+ return tmpToDatesDeep(items, this.datePaths);
41
43
  }
42
44
  /**
43
45
  * Count documents matching optional filter criteria.
@@ -66,7 +68,7 @@ export class BackendApi extends IBackendApi {
66
68
  */
67
69
  async create(request) {
68
70
  const result = this.validation().validate(request);
69
- return this.store().create(result);
71
+ return tmpToDatesDeep(this.store().create(result), this.datePaths);
70
72
  }
71
73
  /**
72
74
  * Update an existing document after validating the partial input.
@@ -77,7 +79,7 @@ export class BackendApi extends IBackendApi {
77
79
  */
78
80
  async update(request) {
79
81
  const result = this.validation().validatePartial(request);
80
- return this.store().update(request.id, result);
82
+ return tmpToDatesDeep(this.store().update(request.id, result), this.datePaths);
81
83
  }
82
84
  }
83
85
  //# sourceMappingURL=BackendApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BackendApi.js","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,UAKX,SAAQ,WAA4B;IAGpC;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,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;IACI,KAAK,CAAC,GAAG,CAAC,OAAoB;QACnC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,OAA0B;QAC3C,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,OAA0B;QAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,OAAwB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,OAA8B;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"BackendApi.js","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,UAKX,SAAQ,WAA4B;IAGpC;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,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;IACI,KAAK,CAAC,GAAG,CAAC,OAAoB;QACnC,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,OAA0B;QAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAAC,OAA0B;QAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,OAAoB;QACtC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,OAAwB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,OAA8B;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1D,OAAO,cAAc,CACnB,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,EACvC,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF"}
@@ -15,14 +15,16 @@ import type { Validation } from "../validation/Validation.js";
15
15
  */
16
16
  export declare abstract class IBackendApi<DTO extends DocumentData, STORE extends Store<DTO> = Store<DTO>, VAL extends Validation<DTO> = Validation<DTO>> {
17
17
  readonly name: string;
18
+ protected readonly datePaths: string[];
18
19
  protected _store?: STORE;
19
20
  protected _validation?: VAL;
20
21
  /**
21
22
  * Create a new backend API instance.
22
23
  *
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.
24
26
  */
25
- constructor(name: string);
27
+ constructor(name: string, datePaths: string[]);
26
28
  /**
27
29
  * Inject the store instance used for data persistence.
28
30
  *
@@ -1 +1 @@
1
- {"version":3,"file":"IBackendApi.d.ts","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,8BAAsB,WAAW,CAC/B,GAAG,SAAS,YAAY,EACxB,KAAK,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EACrC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;aAUV,IAAI,EAAE,MAAM;IAR/C,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACzB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAE5B;;;;OAIG;gBACgC,IAAI,EAAE,MAAM;IAE/C;;;;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"}
1
+ {"version":3,"file":"IBackendApi.d.ts","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,8BAAsB,WAAW,CAC/B,GAAG,SAAS,YAAY,EACxB,KAAK,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EACrC,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;aAY3B,IAAI,EAAE,MAAM;IAC5B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;IAXxC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACzB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAE5B;;;;;OAKG;gBAEe,IAAI,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EAAE;IAGxC;;;;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"}
@@ -12,15 +12,18 @@
12
12
  */
13
13
  export class IBackendApi {
14
14
  name;
15
+ datePaths;
15
16
  _store;
16
17
  _validation;
17
18
  /**
18
19
  * Create a new backend API instance.
19
20
  *
20
21
  * @param name - A descriptive name for this API, used in error messages.
22
+ * @param datePaths - JSON paths within the response payload that contain date values to convert to Firestore Timestamps.
21
23
  */
22
- constructor(name) {
24
+ constructor(name, datePaths) {
23
25
  this.name = name;
26
+ this.datePaths = datePaths;
24
27
  }
25
28
  /**
26
29
  * Inject the store instance used for data persistence.
@@ -1 +1 @@
1
- {"version":3,"file":"IBackendApi.js","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,WAAW;IAaI;IARzB,MAAM,CAAS;IACf,WAAW,CAAO;IAE5B;;;;OAIG;IACH,YAAmC,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAEnD;;;;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"}
1
+ {"version":3,"file":"IBackendApi.js","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,WAAW;IAeb;IACG;IAXX,MAAM,CAAS;IACf,WAAW,CAAO;IAE5B;;;;;OAKG;IACH,YACkB,IAAY,EACT,SAAmB;QADtB,SAAI,GAAJ,IAAI,CAAQ;QACT,cAAS,GAAT,SAAS,CAAU;IACrC,CAAC;IAEJ;;;;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"}
@@ -1,3 +1,4 @@
1
1
  export * from "./BackendApi.js";
2
2
  export * from "./IBackendApi.js";
3
+ export * from "./tmp.date.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,kBAAkB,CAAC;AACjC,cAAc,eAAe,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
3
  export * from "./IBackendApi.js";
4
+ export * from "./tmp.date.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,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Deeply converts Firestore timestamp fields to JavaScript `Date` objects.
3
+ *
4
+ * @remarks
5
+ * Path segments are separated by "/" and a wildcard may be used
6
+ * to iterate over array elements (e.g. "items/{wildcard}/createdAt").
7
+ *
8
+ * @param data - The data structure to transform (cloned before mutation).
9
+ * @param paths - Slash-delimited paths to fields that should be converted.
10
+ * @returns A deep clone of `data` with the targeted fields converted to `Date`.
11
+ */
12
+ export declare const tmpToDatesDeep: <T>(data: T, paths: string[]) => T;
13
+ /**
14
+ * Deeply converts date-like fields to raw {@link FirebaseTimestampRaw} objects.
15
+ *
16
+ * @remarks
17
+ * Accepts JavaScript `Date` objects, numeric millisecond values, and Firestore
18
+ * document objects with `_seconds`/`_nanoseconds` fields. Path segments follow
19
+ * the same convention as {@link toDatesDeep}.
20
+ *
21
+ * @param data - The data structure to transform (cloned before mutation).
22
+ * @param paths - Slash-delimited paths to fields that should be converted.
23
+ * @returns A deep clone of `data` with the targeted fields converted to {@link FirebaseTimestampRaw}.
24
+ */
25
+ export declare const tmpToTimestampsDeep: <T>(data: T, paths: string[]) => T;
26
+ //# sourceMappingURL=tmp.date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmp.date.d.ts","sourceRoot":"","sources":["../../src/api/tmp.date.ts"],"names":[],"mappings":"AA8DA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,EAAE,KAAG,CAClB,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,MAAM,EAAE,KAAG,CAClB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { FirebaseTimestamp, } from "@mxpicture/gcp-functions-common/helper";
2
+ const _normalizeDate = (value) => !value
3
+ ? value
4
+ : typeof value?.toDate === "function"
5
+ ? value.toDate()
6
+ : value?._seconds !== undefined
7
+ ? new Date(value._seconds * 1000 + value._nanoseconds / 1e6)
8
+ : typeof value === "string"
9
+ ? new Date(value)
10
+ : value;
11
+ const _normalizeTimestamp = (value) => {
12
+ if (value instanceof Date)
13
+ return FirebaseTimestamp.fromDate(value).raw;
14
+ if (typeof value === "number")
15
+ return FirebaseTimestamp.fromMillis(value).raw;
16
+ if (typeof value === "object")
17
+ return FirebaseTimestamp.fromDoc(value)?.raw ?? null;
18
+ if (typeof value === "string")
19
+ return FirebaseTimestamp.fromIso(value).raw;
20
+ return null;
21
+ };
22
+ const _applyPath = (
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ obj, pathParts, convert) => {
25
+ if (!obj)
26
+ return;
27
+ const [current, ...rest] = pathParts;
28
+ if (current === "*") {
29
+ if (Array.isArray(obj))
30
+ for (const item of obj)
31
+ _applyPath(item, rest, convert);
32
+ return;
33
+ }
34
+ if (rest.length === 0) {
35
+ if (obj[current] !== undefined)
36
+ obj[current] = convert(obj[current]);
37
+ return;
38
+ }
39
+ _applyPath(obj[current], rest, convert);
40
+ };
41
+ const _convertDeep = (data, paths, convert) => {
42
+ if (Array.isArray(data))
43
+ return data.map((item) => _convertDeep(item, paths, convert));
44
+ const clone = structuredClone(data);
45
+ for (const path of paths)
46
+ _applyPath(clone, path.split("/"), convert);
47
+ return clone;
48
+ };
49
+ /**
50
+ * Deeply converts Firestore timestamp fields to JavaScript `Date` objects.
51
+ *
52
+ * @remarks
53
+ * Path segments are separated by "/" and a wildcard may be used
54
+ * to iterate over array elements (e.g. "items/{wildcard}/createdAt").
55
+ *
56
+ * @param data - The data structure to transform (cloned before mutation).
57
+ * @param paths - Slash-delimited paths to fields that should be converted.
58
+ * @returns A deep clone of `data` with the targeted fields converted to `Date`.
59
+ */
60
+ export const tmpToDatesDeep = (data, paths) => _convertDeep(data, paths, _normalizeDate);
61
+ /**
62
+ * Deeply converts date-like fields to raw {@link FirebaseTimestampRaw} objects.
63
+ *
64
+ * @remarks
65
+ * Accepts JavaScript `Date` objects, numeric millisecond values, and Firestore
66
+ * document objects with `_seconds`/`_nanoseconds` fields. Path segments follow
67
+ * the same convention as {@link toDatesDeep}.
68
+ *
69
+ * @param data - The data structure to transform (cloned before mutation).
70
+ * @param paths - Slash-delimited paths to fields that should be converted.
71
+ * @returns A deep clone of `data` with the targeted fields converted to {@link FirebaseTimestampRaw}.
72
+ */
73
+ export const tmpToTimestampsDeep = (data, paths) => _convertDeep(data, paths, _normalizeTimestamp);
74
+ //# sourceMappingURL=tmp.date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmp.date.js","sourceRoot":"","sources":["../../src/api/tmp.date.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxpicture/gcp-functions-backend",
3
- "version": "1.1.9",
3
+ "version": "1.1.11",
4
4
  "description": "Utils for google cloud functions, publishing both CommonJS and ESM builds",
5
5
  "type": "module",
6
6
  "author": "MXPicture",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@mxpicture/gcp-functions-common": "^1.1.9",
36
+ "@mxpicture/gcp-functions-common": "^1.1.11",
37
37
  "firebase-admin": "^13.7.0",
38
38
  "firebase-functions": "^7.0.6",
39
39
  "short-uuid": "^6.0.3",