API reference@evolu/commonlocal‑first/Query › evoluJsonArrayFrom

function evoluJsonArrayFrom<O>(
  expr: SelectQueryBuilderExpression<O>,
): RawBuilder<Simplify<O>[]>;

Defined in: packages/common/src/local-first/Query.ts:115

An improved Evolu version of Kysely's SQLite jsonArrayFrom helper.

Kysely's ParseJSONResultsPlugin heuristically parses any result string that looks like JSON. Evolu instead prefixes JSON produced by these helpers with a per-runtime identifier and only parses values carrying that prefix, avoiding accidental parsing of ordinary string columns that merely happen to start with { or [.

Example

import { evoluJsonArrayFrom } from "@evolu/common";

const result = await db
  .selectFrom("person")
  .select((eb) => [
    "id",
    evoluJsonArrayFrom(
      eb
        .selectFrom("pet")
        .select(["pet.id as pet_id", "pet.name"])
        .whereRef("pet.owner_id", "=", "person.id")
        .orderBy("pet.name"),
    ).as("pets"),
  ])
  .execute();

result[0]?.id;
result[0]?.pets[0].pet_id;
result[0]?.pets[0].name;