gemi 0.54.2 → 0.54.4

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 (166) hide show
  1. package/dist/app/index.js +2 -2
  2. package/dist/app/index.js.map +1 -1
  3. package/dist/bun/plugin.js +2 -2
  4. package/dist/bun/plugin.js.map +1 -1
  5. package/dist/bun/preload.js +2 -2
  6. package/dist/bun/preload.js.map +2 -2
  7. package/dist/chunk-1312a1t4.js +4 -0
  8. package/dist/{chunk-r9z5rrk0.js.map → chunk-1312a1t4.js.map} +2 -2
  9. package/dist/{chunk-9taz1h3t.js → chunk-1psx59jt.js} +2 -2
  10. package/dist/{chunk-9taz1h3t.js.map → chunk-1psx59jt.js.map} +1 -1
  11. package/dist/chunk-2s75crt8.js +4 -0
  12. package/dist/{chunk-07t0dmdg.js.map → chunk-2s75crt8.js.map} +2 -2
  13. package/dist/chunk-2zyharpa.js +4 -0
  14. package/dist/{chunk-hk067634.js.map → chunk-2zyharpa.js.map} +2 -2
  15. package/dist/chunk-35j03vge.js +4 -0
  16. package/dist/{chunk-br8ten26.js.map → chunk-35j03vge.js.map} +2 -2
  17. package/dist/chunk-3njyfdj5.js +19 -0
  18. package/dist/chunk-3njyfdj5.js.map +60 -0
  19. package/dist/chunk-4n0xx0y6.js +66 -0
  20. package/dist/{chunk-n382ygnp.js.map → chunk-4n0xx0y6.js.map} +4 -53
  21. package/dist/{chunk-gn9zjgep.js → chunk-5ad8era8.js} +2 -2
  22. package/dist/{chunk-gn9zjgep.js.map → chunk-5ad8era8.js.map} +1 -1
  23. package/dist/{chunk-50vm7x98.js → chunk-6c5xkj0z.js} +2 -2
  24. package/dist/{chunk-50vm7x98.js.map → chunk-6c5xkj0z.js.map} +1 -1
  25. package/dist/chunk-6yy92txx.js +9 -0
  26. package/dist/{chunk-k8endm5j.js.map → chunk-6yy92txx.js.map} +6 -6
  27. package/dist/chunk-796pyrm9.js +4 -0
  28. package/dist/{chunk-1snh7yc4.js.map → chunk-796pyrm9.js.map} +2 -2
  29. package/dist/chunk-876p591d.js +5 -0
  30. package/dist/chunk-876p591d.js.map +13 -0
  31. package/dist/chunk-95t14jaw.js +13 -0
  32. package/dist/chunk-95t14jaw.js.map +222 -0
  33. package/dist/{chunk-kz39hphm.js → chunk-97rcmaps.js} +3 -3
  34. package/dist/{chunk-kz39hphm.js.map → chunk-97rcmaps.js.map} +1 -1
  35. package/dist/{chunk-c22vcxty.js → chunk-9agd5hjw.js} +2 -2
  36. package/dist/{chunk-c22vcxty.js.map → chunk-9agd5hjw.js.map} +2 -2
  37. package/dist/chunk-9wrbnr38.js +4 -0
  38. package/dist/{chunk-c0wcsmpj.js.map → chunk-9wrbnr38.js.map} +2 -2
  39. package/dist/{chunk-sqp7kn7h.js → chunk-a1h4paj1.js} +3 -3
  40. package/dist/{chunk-sqp7kn7h.js.map → chunk-a1h4paj1.js.map} +1 -1
  41. package/dist/{chunk-r06rxn19.js → chunk-b5mc1st9.js} +2 -2
  42. package/dist/{chunk-r06rxn19.js.map → chunk-b5mc1st9.js.map} +1 -1
  43. package/dist/chunk-c6qxw3v9.js +5 -0
  44. package/dist/{chunk-f13f68c0.js.map → chunk-c6qxw3v9.js.map} +2 -2
  45. package/dist/{chunk-113khwbw.js → chunk-cbqrkfjm.js} +2 -2
  46. package/dist/{chunk-113khwbw.js.map → chunk-cbqrkfjm.js.map} +1 -1
  47. package/dist/{chunk-jp4pf3yt.js → chunk-dngwctnt.js} +4 -4
  48. package/dist/{chunk-jp4pf3yt.js.map → chunk-dngwctnt.js.map} +2 -2
  49. package/dist/{chunk-f418jh9k.js → chunk-ejrcyzx8.js} +2 -2
  50. package/dist/{chunk-f418jh9k.js.map → chunk-ejrcyzx8.js.map} +1 -1
  51. package/dist/chunk-h3b0v3bz.js +4 -0
  52. package/dist/{chunk-4qkzdyj7.js.map → chunk-h3b0v3bz.js.map} +1 -1
  53. package/dist/{chunk-jb022m7n.js → chunk-hg9y6ctt.js} +2 -2
  54. package/dist/{chunk-jb022m7n.js.map → chunk-hg9y6ctt.js.map} +1 -1
  55. package/dist/chunk-j15ewww3.js +5 -0
  56. package/dist/{chunk-2pt6kyn9.js.map → chunk-j15ewww3.js.map} +2 -2
  57. package/dist/{chunk-zckj6bs6.js → chunk-j3tzdcz7.js} +3 -3
  58. package/dist/{chunk-zckj6bs6.js.map → chunk-j3tzdcz7.js.map} +1 -1
  59. package/dist/chunk-jq46m17j.js +5 -0
  60. package/dist/{chunk-efsk1wy0.js.map → chunk-jq46m17j.js.map} +2 -2
  61. package/dist/{chunk-pgjk5ft3.js → chunk-k5jvafmh.js} +1 -1
  62. package/dist/chunk-kckva77b.js +5 -0
  63. package/dist/{chunk-dxw8k6f1.js.map → chunk-kckva77b.js.map} +2 -2
  64. package/dist/{chunk-cz3szqhq.js → chunk-ke6tsnx1.js} +2 -2
  65. package/dist/{chunk-cz3szqhq.js.map → chunk-ke6tsnx1.js.map} +1 -1
  66. package/dist/{chunk-qq2yhtpp.js → chunk-kz5zcw6s.js} +2 -2
  67. package/dist/{chunk-qq2yhtpp.js.map → chunk-kz5zcw6s.js.map} +2 -2
  68. package/dist/{chunk-h7mcwfg5.js → chunk-nakfv7pa.js} +4 -4
  69. package/dist/{chunk-h7mcwfg5.js.map → chunk-nakfv7pa.js.map} +2 -2
  70. package/dist/chunk-nph4mm6k.js +4 -0
  71. package/dist/{chunk-jb2nst6v.js.map → chunk-nph4mm6k.js.map} +2 -2
  72. package/dist/{chunk-dwx2y7br.js → chunk-r07s2p1z.js} +4 -4
  73. package/dist/{chunk-dwx2y7br.js.map → chunk-r07s2p1z.js.map} +2 -2
  74. package/dist/chunk-teyphwr0.js +5 -0
  75. package/dist/{chunk-6rhebm18.js.map → chunk-teyphwr0.js.map} +2 -2
  76. package/dist/{chunk-agabw2w1.js → chunk-tkdxv6cq.js} +2 -2
  77. package/dist/{chunk-agabw2w1.js.map → chunk-tkdxv6cq.js.map} +1 -1
  78. package/dist/chunk-v094r7tz.js +6 -0
  79. package/dist/{chunk-05edp1zf.js.map → chunk-v094r7tz.js.map} +2 -2
  80. package/dist/{chunk-3xa807p3.js → chunk-v0t5dejz.js} +2 -2
  81. package/dist/{chunk-3xa807p3.js.map → chunk-v0t5dejz.js.map} +1 -1
  82. package/dist/{chunk-f4e7fh95.js → chunk-v7y8zm61.js} +3 -3
  83. package/dist/{chunk-f4e7fh95.js.map → chunk-v7y8zm61.js.map} +2 -2
  84. package/dist/{chunk-kv2ep453.js → chunk-vj1vt6qs.js} +18 -19
  85. package/dist/{chunk-kv2ep453.js.map → chunk-vj1vt6qs.js.map} +4 -8
  86. package/dist/{chunk-71m47kad.js → chunk-wxepr09t.js} +2 -2
  87. package/dist/{chunk-71m47kad.js.map → chunk-wxepr09t.js.map} +2 -2
  88. package/dist/{chunk-efp54183.js → chunk-x1g40y59.js} +1 -1
  89. package/dist/chunk-x5w7es67.js +4 -0
  90. package/dist/{chunk-s6e7cvek.js.map → chunk-x5w7es67.js.map} +2 -2
  91. package/dist/chunk-x67dm5ef.js +5 -0
  92. package/dist/{chunk-jdgvdddd.js.map → chunk-x67dm5ef.js.map} +2 -2
  93. package/dist/{chunk-fcqc3e3r.js → chunk-xnytbrda.js} +2 -2
  94. package/dist/{chunk-fcqc3e3r.js.map → chunk-xnytbrda.js.map} +1 -1
  95. package/dist/chunk-xska2hx3.js +4 -0
  96. package/dist/{chunk-hrrmxreg.js.map → chunk-xska2hx3.js.map} +2 -2
  97. package/dist/{chunk-ms8qd7da.js → chunk-yd6aqeyc.js} +2 -2
  98. package/dist/{chunk-ms8qd7da.js.map → chunk-yd6aqeyc.js.map} +1 -1
  99. package/dist/{chunk-bb3zvxsf.js → chunk-zacf5ph0.js} +2 -2
  100. package/dist/{chunk-bb3zvxsf.js.map → chunk-zacf5ph0.js.map} +1 -1
  101. package/dist/console/run.js +2 -2
  102. package/dist/console/run.js.map +1 -1
  103. package/dist/database/DatabaseManager.d.ts.map +1 -1
  104. package/dist/database/index.js +2 -2
  105. package/dist/database/index.js.map +1 -1
  106. package/dist/email/index.js +1 -1
  107. package/dist/facades/Storage.d.ts +1 -1
  108. package/dist/facades/Storage.d.ts.map +1 -1
  109. package/dist/facades/index.js +1 -1
  110. package/dist/i18n/dictionaryRuntime.js +2 -2
  111. package/dist/i18n/dictionaryRuntime.js.map +1 -1
  112. package/dist/i18n/index.js +2 -2
  113. package/dist/i18n/index.js.map +2 -2
  114. package/dist/kernel/index.js +2 -2
  115. package/dist/kernel/index.js.map +2 -2
  116. package/dist/orm/corpus.d.ts.map +1 -1
  117. package/dist/orm/dialect/index.d.ts +32 -1
  118. package/dist/orm/dialect/index.d.ts.map +1 -1
  119. package/dist/orm/dialect/postgres.d.ts +14 -0
  120. package/dist/orm/dialect/postgres.d.ts.map +1 -1
  121. package/dist/orm/dialect/sqlite.d.ts +31 -0
  122. package/dist/orm/dialect/sqlite.d.ts.map +1 -1
  123. package/dist/orm/index.js +3 -3
  124. package/dist/orm/index.js.map +3 -3
  125. package/dist/orm/types.d.ts +82 -38
  126. package/dist/orm/types.d.ts.map +1 -1
  127. package/dist/server/index.js +2 -2
  128. package/dist/server/index.js.map +2 -2
  129. package/dist/services/email/drivers/ResendDriver.d.ts.map +1 -1
  130. package/dist/services/file-storage/drivers/S3Driver.d.ts +24 -1
  131. package/dist/services/file-storage/drivers/S3Driver.d.ts.map +1 -1
  132. package/dist/services/image-optimization/drivers/SharpDriver.d.ts.map +1 -1
  133. package/dist/services/index.js +9 -18
  134. package/dist/services/index.js.map +5 -99
  135. package/dist/services/rate-limiter/drivers/RedisRateLimiterDriver.d.ts.map +1 -1
  136. package/dist/services/redis/RedisManager.d.ts +19 -2
  137. package/dist/services/redis/RedisManager.d.ts.map +1 -1
  138. package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
  139. package/dist/services/router/htmlInsertionPoint.d.ts +64 -0
  140. package/dist/services/router/htmlInsertionPoint.d.ts.map +1 -0
  141. package/dist/services/router/streamQueryInjection.d.ts +10 -0
  142. package/dist/services/router/streamQueryInjection.d.ts.map +1 -1
  143. package/dist/support/sharp.d.ts +21 -0
  144. package/dist/support/sharp.d.ts.map +1 -0
  145. package/package.json +1 -1
  146. package/dist/chunk-05edp1zf.js +0 -6
  147. package/dist/chunk-07t0dmdg.js +0 -4
  148. package/dist/chunk-1snh7yc4.js +0 -4
  149. package/dist/chunk-2pt6kyn9.js +0 -5
  150. package/dist/chunk-4qkzdyj7.js +0 -4
  151. package/dist/chunk-6rhebm18.js +0 -5
  152. package/dist/chunk-br8ten26.js +0 -4
  153. package/dist/chunk-c0wcsmpj.js +0 -4
  154. package/dist/chunk-dxw8k6f1.js +0 -5
  155. package/dist/chunk-efsk1wy0.js +0 -5
  156. package/dist/chunk-f13f68c0.js +0 -5
  157. package/dist/chunk-hk067634.js +0 -4
  158. package/dist/chunk-hrrmxreg.js +0 -4
  159. package/dist/chunk-jb2nst6v.js +0 -4
  160. package/dist/chunk-jdgvdddd.js +0 -5
  161. package/dist/chunk-k8endm5j.js +0 -9
  162. package/dist/chunk-n382ygnp.js +0 -81
  163. package/dist/chunk-r9z5rrk0.js +0 -4
  164. package/dist/chunk-s6e7cvek.js +0 -4
  165. /package/dist/{chunk-pgjk5ft3.js.map → chunk-k5jvafmh.js.map} +0 -0
  166. /package/dist/{chunk-efp54183.js.map → chunk-x1g40y59.js.map} +0 -0
@@ -5,7 +5,7 @@
5
5
  "import type { SqlDialect } from \"../dialect\";\nimport { MalformedRelationError } from \"../errors\";\nimport type { ModelSchema, RelationSchema } from \"../schema\";\nimport { relatedSchema, resolveLink } from \"./plan-relations\";\n\n/**\n * The three pieces every correlated subquery over a relation needs, for both\n * kinds of relation.\n *\n * Three call sites now build one: `exists` for a relation filter, `count(*)` for\n * `_count`, and a scalar for an `orderBy`. Each had its own copy of \"resolve the\n * link, quote the two key columns, write the correlation\" — and each refused\n * implicit many-to-many separately, with its own message, because the m-n shape\n * needs a *second* table in the subquery and none of them had anywhere to put\n * it.\n *\n * That is what this exists for. The join table is a difference in the subquery's\n * `from` clause and nowhere else, so hoisting the `from` and the correlation out\n * of the three callers makes m-n a property of one function rather than a\n * capability each caller has to grow.\n *\n * Direct foreign key:\n *\n * from \"Account\" as \"_r0\" where \"_r0\".\"userId\" = \"User\".\"id\"\n *\n * Implicit many-to-many:\n *\n * from \"Tag\" as \"_r0\"\n * join \"_PostToTag\" as \"_r0j\" on \"_r0j\".\"B\" = \"_r0\".\"id\"\n * where \"_r0j\".\"A\" = \"Post\".\"id\"\n *\n * The child is aliased in both cases, even when nothing is ambiguous — a\n * self-relation puts the same table on both sides and the subquery's own `from`\n * would shadow the outer one, so the correlation would compare a row to itself.\n * Aliasing conditionally would put the dangerous case on the rarely-taken branch.\n */\n\nexport interface Correlated {\n /** The related model's schema, resolved through the registry. */\n child: ModelSchema;\n /** Everything after `from `, including the join table when there is one. */\n source: string;\n /** The predicate tying the subquery to the outer row. */\n correlation: string;\n /** Prefix for the child's own columns — `\"_r0\".`. */\n qualifier: string;\n}\n\nexport function correlate(\n parent: ModelSchema,\n relation: RelationSchema,\n dialect: SqlDialect,\n /** Distinct per nesting level or per term; the caller owns uniqueness. */\n alias: string,\n /** How the outer row is named: the parent's table, or an enclosing alias. */\n parentQualifier: string,\n /**\n * The caller's operation, so a refused link names where it came from.\n * Required for the same reason `resolveLink`'s is — see the note there.\n */\n operation: string,\n): Correlated {\n const child = relatedSchema(parent, relation);\n // Throws for a self-referential implicit m-n, where the artifact cannot say\n // which join column is which end. That refusal is the planner's and predates\n // this; it is reached here rather than duplicated.\n const link = resolveLink(parent, child, relation, operation);\n\n const quoted = dialect.quoteIdent(alias);\n const qualifier = `${quoted}.`;\n\n /**\n * One equality per joined field, `and`ed.\n *\n * This is the whole of the composite-relation change for three of the four\n * correlated surfaces — a relation filter, a `_count` and an `orderBy` all\n * build their subquery here — which is the payoff for hoisting the\n * correlation into one function rather than leaving three copies of it.\n */\n const correlation = link.parentFields\n .map((parentField, index) => {\n const childKey = `${qualifier}${dialect.quoteIdent(\n column(child, relation, link.childFields[index]),\n )}`;\n const parentKey = `${parentQualifier}${dialect.quoteIdent(\n column(parent, relation, parentField),\n )}`;\n return `${childKey} = ${parentKey}`;\n })\n .join(\" and \");\n\n if (!link.join) {\n return {\n child,\n source: `${dialect.quoteIdent(child.table)} as ${quoted}`,\n correlation,\n qualifier,\n };\n }\n\n // A join table always has exactly two columns, so the m-n branch below stays\n // single-field by construction rather than by assumption.\n const childKey = `${qualifier}${dialect.quoteIdent(\n column(child, relation, link.childFields[0]),\n )}`;\n const parentKey = `${parentQualifier}${dialect.quoteIdent(\n column(parent, relation, link.parentFields[0]),\n )}`;\n\n // The join table gets the child's alias with a `j`, so two nested m-n filters\n // cannot collide any more than their children can.\n const joinAlias = dialect.quoteIdent(`${alias}j`);\n\n return {\n child,\n source:\n `${dialect.quoteIdent(child.table)} as ${quoted} ` +\n `join ${dialect.quoteIdent(link.join.table)} as ${joinAlias} ` +\n `on ${joinAlias}.${dialect.quoteIdent(link.join.childColumn)} = ${childKey}`,\n correlation: `${joinAlias}.${dialect.quoteIdent(link.join.parentColumn)} = ${parentKey}`,\n qualifier,\n };\n}\n\nfunction column(\n schema: ModelSchema,\n relation: RelationSchema,\n name: string,\n): string {\n const field = schema.fields[name];\n if (!field) {\n throw new MalformedRelationError(\n schema.name,\n relation.name,\n `it joins on '${name}', which is not a field on ${schema.name}.`,\n );\n }\n return field.column;\n}\n",
6
6
  "import { UnsupportedQueryError } from \"../errors\";\nimport type { ModelSchema } from \"../schema\";\n\n/**\n * Where a refusal came from: the caller's model and operation, and the argument\n * path inside them.\n *\n * A triple rather than a string, because the string was doing three jobs and\n * getting two of them wrong. Nested callers passed\n * `` `${operation}.${relation.name}.${key}` `` as the *operation*, so a\n * `User.update` with a bad nested key reported\n * `(Account.update.accounts.disconnect)` — the child's model, and an operation\n * that is not one of the thirteen. `UnsupportedQueryError` documents those\n * fields as structured and inspectable; an application branching on\n * `error.operation` got something that can never match.\n *\n * Same defect #79 made `resolveLink`'s `operation` required for, and #85 was\n * filed about, one layer down. See #108.\n */\nexport interface RefusalOrigin {\n /** The model whose arguments these are — the *caller's*, not the child's. */\n model: string;\n /** The operation the caller wrote. */\n operation: string;\n /** The argument path, e.g. `data.accounts.disconnect.where`. */\n argument: string;\n}\n\n/**\n * Which declared unique key a `where` names — the `@id`, a single-field\n * `@unique`, or a composite `@@unique` in Prisma's compound form\n * (`{ username_provider: { username, provider } }`).\n *\n * Shared by every operation Prisma types with a `WhereUniqueInput`: the four\n * `findUnique*` reads, and — from iteration 4 — `update`, `delete` and\n * `upsert`. Writes need the *identity* of the matched key rather than just a\n * yes, because `upsert` compiles it into an `on conflict (...)` target, so this\n * returns the group instead of asserting.\n *\n * It runs once per argument *shape*, in the compiler, never per call. The\n * alternative is a `delete` that silently removes the first of several matches.\n *\n * Note this checks that a unique key is *present*, not that nothing else is:\n * since Prisma 5 a `WhereUniqueInput` may carry extra non-unique filters\n * alongside the key, and they narrow further rather than breaking uniqueness.\n */\nexport function matchUniqueKey(\n schema: ModelSchema,\n where: unknown,\n op: RefusalOrigin,\n): string[] {\n const candidates = uniqueKeys(schema);\n\n if (typeof where !== \"object\" || where === null || Array.isArray(where)) {\n throw missingUnique(schema, op, candidates);\n }\n\n const keys = Object.keys(where as Record<string, unknown>).filter(\n (key) => (where as Record<string, unknown>)[key] !== undefined,\n );\n\n for (const candidate of candidates) {\n if (candidate.length === 1 && keys.includes(candidate[0])) return candidate;\n // Prisma's compound form: one key named after the fields joined by `_`.\n if (candidate.length > 1 && keys.includes(candidate.join(\"_\"))) {\n return candidate;\n }\n }\n\n throw missingUnique(schema, op, candidates);\n}\n\nexport function assertUniqueWhere(\n schema: ModelSchema,\n where: unknown,\n op: string,\n): void {\n matchUniqueKey(schema, where, {\n model: schema.name,\n operation: op,\n argument: \"where\",\n });\n}\n\nexport function uniqueKeys(schema: ModelSchema): string[][] {\n const keys: string[][] = [];\n if (schema.primaryKey.length > 0) keys.push(schema.primaryKey);\n for (const group of schema.uniques) keys.push(group);\n return keys;\n}\n\nfunction missingUnique(\n schema: ModelSchema,\n op: RefusalOrigin,\n candidates: string[][],\n): UnsupportedQueryError {\n const shown = candidates\n // A compound key is shown in Prisma's own spelling — `tenantId_code` — so\n // the name in the message is the one the caller has to type.\n .map((group) => (group.length === 1 ? group[0] : group.join(\"_\")))\n .join(\", \");\n\n // The *child* is named in the message, because it is whose keys these are —\n // that half was always the useful one. What moves is which model and\n // operation the structured fields report.\n const nested = op.argument.startsWith(\"data.\");\n const instead = nested\n ? `Name it by one of those, or reach it through the ${schema.name} model ` +\n `directly.`\n : `Use ${op.operation === \"delete\" || op.operation === \"update\" ? `${op.operation}Many` : \"findFirst\"} ` +\n `to query on anything else.`;\n\n return new UnsupportedQueryError(\n op.argument,\n op.model,\n op.operation,\n `${schema.name} needs a unique field here. It declares: ${shown}. ${instead}`,\n );\n}\n",
7
7
  "import type { SqlDialect } from \"../dialect\";\nimport { jsonNullKind } from \"../json-null\";\nimport type { FieldSchema } from \"../schema\";\nimport { type Binder, type Fragment, param } from \"./fragment\";\n\n/**\n * Binds a field's value, letting the dialect add a cast to the placeholder.\n *\n * Only `Json` on Postgres needs one today, and the reason is the whole of #209.\n * Bun serialises a JS value bound to a `jsonb` parameter, so an object arrives\n * correctly and a bare number arrives as `integer` and is rejected. Serialising\n * first does not help on its own — the string is then serialised again and the\n * column ends up holding the jsonb *string* `\"42\"`, which is the silent\n * mis-store the refusal existed to prevent. Measured against Postgres 16:\n *\n * values ($1) 42 integer vs jsonb\n * values ($1::jsonb) \"42\" jsonb_typeof -> string\n * values (to_jsonb($1)) {a:1} could not determine polymorphic type\n * values ($1::text::jsonb) \"42\" jsonb_typeof -> number\n *\n * The last is the only form that carries all six shapes, so it is the one the\n * dialect asks for.\n *\n * **A site that does not use this keeps today's behaviour**, which is the point\n * of putting the serialisation here rather than in `encode`. Moving it into\n * `encode` would serialise at every binding site whether or not that site\n * emitted the cast — and a site that serialises without casting is exactly the\n * mis-store above, arrived at silently. Here, a binding site nobody converted\n * still binds raw: objects work, a bare number is still refused, and the\n * failure stays loud.\n */\nexport function fieldParam(\n field: FieldSchema,\n dialect: SqlDialect,\n binder: Binder,\n): Fragment {\n const cast = dialect.castParameter(field);\n if (!cast) return param(binder);\n\n return param((args, context) => {\n const value = binder(args, context);\n // `null` stays SQL NULL rather than becoming the JSON value `null`:\n // `JSON.stringify(null)` is `\"null\"`, and `'null'::jsonb` is a jsonb null,\n // which is a different thing from an absent value and would diverge from\n // Prisma on every nullable Json column.\n if (value === null || value === undefined) return null;\n\n // Prisma's sentinels, which serialise to `{}` if left to `JSON.stringify`.\n // `'null'::text::jsonb` is the JSON value; a bound `null` is SQL NULL.\n const kind = jsonNullKind(value);\n if (kind === \"db\") return null;\n if (kind === \"json\") return \"null\";\n // `AnyNull` is a question rather than a value — see `json-null.ts`. Every\n // path that could carry one has already answered it: the filter compiles it\n // to `is null or = 'null'`, and the write refuses it where the schema and\n // operation are in scope to say so. Reaching here means one of those was\n // missed, and the alternative to throwing is the `{}` mis-store of #259\n // arrived at a second way. Not an `InvalidArgumentError`: this reports an\n // ORM bug, not a caller's.\n if (kind === \"any\") {\n throw new Error(\n \"gemi ORM bug: Prisma.AnyNull reached the parameter binder. It is a \" +\n \"filter operand only, and both the filter and write paths are \" +\n \"supposed to have handled it before this point.\",\n );\n }\n\n return JSON.stringify(value);\n }, cast);\n}\n",
8
- "import type { SqlDialect } from \"../dialect\";\nimport {\n InvalidArgumentError,\n UnknownFieldError,\n UnsupportedQueryError,\n} from \"../errors\";\nimport {\n isOperatorForm,\n relationFilterOperators,\n} from \"../relation-filters\";\nimport type { FieldSchema, ModelSchema, RelationSchema } from \"../schema\";\nimport { type Correlated, correlate } from \"./correlate\";\nimport { uniqueKeys } from \"./unique\";\nimport {\n type Binder,\n type Fragment,\n concat,\n joinFragments,\n param,\n sql,\n} from \"./fragment\";\nimport { JSON_NULL, type JsonNullKind, jsonNullKind } from \"../json-null\";\nimport { fieldParam } from \"./cast\";\n\n/**\n * `where` -> a boolean expression, recursively.\n *\n * The shape here is the thing every later iteration extends, so it is worth\n * stating: this is a recursive function over the argument tree returning\n * `Fragment`s, with binders carrying paths into that tree. It is never string\n * concatenation with a parameter counter in an outer scope, and it never\n * branches on the dialect's *name* — where the dialects genuinely differ in\n * structure (`in`, `like`), the work is delegated to the dialect interface.\n *\n * Semantics are Prisma's, verified by running Prisma against SQLite and reading\n * the SQL it emits rather than by reasoning about the docs:\n *\n * | Prisma | SQL |\n * | --- | --- |\n * | `{ f: null }` | `f is null` |\n * | `{ f: { equals: null }}`| `f is null` |\n * | `{ f: { not: null } }` | `f is not null` |\n * | `{ f: { not: v } }` | `f <> ?` |\n * | `{ f: { in: [] } }` | `false` |\n * | `{ AND: [] }` | `true` |\n * | `{ OR: [] }` | `false` |\n * | `{ NOT: { a, b } }` | `not (a = ? and b = ?)` |\n *\n * Returns `null` when the object contributes no predicate at all, so the caller\n * can omit the clause rather than emit `where true`.\n */\nexport function compileWhere(\n schema: ModelSchema,\n where: unknown,\n context: WhereContext,\n /**\n * Re-locates this same object inside the argument tree at bind time.\n * Compilation reads the object it was handed; binding has to find it again in\n * whatever the caller passes. Explicit rather than assuming `args.where`, so\n * the nested `where`s inside an `include` tree can reuse this unchanged.\n */\n locate: (args: any) => any,\n): Fragment | null {\n if (where === undefined || where === null) return null;\n\n if (typeof where !== \"object\" || Array.isArray(where)) {\n throw new InvalidArgumentError(\n \"where\",\n schema.name,\n context.operation,\n \"Expected an object.\",\n );\n }\n\n const predicates: Fragment[] = [];\n\n // Sorted, not insertion-ordered: the plan cache canonicalises key order when\n // it builds the cache key, so two argument objects that differ only in key\n // order share one entry — and must therefore compile to the same SQL text.\n for (const key of Object.keys(where as Record<string, unknown>).sort()) {\n const value = (where as Record<string, unknown>)[key];\n // Prisma treats an explicit `undefined` as \"not provided\". Matching that\n // matters: it is how conditional filters are written in application code.\n if (value === undefined) continue;\n\n const at = (args: any) => locate(args)?.[key];\n\n if (key === \"AND\" || key === \"OR\") {\n const combined = compileGroup(schema, value, context, at, key);\n if (combined) predicates.push(combined);\n continue;\n }\n\n if (key === COMPOSITE_IN) {\n predicates.push(compileCompositeIn(schema, value, context, at));\n continue;\n }\n\n if (key === \"NOT\") {\n const negated = compileGroup(schema, value, context, at, \"AND\");\n // `NOT` of nothing is vacuously true, so it contributes no predicate.\n // The operand is always parenthesised: `not a = ?` happens to parse the\n // way we mean on both dialects, but relying on `not` binding looser than\n // every comparison it might wrap is not a property worth depending on.\n if (negated) predicates.push(concat(sql(\"not \"), parenthesize(negated)));\n continue;\n }\n\n if (key in schema.relations) {\n const filter = compileRelationFilter(\n schema,\n schema.relations[key],\n value,\n context,\n at,\n );\n if (filter) predicates.push(filter);\n continue;\n }\n\n const field = schema.fields[key];\n if (!field) {\n // Prisma exposes a composite `@@unique([a, b])` as one key named `a_b`,\n // holding an object of its members. It is the only `where` key that is\n // not a field, a relation or a combinator, and `findUnique` on a model\n // like the template's `SocialAccount` cannot be expressed without it.\n const compound = compileCompoundKey(schema, key, value, context, at);\n if (compound) {\n predicates.push(compound);\n continue;\n }\n throw new UnknownFieldError(key, schema.name, Object.keys(schema.fields));\n }\n\n predicates.push(compileFieldFilter(schema, field, value, context, at));\n }\n\n if (predicates.length === 0) return null;\n if (predicates.length === 1) return predicates[0];\n return group(predicates, \" and \");\n}\n\nexport interface WhereContext {\n dialect: SqlDialect;\n operation: string;\n /**\n * Prefix for every column this `where` names — `\"User\".` — set only when the\n * statement has more than one table in scope.\n *\n * That happens when a relation strategy folds children in with a lateral join\n * (iteration 9): the subquery introduces a second scope and a bare `\"id\"`\n * becomes ambiguous. It is the table's own name rather than an invented alias,\n * because Postgres lets a lateral subquery reference the outer table by name.\n *\n * Absent otherwise, and absence is the common case — so a query with no folded\n * relation emits byte-identical SQL to what it did before this existed, which\n * is what keeps invariant 2 and every compiler text assertion untouched.\n */\n qualifier?: string;\n /**\n * How many relation-filter subqueries enclose this one. Zero at the root.\n *\n * It exists only to name the child alias — `_r0`, `_r1` — and the aliases only\n * have to be distinct from the ones *enclosing* them, not from their siblings:\n * each `exists (…)` is its own scope, so two relation filters at the same level\n * cannot see each other. Depth is therefore sufficient, and it keeps the SQL\n * text a pure function of the argument shape, which a counter threaded through\n * compilation would not be.\n */\n relationDepth?: number;\n}\n\n/**\n * `where: { accounts: { some: { … } } }` -> `exists (select 1 from \"Account\" …)`.\n *\n * A correlated subquery rather than a join, for the reason iteration 3 gave when\n * it deferred this: a join against a to-many multiplies the parent rows and then\n * needs a `distinct` to put them back, which changes the row count of the outer\n * query for a filter that should only ever *remove* rows. `exists` cannot.\n *\n * ### The child is always aliased\n *\n * Even when the tables differ and nothing is ambiguous. A self-relation —\n * `Employee.manager` — puts the same table on both sides, and there the\n * subquery's own `from` shadows the outer one, so the correlation silently\n * compares a row to itself. Aliasing conditionally would mean the dangerous case\n * is the one that takes the rarely-exercised branch; aliasing always means the\n * self-relation is compiled by the same code as everything else.\n *\n * The outer side is qualified by table name (or by the enclosing alias, when this\n * filter is itself nested), which is what makes the correlation refer outwards.\n * That needs nothing from the outer statement — `from \"User\"` puts `\"User\"` in\n * scope as a qualifier whether or not any other column uses one — so a query with\n * a relation filter leaves the rest of its SQL byte-identical.\n */\nfunction compileRelationFilter(\n schema: ModelSchema,\n relation: RelationSchema,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment | null {\n // Shape before environment: `readOperators` only reads the relation's own\n // `kind`, so a malformed filter is reported as one even when the registry is\n // empty. The other order let a missing `register` call mask a plain typo.\n const operators = relationFilterOperators(relation.kind);\n const requested = readOperators(schema, relation, value, operators, context);\n\n const depth = context.relationDepth ?? 0;\n\n const dialect = context.dialect;\n // At depth 0 the outer scope is the queried table; deeper, it is the alias of\n // the subquery this one sits inside. `context.qualifier` already holds the\n // right answer in both cases when something set it — the lateral strategy does\n // at the root — so it wins, and the table name is the fallback.\n const parentQualifier =\n context.qualifier ?? `${dialect.quoteIdent(schema.table)}.`;\n\n const source = correlate(\n schema,\n relation,\n dialect,\n `_r${depth}`,\n parentQualifier,\n context.operation,\n );\n const child = source.child;\n const correlation = sql(source.correlation);\n\n const inner: WhereContext = {\n ...context,\n qualifier: source.qualifier,\n relationDepth: depth + 1,\n };\n\n const parts: Fragment[] = [];\n\n for (const operator of operators) {\n if (!(operator in requested)) continue;\n\n const argument = requested[operator];\n const at = (args: any) => requested.direct ? locate(args) : locate(args)?.[operator];\n\n // `is: null` / a bare `null` on a to-one: \"there is no related row\". Prisma\n // spells the opposite `isNot: null`.\n if (argument === null) {\n parts.push(existence(source, correlation, null, operator === \"is\"));\n continue;\n }\n\n const condition = compileWhere(child, argument, inner, at);\n\n if (operator === \"every\") {\n // `every` is \"no child fails it\", not \"some child passes it\" — the two\n // differ on a parent with no children at all, which `every` matches and\n // `some` does not. An empty `every: {}` therefore constrains nothing.\n if (!condition) continue;\n parts.push(\n existence(\n source,\n correlation,\n concat(sql(\"not \"), parenthesize(condition)),\n true,\n ),\n );\n continue;\n }\n\n const negate = operator === \"none\" || operator === \"isNot\";\n parts.push(existence(source, correlation, condition, negate));\n }\n\n if (parts.length === 0) return null;\n if (parts.length === 1) return parts[0];\n return group(parts, \" and \");\n}\n\n/** `exists (select 1 from \"Child\" as \"_r0\" where <correlation> [and <rest>])`. */\nfunction existence(\n source: Correlated,\n correlation: Fragment,\n rest: Fragment | null,\n negated: boolean,\n): Fragment {\n const parts: Fragment[] = [\n sql(`${negated ? \"not \" : \"\"}exists (select 1 from ${source.source} where `),\n correlation,\n ];\n\n if (rest) parts.push(sql(\" and \"), rest);\n parts.push(sql(\")\"));\n\n return concat(...parts);\n}\n\n/**\n * Which operators a relation filter asked for, with Prisma's shorthands folded\n * into the same shape.\n *\n * A to-one accepts the filter directly — `where: { user: { email } }` means\n * `is` — and accepts `null` for \"no related row\". A to-many does not: Prisma\n * requires one of `some` / `every` / `none`, because a bare object there has no\n * unambiguous reading.\n */\nfunction readOperators(\n schema: ModelSchema,\n relation: RelationSchema,\n value: unknown,\n operators: readonly string[],\n context: WhereContext,\n): Record<string, unknown> & { direct?: boolean } {\n const path = `where.${relation.name}`;\n const many = relation.kind === \"many\";\n\n if (value === null) {\n if (many) {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n context.operation,\n `${relation.name} is a to-many relation, so null is not a filter for ` +\n `it. Use { none: {} } for \"has no related rows\".`,\n );\n }\n return { is: null, direct: true };\n }\n\n if (typeof value !== \"object\" || Array.isArray(value)) {\n throw new InvalidArgumentError(\n path,\n schema.name,\n context.operation,\n many\n ? `Expected an object holding ${operators.join(\", \")}.`\n : `Expected an object, or null.`,\n );\n }\n\n if (isOperatorForm(value as object, operators)) {\n return value as Record<string, unknown>;\n }\n\n if (many) {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n context.operation,\n `Expected one of ${operators.join(\", \")}. A to-many relation has no ` +\n `single reading of a bare filter — { some: … } and { every: … } mean ` +\n `different things.`,\n );\n }\n\n // The to-one shorthand. Marked so the binder path stays on the object the\n // caller wrote rather than descending into an `is` key that is not there.\n return { is: value, direct: true };\n}\n\n\n/**\n * `{ username_provider: { username, provider } }` -> `username = ? and\n * provider = ?`.\n *\n * Returns `null` when `key` names no declared composite unique, so the caller\n * can fall through to reporting an unknown field.\n */\nfunction compileCompoundKey(\n schema: ModelSchema,\n key: string,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment | null {\n // `uniqueKeys`, not `schema.uniques` — the primary key is a unique key, and a\n // compound `@@id` lives only in `schema.primaryKey`. Searching `uniques`\n // alone made the two halves of this disagree: `matchUniqueKey` accepted\n // `tenantId_code` (it asks `uniqueKeys`, which includes the primary key), so\n // the operation compiled, and then this returned `null` and the caller\n // reported an unknown field. Both spellings failed and each error pointed at\n // the other.\n //\n // Invisible until now because the template's only compound key is\n // `SocialAccount`'s `@@unique([username, provider])`. A compound `@@id` — a\n // join table, or any tenant-scoped `@@id([tenantId, id])` — was unreachable\n // by key at all.\n const members = uniqueKeys(schema).find(\n (group) => group.length > 1 && group.join(\"_\") === key,\n );\n if (!members) return null;\n\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new InvalidArgumentError(\n `where.${key}`,\n schema.name,\n context.operation,\n `Expected an object holding ${members.join(\" and \")}.`,\n );\n }\n\n const supplied = value as Record<string, unknown>;\n const parts: Fragment[] = [];\n\n for (const member of members) {\n // Every member is required: a composite key is only unique as a whole, so\n // a partial one would quietly become a non-unique lookup.\n if (supplied[member] === undefined) {\n throw new UnsupportedQueryError(\n `where.${key}`,\n schema.name,\n context.operation,\n `Missing '${member}'. A composite key needs all of ${members.join(\", \")}.`,\n );\n }\n\n parts.push(\n compileFieldFilter(\n schema,\n schema.fields[member],\n supplied[member],\n context,\n (args) => locate(args)?.[member],\n ),\n );\n }\n\n return parts.length === 1 ? parts[0] : group(parts, \" and \");\n}\n\n/** `AND` / `OR`, accepting Prisma's array form and its single-object form. */\nfunction compileGroup(\n schema: ModelSchema,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n joiner: \"AND\" | \"OR\",\n): Fragment | null {\n const parts: Fragment[] = [];\n\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const compiled = compileWhere(\n schema,\n value[i],\n context,\n (args) => locate(args)?.[i],\n );\n if (compiled) parts.push(compiled);\n }\n } else {\n const compiled = compileWhere(schema, value, context, locate);\n if (compiled) parts.push(compiled);\n }\n\n if (parts.length === 0) {\n // Prisma: an empty `AND` is vacuously true and contributes nothing; an empty\n // `OR` matches nothing at all. Verified against the SQL Prisma emits — it\n // produces `1=1` and `1=0` respectively.\n return joiner === \"AND\" ? null : FALSE;\n }\n if (parts.length === 1) return parts[0];\n return group(parts, joiner === \"AND\" ? \" and \" : \" or \");\n}\n\n/**\n * Boolean literals rather than `1=0` (which is what Prisma emits): they carry\n * the same meaning on both dialects and keep the invariant that no digit ever\n * reaches the SQL text outside an identifier, which is an actual test.\n */\nconst FALSE: Fragment = sql(\"false\");\n\nfunction group(parts: Fragment[], separator: string): Fragment {\n return concat(sql(\"(\"), joinFragments(parts, separator), sql(\")\"));\n}\n\n/**\n * Wraps a fragment in parentheses unless it already is one. `group` is the only\n * thing that emits a leading `(`, and it always closes it, so the check is\n * exact — and it keeps `not (...)` from stuttering into `not ((...))`.\n */\nfunction parenthesize(fragment: Fragment): Fragment {\n return fragment.text.startsWith(\"(\") ? fragment : group([fragment], \"\");\n}\n\n/** Every operator Prisma allows on a scalar field. */\nconst OPERATORS = new Set([\n \"equals\",\n \"not\",\n \"in\",\n \"notIn\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n \"contains\",\n \"startsWith\",\n \"endsWith\",\n \"mode\",\n]);\n\nconst COMPARISONS: Record<string, string> = {\n lt: \"<\",\n lte: \"<=\",\n gt: \">\",\n gte: \">=\",\n};\n\n/**\n * The internal key a batched relation loader uses to match a **tuple** of\n * columns against a list of tuples — the composite-relation counterpart of\n * `in`, and the reason #97 exists.\n *\n * **`$`-prefixed because a Prisma field cannot be.** Field names match\n * `[A-Za-z][A-Za-z0-9_]*`, so this cannot collide with a column, which a\n * `__`-prefixed name could not promise.\n *\n * It is not part of the public argument grammar, and that is **enforced rather\n * than asserted**. This branch sits above the field lookup, so a caller writing\n * the key by hand used to be honoured — not an injection, since the fields are\n * resolved against the schema and the values are bound, but an undocumented\n * input surface with none of the operand validation its neighbours have. The\n * operand now has to carry {@link PLANNER}, a module-private `Symbol` an\n * application cannot reach, exactly as `markPreScoped` and `markOrmAuthored`\n * gate their own claims.\n */\nexport const COMPOSITE_IN = \"$compositeIn\";\n\n/**\n * Marks a composite-`in` operand as the planner's own.\n *\n * A `Symbol`, so it is invisible to `Object.entries` — which means it does not\n * reach the plan key, where it would be noise, and cannot be written in JSON by\n * a caller who has seen the key name in a stack trace.\n */\nconst PLANNER = Symbol(\"gemi.orm.compositeInFromPlanner\");\n\n/** `{ fields: [\"a\", \"b\"], values: [[1, \"x\"], [2, \"y\"]] }`. */\ninterface CompositeInOperand {\n fields: string[];\n values: unknown[][];\n}\n\nexport function plannerCompositeIn(\n fields: string[],\n values: unknown[][],\n): Record<string, unknown> {\n return { [PLANNER]: true, fields, values };\n}\n\n/**\n * `(a, b) in (…)`, in whichever form the dialect can bind.\n *\n * Only ever reached on a dialect whose `canBindCompositeIn` said yes for these\n * column types — `plan-relations.ts` asks before it emits this key, and keeps\n * the portable `OR` of `AND`s otherwise. So there is no fallback here: arriving\n * with a dialect that cannot express it is a bug in that decision, not a shape\n * to degrade.\n */\nfunction compileCompositeIn(\n schema: ModelSchema,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n const fields = assertCompositeInOperand(schema, operand, context);\n\n const resolved = fields.map((name) => {\n const field = schema.fields[name];\n if (!field) {\n throw new UnknownFieldError(name, schema.name, Object.keys(schema.fields));\n }\n return field;\n });\n\n const columns = resolved.map(\n (field) =>\n `${context.qualifier ?? \"\"}${dialect.quoteIdent(field.column)}`,\n );\n\n return dialect.compositeIn(\n columns,\n resolved.map((field) => field.type),\n (args) => (locate(args) as CompositeInOperand).values,\n );\n}\n\n/**\n * The operand's shape, checked at **plan** time.\n *\n * Every other operand in this file is validated here rather than left to fail\n * at bind time — `assertCreateManyOperand`'s note says why: a refusal that\n * arrives later has to unwind work that should never have started. This one\n * was the exception, and it showed: `{ $compositeIn: null }` raised a raw\n * `TypeError` from a destructure, and `{ fields: [\"id\"] }` with no `values` at\n * all compiled clean and deferred its failure to bind time.\n */\nfunction assertCompositeInOperand(\n schema: ModelSchema,\n operand: unknown,\n context: WhereContext,\n): string[] {\n /**\n * A caller's key gets the **unknown-key treatment**, which is what the\n * original comment promised and what every other key it is not a field for\n * already gets. `UnsupportedQueryError` would render \"does not support\n * '$compositeIn' *yet*\" — a promise about a key that is deliberately not in\n * the grammar and never will be. That word has now been corrected once each\n * on #82 and #88; this is the third time it has been raised, which is enough\n * to stop treating it as a wording nit and use the error that is simply\n * accurate: `$compositeIn` is not a field on this model.\n */\n const notAField = (): never => {\n throw new UnknownFieldError(\n COMPOSITE_IN,\n schema.name,\n Object.keys(schema.fields),\n );\n };\n\n if (typeof operand !== \"object\" || operand === null || Array.isArray(operand)) {\n return notAField();\n }\n\n if ((operand as Record<symbol, unknown>)[PLANNER] !== true) {\n return notAField();\n }\n\n /**\n * Below here the operand *is* the planner's, so a bad shape is this ORM's bug\n * rather than a caller's — and `UnsupportedQueryError` is the right class for\n * it: an internal invariant that does not hold is genuinely something the\n * ORM does not support, and \"yet\" is the honest word for a state it should\n * not be in.\n */\n const refuse = (detail: string): never => {\n throw new UnsupportedQueryError(\n COMPOSITE_IN,\n schema.name,\n context.operation,\n detail,\n );\n };\n\n const { fields, values } = operand as CompositeInOperand;\n\n // Below here the operand *is* the planner's, so these are its bugs rather\n // than a caller's — worth catching at compile time for the same reason, and\n // worth a different sentence because the audience is different.\n if (!Array.isArray(fields) || fields.length === 0) {\n return refuse(`the planner built a '${COMPOSITE_IN}' with no fields.`);\n }\n if (!fields.every((name) => typeof name === \"string\")) {\n return refuse(`the planner built a '${COMPOSITE_IN}' with a non-string field.`);\n }\n if (!Array.isArray(values)) {\n return refuse(`the planner built a '${COMPOSITE_IN}' with no values.`);\n }\n if (!values.every((tuple) => Array.isArray(tuple) && tuple.length === fields.length)) {\n return refuse(\n `the planner built a '${COMPOSITE_IN}' whose tuples do not all have ` +\n `${fields.length} value(s).`,\n );\n }\n\n return fields;\n}\n\n/**\n * The filters Prisma applies to a **scalar list** — `tags String[]`.\n *\n * A different set on a different left-hand side, which is why it is a branch\n * rather than four more entries in `OPERATORS`: `contains` on a `String` asks\n * about a substring, and on a `String[]` there is no such question — the one\n * Prisma spells is `has`. Sharing the table would have made every scalar\n * operator compile against an array column and answer something.\n *\n * A tuple for the same reason {@link JSON_FILTER_NAMES} is one: `ListFilter` in\n * `../types` said in a comment that it mirrors this list, and a comment is not\n * something the compiler checks.\n */\nconst LIST_FILTER_NAMES = [\n \"equals\",\n \"has\",\n \"hasEvery\",\n \"hasSome\",\n \"isEmpty\",\n] as const;\n\n/** One of {@link LIST_FILTER_NAMES}. `ListFilter` maps over this. */\nexport type ListFilterName = (typeof LIST_FILTER_NAMES)[number];\n\nconst LIST_FILTERS: ReadonlySet<string> = new Set(LIST_FILTER_NAMES);\n\n/**\n * `where: { tags: { has: \"urgent\" } }`.\n *\n * **The dialect answers first**, before any operand is looked at, because on\n * SQLite the answer is \"not this column, on this database, ever\" rather than\n * \"not this filter\". That refusal used to live in the generator (#300) and\n * could not stay there: the generated artifact is dialect-agnostic on purpose,\n * so refusing a scalar list at generation refused it for Postgres too — and\n * refused the *whole artifact*, since one `String[]` anywhere threw before any\n * model was emitted.\n */\nfunction compileListFilter(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n assertListDialect(schema, field, `where.${field.name}`, context.operation, dialect);\n\n // **A bare array is not shorthand for `equals` here**, and that is the one\n // place a list deliberately reads differently from a scalar — where\n // `{ email: \"a@b\" }` means `equals`, `{ tags: [\"a\"] }` means nothing.\n //\n // Not a judgement call: Prisma refuses it, measured against a generated 6.19\n // client — *\"Argument `strings`: Invalid value provided. Expected\n // StringNullableListFilter, provided (String).\"* Accepting it would make gemi\n // a silent superset of Prisma on the one dialect where a differential test\n // could otherwise check every other answer, which is the trade this project\n // has declined every time it has come up.\n //\n // The asymmetry that surprises: the same bare array *is* accepted as a\n // **write** value — `data: { tags: [\"a\"] }` is valid Prisma and valid here.\n // Filter and value are different positions and Prisma treats them\n // differently; so does this.\n if (Array.isArray(value)) {\n throw new InvalidArgumentError(\n `where.${field.name}`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list, and a bare array is not a filter on ` +\n `one — Prisma rejects it here too. Say which comparison you mean: ` +\n `{ ${field.name}: { equals: [...] } } for the whole list, or ` +\n `{ ${field.name}: { hasEvery: [...] } } for \"contains all of these\". ` +\n `A bare array *is* accepted as a value in \\`data\\`.`,\n );\n }\n\n if (!isFilterObject(value)) {\n throw new InvalidArgumentError(\n `where.${field.name}`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list. Expected an object holding ` +\n `${[...LIST_FILTERS].sort().join(\", \")}; received ` +\n `${value === null ? \"null\" : typeof value}.`,\n );\n }\n\n const filter = value as Record<string, unknown>;\n const parts: Fragment[] = [];\n\n // Sorted, for the reason `compileWhere` sorts: the plan cache canonicalises\n // key order, so two objects differing only in it must compile alike.\n for (const key of Object.keys(filter).sort()) {\n const operand = filter[key];\n if (operand === undefined) continue;\n\n if (!LIST_FILTERS.has(key)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list, and a list filter takes ` +\n `${[...LIST_FILTERS].sort().join(\", \")}. The scalar operators — ` +\n `${[...OPERATORS].sort().join(\", \")} — apply to a single value and ` +\n `Prisma does not offer them here.`,\n );\n }\n\n const at = (args: any) => locate(args)?.[key];\n parts.push(listComparison(schema, field, column, key, operand, context, at));\n }\n\n // An empty filter object constrains nothing, which is what the scalar path\n // does with `{}` too.\n if (parts.length === 0) return sql(\"true\");\n if (parts.length === 1) return parts[0];\n return group(parts, \" and \");\n}\n\n/** One list filter key. */\nfunction listComparison(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n key: string,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n\n if (key === \"equals\") {\n return listEquals(schema, field, column, operand, context, locate);\n }\n\n if (key === \"isEmpty\") {\n if (typeof operand !== \"boolean\") {\n throw new InvalidArgumentError(\n `where.${field.name}.isEmpty`,\n schema.name,\n context.operation,\n `Expected true or false, received ${operand === null ? \"null\" : typeof operand}.`,\n );\n }\n return dialect.listIsEmpty(column, operand);\n }\n\n if (key === \"has\") {\n // One **element**, so it binds as one — through the element's own field, so\n // a `Json[]` gets #209's `::text::jsonb` on the placeholder and the\n // serialisation that has to travel with it. Binding it as a list instead\n // would produce an array literal on the left of `= any(...)`, and binding\n // it with no cast answers *false* on a `Json[]` rather than raising.\n const element = elementOf(field);\n return dialect.listHas(\n column,\n fieldParam(element, dialect, encoded(element, dialect, locate)),\n );\n }\n\n // `hasEvery` / `hasSome` — both take a list, and both have a defined answer\n // for an empty one: `@> '{}'` is true of every row and `&& '{}'` of none,\n // which is what Prisma means by \"contains all of nothing\" and \"shares one\n // element with nothing\".\n if (!Array.isArray(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Expected an array, received ${operand === null ? \"null\" : typeof operand}.`,\n );\n }\n\n const values = fieldParam(field, dialect, encoded(field, dialect, locate));\n return key === \"hasEvery\"\n ? dialect.listHasEvery(column, values)\n : dialect.listHasSome(column, values);\n}\n\n/** `\"tags\" = $1` — whole-list equality, which is order-sensitive in SQL. */\nfunction listEquals(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n\n // A list column cannot be null in Prisma — `String[]?` is refused at schema\n // validation — but `equals: null` is still in the generated filter type, and\n // a column written by something other than Prisma can hold NULL. Same\n // reading as everywhere else: `= NULL` matches nothing, `is null` is meant.\n if (operand === null) return sql(`${column} is null`);\n\n if (!Array.isArray(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.equals`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list, so it compares against an array. ` +\n `Received ${typeof operand}. For \"is this element present\", use ` +\n `{ ${field.name}: { has: … } }.`,\n );\n }\n\n return concat(\n sql(`${column} = `),\n fieldParam(field, dialect, encoded(field, dialect, locate)),\n );\n}\n\n/**\n * The same field, seen as **one element of itself**.\n *\n * `type` already carries the element type — that is the whole reason `isList`\n * is a flag beside it rather than a `ScalarType` constructor — so dropping the\n * flag is the entire conversion, and `encode`, `decode` and `castParameter` all\n * read it as the scalar they were written for.\n */\nfunction elementOf(field: FieldSchema): FieldSchema {\n return { ...field, isList: false };\n}\n\n/**\n * Refuses a scalar list on a dialect that has no array type, naming it.\n *\n * Shared by the read and write paths, and it says more than \"unsupported\"\n * because the reader's likeliest next question is whether they did something\n * wrong. They did not: Prisma refuses the *column* on SQLite, so a schema that\n * declares one was generated against Postgres and this process is pointed at a\n * database that could not hold it either.\n */\nexport function assertListDialect(\n schema: ModelSchema,\n field: FieldSchema,\n argument: string,\n operation: string,\n dialect: SqlDialect,\n): void {\n if (dialect.listFilters.size > 0) return;\n\n throw new UnsupportedQueryError(\n argument,\n schema.name,\n operation,\n `'${field.name}' is a scalar list, and ${dialect.name} has no array type ` +\n `to hold one. Prisma refuses the column itself on ${dialect.name} — ` +\n `\"the current connector does not support lists of primitive types\" — so ` +\n `this is a difference between the databases rather than a gap in the ` +\n `ORM. The generated artifact is dialect-agnostic, which is why this ` +\n `surfaces here rather than at \\`prisma generate\\`: the schema was ` +\n `generated against Postgres and DATABASE_URL names a ${dialect.name} ` +\n `database, which has no '${field.column}' column either. It works on ` +\n `postgres.`,\n );\n}\n\n/**\n * The filters Prisma applies to a value extracted from a JSON path.\n *\n * **A tuple, and the caller-facing type is a mapped type over it.**\n * `JsonPathFilter` in `../types` used to spell these ten names a second time,\n * in a file that neither imports this one nor is imported by it, so the two\n * lists could differ with no compile error, no failing test and no diff a\n * reviewer would flag. That is the mechanism behind #326, #333, #336 and #337 —\n * the compiler accepting something the type refuses to describe — and #336 was\n * the worst of them because the undescribed filter was silently absorbed as an\n * `equals` shorthand rather than refused.\n *\n * Deriving the type from this list makes the drift a compile error at the call\n * sites instead of something the next reviewer has to notice.\n */\nconst JSON_FILTER_NAMES = [\n \"equals\",\n \"not\",\n \"string_contains\",\n \"string_starts_with\",\n \"string_ends_with\",\n \"array_contains\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n] as const;\n\n/** One of {@link JSON_FILTER_NAMES}. `JsonPathFilter` maps over this. */\nexport type JsonFilterName = (typeof JSON_FILTER_NAMES)[number];\n\nconst JSON_FILTERS: ReadonlySet<string> = new Set(JSON_FILTER_NAMES);\n\n/**\n * `where: { metadata: { path: …, equals: … } }`.\n *\n * **Two dialects, two path grammars, and that is Prisma's split rather than\n * this ORM's.** Measured on both through a generated client: Postgres takes\n * `path: [\"a\", \"b\"]` and refuses a string; SQLite takes `path: \"$.a.b\"` and\n * refuses an array. So the argument is dialect-specific before it arrives here,\n * and `jsonPathSyntax` is what lets the check say which form *this* database\n * wants instead of failing inside the driver.\n *\n * **The path is bound, never interpolated.** This is the one place a caller's\n * value decides part of an expression's meaning, which makes it the obvious\n * place to break invariant 2 by accident. Neither dialect needs it in the text:\n * Postgres's `#>` takes a `text[]` parameter and SQLite's `json_extract` takes\n * a string, so the whole feature fits inside the existing rule.\n *\n * The operator set is the dialect's too. Prisma refuses `array_contains` and\n * the numeric comparisons on SQLite — *\"Unknown argument\"* — so refusing them\n * here is matching it, not falling short: implementing them would make gemi\n * answer a query the oracle cannot, which is precisely where a differential\n * test stops being able to check anything.\n */\nfunction compileJsonFilter(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n filter: Record<string, unknown>,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n\n if (field.type !== \"Json\") {\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A 'path' filter reads inside a JSON document, and '${field.name}' is ` +\n `a ${field.type} column.`,\n );\n }\n\n assertPathShape(schema, field, filter.path, context);\n\n const path: Binder = (args) => locate(args)?.path;\n // **An `undefined` operand is an absent one**, which is the rule the scalar\n // operator loop already follows (`if (operand === undefined …) continue`) and\n // the rule the dispatch above follows for `path` itself\n // (`filter.path !== undefined`). Building `applied` from `Object.keys` alone\n // made this branch the one place that broke it: a filter assembled from a\n // form or a query string carries `equals: undefined` for the field nobody\n // filled in, and that compiled to `= NULL` — a predicate no row can satisfy —\n // where the same query with the key simply omitted got the bare-path refusal\n // below.\n //\n // Prisma answers both spellings identically. Measured on a generated 6.19.2\n // client against Postgres: `{ path: [\"a\"], equals: undefined }` and\n // `{ path: [\"a\"] }` both raise P2019 *\"A JSON path cannot be set without a\n // scalar filter.\"*, and `{ path: [\"a\"], equals: 1, gt: undefined }` compiles\n // the `equals` alone.\n //\n // **This is also what makes the plan cache safe here**, which is the stronger\n // reason and the one a reader will otherwise have to re-derive.\n // `canonicalShape` drops `undefined` members, so the two spellings were\n // already *one* cache key — measured:\n //\n // planKey(postgres, \"User\", \"findMany\", { where: { metadata: { path: [\"a\"] } } })\n // planKey(postgres, \"User\", \"findMany\", { where: { metadata: { path: [\"a\"], equals: undefined } } })\n // both -> postgres:batched:User:findMany:{where:{metadata:{path:[string]}}}\n //\n // while they compiled to two different things, a refusal and a `= NULL` plan.\n // Whichever compiled first decided for the other, so a bare `path` arriving\n // second was served the never-true plan instead of the refusal it raises\n // cold. Both throw now, so there is nothing left for the shared key to\n // collide on.\n const applied = Object.keys(filter)\n .filter((key) => key !== \"path\" && filter[key] !== undefined)\n .sort();\n\n if (applied.length === 0) {\n // Prisma: \"A JSON path cannot be set without a scalar filter.\" Reproduced\n // because the alternative is an extraction with nothing to compare it to,\n // which compiles to a value in a predicate position on one dialect and to\n // an error on the other.\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A 'path' needs a filter beside it — ${[...JSON_FILTERS].sort().join(\", \")}. ` +\n `Prisma refuses a bare path too.`,\n );\n }\n\n const parts: Fragment[] = [];\n\n for (const key of applied) {\n if (!JSON_FILTERS.has(key)) {\n throw new UnsupportedQueryError(\n `${field.name}.${key}`,\n schema.name,\n context.operation,\n `A JSON path filter takes ${[...JSON_FILTERS].sort().join(\", \")}.`,\n );\n }\n\n if (!dialect.jsonFilters.has(key)) {\n throw new UnsupportedQueryError(\n `${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${key}' on a JSON path is not available on ${dialect.name}. Prisma ` +\n `refuses it here too, so this is a difference between the databases ` +\n `rather than a gap in the ORM. It works on postgres.`,\n );\n }\n\n const operand = filter[key];\n\n // **The sentinels have to be refused here, and only here.**\n //\n // `compileFieldFilter` refuses a bare sentinel above this branch, and\n // refuses `AnyNull` under a non-`equals`/`not` operator in the scalar key\n // loop below it. A `path` filter sits between the two and reaches neither,\n // so before this check a sentinel inside a JSON filter went straight to the\n // binder: Postgres compared against the literal text `Prisma.DbNull` and\n // SQLite bound the sentinel object. Zero rows, no error — the failure class\n // #259 and #266 exist to close, arrived at from the one direction nothing\n // was watching.\n //\n // Refused rather than mapped. The scalar path *can* answer these because it\n // compiles them against the column, where SQL NULL and the JSON value\n // `null` are distinguishable. An extracted value has already lost that\n // distinction — `#>>` yields NULL both for an absent key and for a JSON\n // null — so answering here would mean picking one meaning and being\n // silently wrong about the other.\n const sentinel = jsonNullKind(operand);\n if (sentinel) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `${sentinelName(sentinel)} is not a filter on an extracted JSON ` +\n `value: the extraction yields NULL for an absent key and for a JSON ` +\n `null alike, so the distinction the sentinel exists to make is ` +\n `already gone. Filter the column itself — ` +\n `{ ${field.name}: { equals: ${sentinelName(sentinel)} } } — or test ` +\n `the path against the value you mean.`,\n );\n }\n\n // The same shape one level down: `{ path: …, equals: { not: DbNull } }`.\n if (carriesAnyNull(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Prisma.AnyNull cannot be reached through a JSON path, for the same ` +\n `reason the other two cannot: the extracted value does not ` +\n `distinguish an absent key from a JSON null.`,\n );\n }\n\n assertJsonOperand(key, operand, schema, field, context);\n\n parts.push(\n jsonComparison(key, column, path, field, dialect, (args) =>\n locate(args)?.[key],\n ),\n );\n }\n\n return parts.length === 1\n ? parts[0]\n : group(parts, \" and \");\n}\n\n/**\n * What each JSON filter will accept as its operand.\n *\n * Three defects, all of them the shape the scalar path is already careful about\n * and all silent:\n *\n * - **The string filters had no non-string guard.** Their scalar siblings\n * refuse one, with a comment explaining that `String(null)` makes the\n * pattern `%null%` — \"a query that runs and returns the wrong rows\".\n * `string_contains: null` compiled to `like NULL`, which matches nothing\n * and raises nothing; `string_contains: 5` compiled to `%5%`. Prisma raises\n * for both.\n *\n * - **`equals` / `not` accepted a non-scalar.** On Postgres the comparison\n * binds `String(raw)` because `#>>` yields text, so `equals: { b: 1 }` bound\n * the string `\"[object Object]\"` and matched nothing.\n *\n * - **`null` fell between the two.** The string branch refuses a non-string\n * and the object branch tests `operand !== null` first, so `equals: null`\n * reached the binder and compiled to `= NULL` — see the guard below.\n *\n * The last two are a **refusal rather than an implementation**, deliberately.\n * Prisma does accept an object or an array there, and answering it properly\n * means the `#>` + `::jsonb` form `array_contains` already uses — which is\n * Postgres-only, so implementing it would give SQLite either a second wrong\n * answer or a silent divergence. Refusing names the limitation on both\n * dialects, which is what this file does everywhere else it cannot answer.\n * `array_contains` is exempt from the object rule because containment is\n * precisely the operator that takes a document — but not from the `null` one,\n * because a bound SQL NULL is not a JSON `null` on either side of `@>`.\n */\nfunction assertJsonOperand(\n key: string,\n operand: unknown,\n schema: ModelSchema,\n field: FieldSchema,\n context: WhereContext,\n): void {\n const stringly =\n key === \"string_contains\" ||\n key === \"string_starts_with\" ||\n key === \"string_ends_with\";\n\n if (stringly && typeof operand !== \"string\") {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Expected a string, received ${\n operand === null ? \"null\" : typeof operand\n }. Prisma raises here too — without this the pattern becomes ` +\n `'%${String(operand)}%', which runs and returns the wrong rows.`,\n );\n }\n\n // **`null` is refused under every path operator, and it is a refusal rather\n // than a gap.**\n //\n // Measured on a generated 6.19.2 client against Postgres, with query-event\n // logging and the rows read back: Prisma extracts with `#>` and compares as\n // `jsonb`, so `{ path: [\"a\"], equals: null }` asks for the JSON value `null`\n // and returns the rows that hold one — the same SQL and the same rows as\n // `equals: Prisma.JsonNull`. gemi extracts with `#>>`, which yields *text*,\n // and NULL for an absent key and for a JSON null alike. That collapse is\n // exactly why the sentinels are refused a few lines above, and it leaves this\n // operand nothing to mean.\n //\n // Left alone it reached the binder and compiled to `(\"metadata\" #>> $1) = $2`\n // bound to NULL — `= NULL` is NULL rather than true on both dialects, so the\n // query ran, raised nothing, and matched no row where Prisma matched some.\n // The `string_contains` guard above names that failure in this file's own\n // words, \"runs and returns the wrong rows\"; only the arithmetic differs.\n //\n // `array_contains` is included rather than exempt, **and its mechanism is a\n // different one**. It takes the `#>` form, so the text collapse above does\n // not apply to it — but `jsonArrayContains` binds the operand raw, so `null`\n // arrives as SQL NULL and `x @> NULL` is NULL too. Prisma binds it as the\n // JSON value and runs a real containment test. The message below branches for\n // that reason: telling an `array_contains` caller about `#>>` would name a\n // mechanism this operator does not have, and pointing them at\n // `{ equals: Prisma.JsonNull }` would answer a containment question with an\n // equality on the column.\n //\n // Answering any of them properly means the `#> … ::jsonb` form on Postgres\n // and `json_type` on SQLite, which is a second implementation of the same\n // operator per dialect rather than a guard — the same reason the object\n // operand below is refused instead of compiled.\n if (operand === null) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n key === \"array_contains\"\n ? `null cannot be tested for containment through a JSON path: the ` +\n `operand binds as SQL NULL rather than as the JSON value, and ` +\n `'x @> NULL' is NULL rather than true — the query would run and ` +\n `match nothing. Prisma binds it as the JSON value and runs a real ` +\n `containment test; gemi does not yet. A null *inside* the document ` +\n `is an ordinary value and still compiles: ` +\n `{ ${field.name}: { path: […], array_contains: [null] } }.`\n : `null cannot be compared through a JSON path: the extraction yields ` +\n `SQL NULL for an absent key and for a JSON null alike, and the ` +\n `comparison against it is NULL rather than true — the query would ` +\n `run and match nothing. Prisma reads it as the JSON value null and ` +\n `does answer it; gemi does not yet. Filter the column itself — ` +\n `{ ${field.name}: { equals: Prisma.JsonNull } } — or test the path ` +\n `against the value you mean.`,\n );\n }\n\n if (key === \"array_contains\" || stringly) return;\n\n // `equals`, `not`, and the four numeric comparisons all compare an extracted\n // scalar against one bound value. No `!== null` here: `typeof null` is\n // `\"object\"`, and the guard above has already refused it with its own reason.\n if (typeof operand === \"object\") {\n throw new UnsupportedQueryError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${key}' on a JSON path compares the extracted value as a scalar, so ` +\n `an object or array operand cannot be expressed — it would bind as ` +\n `'${String(operand)}' and match nothing. Prisma accepts one here; ` +\n `gemi does not yet. Use array_contains for containment, or narrow the ` +\n `path until it names a scalar.`,\n );\n }\n}\n\n/** The comparison for one JSON filter key. */\nfunction jsonComparison(\n key: string,\n column: string,\n path: Binder,\n field: FieldSchema,\n dialect: SqlDialect,\n value: Binder,\n): Fragment {\n if (key === \"array_contains\") {\n return dialect.jsonArrayContains(column, path, value);\n }\n\n // The string filters compare *text*, so they need the text-returning\n // extraction; everything else compares the value.\n const stringly =\n key === \"string_contains\" ||\n key === \"string_starts_with\" ||\n key === \"string_ends_with\";\n\n const extracted = dialect.jsonExtract(column, path, true);\n\n if (stringly) {\n const wrap =\n key === \"string_contains\"\n ? (text: string) => `%${text}%`\n : key === \"string_starts_with\"\n ? (text: string) => `${text}%`\n : (text: string) => `%${text}`;\n\n return concat(\n sql(\"(\"),\n extracted,\n sql(\") like \"),\n param((args, context) => {\n const raw = value(args, context);\n return raw === null || raw === undefined ? null : wrap(String(raw));\n }),\n );\n }\n\n const operator =\n key === \"equals\" ? \"=\" : key === \"not\" ? \"<>\" : COMPARISONS[key];\n\n // `#>>` and `json_extract` both yield text, so a numeric comparison has to\n // compare numbers rather than their spellings — otherwise \"10\" < \"9\". The\n // cast is structural, never a value.\n const numeric = key !== \"equals\" && key !== \"not\";\n const lhs = numeric\n ? concat(sql(\"cast((\"), extracted, sql(\") as real)\"))\n : concat(sql(\"(\"), extracted, sql(\")\"));\n\n return concat(\n lhs,\n sql(` ${operator} `),\n param((args, context) => {\n const raw = value(args, context);\n if (raw === null || raw === undefined) return null;\n if (numeric) return Number(raw);\n // Text on Postgres, native on SQLite — see `jsonComparesAsText`. The\n // wrong one returns no rows on one dialect and raises on the other.\n return dialect.jsonComparesAsText ? String(raw) : raw;\n }),\n );\n}\n\n/** The path is a string on SQLite and an array of string keys on Postgres. */\nfunction assertPathShape(\n schema: ModelSchema,\n field: FieldSchema,\n path: unknown,\n context: WhereContext,\n): void {\n const { dialect } = context;\n const wanted = dialect.jsonPathSyntax === \"array\" ? \"array\" : \"jsonpath\";\n const got = Array.isArray(path) ? \"array\" : typeof path === \"string\" ? \"jsonpath\" : \"other\";\n\n // **The empty path is refused on both dialects, and it is not the same\n // mistake as a wrong shape.** `[]` on Postgres extracts the whole document —\n // `[].every` is vacuously true, so it used to pass this check — and `\"\"` on\n // SQLite raises inside `json_extract` at execution time. Neither is a path,\n // and a caller who wrote one meant to write something. Refused with its own\n // sentence rather than the grammar message below, which would tell them to\n // use the form they already used.\n const empty =\n (Array.isArray(path) && path.length === 0) || path === \"\";\n if (empty) {\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A JSON path cannot be empty. ${\n dialect.jsonPathSyntax === \"array\"\n ? `On ${dialect.name} an empty array selects the whole document, ` +\n `which is a filter on the column rather than on a path — write ` +\n `{ ${field.name}: { equals: … } } if that is what you meant.`\n : `On ${dialect.name} an empty string raises inside json_extract.`\n }`,\n );\n }\n\n if (got === wanted) {\n if (wanted !== \"array\") return;\n\n // **Every segment is a string, and the number that used to be allowed here\n // was a superset of the oracle.** Prisma's generated `path` on Postgres is\n // `string[]`, and its client refuses a number at run time as well as at\n // compile time — measured on 6.19.2: `path: [\"items\", 0]` answers\n // *\"Argument `path`: Invalid value provided. Expected String, provided\n // Int.\"* before any SQL is built.\n //\n // Refused rather than kept, because this file already states the rule that\n // decides it: answering a query the oracle cannot express is \"precisely\n // where a differential test stops being able to check anything\"\n // (`compileJsonFilter`'s docblock, on the SQLite operators). Nothing is\n // lost — `[\"items\", \"0\"]` reaches the same array element, since `#>` takes\n // a `text[]` and the segment arrives as text either way. Measured: both\n // spellings bind `[\"items\", \"0\"]` and return the same row on Prisma, and\n // gemi's binder already stringifies through the `text[]` cast.\n //\n // Its own sentence rather than the grammar message below, which would tell\n // a caller who wrote an array to write an array.\n const offending = (path as unknown[]).findIndex(\n (part) => typeof part !== \"string\",\n );\n if (offending === -1) return;\n\n // `a ${typeof part}` alone reads as \"a undefined\" / \"a object\" for every\n // segment but the number, so the description is spelled out. And the array\n // index sentence is advice for one mistake in particular — a caller who\n // wrote `null` did not write an index — so it is gated on the number\n // rather than emitted for everything.\n const part = (path as unknown[])[offending];\n const described =\n part === null\n ? \"null\"\n : part === undefined\n ? \"undefined\"\n : Array.isArray(part)\n ? \"an array\"\n : typeof part === \"object\"\n ? \"an object\"\n : `a ${typeof part}`;\n\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A JSON path is an array of strings, and path[${offending}] is ` +\n `${described}. ` +\n (typeof part === \"number\"\n ? `An array index is a key too — write [\"items\", \"0\"] rather than ` +\n `[\"items\", 0]; it reaches the same element, because ` +\n `${dialect.name} takes the path as text. Prisma's path is ` +\n `string[] and its client refuses a number here too.`\n : `Prisma's path is string[] too.`),\n );\n }\n\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n dialect.jsonPathSyntax === \"array\"\n ? `On ${dialect.name} a JSON path is an array of keys — [\"a\", \"b\"] — ` +\n `not a JSONPath string. Prisma splits them the same way, and refuses ` +\n `the other form on each database.`\n : `On ${dialect.name} a JSON path is a JSONPath string — \"$.a.b\" — not ` +\n `an array of keys. Prisma splits them the same way, and refuses the ` +\n `other form on each database.`,\n );\n}\n\nfunction compileFieldFilter(\n schema: ModelSchema,\n field: FieldSchema,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n const column = `${context.qualifier ?? \"\"}${dialect.quoteIdent(field.column)}`;\n\n // A bare `Prisma.DbNull` is **not** shorthand for `equals`, and Prisma refuses\n // it: `where: { settings: Prisma.DbNull }` is an invalid invocation there,\n // spelled out under the offending key. Both sentinels are objects with no\n // enumerable properties, so left alone they read as an operator map holding\n // no operators — which compiles to `true`, and answered \"every row\" to a\n // question about the null ones.\n //\n // Refused rather than interpreted, because guessing which of the two nulls a\n // caller meant is the whole thing the sentinels exist to stop, and because\n // matching Prisma means matching its refusals as well as its results.\n const sentinel = jsonNullKind(value);\n if (sentinel) {\n throw new InvalidArgumentError(\n `where.${field.name}`,\n schema.name,\n context.operation,\n `${sentinelName(sentinel)} is not a filter on ` +\n `its own — Prisma rejects it here too. Write it as an explicit ` +\n `comparison: { ${field.name}: { equals: ${sentinelName(sentinel)} } }.`,\n );\n }\n\n // A scalar list takes a different operator set on a different left-hand side,\n // so the whole operand belongs to that branch — the same shape the `path`\n // check below has for a JSON document. Placed *above* the bare-value\n // shorthand because on a list the bare form is an **array**, which\n // `isFilterObject` reports as a value and would send to the scalar `equals`\n // with no dialect check and no operand validation.\n if (field.isList) {\n return compileListFilter(schema, field, column, value, context, locate);\n }\n\n // A bare value is shorthand for `equals`. A `Date` is a value, not a filter\n // object, even though `typeof` cannot tell them apart.\n if (!isFilterObject(value)) {\n return equals(column, field, value, dialect, locate);\n }\n\n const filter = value as Record<string, unknown>;\n const keys = Object.keys(filter).sort();\n\n // A `path` turns the whole operand into a JSON filter, whose operators are a\n // different set from the scalar ones and whose left-hand side is an\n // extraction rather than a column.\n if (filter.path !== undefined) {\n return compileJsonFilter(schema, field, column, filter, context, locate);\n }\n\n // Prisma-only, and only meaningful next to a string operator. Read here so it\n // does not get treated as an operator in its own right.\n const insensitive = filter.mode === \"insensitive\";\n if (filter.mode !== undefined && filter.mode !== \"default\") {\n if (!insensitive) {\n throw new InvalidArgumentError(\n `mode: ${JSON.stringify(filter.mode)}`,\n schema.name,\n context.operation,\n `Prisma takes 'default' or 'insensitive'.`,\n );\n }\n if (!dialect.supportsInsensitiveMode) {\n throw new UnsupportedQueryError(\n \"mode: \\\"insensitive\\\"\",\n schema.name,\n context.operation,\n `The ${dialect.name} dialect cannot express it — Prisma rejects it ` +\n `here too. Note SQLite's LIKE is already case-insensitive for ASCII.`,\n );\n }\n }\n\n const parts: Fragment[] = [];\n\n for (const key of keys) {\n const operand = filter[key];\n if (operand === undefined || key === \"mode\") continue;\n\n if (!OPERATORS.has(key)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `A scalar filter takes ${[...OPERATORS].sort().join(\", \")}.`,\n );\n }\n\n // `AnyNull` asks for both nulls at once, which only `equals` and `not` can\n // express. Under any other operator it has no meaning — Prisma's own\n // `JsonNullableFilter` admits it in exactly those two positions — and left\n // alone it would reach the binder, where it is an ORM bug by construction.\n // Refused here, where the field and operation are in scope to name it,\n // rather than at the backstop that would report it as ours.\n if (key !== \"equals\" && key !== \"not\" && carriesAnyNull(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Prisma.AnyNull means 'either kind of null', which only 'equals' and ` +\n `'not' can express. Write { ${field.name}: { equals: Prisma.AnyNull } }, ` +\n `or name the one you mean with Prisma.DbNull or Prisma.JsonNull.`,\n );\n }\n\n const at = (args: any) => locate(args)?.[key];\n\n switch (key) {\n case \"equals\":\n parts.push(equals(column, field, operand, dialect, at));\n break;\n\n case \"not\":\n parts.push(\n compileNot(schema, field, operand, context, at, column),\n );\n break;\n\n case \"in\":\n case \"notIn\":\n parts.push(\n inList(schema, column, field, operand, context, at, key === \"notIn\"),\n );\n break;\n\n case \"lt\":\n case \"lte\":\n case \"gt\":\n case \"gte\":\n parts.push(\n concat(\n sql(`${column} ${COMPARISONS[key]} `),\n fieldParam(field, dialect, encoded(field, dialect, at)),\n ),\n );\n break;\n\n case \"contains\":\n case \"startsWith\":\n case \"endsWith\":\n // Prisma raises \"Argument `contains` must not be null\" — verified.\n // Without this, `String(null)` makes the pattern `%null%`, which is a\n // query that runs and returns the wrong rows. The types catch the\n // static case but not a value that arrives dynamically.\n if (typeof operand !== \"string\") {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Expected a string, received ${operand === null ? \"null\" : typeof operand}.`,\n );\n }\n if (field.type !== \"String\") {\n throw new UnsupportedQueryError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${field.name}' is a ${field.type}, and ${key} only applies to strings.`,\n );\n }\n parts.push(dialect.like(column, insensitive, likePattern(key, at)));\n break;\n }\n }\n\n if (parts.length === 0) return sql(\"true\");\n if (parts.length === 1) return parts[0];\n return group(parts, \" and \");\n}\n\n/** How a sentinel is spelled in a message, so an error can be pasted back as code. */\nfunction sentinelName(kind: JsonNullKind): string {\n return `Prisma.${kind === \"db\" ? \"DbNull\" : kind === \"json\" ? \"JsonNull\" : \"AnyNull\"}`;\n}\n\n/**\n * Whether an operand is `AnyNull`, or a list holding one.\n *\n * The list case is the reachable one: `in: [Prisma.AnyNull]` type-checks\n * nowhere in Prisma, but nothing stops it being written in JavaScript, and\n * `inList` would bind it as an ordinary value.\n */\nfunction carriesAnyNull(operand: unknown): boolean {\n if (jsonNullKind(operand) === \"any\") return true;\n return Array.isArray(operand) && operand.some((item) => jsonNullKind(item) === \"any\");\n}\n\n/** `not` is a whole nested filter, not just a value — `not: { in: [...] }`. */\nfunction compileNot(\n schema: ModelSchema,\n field: FieldSchema,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n column: string,\n): Fragment {\n // `DbNull` is the sentinel spelling of the same question, so it takes the\n // same branch — see `equals`.\n if (operand === null || jsonNullKind(operand) === \"db\") {\n return sql(`${column} is not null`);\n }\n\n // `JsonNull` does not: it asks about a stored JSON *value*, so negating it is\n // a value comparison. Handled here rather than by delegating, because the\n // delegate refuses a bare sentinel — correctly, since Prisma does — and this\n // one did not arrive bare. `{ not: Prisma.JsonNull }` is a valid Prisma\n // filter and has to stay one.\n if (jsonNullKind(operand) === \"json\") {\n return concat(\n sql(\"not \"),\n parenthesize(equals(column, field, operand, context.dialect, locate)),\n );\n }\n\n // `not: AnyNull` is \"neither kind of null\", so it negates the union `equals`\n // builds. Safe to negate directly because that predicate is total — see the\n // note there — so no row falls through on NULL the way `not (col = value)`\n // would.\n if (jsonNullKind(operand) === \"any\") {\n return concat(\n sql(\"not \"),\n parenthesize(equals(column, field, operand, context.dialect, locate)),\n );\n }\n\n if (!isFilterObject(operand)) {\n return concat(\n sql(`${column} <> `),\n fieldParam(field, context.dialect, encoded(field, context.dialect, locate)),\n );\n }\n\n // `not: { in: [...] }` and the rest compile to `not (<positive form>)`.\n // Prisma emits `not in` directly, which is a different *text* but the same\n // predicate: both yield NULL — and so exclude the row — when the column is\n // NULL. The contract is equal results, not equal SQL.\n const inner = compileFieldFilter(schema, field, operand, context, locate);\n return concat(sql(\"not \"), parenthesize(inner));\n}\n\nfunction equals(\n column: string,\n field: FieldSchema,\n operand: unknown,\n dialect: SqlDialect,\n locate: (args: any) => any,\n): Fragment {\n // `= ?` with a null parameter matches nothing in SQL, where Prisma means\n // `is null`. This is the difference that would silently return wrong rows.\n //\n // `Prisma.DbNull` means the same thing on a `Json` column and arrives as a\n // sentinel object rather than as `null`, so it reached the parameter path\n // below and compiled to `= ?` — matching nothing, whatever the table held.\n // Its sibling `JsonNull` is a genuine *value* comparison and belongs there:\n // the column holds the JSON `null`, and `= 'null'` is how you find it.\n if (operand === null || jsonNullKind(operand) === \"db\") {\n return sql(`${column} is null`);\n }\n\n // `AnyNull` is the union of the other two, and the only operand here that is\n // not a single comparison. Both halves are needed: the column being SQL NULL\n // and the column holding the JSON value `null` are different rows, and this\n // is the one filter that asks for both.\n //\n // No three-valued-logic trap in the `or`. `is null` is never NULL, and when\n // the column is non-NULL the second half is a proper boolean — so the\n // predicate is total, which is what makes negating it in `compileNot` safe.\n if (jsonNullKind(operand) === \"any\") {\n return group(\n [sql(`${column} is null`), jsonNullComparison(column, field, dialect)],\n \" or \",\n );\n }\n\n return concat(\n sql(`${column} = `),\n fieldParam(field, dialect, encoded(field, dialect, locate)),\n );\n}\n\n/**\n * `<column> = <the JSON value null>`, as a bound parameter.\n *\n * The literal is the compiler's, not the caller's, so there is no argument to\n * read it out of — but it stays a parameter rather than being written into the\n * text, because invariant 2 admits no exception for a value the compiler\n * happens to know. It is also what keeps the dialects' encoders as the single\n * authority on how a JSON null is spelled: `'null'` on SQLite, `'null'::text::jsonb`\n * on Postgres, decided by `fieldParam` and `castParameter` rather than here.\n */\nfunction jsonNullComparison(\n column: string,\n field: FieldSchema,\n dialect: SqlDialect,\n): Fragment {\n return concat(\n sql(`${column} = `),\n fieldParam(field, dialect, () => dialect.encode(JSON_NULL, field)),\n );\n}\n\nfunction inList(\n schema: ModelSchema,\n column: string,\n field: FieldSchema,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n negated: boolean,\n): Fragment {\n const { dialect } = context;\n\n if (!Array.isArray(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${negated ? \"notIn\" : \"in\"}`,\n schema.name,\n context.operation,\n \"Expected an array.\",\n );\n }\n\n // `x in ()` is a syntax error, and Prisma emits a constant-false predicate\n // for it. `not in ()` is vacuously true by the same logic.\n if (operand.length === 0) return negated ? sql(\"true\") : FALSE;\n\n return dialect.inList(column, negated, operand.length, (args) => {\n const values = locate(args) as unknown[];\n return values.map((value) => dialect.encode(value, field));\n });\n}\n\n/**\n * Prisma does **not** escape `%` or `_` inside the value — verified by reading\n * the parameters it binds: `contains: \"50%_x\"` binds `\"%50%_x%\"`. So a user\n * string containing a wildcard really does act as a wildcard.\n *\n * That is a footgun, but the contract this ORM signs is differential equality\n * with Prisma, and escaping here would break it on every such query. Matching\n * Prisma and saying so is the honest option; diverging quietly is not.\n */\nfunction likePattern(\n operator: \"contains\" | \"startsWith\" | \"endsWith\",\n locate: (args: any) => any,\n): Binder {\n return (args) => {\n const value = String(locate(args));\n if (operator === \"contains\") return `%${value}%`;\n if (operator === \"startsWith\") return `${value}%`;\n return `%${value}`;\n };\n}\n\nfunction encoded(\n field: FieldSchema,\n dialect: SqlDialect,\n locate: (args: any) => any,\n): Binder {\n return (args) => dialect.encode(locate(args), field);\n}\n\n/**\n * True for `{ contains: ... }`, false for a plain value. A `Date` is a value\n * even though it is an object, and so is a `Uint8Array` for a `Bytes` column.\n */\nfunction isFilterObject(value: unknown): boolean {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n !ArrayBuffer.isView(value)\n );\n}\n",
8
+ "import type { SqlDialect } from \"../dialect\";\nimport {\n InvalidArgumentError,\n UnknownFieldError,\n UnsupportedQueryError,\n} from \"../errors\";\nimport {\n isOperatorForm,\n relationFilterOperators,\n} from \"../relation-filters\";\nimport type { FieldSchema, ModelSchema, RelationSchema } from \"../schema\";\nimport { type Correlated, correlate } from \"./correlate\";\nimport { uniqueKeys } from \"./unique\";\nimport {\n type Binder,\n type Fragment,\n concat,\n joinFragments,\n param,\n sql,\n} from \"./fragment\";\nimport { JSON_NULL, type JsonNullKind, jsonNullKind } from \"../json-null\";\nimport { fieldParam } from \"./cast\";\n\n/**\n * `where` -> a boolean expression, recursively.\n *\n * The shape here is the thing every later iteration extends, so it is worth\n * stating: this is a recursive function over the argument tree returning\n * `Fragment`s, with binders carrying paths into that tree. It is never string\n * concatenation with a parameter counter in an outer scope, and it never\n * branches on the dialect's *name* — where the dialects genuinely differ in\n * structure (`in`, `like`), the work is delegated to the dialect interface.\n *\n * Semantics are Prisma's, verified by running Prisma against SQLite and reading\n * the SQL it emits rather than by reasoning about the docs:\n *\n * | Prisma | SQL |\n * | --- | --- |\n * | `{ f: null }` | `f is null` |\n * | `{ f: { equals: null }}`| `f is null` |\n * | `{ f: { not: null } }` | `f is not null` |\n * | `{ f: { not: v } }` | `f <> ?` |\n * | `{ f: { in: [] } }` | `false` |\n * | `{ AND: [] }` | `true` |\n * | `{ OR: [] }` | `false` |\n * | `{ NOT: { a, b } }` | `not (a = ? and b = ?)` |\n *\n * Returns `null` when the object contributes no predicate at all, so the caller\n * can omit the clause rather than emit `where true`.\n */\nexport function compileWhere(\n schema: ModelSchema,\n where: unknown,\n context: WhereContext,\n /**\n * Re-locates this same object inside the argument tree at bind time.\n * Compilation reads the object it was handed; binding has to find it again in\n * whatever the caller passes. Explicit rather than assuming `args.where`, so\n * the nested `where`s inside an `include` tree can reuse this unchanged.\n */\n locate: (args: any) => any,\n): Fragment | null {\n if (where === undefined || where === null) return null;\n\n if (typeof where !== \"object\" || Array.isArray(where)) {\n throw new InvalidArgumentError(\n \"where\",\n schema.name,\n context.operation,\n \"Expected an object.\",\n );\n }\n\n const predicates: Fragment[] = [];\n\n // Sorted, not insertion-ordered: the plan cache canonicalises key order when\n // it builds the cache key, so two argument objects that differ only in key\n // order share one entry — and must therefore compile to the same SQL text.\n for (const key of Object.keys(where as Record<string, unknown>).sort()) {\n const value = (where as Record<string, unknown>)[key];\n // Prisma treats an explicit `undefined` as \"not provided\". Matching that\n // matters: it is how conditional filters are written in application code.\n if (value === undefined) continue;\n\n const at = (args: any) => locate(args)?.[key];\n\n if (key === \"AND\" || key === \"OR\") {\n const combined = compileGroup(schema, value, context, at, key);\n if (combined) predicates.push(combined);\n continue;\n }\n\n if (key === COMPOSITE_IN) {\n predicates.push(compileCompositeIn(schema, value, context, at));\n continue;\n }\n\n if (key === \"NOT\") {\n const negated = compileGroup(schema, value, context, at, \"AND\");\n // `NOT` of nothing is vacuously true, so it contributes no predicate.\n // The operand is always parenthesised: `not a = ?` happens to parse the\n // way we mean on both dialects, but relying on `not` binding looser than\n // every comparison it might wrap is not a property worth depending on.\n if (negated) predicates.push(concat(sql(\"not \"), parenthesize(negated)));\n continue;\n }\n\n if (key in schema.relations) {\n const filter = compileRelationFilter(\n schema,\n schema.relations[key],\n value,\n context,\n at,\n );\n if (filter) predicates.push(filter);\n continue;\n }\n\n const field = schema.fields[key];\n if (!field) {\n // Prisma exposes a composite `@@unique([a, b])` as one key named `a_b`,\n // holding an object of its members. It is the only `where` key that is\n // not a field, a relation or a combinator, and `findUnique` on a model\n // like the template's `SocialAccount` cannot be expressed without it.\n const compound = compileCompoundKey(schema, key, value, context, at);\n if (compound) {\n predicates.push(compound);\n continue;\n }\n throw new UnknownFieldError(key, schema.name, Object.keys(schema.fields));\n }\n\n predicates.push(compileFieldFilter(schema, field, value, context, at));\n }\n\n if (predicates.length === 0) return null;\n if (predicates.length === 1) return predicates[0];\n return group(predicates, \" and \");\n}\n\nexport interface WhereContext {\n dialect: SqlDialect;\n operation: string;\n /**\n * Prefix for every column this `where` names — `\"User\".` — set only when the\n * statement has more than one table in scope.\n *\n * That happens when a relation strategy folds children in with a lateral join\n * (iteration 9): the subquery introduces a second scope and a bare `\"id\"`\n * becomes ambiguous. It is the table's own name rather than an invented alias,\n * because Postgres lets a lateral subquery reference the outer table by name.\n *\n * Absent otherwise, and absence is the common case — so a query with no folded\n * relation emits byte-identical SQL to what it did before this existed, which\n * is what keeps invariant 2 and every compiler text assertion untouched.\n */\n qualifier?: string;\n /**\n * How many relation-filter subqueries enclose this one. Zero at the root.\n *\n * It exists only to name the child alias — `_r0`, `_r1` — and the aliases only\n * have to be distinct from the ones *enclosing* them, not from their siblings:\n * each `exists (…)` is its own scope, so two relation filters at the same level\n * cannot see each other. Depth is therefore sufficient, and it keeps the SQL\n * text a pure function of the argument shape, which a counter threaded through\n * compilation would not be.\n */\n relationDepth?: number;\n}\n\n/**\n * `where: { accounts: { some: { … } } }` -> `exists (select 1 from \"Account\" …)`.\n *\n * A correlated subquery rather than a join, for the reason iteration 3 gave when\n * it deferred this: a join against a to-many multiplies the parent rows and then\n * needs a `distinct` to put them back, which changes the row count of the outer\n * query for a filter that should only ever *remove* rows. `exists` cannot.\n *\n * ### The child is always aliased\n *\n * Even when the tables differ and nothing is ambiguous. A self-relation —\n * `Employee.manager` — puts the same table on both sides, and there the\n * subquery's own `from` shadows the outer one, so the correlation silently\n * compares a row to itself. Aliasing conditionally would mean the dangerous case\n * is the one that takes the rarely-exercised branch; aliasing always means the\n * self-relation is compiled by the same code as everything else.\n *\n * The outer side is qualified by table name (or by the enclosing alias, when this\n * filter is itself nested), which is what makes the correlation refer outwards.\n * That needs nothing from the outer statement — `from \"User\"` puts `\"User\"` in\n * scope as a qualifier whether or not any other column uses one — so a query with\n * a relation filter leaves the rest of its SQL byte-identical.\n */\nfunction compileRelationFilter(\n schema: ModelSchema,\n relation: RelationSchema,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment | null {\n // Shape before environment: `readOperators` only reads the relation's own\n // `kind`, so a malformed filter is reported as one even when the registry is\n // empty. The other order let a missing `register` call mask a plain typo.\n const operators = relationFilterOperators(relation.kind);\n const requested = readOperators(schema, relation, value, operators, context);\n\n const depth = context.relationDepth ?? 0;\n\n const dialect = context.dialect;\n // At depth 0 the outer scope is the queried table; deeper, it is the alias of\n // the subquery this one sits inside. `context.qualifier` already holds the\n // right answer in both cases when something set it — the lateral strategy does\n // at the root — so it wins, and the table name is the fallback.\n const parentQualifier =\n context.qualifier ?? `${dialect.quoteIdent(schema.table)}.`;\n\n const source = correlate(\n schema,\n relation,\n dialect,\n `_r${depth}`,\n parentQualifier,\n context.operation,\n );\n const child = source.child;\n const correlation = sql(source.correlation);\n\n const inner: WhereContext = {\n ...context,\n qualifier: source.qualifier,\n relationDepth: depth + 1,\n };\n\n const parts: Fragment[] = [];\n\n for (const operator of operators) {\n if (!(operator in requested)) continue;\n\n const argument = requested[operator];\n const at = (args: any) => requested.direct ? locate(args) : locate(args)?.[operator];\n\n // `is: null` / a bare `null` on a to-one: \"there is no related row\". Prisma\n // spells the opposite `isNot: null`.\n if (argument === null) {\n parts.push(existence(source, correlation, null, operator === \"is\"));\n continue;\n }\n\n const condition = compileWhere(child, argument, inner, at);\n\n if (operator === \"every\") {\n // `every` is \"no child fails it\", not \"some child passes it\" — the two\n // differ on a parent with no children at all, which `every` matches and\n // `some` does not. An empty `every: {}` therefore constrains nothing.\n if (!condition) continue;\n parts.push(\n existence(\n source,\n correlation,\n concat(sql(\"not \"), parenthesize(condition)),\n true,\n ),\n );\n continue;\n }\n\n const negate = operator === \"none\" || operator === \"isNot\";\n parts.push(existence(source, correlation, condition, negate));\n }\n\n if (parts.length === 0) return null;\n if (parts.length === 1) return parts[0];\n return group(parts, \" and \");\n}\n\n/** `exists (select 1 from \"Child\" as \"_r0\" where <correlation> [and <rest>])`. */\nfunction existence(\n source: Correlated,\n correlation: Fragment,\n rest: Fragment | null,\n negated: boolean,\n): Fragment {\n const parts: Fragment[] = [\n sql(`${negated ? \"not \" : \"\"}exists (select 1 from ${source.source} where `),\n correlation,\n ];\n\n if (rest) parts.push(sql(\" and \"), rest);\n parts.push(sql(\")\"));\n\n return concat(...parts);\n}\n\n/**\n * Which operators a relation filter asked for, with Prisma's shorthands folded\n * into the same shape.\n *\n * A to-one accepts the filter directly — `where: { user: { email } }` means\n * `is` — and accepts `null` for \"no related row\". A to-many does not: Prisma\n * requires one of `some` / `every` / `none`, because a bare object there has no\n * unambiguous reading.\n */\nfunction readOperators(\n schema: ModelSchema,\n relation: RelationSchema,\n value: unknown,\n operators: readonly string[],\n context: WhereContext,\n): Record<string, unknown> & { direct?: boolean } {\n const path = `where.${relation.name}`;\n const many = relation.kind === \"many\";\n\n if (value === null) {\n if (many) {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n context.operation,\n `${relation.name} is a to-many relation, so null is not a filter for ` +\n `it. Use { none: {} } for \"has no related rows\".`,\n );\n }\n return { is: null, direct: true };\n }\n\n if (typeof value !== \"object\" || Array.isArray(value)) {\n throw new InvalidArgumentError(\n path,\n schema.name,\n context.operation,\n many\n ? `Expected an object holding ${operators.join(\", \")}.`\n : `Expected an object, or null.`,\n );\n }\n\n if (isOperatorForm(value as object, operators)) {\n return value as Record<string, unknown>;\n }\n\n if (many) {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n context.operation,\n `Expected one of ${operators.join(\", \")}. A to-many relation has no ` +\n `single reading of a bare filter — { some: … } and { every: … } mean ` +\n `different things.`,\n );\n }\n\n // The to-one shorthand. Marked so the binder path stays on the object the\n // caller wrote rather than descending into an `is` key that is not there.\n return { is: value, direct: true };\n}\n\n\n/**\n * `{ username_provider: { username, provider } }` -> `username = ? and\n * provider = ?`.\n *\n * Returns `null` when `key` names no declared composite unique, so the caller\n * can fall through to reporting an unknown field.\n */\nfunction compileCompoundKey(\n schema: ModelSchema,\n key: string,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment | null {\n // `uniqueKeys`, not `schema.uniques` — the primary key is a unique key, and a\n // compound `@@id` lives only in `schema.primaryKey`. Searching `uniques`\n // alone made the two halves of this disagree: `matchUniqueKey` accepted\n // `tenantId_code` (it asks `uniqueKeys`, which includes the primary key), so\n // the operation compiled, and then this returned `null` and the caller\n // reported an unknown field. Both spellings failed and each error pointed at\n // the other.\n //\n // Invisible until now because the template's only compound key is\n // `SocialAccount`'s `@@unique([username, provider])`. A compound `@@id` — a\n // join table, or any tenant-scoped `@@id([tenantId, id])` — was unreachable\n // by key at all.\n const members = uniqueKeys(schema).find(\n (group) => group.length > 1 && group.join(\"_\") === key,\n );\n if (!members) return null;\n\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new InvalidArgumentError(\n `where.${key}`,\n schema.name,\n context.operation,\n `Expected an object holding ${members.join(\" and \")}.`,\n );\n }\n\n const supplied = value as Record<string, unknown>;\n const parts: Fragment[] = [];\n\n for (const member of members) {\n // Every member is required: a composite key is only unique as a whole, so\n // a partial one would quietly become a non-unique lookup.\n if (supplied[member] === undefined) {\n throw new UnsupportedQueryError(\n `where.${key}`,\n schema.name,\n context.operation,\n `Missing '${member}'. A composite key needs all of ${members.join(\", \")}.`,\n );\n }\n\n parts.push(\n compileFieldFilter(\n schema,\n schema.fields[member],\n supplied[member],\n context,\n (args) => locate(args)?.[member],\n ),\n );\n }\n\n return parts.length === 1 ? parts[0] : group(parts, \" and \");\n}\n\n/** `AND` / `OR`, accepting Prisma's array form and its single-object form. */\nfunction compileGroup(\n schema: ModelSchema,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n joiner: \"AND\" | \"OR\",\n): Fragment | null {\n const parts: Fragment[] = [];\n\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const compiled = compileWhere(\n schema,\n value[i],\n context,\n (args) => locate(args)?.[i],\n );\n if (compiled) parts.push(compiled);\n }\n } else {\n const compiled = compileWhere(schema, value, context, locate);\n if (compiled) parts.push(compiled);\n }\n\n if (parts.length === 0) {\n // Prisma: an empty `AND` is vacuously true and contributes nothing; an empty\n // `OR` matches nothing at all. Verified against the SQL Prisma emits — it\n // produces `1=1` and `1=0` respectively.\n return joiner === \"AND\" ? null : FALSE;\n }\n if (parts.length === 1) return parts[0];\n return group(parts, joiner === \"AND\" ? \" and \" : \" or \");\n}\n\n/**\n * Boolean literals rather than `1=0` (which is what Prisma emits): they carry\n * the same meaning on both dialects and keep the invariant that no digit ever\n * reaches the SQL text outside an identifier, which is an actual test.\n */\nconst FALSE: Fragment = sql(\"false\");\n\nfunction group(parts: Fragment[], separator: string): Fragment {\n return concat(sql(\"(\"), joinFragments(parts, separator), sql(\")\"));\n}\n\n/**\n * Wraps a fragment in parentheses unless it already is one. `group` is the only\n * thing that emits a leading `(`, and it always closes it, so the check is\n * exact — and it keeps `not (...)` from stuttering into `not ((...))`.\n */\nfunction parenthesize(fragment: Fragment): Fragment {\n return fragment.text.startsWith(\"(\") ? fragment : group([fragment], \"\");\n}\n\n/** Every operator Prisma allows on a scalar field. */\nconst OPERATORS = new Set([\n \"equals\",\n \"not\",\n \"in\",\n \"notIn\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n \"contains\",\n \"startsWith\",\n \"endsWith\",\n \"mode\",\n]);\n\nconst COMPARISONS: Record<string, string> = {\n lt: \"<\",\n lte: \"<=\",\n gt: \">\",\n gte: \">=\",\n};\n\n/**\n * The internal key a batched relation loader uses to match a **tuple** of\n * columns against a list of tuples — the composite-relation counterpart of\n * `in`, and the reason #97 exists.\n *\n * **`$`-prefixed because a Prisma field cannot be.** Field names match\n * `[A-Za-z][A-Za-z0-9_]*`, so this cannot collide with a column, which a\n * `__`-prefixed name could not promise.\n *\n * It is not part of the public argument grammar, and that is **enforced rather\n * than asserted**. This branch sits above the field lookup, so a caller writing\n * the key by hand used to be honoured — not an injection, since the fields are\n * resolved against the schema and the values are bound, but an undocumented\n * input surface with none of the operand validation its neighbours have. The\n * operand now has to carry {@link PLANNER}, a module-private `Symbol` an\n * application cannot reach, exactly as `markPreScoped` and `markOrmAuthored`\n * gate their own claims.\n */\nexport const COMPOSITE_IN = \"$compositeIn\";\n\n/**\n * Marks a composite-`in` operand as the planner's own.\n *\n * A `Symbol`, so it is invisible to `Object.entries` — which means it does not\n * reach the plan key, where it would be noise, and cannot be written in JSON by\n * a caller who has seen the key name in a stack trace.\n */\nconst PLANNER = Symbol(\"gemi.orm.compositeInFromPlanner\");\n\n/** `{ fields: [\"a\", \"b\"], values: [[1, \"x\"], [2, \"y\"]] }`. */\ninterface CompositeInOperand {\n fields: string[];\n values: unknown[][];\n}\n\nexport function plannerCompositeIn(\n fields: string[],\n values: unknown[][],\n): Record<string, unknown> {\n return { [PLANNER]: true, fields, values };\n}\n\n/**\n * `(a, b) in (…)`, in whichever form the dialect can bind.\n *\n * Only ever reached on a dialect whose `canBindCompositeIn` said yes for these\n * column types — `plan-relations.ts` asks before it emits this key, and keeps\n * the portable `OR` of `AND`s otherwise. So there is no fallback here: arriving\n * with a dialect that cannot express it is a bug in that decision, not a shape\n * to degrade.\n */\nfunction compileCompositeIn(\n schema: ModelSchema,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n const fields = assertCompositeInOperand(schema, operand, context);\n\n const resolved = fields.map((name) => {\n const field = schema.fields[name];\n if (!field) {\n throw new UnknownFieldError(name, schema.name, Object.keys(schema.fields));\n }\n return field;\n });\n\n const columns = resolved.map(\n (field) =>\n `${context.qualifier ?? \"\"}${dialect.quoteIdent(field.column)}`,\n );\n\n return dialect.compositeIn(\n columns,\n resolved.map((field) => field.type),\n (args) => (locate(args) as CompositeInOperand).values,\n );\n}\n\n/**\n * The operand's shape, checked at **plan** time.\n *\n * Every other operand in this file is validated here rather than left to fail\n * at bind time — `assertCreateManyOperand`'s note says why: a refusal that\n * arrives later has to unwind work that should never have started. This one\n * was the exception, and it showed: `{ $compositeIn: null }` raised a raw\n * `TypeError` from a destructure, and `{ fields: [\"id\"] }` with no `values` at\n * all compiled clean and deferred its failure to bind time.\n */\nfunction assertCompositeInOperand(\n schema: ModelSchema,\n operand: unknown,\n context: WhereContext,\n): string[] {\n /**\n * A caller's key gets the **unknown-key treatment**, which is what the\n * original comment promised and what every other key it is not a field for\n * already gets. `UnsupportedQueryError` would render \"does not support\n * '$compositeIn' *yet*\" — a promise about a key that is deliberately not in\n * the grammar and never will be. That word has now been corrected once each\n * on #82 and #88; this is the third time it has been raised, which is enough\n * to stop treating it as a wording nit and use the error that is simply\n * accurate: `$compositeIn` is not a field on this model.\n */\n const notAField = (): never => {\n throw new UnknownFieldError(\n COMPOSITE_IN,\n schema.name,\n Object.keys(schema.fields),\n );\n };\n\n if (typeof operand !== \"object\" || operand === null || Array.isArray(operand)) {\n return notAField();\n }\n\n if ((operand as Record<symbol, unknown>)[PLANNER] !== true) {\n return notAField();\n }\n\n /**\n * Below here the operand *is* the planner's, so a bad shape is this ORM's bug\n * rather than a caller's — and `UnsupportedQueryError` is the right class for\n * it: an internal invariant that does not hold is genuinely something the\n * ORM does not support, and \"yet\" is the honest word for a state it should\n * not be in.\n */\n const refuse = (detail: string): never => {\n throw new UnsupportedQueryError(\n COMPOSITE_IN,\n schema.name,\n context.operation,\n detail,\n );\n };\n\n const { fields, values } = operand as CompositeInOperand;\n\n // Below here the operand *is* the planner's, so these are its bugs rather\n // than a caller's — worth catching at compile time for the same reason, and\n // worth a different sentence because the audience is different.\n if (!Array.isArray(fields) || fields.length === 0) {\n return refuse(`the planner built a '${COMPOSITE_IN}' with no fields.`);\n }\n if (!fields.every((name) => typeof name === \"string\")) {\n return refuse(`the planner built a '${COMPOSITE_IN}' with a non-string field.`);\n }\n if (!Array.isArray(values)) {\n return refuse(`the planner built a '${COMPOSITE_IN}' with no values.`);\n }\n if (!values.every((tuple) => Array.isArray(tuple) && tuple.length === fields.length)) {\n return refuse(\n `the planner built a '${COMPOSITE_IN}' whose tuples do not all have ` +\n `${fields.length} value(s).`,\n );\n }\n\n return fields;\n}\n\n/**\n * The filters Prisma applies to a **scalar list** — `tags String[]`.\n *\n * A different set on a different left-hand side, which is why it is a branch\n * rather than four more entries in `OPERATORS`: `contains` on a `String` asks\n * about a substring, and on a `String[]` there is no such question — the one\n * Prisma spells is `has`. Sharing the table would have made every scalar\n * operator compile against an array column and answer something.\n *\n * A tuple for the same reason {@link JSON_FILTER_NAMES} is one: `ListFilter` in\n * `../types` said in a comment that it mirrors this list, and a comment is not\n * something the compiler checks.\n */\nconst LIST_FILTER_NAMES = [\n \"equals\",\n \"has\",\n \"hasEvery\",\n \"hasSome\",\n \"isEmpty\",\n] as const;\n\n/** One of {@link LIST_FILTER_NAMES}. `ListFilter` maps over this. */\nexport type ListFilterName = (typeof LIST_FILTER_NAMES)[number];\n\nconst LIST_FILTERS: ReadonlySet<string> = new Set(LIST_FILTER_NAMES);\n\n/**\n * `where: { tags: { has: \"urgent\" } }`.\n *\n * **The dialect answers first**, before any operand is looked at, because on\n * SQLite the answer is \"not this column, on this database, ever\" rather than\n * \"not this filter\". That refusal used to live in the generator (#300) and\n * could not stay there: the generated artifact is dialect-agnostic on purpose,\n * so refusing a scalar list at generation refused it for Postgres too — and\n * refused the *whole artifact*, since one `String[]` anywhere threw before any\n * model was emitted.\n */\nfunction compileListFilter(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n assertListDialect(schema, field, `where.${field.name}`, context.operation, dialect);\n\n // **A bare array is not shorthand for `equals` here**, and that is the one\n // place a list deliberately reads differently from a scalar — where\n // `{ email: \"a@b\" }` means `equals`, `{ tags: [\"a\"] }` means nothing.\n //\n // Not a judgement call: Prisma refuses it, measured against a generated 6.19\n // client — *\"Argument `strings`: Invalid value provided. Expected\n // StringNullableListFilter, provided (String).\"* Accepting it would make gemi\n // a silent superset of Prisma on the one dialect where a differential test\n // could otherwise check every other answer, which is the trade this project\n // has declined every time it has come up.\n //\n // The asymmetry that surprises: the same bare array *is* accepted as a\n // **write** value — `data: { tags: [\"a\"] }` is valid Prisma and valid here.\n // Filter and value are different positions and Prisma treats them\n // differently; so does this.\n if (Array.isArray(value)) {\n throw new InvalidArgumentError(\n `where.${field.name}`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list, and a bare array is not a filter on ` +\n `one — Prisma rejects it here too. Say which comparison you mean: ` +\n `{ ${field.name}: { equals: [...] } } for the whole list, or ` +\n `{ ${field.name}: { hasEvery: [...] } } for \"contains all of these\". ` +\n `A bare array *is* accepted as a value in \\`data\\`.`,\n );\n }\n\n if (!isFilterObject(value)) {\n throw new InvalidArgumentError(\n `where.${field.name}`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list. Expected an object holding ` +\n `${[...LIST_FILTERS].sort().join(\", \")}; received ` +\n `${value === null ? \"null\" : typeof value}.`,\n );\n }\n\n const filter = value as Record<string, unknown>;\n const parts: Fragment[] = [];\n\n // Sorted, for the reason `compileWhere` sorts: the plan cache canonicalises\n // key order, so two objects differing only in it must compile alike.\n for (const key of Object.keys(filter).sort()) {\n const operand = filter[key];\n if (operand === undefined) continue;\n\n if (!LIST_FILTERS.has(key)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list, and a list filter takes ` +\n `${[...LIST_FILTERS].sort().join(\", \")}. The scalar operators — ` +\n `${[...OPERATORS].sort().join(\", \")} — apply to a single value and ` +\n `Prisma does not offer them here.`,\n );\n }\n\n const at = (args: any) => locate(args)?.[key];\n parts.push(listComparison(schema, field, column, key, operand, context, at));\n }\n\n // An empty filter object constrains nothing, which is what the scalar path\n // does with `{}` too.\n if (parts.length === 0) return sql(\"true\");\n if (parts.length === 1) return parts[0];\n return group(parts, \" and \");\n}\n\n/** One list filter key. */\nfunction listComparison(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n key: string,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n\n if (key === \"equals\") {\n return listEquals(schema, field, column, operand, context, locate);\n }\n\n if (key === \"isEmpty\") {\n if (typeof operand !== \"boolean\") {\n throw new InvalidArgumentError(\n `where.${field.name}.isEmpty`,\n schema.name,\n context.operation,\n `Expected true or false, received ${operand === null ? \"null\" : typeof operand}.`,\n );\n }\n return dialect.listIsEmpty(column, operand);\n }\n\n if (key === \"has\") {\n // One **element**, so it binds as one — through the element's own field, so\n // a `Json[]` gets #209's `::text::jsonb` on the placeholder and the\n // serialisation that has to travel with it. Binding it as a list instead\n // would produce an array literal on the left of `= any(...)`, and binding\n // it with no cast answers *false* on a `Json[]` rather than raising.\n const element = elementOf(field);\n return dialect.listHas(\n column,\n fieldParam(element, dialect, encoded(element, dialect, locate)),\n );\n }\n\n // `hasEvery` / `hasSome` — both take a list, and both have a defined answer\n // for an empty one: `@> '{}'` is true of every row and `&& '{}'` of none,\n // which is what Prisma means by \"contains all of nothing\" and \"shares one\n // element with nothing\".\n if (!Array.isArray(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Expected an array, received ${operand === null ? \"null\" : typeof operand}.`,\n );\n }\n\n const values = fieldParam(field, dialect, encoded(field, dialect, locate));\n return key === \"hasEvery\"\n ? dialect.listHasEvery(column, values)\n : dialect.listHasSome(column, values);\n}\n\n/** `\"tags\" = $1` — whole-list equality, which is order-sensitive in SQL. */\nfunction listEquals(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n\n // A list column cannot be null in Prisma — `String[]?` is refused at schema\n // validation — but `equals: null` is still in the generated filter type, and\n // a column written by something other than Prisma can hold NULL. Same\n // reading as everywhere else: `= NULL` matches nothing, `is null` is meant.\n if (operand === null) return sql(`${column} is null`);\n\n if (!Array.isArray(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.equals`,\n schema.name,\n context.operation,\n `'${field.name}' is a scalar list, so it compares against an array. ` +\n `Received ${typeof operand}. For \"is this element present\", use ` +\n `{ ${field.name}: { has: … } }.`,\n );\n }\n\n return concat(\n sql(`${column} = `),\n fieldParam(field, dialect, encoded(field, dialect, locate)),\n );\n}\n\n/**\n * The same field, seen as **one element of itself**.\n *\n * `type` already carries the element type — that is the whole reason `isList`\n * is a flag beside it rather than a `ScalarType` constructor — so dropping the\n * flag is the entire conversion, and `encode`, `decode` and `castParameter` all\n * read it as the scalar they were written for.\n */\nfunction elementOf(field: FieldSchema): FieldSchema {\n return { ...field, isList: false };\n}\n\n/**\n * Refuses a scalar list on a dialect that has no array type, naming it.\n *\n * Shared by the read and write paths, and it says more than \"unsupported\"\n * because the reader's likeliest next question is whether they did something\n * wrong. They did not: Prisma refuses the *column* on SQLite, so a schema that\n * declares one was generated against Postgres and this process is pointed at a\n * database that could not hold it either.\n */\nexport function assertListDialect(\n schema: ModelSchema,\n field: FieldSchema,\n argument: string,\n operation: string,\n dialect: SqlDialect,\n): void {\n if (dialect.listFilters.size > 0) return;\n\n throw new UnsupportedQueryError(\n argument,\n schema.name,\n operation,\n `'${field.name}' is a scalar list, and ${dialect.name} has no array type ` +\n `to hold one. Prisma refuses the column itself on ${dialect.name} — ` +\n `\"the current connector does not support lists of primitive types\" — so ` +\n `this is a difference between the databases rather than a gap in the ` +\n `ORM. The generated artifact is dialect-agnostic, which is why this ` +\n `surfaces here rather than at \\`prisma generate\\`: the schema was ` +\n `generated against Postgres and DATABASE_URL names a ${dialect.name} ` +\n `database, which has no '${field.column}' column either. It works on ` +\n `postgres.`,\n );\n}\n\n/**\n * The filters Prisma applies to a value extracted from a JSON path.\n *\n * **A tuple, and the caller-facing type is a mapped type over it.**\n * `JsonPathFilter` in `../types` used to spell these ten names a second time,\n * in a file that neither imports this one nor is imported by it, so the two\n * lists could differ with no compile error, no failing test and no diff a\n * reviewer would flag. That is the mechanism behind #326, #333, #336 and #337 —\n * the compiler accepting something the type refuses to describe — and #336 was\n * the worst of them because the undescribed filter was silently absorbed as an\n * `equals` shorthand rather than refused.\n *\n * Deriving the type from this list makes the drift a compile error at the call\n * sites instead of something the next reviewer has to notice.\n */\nconst JSON_FILTER_NAMES = [\n \"equals\",\n \"not\",\n \"string_contains\",\n \"string_starts_with\",\n \"string_ends_with\",\n \"array_contains\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n] as const;\n\n/** One of {@link JSON_FILTER_NAMES}. `JsonPathFilter` maps over this. */\nexport type JsonFilterName = (typeof JSON_FILTER_NAMES)[number];\n\nconst JSON_FILTERS: ReadonlySet<string> = new Set(JSON_FILTER_NAMES);\n\n/**\n * `where: { metadata: { path: …, equals: … } }`.\n *\n * **Two dialects, two path grammars, and that is Prisma's split rather than\n * this ORM's.** Measured on both through a generated client: Postgres takes\n * `path: [\"a\", \"b\"]` and refuses a string; SQLite takes `path: \"$.a.b\"` and\n * refuses an array. So the argument is dialect-specific before it arrives here,\n * and `jsonPathSyntax` is what lets the check say which form *this* database\n * wants instead of failing inside the driver.\n *\n * **The path is bound, never interpolated.** This is the one place a caller's\n * value decides part of an expression's meaning, which makes it the obvious\n * place to break invariant 2 by accident. Neither dialect needs it in the text:\n * Postgres's `#>` takes a `text[]` parameter and SQLite's `json_extract` takes\n * a string, so the whole feature fits inside the existing rule.\n *\n * The operator set is the dialect's too. Prisma refuses `array_contains` and\n * the numeric comparisons on SQLite — *\"Unknown argument\"* — so refusing them\n * here is matching it, not falling short: implementing them would make gemi\n * answer a query the oracle cannot, which is precisely where a differential\n * test stops being able to check anything.\n */\nfunction compileJsonFilter(\n schema: ModelSchema,\n field: FieldSchema,\n column: string,\n filter: Record<string, unknown>,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n\n if (field.type !== \"Json\") {\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A 'path' filter reads inside a JSON document, and '${field.name}' is ` +\n `a ${field.type} column.`,\n );\n }\n\n assertPathShape(schema, field, filter.path, context);\n\n const path: Binder = (args) => locate(args)?.path;\n // **An `undefined` operand is an absent one**, which is the rule the scalar\n // operator loop already follows (`if (operand === undefined …) continue`) and\n // the rule the dispatch above follows for `path` itself\n // (`filter.path !== undefined`). Building `applied` from `Object.keys` alone\n // made this branch the one place that broke it: a filter assembled from a\n // form or a query string carries `equals: undefined` for the field nobody\n // filled in, and that compiled to `= NULL` — a predicate no row can satisfy —\n // where the same query with the key simply omitted got the bare-path refusal\n // below.\n //\n // Prisma answers both spellings identically. Measured on a generated 6.19.2\n // client against Postgres: `{ path: [\"a\"], equals: undefined }` and\n // `{ path: [\"a\"] }` both raise P2019 *\"A JSON path cannot be set without a\n // scalar filter.\"*, and `{ path: [\"a\"], equals: 1, gt: undefined }` compiles\n // the `equals` alone.\n //\n // **This is also what makes the plan cache safe here**, which is the stronger\n // reason and the one a reader will otherwise have to re-derive.\n // `canonicalShape` drops `undefined` members, so the two spellings were\n // already *one* cache key — measured:\n //\n // planKey(postgres, \"User\", \"findMany\", { where: { metadata: { path: [\"a\"] } } })\n // planKey(postgres, \"User\", \"findMany\", { where: { metadata: { path: [\"a\"], equals: undefined } } })\n // both -> postgres:batched:User:findMany:{where:{metadata:{path:[string]}}}\n //\n // while they compiled to two different things, a refusal and a `= NULL` plan.\n // Whichever compiled first decided for the other, so a bare `path` arriving\n // second was served the never-true plan instead of the refusal it raises\n // cold. Both throw now, so there is nothing left for the shared key to\n // collide on.\n const applied = Object.keys(filter)\n .filter((key) => key !== \"path\" && filter[key] !== undefined)\n .sort();\n\n if (applied.length === 0) {\n // Prisma: \"A JSON path cannot be set without a scalar filter.\" Reproduced\n // because the alternative is an extraction with nothing to compare it to,\n // which compiles to a value in a predicate position on one dialect and to\n // an error on the other.\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A 'path' needs a filter beside it — ${[...JSON_FILTERS].sort().join(\", \")}. ` +\n `Prisma refuses a bare path too.`,\n );\n }\n\n const parts: Fragment[] = [];\n\n for (const key of applied) {\n if (!JSON_FILTERS.has(key)) {\n throw new UnsupportedQueryError(\n `${field.name}.${key}`,\n schema.name,\n context.operation,\n `A JSON path filter takes ${[...JSON_FILTERS].sort().join(\", \")}.`,\n );\n }\n\n if (!dialect.jsonFilters.has(key)) {\n throw new UnsupportedQueryError(\n `${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${key}' on a JSON path is not available on ${dialect.name}. Prisma ` +\n `refuses it here too, so this is a difference between the databases ` +\n `rather than a gap in the ORM. It works on postgres.`,\n );\n }\n\n const operand = filter[key];\n\n // **`equals` and `not` answer the three sentinels; the other eight refuse\n // them.** That split is Prisma's, measured on a generated 6.19.2 client\n // against both databases rather than derived from the operators:\n //\n // equals / not compiled, and the SQL is in `jsonNullAtPath`\n // the other eight \"Invalid value provided. … provided Enum.\"\n //\n // The refusal below used to cover all ten, and its reason was true of the\n // extraction it named rather than of the dialect: `#>>` does yield NULL for\n // an absent key and for a JSON `null` alike, but `#>` does not, and neither\n // does SQLite's `->`. `dialect.jsonValueAt` is that second extraction, so\n // the distinction the sentinels exist to draw survives to the comparison\n // and there is nothing left to refuse — #407.\n //\n // A bare `null` takes the same branch, as `JsonNull`. It is not a third\n // reading: Prisma compiles `{ path: […], equals: null }` and\n // `{ path: […], equals: Prisma.JsonNull }` to byte-identical SQL and\n // returns identical rows on both dialects, measured. It was refused for the\n // same `#>>` reason (#371's second item), and the same fix reaches it.\n const sentinel: JsonNullKind | null =\n operand === null ? \"json\" : jsonNullKind(operand);\n\n if (sentinel && (key === \"equals\" || key === \"not\")) {\n parts.push(\n jsonNullAtPath(sentinel, column, path, field, dialect, key === \"not\"),\n );\n continue;\n }\n\n if (sentinel && operand !== null) {\n // **The clause naming the mechanism branches for `array_contains`**, for\n // the same reason `assertJsonOperand`'s `null` guard branches below: that\n // operator does not compare an extracted scalar at all — it compiles to\n // `#>` + `@>`, containment against a jsonb document — so telling its\n // caller about a scalar comparison names a mechanism it does not have.\n // Everything else here does compare one bound scalar against one\n // extracted value.\n const because =\n key === \"array_contains\"\n ? `'array_contains' tests containment against a document, and a ` +\n `sentinel is not one`\n : `'${key}' compares an extracted value against a scalar, and a ` +\n `sentinel is not one`;\n\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `${sentinelName(sentinel)} asks which kind of null a value is, which ` +\n `only 'equals' and 'not' can express — ${because}. ` +\n `Prisma refuses it under this operator too. Write ` +\n `{ ${field.name}: { path: […], equals: ${sentinelName(sentinel)} } }, ` +\n `or filter the column itself — ` +\n `{ ${field.name}: { equals: ${sentinelName(sentinel)} } }.`,\n );\n }\n\n // The same shape one level down — `{ path: …, array_contains: [AnyNull] }`.\n // Still refused, and now for its own reason rather than by inheriting the\n // extraction's: `AnyNull` is a *question*, not a value, so there is nothing\n // to put inside a document. (`equals` and `not` never reach here with an\n // object operand — `assertJsonOperand` refuses one below — so this is\n // `array_contains`'s case in practice.)\n if (carriesAnyNull(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Prisma.AnyNull is a question rather than a value — 'either kind of ` +\n `null' — so it cannot appear inside a document. Ask it directly: ` +\n `{ ${field.name}: { path: […], equals: Prisma.AnyNull } }.`,\n );\n }\n\n assertJsonOperand(key, operand, schema, field, context);\n\n parts.push(\n jsonComparison(key, column, path, field, dialect, (args) =>\n locate(args)?.[key],\n ),\n );\n }\n\n return parts.length === 1\n ? parts[0]\n : group(parts, \" and \");\n}\n\n/**\n * A null sentinel at a JSON path — `{ path: [\"operation\"], equals: AnyNull }`.\n *\n * **The two halves, and why neither is the other.** A `Json` column has two\n * empty states and so does a *key inside* one, except the key's second state is\n * \"not there at all\":\n *\n * DbNull the value at the path is missing — an absent key, or a column\n * that is SQL NULL, or one holding a JSON null (nothing to index)\n * JsonNull the value at the path is the JSON value `null`\n * AnyNull either, which is what `AnyNull` means everywhere else\n *\n * `dialect.jsonValueAt` is what keeps them apart; `jsonExtract` at `asText:\n * true` does not, which is the collapse that had all three refused here before\n * #407. So `DbNull` is `is null` on the extraction itself and `JsonNull` is an\n * equality against the JSON null, bound the way {@link jsonNullComparison}\n * binds it on the column path — through the dialect's own encoder, so `'null'`\n * on SQLite and `'null'::text::jsonb` on Postgres stay that encoder's business.\n *\n * **`negated` is the direct form, not `not (…)`.** Prisma emits `IS NOT NULL`,\n * `<>` and `(<> … AND IS NOT NULL)`, and the negation of the positive form\n * agrees with all three under three-valued logic — `equals`'s own comment makes\n * the same argument on the column path. The direct spelling is emitted because\n * it is the one the oracle emits and it reads as what it means; the contract is\n * equal results either way.\n *\n * Measured on 6.19.2 against Postgres 16 and SQLite, over rows covering an\n * absent key, a JSON null at the key, a scalar at the key, a SQL-NULL column\n * and a JSON-null column. Both dialects return the same five row sets, and this\n * compiles to the same predicates:\n *\n * equals: DbNull absent key, SQL-NULL column, JSON-null column\n * equals: JsonNull the key holding a JSON null\n * equals: AnyNull all four of those\n * not: DbNull the key holding a JSON null, and the key holding a scalar\n * not: JsonNull the key holding a scalar\n * not: AnyNull the key holding a scalar\n */\nfunction jsonNullAtPath(\n kind: JsonNullKind,\n column: string,\n path: Binder,\n field: FieldSchema,\n dialect: SqlDialect,\n negated: boolean,\n): Fragment {\n // `is null` on the extraction: nothing is there to compare.\n const missing = (): Fragment =>\n concat(\n dialect.jsonValueAt(column, path),\n sql(negated ? \" is not null\" : \" is null\"),\n );\n\n // ...and the JSON value `null`, which is a value and compares as one.\n const jsonNull = (): Fragment =>\n concat(\n dialect.jsonValueAt(column, path),\n sql(negated ? \" <> \" : \" = \"),\n fieldParam(field, dialect, () => dialect.encode(JSON_NULL, field)),\n );\n\n if (kind === \"db\") return missing();\n if (kind === \"json\") return jsonNull();\n\n // The path is bound twice, once per half, which is what Prisma does too —\n // it is a parameter, so there is nothing to share and nothing in the text.\n return group([jsonNull(), missing()], negated ? \" and \" : \" or \");\n}\n\n/**\n * What each JSON filter will accept as its operand.\n *\n * Three defects, all of them the shape the scalar path is already careful about\n * and all silent:\n *\n * - **The string filters had no non-string guard.** Their scalar siblings\n * refuse one, with a comment explaining that `String(null)` makes the\n * pattern `%null%` — \"a query that runs and returns the wrong rows\".\n * `string_contains: null` compiled to `like NULL`, which matches nothing\n * and raises nothing; `string_contains: 5` compiled to `%5%`. Prisma raises\n * for both.\n *\n * - **`equals` / `not` accepted a non-scalar.** On Postgres the comparison\n * binds `String(raw)` because `#>>` yields text, so `equals: { b: 1 }` bound\n * the string `\"[object Object]\"` and matched nothing.\n *\n * - **`null` fell between the two.** The string branch refuses a non-string\n * and the object branch tests `operand !== null` first, so `equals: null`\n * reached the binder and compiled to `= NULL` — see the guard below. Under\n * `equals` and `not` it is answered rather than refused now, and never\n * reaches this function: #407 gave those two the extraction that can tell a\n * JSON `null` from an absent key, and `equals: null` is `equals: JsonNull`\n * on the oracle. The guard below covers the operators that are left.\n *\n * The object operand is still a **refusal rather than an implementation**, and\n * the reason has narrowed. It used to be that answering it needs the JSON-\n * preserving extraction, which was Postgres-only here — so implementing it\n * would give SQLite either a second wrong answer or a silent divergence. That\n * is no longer true: `dialect.jsonValueAt` is that extraction and both dialects\n * have it (#407). What is left is simply that nobody has compiled a document\n * comparison against it — the operand would still bind through `jsonComparison`\n * as a scalar — so this stays a named limitation rather than becoming a silent\n * wrong answer, which is what this file does everywhere it cannot answer.\n * `array_contains` is exempt from the object rule because containment is\n * precisely the operator that takes a document — but not from the `null` one,\n * because a bound SQL NULL is not a JSON `null` on either side of `@>`.\n */\nfunction assertJsonOperand(\n key: string,\n operand: unknown,\n schema: ModelSchema,\n field: FieldSchema,\n context: WhereContext,\n): void {\n const stringly =\n key === \"string_contains\" ||\n key === \"string_starts_with\" ||\n key === \"string_ends_with\";\n\n if (stringly && typeof operand !== \"string\") {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Expected a string, received ${\n operand === null ? \"null\" : typeof operand\n }. Prisma raises here too — without this the pattern becomes ` +\n `'%${String(operand)}%', which runs and returns the wrong rows.`,\n );\n }\n\n // **`null` is refused under the operators that are left**, and the oracle\n // agrees about the numeric four and not about `array_contains`.\n //\n // `equals` and `not` do not reach this — `compileJsonFilter` compiles them\n // as `JsonNull` before calling here, because Prisma reads a bare `null` at a\n // path as the JSON value `null` and returns the rows holding one: identical\n // SQL and identical rows to `equals: Prisma.JsonNull`, measured on 6.19.2\n // against both dialects. That was #371's second item, and it was refused for\n // a reason that was true of `#>>` rather than of the database.\n //\n // The four numeric comparisons are a different answer, measured the same way:\n // `{ path: [\"a\"], gt: null }` does not compile on Prisma either. Its query\n // engine *panics* — \"JSON target types only accept strings or numbers, found:\n // null\", from `sql-query-builder/src/filter/visitor.rs` — so refusing is\n // matching the oracle rather than falling short of it, and this message says\n // so instead of promising an answer later. Left alone it reached the binder\n // and compiled to `cast((\"metadata\" #>> $1) as real) > $2` bound to NULL,\n // which is NULL rather than true: a query that runs and matches nothing.\n //\n // `array_contains` is included rather than exempt, **and it is the one place\n // here that refuses something the oracle answers**. Its mechanism is its own:\n // it takes the `#>` form, so the text collapse never applied to it, but\n // `jsonArrayContains` binds the operand raw, so `null` arrives as SQL NULL\n // and `x @> NULL` is NULL too — a query that runs and matches nothing.\n //\n // Prisma compiles it, measured: `(payload #> $1)::jsonb @> $2 AND\n // JSONB_TYPEOF((payload #> $3)::jsonb) = 'array'`, which also returns no rows\n // — so the refusal costs a caller nothing but an error where the oracle gave\n // an empty set, and this comment says so rather than claiming parity it does\n // not have. `docs/orm.md` records it in the same terms.\n //\n // The message below branches for the mechanism: telling an `array_contains`\n // caller about an extracted scalar would name something this operator does\n // not have, and pointing them at `{ equals: Prisma.JsonNull }` would answer a\n // containment question with an equality.\n if (operand === null) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n key === \"array_contains\"\n ? `null cannot be tested for containment through a JSON path: the ` +\n `operand binds as SQL NULL rather than as the JSON value, and ` +\n `'x @> NULL' is NULL rather than true — the query would run and ` +\n `match nothing. A null *inside* the document ` +\n `is an ordinary value and still compiles: ` +\n `{ ${field.name}: { path: […], array_contains: [null] } }.`\n : `null cannot be compared through a JSON path with '${key}', which ` +\n `compares the extracted value as a number — the comparison against ` +\n `NULL is NULL rather than true, so the query would run and match ` +\n `nothing. Prisma refuses it here too. For \"the value at this path ` +\n `is a JSON null\", use equals or not: ` +\n `{ ${field.name}: { path: […], equals: null } }.`,\n );\n }\n\n if (key === \"array_contains\" || stringly) return;\n\n // `equals`, `not`, and the four numeric comparisons all compare an extracted\n // scalar against one bound value. No `!== null` here: `typeof null` is\n // `\"object\"`, and the guard above has already refused it with its own reason.\n if (typeof operand === \"object\") {\n throw new UnsupportedQueryError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${key}' on a JSON path compares the extracted value as a scalar, so ` +\n `an object or array operand cannot be expressed — it would bind as ` +\n `'${String(operand)}' and match nothing. Prisma accepts one here; ` +\n `gemi does not yet. Use array_contains for containment, or narrow the ` +\n `path until it names a scalar.`,\n );\n }\n}\n\n/** The comparison for one JSON filter key. */\nfunction jsonComparison(\n key: string,\n column: string,\n path: Binder,\n field: FieldSchema,\n dialect: SqlDialect,\n value: Binder,\n): Fragment {\n if (key === \"array_contains\") {\n return dialect.jsonArrayContains(column, path, value);\n }\n\n // The string filters compare *text*, so they need the text-returning\n // extraction; everything else compares the value.\n const stringly =\n key === \"string_contains\" ||\n key === \"string_starts_with\" ||\n key === \"string_ends_with\";\n\n const extracted = dialect.jsonExtract(column, path, true);\n\n if (stringly) {\n const wrap =\n key === \"string_contains\"\n ? (text: string) => `%${text}%`\n : key === \"string_starts_with\"\n ? (text: string) => `${text}%`\n : (text: string) => `%${text}`;\n\n return concat(\n sql(\"(\"),\n extracted,\n sql(\") like \"),\n param((args, context) => {\n const raw = value(args, context);\n return raw === null || raw === undefined ? null : wrap(String(raw));\n }),\n );\n }\n\n const operator =\n key === \"equals\" ? \"=\" : key === \"not\" ? \"<>\" : COMPARISONS[key];\n\n // `#>>` and `json_extract` both yield text, so a numeric comparison has to\n // compare numbers rather than their spellings — otherwise \"10\" < \"9\". The\n // cast is structural, never a value.\n const numeric = key !== \"equals\" && key !== \"not\";\n const lhs = numeric\n ? concat(sql(\"cast((\"), extracted, sql(\") as real)\"))\n : concat(sql(\"(\"), extracted, sql(\")\"));\n\n return concat(\n lhs,\n sql(` ${operator} `),\n param((args, context) => {\n const raw = value(args, context);\n if (raw === null || raw === undefined) return null;\n if (numeric) return Number(raw);\n // Text on Postgres, native on SQLite — see `jsonComparesAsText`. The\n // wrong one returns no rows on one dialect and raises on the other.\n return dialect.jsonComparesAsText ? String(raw) : raw;\n }),\n );\n}\n\n/** The path is a string on SQLite and an array of string keys on Postgres. */\nfunction assertPathShape(\n schema: ModelSchema,\n field: FieldSchema,\n path: unknown,\n context: WhereContext,\n): void {\n const { dialect } = context;\n const wanted = dialect.jsonPathSyntax === \"array\" ? \"array\" : \"jsonpath\";\n const got = Array.isArray(path) ? \"array\" : typeof path === \"string\" ? \"jsonpath\" : \"other\";\n\n // **The empty path is refused on both dialects, and it is not the same\n // mistake as a wrong shape.** `[]` on Postgres extracts the whole document —\n // `[].every` is vacuously true, so it used to pass this check — and `\"\"` on\n // SQLite raises inside `json_extract` at execution time. Neither is a path,\n // and a caller who wrote one meant to write something. Refused with its own\n // sentence rather than the grammar message below, which would tell them to\n // use the form they already used.\n const empty =\n (Array.isArray(path) && path.length === 0) || path === \"\";\n if (empty) {\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A JSON path cannot be empty. ${\n dialect.jsonPathSyntax === \"array\"\n ? `On ${dialect.name} an empty array selects the whole document, ` +\n `which is a filter on the column rather than on a path — write ` +\n `{ ${field.name}: { equals: … } } if that is what you meant.`\n : `On ${dialect.name} an empty string raises inside json_extract.`\n }`,\n );\n }\n\n if (got === wanted) {\n if (wanted !== \"array\") return;\n\n // **Every segment is a string, and the number that used to be allowed here\n // was a superset of the oracle.** Prisma's generated `path` on Postgres is\n // `string[]`, and its client refuses a number at run time as well as at\n // compile time — measured on 6.19.2: `path: [\"items\", 0]` answers\n // *\"Argument `path`: Invalid value provided. Expected String, provided\n // Int.\"* before any SQL is built.\n //\n // Refused rather than kept, because this file already states the rule that\n // decides it: answering a query the oracle cannot express is \"precisely\n // where a differential test stops being able to check anything\"\n // (`compileJsonFilter`'s docblock, on the SQLite operators). Nothing is\n // lost — `[\"items\", \"0\"]` reaches the same array element, since `#>` takes\n // a `text[]` and the segment arrives as text either way. Measured: both\n // spellings bind `[\"items\", \"0\"]` and return the same row on Prisma, and\n // gemi's binder already stringifies through the `text[]` cast.\n //\n // Its own sentence rather than the grammar message below, which would tell\n // a caller who wrote an array to write an array.\n const offending = (path as unknown[]).findIndex(\n (part) => typeof part !== \"string\",\n );\n if (offending === -1) return;\n\n // `a ${typeof part}` alone reads as \"a undefined\" / \"a object\" for every\n // segment but the number, so the description is spelled out. And the array\n // index sentence is advice for one mistake in particular — a caller who\n // wrote `null` did not write an index — so it is gated on the number\n // rather than emitted for everything.\n const part = (path as unknown[])[offending];\n const described =\n part === null\n ? \"null\"\n : part === undefined\n ? \"undefined\"\n : Array.isArray(part)\n ? \"an array\"\n : typeof part === \"object\"\n ? \"an object\"\n : `a ${typeof part}`;\n\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n `A JSON path is an array of strings, and path[${offending}] is ` +\n `${described}. ` +\n (typeof part === \"number\"\n ? `An array index is a key too — write [\"items\", \"0\"] rather than ` +\n `[\"items\", 0]; it reaches the same element, because ` +\n `${dialect.name} takes the path as text. Prisma's path is ` +\n `string[] and its client refuses a number here too.`\n : `Prisma's path is string[] too.`),\n );\n }\n\n throw new UnsupportedQueryError(\n `${field.name}.path`,\n schema.name,\n context.operation,\n dialect.jsonPathSyntax === \"array\"\n ? `On ${dialect.name} a JSON path is an array of keys — [\"a\", \"b\"] — ` +\n `not a JSONPath string. Prisma splits them the same way, and refuses ` +\n `the other form on each database.`\n : `On ${dialect.name} a JSON path is a JSONPath string — \"$.a.b\" — not ` +\n `an array of keys. Prisma splits them the same way, and refuses the ` +\n `other form on each database.`,\n );\n}\n\nfunction compileFieldFilter(\n schema: ModelSchema,\n field: FieldSchema,\n value: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n): Fragment {\n const { dialect } = context;\n const column = `${context.qualifier ?? \"\"}${dialect.quoteIdent(field.column)}`;\n\n // A bare `Prisma.DbNull` is **not** shorthand for `equals`, and Prisma refuses\n // it: `where: { settings: Prisma.DbNull }` is an invalid invocation there,\n // spelled out under the offending key. Both sentinels are objects with no\n // enumerable properties, so left alone they read as an operator map holding\n // no operators — which compiles to `true`, and answered \"every row\" to a\n // question about the null ones.\n //\n // Refused rather than interpreted, because guessing which of the two nulls a\n // caller meant is the whole thing the sentinels exist to stop, and because\n // matching Prisma means matching its refusals as well as its results.\n const sentinel = jsonNullKind(value);\n if (sentinel) {\n throw new InvalidArgumentError(\n `where.${field.name}`,\n schema.name,\n context.operation,\n `${sentinelName(sentinel)} is not a filter on ` +\n `its own — Prisma rejects it here too. Write it as an explicit ` +\n `comparison: { ${field.name}: { equals: ${sentinelName(sentinel)} } }.`,\n );\n }\n\n // A scalar list takes a different operator set on a different left-hand side,\n // so the whole operand belongs to that branch — the same shape the `path`\n // check below has for a JSON document. Placed *above* the bare-value\n // shorthand because on a list the bare form is an **array**, which\n // `isFilterObject` reports as a value and would send to the scalar `equals`\n // with no dialect check and no operand validation.\n if (field.isList) {\n return compileListFilter(schema, field, column, value, context, locate);\n }\n\n // A bare value is shorthand for `equals`. A `Date` is a value, not a filter\n // object, even though `typeof` cannot tell them apart.\n if (!isFilterObject(value)) {\n return equals(column, field, value, dialect, locate);\n }\n\n const filter = value as Record<string, unknown>;\n const keys = Object.keys(filter).sort();\n\n // A `path` turns the whole operand into a JSON filter, whose operators are a\n // different set from the scalar ones and whose left-hand side is an\n // extraction rather than a column.\n if (filter.path !== undefined) {\n return compileJsonFilter(schema, field, column, filter, context, locate);\n }\n\n // Prisma-only, and only meaningful next to a string operator. Read here so it\n // does not get treated as an operator in its own right.\n const insensitive = filter.mode === \"insensitive\";\n if (filter.mode !== undefined && filter.mode !== \"default\") {\n if (!insensitive) {\n throw new InvalidArgumentError(\n `mode: ${JSON.stringify(filter.mode)}`,\n schema.name,\n context.operation,\n `Prisma takes 'default' or 'insensitive'.`,\n );\n }\n if (!dialect.supportsInsensitiveMode) {\n throw new UnsupportedQueryError(\n \"mode: \\\"insensitive\\\"\",\n schema.name,\n context.operation,\n `The ${dialect.name} dialect cannot express it — Prisma rejects it ` +\n `here too. Note SQLite's LIKE is already case-insensitive for ASCII.`,\n );\n }\n }\n\n const parts: Fragment[] = [];\n\n for (const key of keys) {\n const operand = filter[key];\n if (operand === undefined || key === \"mode\") continue;\n\n if (!OPERATORS.has(key)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `A scalar filter takes ${[...OPERATORS].sort().join(\", \")}.`,\n );\n }\n\n // `AnyNull` asks for both nulls at once, which only `equals` and `not` can\n // express. Under any other operator it has no meaning — Prisma's own\n // `JsonNullableFilter` admits it in exactly those two positions — and left\n // alone it would reach the binder, where it is an ORM bug by construction.\n // Refused here, where the field and operation are in scope to name it,\n // rather than at the backstop that would report it as ours.\n if (key !== \"equals\" && key !== \"not\" && carriesAnyNull(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Prisma.AnyNull means 'either kind of null', which only 'equals' and ` +\n `'not' can express. Write { ${field.name}: { equals: Prisma.AnyNull } }, ` +\n `or name the one you mean with Prisma.DbNull or Prisma.JsonNull.`,\n );\n }\n\n const at = (args: any) => locate(args)?.[key];\n\n switch (key) {\n case \"equals\":\n parts.push(equals(column, field, operand, dialect, at));\n break;\n\n case \"not\":\n parts.push(\n compileNot(schema, field, operand, context, at, column),\n );\n break;\n\n case \"in\":\n case \"notIn\":\n parts.push(\n inList(schema, column, field, operand, context, at, key === \"notIn\"),\n );\n break;\n\n case \"lt\":\n case \"lte\":\n case \"gt\":\n case \"gte\":\n parts.push(\n concat(\n sql(`${column} ${COMPARISONS[key]} `),\n fieldParam(field, dialect, encoded(field, dialect, at)),\n ),\n );\n break;\n\n case \"contains\":\n case \"startsWith\":\n case \"endsWith\":\n // Prisma raises \"Argument `contains` must not be null\" — verified.\n // Without this, `String(null)` makes the pattern `%null%`, which is a\n // query that runs and returns the wrong rows. The types catch the\n // static case but not a value that arrives dynamically.\n if (typeof operand !== \"string\") {\n throw new InvalidArgumentError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `Expected a string, received ${operand === null ? \"null\" : typeof operand}.`,\n );\n }\n if (field.type !== \"String\") {\n throw new UnsupportedQueryError(\n `where.${field.name}.${key}`,\n schema.name,\n context.operation,\n `'${field.name}' is a ${field.type}, and ${key} only applies to strings.`,\n );\n }\n parts.push(dialect.like(column, insensitive, likePattern(key, at)));\n break;\n }\n }\n\n if (parts.length === 0) return sql(\"true\");\n if (parts.length === 1) return parts[0];\n return group(parts, \" and \");\n}\n\n/** How a sentinel is spelled in a message, so an error can be pasted back as code. */\nfunction sentinelName(kind: JsonNullKind): string {\n return `Prisma.${kind === \"db\" ? \"DbNull\" : kind === \"json\" ? \"JsonNull\" : \"AnyNull\"}`;\n}\n\n/**\n * Whether an operand is `AnyNull`, or a list holding one.\n *\n * The list case is the reachable one: `in: [Prisma.AnyNull]` type-checks\n * nowhere in Prisma, but nothing stops it being written in JavaScript, and\n * `inList` would bind it as an ordinary value.\n */\nfunction carriesAnyNull(operand: unknown): boolean {\n if (jsonNullKind(operand) === \"any\") return true;\n return Array.isArray(operand) && operand.some((item) => jsonNullKind(item) === \"any\");\n}\n\n/** `not` is a whole nested filter, not just a value — `not: { in: [...] }`. */\nfunction compileNot(\n schema: ModelSchema,\n field: FieldSchema,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n column: string,\n): Fragment {\n // `DbNull` is the sentinel spelling of the same question, so it takes the\n // same branch — see `equals`.\n if (operand === null || jsonNullKind(operand) === \"db\") {\n return sql(`${column} is not null`);\n }\n\n // `JsonNull` does not: it asks about a stored JSON *value*, so negating it is\n // a value comparison. Handled here rather than by delegating, because the\n // delegate refuses a bare sentinel — correctly, since Prisma does — and this\n // one did not arrive bare. `{ not: Prisma.JsonNull }` is a valid Prisma\n // filter and has to stay one.\n if (jsonNullKind(operand) === \"json\") {\n return concat(\n sql(\"not \"),\n parenthesize(equals(column, field, operand, context.dialect, locate)),\n );\n }\n\n // `not: AnyNull` is \"neither kind of null\", so it negates the union `equals`\n // builds. Safe to negate directly because that predicate is total — see the\n // note there — so no row falls through on NULL the way `not (col = value)`\n // would.\n if (jsonNullKind(operand) === \"any\") {\n return concat(\n sql(\"not \"),\n parenthesize(equals(column, field, operand, context.dialect, locate)),\n );\n }\n\n if (!isFilterObject(operand)) {\n return concat(\n sql(`${column} <> `),\n fieldParam(field, context.dialect, encoded(field, context.dialect, locate)),\n );\n }\n\n // `not: { in: [...] }` and the rest compile to `not (<positive form>)`.\n // Prisma emits `not in` directly, which is a different *text* but the same\n // predicate: both yield NULL — and so exclude the row — when the column is\n // NULL. The contract is equal results, not equal SQL.\n const inner = compileFieldFilter(schema, field, operand, context, locate);\n return concat(sql(\"not \"), parenthesize(inner));\n}\n\nfunction equals(\n column: string,\n field: FieldSchema,\n operand: unknown,\n dialect: SqlDialect,\n locate: (args: any) => any,\n): Fragment {\n // `= ?` with a null parameter matches nothing in SQL, where Prisma means\n // `is null`. This is the difference that would silently return wrong rows.\n //\n // `Prisma.DbNull` means the same thing on a `Json` column and arrives as a\n // sentinel object rather than as `null`, so it reached the parameter path\n // below and compiled to `= ?` — matching nothing, whatever the table held.\n // Its sibling `JsonNull` is a genuine *value* comparison and belongs there:\n // the column holds the JSON `null`, and `= 'null'` is how you find it.\n //\n // **KNOWN DIVERGENCE — a bare `null` on a `Json` column.** For every other\n // column type `operand === null` meaning `is null` *is* Prisma's reading. On\n // a `Json` column it is not: Prisma reads a bare `null` as the JSON value\n // `null` there, exactly as it does at a path. Measured on 6.19.2 against\n // Postgres 16 and SQLite, over a table holding both empty states:\n //\n // { equals: null } prisma \"payload\"::jsonb = $1 the JSON-null rows\n // gemi \"payload\" is null the SQL-NULL rows\n // { not: null } prisma \"payload\"::jsonb <> $1\n // gemi \"payload\" is not null (one row more)\n //\n // Disjoint row sets on identical data, and nothing raises. Left alone rather\n // than fixed here: this is the *column* path, and #407 is about a value at a\n // path — where a bare `null` now agrees with Prisma exactly, because\n // `compileJsonFilter` reads it as `JsonNull`. Changing the column would be a\n // behaviour change to released semantics for every `Json` filter, which wants\n // its own change and its own differential cases.\n //\n // `{ equals: Prisma.DbNull }` is unambiguous and compiles to this same\n // predicate on both libraries, so the divergence has a spelling that avoids\n // it. `docs/orm.md` says so where a reader will look, and\n // `known-divergences.test.ts` pins that it keeps saying so.\n if (operand === null || jsonNullKind(operand) === \"db\") {\n return sql(`${column} is null`);\n }\n\n // `AnyNull` is the union of the other two, and the only operand here that is\n // not a single comparison. Both halves are needed: the column being SQL NULL\n // and the column holding the JSON value `null` are different rows, and this\n // is the one filter that asks for both.\n //\n // No three-valued-logic trap in the `or`. `is null` is never NULL, and when\n // the column is non-NULL the second half is a proper boolean — so the\n // predicate is total, which is what makes negating it in `compileNot` safe.\n if (jsonNullKind(operand) === \"any\") {\n return group(\n [sql(`${column} is null`), jsonNullComparison(column, field, dialect)],\n \" or \",\n );\n }\n\n return concat(\n sql(`${column} = `),\n fieldParam(field, dialect, encoded(field, dialect, locate)),\n );\n}\n\n/**\n * `<column> = <the JSON value null>`, as a bound parameter.\n *\n * The literal is the compiler's, not the caller's, so there is no argument to\n * read it out of — but it stays a parameter rather than being written into the\n * text, because invariant 2 admits no exception for a value the compiler\n * happens to know. It is also what keeps the dialects' encoders as the single\n * authority on how a JSON null is spelled: `'null'` on SQLite, `'null'::text::jsonb`\n * on Postgres, decided by `fieldParam` and `castParameter` rather than here.\n */\nfunction jsonNullComparison(\n column: string,\n field: FieldSchema,\n dialect: SqlDialect,\n): Fragment {\n return concat(\n sql(`${column} = `),\n fieldParam(field, dialect, () => dialect.encode(JSON_NULL, field)),\n );\n}\n\nfunction inList(\n schema: ModelSchema,\n column: string,\n field: FieldSchema,\n operand: unknown,\n context: WhereContext,\n locate: (args: any) => any,\n negated: boolean,\n): Fragment {\n const { dialect } = context;\n\n if (!Array.isArray(operand)) {\n throw new InvalidArgumentError(\n `where.${field.name}.${negated ? \"notIn\" : \"in\"}`,\n schema.name,\n context.operation,\n \"Expected an array.\",\n );\n }\n\n // `x in ()` is a syntax error, and Prisma emits a constant-false predicate\n // for it. `not in ()` is vacuously true by the same logic.\n if (operand.length === 0) return negated ? sql(\"true\") : FALSE;\n\n return dialect.inList(column, negated, operand.length, (args) => {\n const values = locate(args) as unknown[];\n return values.map((value) => dialect.encode(value, field));\n });\n}\n\n/**\n * Prisma does **not** escape `%` or `_` inside the value — verified by reading\n * the parameters it binds: `contains: \"50%_x\"` binds `\"%50%_x%\"`. So a user\n * string containing a wildcard really does act as a wildcard.\n *\n * That is a footgun, but the contract this ORM signs is differential equality\n * with Prisma, and escaping here would break it on every such query. Matching\n * Prisma and saying so is the honest option; diverging quietly is not.\n */\nfunction likePattern(\n operator: \"contains\" | \"startsWith\" | \"endsWith\",\n locate: (args: any) => any,\n): Binder {\n return (args) => {\n const value = String(locate(args));\n if (operator === \"contains\") return `%${value}%`;\n if (operator === \"startsWith\") return `${value}%`;\n return `%${value}`;\n };\n}\n\nfunction encoded(\n field: FieldSchema,\n dialect: SqlDialect,\n locate: (args: any) => any,\n): Binder {\n return (args) => dialect.encode(locate(args), field);\n}\n\n/**\n * True for `{ contains: ... }`, false for a plain value. A `Date` is a value\n * even though it is an object, and so is a `Uint8Array` for a `Bytes` column.\n */\nfunction isFilterObject(value: unknown): boolean {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n !ArrayBuffer.isView(value)\n );\n}\n",
9
9
  "import type { SqlDialect } from \"../dialect\";\nimport {\n InvalidArgumentError,\n UnsupportedQueryError,\n} from \"../errors\";\nimport { COUNT_KEY } from \"../relation-filters\";\nimport type { ModelSchema, RelationSchema } from \"../schema\";\nimport { type Fragment, concat, sql } from \"./fragment\";\nimport { correlate } from \"./correlate\";\nimport { compileWhere } from \"./where\";\n\n/**\n * `orderBy: { organization: { name: \"asc\" } }` and\n * `orderBy: { accounts: { _count: \"desc\" } }`.\n *\n * The third use of the same correlated subquery — after `exists` for relation\n * filters and `count(*)` for `_count` — this time as a scalar in the `order by`\n * clause:\n *\n * order by (select \"_o0\".\"name\" from \"Organization\" as \"_o0\"\n * where \"_o0\".\"id\" = \"User\".\"organizationId\") asc\n *\n * A subquery rather than the `left join` Prisma emits, for the reason the other\n * two are subqueries: a join changes what the `from` clause contains, and on a\n * to-many it changes the row count. Ordering must not be able to do either. The\n * cost is that the subquery runs per row, which is the same index dependency the\n * benchmarks measured for `_count` — one `@@index` on the child's foreign key,\n * worth 6.3× there.\n *\n * ### The scope has nowhere to live in Prisma's shape, so we add one\n *\n * Every other path that reaches another model's rows carries a `where` the\n * policy walk can narrow: an `include` node has one, a relation filter's\n * operand is one, a `_count` entry takes one. `orderBy: { rel: { field: \"asc\" } }`\n * has none — Prisma's grammar has no slot for it.\n *\n * It still needs one. Ordering by a column of rows the caller cannot read leaks\n * their contents by comparison, and ordering by `_count` leaks their number\n * outright. So the policy walk writes `where` into this node, and this compiler\n * reads it. That key is **not** in Prisma's `orderBy` type, so the generated\n * bases — which type `args` as Prisma's own — cannot accept it from application\n * code. It is reachable only from the policy pass, which is the only thing that\n * should produce it.\n */\n\nexport interface RelationOrdering {\n expression: Fragment;\n direction: \"asc\" | \"desc\";\n nulls?: \"first\" | \"last\";\n}\n\nexport function relationOrderExpression(\n schema: ModelSchema,\n relation: RelationSchema,\n value: unknown,\n operation: string,\n dialect: SqlDialect,\n locate: (args: any) => any,\n index: number,\n): RelationOrdering {\n const path = `orderBy.${relation.name}`;\n\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new InvalidArgumentError(\n path,\n schema.name,\n operation,\n relation.kind === \"many\"\n ? `Expected { _count: \"asc\" | \"desc\" }.`\n : `Expected an object naming one field of ${relation.model}.`,\n );\n }\n\n const node = value as Record<string, unknown>;\n // `where` is the policy walk's, not the caller's — see the note above.\n const keys = Object.keys(node).filter((key) => key !== \"where\");\n\n if (keys.length !== 1) {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n operation,\n keys.length === 0\n ? `Name the field to order by.`\n : `Name exactly one field to order by; got ${keys.join(\", \")}. ` +\n `Order by several with an array: [{ a: … }, { b: … }].`,\n );\n }\n\n const [key] = keys;\n const source = correlate(\n schema,\n relation,\n dialect,\n `_o${index}`,\n `${dialect.quoteIdent(schema.table)}.`,\n operation,\n );\n\n const selected = projection(\n schema,\n relation,\n source.child,\n key,\n node[key],\n operation,\n source.qualifier,\n dialect,\n );\n\n const filter = compileWhere(\n source.child,\n node.where,\n { dialect, operation, qualifier: source.qualifier },\n (args) => locate(args)?.where,\n );\n\n const parts: Fragment[] = [\n sql(\n `(select ${selected.expression} from ${source.source} ` +\n `where ${source.correlation}`,\n ),\n ];\n if (filter) parts.push(sql(\" and \"), filter);\n parts.push(sql(\")\"));\n\n return {\n expression: concat(...parts),\n direction: selected.direction,\n nulls: selected.nulls,\n };\n}\n\n/**\n * What the subquery selects, and which way it sorts.\n *\n * A to-many can only be ordered by `_count`; a to-one only by one of its own\n * fields. Both refuse the other's form rather than reinterpreting it — ordering\n * a to-one by `_count` would be ordering by 0 or 1, and ordering a to-many by a\n * field has no single answer for a parent with several children.\n */\nfunction projection(\n schema: ModelSchema,\n relation: RelationSchema,\n child: ModelSchema,\n key: string,\n value: unknown,\n operation: string,\n qualifier: string,\n dialect: SqlDialect,\n): { expression: string; direction: \"asc\" | \"desc\"; nulls?: \"first\" | \"last\" } {\n const path = `orderBy.${relation.name}.${key}`;\n const { direction, nulls } = readDirection(schema, path, value, operation);\n\n if (key === COUNT_KEY) {\n if (relation.kind !== \"many\") {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n operation,\n `${relation.name} is a to-one relation, so its count is 0 or 1. ` +\n `Order by one of ${child.name}'s fields instead.`,\n );\n }\n return { expression: \"count(*)\", direction, nulls };\n }\n\n if (relation.kind === \"many\") {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n operation,\n `${relation.name} is a to-many relation, so ordering by '${key}' has no ` +\n `single answer for a parent with several children. Only ` +\n `{ _count: … } is supported.`,\n );\n }\n\n const field = child.fields[key];\n if (!field) {\n throw new UnsupportedQueryError(\n path,\n schema.name,\n operation,\n `'${key}' is not a field on ${child.name}. Known fields: ` +\n `${Object.keys(child.fields).join(\", \")}.`,\n );\n }\n\n return {\n expression: `${qualifier}${dialect.quoteIdent(field.column)}`,\n direction,\n nulls,\n };\n}\n\n/** The same three forms `parseOrderBy` accepts for a column. */\nfunction readDirection(\n schema: ModelSchema,\n path: string,\n value: unknown,\n operation: string,\n): { direction: \"asc\" | \"desc\"; nulls?: \"first\" | \"last\" } {\n if (value === \"asc\" || value === \"desc\") return { direction: value };\n\n if (typeof value === \"object\" && value !== null) {\n const { sort, nulls } = value as Record<string, unknown>;\n if (sort !== \"asc\" && sort !== \"desc\") {\n throw new InvalidArgumentError(\n path,\n schema.name,\n operation,\n 'Expected \"asc\" or \"desc\".',\n );\n }\n if (nulls === undefined) return { direction: sort };\n if (nulls !== \"first\" && nulls !== \"last\") {\n throw new UnsupportedQueryError(\n `${path}.nulls`,\n schema.name,\n operation,\n 'Expected \"first\" or \"last\".',\n );\n }\n return { direction: sort, nulls };\n }\n\n throw new UnsupportedQueryError(\n path,\n schema.name,\n operation,\n 'Expected \"asc\", \"desc\", or { sort, nulls }.',\n );\n}\n\n",
10
10
  "import type { SqlDialect } from \"../dialect\";\nimport {\n InvalidArgumentError,\n UnknownFieldError,\n UnsupportedQueryError,\n} from \"../errors\";\nimport type { ModelSchema } from \"../schema\";\nimport { type Fragment, joinFragments, sql } from \"./fragment\";\nimport { relationOrderExpression } from \"./order-relation\";\n\n// Nothing in an `orderBy` is ever a parameter: a column name comes from the\n// schema and a direction is a closed set of two words. Both are structural, so\n// both belong in the plan key and neither may come from user input unchecked.\n\nconst DIRECTIONS = new Set([\"asc\", \"desc\"]);\nconst NULLS = new Set([\"first\", \"last\"]);\n\nexport interface OrderTerm {\n column: string;\n direction: \"asc\" | \"desc\";\n nulls?: \"first\" | \"last\";\n /**\n * A compiled expression to order by, instead of the column.\n *\n * Present only for a relation ordering — `orderBy: { organization: { name:\n * \"asc\" } }` — which is a correlated subquery rather than a column, and the\n * first ordering term that can carry a *parameter* (the scope a policy put on\n * the related model). `column` stays populated as a label so the term is still\n * readable in a debugger and so `reverse()` needs no special case.\n */\n expression?: Fragment;\n}\n\n/**\n * What a relation ordering needs that a column ordering does not: a dialect to\n * quote with, and the path back into the argument tree for the scope's binders.\n *\n * Optional, and absent means relation orderings are refused with the message\n * they had before. The only caller that omits it is one compiling a *child*\n * query inside a strategy, where the relation would be a third level and the\n * planner has not been asked for one.\n */\nexport interface OrderContext {\n dialect: SqlDialect;\n /** Re-locates this `orderBy` inside the arguments at bind time. */\n locate: (args: any) => any;\n}\n\n/**\n * Parses Prisma's three accepted forms into terms:\n * `{ id: \"asc\" }`, `[{ a: \"asc\" }, { b: \"desc\" }]`, and the\n * `{ name: { sort: \"asc\", nulls: \"last\" } }` long form.\n */\nexport function parseOrderBy(\n schema: ModelSchema,\n orderBy: unknown,\n operation: string,\n context?: OrderContext,\n): OrderTerm[] {\n if (orderBy === undefined || orderBy === null) return [];\n\n const array = Array.isArray(orderBy);\n const entries = array ? orderBy : [orderBy];\n const terms: OrderTerm[] = [];\n\n for (let index = 0; index < entries.length; index++) {\n const entry = entries[index];\n /**\n * Where *this* entry sits, for a relation ordering's binders.\n *\n * The array form has to be indexed and the object form must not be — and\n * this is a place where getting it wrong is silent, because a scope's\n * parameters would simply bind `undefined` and the ordering would still\n * produce SQL.\n */\n const entryAt = (args: any) => {\n const found = context?.locate(args);\n return array ? found?.[index] : found;\n };\n if (typeof entry !== \"object\" || entry === null) {\n throw new InvalidArgumentError(\n \"orderBy\",\n schema.name,\n operation,\n \"Expected an object or an array of objects.\",\n );\n }\n\n // Insertion order, deliberately unsorted: unlike a `where`, the order of an\n // `orderBy`'s keys is semantic — it is the sort precedence.\n for (const [key, value] of Object.entries(entry)) {\n if (value === undefined) continue;\n\n if (key in schema.relations) {\n if (!context) {\n throw new UnsupportedQueryError(\n `orderBy.${key}`,\n schema.name,\n operation,\n \"Ordering by a relation is not implemented here.\",\n );\n }\n\n const ordered = relationOrderExpression(\n schema,\n schema.relations[key],\n value,\n operation,\n context.dialect,\n (args: any) => entryAt(args)?.[key],\n terms.length,\n );\n\n terms.push({\n column: key,\n direction: ordered.direction,\n ...(ordered.nulls ? { nulls: ordered.nulls } : {}),\n expression: ordered.expression,\n });\n continue;\n }\n\n const field = schema.fields[key];\n if (!field) {\n throw new UnknownFieldError(\n key,\n schema.name,\n Object.keys(schema.fields),\n );\n }\n\n terms.push({\n column: field.column,\n ...parseDirection(schema, key, value, operation),\n });\n }\n }\n\n return terms;\n}\n\nfunction parseDirection(\n schema: ModelSchema,\n key: string,\n value: unknown,\n operation: string,\n): { direction: \"asc\" | \"desc\"; nulls?: \"first\" | \"last\" } {\n if (typeof value === \"string\") {\n if (!DIRECTIONS.has(value)) {\n throw new InvalidArgumentError(\n `orderBy.${key}: ${JSON.stringify(value)}`,\n schema.name,\n operation,\n 'Expected \"asc\" or \"desc\".',\n );\n }\n return { direction: value as \"asc\" | \"desc\" };\n }\n\n if (typeof value === \"object\" && value !== null) {\n const { sort, nulls } = value as Record<string, unknown>;\n const direction = parseDirection(schema, key, sort, operation).direction;\n\n if (nulls === undefined) return { direction };\n if (typeof nulls !== \"string\" || !NULLS.has(nulls)) {\n throw new UnsupportedQueryError(\n `orderBy.${key}.nulls: ${JSON.stringify(nulls)}`,\n schema.name,\n operation,\n 'Expected \"first\" or \"last\".',\n );\n }\n return { direction, nulls: nulls as \"first\" | \"last\" };\n }\n\n throw new UnsupportedQueryError(\n `orderBy.${key}`,\n schema.name,\n operation,\n 'Expected \"asc\", \"desc\", or { sort, nulls }.',\n );\n}\n\n/** Flips every term. This is how Prisma reads a negative `take`. */\nexport function reverse(terms: OrderTerm[]): OrderTerm[] {\n return terms.map((term) => ({\n ...term,\n direction: term.direction === \"asc\" ? \"desc\" : \"asc\",\n ...(term.nulls\n ? { nulls: term.nulls === \"first\" ? (\"last\" as const) : (\"first\" as const) }\n : {}),\n }));\n}\n\nexport function compileOrderBy(\n terms: OrderTerm[],\n dialect: SqlDialect,\n /**\n * Prefix for every column — `\"User\".` — when the statement has a second table\n * in scope. See `WhereContext.qualifier`; absent is the common case and emits\n * byte-identical SQL to what it did before this existed.\n */\n qualifier?: string,\n): Fragment | null {\n if (terms.length === 0) return null;\n\n // `nulls first` / `nulls last` is used directly on both dialects. Prisma\n // emits a `CASE WHEN ... IS NULL` expression on SQLite instead, which dates\n // from before SQLite 3.30 — it has understood the standard syntax since, and\n // Bun bundles 3.51.\n return joinFragments(\n terms.map((term) => {\n const suffix =\n ` ${term.direction}` + (term.nulls ? ` nulls ${term.nulls}` : \"\");\n\n // A relation ordering brings its own expression — and its own parameters,\n // which is why this is a `Fragment` rather than a string.\n if (term.expression) {\n return joinFragments([term.expression, sql(suffix)], \"\");\n }\n\n return sql(\n `${qualifier ?? \"\"}${dialect.quoteIdent(term.column)}${suffix}`,\n );\n }),\n \", \",\n );\n}\n",
11
11
  "import type { SqlDialect } from \"../dialect\";\nimport {\n InvalidArgumentError,\n} from \"../errors\";\nimport type { ModelSchema } from \"../schema\";\nimport type { Binder, Fragment } from \"./fragment\";\nimport { reverse, type OrderTerm } from \"./orderBy\";\n\n/**\n * `take` / `skip` have to be integers, and Prisma is stricter than \"a number\":\n * a `skip` counts rows to pass over, so a negative one is meaningless and is\n * rejected rather than clamped. A negative *`take`* is not — it means \"the last\n * N\".\n *\n * **Why refusing rather than coercing**, which is the cheaper fix and the wrong\n * one. The sign of a `take` decides the *SQL*: it flips every ordering term and\n * reverses the result set. Everything else about these two arguments is a bound\n * value. So a `take` that is a string does not merely arrive in the wrong type —\n * it takes the wrong branch, because the branch is `typeof take === \"number\" &&\n * take < 0` and a string is not a number:\n *\n * { take: -2 } -> order flipped, bind 2 the last two rows\n * { take: \"-2\" } -> order as written, bind 2 the *first* two rows\n *\n * `Math.abs(Number(...))` then binds `2` either way, so the statement is valid,\n * the result set is the right size, and the rows are wrong. No error anywhere.\n *\n * Coercing early would fix that one case — `Number(\"-2\")` is negative — and\n * would keep accepting `take: \"abc\"`, which binds `NaN`. Prisma types these as\n * `number` and rejects a string outright, and #72 already chose refusal for the\n * same arguments on a *relation* node. This is that decision reaching the root,\n * where it should have been in the first place.\n *\n * **A fraction is the one deliberate divergence, and it is deliberate because\n * of what the alternative measures at.** Prisma accepts `take: 1.5` and\n * truncates toward zero. Binding it, which is what this did, does not:\n *\n * prisma take: 1.5 -> 1 row truncates\n * sqlite limit ? = 1.5 -> SQLiteError: datatype mismatch (SQLITE_MISMATCH)\n * postgres limit $1 = 1.5 -> 2 rows rounds to nearest\n *\n * Measured through Bun against both engines. So the status quo is an opaque\n * driver error on one dialect and a silent disagreement with Prisma *and* with\n * the other dialect on the second — from one argument, with no line naming\n * `take`. Matching Prisma would mean truncating here and also changing #72's\n * relation-node rule, which refuses fractions today; refusing keeps one rule at\n * both levels and fails in the loud direction. `docs/orm.md` records it as a\n * divergence rather than leaving it to be discovered.\n *\n * `argument` is the name to report: `take` at the root, `accounts.take` on a\n * relation node.\n *\n * **`InvalidArgumentError`, and this note is what asked for it.** #88 left the\n * error type deliberately wrong here — `UnsupportedQueryError` spells \"does not\n * support 'take' *yet*\", and there is no future in which `take: \"-2\"` becomes\n * supported — on the reasoning that validation is a *category* rather than a\n * reworded string, and that inventing one while #78 was in flight would be the\n * second copy this function exists to avoid.\n *\n * #78 landed `UnsupportedByDesignError` for \"a decision rather than a gap\", and\n * the third class followed it. A bad value now says `Invalid 'take'` and says\n * what a good one looks like, which is the whole of what was owed.\n */\nexport function assertPageArgument(\n model: string,\n operation: string,\n argument: string,\n key: \"take\" | \"skip\",\n value: unknown,\n): void {\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n throw new InvalidArgumentError(\n argument,\n model,\n operation,\n `Expected an integer, got ${JSON.stringify(value)}.`,\n );\n }\n if (key === \"skip\" && value < 0) {\n throw new InvalidArgumentError(\n argument,\n model,\n operation,\n `A 'skip' counts rows to pass over, so it cannot be negative. Prisma ` +\n `rejects one too.`,\n );\n }\n}\n\n/**\n * `skip` / `take`, plus the two pieces of Prisma behaviour around them that are\n * invisible until you read the SQL it emits:\n *\n * - Paginating without an `orderBy` injects `order by <primary key> asc`.\n * Without it, \"page 2\" is only meaningful if the storage engine happens to\n * return a stable order, which is not guaranteed on either dialect.\n * - A *negative* `take` means \"the last N\": Prisma flips every ordering term,\n * takes `abs(take)`, and then reverses the result set so the caller still\n * sees their own ordering. `reversed` carries that last part out to `shape`.\n *\n * **Validation happens here rather than in each caller's argument check.** Three\n * operations page — `findMany` and friends, `count`, `aggregate` — and they\n * validate their arguments in two different files. Putting the check at the one\n * place that *reads* `take` and `skip` means a fourth pager cannot be added\n * without it, which is the same reason invariant 1 puts every query through one\n * door.\n */\nexport function pagination(\n schema: ModelSchema,\n /**\n * The operation being compiled, for the error message. Required rather than\n * defaulted: this exists to report which call was refused, and a default\n * would name the wrong one on every caller that forgot it.\n */\n operation: string,\n args: any,\n dialect: SqlDialect,\n parsed: OrderTerm[],\n /**\n * Whether the operation returns at most one row, which pins `take` to 1\n * whatever the arguments say. Passed rather than derived from the operation\n * name, so this module needs to know nothing about which operations exist —\n * which is also what keeps `read.ts` and `aggregate.ts` from importing each\n * other to share it.\n */\n single = false,\n): { clause: Fragment; terms: OrderTerm[]; reversed: boolean } {\n // Against the caller's own arguments, before `single` pins anything. A\n // `findFirst` ignores the value of `take` — but it still accepts the\n // argument, and Prisma still rejects a string there, so refusing what was\n // written beats refusing what survived.\n if (args?.take !== undefined) {\n assertPageArgument(schema.name, operation, \"take\", \"take\", args.take);\n }\n if (args?.skip !== undefined) {\n assertPageArgument(schema.name, operation, \"skip\", \"skip\", args.skip);\n }\n\n const take = single ? 1 : args?.take;\n const skip = args?.skip;\n\n let terms = parsed;\n const paginating = take !== undefined || skip !== undefined;\n\n if (paginating && terms.length === 0 && !single) {\n terms = schema.primaryKey.map((name) => ({\n column: schema.fields[name]?.column ?? name,\n direction: \"asc\" as const,\n }));\n }\n\n const negative = typeof take === \"number\" && take < 0;\n if (negative) terms = reverse(terms);\n\n const takeBinder: Binder | null =\n take === undefined\n ? null\n : single\n ? () => 1\n : (callArgs: any) => Math.abs(Number(callArgs?.take));\n\n const skipBinder: Binder | null =\n skip === undefined ? null : (callArgs: any) => Number(callArgs?.skip);\n\n return {\n clause: dialect.paginate(takeBinder, skipBinder),\n terms,\n reversed: negative,\n };\n}\n",
@@ -31,7 +31,7 @@
31
31
  "import { UnsupportedQueryError } from \"./errors\";\nimport type { ModelPolicy } from \"./policy\";\n\n/**\n * Soft deletes, as a policy.\n *\n * This ships as a small built-in because it is the proof that the policy hook is\n * expressive enough to be worth having: hiding deleted rows from *every* read\n * including nested ones, and turning a `delete` into an `update`, is the thing\n * ORMs traditionally implement as a special case threaded through the query\n * builder. Here it is thirty lines against the same `ModelPolicy` interface an\n * application writes, with no privileged access to anything.\n *\n * Usage — `deletedAt` must be a nullable `DateTime` on the model:\n *\n * export class User extends UserModel {\n * static $policies = [softDeletes<typeof User>()]\n * }\n *\n * `typeof User` rather than `User`: the class carries `$schema`, which is what\n * constrains `field` to real columns (#262). The instance spelling still\n * compiles and simply checks nothing.\n *\n * await User.findMany({}) // deleted rows are not there\n * await User.expire({ where }) // sets deletedAt, does not remove the row\n *\n * **`User.delete()` is still a hard delete**, and cannot be made otherwise —\n * see the note on #263 above `softDelete` below. The policy scopes reads; it is\n * the wrapper that rewrites a write, and the wrapper cannot be named `delete`.\n *\n * Composing it with a policy of your own is now just a longer list, in the order\n * they should apply:\n *\n * static $policies = [softDeletes<typeof User>(), new TenantPolicy()]\n *\n * That ordering is the author's, and within a class it is the array's. Across\n * classes `policiesFor` still walks base to derived, so a `$policies` on a\n * shared base is applied before a subclass's and can only be narrowed further.\n *\n * It stays a **factory** rather than a class because it takes configuration and\n * a model type parameter, and a bare constructor in a `$policies` array has\n * nowhere to put either. `PolicyEntry` accepts both forms for exactly this\n * reason.\n */\n\n/**\n * The column names a model *class* declares, read off its generated `$schema`.\n *\n * This is the part of #262 that made it worth doing. The old constraint was\n * `keyof M & string` against an **instance** type, which is not a column check:\n * `softDeletes<User>({ field: \"save\" })` compiled clean and then raised\n * `UnknownFieldError` at runtime, because `save` is a method. Reading\n * `$schema.fields` instead asks the schema what the columns are, so the check\n * and the runtime error now disagree about nothing.\n *\n * It works because the generator emits `satisfies ModelSchema` rather than a\n * `: ModelSchema` annotation — see `bin/orm/emit.ts`. An annotation would widen\n * `fields` to `Record<string, FieldSchema>` and `keyof` it back to `string`.\n *\n * **Falls back to `string` rather than to `never`.** A caller can pass anything\n * that behaves like a model — the structural fakes in `soft-deletes.test.ts` do\n * — and those carry no literal schema. Degrading to unchecked keeps them\n * working; degrading to `never` would reject every `field` they pass.\n */\nexport type SchemaFields<M> = M extends { $schema: { fields: infer F } }\n ? Extract<keyof F, string> extends never\n ? string\n : Extract<keyof F, string>\n : string;\n\n/**\n * The row a model class describes, so one type parameter can carry both.\n *\n * `softDeletes` hands its parameter to `ModelPolicy`, which uses it as the\n * **row** type — `redact` is called with a `Partial` of it. The schema, though,\n * hangs off the *class*. Taking the class and recovering the row through\n * `prototype` is what lets one spelling supply both, and it is the mechanism\n * #243 found and recorded rather than a new invention.\n *\n * An instance type has no `prototype`, so `softDeletes<User>()` still resolves\n * to `User` and keeps compiling — it simply gets no field checking, because an\n * instance type is not where the column names live.\n */\ntype RowOf<M> = M extends { prototype: infer Row } ? Row : M;\n\n/**\n * **The parameter is still the model type, not the field union.**\n *\n * `SoftDeleteOptions` is exported, so an application can annotate with it —\n * `const opts: SoftDeleteOptions<User> = …`. Constraining the parameter to\n * `extends string` and taking the union directly read more honestly from inside\n * this file and broke every such annotation from outside it, with *\"Type 'User'\n * does not satisfy the constraint 'string'\"*. Keeping the model type and\n * resolving the union here costs nothing and keeps those compiling: a row type\n * has no `$schema`, so it degrades to `string` exactly as it did before, and\n * `SoftDeleteOptions<typeof User>` is the spelling that gains the check.\n */\nexport interface SoftDeleteOptions<M = any> {\n /**\n * The timestamp column. Defaults to `deletedAt`, which the template uses.\n *\n * Constrained to the model's **schema fields** when the model is reachable —\n * `softDeletes<typeof User>()`, `softDelete(User)`, `softDeleteMany(User)` —\n * so a typo, or a column the model does not have, is a compile error instead\n * of an `UnknownFieldError` on the first read.\n *\n * Passing no model leaves it `string`, and therefore unchecked. That is the\n * one spelling that cannot be constrained: there is nothing to constrain it\n * against.\n */\n field?: SchemaFields<M>;\n}\n\n/**\n * The read half: every query is scoped to rows whose delete timestamp is null.\n *\n * It applies to nested relation reads for the same reason every policy does —\n * a relation read is `$exec` on the related model — which is the half that\n * ORM-level soft deletes usually get wrong. A deleted `Account` does not appear\n * under `User.findMany({ include: { accounts: true } })` without anything being\n * written at the include site.\n */\nexport function softDeletes<M = any>(\n options: SoftDeleteOptions<M> = {},\n): ModelPolicy<any, any, RowOf<M>> {\n const field = options.field ?? \"deletedAt\";\n\n return {\n scope: () => ({ [field]: null }),\n\n // A soft-deleted model still creates ordinary rows; the column is left to\n // its own default (null). Present because a policy carrying `scope` with no\n // `onCreate` is refused — deliberately, since for a tenant scope that\n // combination is a half-written policy. Here the pass-through *is* the\n // correct behaviour, so it is stated rather than implied.\n onCreate: (_context, data) => data,\n\n // The same statement for updates, and here it is doing real work rather than\n // satisfying a formality. This policy scopes on `deletedAt`, and\n // `softDelete()` below turns a delete into an update that *writes*\n // `deletedAt` — which is precisely the \"an update moves a row out of the\n // scope that selected it\" shape `ScopeEscapeError` refuses. It is also\n // exactly what soft deleting means, so this policy is the one that gets to\n // say the write is intended.\n //\n // Note it does not authorise anything else: the guard is per policy, so a\n // tenant policy sitting beside this one in `$policies` still has to answer\n // for its own column. That separation is the point of the per-policy check.\n onUpdate: (_context, data) => data,\n };\n}\n\n/**\n * What `softDelete` needs from the model it wraps: the write to delegate to,\n * and the schema to name in a refusal.\n *\n * Structural rather than `typeof Model`, so a caller can pass anything that\n * behaves like one — which is why `$schema` is optional here even though every\n * generated model has it.\n */\ntype SoftDeletable<T, Op extends string> = {\n [K in Op]: (args: any) => Promise<T>;\n} & { $schema?: { name: string } };\n\n/**\n * The write half: rewrites a `delete` into an `update` that sets the timestamp.\n *\n * Kept separate from `softDeletes()` and applied at the call site rather than\n * folded into the policy, because a policy rewrites *arguments* and this\n * changes the *operation* — and `$exec` dispatches on the operation before a\n * policy is consulted. Widening `ModelPolicy` to let a policy swap the\n * operation would make every `$exec` call's meaning depend on a hook, which is\n * a much larger claim than scoping a `where`.\n *\n * export class User extends UserModel {\n * static $policies = [softDeletes<typeof User>()]\n * static expire = softDelete(User)\n * static expireMany = softDeleteMany(User)\n * }\n *\n * **The name is not `delete`, and cannot be** — the reason is below.\n * `User.delete()` stays a hard delete.\n *\n * Both return the row(s) the way the real operations do, and both are still\n * subject to the model's policies, because they go through `update` /\n * `updateMany` — which means the soft-delete scope applies and a\n * `expire({ where })` naming an already-deleted row finds nothing, exactly as\n * a hard delete of a missing row would.\n *\n * Why this does not return the generated `delete`'s own signature — #263.\n *\n * `static delete = softDelete(User)` is the recipe the docs used to teach, and\n * it does not type-check. The obvious repair is to have this return the model's\n * own `delete` type so the override is assignable to what it overrides. That\n * cannot work, and the reason is the language rather than the typing:\n *\n * static delete = softDelete(User)\n * // ^ the type of this member would be read off `User`...\n * // ^ ...whose `delete` is the member being defined\n *\n * TypeScript answers `TS7022: 'delete' implicitly has type 'any' because it\n * does not have a type annotation and is referenced directly or indirectly in\n * its own initializer.` Annotating it does not help either: the annotation has\n * to name `typeof UserModel.delete`, and `softDelete(User)` is then checked\n * against a generic signature it still cannot satisfy.\n *\n * Passing the *base* instead of the subclass would break the cycle and break\n * the feature: `softDelete` delegates to `model.update`, policies are resolved\n * per registered class, and `UserModel` carries none — so the soft-delete scope\n * would not apply and `delete` would hide rows it never filtered.\n *\n * So the recipe changed instead of the types, and `delete` stays a hard delete.\n * `docs/orm.md` says so in the words a reader needs, and\n * `soft-delete.test-d.ts` holds the documented snippet verbatim so it cannot\n * drift back.\n \n */\nexport function softDelete<T, M = any>(\n model: SoftDeletable<T, \"update\"> & M,\n options: SoftDeleteOptions<M> = {},\n): (args: any) => Promise<T> {\n const field = options.field ?? \"deletedAt\";\n\n return (args: any) => {\n assertNoData(model, args, \"delete\");\n return model.update({\n ...args,\n data: { [field]: new Date() },\n });\n };\n}\n\nexport function softDeleteMany<T, M = any>(\n model: SoftDeletable<T, \"updateMany\"> & M,\n options: SoftDeleteOptions<M> = {},\n): (args: any) => Promise<T> {\n const field = options.field ?? \"deletedAt\";\n\n return (args: any = {}) => {\n assertNoData(model, args, \"deleteMany\");\n return model.updateMany({\n ...args,\n data: { [field]: new Date() },\n });\n };\n}\n\n/**\n * A `delete` takes no `data`, so one being present means the caller thinks they\n * are calling something else — most likely they wrote `update` and meant it.\n * Refused rather than silently overwritten by the timestamp.\n */\nfunction assertNoData(\n model: { $schema?: { name: string } },\n args: any,\n operation: string,\n): void {\n if (args?.data === undefined) return;\n\n throw new UnsupportedQueryError(\n \"data\",\n // The real model, not the literal `\"soft delete\"` this used to pass.\n // `UnsupportedQueryError` documents `model` as inspectable, and a string\n // that is not a model name can never be what an application matches on\n // (#112). `$schema` is optional only because the parameter is structural —\n // every generated model carries it.\n model.$schema?.name ?? \"unknown\",\n operation,\n `${operation} takes no 'data' — the soft-delete rewrite supplies it. ` +\n `Call update directly if you meant to change other fields at the same ` +\n `time.`,\n );\n}\n",
32
32
  "/**\n * `take` / `skip` built from a request, so that a query string cannot produce a\n * value the compiler refuses.\n *\n * **This file is not `compile/paginate.ts`, and the two do opposite jobs.** That\n * one is the compiler's *validator*: `assertPageArgument` refuses a `take` or a\n * `skip` that is not an integer, and its note explains at length why refusing is\n * the only honest answer — a fraction is an opaque `SQLITE_MISMATCH` on one\n * dialect and a silent disagreement with both Prisma and the other dialect on\n * the second. Read that note (`compile/paginate.ts:9-63`) for the reasoning; it\n * is not restated here.\n *\n * This file is the other half, and the half that was missing. A refusal is only\n * useful if the correct spelling is available and short — otherwise the fix a\n * caller reaches for is `Math.floor` sprinkled at whichever call site happened\n * to throw, which fixes one of them. `paginate` is the shorter spelling:\n *\n * const { take, skip } = paginate({\n * page: req.search.get(\"page\"),\n * perPage: req.search.get(\"perPage\"),\n * })\n * await Post.findMany({ take, skip, orderBy: { createdAt: \"desc\" } })\n *\n * against the shape gemi's own documentation used to teach, which breaks:\n *\n * const limit = Number(req.search.get(\"limit\")) || 25 // ?limit=1.5\n *\n * **Why the arguments are `unknown` and not `number`.** A query string is where\n * these values come from — that is the entire point of the helper, and typing\n * them as `number` would mean every caller writes the `Number(...)` that is the\n * bug. `req.search.get` hands back `string | string[]` (`http/HttpRequest.ts:211-223`\n * collects repeated keys into an array), a JSON body hands back whatever was\n * sent, and both arrive here unconverted.\n *\n * **The coercions, measured rather than assumed.** Each of these is a shape a\n * real query string produces, and each one is why the rules below are not simply\n * `Number(...)`:\n *\n * Number(\"\") 0 `?perPage=` — a form's blank field\n * Number(\" \") 0 the same, url-encoded\n * Number(null) 0 an absent key read off a plain object\n * Number([\"2\"]) 2 a single repeated key\n * Number([\"1\",\"2\"]) NaN two of them — so `Number` honours a\n * repeated param sometimes and not others\n * Number(\"1e400\") Infinity not a number `Math.trunc` can fix\n * Number(true) 1\n *\n * The `0`s are the dangerous ones. `page: 0` computes `skip: -25`, and\n * `assertPageArgument` refuses a negative `skip` outright — so a blank field in\n * a form is a 500. `perPage: 0` is worse, because it is *not* refused: `take: 0`\n * is a perfectly good integer and returns an empty page for ever.\n *\n * So an empty or blank string means **absent**, not zero, and anything that is\n * not a number or a string is absent too. Coercing a boolean or a one-element\n * array would be honouring input no HTTP surface can actually send, at the cost\n * of the rule being explainable.\n *\n * **Why `skip` is capped.** `?page=1e300` is finite, so it survives every check\n * above and multiplies out to a `skip` of `2.5e301`. Measured through Bun\n * against SQLite, binding an offset past int64:\n *\n * offset 1e18 -> ok\n * offset 9223372036854775807 -> SQLiteError: datatype mismatch\n * offset 1e20 -> SQLiteError: datatype mismatch\n *\n * — the same `SQLITE_MISMATCH` the fractional-`take` note records, reached from\n * the other end. The cap is `Number.MAX_SAFE_INTEGER` rather than int64's\n * ceiling: it is well inside what both drivers bind, it needs no per-dialect\n * measurement, and above it JavaScript's own arithmetic stops being exact, so a\n * number past it was never a page anybody could count to.\n *\n * **The guarantee, which is the whole contract:** every return value is a pair\n * of integers with `take >= 1` and `skip >= 0`, for every input. It is therefore\n * impossible for `paginate`'s output to be something `assertPageArgument`\n * refuses, and `page-args.test.ts` asserts exactly that by running the validator\n * over the output of a table of hostile query-string values rather than by\n * re-checking the arithmetic.\n */\n\n/**\n * The default page size, and it is not an invented number: `docs/controllers.md`\n * and `docs/routing.md` both taught `Number(req.search.get(\"limit\")) || 25`. The\n * helper replaces those examples, and picking a different default would silently\n * change the page size of every call site rewritten onto it.\n */\nconst DEFAULT_PER_PAGE = 25;\n\n/**\n * The ceiling on a *request-supplied* page size. Its job is that `?perPage=100000`\n * cannot ask for the whole table — one request that reads a million rows into\n * memory is a denial of service the caller did not have to authenticate for.\n *\n * A hundred rather than \"no ceiling at all\", because a helper whose ceiling is\n * opt-in has no ceiling in the code that most needs one. An endpoint that\n * genuinely serves larger pages says so at the call site — `paginate(args,\n * { maxPerPage: 500 })` — which is one visible decision instead of an invisible\n * default.\n */\nconst DEFAULT_MAX_PER_PAGE = 100;\n\n/**\n * See the cap discussion above. Exported so the test can assert the boundary\n * against the same constant the implementation clamps to, rather than repeating\n * the literal and agreeing with itself.\n */\nexport const MAX_SKIP = Number.MAX_SAFE_INTEGER;\n\n/**\n * A query-string value as a whole number, or `null` for \"absent\".\n *\n * `null` rather than a default, so the two callers below can apply *their* own\n * default — the page defaults to 1 and the size defaults to `perPage`, and\n * folding that in here would mean one of them lying about which.\n */\nfunction toWholeNumber(value: unknown): number | null {\n if (typeof value === \"string\") {\n // Measured above: `Number(\"\")` is 0. `?perPage=` is what a browser sends\n // for a blank field, and reading it as zero rather than as absent is how a\n // cleared filter box becomes an empty page.\n if (value.trim() === \"\") return null;\n } else if (typeof value !== \"number\") {\n // Arrays, objects, booleans, `null`, `undefined`. Every one of them has a\n // `Number()` answer and not one of them has a *meaning* — see the table.\n return null;\n }\n\n const parsed = Number(value);\n // Catches `NaN` and both infinities in one test, which is what `Math.trunc`\n // cannot do: `Math.trunc(Infinity)` is `Infinity`, and `Number.isInteger`\n // then says false, so an untruncatable value would reach the compiler and be\n // refused there — by this helper, which exists so that cannot happen.\n if (!Number.isFinite(parsed)) return null;\n\n // Toward zero, which is what Prisma does with a fractional `take` (measured\n // in `compile/paginate.ts`). Matching it means a caller who moves off Prisma\n // keeps the same page, rather than trading a crash for a different answer.\n return Math.trunc(parsed);\n}\n\nconst clamp = (value: number, low: number, high: number) =>\n Math.min(Math.max(value, low), high);\n\n/**\n * Turn `{ page, perPage }` — as read off a query string, in whatever state the\n * client left them — into a `take` / `skip` pair the ORM accepts.\n *\n * paginate({ page: \"2\" }) { take: 25, skip: 25 }\n * paginate({ page: \"2.5\" }) { take: 25, skip: 25 }\n * paginate({ page: \"0\" }) { take: 25, skip: 0 }\n * paginate({ page: \"abc\" }) { take: 25, skip: 0 }\n * paginate({ perPage: \"1000\" }) { take: 100, skip: 0 }\n * paginate({ perPage: \"10\" }, { maxPerPage: 5 }) { take: 5, skip: 0 }\n */\nexport function paginate(\n args: { page?: unknown; perPage?: unknown },\n options: {\n /** The page size when the request does not name one. Default 25. */\n perPage?: number;\n /** The largest page size a *request* may ask for. Default 100. */\n maxPerPage?: number;\n } = {},\n): { take: number; skip: number } {\n // The options are code rather than user input, so it is tempting to trust\n // them. They are clamped anyway, because the guarantee this function makes is\n // unconditional — `paginate(args, { perPage: 0 })` returning `take: 0` would\n // be an empty page for ever, with the helper's own name on it.\n //\n // `Infinity` is honoured rather than rejected, and it is the one place the\n // options are read differently from the arguments. `toWholeNumber` refuses a\n // non-finite value because that rule is about hostile input — `?perPage=1e400`\n // is `Infinity`, and binding it as a `take` is not a page size. Reusing the\n // same rule here made `{ maxPerPage: Infinity }`, the natural spelling of \"no\n // ceiling\", fall back to the default 100 instead: an internal export written\n // to opt out of the cap silently got it back, returned a plausible first page,\n // and was found when somebody noticed 900 rows missing. The caller who writes\n // `Infinity` here is the application, saying so deliberately.\n const maxPerPage =\n options.maxPerPage === Infinity\n ? Infinity\n : Math.max(1, toWholeNumber(options.maxPerPage) ?? DEFAULT_MAX_PER_PAGE);\n const fallback = clamp(\n toWholeNumber(options.perPage) ?? DEFAULT_PER_PAGE,\n 1,\n maxPerPage,\n );\n\n const perPage = clamp(toWholeNumber(args?.perPage) ?? fallback, 1, maxPerPage);\n\n // Page 1 is the first page, and there is no page 0 — a `page` below 1 is\n // clamped up rather than refused, because the values that land there are\n // `\"\"`, `\"0\"` and `\"-1\"`, and none of them is a request for a page that does\n // not exist. Refusing would put a 500 on a link somebody edited by hand.\n const page = Math.max(toWholeNumber(args?.page) ?? 1, 1);\n\n // Clamped after multiplying rather than by bounding `page` first: the product\n // is the thing that has to stay exact, and `page` alone cannot be bounded\n // without knowing `perPage` anyway.\n const skip = Math.min((page - 1) * perPage, MAX_SKIP);\n\n return { take: perPage, skip };\n}\n"
33
33
  ],
34
- "mappings": "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",
35
- "debugId": "6C763B7B4D3CF39C64756E2164756E21",
34
+ "mappings": "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",
35
+ "debugId": "19A81DBAAD3173AA64756E2164756E21",
36
36
  "names": []
37
37
  }