@livestore/livestore 0.0.40 → 0.0.41-dev.1

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.
Files changed (36) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cud.d.ts.map +1 -1
  3. package/dist/cud.js +1 -3
  4. package/dist/cud.js.map +1 -1
  5. package/dist/react/useQuery.test copy.d.ts +2 -0
  6. package/dist/react/useQuery.test copy.d.ts.map +1 -0
  7. package/dist/react/useQuery.test copy.js +44 -0
  8. package/dist/react/useQuery.test copy.js.map +1 -0
  9. package/dist/react/useRow.d.ts.map +1 -1
  10. package/dist/react/useRow.js +3 -2
  11. package/dist/react/useRow.js.map +1 -1
  12. package/dist/react/useTemporaryQuery.d.ts.map +1 -1
  13. package/dist/react/useTemporaryQuery.js +3 -2
  14. package/dist/react/useTemporaryQuery.js.map +1 -1
  15. package/dist/react/useTemporaryQuery.test.d.ts +2 -0
  16. package/dist/react/useTemporaryQuery.test.d.ts.map +1 -0
  17. package/dist/react/useTemporaryQuery.test.js +33 -0
  18. package/dist/react/useTemporaryQuery.test.js.map +1 -0
  19. package/dist/react/utils/useCleanup.d.ts +7 -0
  20. package/dist/react/utils/useCleanup.d.ts.map +1 -0
  21. package/dist/react/utils/useCleanup.js +24 -0
  22. package/dist/react/utils/useCleanup.js.map +1 -0
  23. package/dist/row-query.js +2 -2
  24. package/dist/row-query.js.map +1 -1
  25. package/dist/schema/table-def.d.ts +1 -1
  26. package/dist/schema/table-def.d.ts.map +1 -1
  27. package/dist/schema/table-def.js +13 -5
  28. package/dist/schema/table-def.js.map +1 -1
  29. package/package.json +4 -4
  30. package/src/cud.ts +1 -6
  31. package/src/react/useRow.ts +4 -4
  32. package/src/react/useTemporaryQuery.test.tsx +51 -0
  33. package/src/react/useTemporaryQuery.ts +4 -4
  34. package/src/react/utils/useCleanup.ts +30 -0
  35. package/src/row-query.ts +2 -5
  36. package/src/schema/table-def.ts +16 -10
package/src/row-query.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { shouldNeverHappen } from '@livestore/utils'
2
- import { pipe, ReadonlyRecord, Schema, TreeFormatter } from '@livestore/utils/effect'
2
+ import { Schema, TreeFormatter } from '@livestore/utils/effect'
3
3
  import type * as otel from '@opentelemetry/api'
4
4
  import { SqliteAst, SqliteDsl } from 'effect-db-schema'
5
5
 
@@ -138,10 +138,7 @@ const insertRowWithDefaultValuesOrIgnore = ({
138
138
  otelContext: otel.Context
139
139
  defaultValues: Partial<RowResult<TableDef>> | undefined
140
140
  }) => {
141
- const defaultValues = pipe(
142
- getDefaultValuesEncoded(table),
143
- ReadonlyRecord.map((val, columnName) => explicitDefaultValues?.[columnName] ?? val),
144
- )
141
+ const defaultValues = getDefaultValuesEncoded(table, explicitDefaultValues)
145
142
 
146
143
  const defaultColumnNames = [...Object.keys(defaultValues), 'id']
147
144
  const columnValues = defaultColumnNames.map((name) => `$${name}`).join(', ')
@@ -156,19 +156,25 @@ export const tableIsSingleton = <TTableDef extends TableDef>(
156
156
  tableDef: TTableDef,
157
157
  ): tableDef is TTableDef & { options: { isSingleton: true } } => tableDef.options.isSingleton === true
158
158
 
159
- export const getDefaultValuesEncoded = <TTableDef extends TableDef>(tableDef: TTableDef) =>
159
+ export const getDefaultValuesEncoded = <TTableDef extends TableDef>(
160
+ tableDef: TTableDef,
161
+ fallbackValues?: Record<string, any>,
162
+ ) =>
160
163
  pipe(
161
164
  tableDef.sqliteDef.columns,
162
- ReadonlyRecord.filter((_, key) => key !== 'id'),
163
- ReadonlyRecord.filter(
164
- (col) => col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value) === false,
165
- ),
165
+ ReadonlyRecord.filter((col, key) => {
166
+ if (fallbackValues?.[key] !== undefined) return true
167
+ if (key === 'id') return false
168
+ return col!.default._tag === 'None' || SqliteDsl.isSqlDefaultValue(col!.default.value) === false
169
+ }),
166
170
  ReadonlyRecord.map((column, columnName) =>
167
- column!.default._tag === 'None'
168
- ? column!.nullable === true
169
- ? null
170
- : shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
171
- : Schema.encodeSync(column!.schema)(column!.default.value),
171
+ fallbackValues?.[columnName] === undefined
172
+ ? column!.default._tag === 'None'
173
+ ? column!.nullable === true
174
+ ? null
175
+ : shouldNeverHappen(`Column ${columnName} has no default value and is not nullable`)
176
+ : Schema.encodeSync(column!.schema)(column!.default.value)
177
+ : fallbackValues[columnName],
172
178
  ),
173
179
  )
174
180