v0.0.2-alpha.16
Pre-releaseReleased all 12 packages at 0.0.2-alpha.16 in lockstep (nextly, create-nextly-app, and 10 @nextlyhq/* packages).
What's changed
@nextlyhq/adapter-drizzle
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields.
@nextlyhq/adapter-mysql
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields. -
Updated dependencies [
9bc10b6]:- @nextlyhq/adapter-drizzle@0.0.2-alpha.16
@nextlyhq/adapter-postgres
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields. -
Updated dependencies [
9bc10b6]:- @nextlyhq/adapter-drizzle@0.0.2-alpha.16
@nextlyhq/adapter-sqlite
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields. -
Updated dependencies [
9bc10b6]:- @nextlyhq/adapter-drizzle@0.0.2-alpha.16
@nextlyhq/admin
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields. -
Updated dependencies [
9bc10b6]:- @nextlyhq/ui@0.0.2-alpha.16
create-nextly-app
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields.
nextly
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields. -
Updated dependencies [
9bc10b6]:- @nextlyhq/adapter-drizzle@0.0.2-alpha.16
- @nextlyhq/adapter-mysql@0.0.2-alpha.16
- @nextlyhq/adapter-postgres@0.0.2-alpha.16
- @nextlyhq/adapter-sqlite@0.0.2-alpha.16
@nextlyhq/plugin-form-builder
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields. -
Updated dependencies [
9bc10b6]:- @nextlyhq/admin@0.0.2-alpha.16
- nextly@0.0.2-alpha.16
- @nextlyhq/ui@0.0.2-alpha.16
@nextlyhq/storage-s3
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields.
@nextlyhq/storage-uploadthing
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields.
@nextlyhq/storage-vercel-blob
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields.
@nextlyhq/ui
Patch Changes
-
#52
9bc10b6Thanks @aqib-rx! - Fixupdate operation failed on table '<table>': value.toISOString is not a functionwhen saving a Single document or a component instance that includes a date field. JSON request bodies deliver date values as ISO strings (e.g."2026-05-20T12:22:29.417Z"), but Drizzle bindstimestampcolumns by calling.toISOString()on the bound value -- so an unmodified string travelling through the adapter blows up at the driver layer.CollectionMutationServicealready coerced date strings intoDateobjects inline at every write site, but the equivalent step was missing fromSingleMutationService.updateand fromComponentMutationService.serializeComponentRow(which feeds every insert / update path in the component service viabuildInsertRowand direct calls).A new
coerceDateFieldsToDate(data, fields)helper inshared/lib/field-transform.tsmutates the row in place, converting string values forfield.type === "date"columns intoDateobjects. ExistingDate,null, andundefinedvalues pass through untouched, so the function is idempotent and safe to call on rows that were coerced upstream. The signature accepts a structuralReadonlyArray<{ name?: string; type?: string }>so the same helper covers bothFieldConfig[](singles, components) and the runtimeFieldDefinition[](collections). The helper is wired intosingle-mutation-service.updatebefore snake-casing the row and intocomponent-mutation-service.serializeComponentRowbefore column mapping. The six inline copies of the same coercion block incollection-mutation-service.tswere collapsed onto the shared helper as part of the same change so there is one implementation across all three domains. Result: PATCH/admin/api/singles/<slug>with adatefield, inserts / updates on components with date fields, and the existing collection flows that already worked all succeed against Postgres, MySQL, and SQLite. Unit tests cover the helper's coercion, idempotency, null / undefined pass-through, and no-touch behaviour for non-date fields.