grafeo-ogm 1.10.1 → 1.12.0
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.
- package/CHANGELOG.md +43 -0
- package/README.md +10 -0
- package/dist/cjs/cli/commands/init.d.ts.map +1 -1
- package/dist/cjs/cli/commands/init.js +3 -0
- package/dist/cjs/cli/commands/init.js.map +1 -1
- package/dist/cjs/cli/index.js +1 -0
- package/dist/cjs/cli/index.js.map +1 -1
- package/dist/cjs/cli/logo.d.ts +15 -0
- package/dist/cjs/cli/logo.d.ts.map +1 -0
- package/dist/cjs/cli/logo.js +49 -0
- package/dist/cjs/cli/logo.js.map +1 -0
- package/dist/cjs/cli/types.d.ts +7 -1
- package/dist/cjs/cli/types.d.ts.map +1 -1
- package/dist/cjs/compilers/mutation.compiler.d.ts +11 -1
- package/dist/cjs/compilers/mutation.compiler.d.ts.map +1 -1
- package/dist/cjs/compilers/mutation.compiler.js +24 -2
- package/dist/cjs/compilers/mutation.compiler.js.map +1 -1
- package/dist/cjs/compilers/where.compiler.d.ts +14 -0
- package/dist/cjs/compilers/where.compiler.d.ts.map +1 -1
- package/dist/cjs/compilers/where.compiler.js +29 -0
- package/dist/cjs/compilers/where.compiler.js.map +1 -1
- package/dist/cjs/ogm.d.ts.map +1 -1
- package/dist/cjs/ogm.js +3 -1
- package/dist/cjs/ogm.js.map +1 -1
- package/dist/esm/cli/commands/init.d.ts.map +1 -1
- package/dist/esm/cli/commands/init.js +3 -0
- package/dist/esm/cli/commands/init.js.map +1 -1
- package/dist/esm/cli/index.js +1 -0
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/cli/logo.d.ts +15 -0
- package/dist/esm/cli/logo.d.ts.map +1 -0
- package/dist/esm/cli/logo.js +45 -0
- package/dist/esm/cli/logo.js.map +1 -0
- package/dist/esm/cli/types.d.ts +7 -1
- package/dist/esm/cli/types.d.ts.map +1 -1
- package/dist/esm/compilers/mutation.compiler.d.ts +11 -1
- package/dist/esm/compilers/mutation.compiler.d.ts.map +1 -1
- package/dist/esm/compilers/mutation.compiler.js +24 -2
- package/dist/esm/compilers/mutation.compiler.js.map +1 -1
- package/dist/esm/compilers/where.compiler.d.ts +14 -0
- package/dist/esm/compilers/where.compiler.d.ts.map +1 -1
- package/dist/esm/compilers/where.compiler.js +29 -0
- package/dist/esm/compilers/where.compiler.js.map +1 -1
- package/dist/esm/ogm.d.ts.map +1 -1
- package/dist/esm/ogm.js +3 -1
- package/dist/esm/ogm.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.12.0 (2026-07-01) — 🛡️ `OR: []` now matches nothing (Prisma semantics)
|
|
4
|
+
|
|
5
|
+
> **Safety fix, and the one deliberate compat break with `@neo4j/graphql-ogm`.** An empty logical `OR` array used to vanish from the compiled WHERE clause, so `deleteMany({ where: { OR: [] } })` compiled **byte-identical to no `where` at all**: `MATCH (n:Label) DETACH DELETE n` — a full-label wipe. The realistic trigger is a dynamically built filter (`OR: ids.map((id) => ({ id }))`) receiving an empty list. The deprecated `@neo4j/graphql-ogm` (verified against its final release, 5.11.4) has the same behavior, so grafeo was bug-for-bug compatible. We now diverge on purpose.
|
|
6
|
+
|
|
7
|
+
### 🛡️ Empty `OR` compiles to `false` — everywhere
|
|
8
|
+
|
|
9
|
+
Per Prisma's documented operator semantics (`OR` with 0 filters → empty result; `AND` with 0 filters → all items), an `OR` with **zero effective disjuncts** now compiles to the literal Cypher clause `false`:
|
|
10
|
+
|
|
11
|
+
- **Top-level where** — `find` / `findFirst` / `count` / `aggregate` return nothing; `updateMany` / `deleteMany` touch nothing.
|
|
12
|
+
- **All-no-op disjuncts count as empty** — `OR: [{}]` and `OR: [{ name: undefined }]` also compile to `false`, matching Prisma's "effective filter" counting. Mixed arrays keep the effective disjuncts: `OR: [{}, { name: 'x' }]` → `(n.name = $param0)`.
|
|
13
|
+
- **Nested relationship quantifiers** — `posts_SOME: { OR: [] }` compiles to an unsatisfiable `EXISTS { ... WHERE false }` instead of "any related node".
|
|
14
|
+
- **Connection filters** — `postsConnection_SOME: { OR: [] }` likewise.
|
|
15
|
+
- **Nested mutation operations** — `update.<rel>.disconnect[].where: { OR: [] }` used to detach **every** related node (and `connect` to attach every candidate); both now compile an unsatisfiable `WHERE false`.
|
|
16
|
+
|
|
17
|
+
`AND: []` is unchanged and still matches everything — the empty conjunction is true, also per Prisma. `where: undefined` / `where: {}` remain the explicit, intentional "match all" forms. Fulltext `OR`/`AND` already threw on empty arrays and are unaffected.
|
|
18
|
+
|
|
19
|
+
### 🔎 Compiler warning on empty logical operators
|
|
20
|
+
|
|
21
|
+
When a logical operator compiles with zero effective conditions, the compiler now emits a `warn` through your configured `OGMConfig.logger` — `OR` warns "matches nothing", `AND` warns "matches everything" — so a dynamically built filter that received an empty list is visible in your logs instead of silently changing query shape. Fires only on the anomalous branch (zero hot-path cost), no-ops when no logger is configured or the logger has no `warn` method.
|
|
22
|
+
|
|
23
|
+
### Tests
|
|
24
|
+
|
|
25
|
+
Regression coverage for the full blast radius: compiler-level (`OR: []`, `AND: []`, all-no-op disjuncts, mixed disjuncts, sibling-condition stitching, `NOT: { OR: [] }`, nested quantifier, connection filter), mutation-level (nested `connect`/`disconnect` with `OR: []`), model-level (`deleteMany({ where: { OR: [] } })` emits `WHERE false`, not a wipe), and warning-level (logger `warn` fired for empty `OR`/`AND`/all-no-op disjuncts, silent for effective operators and `warn`-less loggers). Full suite green (1509); lint, format, and type-check clean.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 1.11.0 (2026-06-13) — ✨ `grafeo init` logo splash
|
|
30
|
+
|
|
31
|
+
> **A little polish on the way in.** An interactive `grafeo init` now opens with the grafeo wordmark — the ANSI Shadow logo in blueprint blue. It's purely decorative and rigorously gated: it appears **only** when stdout is a real terminal, so a piped or redirected run (`grafeo init > file`, `grafeo init | tee`) and any CI run get clean, unadorned output. **No new runtime dependency** — the wordmark is embedded statically (no runtime `figlet`), routed through the existing IO seam, and `NO_COLOR` is honored.
|
|
32
|
+
|
|
33
|
+
### ✨ Decorative wordmark on interactive `init`
|
|
34
|
+
|
|
35
|
+
- **TTY-gated on stdout, not stdin.** The splash gates on whether **stdout** is a TTY (`io.stdoutTTY`), distinct from the stdin-based `interactive` flag that gates prompts. This is the correctness fix that matters: redirecting output (`> file`, `| tee`) no longer leaks ANSI art into captured output, even from an interactive shell.
|
|
36
|
+
- **CI-safe.** Suppressed whenever `CI` is set, regardless of TTY state.
|
|
37
|
+
- **`NO_COLOR` honored, by presence.** Any presence of `NO_COLOR` — including an empty string, per [no-color.org](https://no-color.org) — prints the wordmark uncolored.
|
|
38
|
+
- **Zero footprint.** The logo is a static string table; no runtime `figlet` dependency, no change to the published runtime deps (still just `jiti`).
|
|
39
|
+
|
|
40
|
+
### Tests
|
|
41
|
+
|
|
42
|
+
New `logo` unit coverage (TTY-on colored, non-TTY no-op, CI no-op, `NO_COLOR` suppression including the empty-string presence case) plus two `init` integration cases (splash shown when stdout is a TTY; suppressed when stdout is redirected even with an interactive stdin). Full suite green (1494); lint, format, and type-check clean.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
3
46
|
## 1.10.1 (2026-06-13) — neo4j-driver 6 support
|
|
4
47
|
|
|
5
48
|
> grafeo-ogm now declares compatibility with **neo4j-driver 6** alongside 5 — the peer range widens to `^5.0.0 || ^6.0.0`. **No code or API change.** grafeo never used the accessors driver 6 removed (`Node.identity` / `Relationship.start` / `Relationship.end`), and only touches stable core APIs (`neo4j.driver`, `auth`, `int`, `isInt`, `types.*`), so the full test suite — and the TypeScript type-check — passes unchanged against driver `6.1.0`. v6 users no longer get a spurious peer-dependency warning on install. (Verified at the unit + type level; the session/wire API grafeo uses is stable across the 5→6 boundary.)
|
package/README.md
CHANGED
|
@@ -285,6 +285,8 @@ npx grafeo init --yes # non-interactive: accept detected values / defaults (C
|
|
|
285
285
|
|
|
286
286
|
`init` is **non-destructive** — it never overwrites your config, schema, or seed without `--force` (or an interactive confirmation), and connection settings reference `NEO4J_*` env vars (it never prompts for a password).
|
|
287
287
|
|
|
288
|
+
On an interactive run, `init` opens with the grafeo wordmark splash. It's purely decorative and gates on a real terminal: when stdout is piped or redirected (`grafeo init > file`, `grafeo init | tee`), or in CI, the splash is suppressed so captured output stays clean. `NO_COLOR` is honored.
|
|
289
|
+
|
|
288
290
|
### `grafeo generate`
|
|
289
291
|
|
|
290
292
|
Compiles your SDL to TypeScript types (wraps `generateTypes()` — see [Type Generation](#type-generation) for the programmatic API and the full option list).
|
|
@@ -1686,6 +1688,14 @@ These are incremental improvements you can adopt at your own pace:
|
|
|
1686
1688
|
- All identifiers are **validated and escaped** -- injection-safe by default
|
|
1687
1689
|
- Type generation is **modular and driver-free** -- smaller output, faster builds
|
|
1688
1690
|
|
|
1691
|
+
### ⚠️ Deliberate divergence: `OR: []` matches nothing
|
|
1692
|
+
|
|
1693
|
+
This is the **one intentional behavioral difference** from `@neo4j/graphql-ogm`. The deprecated OGM silently dropped empty `OR` arrays from the WHERE clause, so `delete({ where: { OR: [] } })` compiled to an *unfiltered* `MATCH ... DETACH DELETE` — a full-label wipe. The realistic trigger is a dynamically built filter (`OR: ids.map((id) => ({ id }))`) receiving an empty list.
|
|
1694
|
+
|
|
1695
|
+
grafeo-ogm follows **Prisma semantics** instead: an `OR` with zero effective disjuncts compiles to `false` and matches **nothing** — at the top level, inside relationship quantifiers (`_SOME`/`_NONE`/...), in connection filters, and in nested `connect`/`disconnect` operations. `AND: []` still matches everything (the empty conjunction is true, also per Prisma). If you relied on `OR: []` behaving as "no filter", pass no `where` (or omit the `OR` key) instead.
|
|
1696
|
+
|
|
1697
|
+
When this happens at runtime, the compiler emits a `warn` through your configured `OGMConfig.logger`, so an accidentally empty filter shows up in your logs instead of failing silently.
|
|
1698
|
+
|
|
1689
1699
|
---
|
|
1690
1700
|
|
|
1691
1701
|
## Comparisons
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AA6JtC,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAgHxE"}
|
|
@@ -39,6 +39,7 @@ const path = __importStar(require("node:path"));
|
|
|
39
39
|
const node_util_1 = require("node:util");
|
|
40
40
|
const detect_1 = require("../detect");
|
|
41
41
|
const errors_1 = require("../errors");
|
|
42
|
+
const logo_1 = require("../logo");
|
|
42
43
|
function parseInitFlags(argv) {
|
|
43
44
|
try {
|
|
44
45
|
const { values } = (0, node_util_1.parseArgs)({
|
|
@@ -173,6 +174,8 @@ async function chooseSchema(candidates, io, canPrompt) {
|
|
|
173
174
|
}
|
|
174
175
|
async function runInit(argv, io) {
|
|
175
176
|
const flags = parseInitFlags(argv);
|
|
177
|
+
// Decorative wordmark — interactive TTY only, no-op in CI/piped (see logo.ts).
|
|
178
|
+
(0, logo_1.printSplash)(io);
|
|
176
179
|
const yes = flags.yes === true;
|
|
177
180
|
const force = flags.force === true;
|
|
178
181
|
const canPrompt = io.interactive === true && !yes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/cli/index.js
CHANGED
|
@@ -183,6 +183,7 @@ if (typeof require !== 'undefined' && require.main === module) {
|
|
|
183
183
|
out: (line) => process.stdout.write(`${line}\n`),
|
|
184
184
|
err: (line) => process.stderr.write(`${line}\n`),
|
|
185
185
|
interactive: process.stdin.isTTY === true,
|
|
186
|
+
stdoutTTY: process.stdout.isTTY === true,
|
|
186
187
|
// Real interactive confirmation for destructive `db push --force-drop`.
|
|
187
188
|
// Without this the prompt branch in confirmDrops was unreachable and a
|
|
188
189
|
// TTY user was wrongly refused unless they passed --yes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CliIO } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* A decorative splash is only appropriate when stdout is a real terminal —
|
|
4
|
+
* never in CI, nor when output is piped/redirected (there it would be noise or
|
|
5
|
+
* would corrupt captured output). Gates on stdout (not stdin's `interactive`):
|
|
6
|
+
* `grafeo init > file` and `grafeo init | tee` must NOT leak the ANSI art.
|
|
7
|
+
*/
|
|
8
|
+
export declare function shouldShowSplash(io: CliIO): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Print the grafeo-ogm logo splash. No-op unless interactive (see
|
|
11
|
+
* shouldShowSplash). Honors NO_COLOR by emitting the wordmark uncolored.
|
|
12
|
+
* Routed through io.out so it stays unit-testable.
|
|
13
|
+
*/
|
|
14
|
+
export declare function printSplash(io: CliIO): void;
|
|
15
|
+
//# sourceMappingURL=logo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../../src/cli/logo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAqBrC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAW3C"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shouldShowSplash = shouldShowSplash;
|
|
4
|
+
exports.printSplash = printSplash;
|
|
5
|
+
// grafeo-ogm wordmark — figlet "ANSI Shadow", embedded statically so there is
|
|
6
|
+
// NO runtime figlet dependency. Regenerate with the figlet npm package if the
|
|
7
|
+
// name ever changes.
|
|
8
|
+
const LOGO = [
|
|
9
|
+
' ██████╗ ██████╗ █████╗ ███████╗███████╗ ██████╗ ██████╗ ██████╗ ███╗ ███╗',
|
|
10
|
+
'██╔════╝ ██╔══██╗██╔══██╗██╔════╝██╔════╝██╔═══██╗ ██╔═══██╗██╔════╝ ████╗ ████║',
|
|
11
|
+
'██║ ███╗██████╔╝███████║█████╗ █████╗ ██║ ██║█████╗██║ ██║██║ ███╗██╔████╔██║',
|
|
12
|
+
'██║ ██║██╔══██╗██╔══██║██╔══╝ ██╔══╝ ██║ ██║╚════╝██║ ██║██║ ██║██║╚██╔╝██║',
|
|
13
|
+
'╚██████╔╝██║ ██║██║ ██║██║ ███████╗╚██████╔╝ ╚██████╔╝╚██████╔╝██║ ╚═╝ ██║',
|
|
14
|
+
' ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝',
|
|
15
|
+
];
|
|
16
|
+
const SUBTITLE = 'type-safe ogm for neo4j';
|
|
17
|
+
// Truecolor "blueprint blue" + a dimmer variant for the subtitle.
|
|
18
|
+
const BLUE = '\x1b[38;2;96;165;250m';
|
|
19
|
+
const DIM = '\x1b[38;2;96;120;160m';
|
|
20
|
+
const RESET = '\x1b[0m';
|
|
21
|
+
/**
|
|
22
|
+
* A decorative splash is only appropriate when stdout is a real terminal —
|
|
23
|
+
* never in CI, nor when output is piped/redirected (there it would be noise or
|
|
24
|
+
* would corrupt captured output). Gates on stdout (not stdin's `interactive`):
|
|
25
|
+
* `grafeo init > file` and `grafeo init | tee` must NOT leak the ANSI art.
|
|
26
|
+
*/
|
|
27
|
+
function shouldShowSplash(io) {
|
|
28
|
+
return io.stdoutTTY === true && !io.env.CI;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Print the grafeo-ogm logo splash. No-op unless interactive (see
|
|
32
|
+
* shouldShowSplash). Honors NO_COLOR by emitting the wordmark uncolored.
|
|
33
|
+
* Routed through io.out so it stays unit-testable.
|
|
34
|
+
*/
|
|
35
|
+
function printSplash(io) {
|
|
36
|
+
if (!shouldShowSplash(io))
|
|
37
|
+
return;
|
|
38
|
+
// no-color.org: ANY presence of NO_COLOR (even empty string) disables color.
|
|
39
|
+
const color = io.env.NO_COLOR === undefined;
|
|
40
|
+
const width = Math.max(...LOGO.map((l) => l.length));
|
|
41
|
+
const pad = Math.max(0, Math.floor((width - SUBTITLE.length) / 2));
|
|
42
|
+
io.out('');
|
|
43
|
+
for (const line of LOGO)
|
|
44
|
+
io.out(' ' + (color ? BLUE + line + RESET : line));
|
|
45
|
+
io.out('');
|
|
46
|
+
io.out(' ' + ' '.repeat(pad) + (color ? DIM + SUBTITLE + RESET : SUBTITLE));
|
|
47
|
+
io.out('');
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.js","sourceRoot":"","sources":["../../../src/cli/logo.ts"],"names":[],"mappings":";;AA2BA,4CAEC;AAOD,kCAWC;AA7CD,8EAA8E;AAC9E,8EAA8E;AAC9E,qBAAqB;AACrB,MAAM,IAAI,GAAsB;IAC9B,uFAAuF;IACvF,uFAAuF;IACvF,uFAAuF;IACvF,uFAAuF;IACvF,uFAAuF;IACvF,uFAAuF;CACxF,CAAC;AAEF,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAE3C,kEAAkE;AAClE,MAAM,IAAI,GAAG,uBAAuB,CAAC;AACrC,MAAM,GAAG,GAAG,uBAAuB,CAAC;AACpC,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,EAAS;IACxC,OAAO,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,EAAS;IACnC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAAE,OAAO;IAClC,6EAA6E;IAC7E,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,MAAM,IAAI,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACX,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACb,CAAC"}
|
package/dist/cjs/cli/types.d.ts
CHANGED
|
@@ -57,8 +57,14 @@ export interface CliIO {
|
|
|
57
57
|
err(line: string): void;
|
|
58
58
|
/** Injection seam: db commands create their driver through this. */
|
|
59
59
|
driverFactory?(connection: ResolvedConnection): Driver;
|
|
60
|
-
/** TTY-interactive session? Gates confirmation prompts. */
|
|
60
|
+
/** TTY-interactive session (stdin is a TTY)? Gates confirmation prompts. */
|
|
61
61
|
interactive?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Is stdout itself a TTY? Distinct from `interactive` (stdin): decorative
|
|
64
|
+
* output like the logo splash must gate on THIS so `grafeo init > file` or
|
|
65
|
+
* `grafeo init | tee` never leak ANSI art into captured output.
|
|
66
|
+
*/
|
|
67
|
+
stdoutTTY?: boolean;
|
|
62
68
|
/** Prompt for yes/no confirmation (only called when interactive). */
|
|
63
69
|
confirm?(question: string): Promise<boolean>;
|
|
64
70
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;CACrC;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACzD;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAE/D;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oEAAoE;IACpE,aAAa,CAAC,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACvD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,kFAAkF;AAClF,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;CACrC;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACzD;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAE/D;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oEAAoE;IACpE,aAAa,CAAC,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAAC;IACvD,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C;;;;OAIG;IACH,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OGMLogger } from '../execution/executor';
|
|
1
2
|
import { NodeDefinition, SchemaMetadata } from '../schema/types';
|
|
2
3
|
export interface MutationResult {
|
|
3
4
|
cypher: string;
|
|
@@ -13,7 +14,16 @@ export declare class MutationCompiler {
|
|
|
13
14
|
* Bounded by the number of node types in the schema (~50-100 entries).
|
|
14
15
|
*/
|
|
15
16
|
private labelCache;
|
|
16
|
-
|
|
17
|
+
private logger?;
|
|
18
|
+
constructor(schema: SchemaMetadata, options?: {
|
|
19
|
+
logger?: OGMLogger;
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Surface a logical operator that contributed zero effective conditions.
|
|
23
|
+
* Mirrors WhereCompiler.warnEmptyLogical — fires only on the anomalous
|
|
24
|
+
* branch, so the hot path pays nothing.
|
|
25
|
+
*/
|
|
26
|
+
private warnEmptyLogical;
|
|
17
27
|
/** Clear internal caches. Useful in tests to prevent cross-test pollution. */
|
|
18
28
|
clearCaches(): void;
|
|
19
29
|
private getCachedLabelString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation.compiler.d.ts","sourceRoot":"","sources":["../../../src/compilers/mutation.compiler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAEd,cAAc,EACf,MAAM,iBAAiB,CAAC;AAqBzB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"mutation.compiler.d.ts","sourceRoot":"","sources":["../../../src/compilers/mutation.compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ const RELATIONSHIP_SUFFIXES = ['_SOME', '_NONE', '_ALL', '_SINGLE'];
|
|
|
13
13
|
* Compiles create, update, delete, and label mutations into Cypher + params.
|
|
14
14
|
*/
|
|
15
15
|
class MutationCompiler {
|
|
16
|
-
constructor(schema) {
|
|
16
|
+
constructor(schema, options) {
|
|
17
17
|
this.schema = schema;
|
|
18
18
|
/**
|
|
19
19
|
* Cache of computed label strings per type name.
|
|
@@ -22,6 +22,17 @@ class MutationCompiler {
|
|
|
22
22
|
this.labelCache = new Map();
|
|
23
23
|
/** Counter for unique relationship filter variables within a single WHERE clause. */
|
|
24
24
|
this.relFilterCounter = 0;
|
|
25
|
+
this.logger = options?.logger;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Surface a logical operator that contributed zero effective conditions.
|
|
29
|
+
* Mirrors WhereCompiler.warnEmptyLogical — fires only on the anomalous
|
|
30
|
+
* branch, so the hot path pays nothing.
|
|
31
|
+
*/
|
|
32
|
+
warnEmptyLogical(op, context) {
|
|
33
|
+
this.logger?.warn?.(op === 'OR'
|
|
34
|
+
? `[OGM] ${context}.OR has zero effective conditions — compiled to \`false\` (matches nothing, per Prisma semantics). Omit the OR key to match everything.`
|
|
35
|
+
: `[OGM] ${context}.AND has zero effective conditions — no filter emitted (matches everything).`);
|
|
25
36
|
}
|
|
26
37
|
/** Clear internal caches. Useful in tests to prevent cross-test pollution. */
|
|
27
38
|
clearCaches() {
|
|
@@ -1191,11 +1202,15 @@ class MutationCompiler {
|
|
|
1191
1202
|
conditions.push(`NOT (${innerConditions.join(' AND ')})`);
|
|
1192
1203
|
}
|
|
1193
1204
|
// AND — all sub-conditions must hold
|
|
1194
|
-
if (Array.isArray(whereSpec.AND))
|
|
1205
|
+
if (Array.isArray(whereSpec.AND)) {
|
|
1206
|
+
const before = conditions.length;
|
|
1195
1207
|
for (let i = 0; i < whereSpec.AND.length; i++) {
|
|
1196
1208
|
const sub = this.buildConnectionWhereConditions(whereSpec.AND[i], targetVar, `${prefix}_AND${i}`, params, targetNodeDef);
|
|
1197
1209
|
conditions.push(...sub);
|
|
1198
1210
|
}
|
|
1211
|
+
if (conditions.length === before)
|
|
1212
|
+
this.warnEmptyLogical('AND', 'mutation connection where');
|
|
1213
|
+
}
|
|
1199
1214
|
// OR — any sub-condition must hold
|
|
1200
1215
|
if (Array.isArray(whereSpec.OR)) {
|
|
1201
1216
|
const orClauses = [];
|
|
@@ -1206,6 +1221,13 @@ class MutationCompiler {
|
|
|
1206
1221
|
}
|
|
1207
1222
|
if (orClauses.length > 0)
|
|
1208
1223
|
conditions.push(`(${orClauses.join(' OR ')})`);
|
|
1224
|
+
// Prisma semantics: OR with zero effective disjuncts matches NOTHING.
|
|
1225
|
+
// Previously the operator vanished, so `disconnect: [{ where:
|
|
1226
|
+
// { OR: [] } }]` detached EVERY related node instead of none.
|
|
1227
|
+
else {
|
|
1228
|
+
this.warnEmptyLogical('OR', 'mutation connection where');
|
|
1229
|
+
conditions.push('false');
|
|
1230
|
+
}
|
|
1209
1231
|
}
|
|
1210
1232
|
// Fallback: if no recognized keys, treat the whole spec as node conditions
|
|
1211
1233
|
// (backward compatibility for simple `{ id: '...' }` style)
|