Implement resolvers

Signed-off-by: Émile Ré <emile@getprobo.com>
This commit is contained in:
Émile Ré
2026-02-13 11:54:14 +04:00
parent c115e2c9dc
commit baeb758a4f
16 changed files with 507 additions and 259 deletions

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<b545f1a231e042bd94c84430f3015112>>
* @generated SignedSource<<f6caf8d14eaaea74987cd5f91fedaed3>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -15,11 +15,6 @@ export type MembershipCardFragment$data = {
readonly expiresAt: string;
readonly id: string;
} | null | undefined;
readonly organization: {
readonly id: string;
readonly logoUrl: string | null | undefined;
readonly name: string;
};
readonly " $fragmentType": "MembershipCardFragment";
};
export type MembershipCardFragment$key = {
@@ -27,15 +22,7 @@ export type MembershipCardFragment$key = {
readonly " $fragmentSpreads": FragmentRefs<"MembershipCardFragment">;
};
const node: ReaderFragment = (function(){
var v0 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
};
return {
const node: ReaderFragment = {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
@@ -49,7 +36,13 @@ return {
"name": "lastSession",
"plural": false,
"selections": [
(v0/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -59,43 +52,12 @@ return {
}
],
"storageKey": null
},
{
"kind": "RequiredField",
"field": {
"alias": null,
"args": null,
"concreteType": "Organization",
"kind": "LinkedField",
"name": "organization",
"plural": false,
"selections": [
(v0/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "logoUrl",
"storageKey": null
}
],
"storageKey": null
},
"action": "THROW"
}
],
"type": "Membership",
"abstractKey": null
};
})();
(node as any).hash = "5a2532aed755a94df49c2f9ce0929a1f";
(node as any).hash = "3da5f340850d352daaa553ca7b78aa37";
export default node;

View File

@@ -0,0 +1,58 @@
/**
* @generated SignedSource<<b3dda685c5f3688ead238ddd46d12dd3>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ReaderFragment } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type MembershipCard_organizationFragment$data = {
readonly id: string;
readonly logoUrl: string | null | undefined;
readonly name: string;
readonly " $fragmentType": "MembershipCard_organizationFragment";
};
export type MembershipCard_organizationFragment$key = {
readonly " $data"?: MembershipCard_organizationFragment$data;
readonly " $fragmentSpreads": FragmentRefs<"MembershipCard_organizationFragment">;
};
const node: ReaderFragment = {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "MembershipCard_organizationFragment",
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "logoUrl",
"storageKey": null
}
],
"type": "Organization",
"abstractKey": null
};
(node as any).hash = "a02d28730634e510e7e0803d5d1a366f";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<e907a3f8c0610d5deed37b1a47500377>>
* @generated SignedSource<<fe0de6febc77244c92f8d2413bbb0ca2>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -16,11 +16,6 @@ export type MembershipsDropdownMenuItemFragment$data = {
readonly expiresAt: string;
readonly id: string;
} | null | undefined;
readonly organization: {
readonly id: string;
readonly logoUrl: string | null | undefined;
readonly name: string;
};
readonly " $fragmentType": "MembershipsDropdownMenuItemFragment";
};
export type MembershipsDropdownMenuItemFragment$key = {
@@ -61,36 +56,6 @@ return {
}
],
"storageKey": null
},
{
"kind": "RequiredField",
"field": {
"alias": null,
"args": null,
"concreteType": "Organization",
"kind": "LinkedField",
"name": "organization",
"plural": false,
"selections": [
(v0/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "logoUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
}
],
"storageKey": null
},
"action": "THROW"
}
],
"type": "Membership",
@@ -98,6 +63,6 @@ return {
};
})();
(node as any).hash = "915a6fb0071b4890010401a56f3affa6";
(node as any).hash = "4f40e957597476f8e6179f6df68d386e";
export default node;

View File

@@ -0,0 +1,58 @@
/**
* @generated SignedSource<<a6754adeb9fc43ac3d85ed2e9c2c8aad>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ReaderFragment } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type MembershipsDropdownMenuItem_organizationFragment$data = {
readonly id: string;
readonly logoUrl: string | null | undefined;
readonly name: string;
readonly " $fragmentType": "MembershipsDropdownMenuItem_organizationFragment";
};
export type MembershipsDropdownMenuItem_organizationFragment$key = {
readonly " $data"?: MembershipsDropdownMenuItem_organizationFragment$data;
readonly " $fragmentSpreads": FragmentRefs<"MembershipsDropdownMenuItem_organizationFragment">;
};
const node: ReaderFragment = {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "MembershipsDropdownMenuItem_organizationFragment",
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "logoUrl",
"storageKey": null
}
],
"type": "Organization",
"abstractKey": null
};
(node as any).hash = "799a0d538f5d667112f4c9ba8c0d3623";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<e639ada9f797274b710cc71198ec4089>>
* @generated SignedSource<<d7b957d5b207e241e695d6592091dc2d>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -29,7 +29,7 @@ export type MembershipsPageQuery$data = {
readonly id: string;
readonly membership: {
readonly " $fragmentSpreads": FragmentRefs<"MembershipCardFragment">;
} | null | undefined;
};
readonly organization: {
readonly name: string;
readonly " $fragmentSpreads": FragmentRefs<"MembershipCard_organizationFragment">;
@@ -191,20 +191,24 @@ return {
"selections": [
(v1/*: any*/),
{
"alias": null,
"args": null,
"concreteType": "Membership",
"kind": "LinkedField",
"name": "membership",
"plural": false,
"selections": [
{
"args": null,
"kind": "FragmentSpread",
"name": "MembershipCardFragment"
}
],
"storageKey": null
"kind": "RequiredField",
"field": {
"alias": null,
"args": null,
"concreteType": "Membership",
"kind": "LinkedField",
"name": "membership",
"plural": false,
"selections": [
{
"args": null,
"kind": "FragmentSpread",
"name": "MembershipCardFragment"
}
],
"storageKey": null
},
"action": "THROW"
},
{
"kind": "RequiredField",
@@ -530,6 +534,6 @@ return {
};
})();
(node as any).hash = "05ac7c8fa236be3a01eeb28fc14ceb9d";
(node as any).hash = "84f5ab240bec94caf75e9ae163117e3d";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<ff8dc842880d57321b274bff2ee91007>>
* @generated SignedSource<<2d667e47f47ffe754960a9336fc4b8dc>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -12,7 +12,7 @@ import { ReaderFragment } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type PeopleListFragment$data = {
readonly id: string;
readonly members: {
readonly profiles: {
readonly __id: string;
readonly edges: ReadonlyArray<{
readonly node: {
@@ -33,7 +33,7 @@ import PeopleListFragment_RefetchQuery_graphql from './PeopleListFragment_Refetc
const node: ReaderFragment = (function(){
var v0 = [
"members"
"profiles"
],
v1 = {
"alias": null,
@@ -110,7 +110,7 @@ return {
{
"kind": "RequiredField",
"field": {
"alias": "members",
"alias": "profiles",
"args": [
{
"kind": "Variable",
@@ -118,9 +118,9 @@ return {
"variableName": "order"
}
],
"concreteType": "MembershipConnection",
"concreteType": "ProfileConnection",
"kind": "LinkedField",
"name": "__PeopleListFragment_members_connection",
"name": "__PeopleListFragment_profiles_connection",
"plural": false,
"selections": [
{
@@ -135,7 +135,7 @@ return {
"field": {
"alias": null,
"args": null,
"concreteType": "MembershipEdge",
"concreteType": "ProfileEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
@@ -143,7 +143,7 @@ return {
{
"alias": null,
"args": null,
"concreteType": "Membership",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "node",
"plural": false,
@@ -239,6 +239,6 @@ return {
};
})();
(node as any).hash = "c62c77bc2ef0e36b7eaf4553cc721e0c";
(node as any).hash = "ee3aeca404063a0660eeb9ff27592e86";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<6739397aaeb3d7890fd697ab4323736a>>
* @generated SignedSource<<b56389d57c3d4cb31dd873feaeff2bb3>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -18,19 +18,20 @@ export type PeopleListItemFragment$data = {
readonly canDelete: boolean;
readonly canUpdate: boolean;
readonly createdAt: string;
readonly fullName: string;
readonly id: string;
readonly identity: {
readonly email: string;
};
readonly profile: {
readonly fullName: string;
readonly kind: ProfileKind;
readonly membership: {
readonly canUpdate: boolean;
readonly id: string;
readonly kind: ProfileKind;
readonly position: string | null | undefined;
readonly role: MembershipRole;
readonly source: MembershipSource;
readonly state: MembershipState;
};
readonly role: MembershipRole;
readonly source: MembershipSource;
readonly state: MembershipState;
readonly position: string | null | undefined;
readonly " $fragmentType": "PeopleListItemFragment";
};
export type PeopleListItemFragment$key = {
@@ -57,21 +58,21 @@ return {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "role",
"name": "fullName",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "source",
"name": "kind",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"name": "position",
"storageKey": null
},
{
@@ -79,9 +80,9 @@ return {
"field": {
"alias": null,
"args": null,
"concreteType": "MembershipProfile",
"concreteType": "Membership",
"kind": "LinkedField",
"name": "profile",
"name": "membership",
"plural": false,
"selections": [
(v0/*: any*/),
@@ -89,22 +90,35 @@ return {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"name": "role",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "kind",
"name": "source",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "position",
"name": "state",
"storageKey": null
},
{
"alias": "canUpdate",
"args": [
{
"kind": "Literal",
"name": "action",
"value": "iam:membership:update"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"iam:membership:update\")"
}
],
"storageKey": null
@@ -146,12 +160,12 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "iam:membership:update"
"value": "iam:membership-profile:update"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"iam:membership:update\")"
"storageKey": "permission(action:\"iam:membership-profile:update\")"
},
{
"alias": "canDelete",
@@ -159,19 +173,19 @@ return {
{
"kind": "Literal",
"name": "action",
"value": "iam:membership:delete"
"value": "iam:membership-profile:delete"
}
],
"kind": "ScalarField",
"name": "permission",
"storageKey": "permission(action:\"iam:membership:delete\")"
"storageKey": "permission(action:\"iam:membership-profile:delete\")"
}
],
"type": "Membership",
"type": "Profile",
"abstractKey": null
};
})();
(node as any).hash = "cf1683d15b13975d8f739c3a7aa38d7e";
(node as any).hash = "5f45ee7c58d50b0a6569c3bd22ffc83f";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<f4e0f213a6bd3df7841650d2f57fd254>>
* @generated SignedSource<<53070e63046901877444d5de41cc8624>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -22,7 +22,7 @@ export type PeoplePageQuery$data = {
readonly totalCount: number | null | undefined;
};
readonly profiles: {
readonly totalCount: number;
readonly totalCount: number | null | undefined;
};
readonly " $fragmentSpreads": FragmentRefs<"InvitationListFragment" | "PeopleListFragment">;
} | {

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<1deba62d68487df7458534fef4bed9ff>>
* @generated SignedSource<<6ee89b2ab0c55ac9498bf9186e78ee90>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -96,10 +96,10 @@ const node: ReaderFragment = {
"storageKey": "permission(action:\"iam:membership-profile:update\")"
}
],
"type": "MembershipProfile",
"type": "Profile",
"abstractKey": null
};
(node as any).hash = "ba9398e81e237b983ce37f05436439ee";
(node as any).hash = "9ecc41c74271a3202bbde08b63c92b73";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<69f50c950d76ce3e882f94f29333caad>>
* @generated SignedSource<<6bc4cdb83f5825b5d606fe579fa8f7a8>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -13,16 +13,12 @@ import { FragmentRefs } from "relay-runtime";
export type SCIMEventListItemFragment$data = {
readonly createdAt: string;
readonly errorMessage: string | null | undefined;
readonly id: string;
readonly ipAddress: string;
readonly membership: {
readonly id: string;
readonly profile: {
readonly fullName: string;
} | null | undefined;
} | null | undefined;
readonly method: string;
readonly path: string;
readonly profile: {
readonly fullName: string;
} | null | undefined;
readonly statusCode: number;
readonly " $fragmentType": "SCIMEventListItemFragment";
};
@@ -31,21 +27,12 @@ export type SCIMEventListItemFragment$key = {
readonly " $fragmentSpreads": FragmentRefs<"SCIMEventListItemFragment">;
};
const node: ReaderFragment = (function(){
var v0 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
};
return {
const node: ReaderFragment = {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "SCIMEventListItemFragment",
"selections": [
(v0/*: any*/),
{
"alias": null,
"args": null,
@@ -91,28 +78,16 @@ return {
{
"alias": null,
"args": null,
"concreteType": "Membership",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "membership",
"name": "profile",
"plural": false,
"selections": [
(v0/*: any*/),
{
"alias": null,
"args": null,
"concreteType": "MembershipProfile",
"kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
}
],
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
}
],
@@ -122,8 +97,7 @@ return {
"type": "SCIMEvent",
"abstractKey": null
};
})();
(node as any).hash = "0c9c2bc445531d874b8bceae95f227b8";
(node as any).hash = "b38af9ac9b660d3aab75e00e2c55dfb6";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<a87fd05a4f80d2d7094647468d695967>>
* @generated SignedSource<<d0e62302bc1d00dffb0c61f56777472b>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -11,14 +11,12 @@
import { ReaderFragment } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type ViewerMembershipDropdownFragment$data = {
readonly viewerMembership: {
readonly viewer: {
readonly fullName: string;
readonly identity: {
readonly canListAPIKeys: boolean;
readonly email: string;
};
readonly profile: {
readonly fullName: string;
};
};
readonly " $fragmentType": "ViewerMembershipDropdownFragment";
};
@@ -38,11 +36,18 @@ const node: ReaderFragment = {
"field": {
"alias": null,
"args": null,
"concreteType": "Membership",
"concreteType": "Profile",
"kind": "LinkedField",
"name": "viewerMembership",
"name": "viewer",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
{
"kind": "RequiredField",
"field": {
@@ -77,28 +82,6 @@ const node: ReaderFragment = {
"storageKey": null
},
"action": "THROW"
},
{
"kind": "RequiredField",
"field": {
"alias": null,
"args": null,
"concreteType": "MembershipProfile",
"kind": "LinkedField",
"name": "profile",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
}
],
"storageKey": null
},
"action": "THROW"
}
],
"storageKey": null
@@ -110,6 +93,6 @@ const node: ReaderFragment = {
"abstractKey": null
};
(node as any).hash = "82c179a1ec2b90ce5f12c0959f97150f";
(node as any).hash = "fd5df361935e3e2bf4eaac1b2b4c5528";
export default node;