firetender-admin 0.17.9 → 0.17.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.
@@ -9,8 +9,9 @@ export declare const timestampSchema: z.ZodType<Timestamp, z.ZodTypeDef, Timesta
9
9
  * Timestamp representation used by Firestore: seconds and nanoseconds since the
10
10
  * epoch.
11
11
  *
12
- * This schema is for server-generated timestamps, which are null when first
13
- * reported to the listener.
12
+ * This schema allows the safe use of server-generated timestamps, which are set
13
+ * to `{ _methodName: "serverTimestamp" }` by the client, then initially set to
14
+ * `null` by Firestore. In these cases, a current timestamp is substituted.
14
15
  */
15
16
  export declare const serverTimestampSchema: z.ZodEffects<z.ZodType<Timestamp, z.ZodTypeDef, Timestamp>, Timestamp, unknown>;
16
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"timestamps.d.ts","sourceRoot":"","sources":["../src/timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAGL,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,eAAe,+CAK1B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,iFAGjC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,SAAS,CAQZ;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAE3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,IAAI,SAAS,CAYzD"}
1
+ {"version":3,"file":"timestamps.d.ts","sourceRoot":"","sources":["../src/timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAGL,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,eAAe,+CAK1B,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,iFAGjC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,SAAS,CAQZ;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAE3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,IAAI,SAAS,CAYzD"}
@@ -15,10 +15,11 @@ export const timestampSchema = z.custom((data) => {
15
15
  * Timestamp representation used by Firestore: seconds and nanoseconds since the
16
16
  * epoch.
17
17
  *
18
- * This schema is for server-generated timestamps, which are null when first
19
- * reported to the listener.
18
+ * This schema allows the safe use of server-generated timestamps, which are set
19
+ * to `{ _methodName: "serverTimestamp" }` by the client, then initially set to
20
+ * `null` by Firestore. In these cases, a current timestamp is substituted.
20
21
  */
21
- export const serverTimestampSchema = z.preprocess((data) => data ?? Timestamp.now(), timestampSchema);
22
+ export const serverTimestampSchema = z.preprocess((data) => (!data || isServerTimestamp(data) ? Timestamp.now() : data), timestampSchema);
22
23
  /**
23
24
  * Returns a Firestore Timestamp for some future date. The result is typically
24
25
  * used for writing TTLs.
@@ -1 +1 @@
1
- {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../src/timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,eAAe,IAAI,wBAAwB,EAC3C,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAY,CAAC,IAAS,EAAE,EAAE;IAC/D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,kBAAkB,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,YAAY,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAC/C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,EAAE,EACjC,eAAe,CAChB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,QAM/B;IACC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,QAAQ,CAAC,IAAI;QAAE,SAAS,IAAI,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACpE,IAAI,QAAQ,CAAC,KAAK;QAAE,SAAS,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACjE,IAAI,QAAQ,CAAC,OAAO;QAAE,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;IAChE,IAAI,QAAQ,CAAC,OAAO;QAAE,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM;QAAE,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;IAClD,OAAO,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,wBAAwB,EAAe,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B;IAC3C,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClC,QAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,QAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,QAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,QAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,+DAA+D;IAC/D,iFAAiF;IACjF,sEAAsE;IACtE,OAAO,QAAqB,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../src/timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,eAAe,IAAI,wBAAwB,EAC3C,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAY,CAAC,IAAS,EAAE,EAAE;IAC/D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,kBAAkB,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,YAAY,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAC/C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACrE,eAAe,CAChB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,QAM/B;IACC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,QAAQ,CAAC,IAAI;QAAE,SAAS,IAAI,QAAQ,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACpE,IAAI,QAAQ,CAAC,KAAK;QAAE,SAAS,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACjE,IAAI,QAAQ,CAAC,OAAO;QAAE,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;IAChE,IAAI,QAAQ,CAAC,OAAO;QAAE,SAAS,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM;QAAE,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;IAClD,OAAO,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,wBAAwB,EAAe,CAAC;AACjD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B;IAC3C,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClC,QAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7D,QAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3D,QAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,QAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,+DAA+D;IAC/D,iFAAiF;IACjF,sEAAsE;IACtE,OAAO,QAAqB,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "firetender-admin",
3
3
  "displayName": "Firetender (for firebase-admin/firestore)",
4
4
  "description": "Typescript wrapper for Firestore documents",
5
- "version": "0.17.9",
5
+ "version": "0.17.11",
6
6
  "author": "Jake Hartman",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/jakes-space/firetender",
@@ -25,31 +25,31 @@
25
25
  "./src/*.ts"
26
26
  ],
27
27
  "dependencies": {
28
- "firebase-admin": "^13.4.0",
28
+ "firebase-admin": "^13.5.0",
29
29
  "zod": "^3.25.76"
30
30
  },
31
31
  "devDependencies": {
32
- "@eslint/js": "^9.32.0",
32
+ "@eslint/js": "^9.34.0",
33
33
  "@firebase/rules-unit-testing": "^4.0.1",
34
34
  "@rushstack/eslint-patch": "^1.12.0",
35
35
  "@types/jest": "^30.0.0",
36
- "eslint": "^9.32.0",
36
+ "eslint": "^9.34.0",
37
37
  "eslint-import-resolver-typescript": "^4.4.4",
38
38
  "eslint-plugin-import": "^2.32.0",
39
- "eslint-plugin-prettier": "^5.5.3",
39
+ "eslint-plugin-prettier": "^5.5.4",
40
40
  "eslint-plugin-simple-import-sort": "^12.1.1",
41
41
  "firebase": "^11.10.0",
42
- "firebase-tools": "^14.11.1",
42
+ "firebase-tools": "^14.15.1",
43
43
  "gh": "^2.8.9",
44
44
  "globals": "^16.3.0",
45
45
  "husky": "^9.1.7",
46
- "jest": "^30.0.5",
46
+ "jest": "^30.1.3",
47
47
  "prettier": "^3.6.2",
48
- "ts-jest": "^29.4.0",
48
+ "ts-jest": "^29.4.1",
49
49
  "ts-node": "^10.9.2",
50
50
  "tslib": "^2.8.1",
51
- "typescript": "^5.8.3",
52
- "typescript-eslint": "^8.38.0"
51
+ "typescript": "^5.9.2",
52
+ "typescript-eslint": "^8.42.0"
53
53
  },
54
54
  "scripts": {
55
55
  "preinstall": "npx only-allow pnpm",
package/src/timestamps.ts CHANGED
@@ -22,11 +22,12 @@ export const timestampSchema = z.custom<Timestamp>((data: any) => {
22
22
  * Timestamp representation used by Firestore: seconds and nanoseconds since the
23
23
  * epoch.
24
24
  *
25
- * This schema is for server-generated timestamps, which are null when first
26
- * reported to the listener.
25
+ * This schema allows the safe use of server-generated timestamps, which are set
26
+ * to `{ _methodName: "serverTimestamp" }` by the client, then initially set to
27
+ * `null` by Firestore. In these cases, a current timestamp is substituted.
27
28
  */
28
29
  export const serverTimestampSchema = z.preprocess(
29
- (data) => data ?? Timestamp.now(),
30
+ (data) => (!data || isServerTimestamp(data) ? Timestamp.now() : data),
30
31
  timestampSchema,
31
32
  );
32
33