Skip to content

Commit c72543a

Browse files
committed
chore: update package versions and changelogs for better-auth, cli, and fmodata; enhance date handling in fmodata to accept Date objects
1 parent 7273a8b commit c72543a

File tree

13 files changed

+106
-18
lines changed

13 files changed

+106
-18
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@proofkit/fmodata": patch
3+
---
4+
5+
Allow Date objects as the second parameter for date, time, and timestamp filter operators (eq, ne, gt, gte, lt, lte). Date values are serialized to OData-friendly ISO strings (YYYY-MM-DD for date, HH:mm:ss for time, full ISO 8601 for timestamp).

.changeset/pre.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
"fix-navigate-useentityids",
2828
"fix-typegen-431-error",
2929
"fix-typegen-auth-detection",
30+
"fix-typegen-boolean-validator-duplication",
31+
"fmodata-date-filter-date-param",
3032
"get-query-string-entity-ids-override",
3133
"happy-rocks-watch",
3234
"list-tables-post",

packages/better-auth/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @proofkit/better-auth
22

3+
## 0.4.0-beta.6
4+
5+
### Patch Changes
6+
7+
- Updated dependencies
8+
- @proofkit/fmodata@0.1.0-beta.29
9+
310
## 0.4.0-beta.5
411

512
### Patch Changes

packages/better-auth/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@proofkit/better-auth",
3-
"version": "0.4.0-beta.5",
3+
"version": "0.4.0-beta.6",
44
"description": "FileMaker adapter for Better Auth",
55
"type": "module",
66
"main": "dist/esm/index.js",

packages/cli/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# @proofgeist/kit
22

3+
## 2.0.0-beta.18
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [4928637]
8+
- @proofkit/typegen@1.1.0-beta.13
9+
310
## 2.0.0-beta.17
411

512
### Patch Changes

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@proofkit/cli",
3-
"version": "2.0.0-beta.17",
3+
"version": "2.0.0-beta.18",
44
"description": "Create web application with the ProofKit stack",
55
"license": "MIT",
66
"repository": {

packages/fmodata/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# @proofkit/fmodata
22

3+
## 0.1.0-beta.29
4+
5+
### Patch Changes
6+
7+
- Allow Date objects as the second parameter for date, time, and timestamp filter operators (eq, ne, gt, gte, lt, lte). Date values are serialized to OData-friendly ISO strings (YYYY-MM-DD for date, HH:mm:ss for time, full ISO 8601 for timestamp).
8+
39
## 0.1.0-beta.28
410

511
### Patch Changes

packages/fmodata/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@proofkit/fmodata",
3-
"version": "0.1.0-beta.28",
3+
"version": "0.1.0-beta.29",
44
"description": "FileMaker OData API client",
55
"repository": "git@github.com:proofgeist/proofkit.git",
66
"author": "Eric <37158449+eluce2@users.noreply.github.com>",

packages/fmodata/src/orm/field-builders.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -185,39 +185,42 @@ export function numberField(): FieldBuilder<number | null, number | null, number
185185

186186
/**
187187
* Create a date field (Edm.Date in FileMaker OData).
188-
* By default, date fields are nullable and represented as ISO date strings (YYYY-MM-DD).
188+
* By default, date fields are nullable and represented as ISO date strings (YYYY-MM-DD),
189+
* while accepting either ISO strings or Date objects as input.
189190
*
190191
* @example
191-
* dateField() // string | null (ISO date format)
192+
* dateField() // output: string | null (ISO date format), input: string | Date | null
192193
* dateField().notNull() // string
193194
*/
194-
export function dateField(): FieldBuilder<string | null, string | null, string | null, false> {
195-
return new FieldBuilder<string | null, string | null, string | null, false>("date");
195+
export function dateField(): FieldBuilder<string | null, string | Date | null, string | null, false> {
196+
return new FieldBuilder<string | null, string | Date | null, string | null, false>("date");
196197
}
197198

198199
/**
199200
* Create a time field (Edm.TimeOfDay in FileMaker OData).
200-
* By default, time fields are nullable and represented as ISO time strings (HH:mm:ss).
201+
* By default, time fields are nullable and represented as ISO time strings (HH:mm:ss),
202+
* while accepting either ISO strings or Date objects as input.
201203
*
202204
* @example
203-
* timeField() // string | null (ISO time format)
205+
* timeField() // output: string | null (ISO time format), input: string | Date | null
204206
* timeField().notNull() // string
205207
*/
206-
export function timeField(): FieldBuilder<string | null, string | null, string | null, false> {
207-
return new FieldBuilder<string | null, string | null, string | null, false>("time");
208+
export function timeField(): FieldBuilder<string | null, string | Date | null, string | null, false> {
209+
return new FieldBuilder<string | null, string | Date | null, string | null, false>("time");
208210
}
209211

210212
/**
211213
* Create a timestamp field (Edm.DateTimeOffset in FileMaker OData).
212-
* By default, timestamp fields are nullable and represented as ISO 8601 strings.
214+
* By default, timestamp fields are nullable and represented as ISO 8601 strings,
215+
* while accepting either ISO strings or Date objects as input.
213216
*
214217
* @example
215-
* timestampField() // string | null (ISO 8601 format)
218+
* timestampField() // output: string | null (ISO 8601 format), input: string | Date | null
216219
* timestampField().notNull() // string
217220
* timestampField().readOnly() // typical for CreationTimestamp
218221
*/
219-
export function timestampField(): FieldBuilder<string | null, string | null, string | null, false> {
220-
return new FieldBuilder<string | null, string | null, string | null, false>("timestamp");
222+
export function timestampField(): FieldBuilder<string | null, string | Date | null, string | null, false> {
223+
return new FieldBuilder<string | null, string | Date | null, string | null, false>("timestamp");
221224
}
222225

223226
/**

packages/fmodata/src/orm/operators.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,19 @@ export class FilterExpression {
147147
throw new Error("NOT operator requires a FilterExpression operand");
148148
}
149149

150+
private _formatTemporalValue(value: unknown, fieldType: "date" | "time" | "timestamp"): string {
151+
if (!(value instanceof Date)) {
152+
return String(value);
153+
}
154+
if (fieldType === "date") {
155+
return value.toISOString().slice(0, 10);
156+
}
157+
if (fieldType === "time") {
158+
return value.toISOString().slice(11, 19);
159+
}
160+
return value.toISOString();
161+
}
162+
150163
private _operandToString(
151164
// biome-ignore lint/suspicious/noExplicitAny: Operand can be Column, FilterExpression, or any value type
152165
operand: any,
@@ -187,10 +200,11 @@ export class FilterExpression {
187200
}
188201
}
189202

190-
// Date/time/timestamp values must be unquoted in OData filters
203+
// Date/time/timestamp values must be unquoted in OData filters.
204+
// Date objects are normalized to OData-friendly ISO fragments by field type.
191205
const ft = column?.fieldType;
192206
if (ft === "date" || ft === "time" || ft === "timestamp") {
193-
return String(value);
207+
return this._formatTemporalValue(value, ft);
194208
}
195209

196210
if (typeof value === "string") {

0 commit comments

Comments
 (0)