Skip to content

Commit 73ed605

Browse files
committed
New seralizable check too strict, should allow returning Dates from hook
1 parent 42f399a commit 73ed605

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const isSerializable = (obj: Record<any, any>): boolean => {
3030
typeof val === "string" ||
3131
typeof val === "boolean" ||
3232
typeof val === "number" ||
33+
val.constructor === Date ||
3334
Array.isArray(val) ||
3435
isPlainObject(val)
3536
)

src/tests/hooks.test.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,25 +125,35 @@ test("beforeTemplateIsBaked (propagates error that isn't serializable)", async (
125125
})
126126

127127
test("beforeTemplateIsBaked (result isn't serializable)", async (t) => {
128-
const getTestServer = getTestPostgresDatabaseFactory({
128+
type HookReturn = {
129+
type: "function" | "date"
130+
}
131+
132+
const getTestServer = getTestPostgresDatabaseFactory<HookReturn>({
129133
postgresVersion: process.env.POSTGRES_VERSION,
130134
workerDedupeKey: "beforeTemplateIsBakedHookNonSerializable",
131-
beforeTemplateIsBaked: async () => {
135+
beforeTemplateIsBaked: async ({ params: { type } }) => {
132136
return {
133-
foo: () => "bar",
137+
foo: type === "function" ? () => "bar" : new Date(),
134138
}
135139
},
136140
})
137141

138142
// Should throw error with clear message
139143
await t.throwsAsync(
140144
async () => {
141-
await getTestServer(t)
145+
await getTestServer(t, { type: "function" })
142146
},
143147
{
144148
message: /could not be serialized/,
145149
}
146150
)
151+
152+
// Can return a date
153+
const { beforeTemplateIsBakedResult } = await getTestServer(t, {
154+
type: "date",
155+
})
156+
t.true(beforeTemplateIsBakedResult.foo instanceof Date)
147157
})
148158

149159
test("beforeTemplateIsBaked with manual template build", async (t) => {

0 commit comments

Comments
 (0)