Move console to a relay multi project config

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-30 10:37:23 +01:00
committed by Bryan Frimin
parent c1df98cec1
commit 6b2864e160
572 changed files with 6400 additions and 4263 deletions

View File

@@ -15,9 +15,15 @@ import {
import { useTranslate } from "@probo/i18n";
import { useFragment } from "react-relay";
import { useMemo, useState, useCallback, useEffect, use } from "react";
import { sprintf, getAuditStateVariant, getAuditStateLabel, formatDate, getTrustCenterVisibilityOptions } from "@probo/helpers";
import {
sprintf,
getAuditStateVariant,
getAuditStateLabel,
formatDate,
getTrustCenterVisibilityOptions,
} from "@probo/helpers";
import { useOrganizationId } from "/hooks/useOrganizationId";
import type { TrustCenterAuditsCardFragment$key } from "./__generated__/TrustCenterAuditsCardFragment.graphql";
import type { TrustCenterAuditsCardFragment$key } from "/__generated__/core/TrustCenterAuditsCardFragment.graphql";
import { PermissionsContext } from "/providers/PermissionsContext";
const trustCenterAuditFragment = graphql`
@@ -59,7 +65,10 @@ export function TrustCenterAuditsCard<Params>(props: Props<Params>) {
}, [props.audits, limit]);
const showMoreButton = limit !== null && props.audits.length > limit;
const onChangeVisibility = (auditId: string, trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC") => {
const onChangeVisibility = (
auditId: string,
trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC",
) => {
props.onChangeVisibility({
variables: {
input: {
@@ -117,7 +126,10 @@ export function TrustCenterAuditsCard<Params>(props: Props<Params>) {
function AuditRow(props: {
auditFragmentRef: TrustCenterAuditsCardFragment$key;
onChangeVisibility: (auditId: string, trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC") => void;
onChangeVisibility: (
auditId: string,
trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC",
) => void;
disabled?: boolean;
}) {
const { auditFragmentRef, onChangeVisibility, disabled } = props;
@@ -126,14 +138,19 @@ function AuditRow(props: {
const { __ } = useTranslate();
const [optimisticValue, setOptimisticValue] = useState<string | null>(null);
const { isAuthorized } = use(PermissionsContext);
const canUpdate = organizationId ? isAuthorized("TrustCenter", "updateTrustCenter") : false;
const canUpdate = organizationId
? isAuthorized("TrustCenter", "updateTrustCenter")
: false;
const handleValueChange = useCallback((value: string) => {
const stringValue = typeof value === 'string' ? value : '';
const typedValue = stringValue as "NONE" | "PRIVATE" | "PUBLIC";
setOptimisticValue(typedValue);
onChangeVisibility(audit.id, typedValue);
}, [audit.id, onChangeVisibility]);
const handleValueChange = useCallback(
(value: string) => {
const stringValue = typeof value === "string" ? value : "";
const typedValue = stringValue as "NONE" | "PRIVATE" | "PUBLIC";
setOptimisticValue(typedValue);
onChangeVisibility(audit.id, typedValue);
},
[audit.id, onChangeVisibility],
);
useEffect(() => {
if (optimisticValue && audit.trustCenterVisibility === optimisticValue) {
@@ -152,9 +169,7 @@ function AuditRow(props: {
return (
<Tr to={`/organizations/${organizationId}/audits/${audit.id}`}>
<Td>
<div className="flex gap-4 items-center">
{audit.framework.name}
</div>
<div className="flex gap-4 items-center">{audit.framework.name}</div>
</Td>
<Td>{audit.name || __("Untitled")}</Td>
<Td>{validUntilFormatted}</Td>
@@ -174,9 +189,7 @@ function AuditRow(props: {
{visibilityOptions.map((option) => (
<Option key={option.value} value={option.value}>
<div className="flex items-center justify-between w-full">
<Badge variant={option.variant}>
{option.label}
</Badge>
<Badge variant={option.variant}>{option.label}</Badge>
</div>
</Option>
))}

View File

@@ -15,7 +15,7 @@ import {
Badge,
} from "@probo/ui";
import { useTranslate } from "@probo/i18n";
import type { TrustCenterDocumentsCardFragment$key } from "./__generated__/TrustCenterDocumentsCardFragment.graphql";
import type { TrustCenterDocumentsCardFragment$key } from "/__generated__/core/TrustCenterDocumentsCardFragment.graphql";
import { useFragment } from "react-relay";
import { useMemo, useState, useCallback, useEffect, use } from "react";
import { sprintf, getTrustCenterVisibilityOptions } from "@probo/helpers";
@@ -64,7 +64,10 @@ export function TrustCenterDocumentsCard<Params>(props: Props<Params>) {
}, [props.documents, limit]);
const showMoreButton = limit !== null && props.documents.length > limit;
const onChangeVisibility = (documentId: string, trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC") => {
const onChangeVisibility = (
documentId: string,
trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC",
) => {
props.onChangeVisibility({
variables: {
input: {
@@ -103,7 +106,6 @@ export function TrustCenterDocumentsCard<Params>(props: Props<Params>) {
disabled={props.disabled}
/>
))}
</Tbody>
</Table>
{showMoreButton && (
@@ -122,23 +124,32 @@ export function TrustCenterDocumentsCard<Params>(props: Props<Params>) {
function DocumentRow(props: {
documentFragmentRef: TrustCenterDocumentsCardFragment$key;
onChangeVisibility: (documentId: string, trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC") => void;
onChangeVisibility: (
documentId: string,
trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC",
) => void;
disabled?: boolean;
}) {
const { documentFragmentRef, onChangeVisibility, disabled } = props;
const document = useFragment(trustCenterDocumentFragment, documentFragmentRef);
const document = useFragment(
trustCenterDocumentFragment,
documentFragmentRef,
);
const organizationId = useOrganizationId();
const { __ } = useTranslate();
const [optimisticValue, setOptimisticValue] = useState<string | null>(null);
const { isAuthorized } = use(PermissionsContext);
const canUpdate = isAuthorized("TrustCenter", "updateTrustCenter");
const handleValueChange = useCallback((value: string) => {
const stringValue = typeof value === 'string' ? value : '';
const typedValue = stringValue as "NONE" | "PRIVATE" | "PUBLIC";
setOptimisticValue(typedValue);
onChangeVisibility(document.id, typedValue);
}, [document.id, onChangeVisibility]);
const handleValueChange = useCallback(
(value: string) => {
const stringValue = typeof value === "string" ? value : "";
const typedValue = stringValue as "NONE" | "PRIVATE" | "PUBLIC";
setOptimisticValue(typedValue);
onChangeVisibility(document.id, typedValue);
},
[document.id, onChangeVisibility],
);
useEffect(() => {
if (optimisticValue && document.trustCenterVisibility === optimisticValue) {
@@ -153,15 +164,15 @@ function DocumentRow(props: {
return (
<Tr to={`/organizations/${organizationId}/documents/${document.id}`}>
<Td>
<div className="flex gap-4 items-center">
{document.title}
</div>
<div className="flex gap-4 items-center">{document.title}</div>
</Td>
<Td>
<DocumentTypeBadge type={document.documentType} />
</Td>
<Td>
<DocumentVersionBadge state={document.versions?.edges?.[0]?.node?.status} />
<DocumentVersionBadge
state={document.versions?.edges?.[0]?.node?.status}
/>
</Td>
<Td noLink width={130} className="pr-0">
<Field
@@ -174,9 +185,7 @@ function DocumentRow(props: {
{visibilityOptions.map((option) => (
<Option key={option.value} value={option.value}>
<div className="flex items-center justify-between w-full">
<Badge variant={option.variant}>
{option.label}
</Badge>
<Badge variant={option.variant}>{option.label}</Badge>
</div>
</Option>
))}

View File

@@ -16,7 +16,10 @@ import {
IconArrowLink,
} from "@probo/ui";
import { useTranslate } from "@probo/i18n";
import type { TrustCenterFilesCardFragment$key, TrustCenterFilesCardFragment$data } from "./__generated__/TrustCenterFilesCardFragment.graphql";
import type {
TrustCenterFilesCardFragment$key,
TrustCenterFilesCardFragment$data,
} from "/__generated__/core/TrustCenterFilesCardFragment.graphql";
import { useFragment } from "react-relay";
import { useMemo, useState, useCallback, useEffect, use } from "react";
import { sprintf, getTrustCenterVisibilityOptions } from "@probo/helpers";
@@ -61,7 +64,10 @@ export function TrustCenterFilesCard<Params>(props: Props<Params>) {
}, [props.files, limit]);
const showMoreButton = limit !== null && props.files.length > limit;
const onChangeVisibility = (fileId: string, trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC") => {
const onChangeVisibility = (
fileId: string,
trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC",
) => {
props.onChangeVisibility({
variables: {
input: {
@@ -121,7 +127,10 @@ export function TrustCenterFilesCard<Params>(props: Props<Params>) {
function FileRowWrapper(props: {
fileFragmentRef: TrustCenterFilesCardFragment$key;
onChangeVisibility: (fileId: string, trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC") => void;
onChangeVisibility: (
fileId: string,
trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC",
) => void;
onEdit: (file: { id: string; name: string; category: string }) => void;
onDelete: (id: string) => void;
disabled?: boolean;
@@ -140,7 +149,10 @@ function FileRowWrapper(props: {
function FileRow(props: {
file: TrustCenterFilesCardFragment$data;
onChangeVisibility: (fileId: string, trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC") => void;
onChangeVisibility: (
fileId: string,
trustCenterVisibility: "NONE" | "PRIVATE" | "PUBLIC",
) => void;
onEdit: (file: { id: string; name: string; category: string }) => void;
onDelete: (id: string) => void;
disabled?: boolean;
@@ -151,12 +163,15 @@ function FileRow(props: {
const { isAuthorized } = use(PermissionsContext);
const canUpdate = isAuthorized("TrustCenter", "updateTrustCenter");
const handleValueChange = useCallback((value: string) => {
const stringValue = typeof value === 'string' ? value : '';
const typedValue = stringValue as "NONE" | "PRIVATE" | "PUBLIC";
setOptimisticValue(typedValue);
onChangeVisibility(file.id, typedValue);
}, [file.id, onChangeVisibility]);
const handleValueChange = useCallback(
(value: string) => {
const stringValue = typeof value === "string" ? value : "";
const typedValue = stringValue as "NONE" | "PRIVATE" | "PUBLIC";
setOptimisticValue(typedValue);
onChangeVisibility(file.id, typedValue);
},
[file.id, onChangeVisibility],
);
useEffect(() => {
if (optimisticValue && file.trustCenterVisibility === optimisticValue) {
@@ -171,9 +186,7 @@ function FileRow(props: {
return (
<Tr>
<Td>
<div className="flex gap-4 items-center">
{file.name}
</div>
<div className="flex gap-4 items-center">{file.name}</div>
</Td>
<Td>{file.category}</Td>
<Td>{formatDate(file.createdAt)}</Td>
@@ -188,9 +201,7 @@ function FileRow(props: {
{visibilityOptions.map((option) => (
<Option key={option.value} value={option.value}>
<div className="flex items-center justify-between w-full">
<Badge variant={option.variant}>
{option.label}
</Badge>
<Badge variant={option.variant}>{option.label}</Badge>
</div>
</Option>
))}
@@ -201,14 +212,22 @@ function FileRow(props: {
<Button
variant="secondary"
icon={IconArrowLink}
onClick={() => window.open(file.fileUrl, '_blank', 'noopener,noreferrer')}
onClick={() =>
window.open(file.fileUrl, "_blank", "noopener,noreferrer")
}
title={__("Download")}
/>
{isAuthorized("TrustCenterFile", "updateTrustCenterFile") && (
<Button
variant="secondary"
icon={IconPencil}
onClick={() => onEdit({ id: file.id, name: file.name, category: file.category })}
onClick={() =>
onEdit({
id: file.id,
name: file.name,
category: file.category,
})
}
disabled={disabled}
title={__("Edit")}
/>

View File

@@ -17,7 +17,7 @@ import { useFragment } from "react-relay";
import { useMemo, useState, use } from "react";
import { sprintf } from "@probo/helpers";
import { useOrganizationId } from "/hooks/useOrganizationId";
import type { TrustCenterVendorsCardFragment$key } from "./__generated__/TrustCenterVendorsCardFragment.graphql";
import type { TrustCenterVendorsCardFragment$key } from "/__generated__/core/TrustCenterVendorsCardFragment.graphql";
import { PermissionsContext } from "/providers/PermissionsContext";
const trustCenterVendorFragment = graphql`
@@ -83,7 +83,10 @@ export function TrustCenterVendorsCard<Params>(props: Props<Params>) {
<Tbody>
{vendors.length === 0 && (
<Tr>
<Td colSpan={canUpdate ? 4 : 3} className="text-center text-txt-secondary">
<Td
colSpan={canUpdate ? 4 : 3}
className="text-center text-txt-secondary"
>
{__("No vendors available")}
</Td>
</Tr>
@@ -126,14 +129,10 @@ function VendorRow(props: {
return (
<Tr to={`/organizations/${organizationId}/vendors/${vendor.id}/overview`}>
<Td>
<div className="flex gap-4 items-center">
{vendor.name}
</div>
<div className="flex gap-4 items-center">{vendor.name}</div>
</Td>
<Td>
<Badge variant="neutral">
{vendor.category}
</Badge>
<Badge variant="neutral">{vendor.category}</Badge>
</Td>
<Td>
<Badge variant={vendor.showOnTrustCenter ? "success" : "danger"}>
@@ -144,7 +143,9 @@ function VendorRow(props: {
<Td noLink width={100} className="text-end">
<Button
variant="secondary"
onClick={() => props.onToggleVisibility(vendor.id, !vendor.showOnTrustCenter)}
onClick={() =>
props.onToggleVisibility(vendor.id, !vendor.showOnTrustCenter)
}
icon={vendor.showOnTrustCenter ? IconCrossLargeX : IconCheckmark1}
disabled={props.disabled}
>

View File

@@ -1,110 +0,0 @@
/**
* @generated SignedSource<<155c0b8eda88507e66eb65e060ded192>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ReaderFragment } from 'relay-runtime';
export type AuditState = "COMPLETED" | "IN_PROGRESS" | "NOT_STARTED" | "OUTDATED" | "REJECTED";
export type TrustCenterVisibility = "NONE" | "PRIVATE" | "PUBLIC";
import { FragmentRefs } from "relay-runtime";
export type TrustCenterAuditsCardFragment$data = {
readonly createdAt: any;
readonly framework: {
readonly name: string;
};
readonly id: string;
readonly name: string | null | undefined;
readonly state: AuditState;
readonly trustCenterVisibility: TrustCenterVisibility;
readonly validFrom: any | null | undefined;
readonly validUntil: any | null | undefined;
readonly " $fragmentType": "TrustCenterAuditsCardFragment";
};
export type TrustCenterAuditsCardFragment$key = {
readonly " $data"?: TrustCenterAuditsCardFragment$data;
readonly " $fragmentSpreads": FragmentRefs<"TrustCenterAuditsCardFragment">;
};
const node: ReaderFragment = (function(){
var v0 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
};
return {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "TrustCenterAuditsCardFragment",
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
(v0/*: any*/),
{
"alias": null,
"args": null,
"concreteType": "Framework",
"kind": "LinkedField",
"name": "framework",
"plural": false,
"selections": [
(v0/*: any*/)
],
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "validFrom",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "validUntil",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "state",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "trustCenterVisibility",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
}
],
"type": "Audit",
"abstractKey": null
};
})();
(node as any).hash = "c0f615fcad79ad39f60b48daacabdbbd";
export default node;

View File

@@ -1,135 +0,0 @@
/**
* @generated SignedSource<<40e45041dd8b72c58f1059d9cad3c15c>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ReaderFragment } from 'relay-runtime';
export type DocumentStatus = "DRAFT" | "PUBLISHED";
export type DocumentType = "ISMS" | "OTHER" | "POLICY" | "PROCEDURE";
export type TrustCenterVisibility = "NONE" | "PRIVATE" | "PUBLIC";
import { FragmentRefs } from "relay-runtime";
export type TrustCenterDocumentsCardFragment$data = {
readonly createdAt: any;
readonly documentType: DocumentType;
readonly id: string;
readonly title: string;
readonly trustCenterVisibility: TrustCenterVisibility;
readonly versions: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly id: string;
readonly status: DocumentStatus;
};
}>;
};
readonly " $fragmentType": "TrustCenterDocumentsCardFragment";
};
export type TrustCenterDocumentsCardFragment$key = {
readonly " $data"?: TrustCenterDocumentsCardFragment$data;
readonly " $fragmentSpreads": FragmentRefs<"TrustCenterDocumentsCardFragment">;
};
const node: ReaderFragment = (function(){
var v0 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
};
return {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "TrustCenterDocumentsCardFragment",
"selections": [
(v0/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "title",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "documentType",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "trustCenterVisibility",
"storageKey": null
},
{
"alias": null,
"args": [
{
"kind": "Literal",
"name": "first",
"value": 1
}
],
"concreteType": "DocumentVersionConnection",
"kind": "LinkedField",
"name": "versions",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "DocumentVersionEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "DocumentVersion",
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v0/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "status",
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": "versions(first:1)"
}
],
"type": "Document",
"abstractKey": null
};
})();
(node as any).hash = "a90715444be8a289eae6615ce44e244d";
export default node;

View File

@@ -1,91 +0,0 @@
/**
* @generated SignedSource<<0defaaf1ce3544420e8fbd9c9f3af139>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ReaderFragment } from 'relay-runtime';
export type TrustCenterVisibility = "NONE" | "PRIVATE" | "PUBLIC";
import { FragmentRefs } from "relay-runtime";
export type TrustCenterFilesCardFragment$data = {
readonly category: string;
readonly createdAt: any;
readonly fileUrl: string;
readonly id: string;
readonly name: string;
readonly trustCenterVisibility: TrustCenterVisibility;
readonly updatedAt: any;
readonly " $fragmentType": "TrustCenterFilesCardFragment";
};
export type TrustCenterFilesCardFragment$key = {
readonly " $data"?: TrustCenterFilesCardFragment$data;
readonly " $fragmentSpreads": FragmentRefs<"TrustCenterFilesCardFragment">;
};
const node: ReaderFragment = {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "TrustCenterFilesCardFragment",
"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": "category",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fileUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "trustCenterVisibility",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "updatedAt",
"storageKey": null
}
],
"type": "TrustCenterFile",
"abstractKey": null
};
(node as any).hash = "33cb01782ca37fc776cd8e5dfde20f76";
export default node;

View File

@@ -1,83 +0,0 @@
/**
* @generated SignedSource<<b3d65d827fc901aa002b24df72f79ee2>>
* @lightSyntaxTransform
* @nogrep
*/
/* tslint:disable */
/* eslint-disable */
// @ts-nocheck
import { ReaderFragment } from 'relay-runtime';
export type VendorCategory = "ANALYTICS" | "CLOUD_MONITORING" | "CLOUD_PROVIDER" | "COLLABORATION" | "CUSTOMER_SUPPORT" | "DATA_STORAGE_AND_PROCESSING" | "DOCUMENT_MANAGEMENT" | "EMPLOYEE_MANAGEMENT" | "ENGINEERING" | "FINANCE" | "IDENTITY_PROVIDER" | "IT" | "MARKETING" | "OFFICE_OPERATIONS" | "OTHER" | "PASSWORD_MANAGEMENT" | "PRODUCT_AND_DESIGN" | "PROFESSIONAL_SERVICES" | "RECRUITING" | "SALES" | "SECURITY" | "VERSION_CONTROL";
import { FragmentRefs } from "relay-runtime";
export type TrustCenterVendorsCardFragment$data = {
readonly category: VendorCategory;
readonly createdAt: any;
readonly description: string | null | undefined;
readonly id: string;
readonly name: string;
readonly showOnTrustCenter: boolean;
readonly " $fragmentType": "TrustCenterVendorsCardFragment";
};
export type TrustCenterVendorsCardFragment$key = {
readonly " $data"?: TrustCenterVendorsCardFragment$data;
readonly " $fragmentSpreads": FragmentRefs<"TrustCenterVendorsCardFragment">;
};
const node: ReaderFragment = {
"argumentDefinitions": [],
"kind": "Fragment",
"metadata": null,
"name": "TrustCenterVendorsCardFragment",
"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": "category",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "description",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "showOnTrustCenter",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
}
],
"type": "Vendor",
"abstractKey": null
};
(node as any).hash = "72b637589fd9299b5e982450fccbfd12";
export default node;