graplix
Version:
Authorization framework for implementing Relation-based Access Control (ReBAC) with the Resolver (Inspired by [GraphQL](https://graphql.org))
36 lines (29 loc) • 978 B
text/typescript
import type { BaseEntityTypeMap } from "./BaseEntityTypeMap";
import type { Arrayable } from "./utils";
export type GraplixDirectlyRelatedUserTypes<
EntityTypeMap extends BaseEntityTypeMap,
> = {
type: Extract<keyof EntityTypeMap, string>;
};
export type GraplixComputedSetRelationDefinition = {
when: string;
from?: never;
};
export type GraplixTupleToUsersetRelationDefinition = {
when: string;
from: string;
};
export type GraplixUnionRelationDefinition =
| GraplixComputedSetRelationDefinition
| GraplixTupleToUsersetRelationDefinition;
export type GraplixSchemaRelationDefinition<
EntityTypeMap extends BaseEntityTypeMap,
> = Arrayable<
| GraplixDirectlyRelatedUserTypes<EntityTypeMap>
| GraplixUnionRelationDefinition
>;
export type GraplixSchema<EntityTypeMap extends BaseEntityTypeMap> = {
[SelectedNodeTypeName in Extract<keyof EntityTypeMap, string>]: {
[relationName: string]: GraplixSchemaRelationDefinition<EntityTypeMap>;
};
};