@cerbos/orm-prisma 4.0.0 → 4.1.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/README.md +168 -12
- package/lib/index.d.ts +74 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +344 -90
- package/lib/index.js.map +1 -1
- package/package.json +10 -7
- package/src/adversarial.test.ts +948 -253
- package/src/corpus.ts +414 -0
- package/src/generated/prisma-adversarial/browser.ts +10 -0
- package/src/generated/prisma-adversarial/client.ts +10 -0
- package/src/generated/prisma-adversarial/internal/class.ts +24 -4
- package/src/generated/prisma-adversarial/internal/prismaNamespace.ts +178 -2
- package/src/generated/prisma-adversarial/internal/prismaNamespaceBrowser.ts +27 -1
- package/src/generated/prisma-adversarial/models/AdversarialInner.ts +1369 -0
- package/src/generated/prisma-adversarial/models/AdversarialParent.ts +1474 -0
- package/src/generated/prisma-adversarial/models/AdversarialResource.ts +124 -0
- package/src/generated/prisma-adversarial/models.ts +2 -0
- package/src/generated/{prisma → prisma-adversarial-pg}/browser.ts +14 -19
- package/src/generated/{prisma → prisma-adversarial-pg}/client.ts +16 -21
- package/src/generated/{prisma → prisma-adversarial-pg}/commonInputTypes.ts +153 -71
- package/src/generated/prisma-adversarial-pg/internal/class.ts +264 -0
- package/src/generated/{prisma → prisma-adversarial-pg}/internal/prismaNamespace.ts +339 -371
- package/src/generated/{prisma → prisma-adversarial-pg}/internal/prismaNamespaceBrowser.ts +56 -48
- package/src/generated/prisma-adversarial-pg/models/AdversarialCategory.ts +1404 -0
- package/src/generated/prisma-adversarial-pg/models/AdversarialInner.ts +1371 -0
- package/src/generated/prisma-adversarial-pg/models/AdversarialLabel.ts +1275 -0
- package/src/generated/prisma-adversarial-pg/models/AdversarialParent.ts +1476 -0
- package/src/generated/prisma-adversarial-pg/models/AdversarialResource.ts +1791 -0
- package/src/generated/prisma-adversarial-pg/models/AdversarialSubCategory.ts +1404 -0
- package/src/generated/prisma-adversarial-pg/models/AdversarialTag.ts +1310 -0
- package/src/generated/prisma-adversarial-pg/models.ts +18 -0
- package/src/generated/prisma-adversarial-pg-v6/index.d.ts +11830 -0
- package/src/generated/prisma-adversarial-v6/index.d.ts +3173 -44
- package/src/index.ts +508 -119
- package/src/test-setup.adversarial-url.ts +18 -0
- package/src/test-setup.adversarial.pg.v6.ts +13 -0
- package/src/test-setup.adversarial.pg.v7.ts +9 -0
- package/src/translator.test.ts +1586 -0
- package/src/generated/prisma/internal/class.ts +0 -274
- package/src/generated/prisma/models/Category.ts +0 -1412
- package/src/generated/prisma/models/Label.ts +0 -1276
- package/src/generated/prisma/models/NestedResource.ts +0 -1562
- package/src/generated/prisma/models/NextLevelNestedResource.ts +0 -1337
- package/src/generated/prisma/models/Resource.ts +0 -2196
- package/src/generated/prisma/models/SubCategory.ts +0 -1412
- package/src/generated/prisma/models/Tag.ts +0 -1276
- package/src/generated/prisma/models/User.ts +0 -1503
- package/src/generated/prisma/models.ts +0 -19
- package/src/generated/prisma-v6/index.d.ts +0 -13726
- package/src/index.test.ts +0 -8885
- package/src/test-setup.v6.ts +0 -5
- package/src/test-setup.v7.ts +0 -7
- /package/src/generated/{prisma → prisma-adversarial-pg}/enums.ts +0 -0
- /package/src/generated/{prisma-v6 → prisma-adversarial-pg-v6}/client.d.ts +0 -0
- /package/src/generated/{prisma-v6 → prisma-adversarial-pg-v6}/default.d.ts +0 -0
- /package/src/generated/{prisma-v6 → prisma-adversarial-pg-v6}/edge.d.ts +0 -0
- /package/src/generated/{prisma-v6 → prisma-adversarial-pg-v6}/runtime/index-browser.d.ts +0 -0
- /package/src/generated/{prisma-v6 → prisma-adversarial-pg-v6}/runtime/library.d.ts +0 -0
- /package/src/generated/{prisma-v6 → prisma-adversarial-pg-v6}/wasm.d.ts +0 -0
package/src/corpus.ts
ADDED
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
PlanExpression,
|
|
6
|
+
PlanExpressionValue,
|
|
7
|
+
PlanExpressionVariable,
|
|
8
|
+
} from "@cerbos/core";
|
|
9
|
+
import type {
|
|
10
|
+
PlanExpressionOperand,
|
|
11
|
+
PlanResourcesResponse,
|
|
12
|
+
Value,
|
|
13
|
+
} from "@cerbos/core";
|
|
14
|
+
|
|
15
|
+
import { PlanKind, MapperConfig } from ".";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The parts of the shared `../conformance/` corpus that both of this adapter's suites read.
|
|
19
|
+
*
|
|
20
|
+
* `adversarial.test.ts` plans against a real PDP and executes the translated query;
|
|
21
|
+
* `translator.test.ts` reads the same actions off the golden wire fixtures and asserts nothing
|
|
22
|
+
* but the emitted filter. They must agree on two things or they prove less than they appear to:
|
|
23
|
+
*
|
|
24
|
+
* - **the mapper.** The unit test pins the filter this adapter emits for a mapping; the harness
|
|
25
|
+
* proves that same filter returns the rows the PDP allows. Two copies that drifted would leave
|
|
26
|
+
* the pinned filters describing a mapping no harness ever executes.
|
|
27
|
+
* - **the classification.** Which actions this adapter must refuse, and with which message, is a
|
|
28
|
+
* corpus decision (`actions.json`), not a per-suite one.
|
|
29
|
+
*
|
|
30
|
+
* Test-only: excluded from `tsc --build` by `tsconfig.json`, so nothing here reaches `lib/`.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
export const CONFORMANCE_DIR = path.join(
|
|
34
|
+
__dirname,
|
|
35
|
+
"..",
|
|
36
|
+
"..",
|
|
37
|
+
"conformance"
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
const WIRE_FIXTURES_DIR = path.join(CONFORMANCE_DIR, "wire-fixtures");
|
|
41
|
+
|
|
42
|
+
/** The Prisma model the corpus's resource kind maps onto. */
|
|
43
|
+
export const MODEL = "AdversarialResource";
|
|
44
|
+
|
|
45
|
+
// -- actions.json --------------------------------------------------------------------------------
|
|
46
|
+
|
|
47
|
+
export interface UnsupportedShape {
|
|
48
|
+
action: string;
|
|
49
|
+
shape: string;
|
|
50
|
+
/** One entry per adapter that must reject the shape; the corpus asserts the key set. */
|
|
51
|
+
messages: Record<string, string>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface AdapterUnsupportedEntry {
|
|
55
|
+
action: string;
|
|
56
|
+
reason: string;
|
|
57
|
+
/** Absent on `adapterSupportedExpected` / `nullRepresentationOmitted`, required on a throw. */
|
|
58
|
+
message?: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* A `nullRepresentationOmitted` entry. Every adapter must reject these — the two NULL conventions
|
|
63
|
+
* are indistinguishable on the wire — so `messages` names the whole roster with no promotions to
|
|
64
|
+
* subtract.
|
|
65
|
+
*/
|
|
66
|
+
export interface NullRepresentationOmittedEntry {
|
|
67
|
+
action: string;
|
|
68
|
+
reason: string;
|
|
69
|
+
messages: Record<string, string>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface KnownDivergence {
|
|
73
|
+
action: string;
|
|
74
|
+
adapters: string[];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface ActionsFile {
|
|
78
|
+
conformance: string[];
|
|
79
|
+
adapterUnsupported?: Record<string, AdapterUnsupportedEntry[]>;
|
|
80
|
+
adapterSupportedExpected?: Record<string, AdapterUnsupportedEntry[]>;
|
|
81
|
+
expectedUnsupported: UnsupportedShape[];
|
|
82
|
+
nullRepresentationOmitted: NullRepresentationOmittedEntry[];
|
|
83
|
+
knownDivergences?: KnownDivergence[];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* A shape this adapter must refuse, with the substring its error has to contain.
|
|
88
|
+
*
|
|
89
|
+
* The message is what turns "it threw" into "it threw for the declared reason": without it a
|
|
90
|
+
* mapper typo or an unrelated validation satisfies the assertion just as well as the limitation
|
|
91
|
+
* the corpus documents (cerbos/query-plan-adapters#326).
|
|
92
|
+
*/
|
|
93
|
+
export type ThrowingAction = readonly [
|
|
94
|
+
action: string,
|
|
95
|
+
reason: string,
|
|
96
|
+
message: string,
|
|
97
|
+
];
|
|
98
|
+
|
|
99
|
+
export interface ActionClassification {
|
|
100
|
+
oracleActions: string[];
|
|
101
|
+
throwingActions: ThrowingAction[];
|
|
102
|
+
supportedExpected: Set<string>;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** The pinned message, or a failure — a throwing action without one asserts nothing. */
|
|
106
|
+
export function requireMessage(
|
|
107
|
+
label: string,
|
|
108
|
+
message: string | undefined
|
|
109
|
+
): string {
|
|
110
|
+
if (message === undefined || message === "") {
|
|
111
|
+
throw new Error(
|
|
112
|
+
`actions.json pins no throw message for ${label}: the throw suite would accept a failure for any reason`
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
return message;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export function classifyActionsForAdapter(
|
|
119
|
+
manifest: ActionsFile,
|
|
120
|
+
adapter: string
|
|
121
|
+
): ActionClassification {
|
|
122
|
+
const unsupported = manifest.adapterUnsupported?.[adapter] ?? [];
|
|
123
|
+
const unsupportedActions = new Set(unsupported.map((entry) => entry.action));
|
|
124
|
+
const supportedExpected = new Set(
|
|
125
|
+
(manifest.adapterSupportedExpected?.[adapter] ?? []).map(
|
|
126
|
+
(entry) => entry.action
|
|
127
|
+
)
|
|
128
|
+
);
|
|
129
|
+
const oracleActions = [
|
|
130
|
+
...manifest.conformance.filter(
|
|
131
|
+
(action) => !unsupportedActions.has(action)
|
|
132
|
+
),
|
|
133
|
+
...supportedExpected,
|
|
134
|
+
];
|
|
135
|
+
const throwingActions: ThrowingAction[] = [
|
|
136
|
+
...unsupported.map(
|
|
137
|
+
(entry): ThrowingAction => [
|
|
138
|
+
entry.action,
|
|
139
|
+
entry.reason,
|
|
140
|
+
requireMessage(`adapterUnsupported.${adapter}.${entry.action}`, entry.message),
|
|
141
|
+
]
|
|
142
|
+
),
|
|
143
|
+
...manifest.expectedUnsupported
|
|
144
|
+
.filter((entry) => !supportedExpected.has(entry.action))
|
|
145
|
+
.map((entry): ThrowingAction => [
|
|
146
|
+
entry.action,
|
|
147
|
+
entry.shape,
|
|
148
|
+
requireMessage(
|
|
149
|
+
`expectedUnsupported.${entry.action}.messages.${adapter}`,
|
|
150
|
+
entry.messages?.[adapter]
|
|
151
|
+
),
|
|
152
|
+
]),
|
|
153
|
+
];
|
|
154
|
+
|
|
155
|
+
return {
|
|
156
|
+
oracleActions: [...new Set(oracleActions)].sort(),
|
|
157
|
+
throwingActions: throwingActions.sort(([left], [right]) =>
|
|
158
|
+
left.localeCompare(right)
|
|
159
|
+
),
|
|
160
|
+
supportedExpected,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// -- the golden wire fixtures --------------------------------------------------------------------
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* The instant `regenerate-wire-fixtures.sh` substitutes for the one operand it cannot pin.
|
|
168
|
+
*
|
|
169
|
+
* `ts-window` and `ts-vf` compare against `now() - duration("24h")`, which the planner folds to a
|
|
170
|
+
* literal timestamp: a different value on every capture, so the script rewrites it to
|
|
171
|
+
* `__NOW_MINUS_24H__` to keep the drift check deterministic. Reading the fixture back therefore
|
|
172
|
+
* means choosing a value, and the choice is load-bearing rather than arbitrary — Cerbos emits the
|
|
173
|
+
* PDP's clock at nanosecond precision, which is exactly why both actions are `adapterUnsupported`
|
|
174
|
+
* for this adapter (`Timestamp value exceeds millisecond precision`). A tidy millisecond instant
|
|
175
|
+
* here would translate cleanly and quietly contradict `actions.json`, so the fraction carries the
|
|
176
|
+
* nine digits a real plan carries. `translator.test.ts` pins both sides of that boundary, which is
|
|
177
|
+
* what the `plannedAt` override on `planFromWireFixture` is for.
|
|
178
|
+
*/
|
|
179
|
+
export const PLANNED_AT = "2026-08-11T09:13:39.123456789Z";
|
|
180
|
+
|
|
181
|
+
interface WireOperand {
|
|
182
|
+
expression?: { operator: string; operands: WireOperand[] };
|
|
183
|
+
variable?: string;
|
|
184
|
+
value?: unknown;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
interface WireFixture {
|
|
188
|
+
action: string;
|
|
189
|
+
resourceKind: string;
|
|
190
|
+
filter: { kind: string; condition?: WireOperand };
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function operandFromWire(
|
|
194
|
+
node: WireOperand,
|
|
195
|
+
plannedAt: string
|
|
196
|
+
): PlanExpressionOperand {
|
|
197
|
+
if (node.expression) {
|
|
198
|
+
return new PlanExpression(
|
|
199
|
+
node.expression.operator,
|
|
200
|
+
node.expression.operands.map((child) => operandFromWire(child, plannedAt))
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
if (node.variable !== undefined) {
|
|
204
|
+
return new PlanExpressionVariable(node.variable);
|
|
205
|
+
}
|
|
206
|
+
if (!("value" in node)) {
|
|
207
|
+
throw new Error(
|
|
208
|
+
`Wire fixture operand is neither an expression, a variable nor a value: ${JSON.stringify(node)}`
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
// The one cast in this file. A fixture is JSON the PDP produced, so its leaves are already
|
|
212
|
+
// exactly the JSON shapes `Value` admits — but `JSON.parse` cannot say so, and re-validating a
|
|
213
|
+
// file the corpus workflow regenerates and diffs would assert nothing new.
|
|
214
|
+
return new PlanExpressionValue(
|
|
215
|
+
(node.value === "__NOW_MINUS_24H__" ? plannedAt : node.value) as Value
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/** Every action the corpus has a golden wire fixture for, sorted. */
|
|
220
|
+
export function wireFixtureActions(): string[] {
|
|
221
|
+
return fs
|
|
222
|
+
.readdirSync(WIRE_FIXTURES_DIR)
|
|
223
|
+
.filter((name) => name.endsWith(".json"))
|
|
224
|
+
.map((name) => name.slice(0, -".json".length))
|
|
225
|
+
.sort();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* The plan the pinned PDP produced for `action`, decoded into the shape the SDK hands callers.
|
|
230
|
+
*
|
|
231
|
+
* The fixture is the PDP's HTTP response, so the decoding here is the one `@cerbos/http` performs
|
|
232
|
+
* — `{expression|variable|value}` nodes into `PlanExpression` / `PlanExpressionVariable` /
|
|
233
|
+
* `PlanExpressionValue`. It is deliberately not a hand-built plan: a plan somebody typed is a
|
|
234
|
+
* belief about what the planner emits, and this repository keeps fixtures precisely because that
|
|
235
|
+
* belief has been wrong before. See docs/adr/0006.
|
|
236
|
+
*/
|
|
237
|
+
export function planFromWireFixture(
|
|
238
|
+
action: string,
|
|
239
|
+
plannedAt: string = PLANNED_AT
|
|
240
|
+
): PlanResourcesResponse {
|
|
241
|
+
const fixture: WireFixture = JSON.parse(
|
|
242
|
+
fs.readFileSync(path.join(WIRE_FIXTURES_DIR, `${action}.json`), "utf8")
|
|
243
|
+
);
|
|
244
|
+
const base = {
|
|
245
|
+
cerbosCallId: "",
|
|
246
|
+
requestId: "",
|
|
247
|
+
validationErrors: [],
|
|
248
|
+
metadata: undefined,
|
|
249
|
+
};
|
|
250
|
+
switch (fixture.filter.kind) {
|
|
251
|
+
case PlanKind.CONDITIONAL:
|
|
252
|
+
if (!fixture.filter.condition) {
|
|
253
|
+
throw new Error(`Wire fixture ${action} is conditional with no condition`);
|
|
254
|
+
}
|
|
255
|
+
return {
|
|
256
|
+
...base,
|
|
257
|
+
kind: PlanKind.CONDITIONAL,
|
|
258
|
+
condition: operandFromWire(fixture.filter.condition, plannedAt),
|
|
259
|
+
};
|
|
260
|
+
case PlanKind.ALWAYS_ALLOWED:
|
|
261
|
+
case PlanKind.ALWAYS_DENIED:
|
|
262
|
+
return { ...base, kind: fixture.filter.kind };
|
|
263
|
+
default:
|
|
264
|
+
throw new Error(
|
|
265
|
+
`Wire fixture ${action} has an unrecognised filter kind ${fixture.filter.kind}`
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// -- the mapper ----------------------------------------------------------------------------------
|
|
271
|
+
|
|
272
|
+
export const MAPPER: Record<string, MapperConfig> = {
|
|
273
|
+
// The primary key, reached as `request.resource.id` rather than through `attr` (the `id-*`
|
|
274
|
+
// actions). It is a mapping like any other here, which is the point: an adapter that resolves
|
|
275
|
+
// references by stripping a `request.resource.attr.` prefix never sees this name.
|
|
276
|
+
"request.resource.id": { field: "id" },
|
|
277
|
+
"request.resource.attr.aBool": { field: "aBool" },
|
|
278
|
+
"request.resource.attr.aString": { field: "aString" },
|
|
279
|
+
"request.resource.attr.aNumber": { field: "aNumber" },
|
|
280
|
+
"request.resource.attr.aDouble": { field: "aDouble" },
|
|
281
|
+
"request.resource.attr.aOptionalString": { field: "aOptionalString" },
|
|
282
|
+
"request.resource.attr.createdBy": { field: "createdBy" },
|
|
283
|
+
"request.resource.attr.scope": { field: "scope" },
|
|
284
|
+
"request.resource.attr.createdAt": {
|
|
285
|
+
field: "createdAt",
|
|
286
|
+
valueType: "dateTime",
|
|
287
|
+
},
|
|
288
|
+
// `owner` and `coOwner` alias columns that `aOptionalString` and `scope` also map, under the
|
|
289
|
+
// OTHER null convention: the oracle sends a real null attribute for them rather than omitting
|
|
290
|
+
// it. Declaring that here is what makes the equality family definite for these two attributes
|
|
291
|
+
// and leaves it untouched for every other mapping (cerbos/query-plan-adapters#308).
|
|
292
|
+
"request.resource.attr.owner": {
|
|
293
|
+
field: "aOptionalString",
|
|
294
|
+
nullable: true,
|
|
295
|
+
nullAttributeRepresentation: "explicit",
|
|
296
|
+
},
|
|
297
|
+
"request.resource.attr.coOwner": {
|
|
298
|
+
field: "scope",
|
|
299
|
+
nullable: true,
|
|
300
|
+
nullAttributeRepresentation: "explicit",
|
|
301
|
+
},
|
|
302
|
+
// obj.inner is not a real nested column — mirrors aString, same trick the spring-data
|
|
303
|
+
// reference harness uses for the p-struct probe. `parent.inner` below is the opposite: a real
|
|
304
|
+
// two-level join. The two are kept side by side on purpose.
|
|
305
|
+
"request.resource.attr.obj.inner": { field: "aString" },
|
|
306
|
+
// The corpus's one REAL to-one chain (the `rel-*` actions). `type: "one"` is what makes the
|
|
307
|
+
// adapter emit `is:` rather than `some:`, and `is:` on an optional relation is what requires
|
|
308
|
+
// the hop to exist — the absent-parent guard the negated shapes discriminate. `inner` nests
|
|
309
|
+
// the same declaration one level further out; two levels is where alias scoping breaks.
|
|
310
|
+
"request.resource.attr.parent": {
|
|
311
|
+
relation: {
|
|
312
|
+
name: "parent",
|
|
313
|
+
type: "one",
|
|
314
|
+
model: "AdversarialParent",
|
|
315
|
+
fields: {
|
|
316
|
+
aBool: { field: "aBool" },
|
|
317
|
+
aString: { field: "aString" },
|
|
318
|
+
aNumber: { field: "aNumber" },
|
|
319
|
+
aOptionalString: { field: "aOptionalString", nullable: true },
|
|
320
|
+
inner: {
|
|
321
|
+
relation: {
|
|
322
|
+
name: "inner",
|
|
323
|
+
type: "one",
|
|
324
|
+
model: "AdversarialInner",
|
|
325
|
+
fields: {
|
|
326
|
+
aBool: { field: "aBool" },
|
|
327
|
+
aString: { field: "aString" },
|
|
328
|
+
aNumber: { field: "aNumber" },
|
|
329
|
+
aOptionalString: { field: "aOptionalString", nullable: true },
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
"request.resource.attr.tags": {
|
|
337
|
+
relation: {
|
|
338
|
+
name: "tags",
|
|
339
|
+
type: "many",
|
|
340
|
+
// Model name enables field-to-field comparisons between tag columns; the nullable
|
|
341
|
+
// flag on `name` enables the adapter's three-valued-logic guards for collection
|
|
342
|
+
// macros over elements whose name column is NULL (a missing attribute — a CEL
|
|
343
|
+
// error, hence deny — on the check side).
|
|
344
|
+
model: "AdversarialTag",
|
|
345
|
+
fields: {
|
|
346
|
+
id: { field: "tagId" },
|
|
347
|
+
name: { field: "name", nullable: true },
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
"request.resource.attr.tagNames": {
|
|
352
|
+
relation: {
|
|
353
|
+
name: "tags",
|
|
354
|
+
type: "many",
|
|
355
|
+
field: "name",
|
|
356
|
+
fields: { name: { field: "name", nullable: true } },
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
"request.resource.attr.categories": {
|
|
360
|
+
relation: {
|
|
361
|
+
name: "categories",
|
|
362
|
+
type: "many",
|
|
363
|
+
fields: {
|
|
364
|
+
name: { field: "name" },
|
|
365
|
+
subCategories: {
|
|
366
|
+
relation: {
|
|
367
|
+
name: "subCategories",
|
|
368
|
+
type: "many",
|
|
369
|
+
fields: {
|
|
370
|
+
name: { field: "name" },
|
|
371
|
+
labels: {
|
|
372
|
+
relation: {
|
|
373
|
+
name: "labels",
|
|
374
|
+
type: "many",
|
|
375
|
+
fields: {
|
|
376
|
+
name: { field: "name", nullable: true },
|
|
377
|
+
},
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
},
|
|
386
|
+
// Multi-hop chain probe (W1): mainCategory mirrors the SAME categories/subCategories relation
|
|
387
|
+
// as a single-object dotted chain on the check side (every seed holds at most one category),
|
|
388
|
+
// pinning that the adapter joins through every intermediate hop, never off the root.
|
|
389
|
+
"request.resource.attr.mainCategory": {
|
|
390
|
+
relation: {
|
|
391
|
+
name: "categories",
|
|
392
|
+
type: "many",
|
|
393
|
+
fields: {
|
|
394
|
+
name: { field: "name" },
|
|
395
|
+
subCategories: {
|
|
396
|
+
relation: {
|
|
397
|
+
name: "subCategories",
|
|
398
|
+
type: "many",
|
|
399
|
+
fields: { name: { field: "name" } },
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
// subNames: the same 2-hop chain but with a bare `field`, so plain `in` membership
|
|
403
|
+
// compares the flattened tail's name column directly.
|
|
404
|
+
subNames: {
|
|
405
|
+
relation: {
|
|
406
|
+
name: "subCategories",
|
|
407
|
+
type: "many",
|
|
408
|
+
field: "name",
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
};
|
|
@@ -42,3 +42,13 @@ export type AdversarialSubCategory = Prisma.AdversarialSubCategoryModel
|
|
|
42
42
|
*
|
|
43
43
|
*/
|
|
44
44
|
export type AdversarialLabel = Prisma.AdversarialLabelModel
|
|
45
|
+
/**
|
|
46
|
+
* Model AdversarialParent
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
export type AdversarialParent = Prisma.AdversarialParentModel
|
|
50
|
+
/**
|
|
51
|
+
* Model AdversarialInner
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
export type AdversarialInner = Prisma.AdversarialInnerModel
|
|
@@ -64,3 +64,13 @@ export type AdversarialSubCategory = Prisma.AdversarialSubCategoryModel
|
|
|
64
64
|
*
|
|
65
65
|
*/
|
|
66
66
|
export type AdversarialLabel = Prisma.AdversarialLabelModel
|
|
67
|
+
/**
|
|
68
|
+
* Model AdversarialParent
|
|
69
|
+
*
|
|
70
|
+
*/
|
|
71
|
+
export type AdversarialParent = Prisma.AdversarialParentModel
|
|
72
|
+
/**
|
|
73
|
+
* Model AdversarialInner
|
|
74
|
+
*
|
|
75
|
+
*/
|
|
76
|
+
export type AdversarialInner = Prisma.AdversarialInnerModel
|
|
@@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = {
|
|
|
20
20
|
"clientVersion": "7.9.1",
|
|
21
21
|
"engineVersion": "e922089b7d7502aff4249d5da3420f6fa55fc6ad",
|
|
22
22
|
"activeProvider": "sqlite",
|
|
23
|
-
"inlineSchema": "// Dedicated schema for the adversarial differential harness (src/adversarial.test.ts). Kept\n// separate from schema.prisma/schema.v6.prisma because the shared conformance/ corpus needs\n// hostile shapes the \"realistic\" fixture schema can't hold: NULL tag names and duplicate tag\n// names across (and within) resources. The main Resource/Tag models use globally-unique,\n// many-to-many shared reference tags, which cannot represent either.\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma-adversarial\"\n engineType = \"client\"\n moduleFormat = \"cjs\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nmodel AdversarialResource {\n id String @id\n aBool Boolean\n aString String\n aNumber Int\n aDouble Float?\n aOptionalString String?\n createdBy String\n scope String?\n createdAt DateTime?\n tags AdversarialTag[]\n categories AdversarialCategory[]\n}\n\n// Owned one-to-many child row (unlike the shared, globally-unique Tag model) so hostile seeds\n// can hold NULL and duplicate tag names.\nmodel AdversarialTag {\n id String @id @default(cuid())\n tagId String\n name String?\n resource AdversarialResource @relation(fields: [resourceId], references: [id])\n resourceId String\n}\n\nmodel AdversarialCategory {\n id String @id @default(cuid())\n name String\n resource AdversarialResource @relation(fields: [resourceId], references: [id])\n resourceId String\n subCategories AdversarialSubCategory[]\n}\n\nmodel AdversarialSubCategory {\n id String @id @default(cuid())\n name String\n category AdversarialCategory @relation(fields: [categoryId], references: [id])\n categoryId String\n labels AdversarialLabel[]\n}\n\nmodel AdversarialLabel {\n id String @id @default(cuid())\n name String?\n subCategory AdversarialSubCategory @relation(fields: [subCategoryId], references: [id])\n subCategoryId String\n}\n",
|
|
23
|
+
"inlineSchema": "// Dedicated schema for the adversarial differential harness (src/adversarial.test.ts). Kept\n// separate from schema.prisma/schema.v6.prisma because the shared conformance/ corpus needs\n// hostile shapes the \"realistic\" fixture schema can't hold: NULL tag names and duplicate tag\n// names across (and within) resources. The main Resource/Tag models use globally-unique,\n// many-to-many shared reference tags, which cannot represent either.\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma-adversarial\"\n engineType = \"client\"\n moduleFormat = \"cjs\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nmodel AdversarialResource {\n id String @id\n aBool Boolean\n aString String\n aNumber Int\n aDouble Float?\n aOptionalString String?\n createdBy String\n scope String?\n createdAt DateTime?\n tags AdversarialTag[]\n categories AdversarialCategory[]\n parent AdversarialParent?\n}\n\n// Owned one-to-many child row (unlike the shared, globally-unique Tag model) so hostile seeds\n// can hold NULL and duplicate tag names.\nmodel AdversarialTag {\n id String @id @default(cuid())\n tagId String\n name String?\n resource AdversarialResource @relation(fields: [resourceId], references: [id])\n resourceId String\n}\n\nmodel AdversarialCategory {\n id String @id @default(cuid())\n name String\n resource AdversarialResource @relation(fields: [resourceId], references: [id])\n resourceId String\n subCategories AdversarialSubCategory[]\n}\n\nmodel AdversarialSubCategory {\n id String @id @default(cuid())\n name String\n category AdversarialCategory @relation(fields: [categoryId], references: [id])\n categoryId String\n labels AdversarialLabel[]\n}\n\nmodel AdversarialLabel {\n id String @id @default(cuid())\n name String?\n subCategory AdversarialSubCategory @relation(fields: [subCategoryId], references: [id])\n subCategoryId String\n}\n\n// The corpus's one REAL to-one relation (conformance/seeds.json `parentSeedId`). `parent` and\n// `parent.inner` are separate rows reached through a join, unlike `obj.inner`, which is a flat\n// column wearing a dotted name. A resource owns its own parent chain — no two resources share a\n// parent row — so a filter that returned the parent instead of the child could not agree with the\n// oracle by accident.\nmodel AdversarialParent {\n id String @id @default(cuid())\n aBool Boolean\n aString String\n aNumber Int\n aOptionalString String?\n resource AdversarialResource @relation(fields: [resourceId], references: [id])\n resourceId String @unique\n inner AdversarialInner?\n}\n\nmodel AdversarialInner {\n id String @id @default(cuid())\n aBool Boolean\n aString String\n aNumber Int\n aOptionalString String?\n parent AdversarialParent @relation(fields: [parentId], references: [id])\n parentId String @unique\n}\n",
|
|
24
24
|
"runtimeDataModel": {
|
|
25
25
|
"models": {},
|
|
26
26
|
"enums": {},
|
|
@@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"AdversarialResource\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aBool\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"aString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"aDouble\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"aOptionalString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tags\",\"kind\":\"object\",\"type\":\"AdversarialTag\",\"relationName\":\"AdversarialResourceToAdversarialTag\"},{\"name\":\"categories\",\"kind\":\"object\",\"type\":\"AdversarialCategory\",\"relationName\":\"AdversarialCategoryToAdversarialResource\"}],\"dbName\":null},\"AdversarialTag\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tagId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"AdversarialResource\",\"relationName\":\"AdversarialResourceToAdversarialTag\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"AdversarialCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"AdversarialResource\",\"relationName\":\"AdversarialCategoryToAdversarialResource\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subCategories\",\"kind\":\"object\",\"type\":\"AdversarialSubCategory\",\"relationName\":\"AdversarialCategoryToAdversarialSubCategory\"}],\"dbName\":null},\"AdversarialSubCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"AdversarialCategory\",\"relationName\":\"AdversarialCategoryToAdversarialSubCategory\"},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"labels\",\"kind\":\"object\",\"type\":\"AdversarialLabel\",\"relationName\":\"AdversarialLabelToAdversarialSubCategory\"}],\"dbName\":null},\"AdversarialLabel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subCategory\",\"kind\":\"object\",\"type\":\"AdversarialSubCategory\",\"relationName\":\"AdversarialLabelToAdversarialSubCategory\"},{\"name\":\"subCategoryId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
|
|
35
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"AdversarialResource\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aBool\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"aString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"aDouble\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"aOptionalString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"tags\",\"kind\":\"object\",\"type\":\"AdversarialTag\",\"relationName\":\"AdversarialResourceToAdversarialTag\"},{\"name\":\"categories\",\"kind\":\"object\",\"type\":\"AdversarialCategory\",\"relationName\":\"AdversarialCategoryToAdversarialResource\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"AdversarialParent\",\"relationName\":\"AdversarialParentToAdversarialResource\"}],\"dbName\":null},\"AdversarialTag\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tagId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"AdversarialResource\",\"relationName\":\"AdversarialResourceToAdversarialTag\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"AdversarialCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"AdversarialResource\",\"relationName\":\"AdversarialCategoryToAdversarialResource\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subCategories\",\"kind\":\"object\",\"type\":\"AdversarialSubCategory\",\"relationName\":\"AdversarialCategoryToAdversarialSubCategory\"}],\"dbName\":null},\"AdversarialSubCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"AdversarialCategory\",\"relationName\":\"AdversarialCategoryToAdversarialSubCategory\"},{\"name\":\"categoryId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"labels\",\"kind\":\"object\",\"type\":\"AdversarialLabel\",\"relationName\":\"AdversarialLabelToAdversarialSubCategory\"}],\"dbName\":null},\"AdversarialLabel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"subCategory\",\"kind\":\"object\",\"type\":\"AdversarialSubCategory\",\"relationName\":\"AdversarialLabelToAdversarialSubCategory\"},{\"name\":\"subCategoryId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"AdversarialParent\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aBool\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"aString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"aOptionalString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"AdversarialResource\",\"relationName\":\"AdversarialParentToAdversarialResource\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"inner\",\"kind\":\"object\",\"type\":\"AdversarialInner\",\"relationName\":\"AdversarialInnerToAdversarialParent\"}],\"dbName\":null},\"AdversarialInner\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aBool\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"aString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"aNumber\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"aOptionalString\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"AdversarialParent\",\"relationName\":\"AdversarialInnerToAdversarialParent\"},{\"name\":\"parentId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
|
|
36
36
|
config.parameterizationSchema = {
|
|
37
|
-
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"resource\",\"tags\",\"category\",\"subCategory\",\"labels\",\"_count\",\"subCategories\",\"categories\",\"AdversarialResource.findUnique\",\"AdversarialResource.findUniqueOrThrow\",\"AdversarialResource.findFirst\",\"AdversarialResource.findFirstOrThrow\",\"AdversarialResource.findMany\",\"data\",\"AdversarialResource.createOne\",\"AdversarialResource.createMany\",\"AdversarialResource.createManyAndReturn\",\"AdversarialResource.updateOne\",\"AdversarialResource.updateMany\",\"AdversarialResource.updateManyAndReturn\",\"create\",\"update\",\"AdversarialResource.upsertOne\",\"AdversarialResource.deleteOne\",\"AdversarialResource.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"AdversarialResource.groupBy\",\"AdversarialResource.aggregate\",\"AdversarialTag.findUnique\",\"AdversarialTag.findUniqueOrThrow\",\"AdversarialTag.findFirst\",\"AdversarialTag.findFirstOrThrow\",\"AdversarialTag.findMany\",\"AdversarialTag.createOne\",\"AdversarialTag.createMany\",\"AdversarialTag.createManyAndReturn\",\"AdversarialTag.updateOne\",\"AdversarialTag.updateMany\",\"AdversarialTag.updateManyAndReturn\",\"AdversarialTag.upsertOne\",\"AdversarialTag.deleteOne\",\"AdversarialTag.deleteMany\",\"AdversarialTag.groupBy\",\"AdversarialTag.aggregate\",\"AdversarialCategory.findUnique\",\"AdversarialCategory.findUniqueOrThrow\",\"AdversarialCategory.findFirst\",\"AdversarialCategory.findFirstOrThrow\",\"AdversarialCategory.findMany\",\"AdversarialCategory.createOne\",\"AdversarialCategory.createMany\",\"AdversarialCategory.createManyAndReturn\",\"AdversarialCategory.updateOne\",\"AdversarialCategory.updateMany\",\"AdversarialCategory.updateManyAndReturn\",\"AdversarialCategory.upsertOne\",\"AdversarialCategory.deleteOne\",\"AdversarialCategory.deleteMany\",\"AdversarialCategory.groupBy\",\"AdversarialCategory.aggregate\",\"AdversarialSubCategory.findUnique\",\"AdversarialSubCategory.findUniqueOrThrow\",\"AdversarialSubCategory.findFirst\",\"AdversarialSubCategory.findFirstOrThrow\",\"AdversarialSubCategory.findMany\",\"AdversarialSubCategory.createOne\",\"AdversarialSubCategory.createMany\",\"AdversarialSubCategory.createManyAndReturn\",\"AdversarialSubCategory.updateOne\",\"AdversarialSubCategory.updateMany\",\"AdversarialSubCategory.updateManyAndReturn\",\"AdversarialSubCategory.upsertOne\",\"AdversarialSubCategory.deleteOne\",\"AdversarialSubCategory.deleteMany\",\"AdversarialSubCategory.groupBy\",\"AdversarialSubCategory.aggregate\",\"AdversarialLabel.findUnique\",\"AdversarialLabel.findUniqueOrThrow\",\"AdversarialLabel.findFirst\",\"AdversarialLabel.findFirstOrThrow\",\"AdversarialLabel.findMany\",\"AdversarialLabel.createOne\",\"AdversarialLabel.createMany\",\"AdversarialLabel.createManyAndReturn\",\"AdversarialLabel.updateOne\",\"AdversarialLabel.updateMany\",\"AdversarialLabel.updateManyAndReturn\",\"AdversarialLabel.upsertOne\",\"AdversarialLabel.deleteOne\",\"AdversarialLabel.deleteMany\",\"AdversarialLabel.groupBy\",\"AdversarialLabel.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"
|
|
38
|
-
graph: "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ADoAIAMAAAAFACAXAAAzACAYAAA4ACABAAAABQAgAQAAAAMAIAQIAADfAQAgHwAA4QEAICAAAOABACBnAACxAQAgB2MAAJEBADBkAABBABBlAACRAQAwZgEAhwEAIWcBAIgBACF1AQCHAQAhdgEAhwEAIQMAAAADACABAABAADAcAABBACADAAAAAwAgAQAABAAwAgAABQAgAQAAAAkAIAEAAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACAFAwAA3QEAIAkAAN4BACBmAQAAAAFnAQAAAAF1AQAAAAEBEAAASQAgA2YBAAAAAWcBAAAAAXUBAAAAAQEQAABLADABEAAASwAwBQMAAM8BACAJAADQAQAgZgEAtQEAIWcBALUBACF1AQC1AQAhAgAAAAkAIBAAAE4AIANmAQC1AQAhZwEAtQEAIXUBALUBACECAAAABwAgEAAAUAAgAgAAAAcAIBAAAFAAIAMAAAAJACAXAABJACAYAABOACABAAAACQAgAQAAAAcAIAMIAADMAQAgHwAAzgEAICAAAM0BACAGYwAAkAEAMGQAAFcAEGUAAJABADBmAQCHAQAhZwEAhwEAIXUBAIcBACEDAAAABwAgAQAAVgAwHAAAVwAgAwAAAAcAIAEAAAgAMAIAAAkAIAEAAAANACABAAAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgBQUAAMoBACAHAADLAQAgZgEAAAABZwEAAAABdAEAAAABARAAAF8AIANmAQAAAAFnAQAAAAF0AQAAAAEBEAAAYQAwARAAAGEAMAUFAAC8AQAgBwAAvQEAIGYBALUBACFnAQC1AQAhdAEAtQEAIQIAAAANACAQAABkACADZgEAtQEAIWcBALUBACF0AQC1AQAhAgAAAAsAIBAAAGYAIAIAAAALACAQAABmACADAAAADQAgFwAAXwAgGAAAZAAgAQAAAA0AIAEAAAALACADCAAAuQEAIB8AALsBACAgAAC6AQAgBmMAAI8BADBkAABtABBlAACPAQAwZgEAhwEAIWcBAIcBACF0AQCHAQAhAwAAAAsAIAEAAGwAMBwAAG0AIAMAAAALACABAAAMADAC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-QAClAQAhggEAABgAIIMBAAAYACADfwAACwAggAEAAAsAIIEBAAALACAIAwAArgEAIGMAALABADBkAAADABBlAACwAQAwZgEAoAEAIWcBAKQBACF1AQCgAQAhdgEAoAEAIQAAAAABhwEBAAAAAQGHAQEAAAABBRcAAKMCACAYAACmAgAghAEAAKQCACCFAQAApQIAIIoBAAANACADFwAAowIAIIQBAACkAgAgigEAAA0AIAAAAAUXAACdAgAgGAAAoQIAIIQBAACeAgAghQEAAKACACCKAQAACQAgCxcAAL4BADAYAADDAQAwhAEAAL8BADCFAQAAwAEAMIYBAADBAQAghwEAAMIBADCIAQAAwgEAMIkBAADCAQAwigEAAMIBADCLAQAAxAEAMIwBAADFAQAwAmYBAAAAAWcBAAAAAQIAAAARACAXAADJAQAgAwAAABEAIBcAAMkBACAYAADIAQAgARAAAJ8CADAHBgAAqQEAIGMAAKgBADBkAAAPABBlAACoAQAwZgEAAAABZwEApAEAIWgBAKABACECAAAAEQAgEAAAyAEAIAIAAADGAQAgEAAAxwEAIAZjAADFAQAwZAAAxgEAEGUAAMUBADBmAQCgAQAhZwEApAEAIWgBAKABACEGYwAAxQEAMGQAAMYBABBlAADFAQAwZgEAoAEAIWcBAKQBACFoAQCgAQAhAmYBALUBACFnAQC2AQAhAmYBALUBACFnAQC2AQAhAmYBAAAAAWcBAAAAAQMXAACdAgAghAEAAJ4CACCKAQAACQAgBBcAAL4BADCEAQAAvwEAMIYBAADBAQAgigEAAMIBADAAAAAFFwAAlwIAIBgAAJsCACCEAQAAmAIAIIUBAACaAgAgigEAAAEAIAsXAADRAQAwGAAA1gEAMIQBAADSAQAwhQEAANMBADCGAQAA1AEAIIcBAADVAQAwiAEAANUBADCJAQAA1QEAMIoBAADVAQAwiwEAANcBADCMAQAA2AEAMAMHAADLAQAgZgEAAAABZwEAAAABAgAAAA0AIBcAANwBACADAAAADQAgFwAA3AEAIBgAANsBACABEAAAmQIAMAgFAACrAQAgBwAArAEAIGMAAKoBADBkAAALABBlAACqAQAwZgEAAAABZwEAoAEAIXQBAKABACECAAAADQAgEAAA2wEAIAIAAADZAQAgEAAA2gEAIAZjAADYAQAwZAAA2QEAEGUAANgBADBmAQCgAQAhZwEAoAEAIXQBAKABACEGYwAA2AEAMGQAANkBABBlAADYAQAwZgEAoAEAIWcBAKABACF0AQCgAQAhAmYBALUBACFnAQC1AQAhAwcAAL0BACBmAQC1AQAhZwEAtQEAIQMHAADLAQAgZgEAAAABZwEAAAABAxcAAJcCACCEAQAAmAIAIIoBAAABACAEFwAA0QEAMIQBAADSAQAwhgEAANQBACCKAQAA1QEAMAAAAAUXAACSAgAgGAAAlQIAIIQBAACTAgAghQEAAJQCACCKAQAAAQAgAxcAAJICACCEAQAAkwIAIIoBAAABACAAAAAAAAGHASAAAAABBYcBAgAAAAGNAQIAAAABjgECAAAAAY8BAgAAAAGQAQIAAAABBYcBCAAAAAGNAQgAAAABjgEIAAAAAY8BCAAAAAGQAQgAAAABAYcBQAAAAAELFwAA-wEAMBgAAIACADCEAQAA_AEAMIUBAAD9AQAwhgEAAP4BACCHAQAA_wEAMIgBAAD_AQAwiQEAAP8BADCKAQAA_wEAMIsBAACBAgAwjAEAAIICADALFwAA7wEAMBgAAPQBADCEAQAA8AEAMIUBAADxAQAwhgEAAPIBACCHAQAA8wEAMIgBAADzAQAwiQEAAPMBADCKAQAA8wEAMIsBAAD1AQAwjAEAAPYBADADCQAA3gEAIGYBAAAAAWcBAAAAAQIAAAAJACAXAAD6AQAgAwAAAAkAIBcAAPoBACAYAAD5AQAgARAAAJECADAIAwAArgEAIAkAAK8BACBjAACtAQAwZAAABwAQZQAArQEAMGYBAAAAAWcBAKABACF1AQCgAQAhAgAAAAkAIBAAAPkBACACAAAA9wEAIBAAAPgBACAGYwAA9gEAMGQAAPcBABBlAAD2AQAwZgEAoAEAIWcBAKABACF1AQCgAQAhBmMAAPYBADBkAAD3AQAQZQAA9gEAMGYBAKABACFnAQCgAQAhdQEAoAEAIQJmAQC1AQAhZwEAtQEAIQMJAADQAQAgZgEAtQEAIWcBALUBACEDCQAA3gEAIGYBAAAAAWcBAAAAAQNmAQAAAAFnAQAAAAF2AQAAAAECAAAABQAgFwAAhgIAIAMAAAAFACAXAACGAgAgGAAAhQIAIAEQAACQAgAwCAMAAK4BACBjAACwAQAwZAAAAwAQZQAAsAEAMGYBAAAAAWcBAKQBACF1AQCgAQAhdgEAoAEAIQIAAAAFACAQAACFAgAgAgAAAIMCACAQAACEAgAgB2MAAIICADBkAACDAgAQZQAAggIAMGYBAKABACFnAQCkAQAhdQEAoAEAIXYBAKABACEHYwAAggIAMGQAAIMCABBlAACCAgAwZgEAoAEAIWcBAKQBACF1AQCgAQAhdgEAoAEAIQNmAQC1AQAhZwEAtgEAIXYBALUBACEDZgEAtQEAIWcBALYBACF2AQC1AQAhA2YBAAAAAWcBAAAAAXYBAAAAAQQXAAD7AQAwhAEAAPwBADCGAQAA_gEAIIoBAAD_AQAwBBcAAO8BADCEAQAA8AEAMIYBAADyAQAgigEAAPMBADAAAAIFAACMAgAgBwAAjQIAIAIDAACOAgAgCQAAjwIAIAAGBAAAiQIAIAoAAIoCACB6AACxAQAgewAAsQEAIH0AALEBACB-AACxAQAgAANmAQAAAAFnAQAAAAF2AQAAAAECZgEAAAABZwEAAAABCgoAAIgCACBmAQAAAAF3IAAAAAF4AQAAAAF5AgAAAAF6CAAAAAF7AQAAAAF8AQAAAAF9AQAAAAF-QAAAAAECAAAAAQAgFwAAkgIAIAMAAAAYACAXAACSAgAgGAAAlgIAIAwAAAAYACAKAADuAQAgEAAAlgIAIGYBALUBACF3IADpAQAheAEAtQEAIXkCAOoBACF6CADrAQAhewEAtgEAIXwBALUBACF9AQC2AQAhfkAA7AEAIQoKAADuAQAgZgEAtQEAIXcgAOkBACF4AQC1AQAheQIA6gEAIXoIAOsBACF7AQC2AQAhfAEAtQEAIX0BALYBACF-QADsAQAhCgQAAIcCACBmAQAAAAF3IAAAAAF4AQAAAAF5AgAAAAF6CAAAAAF7AQAAAAF8AQAAAAF9AQAAAAF-QAAAAAECAAAAAQAgFwAAlwIAIAJmAQAAAAFnAQAAAAEDAAAAGAAgFwAAlwIAIBgAAJwCACAMAAAAGAAgBAAA7QEAIBAAAJwCACBmAQC1AQAhdyAA6QEAIXgBALUBACF5AgDqAQAheggA6wEAIXsBALYBACF8AQC1AQAhfQEAtgEAIX5AAOwBACEKBAAA7QEAIGYBALUBACF3IADpAQAheAEAtQEAIXkCAOoBACF6CADrAQAhewEAtgEAIXwBALUBACF9AQC2AQAhfkAA7AEAIQQDAADdAQAgZgEAAAABZwEAAAABdQEAAAABAgAAAAkAIBcAAJ0CACACZgEAAAABZwEAAAABAwAAAAcAIBcAAJ0CACAYAACiAgAgBgAAAAcAIAMAAM8BACAQAACiAgAgZgEAtQEAIWcBALUBACF1AQC1AQAhBAMAAM8BACBmAQC1AQAhZwEAtQEAIXUBALUBACEEBQAAygEAIGYBAAAAAWcBAAAAAXQBAAAAAQIAAAANACAXAACjAgAgAwAAAAsAIBcAAKMCACAYAACnAgAgBgAAAAsAIAUAALwBACAQAACnAgAgZgEAtQEAIWcBALUBACF0AQC1AQAhBAUAALwBACBmAQC1AQAhZwEAtQEAIXQBALUBACEDBAYCCAAICgoDAQMAAQMDAAEIAAcJDgQDBQADBxIFCAAGAQYABAEHEwABCRQAAgQVAAoWAAAAAAUIAA0dAA4eAA8fABAgABEAAAAAAAUIAA0dAA4eAA8fABAgABEBAwABAQMAAQMIABYfABcgABgAAAADCAAWHwAXIAAYAQMAAQEDAAEDCAAdHwAeIAAfAAAAAwgAHR8AHiAAHwEFAAMBBQADAwgAJB8AJSAAJgAAAAMIACQfACUgACYBBgAEAQYABAMIACsfACwgAC0AAAADCAArHwAsIAAtCwIBDBcBDRoBDhsBDxwBER4BEiAJEyEKFCMBFSUJFiYLGScBGigBGykJISwMIi0SIy4CJC8CJTACJjECJzICKDQCKTYJKjcTKzkCLDsJLTwULj0CLz4CMD8JMUIVMkMZM0QDNEUDNUYDNkcDN0gDOEoDOUwJOk0aO08DPFEJPVIbPlMDP1QDQFUJQVgcQlkgQ1oERFsERVwERl0ER14ESGAESWIJSmMhS2UETGcJTWgiTmkET2oEUGsJUW4jUm8nU3AFVHEFVXIFVnMFV3QFWHYFWXgJWnkoW3sFXH0JXX4pXn8FX4ABBWCBAQlhhAEqYoUBLg"
|
|
37
|
+
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"resource\",\"tags\",\"category\",\"subCategory\",\"labels\",\"_count\",\"subCategories\",\"categories\",\"parent\",\"inner\",\"AdversarialResource.findUnique\",\"AdversarialResource.findUniqueOrThrow\",\"AdversarialResource.findFirst\",\"AdversarialResource.findFirstOrThrow\",\"AdversarialResource.findMany\",\"data\",\"AdversarialResource.createOne\",\"AdversarialResource.createMany\",\"AdversarialResource.createManyAndReturn\",\"AdversarialResource.updateOne\",\"AdversarialResource.updateMany\",\"AdversarialResource.updateManyAndReturn\",\"create\",\"update\",\"AdversarialResource.upsertOne\",\"AdversarialResource.deleteOne\",\"AdversarialResource.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"AdversarialResource.groupBy\",\"AdversarialResource.aggregate\",\"AdversarialTag.findUnique\",\"AdversarialTag.findUniqueOrThrow\",\"AdversarialTag.findFirst\",\"AdversarialTag.findFirstOrThrow\",\"AdversarialTag.findMany\",\"AdversarialTag.createOne\",\"AdversarialTag.createMany\",\"AdversarialTag.createManyAndReturn\",\"AdversarialTag.updateOne\",\"AdversarialTag.updateMany\",\"AdversarialTag.updateManyAndReturn\",\"AdversarialTag.upsertOne\",\"AdversarialTag.deleteOne\",\"AdversarialTag.deleteMany\",\"AdversarialTag.groupBy\",\"AdversarialTag.aggregate\",\"AdversarialCategory.findUnique\",\"AdversarialCategory.findUniqueOrThrow\",\"AdversarialCategory.findFirst\",\"AdversarialCategory.findFirstOrThrow\",\"AdversarialCategory.findMany\",\"AdversarialCategory.createOne\",\"AdversarialCategory.createMany\",\"AdversarialCategory.createManyAndReturn\",\"AdversarialCategory.updateOne\",\"AdversarialCategory.updateMany\",\"AdversarialCategory.updateManyAndReturn\",\"AdversarialCategory.upsertOne\",\"AdversarialCategory.deleteOne\",\"AdversarialCategory.deleteMany\",\"AdversarialCategory.groupBy\",\"AdversarialCategory.aggregate\",\"AdversarialSubCategory.findUnique\",\"AdversarialSubCategory.findUniqueOrThrow\",\"AdversarialSubCategory.findFirst\",\"AdversarialSubCategory.findFirstOrThrow\",\"AdversarialSubCategory.findMany\",\"AdversarialSubCategory.createOne\",\"AdversarialSubCategory.createMany\",\"AdversarialSubCategory.createManyAndReturn\",\"AdversarialSubCategory.updateOne\",\"AdversarialSubCategory.updateMany\",\"AdversarialSubCategory.updateManyAndReturn\",\"AdversarialSubCategory.upsertOne\",\"AdversarialSubCategory.deleteOne\",\"AdversarialSubCategory.deleteMany\",\"AdversarialSubCategory.groupBy\",\"AdversarialSubCategory.aggregate\",\"AdversarialLabel.findUnique\",\"AdversarialLabel.findUniqueOrThrow\",\"AdversarialLabel.findFirst\",\"AdversarialLabel.findFirstOrThrow\",\"AdversarialLabel.findMany\",\"AdversarialLabel.createOne\",\"AdversarialLabel.createMany\",\"AdversarialLabel.createManyAndReturn\",\"AdversarialLabel.updateOne\",\"AdversarialLabel.updateMany\",\"AdversarialLabel.updateManyAndReturn\",\"AdversarialLabel.upsertOne\",\"AdversarialLabel.deleteOne\",\"AdversarialLabel.deleteMany\",\"AdversarialLabel.groupBy\",\"AdversarialLabel.aggregate\",\"AdversarialParent.findUnique\",\"AdversarialParent.findUniqueOrThrow\",\"AdversarialParent.findFirst\",\"AdversarialParent.findFirstOrThrow\",\"AdversarialParent.findMany\",\"AdversarialParent.createOne\",\"AdversarialParent.createMany\",\"AdversarialParent.createManyAndReturn\",\"AdversarialParent.updateOne\",\"AdversarialParent.updateMany\",\"AdversarialParent.updateManyAndReturn\",\"AdversarialParent.upsertOne\",\"AdversarialParent.deleteOne\",\"AdversarialParent.deleteMany\",\"AdversarialParent.groupBy\",\"AdversarialParent.aggregate\",\"AdversarialInner.findUnique\",\"AdversarialInner.findUniqueOrThrow\",\"AdversarialInner.findFirst\",\"AdversarialInner.findFirstOrThrow\",\"AdversarialInner.findMany\",\"AdversarialInner.createOne\",\"AdversarialInner.createMany\",\"AdversarialInner.createManyAndReturn\",\"AdversarialInner.updateOne\",\"AdversarialInner.updateMany\",\"AdversarialInner.updateManyAndReturn\",\"AdversarialInner.upsertOne\",\"AdversarialInner.deleteOne\",\"AdversarialInner.deleteMany\",\"AdversarialInner.groupBy\",\"AdversarialInner.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"aBool\",\"aString\",\"aNumber\",\"aOptionalString\",\"parentId\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"not\",\"resourceId\",\"name\",\"subCategoryId\",\"categoryId\",\"tagId\",\"aDouble\",\"createdBy\",\"scope\",\"createdAt\",\"every\",\"some\",\"none\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"disconnect\",\"delete\",\"connect\",\"createMany\",\"set\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
38
|
+
graph: "igNCcA8EAADhAQAgCgAA4gEAIAsAAOMBACCFAQAA3gEAMIYBAAAcABCHAQAA3gEAMIgBAQAAAAGJASAAygEAIYoBAQDLAQAhiwECAMwBACGMAQEAzQEAIZ4BCADfAQAhnwEBAMsBACGgAQEAzQEAIaEBQADgAQAhAQAAAAEAIAgDAADRAQAghQEAAOsBADCGAQAAAwAQhwEAAOsBADCIAQEAywEAIZkBAQDLAQAhmgEBAM0BACGdAQEAywEAIQIDAACHAgAgmgEAAOwBACAIAwAA0QEAIIUBAADrAQAwhgEAAAMAEIcBAADrAQAwiAEBAAAAAZkBAQDLAQAhmgEBAM0BACGdAQEAywEAIQMAAAADACABAAAEADACAAAFACAIAwAA0QEAIAkAAOoBACCFAQAA6QEAMIYBAAAHABCHAQAA6QEAMIgBAQDLAQAhmQEBAMsBACGaAQEAywEAIQIDAACHAgAgCQAA6AIAIAgDAADRAQAgCQAA6gEAIIUBAADpAQAwhgEAAAcAEIcBAADpAQAwiAEBAAAAAZkBAQDLAQAhmgEBAMsBACEDAAAABwAgAQAACAAwAgAACQAgCAUAAOcBACAHAADoAQAghQEAAOYBADCGAQAACwAQhwEAAOYBADCIAQEAywEAIZoBAQDLAQAhnAEBAMsBACECBQAA5gIAIAcAAOcCACAIBQAA5wEAIAcAAOgBACCFAQAA5gEAMIYBAAALABCHAQAA5gEAMIgBAQAAAAGaAQEAywEAIZwBAQDLAQAhAwAAAAsAIAEAAAwAMAIAAA0AIAcGAADlAQAghQEAAOQBADCGAQAADwAQhwEAAOQBADCIAQEAywEAIZoBAQDNAQAhmwEBAMsBACECBgAA5QIAIJoBAADsAQAgBwYAAOUBACCFAQAA5AEAMIYBAAAPABCHAQAA5AEAMIgBAQAAAAGaAQEAzQEAIZsBAQDLAQAhAwAAAA8AIAEAABAAMAIAABEAIAEAAAAPACABAAAACwAgCwMAANEBACAMAADSAQAghQEAANABADCGAQAAFQAQhwEAANABADCIAQEAywEAIYkBIADKAQAhigEBAMsBACGLAQIAzAEAIYwBAQDNAQAhmQEBAMsBACEBAAAAFQAgCgsAAM4BACCFAQAAyQEAMIYBAAAXABCHAQAAyQEAMIgBAQDLAQAhiQEgAMoBACGKAQEAywEAIYsBAgDMAQAhjAEBAM0BACGNAQEAywEAIQEAAAAXACABAAAAAwAgAQAAAAcAIAEAAAABACAPBAAA4QEAIAoAAOIBACALAADjAQAghQEAAN4BADCGAQAAHAAQhwEAAN4BADCIAQEAywEAIYkBIADKAQAhigEBAMsBACGLAQIAzAEAIYwBAQDNAQAhngEIAN8BACGfAQEAywEAIaABAQDNAQAhoQFAAOABACEHBAAA4wIAIAoAAOQCACALAAD4AQAgjAEAAOwBACCeAQAA7AEAIKABAADsAQAgoQEAAOwBACADAAAAHAAgAQAAHQAwAgAAAQAgAwAAABwAIAEAAB0AMAIAAAEAIAMAAAAcACABAAAdADACAAABACAMBAAA4AIAIAoAAOECACALAADiAgAgiAEBAAAAAYkBIAAAAAGKAQEAAAABiwECAAAAAYwBAQAAAAGeAQgAAAABnwEBAAAAAaABAQAAAAGhAUAAAAABARIAACEAIAmIAQEAAAABiQEgAAAAAYoBAQAAAAGLAQIAAAABjAEBAAAAAZ4BCAAAAAGfAQEAAAABoAEBAAAAAaEBQAAAAAEBEgAAIwAwARIAACMAMAwEAADAAgAgCgAAwQIAIAsAAMICACCIAQEA8gEAIYkBIADzAQAhigEBAPIBACGLAQIA9AEAIYwBAQD1AQAhngEIAL4CACGfAQEA8gEAIaABAQD1AQAhoQFAAL8CACECAAAAAQAgEgAAJgAgCYgBAQDyAQAhiQEgAPMBACGKAQEA8gEAIYsBAgD0AQAhjAEBAPUBACGeAQgAvgIAIZ8BAQDyAQAhoAEBAPUBACGhAUAAvwIAIQIAAAAcACASAAAoACACAAAAHAAgEgAAKAAgAwAAAAEAIBkAACEAIBoAACYAIAEAAAABACABAAAAHAAgCQgAALkCACAfAAC6AgAgIAAAvQIAICEAALwCACAiAAC7AgAgjAEAAOwBACCeAQAA7AEAIKABAADsAQAgoQEAAOwBACAMhQEAANcBADCGAQAALwAQhwEAANcBADCIAQEAuwEAIYkBIAC8AQAhigEBALsBACGLAQIAvQEAIYwBAQC-AQAhngEIANgBACGfAQEAuwEAIaABAQC-AQAhoQFAANkBACEDAAAAHAAgAQAALgAwHgAALwAgAwAAABwAIAEAAB0AMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgBQMAALgCACCIAQEAAAABmQEBAAAAAZoBAQAAAAGdAQEAAAABARIAADcAIASIAQEAAAABmQEBAAAAAZoBAQAAAAGdAQEAAAABARIAADkAMAESAAA5ADAFAwAAtwIAIIgBAQDyAQAhmQEBAPIBACGaAQEA9QEAIZ0BAQDyAQAhAgAAAAUAIBIAADwAIASIAQEA8gEAIZkBAQDyAQAhmgEBAPUBACGdAQEA8gEAIQIAAAADACASAAA-ACACAAAAAwAgEgAAPgAgAwAAAAUAIBkAADcAIBoAADwAIAEAAAAFACABAAAAAwAgBAgAALQCACAhAAC2AgAgIgAAtQIAIJoBAADsAQAgB4UBAADWAQAwhgEAAEUAEIcBAADWAQAwiAEBALsBACGZAQEAuwEAIZoBAQC-AQAhnQEBALsBACEDAAAAAwAgAQAARAAwHgAARQAgAwAAAAMAIAEAAAQAMAIAAAUAIAEAAAAJACABAAAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgBQMAALICACAJAACzAgAgiAEBAAAAAZkBAQAAAAGaAQEAAAABARIAAE0AIAOIAQEAAAABmQEBAAAAAZoBAQAAAAEBEgAATwAwARIAAE8AMAUDAACkAgAgCQAApQIAIIgBAQDyAQAhmQEBAPIBACGaAQEA8gEAIQIAAAAJACASAABSACADiAEBAPIBACGZAQEA8gEAIZoBAQDyAQAhAgAAAAcAIBIAAFQAIAIAAAAHACASAABUACADAAAACQAgGQAATQAgGgAAUgAgAQAAAAkAIAEAAAAHACADCAAAoQIAICEAAKMCACAiAACiAgAgBoUBAADVAQAwhgEAAFsAEIcBAADVAQAwiAEBALsBACGZAQEAuwEAIZoBAQC7AQAhAwAAAAcAIAEAAFoAMB4AAFsAIAMAAAAHACABAAAIADACAAAJACABAAAADQAgAQAAAA0AIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAUFAACfAgAgBwAAoAIAIIgBAQAAAAGaAQEAAAABnAEBAAAAAQESAABjACADiAEBAAAAAZoBAQAAAAGcAQEAAAABARIAAGUAMAESAABlADAFBQAAkQIAIAcAAJICACCIAQEA8gEAIZoBAQDyAQAhnAEBAPIBACECAAAADQAgEgAAaAAgA4gBAQDyAQAhmgEBAPIBACGcAQEA8gEAIQIAAAALACASAABqACACAAAACwAgEgAAagAgAwAAAA0AIBkAAGMAIBoAAGgAIAEAAAANACABAAAACwAgAwgAAI4CACAhAACQAgAgIgAAjwIAIAaFAQAA1AEAMIYBAABxABCHAQAA1AEAMIgBAQC7AQAhmgEBALsBACGcAQEAuwEAIQMAAAALACABAABwADAeAABxACADAAAACwAgAQAADAAwAgAADQAgAQAAABEAIAEAAAARACADAAAADwAgAQAAEAAwAgAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACAEBgAAjQIAIIgBAQAAAAGaAQEAAAABmwEBAAAAAQESAAB5ACADiAEBAAAAAZoBAQAAAAGbAQEAAAABARIAAHsAMAESAAB7ADAEBgAAjAIAIIgBAQDyAQAhmgEBAPUBACGbAQEA8gEAIQIAAAARACASAAB-ACADiAEBAPIBACGaAQEA9QEAIZsBAQDyAQAhAgAAAA8AIBIAAIABACACAAAADwAgEgAAgAEAIAMAAAARACAZAAB5ACAaAAB-ACABAAAAEQAgAQAAAA8AIAQIAACJAgAgIQAAiwIAICIAAIoCACCaAQAA7AEAIAaFAQAA0wEAMIYBAACHAQAQhwEAANMBADCIAQEAuwEAIZoBAQC-AQAhmwEBALsBACEDAAAADwAgAQAAhgEAMB4AAIcBACADAAAADwAgAQAAEAAwAgAAEQAgCwMAANEBACAMAADSAQAghQEAANABADCGAQAAFQAQhwEAANABADCIAQEAAAABiQEgAMoBACGKAQEAywEAIYsBAgDMAQAhjAEBAM0BACGZAQEAAAABAQAAAIoBACABAAAAigEAIAMDAACHAgAgDAAAiAIAIIwBAADsAQAgAwAAABUAIAEAAI0BADACAACKAQAgAwAAABUAIAEAAI0BADACAACKAQAgAwAAABUAIAEAAI0BADACAACKAQAgCAMAAIUCACAMAACGAgAgiAEBAAAAAYkBIAAAAAGKAQEAAAABiwECAAAAAYwBAQAAAAGZAQEAAAABARIAAJEBACAGiAEBAAAAAYkBIAAAAAGKAQEAAAABiwECAAAAAYwBAQAAAAGZAQEAAAABARIAAJMBADABEgAAkwEAMAgDAAD-AQAgDAAA_wEAIIgBAQDyAQAhiQEgAPMBACGKAQEA8gEAIYsBAgD0AQAhjAEBAPUBACGZAQEA8gEAIQIAAACKAQAgEgAAlgEAIAaIAQEA8gEAIYkBIADzAQAhigEBAPIBACGLAQIA9AEAIYwBAQD1AQAhmQEBAPIBACECAAAAFQAgEgAAmAEAIAIAAAAVACASAACYAQAgAwAAAIoBACAZAACRAQAgGgAAlgEAIAEAAACKAQAgAQAAABUAIAYIAAD5AQAgHwAA-gEAICAAAP0BACAhAAD8AQAgIgAA-wEAIIwBAADsAQAgCYUBAADPAQAwhgEAAJ8BABCHAQAAzwEAMIgBAQC7AQAhiQEgALwBACGKAQEAuwEAIYsBAgC9AQAhjAEBAL4BACGZAQEAuwEAIQMAAAAVACABAACeAQAwHgAAnwEAIAMAAAAVACABAACNAQAwAgAAigEAIAoLAADOAQAghQEAAMkBADCGAQAAFwAQhwEAAMkBADCIAQEAAAABiQEgAMoBACGKAQEAywEAIYsBAgDMAQAhjAEBAM0BACGNAQEAAAABAQAAAKIBACABAAAAogEAIAILAAD4AQAgjAEAAOwBACADAAAAFwAgAQAApQEAMAIAAKIBACADAAAAFwAgAQAApQEAMAIAAKIBACADAAAAFwAgAQAApQEAMAIAAKIBACAHCwAA9wEAIIgBAQAAAAGJASAAAAABigEBAAAAAYsBAgAAAAGMAQEAAAABjQEBAAAAAQESAACpAQAgBogBAQAAAAGJASAAAAABigEBAAAAAYsBAgAAAAGMAQEAAAABjQEBAAAAAQESAACrAQAwARIAAKsBADAHCwAA9gEAIIgBAQDyAQAhiQEgAPMBACGKAQEA8gEAIYsBAgD0AQAhjAEBAPUBACGNAQEA8gEAIQIAAACiAQAgEgAArgEAIAaIAQEA8gEAIYkBIADzAQAhigEBAPIBACGLAQIA9AEAIYwBAQD1AQAhjQEBAPIBACECAAAAFwAgEgAAsAEAIAIAAAAXACASAACwAQAgAwAAAKIBACAZAACpAQAgGgAArgEAIAEAAACiAQAgAQAAABcAIAYIAADtAQAgHwAA7gEAICAAAPEBACAhAADwAQAgIgAA7wEAIIwBAADsAQAgCYUBAAC6AQAwhgEAALcBABCHAQAAugEAMIgBAQC7AQAhiQEgALwBACGKAQEAuwEAIYsBAgC9AQAhjAEBAL4BACGNAQEAuwEAIQMAAAAXACABAAC2AQAwHgAAtwEAIAMAAAAXACABAAClAQAwAgAAogEAIAmFAQAAugEAMIYBAAC3AQAQhwEAALoBADCIAQEAuwEAIYkBIAC8AQAhigEBALsBACGLAQIAvQEAIYwBAQC-AQAhjQEBALsBACEOCAAAwwEAICEAAMgBACAiAADIAQAgjgEBAAAAAY8BAQAAAASQAQEAAAAEkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAQEAAAABlwEBAAAAAZgBAQDHAQAhBQgAAMMBACAhAADGAQAgIgAAxgEAII4BIAAAAAGYASAAxQEAIQ0IAADDAQAgHwAAxAEAICAAAMMBACAhAADDAQAgIgAAwwEAII4BAgAAAAGPAQIAAAAEkAECAAAABJEBAgAAAAGSAQIAAAABkwECAAAAAZQBAgAAAAGYAQIAwgEAIQ4IAADAAQAgIQAAwQEAICIAAMEBACCOAQEAAAABjwEBAAAABZABAQAAAAWRAQEAAAABkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAAAAAZYBAQAAAAGXAQEAAAABmAEBAL8BACEOCAAAwAEAICEAAMEBACAiAADBAQAgjgEBAAAAAY8BAQAAAAWQAQEAAAAFkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQAAAAGWAQEAAAABlwEBAAAAAZgBAQC_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_AIAIBoAAP8CACCnAQAA_QIAIKgBAAD-AgAgqwEAAA0AIAMZAAD8AgAgpwEAAP0CACCrAQAADQAgAAAABRkAAPYCACAaAAD6AgAgpwEAAPcCACCoAQAA-QIAIKsBAAAJACALGQAAkwIAMBoAAJgCADCnAQAAlAIAMKgBAACVAgAwqQEAAJcCADCqAQAAlwIAMKsBAACXAgAwrAEAAJYCACCtAQAAlwIAMK4BAACZAgAwrwEAAJoCADACiAEBAAAAAZoBAQAAAAECAAAAEQAgGQAAngIAIAMAAAARACAZAACeAgAgGgAAnQIAIAESAAD4AgAwBwYAAOUBACCFAQAA5AEAMIYBAAAPABCHAQAA5AEAMIgBAQAAAAGaAQEAzQEAIZsBAQDLAQAhAgAAABEAIBIAAJ0CACACAAAAmwIAIBIAAJwCACAGhQEAAJoCADCGAQAAmwIAEIcBAACaAgAwiAEBAMsBACGaAQEAzQEAIZsBAQDLAQAhBoUBAACaAgAwhgEAAJsCABCHAQAAmgIAMIgBAQDLAQAhmgEBAM0BACGbAQEAywEAIQKIAQEA8gEAIZoBAQD1AQAhAogBAQDyAQAhmgEBAPUBACECiAEBAAAAAZoBAQAAAAEDGQAA9gIAIKcBAAD3AgAgqwEAAAkAIAQZAACTAgAwpwEAAJQCADCrAQAAlwIAMKwBAACWAgAgAAAABRkAAPACACAaAAD0AgAgpwEAAPECACCoAQAA8wIAIKsBAAABACALGQAApgIAMBoAAKsCADCnAQAApwIAMKgBAACoAgAwqQEAAKoCADCqAQAAqgIAMKsBAACqAgAwrAEAAKkCACCtAQAAqgIAMK4BAACsAgAwrwEAAK0CADADBwAAoAIAIIgBAQAAAAGaAQEAAAABAgAAAA0AIBkAALECACADAAAADQAgGQAAsQIAIBoAALACACABEgAA8gIAMAgFAADnAQAgBwAA6AEAIIUBAADmAQAwhgEAAAsAEIcBAADmAQAwiAEBAAAAAZoBAQDLAQAhnAEBAMsBACECAAAADQAgEgAAsAIAIAIAAACuAgAgEgAArwIAIAaFAQAArQIAMIYBAACuAgAQhwEAAK0CADCIAQEAywEAIZoBAQDLAQAhnAEBAMsBACEGhQEAAK0CADCGAQAArgIAEIcBAACtAgAwiAEBAMsBACGaAQEAywEAIZwBAQDLAQAhAogBAQDyAQAhmgEBAPIBACEDBwAAkgIAIIgBAQDyAQAhmgEBAPIBACEDBwAAoAIAIIgBAQAAAAGaAQEAAAABAxkAAPACACCnAQAA8QIAIKsBAAABACAEGQAApgIAMKcBAACnAgAwqwEAAKoCADCsAQAAqQIAIAAAAAUZAADrAgAgGgAA7gIAIKcBAADsAgAgqAEAAO0CACCrAQAAAQAgAxkAAOsCACCnAQAA7AIAIKsBAAABACAAAAAAAAWtAQgAAAABsAEIAAAAAbEBCAAAAAGyAQgAAAABswEIAAAAAQGtAUAAAAABCxkAANQCADAaAADZAgAwpwEAANUCADCoAQAA1gIAMKkBAADYAgAwqgEAANgCADCrAQAA2AIAMKwBAADXAgAgrQEAANgCADCuAQAA2gIAMK8BAADbAgAwCxkAAMgCADAaAADNAgAwpwEAAMkCADCoAQAAygIAMKkBAADMAgAwqgEAAMwCADCrAQAAzAIAMKwBAADLAgAgrQEAAMwCADCuAQAAzgIAMK8BAADPAgAwBxkAAMMCACAaAADGAgAgpwEAAMQCACCoAQAAxQIAIKkBAAAVACCqAQAAFQAgqwEAAIoBACAGDAAAhgIAIIgBAQAAAAGJASAAAAABigEBAAAAAYsBAgAAAAGMAQEAAAABAgAAAIoBACAZAADDAgAgAwAAABUAIBkAAMMCACAaAADHAgAgCAAAABUAIAwAAP8BACASAADHAgAgiAEBAPIBACGJASAA8wEAIYoBAQDyAQAhiwECAPQBACGMAQEA9QEAIQYMAAD_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-IAA_IQBAIgBBAAAAAAAFCAA9HwA-IAA_IQBAIgBBDQIBDhsBDx4BEB8BESABEyIBFCQLFSUMFicBFykLGCoNGysBHCwBHS0LIzAOJDEUJTICJjMCJzQCKDUCKTYCKjgCKzoLLDsVLT0CLj8LL0AWMEECMUICMkMLM0YXNEcbNUgDNkkDN0oDOEsDOUwDOk4DO1ALPFEcPVMDPlULP1YdQFcDQVgDQlkLQ1weRF0iRV4ERl8ER2AESGEESWIESmQES2YLTGcjTWkETmsLT2wkUG0EUW4EUm8LU3IlVHMpVXQFVnUFV3YFWHcFWXgFWnoFW3wLXH0qXX8FXoEBC1-CAStggwEFYYQBBWKFAQtjiAEsZIkBMGWLAQhmjAEIZ44BCGiPAQhpkAEIapIBCGuUAQtslQExbZcBCG6ZAQtvmgEycJsBCHGcAQhynQELc6ABM3ShATl1owEJdqQBCXemAQl4pwEJeagBCXqqAQl7rAELfK0BOn2vAQl-sQELf7IBO4ABswEJgQG0AQmCAbUBC4MBuAE8hAG5AUI"
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
async function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {
|
|
@@ -237,6 +237,26 @@ export interface PrismaClient<
|
|
|
237
237
|
* ```
|
|
238
238
|
*/
|
|
239
239
|
get adversarialLabel(): Prisma.AdversarialLabelDelegate<ExtArgs, { omit: OmitOpts }>;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* `prisma.adversarialParent`: Exposes CRUD operations for the **AdversarialParent** model.
|
|
243
|
+
* Example usage:
|
|
244
|
+
* ```ts
|
|
245
|
+
* // Fetch zero or more AdversarialParents
|
|
246
|
+
* const adversarialParents = await prisma.adversarialParent.findMany()
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
get adversarialParent(): Prisma.AdversarialParentDelegate<ExtArgs, { omit: OmitOpts }>;
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* `prisma.adversarialInner`: Exposes CRUD operations for the **AdversarialInner** model.
|
|
253
|
+
* Example usage:
|
|
254
|
+
* ```ts
|
|
255
|
+
* // Fetch zero or more AdversarialInners
|
|
256
|
+
* const adversarialInners = await prisma.adversarialInner.findMany()
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
get adversarialInner(): Prisma.AdversarialInnerDelegate<ExtArgs, { omit: OmitOpts }>;
|
|
240
260
|
}
|
|
241
261
|
|
|
242
262
|
export function getPrismaClientClass(): PrismaClientConstructor {
|