@cerbos/orm-prisma 2.0.0-alpha.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -4
- package/lib/cjs/index.js +7 -7
- package/lib/cjs/index.js.map +1 -0
- package/lib/{index.js → esm/index.js} +7 -7
- package/lib/esm/index.js.map +1 -0
- package/lib/{cjs → types}/index.d.ts +7 -4
- package/lib/types/index.d.ts.map +1 -0
- package/package.json +40 -8
- package/lib/index.d.ts +0 -31
package/README.md
CHANGED
|
@@ -1,22 +1,37 @@
|
|
|
1
1
|
# Cerbos + Prisma ORM Adapter
|
|
2
2
|
|
|
3
|
-
An adapter library that takes a [Cerbos](https://cerbos.dev) Query Plan ([PlanResources API](https://docs.cerbos.dev/cerbos/latest/api/index.html#resources-query-plan)) response and converts it into a [Prisma](https://prisma.io) where
|
|
3
|
+
An adapter library that takes a [Cerbos](https://cerbos.dev) Query Plan ([PlanResources API](https://docs.cerbos.dev/cerbos/latest/api/index.html#resources-query-plan)) response and converts it into a [Prisma](https://prisma.io) where clause object. This is designed to work alongside a project using the [Cerbos Javascript SDK](https://github.com/cerbos/cerbos-sdk-javascript).
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
### Supported Operators
|
|
8
8
|
|
|
9
|
+
#### Basic Operators
|
|
10
|
+
|
|
9
11
|
- Logical operators: `and`, `or`, `not`
|
|
10
12
|
- Comparison operators: `eq`, `ne`, `lt`, `gt`, `lte`, `gte`, `in`
|
|
11
|
-
- Relation operators: `some`, `none`, `is`, `isNot`, `hasIntersection`
|
|
12
13
|
- String operations: `startsWith`, `endsWith`, `contains`, `isSet`
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
#### Relation Operators
|
|
16
|
+
|
|
17
|
+
- One-to-one: `is`, `isNot`
|
|
18
|
+
- One-to-many/Many-to-many: `some`, `none`, `every`
|
|
19
|
+
- Collection operators: `exists`, `exists_one`, `all`, `filter`
|
|
20
|
+
- Set operations: `hasIntersection`
|
|
21
|
+
|
|
22
|
+
#### Advanced Features
|
|
23
|
+
|
|
24
|
+
- Deep nested relations support
|
|
25
|
+
- Automatic field inference
|
|
26
|
+
- Collection mapping and filtering
|
|
27
|
+
- Complex condition combinations
|
|
28
|
+
- Type-safe field mappings
|
|
15
29
|
|
|
16
30
|
## Requirements
|
|
17
31
|
|
|
18
32
|
- Cerbos > v0.40
|
|
19
33
|
- `@cerbos/http` or `@cerbos/grpc` client
|
|
34
|
+
- Prisma > v6.0
|
|
20
35
|
|
|
21
36
|
## Installation
|
|
22
37
|
|
|
@@ -42,6 +57,49 @@ queryPlanToPrisma({
|
|
|
42
57
|
|
|
43
58
|
### Basic Example
|
|
44
59
|
|
|
60
|
+
1. Create a basic policy file in the `policies` directory:
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
apiVersion: api.cerbos.dev/v1
|
|
64
|
+
resourcePolicy:
|
|
65
|
+
resource: resource
|
|
66
|
+
version: default
|
|
67
|
+
rules:
|
|
68
|
+
- actions: ["view"]
|
|
69
|
+
effect: EFFECT_ALLOW
|
|
70
|
+
roles: ["USER"]
|
|
71
|
+
condition:
|
|
72
|
+
match:
|
|
73
|
+
expr: request.resource.attr.status == "active"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
2. Start Cerbos PDP:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
docker run --rm -i -p 3592:3592 -v $(pwd)/policies:/policies ghcr.io/cerbos/cerbos:latest
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
3. Create Prisma schema (`prisma/schema.prisma`):
|
|
83
|
+
|
|
84
|
+
```prisma
|
|
85
|
+
datasource db {
|
|
86
|
+
provider = "sqlite"
|
|
87
|
+
url = env("DATABASE_URL")
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
generator client {
|
|
91
|
+
provider = "prisma-client-js"
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
model Resource {
|
|
95
|
+
id Int @id @default(autoincrement())
|
|
96
|
+
title String
|
|
97
|
+
status String
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
4. Implement the mapper
|
|
102
|
+
|
|
45
103
|
```ts
|
|
46
104
|
import { GRPC as Cerbos } from "@cerbos/grpc";
|
|
47
105
|
import { PrismaClient } from "@prisma/client";
|
|
@@ -263,6 +321,89 @@ const result = await primsa.resource.findMany({
|
|
|
263
321
|
});
|
|
264
322
|
```
|
|
265
323
|
|
|
324
|
+
## Types
|
|
325
|
+
|
|
326
|
+
### Query Plan Response Types
|
|
327
|
+
|
|
328
|
+
The adapter is fully typed and provides clear type definitions for all responses:
|
|
329
|
+
|
|
330
|
+
```ts
|
|
331
|
+
import { PlanKind, QueryPlanToPrismaResult } from "@cerbos/orm-prisma";
|
|
332
|
+
|
|
333
|
+
// The result will be one of these types:
|
|
334
|
+
type QueryPlanToPrismaResult =
|
|
335
|
+
| {
|
|
336
|
+
kind: PlanKind.ALWAYS_ALLOWED | PlanKind.ALWAYS_DENIED;
|
|
337
|
+
}
|
|
338
|
+
| {
|
|
339
|
+
kind: PlanKind.CONDITIONAL;
|
|
340
|
+
filters: Record<string, any>;
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
// Example usage with type narrowing:
|
|
344
|
+
const result = queryPlanToPrisma({ queryPlan });
|
|
345
|
+
|
|
346
|
+
if (result.kind === PlanKind.CONDITIONAL) {
|
|
347
|
+
// TypeScript knows `filters` exists here
|
|
348
|
+
const records = await prisma.resource.findMany({
|
|
349
|
+
where: result.filters,
|
|
350
|
+
});
|
|
351
|
+
} else if (result.kind === PlanKind.ALWAYS_ALLOWED) {
|
|
352
|
+
// No filters needed
|
|
353
|
+
const records = await prisma.resource.findMany();
|
|
354
|
+
} else {
|
|
355
|
+
// Must be ALWAYS_DENIED
|
|
356
|
+
return [];
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Mapper Types
|
|
361
|
+
|
|
362
|
+
The mapper configuration is also fully typed:
|
|
363
|
+
|
|
364
|
+
```ts
|
|
365
|
+
type MapperConfig = {
|
|
366
|
+
field?: string;
|
|
367
|
+
relation?: {
|
|
368
|
+
name: string;
|
|
369
|
+
type: "one" | "many";
|
|
370
|
+
field?: string;
|
|
371
|
+
fields?: {
|
|
372
|
+
[key: string]: MapperConfig; // Recursive for nested fields
|
|
373
|
+
};
|
|
374
|
+
};
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
type Mapper = { [key: string]: MapperConfig } | ((key: string) => MapperConfig);
|
|
378
|
+
```
|
|
379
|
+
|
|
266
380
|
## Full Example
|
|
267
381
|
|
|
268
382
|
A complete example application using this adapter can be found at [https://github.com/cerbos/express-prisma-cerbos](https://github.com/cerbos/express-prisma-cerbos)
|
|
383
|
+
|
|
384
|
+
## Resources
|
|
385
|
+
|
|
386
|
+
### Documentation
|
|
387
|
+
|
|
388
|
+
- [Cerbos Documentation](https://docs.cerbos.dev)
|
|
389
|
+
- [Prisma Documentation](https://www.prisma.io/docs)
|
|
390
|
+
- [Query Plan API Reference](https://docs.cerbos.dev/cerbos/latest/api/index.html#resources-query-plan)
|
|
391
|
+
|
|
392
|
+
### Examples and Tutorials
|
|
393
|
+
|
|
394
|
+
- [Express + Prisma + Cerbos Example](https://github.com/cerbos/express-prisma-cerbos)
|
|
395
|
+
- [Cerbos Query Planning Guide](https://docs.cerbos.dev/cerbos/latest/policies/compile.html)
|
|
396
|
+
- [Prisma Filtering Guide](https://www.prisma.io/docs/concepts/components/prisma-client/filtering-and-sorting)
|
|
397
|
+
|
|
398
|
+
### Related Projects
|
|
399
|
+
|
|
400
|
+
- [Cerbos JavaScript SDK](https://github.com/cerbos/cerbos-sdk-javascript)
|
|
401
|
+
|
|
402
|
+
### Community
|
|
403
|
+
|
|
404
|
+
- [Cerbos Slack](https://community.cerbos.dev)
|
|
405
|
+
- [Cerbos GitHub Discussions](https://github.com/cerbos/cerbos/discussions)
|
|
406
|
+
|
|
407
|
+
## License
|
|
408
|
+
|
|
409
|
+
Apache 2.0 - See [LICENSE](../LICENSE) for more information.
|
package/lib/cjs/index.js
CHANGED
|
@@ -49,7 +49,7 @@ const resolveFieldReference = (reference, mapper) => {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
const activeConfig = config || matchedConfig;
|
|
52
|
-
if (activeConfig
|
|
52
|
+
if (activeConfig?.relation) {
|
|
53
53
|
const { name, type, fields } = activeConfig.relation;
|
|
54
54
|
const matchedParts = matchedPrefix ? matchedPrefix.split(".") : [];
|
|
55
55
|
const remainingParts = matchedPrefix
|
|
@@ -64,7 +64,7 @@ const resolveFieldReference = (reference, mapper) => {
|
|
|
64
64
|
let currentParts = remainingParts;
|
|
65
65
|
while (currentParts.length > 0) {
|
|
66
66
|
const nextConfig = currentMapper[currentParts[0]];
|
|
67
|
-
if (nextConfig
|
|
67
|
+
if (nextConfig?.relation) {
|
|
68
68
|
relations.push({
|
|
69
69
|
name: nextConfig.relation.name,
|
|
70
70
|
type: nextConfig.relation.type,
|
|
@@ -75,14 +75,14 @@ const resolveFieldReference = (reference, mapper) => {
|
|
|
75
75
|
currentParts = currentParts.slice(1);
|
|
76
76
|
}
|
|
77
77
|
else {
|
|
78
|
-
field =
|
|
78
|
+
field = nextConfig?.field || currentParts[currentParts.length - 1];
|
|
79
79
|
break;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
return { path: field ? [field] : remainingParts, relations };
|
|
84
84
|
}
|
|
85
|
-
return { path: [
|
|
85
|
+
return { path: [activeConfig?.field || reference] };
|
|
86
86
|
};
|
|
87
87
|
/**
|
|
88
88
|
* Determines the appropriate Prisma operator based on relation type.
|
|
@@ -484,7 +484,6 @@ const buildPrismaFilterFromCerbosExpression = (expression, mapper) => {
|
|
|
484
484
|
* and handles nested collections
|
|
485
485
|
*/
|
|
486
486
|
const createScopedMapper = (collectionPath, variableName, fullMapper) => (key) => {
|
|
487
|
-
var _a, _b, _c;
|
|
488
487
|
// If the key starts with the variable name, it's accessing the collection item
|
|
489
488
|
if (key.startsWith(variableName + ".")) {
|
|
490
489
|
const strippedKey = key.replace(variableName + ".", "");
|
|
@@ -493,13 +492,13 @@ const createScopedMapper = (collectionPath, variableName, fullMapper) => (key) =
|
|
|
493
492
|
const collectionConfig = typeof fullMapper === "function"
|
|
494
493
|
? fullMapper(collectionPath)
|
|
495
494
|
: fullMapper[collectionPath];
|
|
496
|
-
if (
|
|
495
|
+
if (collectionConfig?.relation?.fields) {
|
|
497
496
|
// For nested paths, traverse the fields configuration
|
|
498
497
|
let currentConfig = collectionConfig.relation.fields;
|
|
499
498
|
let field = parts[0];
|
|
500
499
|
for (let i = 0; i < parts.length - 1; i++) {
|
|
501
500
|
const part = parts[i];
|
|
502
|
-
if (
|
|
501
|
+
if (currentConfig[part]?.relation?.fields) {
|
|
503
502
|
currentConfig = currentConfig[part].relation.fields;
|
|
504
503
|
field = parts[i + 1];
|
|
505
504
|
}
|
|
@@ -515,3 +514,4 @@ const createScopedMapper = (collectionPath, variableName, fullMapper) => (key) =
|
|
|
515
514
|
// For keys not referencing the collection item, use the full mapper
|
|
516
515
|
return typeof fullMapper === "function" ? fullMapper(key) : fullMapper[key];
|
|
517
516
|
};
|
|
517
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAgDA,8CAoBC;AApED,uCAKsB;AAEb,yFAJP,eAAQ,OAIO;AAoCjB;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,MAAM,GAAG,EAAE,GACW;IACtB,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,eAAQ,CAAC,cAAc;YAC1B,OAAO,EAAE,IAAI,EAAE,eAAQ,CAAC,cAAc,EAAE,CAAC;QAC3C,KAAK,eAAQ,CAAC,aAAa;YACzB,OAAO,EAAE,IAAI,EAAE,eAAQ,CAAC,aAAa,EAAE,CAAC;QAC1C,KAAK,eAAQ,CAAC,WAAW;YACvB,OAAO;gBACL,IAAI,EAAE,eAAQ,CAAC,WAAW;gBAC1B,OAAO,EAAE,qCAAqC,CAC5C,SAAS,CAAC,SAAS,EACnB,MAAM,CACP;aACF,CAAC;QACJ;YACE,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG,CAC5B,SAAiB,EACjB,MAAc,EASd,EAAE;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GACV,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvE,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,aAAuC,CAAC;IAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,YAAY,EAAE,CAAC;gBACjB,aAAa,GAAG,MAAM,CAAC;gBACvB,aAAa,GAAG,YAAY,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,IAAI,aAAc,CAAC;IAC9C,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC;QACrD,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,cAAc,GAAG,aAAa;YAClC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEnB,IAAI,KAAyB,CAAC;QAC9B,MAAM,SAAS,GAKV;YACH,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE;SACzE,CAAC;QAEF,IAAI,MAAM,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,aAAa,GAAG,MAAM,CAAC;YAC3B,IAAI,YAAY,GAAG,cAAc,CAAC;YAElC,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,UAAU,EAAE,QAAQ,EAAE,CAAC;oBACzB,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI;wBAC9B,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI;wBAC9B,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK;wBAChC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM;qBACzC,CAAC,CAAC;oBACH,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;oBACjD,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACnE,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC;AACtD,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,yBAAyB,GAAG,CAAC,QAIlC,EAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,yBAAyB,GAAG,CAChC,SAKE,EACF,WAAgB,EACX,EAAE;IACP,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IAE/C,IAAI,aAAa,GAAG,WAAW,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE7D,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,aAAa,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;QACpD,CAAC;QAED,aAAa,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAkBF;;;;GAIG;AACH,SAAS,wBAAwB,CAC/B,OAAwB;IAExB,OAAO,MAAM,IAAI,OAAO,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAwB;IAC/C,OAAO,OAAO,IAAI,OAAO,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAC/B,OAA8B;IAE9B,OAAO,MAAM,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAChC,OAA8B;IAE9B,OAAO,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAS,4BAA4B,CACnC,OAA8B;IAE9B,OAAO,CACL,UAAU,IAAI,OAAO;QACrB,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACpC,UAAU,IAAI,OAAO;QACrB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAChC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAG,CACrB,OAA8B,EAC9B,MAAc,EACG,EAAE;IACnB,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;SAAM,IAAI,4BAA4B,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,YAAY,GAAG,qCAAqC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5E,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,qCAAqC,GAAG,CAC5C,UAAiC,EACjC,MAAc,EACA,EAAE;IAChB,gCAAgC;IAChC,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAE1C;;;;;;OAMG;IACH,MAAM,yBAAyB,GAAG,CAChC,QAAgB,EAChB,IAAqB,EACrB,KAAsB,EACR,EAAE;QAChB,MAAM,cAAc,GAAG;YACrB,EAAE,EAAE,QAAQ;YACZ,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,KAAK;SACV,CAAC,QAAQ,CAAC,CAAC;QACZ,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,MAAM,WAAW,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YAE7D,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3C,CAAC,CAAC;IAEF,mCAAmC;IACnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,OAAO;gBACL,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,qCAAqC,CAAC,OAAO,EAAE,MAAM,CAAC,CACvD;aACF,CAAC;QACJ,KAAK,IAAI;YACP,OAAO;gBACL,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC3B,qCAAqC,CAAC,OAAO,EAAE,MAAM,CAAC,CACvD;aACF,CAAC;QACJ,KAAK,KAAK;YACR,OAAO;gBACL,GAAG,EAAE,qCAAqC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;aAChE,CAAC;QACJ,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,4BAA4B,CAAC,CAAC,CAAC,CACtE,CAAC;YACF,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACnD,OAAO,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAEjE,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;YACrC,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;YAEhC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBACvD,OAAO,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;YAErC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACjE,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;YAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,iCAAiC,CAAC,CAAC;YAChE,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YAEvE,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACpE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;YAErC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACjE,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG;gBAClB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa;oBACpC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;oBACf,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;aACrB,CAAC;YAEF,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,OAAO,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC;YAE7C,IAAI,UAAU,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAChE,IAAI,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBAEvE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC;gBAClD,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC;oBACzB,MAAM,IAAI,KAAK,CACb,qDAAqD,CACtD,CAAC;gBAEJ,gCAAgC;gBAChC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACrC,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAEtD,0CAA0C;gBAC1C,MAAM,YAAY,GAAG,kBAAkB,CACrC,UAAU,CAAC,IAAI,EACf,QAAQ,CAAC,IAAI,EACb,MAAM,CACP,CAAC;gBAEF,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACrE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAEtD,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACzD,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACrC,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBAE7D,iDAAiD;gBACjD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE1D,OAAO,yBAAyB,CAAC,SAAS,EAAE;oBAC1C,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,KAAK,EAAE;iBACxC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;YACJ,IAAI,CAAC,CAAC,OAAO,IAAI,YAAY,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAEvE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAC/C,WAAW,CAAC,IAAI,EAChB,MAAM,CACP,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAE7D,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG;oBAClB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,KAAK,EAAE;iBACpD,CAAC;gBACF,OAAO,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;QACnE,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC;YACvC,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,OAAO,qCAAqC,CAC1C,SAAS,EACT,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CACnE,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,gCAAgC,CAAC,CAAC;YAC/D,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC;YACtC,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;YACJ,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;YAEJ,gCAAgC;YAChC,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAEtD,0CAA0C;YAC1C,MAAM,YAAY,GAAG,kBAAkB,CACrC,UAAU,CAAC,IAAI,EACf,QAAQ,CAAC,IAAI,EACb,MAAM,CACP,CAAC;YAEF,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS;gBACZ,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,uCAAuC,CAAC,CAAC;YAEtE,MAAM,eAAe,GAAG,qCAAqC,CAC3D,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,uCAAuC;YAC3D,YAAY,CACb,CAAC;YAEF,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,WAAW,GAAG,eAAe,CAAC;YAElC,qEAAqE;YACrE,IAAI,eAAe,CAAC,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;gBAC9C,WAAW,GAAG,eAAe,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,WAAW,GAAG;oBACZ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChE,CAAC;YACJ,CAAC;YAED,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ;oBACX,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC;gBACpD,KAAK,YAAY;oBACf,OAAO;wBACL,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;4BACf,IAAI,EAAE,WAAW;yBAClB;wBACD,GAAG,EAAE;4BACH;gCACE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oCACf,KAAK,EAAE;wCACL,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;qCACxC;iCACF;6BACF;yBACF;qBACF,CAAC;gBACJ,KAAK,KAAK;oBACR,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;gBACrD;oBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC;YACtC,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;gBACzD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAEvE,gCAAgC;YAChC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAE7D,0CAA0C;YAC1C,MAAM,YAAY,GAAG,kBAAkB,CACrC,UAAU,CAAC,IAAI,EACf,QAAQ,CAAC,IAAI,EACb,MAAM,CACP,CAAC;YAEF,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS;gBACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAE9D,iDAAiD;YACjD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE1D,OAAO,yBAAyB,CAAC,SAAS,EAAE;gBAC1C,CAAC,yBAAyB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC5D,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE;iBAC9B;aACF,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,kBAAkB,GACtB,CAAC,cAAsB,EAAE,YAAoB,EAAE,UAAkB,EAAU,EAAE,CAC7E,CAAC,GAAW,EAAE,EAAE;IACd,+EAA+E;IAC/E,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErC,uCAAuC;QACvC,MAAM,gBAAgB,GACpB,OAAO,UAAU,KAAK,UAAU;YAC9B,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;YAC5B,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAEjC,IAAI,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;YACvC,sDAAsD;YACtD,IAAI,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrD,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;oBAC1C,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACpD,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;YAED,uEAAuE;YACvE,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAChC,CAAC;IAED,oEAAoE;IACpE,OAAO,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC,CAAC"}
|
|
@@ -45,7 +45,7 @@ const resolveFieldReference = (reference, mapper) => {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
const activeConfig = config || matchedConfig;
|
|
48
|
-
if (activeConfig
|
|
48
|
+
if (activeConfig?.relation) {
|
|
49
49
|
const { name, type, fields } = activeConfig.relation;
|
|
50
50
|
const matchedParts = matchedPrefix ? matchedPrefix.split(".") : [];
|
|
51
51
|
const remainingParts = matchedPrefix
|
|
@@ -60,7 +60,7 @@ const resolveFieldReference = (reference, mapper) => {
|
|
|
60
60
|
let currentParts = remainingParts;
|
|
61
61
|
while (currentParts.length > 0) {
|
|
62
62
|
const nextConfig = currentMapper[currentParts[0]];
|
|
63
|
-
if (nextConfig
|
|
63
|
+
if (nextConfig?.relation) {
|
|
64
64
|
relations.push({
|
|
65
65
|
name: nextConfig.relation.name,
|
|
66
66
|
type: nextConfig.relation.type,
|
|
@@ -71,14 +71,14 @@ const resolveFieldReference = (reference, mapper) => {
|
|
|
71
71
|
currentParts = currentParts.slice(1);
|
|
72
72
|
}
|
|
73
73
|
else {
|
|
74
|
-
field =
|
|
74
|
+
field = nextConfig?.field || currentParts[currentParts.length - 1];
|
|
75
75
|
break;
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
return { path: field ? [field] : remainingParts, relations };
|
|
80
80
|
}
|
|
81
|
-
return { path: [
|
|
81
|
+
return { path: [activeConfig?.field || reference] };
|
|
82
82
|
};
|
|
83
83
|
/**
|
|
84
84
|
* Determines the appropriate Prisma operator based on relation type.
|
|
@@ -480,7 +480,6 @@ const buildPrismaFilterFromCerbosExpression = (expression, mapper) => {
|
|
|
480
480
|
* and handles nested collections
|
|
481
481
|
*/
|
|
482
482
|
const createScopedMapper = (collectionPath, variableName, fullMapper) => (key) => {
|
|
483
|
-
var _a, _b, _c;
|
|
484
483
|
// If the key starts with the variable name, it's accessing the collection item
|
|
485
484
|
if (key.startsWith(variableName + ".")) {
|
|
486
485
|
const strippedKey = key.replace(variableName + ".", "");
|
|
@@ -489,13 +488,13 @@ const createScopedMapper = (collectionPath, variableName, fullMapper) => (key) =
|
|
|
489
488
|
const collectionConfig = typeof fullMapper === "function"
|
|
490
489
|
? fullMapper(collectionPath)
|
|
491
490
|
: fullMapper[collectionPath];
|
|
492
|
-
if (
|
|
491
|
+
if (collectionConfig?.relation?.fields) {
|
|
493
492
|
// For nested paths, traverse the fields configuration
|
|
494
493
|
let currentConfig = collectionConfig.relation.fields;
|
|
495
494
|
let field = parts[0];
|
|
496
495
|
for (let i = 0; i < parts.length - 1; i++) {
|
|
497
496
|
const part = parts[i];
|
|
498
|
-
if (
|
|
497
|
+
if (currentConfig[part]?.relation?.fields) {
|
|
499
498
|
currentConfig = currentConfig[part].relation.fields;
|
|
500
499
|
field = parts[i + 1];
|
|
501
500
|
}
|
|
@@ -511,3 +510,4 @@ const createScopedMapper = (collectionPath, variableName, fullMapper) => (key) =
|
|
|
511
510
|
// For keys not referencing the collection item, use the full mapper
|
|
512
511
|
return typeof fullMapper === "function" ? fullMapper(key) : fullMapper[key];
|
|
513
512
|
};
|
|
513
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,13 +19,16 @@ export interface QueryPlanToPrismaArgs {
|
|
|
19
19
|
queryPlan: PlanResourcesResponse;
|
|
20
20
|
mapper?: Mapper;
|
|
21
21
|
}
|
|
22
|
-
export
|
|
23
|
-
kind: PlanKind;
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
export type QueryPlanToPrismaResult = {
|
|
23
|
+
kind: PlanKind.ALWAYS_ALLOWED | PlanKind.ALWAYS_DENIED;
|
|
24
|
+
} | {
|
|
25
|
+
kind: PlanKind.CONDITIONAL;
|
|
26
|
+
filters: Record<string, any>;
|
|
27
|
+
};
|
|
26
28
|
/**
|
|
27
29
|
* Converts a Cerbos query plan to a Prisma filter.
|
|
28
30
|
* @param {QueryPlanToPrismaArgs} args - The arguments containing the query plan and mapper.
|
|
29
31
|
* @returns {QueryPlanToPrismaResult} The result containing the kind and filters.
|
|
30
32
|
*/
|
|
31
33
|
export declare function queryPlanToPrisma({ queryPlan, mapper, }: QueryPlanToPrismaArgs): QueryPlanToPrismaResult;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,QAAQ,EAET,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE;YACP,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;SAC7B,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,MAAM,GACd;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B,GACD,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,YAAY,CAAC,CAAC;AAEpC,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,qBAAqB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IACE,IAAI,EAAE,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC;CACxD,GACD;IACE,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,MAAW,GACZ,EAAE,qBAAqB,GAAG,uBAAuB,CAiBjD"}
|
package/package.json
CHANGED
|
@@ -1,23 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cerbos/orm-prisma",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"homepage": "https://cerbos.dev",
|
|
5
|
-
"description": "",
|
|
5
|
+
"description": "Prisma adapter for Cerbos query plans",
|
|
6
6
|
"private": false,
|
|
7
7
|
"main": "./lib/cjs/index.js",
|
|
8
8
|
"module": "./lib/esm/index.js",
|
|
9
|
+
"types": "./lib/types/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"require": "./lib/cjs/index.js",
|
|
13
|
+
"import": "./lib/esm/index.js",
|
|
14
|
+
"types": "./lib/types/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
9
17
|
"files": [
|
|
10
|
-
"lib
|
|
18
|
+
"lib",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
11
21
|
],
|
|
22
|
+
"sideEffects": false,
|
|
12
23
|
"scripts": {
|
|
13
|
-
"
|
|
24
|
+
"clean": "rimraf lib",
|
|
25
|
+
"build": "npm run clean && npm run build:types && npm run build:cjs && npm run build:esm",
|
|
26
|
+
"build:types": "tsc -p tsconfig.types.json",
|
|
27
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
28
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
14
29
|
"prepare": "npm run build",
|
|
15
|
-
"
|
|
30
|
+
"prepublishOnly": "npm test",
|
|
16
31
|
"version": "git add -A src",
|
|
17
|
-
"postversion": "git push && git push --tags",
|
|
18
32
|
"test": "npx prisma db push --force-reset && cerbos run --log-level=error --set=storage.disk.directory=../policies --set=telemetry.disabled=true -- jest src/**.test.ts",
|
|
19
33
|
"cerbos": "cerbos server --config=./cerbos-config.yaml"
|
|
20
34
|
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=14.0.0"
|
|
37
|
+
},
|
|
21
38
|
"author": "Cerbos",
|
|
22
39
|
"license": "Apache-2.0",
|
|
23
40
|
"devDependencies": {
|
|
@@ -27,10 +44,25 @@
|
|
|
27
44
|
"prisma": "^6.4.1",
|
|
28
45
|
"ts-jest": "^29.0.0",
|
|
29
46
|
"ts-node": "^10.4.0",
|
|
30
|
-
"typescript": "^5.0.0"
|
|
47
|
+
"typescript": "^5.0.0",
|
|
48
|
+
"expect-type": "^1.1.0",
|
|
49
|
+
"rimraf": "^5.0.0"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@prisma/client": "^5.0.0 || ^6.0.0"
|
|
31
53
|
},
|
|
32
54
|
"dependencies": {
|
|
33
55
|
"@cerbos/core": "^0.21.0",
|
|
34
56
|
"@cerbos/grpc": "^0.20.0"
|
|
35
|
-
}
|
|
57
|
+
},
|
|
58
|
+
"publishConfig": {
|
|
59
|
+
"access": "public"
|
|
60
|
+
},
|
|
61
|
+
"keywords": [
|
|
62
|
+
"cerbos",
|
|
63
|
+
"prisma",
|
|
64
|
+
"orm",
|
|
65
|
+
"authorization",
|
|
66
|
+
"permissions"
|
|
67
|
+
]
|
|
36
68
|
}
|
package/lib/index.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { PlanResourcesResponse, PlanKind } from "@cerbos/core";
|
|
2
|
-
export { PlanKind };
|
|
3
|
-
export type PrismaFilter = Record<string, any>;
|
|
4
|
-
export type MapperConfig = {
|
|
5
|
-
field?: string;
|
|
6
|
-
relation?: {
|
|
7
|
-
name: string;
|
|
8
|
-
type: "one" | "many";
|
|
9
|
-
field?: string;
|
|
10
|
-
fields?: {
|
|
11
|
-
[key: string]: MapperConfig;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
export type Mapper = {
|
|
16
|
-
[key: string]: MapperConfig;
|
|
17
|
-
} | ((key: string) => MapperConfig);
|
|
18
|
-
export interface QueryPlanToPrismaArgs {
|
|
19
|
-
queryPlan: PlanResourcesResponse;
|
|
20
|
-
mapper?: Mapper;
|
|
21
|
-
}
|
|
22
|
-
export interface QueryPlanToPrismaResult {
|
|
23
|
-
kind: PlanKind;
|
|
24
|
-
filters?: Record<string, any>;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Converts a Cerbos query plan to a Prisma filter.
|
|
28
|
-
* @param {QueryPlanToPrismaArgs} args - The arguments containing the query plan and mapper.
|
|
29
|
-
* @returns {QueryPlanToPrismaResult} The result containing the kind and filters.
|
|
30
|
-
*/
|
|
31
|
-
export declare function queryPlanToPrisma({ queryPlan, mapper, }: QueryPlanToPrismaArgs): QueryPlanToPrismaResult;
|