chore: move common workspace plan/feature config to @speckle/shared (#4064)
fix: gqlgen regenerated
This commit is contained in:
committed by
GitHub
parent
735a14279e
commit
ec092fb042
@@ -44,6 +44,9 @@ workflows:
|
||||
- test-objectsender:
|
||||
filters: *filters-allow-all
|
||||
|
||||
- test-shared:
|
||||
filters: *filters-allow-all
|
||||
|
||||
- test-preview-service:
|
||||
filters: *filters-allow-all
|
||||
|
||||
@@ -184,6 +187,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -200,6 +204,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -224,6 +229,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -240,6 +246,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -256,6 +263,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -272,6 +280,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -294,6 +303,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -310,6 +320,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-server
|
||||
- test-server-no-ff
|
||||
- test-server-multiregion
|
||||
@@ -357,6 +368,7 @@ workflows:
|
||||
- test-frontend-2
|
||||
- test-viewer
|
||||
- test-objectsender
|
||||
- test-shared
|
||||
- test-preview-service
|
||||
|
||||
- publish-viewer-sandbox-cloudflare-pages:
|
||||
@@ -727,6 +739,36 @@ jobs:
|
||||
command: yarn test
|
||||
working_directory: 'packages/preview-service'
|
||||
|
||||
test-shared:
|
||||
docker: *docker-node-browsers-image
|
||||
resource_class: medium+
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
name: Restore Yarn Package Cache
|
||||
keys:
|
||||
- yarn-packages-server-{{ checksum "yarn.lock" }}
|
||||
- run:
|
||||
name: Install Dependencies
|
||||
command: yarn
|
||||
|
||||
- save_cache:
|
||||
name: Save Yarn Package Cache
|
||||
key: yarn-packages-server-{{ checksum "yarn.lock" }}
|
||||
paths:
|
||||
- .yarn/cache
|
||||
- .yarn/unplugged
|
||||
|
||||
- run:
|
||||
name: Lint
|
||||
command: yarn lint:ci
|
||||
working_directory: 'packages/shared'
|
||||
|
||||
- run:
|
||||
name: Run tests
|
||||
command: yarn test:single-run
|
||||
working_directory: 'packages/shared'
|
||||
|
||||
test-objectsender:
|
||||
docker: *docker-node-browsers-image
|
||||
resource_class: large
|
||||
|
||||
+3
-1
@@ -63,6 +63,7 @@
|
||||
"prettier": "^2.5.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"tsconfig-paths": "^4.0.0",
|
||||
"vitest": "^3.0.7",
|
||||
"zx": "^8.1.2"
|
||||
},
|
||||
"resolutions": {
|
||||
@@ -91,7 +92,8 @@
|
||||
"typescript": "^5.7.3",
|
||||
"typescript-eslint": "^8.20.0",
|
||||
"wait-on": ">=7.2.0",
|
||||
"vue-tsc@npm:2.2.2/@vue/language-core": "2.2.0"
|
||||
"vue-tsc@npm:2.2.2/@vue/language-core": "2.2.0",
|
||||
"vitest": "^3.0.7"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
|
||||
@@ -23,6 +23,7 @@ const config: CodegenConfig = {
|
||||
'./lib/common/generated/gql/': {
|
||||
preset: 'client',
|
||||
config: {
|
||||
enumsAsConst: true,
|
||||
useTypeImports: true,
|
||||
fragmentMasking: false,
|
||||
dedupeFragments: true,
|
||||
|
||||
@@ -22,13 +22,7 @@
|
||||
<div class="flex flex-col sm:flex-row gap-2 sm:items-center truncate">
|
||||
<div class="sm:truncate">
|
||||
<div
|
||||
v-if="
|
||||
[
|
||||
AutomateRunStatus.Initializing,
|
||||
AutomateRunStatus.Running,
|
||||
AutomateRunStatus.Pending
|
||||
].includes(functionRun.status)
|
||||
"
|
||||
v-if="isStartingOrRunning"
|
||||
class="text-body-2xs text-foreground-2 italic whitespace-normal sm:truncate"
|
||||
>
|
||||
Function is {{ functionRun.status.toLowerCase() }}.
|
||||
@@ -141,4 +135,14 @@ const results = useAutomationFunctionRunResults({
|
||||
const showAttachmentDialog = ref(false)
|
||||
|
||||
const attachments = computed(() => results.value?.values.blobIds || [])
|
||||
|
||||
const isStartingOrRunning = computed(() =>
|
||||
(
|
||||
[
|
||||
AutomateRunStatus.Initializing,
|
||||
AutomateRunStatus.Running,
|
||||
AutomateRunStatus.Pending
|
||||
] as string[]
|
||||
).includes(props.functionRun.status)
|
||||
)
|
||||
</script>
|
||||
|
||||
@@ -156,11 +156,13 @@ const hasValidContextView = computed(() => {
|
||||
})
|
||||
|
||||
const statusMessage = computed(() => {
|
||||
const isFinished = ![
|
||||
AutomateRunStatus.Initializing,
|
||||
AutomateRunStatus.Running,
|
||||
AutomateRunStatus.Pending
|
||||
].includes(props.functionRun.status)
|
||||
const isFinished = !(
|
||||
[
|
||||
AutomateRunStatus.Initializing,
|
||||
AutomateRunStatus.Running,
|
||||
AutomateRunStatus.Pending
|
||||
] as string[]
|
||||
).includes(props.functionRun.status)
|
||||
|
||||
return isFinished
|
||||
? props.functionRun.statusMessage ?? 'No status message'
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<div class="flex items-center gap-x-2">
|
||||
<h4 class="text-body font-medium">
|
||||
Workspace
|
||||
<span class="capitalize">{{ plan.name }}</span>
|
||||
<span class="capitalize">{{ plan }}</span>
|
||||
</h4>
|
||||
<CommonBadge v-if="badgeText" rounded>
|
||||
{{ badgeText }}
|
||||
@@ -15,8 +15,8 @@
|
||||
<span class="font-medium">
|
||||
£{{
|
||||
yearlyIntervalSelected
|
||||
? plan.cost.yearly[Roles.Workspace.Member]
|
||||
: plan.cost.monthly[Roles.Workspace.Member]
|
||||
? planPrices.yearly[Roles.Workspace.Member]
|
||||
: planPrices.monthly[Roles.Workspace.Member]
|
||||
}}
|
||||
</span>
|
||||
per seat/month
|
||||
@@ -40,7 +40,7 @@
|
||||
<div v-else>
|
||||
<!-- Key to fix tippy reactivity -->
|
||||
<div
|
||||
:key="`tooltip-${yearlyIntervalSelected}-${plan.name}-${currentPlan?.name}`"
|
||||
:key="`tooltip-${yearlyIntervalSelected}-${plan}-${currentPlan?.name}`"
|
||||
v-tippy="buttonTooltip"
|
||||
>
|
||||
<FormButton
|
||||
@@ -56,32 +56,35 @@
|
||||
</div>
|
||||
<ul class="flex flex-col gap-y-2 mt-4 pt-3 border-t border-outline-3">
|
||||
<li
|
||||
v-for="feature in features"
|
||||
:key="feature.name"
|
||||
v-for="(featureMetadata, feature) in WorkspacePlanFeaturesMetadata"
|
||||
:key="feature"
|
||||
class="flex items-center text-body-xs"
|
||||
:class="{
|
||||
'lg:hidden': !plan.features.includes(feature.name as PlanFeaturesList)
|
||||
}"
|
||||
'lg:hidden': !planFeatures.includes(feature)
|
||||
}"
|
||||
>
|
||||
<IconCheck
|
||||
v-if="plan.features.includes(feature.name as PlanFeaturesList)"
|
||||
v-if="planFeatures.includes(feature)"
|
||||
class="w-4 h-4 text-foreground mx-2"
|
||||
/>
|
||||
<XMarkIcon v-else class="w-4 h-4 mx-2 text-foreground-3" />
|
||||
<span
|
||||
v-tippy="
|
||||
feature.description(
|
||||
yearlyIntervalSelected
|
||||
? plan.cost.yearly[Roles.Workspace.Guest]
|
||||
: plan.cost.monthly[Roles.Workspace.Guest]
|
||||
)
|
||||
isFunction(featureMetadata.description)
|
||||
? featureMetadata.description({
|
||||
price: (yearlyIntervalSelected
|
||||
? planPrices.yearly[Roles.Workspace.Guest]
|
||||
: planPrices.monthly[Roles.Workspace.Guest]
|
||||
).toString()
|
||||
})
|
||||
: featureMetadata.description
|
||||
"
|
||||
class="underline decoration-outline-5 decoration-dashed underline-offset-4 cursor-help"
|
||||
:class="{
|
||||
'text-foreground-2': !plan.features.includes(feature.name as PlanFeaturesList)
|
||||
'text-foreground-2': !planFeatures.includes(feature)
|
||||
}"
|
||||
>
|
||||
{{ feature.name }}
|
||||
{{ featureMetadata.displayName }}
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -89,7 +92,7 @@
|
||||
<SettingsWorkspacesBillingUpgradeDialog
|
||||
v-if="currentPlan?.name && workspaceId"
|
||||
v-model:open="isUpgradeDialogOpen"
|
||||
:plan="plan.name"
|
||||
:plan="plan"
|
||||
:billing-interval="
|
||||
yearlyIntervalSelected ? BillingInterval.Yearly : BillingInterval.Monthly
|
||||
"
|
||||
@@ -99,28 +102,30 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { PricingPlan } from '@/lib/billing/helpers/types'
|
||||
import { Roles } from '@speckle/shared'
|
||||
import {
|
||||
type PaidWorkspacePlansOld,
|
||||
type MaybeNullOrUndefined,
|
||||
WorkspacePlans,
|
||||
WorkspacePlanFeaturesMetadata
|
||||
} from '@speckle/shared'
|
||||
import { Roles, WorkspacePlanConfigs } from '@speckle/shared'
|
||||
import {
|
||||
type WorkspacePlan,
|
||||
WorkspacePlanStatuses,
|
||||
WorkspacePlans,
|
||||
BillingInterval
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import type { MaybeNullOrUndefined } from '@speckle/shared'
|
||||
import { startCase } from 'lodash'
|
||||
import { pricingPlansConfig } from '~/lib/billing/helpers/constants'
|
||||
import type { PlanFeaturesList } from '~/lib/billing/helpers/types'
|
||||
import { startCase, isFunction } from 'lodash'
|
||||
import { XMarkIcon } from '@heroicons/vue/24/outline'
|
||||
import type { SetupContext } from 'vue'
|
||||
import { WorkspaceOldPaidPlanPrices } from '~/lib/billing/helpers/constants'
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'onYearlyIntervalSelected', value: boolean): void
|
||||
(e: 'onPlanSelected', value: WorkspacePlans): void
|
||||
(e: 'onPlanSelected', value: PaidWorkspacePlansOld): void
|
||||
}>()
|
||||
|
||||
const props = defineProps<{
|
||||
plan: PricingPlan
|
||||
plan: PaidWorkspacePlansOld
|
||||
yearlyIntervalSelected: boolean
|
||||
badgeText?: string
|
||||
// The following props are optional if the table is for informational purposes
|
||||
@@ -132,10 +137,12 @@ const props = defineProps<{
|
||||
|
||||
const slots: SetupContext['slots'] = useSlots()
|
||||
|
||||
const features = ref(pricingPlansConfig.features)
|
||||
const isUpgradeDialogOpen = ref(false)
|
||||
const isYearlyIntervalSelected = ref(props.yearlyIntervalSelected)
|
||||
|
||||
const planPrices = computed(() => WorkspaceOldPaidPlanPrices[props.plan])
|
||||
const planFeatures = computed(() => WorkspacePlanConfigs[props.plan].features)
|
||||
|
||||
const hasCta = computed(() => !!slots.cta)
|
||||
const canUpgradeToPlan = computed(() => {
|
||||
if (!props.currentPlan) return false
|
||||
@@ -149,10 +156,13 @@ const canUpgradeToPlan = computed(() => {
|
||||
[WorkspacePlans.StarterInvoiced]: [],
|
||||
[WorkspacePlans.PlusInvoiced]: [],
|
||||
[WorkspacePlans.BusinessInvoiced]: [],
|
||||
[WorkspacePlans.Free]: []
|
||||
// New
|
||||
[WorkspacePlans.Free]: [],
|
||||
[WorkspacePlans.Team]: [],
|
||||
[WorkspacePlans.Pro]: []
|
||||
}
|
||||
|
||||
return allowedUpgrades[props.currentPlan.name].includes(props.plan.name)
|
||||
return allowedUpgrades[props.currentPlan.name].includes(props.plan)
|
||||
})
|
||||
|
||||
const statusIsTrial = computed(
|
||||
@@ -166,17 +176,17 @@ const isMatchingInterval = computed(
|
||||
)
|
||||
|
||||
const isDowngrade = computed(() => {
|
||||
return !canUpgradeToPlan.value && props.currentPlan?.name !== props.plan.name
|
||||
return !canUpgradeToPlan.value && props.currentPlan?.name !== props.plan
|
||||
})
|
||||
|
||||
const isCurrentPlan = computed(
|
||||
() => isMatchingInterval.value && props.currentPlan?.name === props.plan.name
|
||||
() => isMatchingInterval.value && props.currentPlan?.name === props.plan
|
||||
)
|
||||
|
||||
const isAnnualToMonthly = computed(() => {
|
||||
return (
|
||||
!isMatchingInterval.value &&
|
||||
props.currentPlan?.name === props.plan.name &&
|
||||
props.currentPlan?.name === props.plan &&
|
||||
!props.yearlyIntervalSelected
|
||||
)
|
||||
})
|
||||
@@ -184,7 +194,7 @@ const isAnnualToMonthly = computed(() => {
|
||||
const isMonthlyToAnnual = computed(() => {
|
||||
return (
|
||||
!isMatchingInterval.value &&
|
||||
props.currentPlan?.name === props.plan.name &&
|
||||
props.currentPlan?.name === props.plan &&
|
||||
props.yearlyIntervalSelected
|
||||
)
|
||||
})
|
||||
@@ -200,8 +210,7 @@ const isSelectable = computed(() => {
|
||||
return true
|
||||
|
||||
// Allow selection if switching from monthly to yearly for the same plan
|
||||
if (isMonthlyToAnnual.value && props.currentPlan?.name === props.plan.name)
|
||||
return true
|
||||
if (isMonthlyToAnnual.value && props.currentPlan?.name === props.plan) return true
|
||||
|
||||
// Disable if current plan and intervals match
|
||||
if (isCurrentPlan.value) return false
|
||||
@@ -227,7 +236,7 @@ const buttonColor = computed(() => {
|
||||
statusIsTrial.value ||
|
||||
props.currentPlan?.status === WorkspacePlanStatuses.Expired
|
||||
) {
|
||||
return props.plan.name === WorkspacePlans.Starter ? 'primary' : 'outline'
|
||||
return props.plan === WorkspacePlans.Starter ? 'primary' : 'outline'
|
||||
}
|
||||
return 'outline'
|
||||
})
|
||||
@@ -239,7 +248,7 @@ const buttonText = computed(() => {
|
||||
props.currentPlan?.status === WorkspacePlanStatuses.Expired ||
|
||||
props.currentPlan?.status === WorkspacePlanStatuses.Canceled
|
||||
) {
|
||||
return `Subscribe to ${startCase(props.plan.name)}`
|
||||
return `Subscribe to ${startCase(props.plan)}`
|
||||
}
|
||||
// Current plan case
|
||||
if (isCurrentPlan.value) {
|
||||
@@ -247,7 +256,7 @@ const buttonText = computed(() => {
|
||||
}
|
||||
// Billing interval and lower plan case
|
||||
if (isDowngrade.value) {
|
||||
return `Downgrade to ${props.plan.name}`
|
||||
return `Downgrade to ${props.plan}`
|
||||
}
|
||||
// Billing interval change and current plan
|
||||
if (isAnnualToMonthly.value) {
|
||||
@@ -257,7 +266,7 @@ const buttonText = computed(() => {
|
||||
return 'Change to annual plan'
|
||||
}
|
||||
// Upgrade case
|
||||
return canUpgradeToPlan.value ? `Upgrade to ${startCase(props.plan.name)}` : ''
|
||||
return canUpgradeToPlan.value ? `Upgrade to ${startCase(props.plan)}` : ''
|
||||
})
|
||||
|
||||
const buttonTooltip = computed(() => {
|
||||
@@ -293,7 +302,7 @@ const buttonTooltip = computed(() => {
|
||||
})
|
||||
|
||||
const onCtaClick = () => {
|
||||
emit('onPlanSelected', props.plan.name)
|
||||
emit('onPlanSelected', props.plan)
|
||||
}
|
||||
|
||||
watch(
|
||||
|
||||
+10
-12
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div class="flex flex-col lg:grid lg:grid-cols-3 gap-4 w-full">
|
||||
<SettingsWorkspacesBillingPricingTablePlan
|
||||
v-for="plan in plans"
|
||||
:key="plan.name"
|
||||
v-for="plan in oldPlans"
|
||||
:key="plan"
|
||||
:plan="plan"
|
||||
:yearly-interval-selected="isYearlySelected"
|
||||
v-bind="$props"
|
||||
@@ -13,16 +13,14 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {
|
||||
type WorkspacePlan,
|
||||
BillingInterval,
|
||||
type WorkspacePlans
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import { pricingPlansConfig } from '~/lib/billing/helpers/constants'
|
||||
import type { MaybeNullOrUndefined } from '@speckle/shared'
|
||||
import { type WorkspacePlan, BillingInterval } from '~/lib/common/generated/gql/graphql'
|
||||
import { type MaybeNullOrUndefined, PaidWorkspacePlansOld } from '@speckle/shared'
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'onPlanSelected', value: { name: WorkspacePlans; cycle: BillingInterval }): void
|
||||
(
|
||||
e: 'onPlanSelected',
|
||||
value: { name: PaidWorkspacePlansOld; cycle: BillingInterval }
|
||||
): void
|
||||
}>()
|
||||
|
||||
const props = defineProps<{
|
||||
@@ -32,14 +30,14 @@ const props = defineProps<{
|
||||
activeBillingInterval?: BillingInterval
|
||||
}>()
|
||||
|
||||
const plans = ref(pricingPlansConfig.plans)
|
||||
const isYearlySelected = ref(false)
|
||||
const oldPlans = computed(() => Object.values(PaidWorkspacePlansOld))
|
||||
|
||||
const onYearlyIntervalSelected = (newValue: boolean) => {
|
||||
isYearlySelected.value = newValue
|
||||
}
|
||||
|
||||
const onPlanSelected = (value: WorkspacePlans) => {
|
||||
const onPlanSelected = (value: PaidWorkspacePlansOld) => {
|
||||
emit('onPlanSelected', {
|
||||
name: value,
|
||||
cycle: isYearlySelected.value ? BillingInterval.Yearly : BillingInterval.Monthly
|
||||
|
||||
@@ -22,18 +22,18 @@
|
||||
<script setup lang="ts">
|
||||
import type { LayoutDialogButton } from '@speckle/ui-components'
|
||||
import {
|
||||
type WorkspacePlans,
|
||||
BillingInterval,
|
||||
type PaidWorkspacePlans
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import { useBillingActions } from '~/lib/billing/composables/actions'
|
||||
import { startCase } from 'lodash'
|
||||
import { pricingPlansConfig } from '~/lib/billing/helpers/constants'
|
||||
import type { PaidWorkspacePlansOld } from '@speckle/shared'
|
||||
import { Roles } from '@speckle/shared'
|
||||
import { isPaidPlan } from '~/lib/billing/helpers/types'
|
||||
import { WorkspaceOldPaidPlanPrices } from '~/lib/billing/helpers/constants'
|
||||
|
||||
const props = defineProps<{
|
||||
plan: WorkspacePlans
|
||||
plan: PaidWorkspacePlansOld
|
||||
billingInterval: BillingInterval
|
||||
workspaceId: string
|
||||
}>()
|
||||
@@ -43,9 +43,8 @@ const { upgradePlan } = useBillingActions()
|
||||
|
||||
const seatPrice = computed(() => {
|
||||
if (isPaidPlan(props.plan)) {
|
||||
const planConfig =
|
||||
pricingPlansConfig.plans[props.plan as unknown as PaidWorkspacePlans]
|
||||
return planConfig.cost[props.billingInterval][Roles.Workspace.Member]
|
||||
const prices = WorkspaceOldPaidPlanPrices[props.plan]
|
||||
return prices[props.billingInterval][Roles.Workspace.Member]
|
||||
}
|
||||
|
||||
return 0
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
<div class="flex flex-col max-w-5xl w-full items-center">
|
||||
<div class="grid lg:grid-cols-3 gap-y-2 gap-x-2 w-full">
|
||||
<SettingsWorkspacesBillingPricingTablePlan
|
||||
v-for="plan in plans"
|
||||
:key="plan.name"
|
||||
v-for="plan in oldPlans"
|
||||
:key="plan"
|
||||
:plan="plan"
|
||||
:yearly-interval-selected="isYearlySelected"
|
||||
:badge-text="
|
||||
plan.name === WorkspacePlans.Starter && !isYearlySelected
|
||||
plan === WorkspacePlans.Starter && !isYearlySelected
|
||||
? '30-day free trial'
|
||||
: undefined
|
||||
"
|
||||
@@ -16,14 +16,14 @@
|
||||
>
|
||||
<template #cta>
|
||||
<FormButton
|
||||
:color="plan.name === WorkspacePlans.Starter ? 'primary' : 'outline'"
|
||||
:color="plan === WorkspacePlans.Starter ? 'primary' : 'outline'"
|
||||
full-width
|
||||
@click="onCtaClick(plan.name)"
|
||||
@click="onCtaClick(plan)"
|
||||
>
|
||||
{{
|
||||
plan.name === WorkspacePlans.Starter && !isYearlySelected
|
||||
plan === WorkspacePlans.Starter && !isYearlySelected
|
||||
? 'Start 30-day free trial'
|
||||
: `Subscribe to ${startCase(plan.name)}`
|
||||
: `Subscribe to ${startCase(plan)}`
|
||||
}}
|
||||
</FormButton>
|
||||
</template>
|
||||
@@ -45,16 +45,17 @@ import {
|
||||
WorkspacePlans
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import { useWorkspacesWizard } from '~/lib/workspaces/composables/wizard'
|
||||
import { pricingPlansConfig } from '~/lib/billing/helpers/constants'
|
||||
import { useMixpanel } from '~/lib/core/composables/mp'
|
||||
import { startCase } from 'lodash'
|
||||
import { PaidWorkspacePlansOld } from '@speckle/shared'
|
||||
|
||||
const { goToNextStep, goToPreviousStep, state } = useWorkspacesWizard()
|
||||
const mixpanel = useMixpanel()
|
||||
|
||||
const plans = ref(pricingPlansConfig.plans)
|
||||
const isYearlySelected = ref(false)
|
||||
|
||||
const oldPlans = computed(() => Object.values(PaidWorkspacePlansOld))
|
||||
|
||||
const onCtaClick = (plan: WorkspacePlans) => {
|
||||
state.value.plan = plan as unknown as PaidWorkspacePlans
|
||||
state.value.billingInterval = isYearlySelected.value
|
||||
|
||||
@@ -62,12 +62,14 @@ export const useAutomationRunSummary = (params: {
|
||||
?.functionRuns.filter(
|
||||
(r): r is SetFullyRequired<typeof r, 'statusMessage'> =>
|
||||
!!(
|
||||
[
|
||||
AutomateRunStatus.Failed,
|
||||
AutomateRunStatus.Canceled,
|
||||
AutomateRunStatus.Exception,
|
||||
AutomateRunStatus.Timeout
|
||||
].includes(r.status) && r.statusMessage?.length
|
||||
(
|
||||
[
|
||||
AutomateRunStatus.Failed,
|
||||
AutomateRunStatus.Canceled,
|
||||
AutomateRunStatus.Exception,
|
||||
AutomateRunStatus.Timeout
|
||||
] as string[]
|
||||
).includes(r.status) && r.statusMessage?.length
|
||||
)
|
||||
)
|
||||
.map((r) => r.statusMessage) || []
|
||||
@@ -141,9 +143,9 @@ export const useAutomationRunDetailsFns = () => {
|
||||
const end =
|
||||
run.status === AutomateRunStatus.Running
|
||||
? now.value
|
||||
: [AutomateRunStatus.Initializing, AutomateRunStatus.Pending].includes(
|
||||
run.status
|
||||
)
|
||||
: (
|
||||
[AutomateRunStatus.Initializing, AutomateRunStatus.Pending] as string[]
|
||||
).includes(run.status)
|
||||
? undefined
|
||||
: run.updatedAt
|
||||
if (!end) return undefined
|
||||
|
||||
@@ -1,114 +1,48 @@
|
||||
import { WorkspacePlans, BillingInterval } from '~/lib/common/generated/gql/graphql'
|
||||
import { Roles } from '@speckle/shared'
|
||||
import { PlanFeaturesList, type PricingPlan } from '@/lib/billing/helpers/types'
|
||||
import {
|
||||
PaidWorkspacePlansOld,
|
||||
Roles,
|
||||
WorkspacePlanBillingIntervals,
|
||||
type WorkspacePlanPriceStructure
|
||||
} from '@speckle/shared'
|
||||
|
||||
const baseFeatures = [
|
||||
PlanFeaturesList.Workspaces,
|
||||
PlanFeaturesList.RoleManagement,
|
||||
PlanFeaturesList.GuestUsers,
|
||||
PlanFeaturesList.PrivateAutomateFunctions,
|
||||
PlanFeaturesList.DomainSecurity
|
||||
]
|
||||
|
||||
export const pricingPlansConfig: {
|
||||
features: Record<
|
||||
PlanFeaturesList,
|
||||
{ name: string; description: (price?: number) => string }
|
||||
>
|
||||
plans: Record<
|
||||
WorkspacePlans.Starter | WorkspacePlans.Plus | WorkspacePlans.Business,
|
||||
PricingPlan
|
||||
>
|
||||
// TODO: Read these from API, especially for new plans
|
||||
export const WorkspaceOldPaidPlanPrices: {
|
||||
[plan in PaidWorkspacePlansOld]: WorkspacePlanPriceStructure
|
||||
} = {
|
||||
features: {
|
||||
[PlanFeaturesList.Workspaces]: {
|
||||
name: PlanFeaturesList.Workspaces,
|
||||
description: () => `A shared space for your team and projects`
|
||||
[PaidWorkspacePlansOld.Starter]: {
|
||||
[WorkspacePlanBillingIntervals.Monthly]: {
|
||||
[Roles.Workspace.Guest]: 15,
|
||||
[Roles.Workspace.Member]: 15,
|
||||
[Roles.Workspace.Admin]: 15
|
||||
},
|
||||
[PlanFeaturesList.RoleManagement]: {
|
||||
name: PlanFeaturesList.RoleManagement,
|
||||
description: () => `Control individual members' access and edit rights`
|
||||
},
|
||||
[PlanFeaturesList.GuestUsers]: {
|
||||
name: PlanFeaturesList.GuestUsers,
|
||||
description: (price?: number) =>
|
||||
`Give guests access to specific projects in the workspace at £${price}/month/guest`
|
||||
},
|
||||
[PlanFeaturesList.PrivateAutomateFunctions]: {
|
||||
name: PlanFeaturesList.PrivateAutomateFunctions,
|
||||
description: () =>
|
||||
`Create and manage private automation functions securely within your workspace`
|
||||
},
|
||||
[PlanFeaturesList.DomainSecurity]: {
|
||||
name: PlanFeaturesList.DomainSecurity,
|
||||
description: () => `Require workspace members to use a verified company email`
|
||||
},
|
||||
[PlanFeaturesList.SSO]: {
|
||||
name: PlanFeaturesList.SSO,
|
||||
description: () => `Require workspace members to log in with your SSO provider`
|
||||
},
|
||||
[PlanFeaturesList.CustomDataRegion]: {
|
||||
name: PlanFeaturesList.CustomDataRegion,
|
||||
description: () => `Store the workspace data in a custom region`
|
||||
},
|
||||
[PlanFeaturesList.PrioritySupport]: {
|
||||
name: PlanFeaturesList.PrioritySupport,
|
||||
description: () => `Personal and fast support`
|
||||
[WorkspacePlanBillingIntervals.Yearly]: {
|
||||
[Roles.Workspace.Guest]: 12,
|
||||
[Roles.Workspace.Member]: 12,
|
||||
[Roles.Workspace.Admin]: 12
|
||||
}
|
||||
},
|
||||
plans: {
|
||||
[WorkspacePlans.Starter]: {
|
||||
name: WorkspacePlans.Starter,
|
||||
features: [...baseFeatures],
|
||||
cost: {
|
||||
[BillingInterval.Monthly]: {
|
||||
[Roles.Workspace.Guest]: 15,
|
||||
[Roles.Workspace.Member]: 15,
|
||||
[Roles.Workspace.Admin]: 15
|
||||
},
|
||||
[BillingInterval.Yearly]: {
|
||||
[Roles.Workspace.Guest]: 12,
|
||||
[Roles.Workspace.Member]: 12,
|
||||
[Roles.Workspace.Admin]: 12
|
||||
}
|
||||
}
|
||||
[PaidWorkspacePlansOld.Plus]: {
|
||||
[WorkspacePlanBillingIntervals.Monthly]: {
|
||||
[Roles.Workspace.Guest]: 15,
|
||||
[Roles.Workspace.Member]: 50,
|
||||
[Roles.Workspace.Admin]: 50
|
||||
},
|
||||
[WorkspacePlans.Plus]: {
|
||||
name: WorkspacePlans.Plus,
|
||||
features: [...baseFeatures, PlanFeaturesList.SSO],
|
||||
cost: {
|
||||
[BillingInterval.Monthly]: {
|
||||
[Roles.Workspace.Guest]: 15,
|
||||
[Roles.Workspace.Member]: 50,
|
||||
[Roles.Workspace.Admin]: 50
|
||||
},
|
||||
[BillingInterval.Yearly]: {
|
||||
[Roles.Workspace.Guest]: 12,
|
||||
[Roles.Workspace.Member]: 40,
|
||||
[Roles.Workspace.Admin]: 40
|
||||
}
|
||||
}
|
||||
[WorkspacePlanBillingIntervals.Yearly]: {
|
||||
[Roles.Workspace.Guest]: 12,
|
||||
[Roles.Workspace.Member]: 40,
|
||||
[Roles.Workspace.Admin]: 40
|
||||
}
|
||||
},
|
||||
[PaidWorkspacePlansOld.Business]: {
|
||||
[WorkspacePlanBillingIntervals.Monthly]: {
|
||||
[Roles.Workspace.Guest]: 15,
|
||||
[Roles.Workspace.Member]: 75,
|
||||
[Roles.Workspace.Admin]: 75
|
||||
},
|
||||
[WorkspacePlans.Business]: {
|
||||
name: WorkspacePlans.Business,
|
||||
features: [
|
||||
...baseFeatures,
|
||||
PlanFeaturesList.SSO,
|
||||
PlanFeaturesList.CustomDataRegion,
|
||||
PlanFeaturesList.PrioritySupport
|
||||
],
|
||||
cost: {
|
||||
[BillingInterval.Monthly]: {
|
||||
[Roles.Workspace.Guest]: 15,
|
||||
[Roles.Workspace.Member]: 75,
|
||||
[Roles.Workspace.Admin]: 75
|
||||
},
|
||||
[BillingInterval.Yearly]: {
|
||||
[Roles.Workspace.Guest]: 12,
|
||||
[Roles.Workspace.Member]: 60,
|
||||
[Roles.Workspace.Admin]: 60
|
||||
}
|
||||
}
|
||||
[WorkspacePlanBillingIntervals.Yearly]: {
|
||||
[Roles.Workspace.Guest]: 12,
|
||||
[Roles.Workspace.Member]: 60,
|
||||
[Roles.Workspace.Admin]: 60
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,31 +1,6 @@
|
||||
import {
|
||||
type BillingInterval,
|
||||
type WorkspacePlans,
|
||||
PaidWorkspacePlans
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import type { WorkspaceRoles } from '@speckle/shared'
|
||||
|
||||
export enum PlanFeaturesList {
|
||||
Workspaces = 'Workspaces',
|
||||
RoleManagement = 'Role management',
|
||||
GuestUsers = 'Guest users',
|
||||
PrivateAutomateFunctions = 'Private automate functions',
|
||||
DomainSecurity = 'Domain security',
|
||||
SSO = 'Single Sign-On (SSO)',
|
||||
CustomDataRegion = 'Custom data residency',
|
||||
PrioritySupport = 'Priority support'
|
||||
}
|
||||
|
||||
export type PricingPlan = {
|
||||
name: WorkspacePlans
|
||||
features: PlanFeaturesList[]
|
||||
cost: {
|
||||
[I in BillingInterval]: Record<WorkspaceRoles, number>
|
||||
}
|
||||
}
|
||||
import type { WorkspacePlans } from '@speckle/shared'
|
||||
import { PaidWorkspacePlans } from '@speckle/shared'
|
||||
|
||||
// Check if the plan matches PaidWorkspacePlans
|
||||
export const isPaidPlan = (plan?: WorkspacePlans): boolean =>
|
||||
plan
|
||||
? Object.values(PaidWorkspacePlans).includes(plan as unknown as PaidWorkspacePlans)
|
||||
: false
|
||||
plan ? (Object.values(PaidWorkspacePlans) as string[]).includes(plan) : false
|
||||
|
||||
@@ -13,7 +13,391 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-
|
||||
* Therefore it is highly recommended to use the babel or swc plugin for production.
|
||||
* Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size
|
||||
*/
|
||||
const documents = {
|
||||
type Documents = {
|
||||
"\n fragment AuthLoginWithEmailBlock_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n email\n user {\n id\n }\n }\n": typeof types.AuthLoginWithEmailBlock_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
"\n query AuthRegisterPanelWorkspaceInvite($token: String) {\n workspaceInvite(token: $token) {\n id\n ...AuthWorkspaceInviteHeader_PendingWorkspaceCollaborator\n }\n }\n": typeof types.AuthRegisterPanelWorkspaceInviteDocument,
|
||||
"\n fragment ServerTermsOfServicePrivacyPolicyFragment on ServerInfo {\n termsOfService\n }\n": typeof types.ServerTermsOfServicePrivacyPolicyFragmentFragmentDoc,
|
||||
"\n fragment AuthWorkspaceInviteHeader_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n workspaceName\n email\n user {\n id\n ...LimitedUserAvatar\n }\n }\n": typeof types.AuthWorkspaceInviteHeader_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment AuthSsoLogin_Workspace on LimitedWorkspace {\n id\n slug\n name\n logo\n }\n": typeof types.AuthSsoLogin_WorkspaceFragmentDoc,
|
||||
"\n fragment AuthStategiesServerInfoFragment on ServerInfo {\n authStrategies {\n id\n name\n url\n }\n ...AuthThirdPartyLoginButtonOIDC_ServerInfo\n }\n": typeof types.AuthStategiesServerInfoFragmentFragmentDoc,
|
||||
"\n fragment AuthThirdPartyLoginButtonOIDC_ServerInfo on ServerInfo {\n authStrategies {\n id\n name\n }\n }\n": typeof types.AuthThirdPartyLoginButtonOidc_ServerInfoFragmentDoc,
|
||||
"\n fragment AutomateAutomationCreateDialog_AutomateFunction on AutomateFunction {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateAutomationCreateDialogFunctionParametersStep_AutomateFunction\n }\n": typeof types.AutomateAutomationCreateDialog_AutomateFunctionFragmentDoc,
|
||||
"\n fragment AutomateAutomationCreateDialogFunctionParametersStep_AutomateFunction on AutomateFunction {\n id\n releases(limit: 1) {\n items {\n id\n inputSchema\n }\n }\n }\n": typeof types.AutomateAutomationCreateDialogFunctionParametersStep_AutomateFunctionFragmentDoc,
|
||||
"\n query AutomationCreateDialogFunctionsSearch(\n $workspaceId: String!\n $search: String\n $cursor: String = null\n ) {\n workspace(id: $workspaceId) {\n automateFunctions(limit: 20, filter: { search: $search }, cursor: $cursor) {\n cursor\n totalCount\n items {\n id\n ...AutomateAutomationCreateDialog_AutomateFunction\n }\n }\n }\n }\n": typeof types.AutomationCreateDialogFunctionsSearchDocument,
|
||||
"\n fragment AutomationsFunctionsCard_AutomateFunction on AutomateFunction {\n id\n name\n isFeatured\n description\n logo\n repo {\n id\n url\n owner\n name\n }\n }\n": typeof types.AutomationsFunctionsCard_AutomateFunctionFragmentDoc,
|
||||
"\n fragment AutomateFunctionCreateDialog_Workspace on Workspace {\n id\n name\n slug\n }\n": typeof types.AutomateFunctionCreateDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment AutomateFunctionEditDialog_Workspace on Workspace {\n id\n name\n }\n": typeof types.AutomateFunctionEditDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment AutomateFunctionCreateDialogDoneStep_AutomateFunction on AutomateFunction {\n id\n repo {\n id\n url\n owner\n name\n }\n ...AutomationsFunctionsCard_AutomateFunction\n }\n": typeof types.AutomateFunctionCreateDialogDoneStep_AutomateFunctionFragmentDoc,
|
||||
"\n fragment AutomateFunctionCreateDialogTemplateStep_AutomateFunctionTemplate on AutomateFunctionTemplate {\n id\n title\n logo\n url\n }\n": typeof types.AutomateFunctionCreateDialogTemplateStep_AutomateFunctionTemplateFragmentDoc,
|
||||
"\n fragment AutomateFunctionPageHeader_Function on AutomateFunction {\n id\n name\n logo\n repo {\n id\n url\n owner\n name\n }\n releases(limit: 1) {\n totalCount\n }\n workspaceIds\n }\n\n fragment AutomateFunctionPageHeader_Workspace on Workspace {\n id\n name\n slug\n }\n": typeof types.AutomateFunctionPageHeader_FunctionFragmentDoc,
|
||||
"\n fragment AutomateFunctionPageInfo_AutomateFunction on AutomateFunction {\n id\n repo {\n id\n url\n owner\n name\n }\n description\n releases(limit: 1) {\n items {\n id\n inputSchema\n createdAt\n commitId\n ...AutomateFunctionPageParametersDialog_AutomateFunctionRelease\n }\n }\n }\n": typeof types.AutomateFunctionPageInfo_AutomateFunctionFragmentDoc,
|
||||
"\n fragment AutomateFunctionPageParametersDialog_AutomateFunctionRelease on AutomateFunctionRelease {\n id\n inputSchema\n }\n": typeof types.AutomateFunctionPageParametersDialog_AutomateFunctionReleaseFragmentDoc,
|
||||
"\n fragment AutomateFunctionsPageHeader_Query on Query {\n activeUser {\n id\n role\n automateInfo {\n hasAutomateGithubApp\n availableGithubOrgs\n }\n }\n serverInfo {\n automate {\n availableFunctionTemplates {\n ...AutomateFunctionCreateDialogTemplateStep_AutomateFunctionTemplate\n }\n }\n }\n }\n": typeof types.AutomateFunctionsPageHeader_QueryFragmentDoc,
|
||||
"\n fragment AutomateFunctionsPageItems_Query on Query {\n automateFunctions(limit: 6, filter: { search: $search }, cursor: $cursor) {\n totalCount\n items {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateAutomationCreateDialog_AutomateFunction\n }\n cursor\n }\n }\n": typeof types.AutomateFunctionsPageItems_QueryFragmentDoc,
|
||||
"\n fragment AutomateRunsTriggerStatus_TriggeredAutomationsStatus on TriggeredAutomationsStatus {\n id\n ...TriggeredAutomationsStatusSummary\n ...AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatus\n }\n": typeof types.AutomateRunsTriggerStatus_TriggeredAutomationsStatusFragmentDoc,
|
||||
"\n fragment AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatus on TriggeredAutomationsStatus {\n id\n automationRuns {\n id\n ...AutomateRunsTriggerStatusDialogRunsRows_AutomateRun\n }\n }\n": typeof types.AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatusFragmentDoc,
|
||||
"\n fragment AutomateRunsTriggerStatusDialogFunctionRun_AutomateFunctionRun on AutomateFunctionRun {\n id\n results\n status\n statusMessage\n contextView\n function {\n id\n logo\n name\n }\n createdAt\n updatedAt\n }\n": typeof types.AutomateRunsTriggerStatusDialogFunctionRun_AutomateFunctionRunFragmentDoc,
|
||||
"\n fragment AutomateRunsTriggerStatusDialogRunsRows_AutomateRun on AutomateRun {\n id\n functionRuns {\n id\n ...AutomateRunsTriggerStatusDialogFunctionRun_AutomateFunctionRun\n }\n ...AutomationsStatusOrderedRuns_AutomationRun\n }\n": typeof types.AutomateRunsTriggerStatusDialogRunsRows_AutomateRunFragmentDoc,
|
||||
"\n fragment AutomateViewerPanel_AutomateRun on AutomateRun {\n id\n functionRuns {\n id\n ...AutomateViewerPanelFunctionRunRow_AutomateFunctionRun\n }\n ...AutomationsStatusOrderedRuns_AutomationRun\n }\n": typeof types.AutomateViewerPanel_AutomateRunFragmentDoc,
|
||||
"\n fragment AutomateViewerPanelFunctionRunRow_AutomateFunctionRun on AutomateFunctionRun {\n id\n results\n status\n statusMessage\n contextView\n function {\n id\n logo\n name\n }\n createdAt\n updatedAt\n }\n": typeof types.AutomateViewerPanelFunctionRunRow_AutomateFunctionRunFragmentDoc,
|
||||
"\n fragment BillingAlert_Workspace on Workspace {\n id\n plan {\n name\n status\n createdAt\n }\n subscription {\n billingInterval\n currentBillingCycleEnd\n }\n }\n": typeof types.BillingAlert_WorkspaceFragmentDoc,
|
||||
"\n fragment CommonModelSelectorModel on Model {\n id\n name\n }\n": typeof types.CommonModelSelectorModelFragmentDoc,
|
||||
"\n fragment DashboardProjectCard_Project on Project {\n id\n name\n role\n updatedAt\n models {\n totalCount\n }\n team {\n user {\n ...LimitedUserAvatar\n }\n }\n workspace {\n id\n slug\n name\n logo\n }\n }\n": typeof types.DashboardProjectCard_ProjectFragmentDoc,
|
||||
"\n fragment Sidebar_User on User {\n id\n automateFunctions {\n items {\n id\n name\n description\n logo\n }\n }\n }\n": typeof types.Sidebar_UserFragmentDoc,
|
||||
"\n fragment FormSelectModels_Model on Model {\n id\n name\n }\n": typeof types.FormSelectModels_ModelFragmentDoc,
|
||||
"\n fragment FormSelectProjects_Project on Project {\n id\n name\n }\n": typeof types.FormSelectProjects_ProjectFragmentDoc,
|
||||
"\n fragment FormUsersSelectItem on LimitedUser {\n id\n name\n avatar\n }\n": typeof types.FormUsersSelectItemFragmentDoc,
|
||||
"\n fragment HeaderNavShare_Project on Project {\n id\n visibility\n ...ProjectsModelPageEmbed_Project\n }\n": typeof types.HeaderNavShare_ProjectFragmentDoc,
|
||||
"\n fragment InviteDialogWorkspace_Workspace on Workspace {\n id\n domainBasedMembershipProtectionEnabled\n domains {\n domain\n id\n }\n plan {\n status\n name\n }\n subscription {\n seats {\n guest\n plan\n }\n }\n }\n": typeof types.InviteDialogWorkspace_WorkspaceFragmentDoc,
|
||||
"\n fragment InviteDialogProject_Project on Project {\n id\n name\n ...InviteDialogProjectWorkspaceMembers_Project\n workspace {\n id\n name\n defaultProjectRole\n role\n domainBasedMembershipProtectionEnabled\n domains {\n domain\n id\n }\n plan {\n status\n name\n }\n subscription {\n seats {\n guest\n plan\n }\n }\n }\n }\n": typeof types.InviteDialogProject_ProjectFragmentDoc,
|
||||
"\n fragment InviteDialogProjectWorkspaceMembersRow_WorkspaceCollaborator on WorkspaceCollaborator {\n role\n id\n user {\n id\n name\n bio\n company\n avatar\n verified\n role\n }\n }\n": typeof types.InviteDialogProjectWorkspaceMembersRow_WorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment InviteDialogProjectWorkspaceMembers_Project on Project {\n id\n ...ProjectPageTeamInternals_Project\n workspace {\n team {\n items {\n ...InviteDialogProjectWorkspaceMembersRow_WorkspaceCollaborator\n }\n }\n }\n }\n": typeof types.InviteDialogProjectWorkspaceMembers_ProjectFragmentDoc,
|
||||
"\n fragment ProjectModelPageHeaderProject on Project {\n id\n name\n model(id: $modelId) {\n id\n name\n description\n }\n workspace {\n id\n slug\n name\n }\n }\n": typeof types.ProjectModelPageHeaderProjectFragmentDoc,
|
||||
"\n fragment ProjectModelPageVersionsPagination on Project {\n id\n visibility\n model(id: $modelId) {\n id\n versions(limit: 16, cursor: $versionsCursor) {\n cursor\n totalCount\n items {\n ...ProjectModelPageVersionsCardVersion\n }\n }\n }\n ...ProjectsModelPageEmbed_Project\n }\n": typeof types.ProjectModelPageVersionsPaginationFragmentDoc,
|
||||
"\n fragment ProjectModelPageVersionsProject on Project {\n ...ProjectPageProjectHeader\n model(id: $modelId) {\n id\n name\n pendingImportedVersions {\n ...PendingFileUpload\n }\n }\n ...ProjectModelPageVersionsPagination\n ...ProjectsModelPageEmbed_Project\n workspace {\n id\n readOnly\n }\n }\n": typeof types.ProjectModelPageVersionsProjectFragmentDoc,
|
||||
"\n fragment ProjectModelPageDialogDeleteVersion on Version {\n id\n message\n }\n": typeof types.ProjectModelPageDialogDeleteVersionFragmentDoc,
|
||||
"\n fragment ProjectModelPageDialogEditMessageVersion on Version {\n id\n message\n }\n": typeof types.ProjectModelPageDialogEditMessageVersionFragmentDoc,
|
||||
"\n fragment ProjectModelPageDialogMoveToVersion on Version {\n id\n message\n }\n": typeof types.ProjectModelPageDialogMoveToVersionFragmentDoc,
|
||||
"\n fragment ProjectsModelPageEmbed_Project on Project {\n id\n ...ProjectsPageTeamDialogManagePermissions_Project\n }\n": typeof types.ProjectsModelPageEmbed_ProjectFragmentDoc,
|
||||
"\n fragment ProjectModelPageVersionsCardVersion on Version {\n id\n message\n authorUser {\n ...LimitedUserAvatar\n }\n createdAt\n previewUrl\n sourceApplication\n commentThreadCount: commentThreads(limit: 0) {\n totalCount\n }\n ...ProjectModelPageDialogDeleteVersion\n ...ProjectModelPageDialogMoveToVersion\n automationsStatus {\n ...AutomateRunsTriggerStatus_TriggeredAutomationsStatus\n }\n }\n": typeof types.ProjectModelPageVersionsCardVersionFragmentDoc,
|
||||
"\n fragment ProjectPageProjectHeader on Project {\n id\n role\n name\n description\n visibility\n allowPublicComments\n workspace {\n id\n slug\n name\n logo\n }\n }\n": typeof types.ProjectPageProjectHeaderFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFunction on AutomationRevisionFunction {\n parameters\n release {\n id\n versionTag\n createdAt\n inputSchema\n function {\n id\n }\n }\n }\n": typeof types.ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFunctionFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationFunctionSettingsDialog_AutomationRevision on AutomationRevision {\n id\n triggerDefinitions {\n ... on VersionCreatedTriggerDefinition {\n type\n model {\n id\n ...CommonModelSelectorModel\n }\n }\n }\n }\n": typeof types.ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationFunctions_Automation on Automation {\n id\n currentRevision {\n id\n ...ProjectPageAutomationFunctionSettingsDialog_AutomationRevision\n functions {\n release {\n id\n inputSchema\n function {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n releases(limit: 1) {\n items {\n id\n }\n }\n }\n }\n ...ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFunction\n }\n }\n }\n": typeof types.ProjectPageAutomationFunctions_AutomationFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationHeader_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n currentRevision {\n id\n triggerDefinitions {\n ... on VersionCreatedTriggerDefinition {\n model {\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n }\n }\n": typeof types.ProjectPageAutomationHeader_AutomationFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n workspaceId\n ...ProjectPageModelsCardProject\n }\n": typeof types.ProjectPageAutomationHeader_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationModels_Project on Project {\n id\n ...ProjectPageModelsCardProject\n }\n": typeof types.ProjectPageAutomationModels_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationRuns_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n runs(limit: 10) {\n items {\n ...AutomationRunDetails\n }\n totalCount\n cursor\n }\n }\n": typeof types.ProjectPageAutomationRuns_AutomationFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationsRow_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n currentRevision {\n id\n triggerDefinitions {\n ... on VersionCreatedTriggerDefinition {\n model {\n id\n name\n }\n }\n }\n }\n runs(limit: 10) {\n totalCount\n items {\n ...AutomationRunDetails\n }\n cursor\n }\n }\n": typeof types.ProjectPageAutomationsRow_AutomationFragmentDoc,
|
||||
"\n fragment ProjectDiscussionsPageHeader_Project on Project {\n id\n name\n }\n": typeof types.ProjectDiscussionsPageHeader_ProjectFragmentDoc,
|
||||
"\n fragment ProjectDiscussionsPageResults_Project on Project {\n id\n }\n": typeof types.ProjectDiscussionsPageResults_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageModelsActions on Model {\n id\n name\n }\n": typeof types.ProjectPageModelsActionsFragmentDoc,
|
||||
"\n fragment ProjectPageModelsActions_Project on Project {\n id\n ...ProjectsModelPageEmbed_Project\n }\n": typeof types.ProjectPageModelsActions_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageModelsCardProject on Project {\n id\n role\n visibility\n ...ProjectPageModelsActions_Project\n workspace {\n id\n readOnly\n }\n }\n": typeof types.ProjectPageModelsCardProjectFragmentDoc,
|
||||
"\n fragment ProjectModelsPageHeader_Project on Project {\n id\n name\n sourceApps\n role\n models {\n totalCount\n }\n team {\n id\n user {\n ...FormUsersSelectItem\n }\n }\n workspace {\n id\n readOnly\n }\n }\n": typeof types.ProjectModelsPageHeader_ProjectFragmentDoc,
|
||||
"\n fragment ProjectModelsPageResults_Project on Project {\n ...ProjectPageLatestItemsModels\n }\n": typeof types.ProjectModelsPageResults_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageModelsStructureItem_Project on Project {\n id\n workspace {\n id\n readOnly\n }\n ...ProjectPageModelsActions_Project\n }\n": typeof types.ProjectPageModelsStructureItem_ProjectFragmentDoc,
|
||||
"\n fragment SingleLevelModelTreeItem on ModelsTreeItem {\n id\n name\n fullName\n model {\n ...ProjectPageLatestItemsModelItem\n }\n hasChildren\n updatedAt\n }\n": typeof types.SingleLevelModelTreeItemFragmentDoc,
|
||||
"\n fragment ProjectPageModelsCardDeleteDialog on Model {\n id\n name\n }\n": typeof types.ProjectPageModelsCardDeleteDialogFragmentDoc,
|
||||
"\n fragment ProjectPageModelsCardRenameDialog on Model {\n id\n name\n description\n }\n": typeof types.ProjectPageModelsCardRenameDialogFragmentDoc,
|
||||
"\n query ProjectPageSettingsCollaborators($projectId: String!) {\n project(id: $projectId) {\n id\n ...ProjectPageTeamInternals_Project\n ...InviteDialogProject_Project\n workspaceId\n }\n }\n": typeof types.ProjectPageSettingsCollaboratorsDocument,
|
||||
"\n query ProjectPageSettingsCollaboratorsWorkspace($workspaceId: String!) {\n workspace(id: $workspaceId) {\n ...ProjectPageTeamInternals_Workspace\n }\n }\n": typeof types.ProjectPageSettingsCollaboratorsWorkspaceDocument,
|
||||
"\n query ProjectPageSettingsGeneral($projectId: String!) {\n project(id: $projectId) {\n id\n role\n ...ProjectPageSettingsGeneralBlockProjectInfo_Project\n ...ProjectPageSettingsGeneralBlockAccess_Project\n ...ProjectPageSettingsGeneralBlockDiscussions_Project\n ...ProjectPageSettingsGeneralBlockLeave_Project\n ...ProjectPageSettingsGeneralBlockDelete_Project\n ...ProjectPageTeamInternals_Project\n }\n }\n": typeof types.ProjectPageSettingsGeneralDocument,
|
||||
"\n fragment ProjectPageSettingsGeneralBlockAccess_Project on Project {\n id\n visibility\n }\n": typeof types.ProjectPageSettingsGeneralBlockAccess_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageSettingsGeneralBlockDelete_Project on Project {\n ...ProjectsDeleteDialog_Project\n }\n": typeof types.ProjectPageSettingsGeneralBlockDelete_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageSettingsGeneralBlockDiscussions_Project on Project {\n id\n visibility\n allowPublicComments\n }\n": typeof types.ProjectPageSettingsGeneralBlockDiscussions_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageSettingsGeneralBlockLeave_Project on Project {\n id\n name\n role\n team {\n role\n user {\n ...LimitedUserAvatar\n role\n }\n }\n workspace {\n id\n }\n }\n": typeof types.ProjectPageSettingsGeneralBlockLeave_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageSettingsGeneralBlockProjectInfo_Project on Project {\n id\n role\n name\n description\n }\n": typeof types.ProjectPageSettingsGeneralBlockProjectInfo_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageTeamDialog on Project {\n id\n name\n role\n allowPublicComments\n visibility\n team {\n id\n role\n user {\n ...LimitedUserAvatar\n role\n }\n }\n invitedTeam {\n id\n title\n inviteId\n role\n user {\n ...LimitedUserAvatar\n role\n }\n }\n ...ProjectsPageTeamDialogManagePermissions_Project\n }\n": typeof types.ProjectPageTeamDialogFragmentDoc,
|
||||
"\n fragment ProjectsPageTeamDialogManagePermissions_Project on Project {\n id\n visibility\n role\n }\n": typeof types.ProjectsPageTeamDialogManagePermissions_ProjectFragmentDoc,
|
||||
"\n fragment ProjectsAddDialog_Workspace on Workspace {\n id\n ...ProjectsWorkspaceSelect_Workspace\n }\n": typeof types.ProjectsAddDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment ProjectsAddDialog_User on User {\n workspaces {\n items {\n ...ProjectsAddDialog_Workspace\n }\n }\n }\n": typeof types.ProjectsAddDialog_UserFragmentDoc,
|
||||
"\n fragment ProjectsDashboard_UserProjectCollection on UserProjectCollection {\n numberOfHidden\n }\n": typeof types.ProjectsDashboard_UserProjectCollectionFragmentDoc,
|
||||
"\n fragment ProjectsDashboardFilledProject on ProjectCollection {\n items {\n ...ProjectDashboardItem\n }\n }\n": typeof types.ProjectsDashboardFilledProjectFragmentDoc,
|
||||
"\n fragment ProjectsDashboardFilledUser on UserProjectCollection {\n items {\n ...ProjectDashboardItem\n }\n }\n": typeof types.ProjectsDashboardFilledUserFragmentDoc,
|
||||
"\n fragment ProjectsDashboardHeaderProjects_User on User {\n projectInvites {\n ...ProjectsInviteBanner\n }\n }\n": typeof types.ProjectsDashboardHeaderProjects_UserFragmentDoc,
|
||||
"\n fragment ProjectsDashboardHeaderWorkspaces_User on User {\n discoverableWorkspaces {\n ...WorkspaceInviteDiscoverableWorkspaceBanner_LimitedWorkspace\n }\n workspaceInvites {\n ...WorkspaceInviteBanner_PendingWorkspaceCollaborator\n }\n }\n": typeof types.ProjectsDashboardHeaderWorkspaces_UserFragmentDoc,
|
||||
"\n fragment ProjectsDeleteDialog_Project on Project {\n id\n name\n role\n models(limit: 0) {\n totalCount\n }\n workspace {\n slug\n id\n }\n versions(limit: 0) {\n totalCount\n }\n }\n": typeof types.ProjectsDeleteDialog_ProjectFragmentDoc,
|
||||
"\n fragment ProjectsHiddenProjectWarning_User on User {\n id\n expiredSsoSessions {\n id\n slug\n name\n logo\n }\n }\n": typeof types.ProjectsHiddenProjectWarning_UserFragmentDoc,
|
||||
"\n fragment ProjectsMoveToWorkspaceDialog_Workspace on Workspace {\n id\n role\n name\n logo\n ...WorkspaceHasCustomDataResidency_Workspace\n ...ProjectsWorkspaceSelect_Workspace\n }\n": typeof types.ProjectsMoveToWorkspaceDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment ProjectsMoveToWorkspaceDialog_User on User {\n workspaces {\n items {\n ...ProjectsMoveToWorkspaceDialog_Workspace\n }\n }\n }\n": typeof types.ProjectsMoveToWorkspaceDialog_UserFragmentDoc,
|
||||
"\n fragment ProjectsMoveToWorkspaceDialog_Project on Project {\n id\n name\n modelCount: models(limit: 0) {\n totalCount\n }\n versions(limit: 0) {\n totalCount\n }\n }\n": typeof types.ProjectsMoveToWorkspaceDialog_ProjectFragmentDoc,
|
||||
"\n query ProjectsMoveToWorkspaceDialog {\n activeUser {\n id\n ...ProjectsMoveToWorkspaceDialog_User\n }\n }\n": typeof types.ProjectsMoveToWorkspaceDialogDocument,
|
||||
"\n fragment ProjectsWorkspaceSelect_Workspace on Workspace {\n id\n role\n name\n logo\n readOnly\n slug\n }\n": typeof types.ProjectsWorkspaceSelect_WorkspaceFragmentDoc,
|
||||
"\n fragment ProjectsInviteBanner on PendingStreamCollaborator {\n id\n invitedBy {\n ...LimitedUserAvatar\n }\n projectId\n projectName\n token\n user {\n id\n }\n }\n": typeof types.ProjectsInviteBannerFragmentDoc,
|
||||
"\n fragment SettingsDialog_Workspace on Workspace {\n ...SettingsMenu_Workspace\n id\n slug\n role\n name\n logo\n plan {\n status\n }\n creationState {\n completed\n }\n }\n": typeof types.SettingsDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsDialog_User on User {\n id\n workspaces {\n items {\n ...SettingsDialog_Workspace\n }\n }\n }\n": typeof types.SettingsDialog_UserFragmentDoc,
|
||||
"\n fragment SettingsServerRegionsAddEditDialog_ServerRegionItem on ServerRegionItem {\n id\n name\n description\n key\n }\n": typeof types.SettingsServerRegionsAddEditDialog_ServerRegionItemFragmentDoc,
|
||||
"\n fragment SettingsServerRegionsTable_ServerRegionItem on ServerRegionItem {\n id\n name\n key\n description\n }\n": typeof types.SettingsServerRegionsTable_ServerRegionItemFragmentDoc,
|
||||
"\n fragment SettingsSharedDeleteUserDialog_Workspace on Workspace {\n id\n plan {\n status\n name\n }\n subscription {\n currentBillingCycleEnd\n seats {\n guest\n plan\n }\n }\n }\n": typeof types.SettingsSharedDeleteUserDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsSharedProjects_Project on Project {\n ...ProjectsDeleteDialog_Project\n id\n name\n visibility\n createdAt\n updatedAt\n models(limit: 0) {\n totalCount\n }\n versions(limit: 0) {\n totalCount\n }\n team {\n id\n user {\n name\n id\n avatar\n }\n }\n }\n": typeof types.SettingsSharedProjects_ProjectFragmentDoc,
|
||||
"\n fragment SettingsUserProfileChangePassword_User on User {\n id\n email\n }\n": typeof types.SettingsUserProfileChangePassword_UserFragmentDoc,
|
||||
"\n fragment SettingsUserProfileDeleteAccount_User on User {\n id\n email\n }\n": typeof types.SettingsUserProfileDeleteAccount_UserFragmentDoc,
|
||||
"\n fragment SettingsUserProfileDetails_User on User {\n id\n name\n company\n ...UserProfileEditDialogAvatar_User\n }\n": typeof types.SettingsUserProfileDetails_UserFragmentDoc,
|
||||
"\n fragment UserProfileEditDialogAvatar_User on User {\n id\n avatar\n ...ActiveUserAvatar\n }\n": typeof types.UserProfileEditDialogAvatar_UserFragmentDoc,
|
||||
"\n fragment SettingsWorkspaceGeneralDeleteDialog_Workspace on Workspace {\n id\n name\n }\n": typeof types.SettingsWorkspaceGeneralDeleteDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesGeneralEditAvatar_Workspace on Workspace {\n id\n logo\n name\n }\n": typeof types.SettingsWorkspacesGeneralEditAvatar_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesGeneralEditSlugDialog_Workspace on Workspace {\n id\n name\n slug\n }\n": typeof types.SettingsWorkspacesGeneralEditSlugDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersChangeRoleDialog_Workspace on Workspace {\n id\n plan {\n status\n name\n }\n subscription {\n currentBillingCycleEnd\n seats {\n guest\n plan\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersChangeRoleDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersGuestsTable_WorkspaceCollaborator on WorkspaceCollaborator {\n id\n role\n user {\n id\n avatar\n name\n company\n }\n projectRoles {\n role\n project {\n id\n name\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersGuestsTable_WorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersGuestsTable_Workspace on Workspace {\n id\n ...SettingsWorkspacesMembersTableHeader_Workspace\n ...SettingsSharedDeleteUserDialog_Workspace\n ...SettingsWorkspacesMembersChangeRoleDialog_Workspace\n team {\n items {\n id\n ...SettingsWorkspacesMembersGuestsTable_WorkspaceCollaborator\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersGuestsTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersInvitesTable_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n inviteId\n role\n title\n updatedAt\n user {\n id\n ...LimitedUserAvatar\n }\n invitedBy {\n id\n ...LimitedUserAvatar\n }\n }\n": typeof types.SettingsWorkspacesMembersInvitesTable_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersInvitesTable_Workspace on Workspace {\n id\n ...SettingsWorkspacesMembersTableHeader_Workspace\n invitedTeam(filter: $invitesFilter) {\n ...SettingsWorkspacesMembersInvitesTable_PendingWorkspaceCollaborator\n }\n }\n": typeof types.SettingsWorkspacesMembersInvitesTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersRequestsTable_Workspace on Workspace {\n ...SettingsWorkspacesMembersTableHeader_Workspace\n id\n adminWorkspacesJoinRequests(filter: $joinRequestsFilter) {\n totalCount\n items {\n ...WorkspaceJoinRequestApproveDialog_WorkspaceJoinRequest\n id\n createdAt\n status\n user {\n id\n avatar\n name\n }\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersRequestsTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersMembersTable_WorkspaceCollaborator on WorkspaceCollaborator {\n id\n role\n user {\n id\n avatar\n name\n company\n workspaceDomainPolicyCompliant\n }\n }\n": typeof types.SettingsWorkspacesMembersMembersTable_WorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersMembersTable_Workspace on Workspace {\n id\n name\n ...SettingsSharedDeleteUserDialog_Workspace\n ...SettingsWorkspacesMembersTableHeader_Workspace\n ...SettingsWorkspacesMembersChangeRoleDialog_Workspace\n team {\n items {\n id\n ...SettingsWorkspacesMembersMembersTable_WorkspaceCollaborator\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersMembersTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n role\n ...InviteDialogWorkspace_Workspace\n }\n": typeof types.SettingsWorkspacesMembersTableHeader_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegionsSelect_ServerRegionItem on ServerRegionItem {\n id\n key\n name\n description\n }\n": typeof types.SettingsWorkspacesRegionsSelect_ServerRegionItemFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain on WorkspaceDomain {\n id\n domain\n }\n": typeof types.SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomainFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecurityDomainRemoveDialog_Workspace on Workspace {\n id\n domains {\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n }\n": typeof types.SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecuritySsoWrapper_Workspace on Workspace {\n id\n role\n slug\n sso {\n provider {\n id\n name\n clientId\n issuerUrl\n }\n }\n hasAccessToSSO: hasAccessToFeature(featureName: oidcSso)\n }\n": typeof types.SettingsWorkspacesSecuritySsoWrapper_WorkspaceFragmentDoc,
|
||||
"\n fragment ModelPageProject on Project {\n id\n createdAt\n name\n visibility\n workspace {\n id\n slug\n name\n }\n }\n": typeof types.ModelPageProjectFragmentDoc,
|
||||
"\n fragment ThreadCommentAttachment on Comment {\n text {\n attachments {\n id\n fileName\n fileType\n fileSize\n }\n }\n }\n": typeof types.ThreadCommentAttachmentFragmentDoc,
|
||||
"\n fragment ViewerCommentsListItem on Comment {\n id\n rawText\n archived\n author {\n ...LimitedUserAvatar\n }\n createdAt\n viewedAt\n replies {\n totalCount\n cursor\n items {\n ...ViewerCommentsReplyItem\n }\n }\n replyAuthors(limit: 4) {\n totalCount\n items {\n ...FormUsersSelectItem\n }\n }\n resources {\n resourceId\n resourceType\n }\n }\n": typeof types.ViewerCommentsListItemFragmentDoc,
|
||||
"\n fragment ViewerModelVersionCardItem on Version {\n id\n message\n referencedObject\n sourceApplication\n createdAt\n previewUrl\n authorUser {\n ...LimitedUserAvatar\n }\n }\n": typeof types.ViewerModelVersionCardItemFragmentDoc,
|
||||
"\n fragment MoveProjectsDialog_Workspace on Workspace {\n id\n ...ProjectsMoveToWorkspaceDialog_Workspace\n projects {\n items {\n id\n modelCount: models(limit: 0) {\n totalCount\n }\n versions(limit: 0) {\n totalCount\n }\n }\n }\n }\n": typeof types.MoveProjectsDialog_WorkspaceFragmentDoc,
|
||||
"\n fragment MoveProjectsDialog_User on User {\n projects {\n items {\n ...ProjectsMoveToWorkspaceDialog_Project\n role\n workspace {\n id\n }\n }\n }\n }\n": typeof types.MoveProjectsDialog_UserFragmentDoc,
|
||||
"\n fragment WorkspaceProjectList_Workspace on Workspace {\n id\n ...WorkspaceBase_Workspace\n ...WorkspaceTeam_Workspace\n ...WorkspaceSecurity_Workspace\n ...BillingAlert_Workspace\n ...MoveProjectsDialog_Workspace\n ...InviteDialogWorkspace_Workspace\n projects {\n ...WorkspaceProjectList_ProjectCollection\n }\n creationState {\n completed\n state\n }\n readOnly\n }\n": typeof types.WorkspaceProjectList_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceProjectList_ProjectCollection on ProjectCollection {\n totalCount\n items {\n ...ProjectDashboardItem\n }\n cursor\n }\n": typeof types.WorkspaceProjectList_ProjectCollectionFragmentDoc,
|
||||
"\n fragment WorkspaceHeader_Workspace on Workspace {\n ...WorkspaceBase_Workspace\n ...WorkspaceTeam_Workspace\n ...BillingAlert_Workspace\n slug\n readOnly\n }\n": typeof types.WorkspaceHeader_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceInviteBanner_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n invitedBy {\n id\n ...LimitedUserAvatar\n }\n workspaceId\n workspaceName\n token\n user {\n id\n }\n ...UseWorkspaceInviteManager_PendingWorkspaceCollaborator\n }\n": typeof types.WorkspaceInviteBanner_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment WorkspaceInviteBlock_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n workspaceId\n workspaceName\n token\n user {\n id\n name\n ...LimitedUserAvatar\n }\n title\n email\n ...UseWorkspaceInviteManager_PendingWorkspaceCollaborator\n }\n": typeof types.WorkspaceInviteBlock_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment WorkspaceInviteDiscoverableWorkspaceBanner_LimitedWorkspace on LimitedWorkspace {\n id\n name\n slug\n description\n logo\n }\n": typeof types.WorkspaceInviteDiscoverableWorkspaceBanner_LimitedWorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceJoinRequestApproveDialog_WorkspaceJoinRequest on WorkspaceJoinRequest {\n id\n user {\n id\n name\n }\n workspace {\n id\n }\n }\n": typeof types.WorkspaceJoinRequestApproveDialog_WorkspaceJoinRequestFragmentDoc,
|
||||
"\n fragment WorkspaceSidebarAbout_Workspace on Workspace {\n ...WorkspaceDashboardAbout_Workspace\n }\n": typeof types.WorkspaceSidebarAbout_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceSidebarSecurity_Workspace on Workspace {\n ...WorkspaceSecurity_Workspace\n }\n": typeof types.WorkspaceSidebarSecurity_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceSidebar_Workspace on Workspace {\n ...WorkspaceDashboardAbout_Workspace\n ...WorkspaceTeam_Workspace\n ...WorkspaceSecurity_Workspace\n slug\n plan {\n status\n }\n }\n": typeof types.WorkspaceSidebar_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceWizard_Workspace on Workspace {\n creationState {\n completed\n state\n }\n name\n slug\n }\n": typeof types.WorkspaceWizard_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceWizardStepRegion_ServerInfo on ServerInfo {\n multiRegion {\n regions {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n }\n }\n": typeof types.WorkspaceWizardStepRegion_ServerInfoFragmentDoc,
|
||||
"\n query ActiveUserMainMetadata {\n activeUser {\n id\n email\n emails {\n id\n verified\n }\n company\n bio\n name\n role\n avatar\n isOnboardingFinished\n createdAt\n verified\n notificationPreferences\n versions(limit: 0) {\n totalCount\n }\n }\n }\n": typeof types.ActiveUserMainMetadataDocument,
|
||||
"\n mutation CreateOnboardingProject {\n projectMutations {\n createForOnboarding {\n ...ProjectPageProject\n ...ProjectDashboardItem\n }\n }\n }\n ": typeof types.CreateOnboardingProjectDocument,
|
||||
"\n mutation FinishOnboarding {\n activeUserMutations {\n finishOnboarding\n }\n }\n": typeof types.FinishOnboardingDocument,
|
||||
"\n mutation RequestVerificationByEmail($email: String!) {\n requestVerificationByEmail(email: $email)\n }\n": typeof types.RequestVerificationByEmailDocument,
|
||||
"\n query AuthLoginPanel {\n serverInfo {\n authStrategies {\n id\n }\n ...AuthStategiesServerInfoFragment\n }\n }\n": typeof types.AuthLoginPanelDocument,
|
||||
"\n query AuthRegisterPanel($token: String) {\n serverInfo {\n inviteOnly\n authStrategies {\n id\n }\n ...AuthStategiesServerInfoFragment\n ...ServerTermsOfServicePrivacyPolicyFragment\n }\n serverInviteByToken(token: $token) {\n id\n email\n }\n }\n": typeof types.AuthRegisterPanelDocument,
|
||||
"\n query AuthLoginPanelWorkspaceInvite($token: String) {\n workspaceInvite(token: $token) {\n id\n email\n ...AuthWorkspaceInviteHeader_PendingWorkspaceCollaborator\n ...AuthLoginWithEmailBlock_PendingWorkspaceCollaborator\n }\n }\n": typeof types.AuthLoginPanelWorkspaceInviteDocument,
|
||||
"\n query AuthorizableAppMetadata($id: String!) {\n app(id: $id) {\n id\n name\n description\n trustByDefault\n redirectUrl\n scopes {\n name\n description\n }\n author {\n name\n id\n avatar\n }\n }\n }\n": typeof types.AuthorizableAppMetadataDocument,
|
||||
"\n fragment FunctionRunStatusForSummary on AutomateFunctionRun {\n id\n status\n }\n": typeof types.FunctionRunStatusForSummaryFragmentDoc,
|
||||
"\n fragment TriggeredAutomationsStatusSummary on TriggeredAutomationsStatus {\n id\n automationRuns {\n id\n functionRuns {\n id\n ...FunctionRunStatusForSummary\n }\n }\n }\n": typeof types.TriggeredAutomationsStatusSummaryFragmentDoc,
|
||||
"\n fragment AutomationRunDetails on AutomateRun {\n id\n status\n functionRuns {\n ...FunctionRunStatusForSummary\n statusMessage\n }\n trigger {\n ... on VersionCreatedTrigger {\n version {\n id\n }\n model {\n id\n }\n }\n }\n createdAt\n updatedAt\n }\n": typeof types.AutomationRunDetailsFragmentDoc,
|
||||
"\n fragment AutomationsStatusOrderedRuns_AutomationRun on AutomateRun {\n id\n automation {\n id\n name\n }\n functionRuns {\n id\n updatedAt\n }\n }\n": typeof types.AutomationsStatusOrderedRuns_AutomationRunFragmentDoc,
|
||||
"\n fragment SearchAutomateFunctionReleaseItem on AutomateFunctionRelease {\n id\n versionTag\n createdAt\n inputSchema\n }\n": typeof types.SearchAutomateFunctionReleaseItemFragmentDoc,
|
||||
"\n mutation CreateAutomateFunction($input: CreateAutomateFunctionInput!) {\n automateMutations {\n createFunction(input: $input) {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateFunctionCreateDialogDoneStep_AutomateFunction\n }\n }\n }\n": typeof types.CreateAutomateFunctionDocument,
|
||||
"\n mutation UpdateAutomateFunction($input: UpdateAutomateFunctionInput!) {\n automateMutations {\n updateFunction(input: $input) {\n id\n ...AutomateFunctionPage_AutomateFunction\n }\n }\n }\n": typeof types.UpdateAutomateFunctionDocument,
|
||||
"\n query SearchAutomateFunctionReleases(\n $functionId: ID!\n $cursor: String\n $limit: Int\n $filter: AutomateFunctionReleasesFilter\n ) {\n automateFunction(id: $functionId) {\n id\n releases(cursor: $cursor, limit: $limit, filter: $filter) {\n cursor\n totalCount\n items {\n ...SearchAutomateFunctionReleaseItem\n }\n }\n }\n }\n": typeof types.SearchAutomateFunctionReleasesDocument,
|
||||
"\n query FunctionAccessCheck($id: ID!) {\n automateFunction(id: $id) {\n id\n }\n }\n": typeof types.FunctionAccessCheckDocument,
|
||||
"\n query ProjectAutomationCreationPublicKeys(\n $projectId: String!\n $automationId: String!\n ) {\n project(id: $projectId) {\n id\n automation(id: $automationId) {\n id\n creationPublicKeys\n }\n }\n }\n": typeof types.ProjectAutomationCreationPublicKeysDocument,
|
||||
"\n query AutomateFunctionsPagePagination($search: String, $cursor: String) {\n ...AutomateFunctionsPageItems_Query\n }\n": typeof types.AutomateFunctionsPagePaginationDocument,
|
||||
"\n query ActiveUserFunctions {\n activeUser {\n automateFunctions(limit: 2) {\n items {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n }\n }\n }\n }\n": typeof types.ActiveUserFunctionsDocument,
|
||||
"\n fragment BillingActions_Workspace on Workspace {\n id\n name\n invitedTeam(filter: $invitesFilter) {\n id\n }\n plan {\n name\n status\n }\n subscription {\n billingInterval\n }\n team {\n totalCount\n }\n defaultRegion {\n name\n }\n }\n": typeof types.BillingActions_WorkspaceFragmentDoc,
|
||||
"\n mutation BillingCreateCheckoutSession($input: CheckoutSessionInput!) {\n workspaceMutations {\n billing {\n createCheckoutSession(input: $input) {\n url\n id\n }\n }\n }\n }\n": typeof types.BillingCreateCheckoutSessionDocument,
|
||||
"\n mutation BillingUpgradePlan($input: UpgradePlanInput!) {\n workspaceMutations {\n billing {\n upgradePlan(input: $input)\n }\n }\n }\n": typeof types.BillingUpgradePlanDocument,
|
||||
"\n mutation AdminUpdateWorkspacePlan($input: AdminUpdateWorkspacePlanInput!) {\n admin {\n updateWorkspacePlan(input: $input)\n }\n }\n": typeof types.AdminUpdateWorkspacePlanDocument,
|
||||
"\n query MentionsUserSearch($query: String!, $projectId: String) {\n users(input: { query: $query, limit: 5, cursor: null, projectId: $projectId }) {\n items {\n id\n name\n company\n }\n }\n }\n": typeof types.MentionsUserSearchDocument,
|
||||
"\n query UserSearch(\n $query: String!\n $limit: Int\n $cursor: String\n $archived: Boolean\n $workspaceId: String\n ) {\n userSearch(query: $query, limit: $limit, cursor: $cursor, archived: $archived) {\n cursor\n items {\n id\n name\n bio\n company\n avatar\n verified\n role\n workspaceDomainPolicyCompliant(workspaceId: $workspaceId)\n }\n }\n }\n": typeof types.UserSearchDocument,
|
||||
"\n query ServerInfoBlobSizeLimit {\n serverInfo {\n configuration {\n blobSizeLimitBytes\n }\n }\n }\n": typeof types.ServerInfoBlobSizeLimitDocument,
|
||||
"\n query ServerInfoAllScopes {\n serverInfo {\n scopes {\n name\n description\n }\n }\n }\n": typeof types.ServerInfoAllScopesDocument,
|
||||
"\n query ProjectModelsSelectorValues($projectId: String!, $cursor: String) {\n project(id: $projectId) {\n id\n models(limit: 100, cursor: $cursor) {\n cursor\n totalCount\n items {\n ...CommonModelSelectorModel\n }\n }\n }\n }\n": typeof types.ProjectModelsSelectorValuesDocument,
|
||||
"\n query MainServerInfoData {\n serverInfo {\n adminContact\n canonicalUrl\n company\n description\n guestModeEnabled\n inviteOnly\n name\n termsOfService\n version\n automateUrl\n }\n }\n": typeof types.MainServerInfoDataDocument,
|
||||
"\n mutation DashboardRequestToJoinWorkspace($input: WorkspaceRequestToJoinInput!) {\n workspaceMutations {\n requestToJoin(input: $input)\n }\n }\n": typeof types.DashboardRequestToJoinWorkspaceDocument,
|
||||
"\n query DashboardProjectsPageQuery {\n activeUser {\n id\n projects(limit: 3) {\n items {\n ...DashboardProjectCard_Project\n }\n }\n ...ProjectsDashboardHeaderProjects_User\n }\n }\n": typeof types.DashboardProjectsPageQueryDocument,
|
||||
"\n query DashboardProjectsPageWorkspaceQuery {\n activeUser {\n id\n ...ProjectsDashboardHeaderWorkspaces_User\n }\n }\n": typeof types.DashboardProjectsPageWorkspaceQueryDocument,
|
||||
"\n mutation DeleteAccessToken($token: String!) {\n apiTokenRevoke(token: $token)\n }\n": typeof types.DeleteAccessTokenDocument,
|
||||
"\n mutation CreateAccessToken($token: ApiTokenCreateInput!) {\n apiTokenCreate(token: $token)\n }\n": typeof types.CreateAccessTokenDocument,
|
||||
"\n mutation DeleteApplication($appId: String!) {\n appDelete(appId: $appId)\n }\n": typeof types.DeleteApplicationDocument,
|
||||
"\n mutation CreateApplication($app: AppCreateInput!) {\n appCreate(app: $app)\n }\n": typeof types.CreateApplicationDocument,
|
||||
"\n mutation EditApplication($app: AppUpdateInput!) {\n appUpdate(app: $app)\n }\n": typeof types.EditApplicationDocument,
|
||||
"\n mutation RevokeAppAccess($appId: String!) {\n appRevokeAccess(appId: $appId)\n }\n": typeof types.RevokeAppAccessDocument,
|
||||
"\n query DeveloperSettingsAccessTokens {\n activeUser {\n id\n apiTokens {\n id\n name\n lastUsed\n lastChars\n createdAt\n scopes\n }\n }\n }\n": typeof types.DeveloperSettingsAccessTokensDocument,
|
||||
"\n query DeveloperSettingsApplications {\n activeUser {\n createdApps {\n id\n secret\n name\n description\n redirectUrl\n scopes {\n name\n description\n }\n }\n id\n }\n }\n": typeof types.DeveloperSettingsApplicationsDocument,
|
||||
"\n query DeveloperSettingsAuthorizedApps {\n activeUser {\n id\n authorizedApps {\n id\n description\n name\n author {\n id\n name\n avatar\n }\n }\n }\n }\n": typeof types.DeveloperSettingsAuthorizedAppsDocument,
|
||||
"\n query SearchProjects(\n $search: String\n $onlyWithRoles: [String!] = null\n $workspaceId: ID\n ) {\n activeUser {\n projects(\n limit: 10\n filter: {\n search: $search\n onlyWithRoles: $onlyWithRoles\n workspaceId: $workspaceId\n }\n ) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n": typeof types.SearchProjectsDocument,
|
||||
"\n query SearchProjectModels($search: String, $projectId: String!) {\n project(id: $projectId) {\n id\n models(limit: 10, filter: { search: $search }) {\n totalCount\n items {\n ...FormSelectModels_Model\n }\n }\n }\n }\n": typeof types.SearchProjectModelsDocument,
|
||||
"\n query ActiveUserGendoLimits {\n activeUser {\n id\n gendoAICredits {\n used\n limit\n resetDate\n }\n }\n }\n": typeof types.ActiveUserGendoLimitsDocument,
|
||||
"\n mutation requestGendoAIRender($input: GendoAIRenderInput!) {\n versionMutations {\n requestGendoAIRender(input: $input)\n }\n }\n": typeof types.RequestGendoAiRenderDocument,
|
||||
"\n query GendoAIRender(\n $gendoAiRenderId: String!\n $versionId: String!\n $projectId: String!\n ) {\n project(id: $projectId) {\n id\n version(id: $versionId) {\n id\n gendoAIRender(id: $gendoAiRenderId) {\n id\n projectId\n modelId\n versionId\n createdAt\n updatedAt\n gendoGenerationId\n status\n prompt\n camera\n responseImage\n user {\n name\n avatar\n id\n }\n }\n }\n }\n }\n": typeof types.GendoAiRenderDocument,
|
||||
"\n query GendoAIRenders($versionId: String!, $projectId: String!) {\n project(id: $projectId) {\n id\n version(id: $versionId) {\n id\n gendoAIRenders {\n totalCount\n items {\n id\n createdAt\n updatedAt\n status\n gendoGenerationId\n prompt\n camera\n }\n }\n }\n }\n }\n": typeof types.GendoAiRendersDocument,
|
||||
"\n subscription ProjectVersionGendoAIRenderCreated($id: String!, $versionId: String!) {\n projectVersionGendoAIRenderCreated(id: $id, versionId: $versionId) {\n id\n createdAt\n updatedAt\n status\n gendoGenerationId\n prompt\n camera\n }\n }\n": typeof types.ProjectVersionGendoAiRenderCreatedDocument,
|
||||
"\n subscription ProjectVersionGendoAIRenderUpdated($id: String!, $versionId: String!) {\n projectVersionGendoAIRenderUpdated(id: $id, versionId: $versionId) {\n id\n projectId\n modelId\n versionId\n createdAt\n updatedAt\n gendoGenerationId\n status\n prompt\n camera\n responseImage\n }\n }\n": typeof types.ProjectVersionGendoAiRenderUpdatedDocument,
|
||||
"\n query InviteUserSearch($input: UsersRetrievalInput!) {\n users(input: $input) {\n items {\n id\n name\n avatar\n }\n }\n }\n": typeof types.InviteUserSearchDocument,
|
||||
"\n mutation CreateNewRegion($input: CreateServerRegionInput!) {\n serverInfoMutations {\n multiRegion {\n create(input: $input) {\n id\n ...SettingsServerRegionsAddEditDialog_ServerRegionItem\n ...SettingsServerRegionsTable_ServerRegionItem\n }\n }\n }\n }\n": typeof types.CreateNewRegionDocument,
|
||||
"\n mutation UpdateRegion($input: UpdateServerRegionInput!) {\n serverInfoMutations {\n multiRegion {\n update(input: $input) {\n id\n ...SettingsServerRegionsAddEditDialog_ServerRegionItem\n ...SettingsServerRegionsTable_ServerRegionItem\n }\n }\n }\n }\n": typeof types.UpdateRegionDocument,
|
||||
"\n query PagesOnboardingDiscoverableWorkspaces_ActiveUser {\n activeUser {\n id\n ...PagesOnboarding_DiscoverableWorkspaces\n }\n }\n": typeof types.PagesOnboardingDiscoverableWorkspaces_ActiveUserDocument,
|
||||
"\n fragment ProjectPageTeamInternals_Project on Project {\n id\n role\n invitedTeam {\n id\n title\n role\n inviteId\n user {\n role\n ...LimitedUserAvatar\n }\n }\n team {\n role\n user {\n id\n role\n ...LimitedUserAvatar\n }\n }\n }\n": typeof types.ProjectPageTeamInternals_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageTeamInternals_Workspace on Workspace {\n id\n team {\n items {\n id\n role\n user {\n id\n }\n }\n }\n }\n": typeof types.ProjectPageTeamInternals_WorkspaceFragmentDoc,
|
||||
"\n fragment ProjectDashboardItemNoModels on Project {\n id\n name\n createdAt\n updatedAt\n role\n team {\n id\n user {\n id\n name\n avatar\n }\n }\n ...ProjectPageModelsCardProject\n }\n": typeof types.ProjectDashboardItemNoModelsFragmentDoc,
|
||||
"\n fragment ProjectDashboardItem on Project {\n id\n ...ProjectDashboardItemNoModels\n models(limit: 4) {\n totalCount\n items {\n ...ProjectPageLatestItemsModelItem\n }\n }\n workspace {\n id\n slug\n name\n logo\n readOnly\n }\n pendingImportedModels(limit: 4) {\n ...PendingFileUpload\n }\n }\n": typeof types.ProjectDashboardItemFragmentDoc,
|
||||
"\n fragment PendingFileUpload on FileUpload {\n id\n projectId\n modelName\n convertedStatus\n convertedMessage\n uploadDate\n convertedLastUpdate\n fileType\n fileName\n }\n": typeof types.PendingFileUploadFragmentDoc,
|
||||
"\n fragment ProjectPageLatestItemsModelItem on Model {\n id\n name\n displayName\n versionCount: versions(limit: 0) {\n totalCount\n }\n commentThreadCount: commentThreads(limit: 0) {\n totalCount\n }\n pendingImportedVersions(limit: 1) {\n ...PendingFileUpload\n }\n previewUrl\n createdAt\n updatedAt\n ...ProjectPageModelsCardRenameDialog\n ...ProjectPageModelsCardDeleteDialog\n ...ProjectPageModelsActions\n automationsStatus {\n ...AutomateRunsTriggerStatus_TriggeredAutomationsStatus\n }\n }\n": typeof types.ProjectPageLatestItemsModelItemFragmentDoc,
|
||||
"\n fragment ProjectUpdatableMetadata on Project {\n id\n name\n description\n visibility\n allowPublicComments\n }\n": typeof types.ProjectUpdatableMetadataFragmentDoc,
|
||||
"\n fragment ProjectPageLatestItemsModels on Project {\n id\n role\n visibility\n workspace {\n id\n readOnly\n }\n modelCount: models(limit: 0) {\n totalCount\n }\n ...ProjectPageModelsStructureItem_Project\n }\n": typeof types.ProjectPageLatestItemsModelsFragmentDoc,
|
||||
"\n fragment ProjectPageLatestItemsComments on Project {\n id\n commentThreadCount: commentThreads(limit: 0) {\n totalCount\n }\n }\n": typeof types.ProjectPageLatestItemsCommentsFragmentDoc,
|
||||
"\n fragment ProjectPageLatestItemsCommentItem on Comment {\n id\n author {\n ...FormUsersSelectItem\n }\n screenshot\n rawText\n createdAt\n updatedAt\n archived\n repliesCount: replies(limit: 0) {\n totalCount\n }\n replyAuthors(limit: 4) {\n totalCount\n items {\n ...FormUsersSelectItem\n }\n }\n }\n": typeof types.ProjectPageLatestItemsCommentItemFragmentDoc,
|
||||
"\n mutation CreateModel($input: CreateModelInput!) {\n modelMutations {\n create(input: $input) {\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n": typeof types.CreateModelDocument,
|
||||
"\n mutation CreateProject($input: ProjectCreateInput) {\n projectMutations {\n create(input: $input) {\n ...ProjectPageProject\n ...ProjectDashboardItem\n }\n }\n }\n": typeof types.CreateProjectDocument,
|
||||
"\n mutation CreateWorkspaceProject($input: WorkspaceProjectCreateInput!) {\n workspaceMutations {\n projects {\n create(input: $input) {\n ...ProjectPageProject\n ...ProjectDashboardItem\n }\n }\n }\n }\n": typeof types.CreateWorkspaceProjectDocument,
|
||||
"\n mutation UpdateModel($input: UpdateModelInput!) {\n modelMutations {\n update(input: $input) {\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n": typeof types.UpdateModelDocument,
|
||||
"\n mutation DeleteModel($input: DeleteModelInput!) {\n modelMutations {\n delete(input: $input)\n }\n }\n": typeof types.DeleteModelDocument,
|
||||
"\n mutation UpdateProjectRole($input: ProjectUpdateRoleInput!) {\n projectMutations {\n updateRole(input: $input) {\n id\n team {\n id\n role\n user {\n ...LimitedUserAvatar\n }\n }\n }\n }\n }\n": typeof types.UpdateProjectRoleDocument,
|
||||
"\n mutation UpdateWorkspaceProjectRole($input: ProjectUpdateRoleInput!) {\n workspaceMutations {\n projects {\n updateRole(input: $input) {\n id\n team {\n id\n role\n }\n }\n }\n }\n }\n": typeof types.UpdateWorkspaceProjectRoleDocument,
|
||||
"\n mutation InviteProjectUser($projectId: ID!, $input: [ProjectInviteCreateInput!]!) {\n projectMutations {\n invites {\n batchCreate(projectId: $projectId, input: $input) {\n ...ProjectPageTeamDialog\n }\n }\n }\n }\n": typeof types.InviteProjectUserDocument,
|
||||
"\n mutation InviteWorkspaceProjectUser(\n $projectId: ID!\n $inputs: [WorkspaceProjectInviteCreateInput!]!\n ) {\n projectMutations {\n invites {\n createForWorkspace(projectId: $projectId, inputs: $inputs) {\n ...ProjectPageTeamDialog\n }\n }\n }\n }\n": typeof types.InviteWorkspaceProjectUserDocument,
|
||||
"\n mutation CancelProjectInvite($projectId: ID!, $inviteId: String!) {\n projectMutations {\n invites {\n cancel(projectId: $projectId, inviteId: $inviteId) {\n ...ProjectPageTeamDialog\n }\n }\n }\n }\n": typeof types.CancelProjectInviteDocument,
|
||||
"\n mutation UpdateProjectMetadata($update: ProjectUpdateInput!) {\n projectMutations {\n update(update: $update) {\n id\n ...ProjectUpdatableMetadata\n }\n }\n }\n": typeof types.UpdateProjectMetadataDocument,
|
||||
"\n mutation DeleteProject($id: String!) {\n projectMutations {\n delete(id: $id)\n }\n }\n": typeof types.DeleteProjectDocument,
|
||||
"\n mutation UseProjectInvite($input: ProjectInviteUseInput!) {\n projectMutations {\n invites {\n use(input: $input)\n }\n }\n }\n": typeof types.UseProjectInviteDocument,
|
||||
"\n mutation LeaveProject($projectId: String!) {\n projectMutations {\n leave(id: $projectId)\n }\n }\n": typeof types.LeaveProjectDocument,
|
||||
"\n mutation DeleteVersions($input: DeleteVersionsInput!) {\n versionMutations {\n delete(input: $input)\n }\n }\n": typeof types.DeleteVersionsDocument,
|
||||
"\n mutation MoveVersions($input: MoveVersionsInput!) {\n versionMutations {\n moveToModel(input: $input) {\n id\n }\n }\n }\n": typeof types.MoveVersionsDocument,
|
||||
"\n mutation UpdateVersion($input: UpdateVersionInput!) {\n versionMutations {\n update(input: $input) {\n id\n message\n }\n }\n }\n": typeof types.UpdateVersionDocument,
|
||||
"\n mutation deleteWebhook($webhook: WebhookDeleteInput!) {\n webhookDelete(webhook: $webhook)\n }\n": typeof types.DeleteWebhookDocument,
|
||||
"\n mutation createWebhook($webhook: WebhookCreateInput!) {\n webhookCreate(webhook: $webhook)\n }\n": typeof types.CreateWebhookDocument,
|
||||
"\n mutation updateWebhook($webhook: WebhookUpdateInput!) {\n webhookUpdate(webhook: $webhook)\n }\n": typeof types.UpdateWebhookDocument,
|
||||
"\n mutation CreateAutomation($projectId: ID!, $input: ProjectAutomationCreateInput!) {\n projectMutations {\n automationMutations(projectId: $projectId) {\n create(input: $input) {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n }\n }\n }\n": typeof types.CreateAutomationDocument,
|
||||
"\n mutation UpdateAutomation($projectId: ID!, $input: ProjectAutomationUpdateInput!) {\n projectMutations {\n automationMutations(projectId: $projectId) {\n update(input: $input) {\n id\n name\n enabled\n }\n }\n }\n }\n": typeof types.UpdateAutomationDocument,
|
||||
"\n mutation CreateAutomationRevision(\n $projectId: ID!\n $input: ProjectAutomationRevisionCreateInput!\n ) {\n projectMutations {\n automationMutations(projectId: $projectId) {\n createRevision(input: $input) {\n id\n }\n }\n }\n }\n": typeof types.CreateAutomationRevisionDocument,
|
||||
"\n mutation TriggerAutomation($projectId: ID!, $automationId: ID!) {\n projectMutations {\n automationMutations(projectId: $projectId) {\n trigger(automationId: $automationId)\n }\n }\n }\n": typeof types.TriggerAutomationDocument,
|
||||
"\n mutation CreateTestAutomation(\n $projectId: ID!\n $input: ProjectTestAutomationCreateInput!\n ) {\n projectMutations {\n automationMutations(projectId: $projectId) {\n createTestAutomation(input: $input) {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n }\n }\n }\n": typeof types.CreateTestAutomationDocument,
|
||||
"\n mutation MoveProjectToWorkspace($workspaceId: String!, $projectId: String!) {\n workspaceMutations {\n projects {\n moveToWorkspace(workspaceId: $workspaceId, projectId: $projectId) {\n id\n workspace {\n id\n projects {\n items {\n id\n }\n }\n ...ProjectsMoveToWorkspaceDialog_Workspace\n ...MoveProjectsDialog_Workspace\n }\n }\n }\n }\n }\n": typeof types.MoveProjectToWorkspaceDocument,
|
||||
"\n query ProjectAccessCheck($id: String!) {\n project(id: $id) {\n id\n visibility\n workspace {\n id\n slug\n }\n }\n }\n": typeof types.ProjectAccessCheckDocument,
|
||||
"\n query ProjectRoleCheck($id: String!) {\n project(id: $id) {\n id\n role\n }\n }\n": typeof types.ProjectRoleCheckDocument,
|
||||
"\n query ProjectsDashboardQuery($filter: UserProjectsFilter, $cursor: String) {\n activeUser {\n id\n projects(filter: $filter, limit: 6, cursor: $cursor) {\n ...ProjectsDashboard_UserProjectCollection\n cursor\n totalCount\n items {\n ...ProjectDashboardItem\n }\n }\n ...ProjectsHiddenProjectWarning_User\n ...ProjectsDashboardHeaderProjects_User\n }\n }\n": typeof types.ProjectsDashboardQueryDocument,
|
||||
"\n query ProjectsDashboardWorkspaceQuery {\n activeUser {\n id\n ...ProjectsDashboardHeaderWorkspaces_User\n }\n }\n": typeof types.ProjectsDashboardWorkspaceQueryDocument,
|
||||
"\n query ProjectPageQuery($id: String!, $token: String) {\n project(id: $id) {\n ...ProjectPageProject\n }\n projectInvite(projectId: $id, token: $token) {\n ...ProjectsInviteBanner\n }\n }\n": typeof types.ProjectPageQueryDocument,
|
||||
"\n query ProjectLatestModels($projectId: String!, $filter: ProjectModelsFilter) {\n project(id: $projectId) {\n id\n models(cursor: null, limit: 16, filter: $filter) {\n totalCount\n cursor\n items {\n ...ProjectPageLatestItemsModelItem\n }\n }\n pendingImportedModels {\n ...PendingFileUpload\n }\n }\n }\n": typeof types.ProjectLatestModelsDocument,
|
||||
"\n query ProjectLatestModelsPagination(\n $projectId: String!\n $filter: ProjectModelsFilter\n $cursor: String = null\n ) {\n project(id: $projectId) {\n id\n models(cursor: $cursor, limit: 16, filter: $filter) {\n totalCount\n cursor\n items {\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n }\n": typeof types.ProjectLatestModelsPaginationDocument,
|
||||
"\n query ProjectModelsTreeTopLevel(\n $projectId: String!\n $filter: ProjectModelsTreeFilter\n ) {\n project(id: $projectId) {\n id\n modelsTree(cursor: null, limit: 8, filter: $filter) {\n totalCount\n cursor\n items {\n ...SingleLevelModelTreeItem\n }\n }\n pendingImportedModels {\n ...PendingFileUpload\n }\n }\n }\n": typeof types.ProjectModelsTreeTopLevelDocument,
|
||||
"\n query ProjectModelsTreeTopLevelPagination(\n $projectId: String!\n $filter: ProjectModelsTreeFilter\n $cursor: String = null\n ) {\n project(id: $projectId) {\n id\n modelsTree(cursor: $cursor, limit: 8, filter: $filter) {\n totalCount\n cursor\n items {\n ...SingleLevelModelTreeItem\n }\n }\n }\n }\n": typeof types.ProjectModelsTreeTopLevelPaginationDocument,
|
||||
"\n query ProjectModelChildrenTree($projectId: String!, $parentName: String!) {\n project(id: $projectId) {\n id\n modelChildrenTree(fullName: $parentName) {\n ...SingleLevelModelTreeItem\n }\n }\n }\n": typeof types.ProjectModelChildrenTreeDocument,
|
||||
"\n query ProjectLatestCommentThreads(\n $projectId: String!\n $cursor: String = null\n $filter: ProjectCommentsFilter = null\n ) {\n project(id: $projectId) {\n id\n commentThreads(cursor: $cursor, limit: 8, filter: $filter) {\n totalCount\n cursor\n items {\n ...ProjectPageLatestItemsCommentItem\n }\n }\n }\n }\n": typeof types.ProjectLatestCommentThreadsDocument,
|
||||
"\n query ProjectInvite($projectId: String!, $token: String) {\n projectInvite(projectId: $projectId, token: $token) {\n ...ProjectsInviteBanner\n }\n }\n": typeof types.ProjectInviteDocument,
|
||||
"\n query ProjectModelCheck($projectId: String!, $modelId: String!) {\n project(id: $projectId) {\n visibility\n model(id: $modelId) {\n id\n }\n }\n }\n": typeof types.ProjectModelCheckDocument,
|
||||
"\n query ProjectModelPage(\n $projectId: String!\n $modelId: String!\n $versionsCursor: String\n ) {\n project(id: $projectId) {\n id\n ...ProjectModelPageHeaderProject\n ...ProjectModelPageVersionsProject\n }\n }\n": typeof types.ProjectModelPageDocument,
|
||||
"\n query ProjectModelVersions(\n $projectId: String!\n $modelId: String!\n $versionsCursor: String\n ) {\n project(id: $projectId) {\n id\n ...ProjectModelPageVersionsPagination\n }\n }\n": typeof types.ProjectModelVersionsDocument,
|
||||
"\n query ProjectModelsPage($projectId: String!) {\n project(id: $projectId) {\n id\n ...ProjectModelsPageHeader_Project\n ...ProjectModelsPageResults_Project\n }\n }\n": typeof types.ProjectModelsPageDocument,
|
||||
"\n query ProjectDiscussionsPage($projectId: String!) {\n project(id: $projectId) {\n id\n ...ProjectDiscussionsPageHeader_Project\n ...ProjectDiscussionsPageResults_Project\n }\n }\n": typeof types.ProjectDiscussionsPageDocument,
|
||||
"\n query ProjectAutomationsTab($projectId: String!) {\n project(id: $projectId) {\n id\n role\n models(limit: 1) {\n items {\n id\n }\n }\n automations(filter: null, cursor: null, limit: 5) {\n totalCount\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n cursor\n }\n workspace {\n id\n automateFunctions(limit: 0) {\n totalCount\n }\n ...AutomateFunctionCreateDialog_Workspace\n }\n ...FormSelectProjects_Project\n }\n ...AutomateFunctionsPageHeader_Query\n }\n": typeof types.ProjectAutomationsTabDocument,
|
||||
"\n query ProjectAutomationsTabAutomationsPagination(\n $projectId: String!\n $search: String = null\n $cursor: String = null\n ) {\n project(id: $projectId) {\n id\n automations(filter: $search, cursor: $cursor, limit: 5) {\n totalCount\n cursor\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n }\n }\n }\n": typeof types.ProjectAutomationsTabAutomationsPaginationDocument,
|
||||
"\n query ProjectAutomationPage($projectId: String!, $automationId: String!) {\n project(id: $projectId) {\n id\n ...ProjectPageAutomationPage_Project\n automation(id: $automationId) {\n id\n ...ProjectPageAutomationPage_Automation\n }\n }\n }\n": typeof types.ProjectAutomationPageDocument,
|
||||
"\n query ProjectAutomationPagePaginatedRuns(\n $projectId: String!\n $automationId: String!\n $cursor: String = null\n ) {\n project(id: $projectId) {\n id\n automation(id: $automationId) {\n id\n runs(cursor: $cursor, limit: 10) {\n totalCount\n cursor\n items {\n id\n ...AutomationRunDetails\n }\n }\n }\n }\n }\n": typeof types.ProjectAutomationPagePaginatedRunsDocument,
|
||||
"\n query ProjectAutomationAccessCheck($projectId: String!) {\n project(id: $projectId) {\n id\n automations(limit: 0) {\n totalCount\n }\n }\n }\n": typeof types.ProjectAutomationAccessCheckDocument,
|
||||
"\n query ProjectWebhooks($projectId: String!) {\n project(id: $projectId) {\n id\n name\n webhooks {\n items {\n streamId\n triggers\n enabled\n url\n id\n description\n history(limit: 5) {\n items {\n status\n statusInfo\n }\n }\n }\n totalCount\n }\n }\n }\n": typeof types.ProjectWebhooksDocument,
|
||||
"\n query ProjectBlobInfo($blobId: String!, $projectId: String!) {\n project(id: $projectId) {\n id\n blob(id: $blobId) {\n id\n fileName\n fileType\n fileSize\n createdAt\n }\n }\n }\n": typeof types.ProjectBlobInfoDocument,
|
||||
"\n query ProjectWorkspaceSelect {\n activeUser {\n id\n ...ProjectsAddDialog_User\n }\n }\n": typeof types.ProjectWorkspaceSelectDocument,
|
||||
"\n subscription OnProjectUpdated($id: String!) {\n projectUpdated(id: $id) {\n id\n type\n project {\n ...ProjectPageProject\n ...ProjectDashboardItemNoModels\n }\n }\n }\n": typeof types.OnProjectUpdatedDocument,
|
||||
"\n subscription OnProjectModelsUpdate($id: String!) {\n projectModelsUpdated(id: $id) {\n id\n type\n model {\n id\n versions(limit: 1) {\n items {\n id\n referencedObject\n }\n }\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n": typeof types.OnProjectModelsUpdateDocument,
|
||||
"\n subscription OnProjectVersionsUpdate($id: String!) {\n projectVersionsUpdated(id: $id) {\n id\n modelId\n type\n version {\n id\n ...ViewerModelVersionCardItem\n ...ProjectModelPageVersionsCardVersion\n model {\n id\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n }\n": typeof types.OnProjectVersionsUpdateDocument,
|
||||
"\n subscription OnProjectVersionsPreviewGenerated($id: String!) {\n projectVersionsPreviewGenerated(id: $id) {\n projectId\n objectId\n versionId\n }\n }\n": typeof types.OnProjectVersionsPreviewGeneratedDocument,
|
||||
"\n subscription OnProjectPendingModelsUpdated($id: String!) {\n projectPendingModelsUpdated(id: $id) {\n id\n type\n model {\n ...PendingFileUpload\n model {\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n }\n": typeof types.OnProjectPendingModelsUpdatedDocument,
|
||||
"\n subscription OnProjectPendingVersionsUpdated($id: String!) {\n projectPendingVersionsUpdated(id: $id) {\n id\n type\n version {\n ...PendingFileUpload\n model {\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n }\n": typeof types.OnProjectPendingVersionsUpdatedDocument,
|
||||
"\n subscription OnProjectTriggeredAutomationsStatusUpdated($id: String!) {\n projectTriggeredAutomationsStatusUpdated(projectId: $id) {\n type\n version {\n id\n automationsStatus {\n automationRuns {\n ...AutomateViewerPanel_AutomateRun\n }\n ...TriggeredAutomationsStatusSummary\n ...AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatus\n }\n }\n model {\n id\n }\n run {\n id\n automationId\n ...AutomationRunDetails\n }\n }\n }\n": typeof types.OnProjectTriggeredAutomationsStatusUpdatedDocument,
|
||||
"\n subscription OnProjectAutomationsUpdated($id: String!) {\n projectAutomationsUpdated(projectId: $id) {\n type\n automationId\n automation {\n id\n ...ProjectPageAutomationPage_Automation\n ...ProjectPageAutomationsRow_Automation\n }\n }\n }\n": typeof types.OnProjectAutomationsUpdatedDocument,
|
||||
"\n mutation ServerInfoUpdate($info: ServerInfoUpdateInput!) {\n serverInfoUpdate(info: $info)\n }\n": typeof types.ServerInfoUpdateDocument,
|
||||
"\n mutation AdminPanelDeleteUser($userConfirmation: UserDeleteInput!) {\n adminDeleteUser(userConfirmation: $userConfirmation)\n }\n": typeof types.AdminPanelDeleteUserDocument,
|
||||
"\n mutation AdminPanelDeleteProject($ids: [String!]!) {\n projectMutations {\n batchDelete(ids: $ids)\n }\n }\n": typeof types.AdminPanelDeleteProjectDocument,
|
||||
"\n mutation AdminPanelResendInvite($inviteId: String!) {\n inviteResend(inviteId: $inviteId)\n }\n": typeof types.AdminPanelResendInviteDocument,
|
||||
"\n mutation AdminPanelDeleteInvite($inviteId: String!) {\n inviteDelete(inviteId: $inviteId)\n }\n": typeof types.AdminPanelDeleteInviteDocument,
|
||||
"\n mutation AdminChangeUseRole($userRoleInput: UserRoleInput!) {\n userRoleChange(userRoleInput: $userRoleInput)\n }\n": typeof types.AdminChangeUseRoleDocument,
|
||||
"\n query ServerManagementDataPage {\n admin {\n userList {\n totalCount\n }\n projectList {\n totalCount\n }\n inviteList {\n totalCount\n }\n }\n serverInfo {\n name\n version\n }\n }\n": typeof types.ServerManagementDataPageDocument,
|
||||
"\n query ServerSettingsDialogData {\n serverInfo {\n name\n description\n adminContact\n company\n termsOfService\n inviteOnly\n guestModeEnabled\n }\n }\n": typeof types.ServerSettingsDialogDataDocument,
|
||||
"\n query AdminPanelUsersList($limit: Int!, $cursor: String, $query: String) {\n admin {\n userList(limit: $limit, cursor: $cursor, query: $query) {\n totalCount\n cursor\n items {\n id\n email\n avatar\n name\n role\n verified\n company\n }\n }\n }\n }\n": typeof types.AdminPanelUsersListDocument,
|
||||
"\n query AdminPanelProjectsList(\n $query: String\n $orderBy: String\n $limit: Int!\n $visibility: String\n $cursor: String\n ) {\n admin {\n projectList(\n query: $query\n orderBy: $orderBy\n limit: $limit\n visibility: $visibility\n cursor: $cursor\n ) {\n cursor\n ...SettingsServerProjects_ProjectCollection\n }\n }\n }\n": typeof types.AdminPanelProjectsListDocument,
|
||||
"\n query AdminPanelInvitesList($limit: Int!, $cursor: String, $query: String) {\n admin {\n inviteList(limit: $limit, cursor: $cursor, query: $query) {\n cursor\n items {\n email\n id\n invitedBy {\n id\n name\n }\n }\n totalCount\n }\n }\n }\n": typeof types.AdminPanelInvitesListDocument,
|
||||
"\n query UsersCount {\n admin {\n userList {\n totalCount\n }\n }\n }\n": typeof types.UsersCountDocument,
|
||||
"\n query InvitesCount {\n admin {\n inviteList {\n totalCount\n }\n }\n }\n": typeof types.InvitesCountDocument,
|
||||
"\n mutation InviteServerUser($input: [ServerInviteCreateInput!]!) {\n serverInviteBatchCreate(input: $input)\n }\n": typeof types.InviteServerUserDocument,
|
||||
"\n fragment AddDomainWorkspace on Workspace {\n slug\n }\n ": typeof types.AddDomainWorkspaceFragmentDoc,
|
||||
"\n fragment SettingsMenu_Workspace on Workspace {\n id\n sso {\n provider {\n id\n }\n session {\n validUntil\n }\n }\n }\n": typeof types.SettingsMenu_WorkspaceFragmentDoc,
|
||||
"\n mutation SettingsUpdateWorkspace($input: WorkspaceUpdateInput!) {\n workspaceMutations {\n update(input: $input) {\n ...SettingsWorkspacesGeneral_Workspace\n }\n }\n }\n": typeof types.SettingsUpdateWorkspaceDocument,
|
||||
"\n mutation SettingsCreateUserEmail($input: CreateUserEmailInput!) {\n activeUserMutations {\n emailMutations {\n create(input: $input) {\n id\n emails {\n ...EmailFields\n }\n }\n }\n }\n }\n": typeof types.SettingsCreateUserEmailDocument,
|
||||
"\n mutation SettingsDeleteUserEmail($input: DeleteUserEmailInput!) {\n activeUserMutations {\n emailMutations {\n delete(input: $input) {\n id\n emails {\n ...EmailFields\n }\n }\n }\n }\n }\n": typeof types.SettingsDeleteUserEmailDocument,
|
||||
"\n mutation SettingsSetPrimaryUserEmail($input: SetPrimaryUserEmailInput!) {\n activeUserMutations {\n emailMutations {\n setPrimary(input: $input) {\n id\n emails {\n ...EmailFields\n }\n }\n }\n }\n }\n": typeof types.SettingsSetPrimaryUserEmailDocument,
|
||||
"\n mutation SettingsNewEmailVerification($input: EmailVerificationRequestInput!) {\n activeUserMutations {\n emailMutations {\n requestNewEmailVerification(input: $input)\n }\n }\n }\n": typeof types.SettingsNewEmailVerificationDocument,
|
||||
"\n mutation SettingsUpdateWorkspaceSecurity($input: WorkspaceUpdateInput!) {\n workspaceMutations {\n update(input: $input) {\n id\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n }\n }\n": typeof types.SettingsUpdateWorkspaceSecurityDocument,
|
||||
"\n mutation SettingsDeleteWorkspace($workspaceId: String!) {\n workspaceMutations {\n delete(workspaceId: $workspaceId)\n }\n }\n": typeof types.SettingsDeleteWorkspaceDocument,
|
||||
"\n mutation SettingsResendWorkspaceInvite($input: WorkspaceInviteResendInput!) {\n workspaceMutations {\n invites {\n resend(input: $input)\n }\n }\n }\n": typeof types.SettingsResendWorkspaceInviteDocument,
|
||||
"\n mutation SettingsCancelWorkspaceInvite($workspaceId: String!, $inviteId: String!) {\n workspaceMutations {\n invites {\n cancel(workspaceId: $workspaceId, inviteId: $inviteId) {\n id\n }\n }\n }\n }\n": typeof types.SettingsCancelWorkspaceInviteDocument,
|
||||
"\n mutation AddWorkspaceDomain($input: AddDomainToWorkspaceInput!) {\n workspaceMutations {\n addDomain(input: $input) {\n ...SettingsWorkspacesSecurity_Workspace\n }\n }\n }\n": typeof types.AddWorkspaceDomainDocument,
|
||||
"\n mutation DeleteWorkspaceDomain($input: WorkspaceDomainDeleteInput!) {\n workspaceMutations {\n deleteDomain(input: $input) {\n ...SettingsWorkspacesSecurityDomainRemoveDialog_Workspace\n }\n }\n }\n": typeof types.DeleteWorkspaceDomainDocument,
|
||||
"\n mutation SettingsLeaveWorkspace($leaveId: ID!) {\n workspaceMutations {\n leave(id: $leaveId)\n }\n }\n": typeof types.SettingsLeaveWorkspaceDocument,
|
||||
"\n mutation SettingsBillingCancelCheckoutSession($input: CancelCheckoutSessionInput!) {\n workspaceMutations {\n billing {\n cancelCheckoutSession(input: $input)\n }\n }\n }\n": typeof types.SettingsBillingCancelCheckoutSessionDocument,
|
||||
"\n query SettingsSidebar {\n activeUser {\n ...SettingsDialog_User\n }\n }\n": typeof types.SettingsSidebarDocument,
|
||||
"\n query SettingsSidebarAutomateFunctions {\n activeUser {\n ...Sidebar_User\n }\n }\n": typeof types.SettingsSidebarAutomateFunctionsDocument,
|
||||
"\n query SettingsWorkspaceGeneral($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesGeneral_Workspace\n }\n }\n": typeof types.SettingsWorkspaceGeneralDocument,
|
||||
"\n query SettingsWorkspaceBilling($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n ...SettingsWorkspacesBilling_Workspace\n }\n }\n": typeof types.SettingsWorkspaceBillingDocument,
|
||||
"\n query SettingsWorkspaceBillingCustomerPortal($workspaceId: String!) {\n workspace(id: $workspaceId) {\n customerPortalUrl\n }\n }\n": typeof types.SettingsWorkspaceBillingCustomerPortalDocument,
|
||||
"\n query SettingsWorkspaceRegions($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n ...SettingsWorkspacesRegions_Workspace\n }\n serverInfo {\n ...SettingsWorkspacesRegions_ServerInfo\n }\n }\n": typeof types.SettingsWorkspaceRegionsDocument,
|
||||
"\n query SettingsWorkspacesMembers(\n $slug: String!\n $invitesFilter: PendingWorkspaceCollaboratorsFilter\n $joinRequestsFilter: AdminWorkspaceJoinRequestFilter\n ) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembers_Workspace\n ...SettingsWorkspacesMembersMembersTable_Workspace\n ...SettingsWorkspacesMembersGuestsTable_Workspace\n ...SettingsWorkspacesMembersInvitesTable_Workspace\n ...SettingsWorkspacesMembersRequestsTable_Workspace\n }\n }\n": typeof types.SettingsWorkspacesMembersDocument,
|
||||
"\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n team(filter: $filter) {\n items {\n id\n ...SettingsWorkspacesMembersMembersTable_WorkspaceCollaborator\n }\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersSearchDocument,
|
||||
"\n query SettingsWorkspacesJoinRequestsSearch(\n $slug: String!\n $joinRequestsFilter: AdminWorkspaceJoinRequestFilter\n ) {\n workspaceBySlug(slug: $slug) {\n id\n ...SettingsWorkspacesMembersRequestsTable_Workspace\n }\n }\n": typeof types.SettingsWorkspacesJoinRequestsSearchDocument,
|
||||
"\n query SettingsWorkspacesInvitesSearch(\n $slug: String!\n $invitesFilter: PendingWorkspaceCollaboratorsFilter\n ) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersInvitesTable_Workspace\n }\n }\n": typeof types.SettingsWorkspacesInvitesSearchDocument,
|
||||
"\n query SettingsWorkspacesProjects(\n $slug: String!\n $limit: Int!\n $cursor: String\n $filter: WorkspaceProjectsFilter\n ) {\n workspaceBySlug(slug: $slug) {\n id\n slug\n readOnly\n projects(limit: $limit, cursor: $cursor, filter: $filter) {\n cursor\n ...SettingsWorkspacesProjects_ProjectCollection\n }\n }\n }\n": typeof types.SettingsWorkspacesProjectsDocument,
|
||||
"\n query SettingsWorkspaceSecurity($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesSecurity_Workspace\n }\n activeUser {\n ...SettingsWorkspacesSecurity_User\n }\n }\n": typeof types.SettingsWorkspaceSecurityDocument,
|
||||
"\n fragment AppAuthorAvatar on AppAuthor {\n id\n name\n avatar\n }\n": typeof types.AppAuthorAvatarFragmentDoc,
|
||||
"\n fragment LimitedUserAvatar on LimitedUser {\n id\n name\n avatar\n }\n": typeof types.LimitedUserAvatarFragmentDoc,
|
||||
"\n fragment ActiveUserAvatar on User {\n id\n name\n avatar\n }\n": typeof types.ActiveUserAvatarFragmentDoc,
|
||||
"\n subscription OnUserProjectsUpdate {\n userProjectsUpdated {\n type\n id\n project {\n ...ProjectDashboardItem\n }\n }\n }\n ": typeof types.OnUserProjectsUpdateDocument,
|
||||
"\n mutation UpdateUser($input: UserUpdateInput!) {\n activeUserMutations {\n update(user: $input) {\n id\n name\n bio\n company\n avatar\n }\n }\n }\n": typeof types.UpdateUserDocument,
|
||||
"\n mutation UpdateNotificationPreferences($input: JSONObject!) {\n userNotificationPreferencesUpdate(preferences: $input)\n }\n": typeof types.UpdateNotificationPreferencesDocument,
|
||||
"\n mutation DeleteAccount($input: UserDeleteInput!) {\n userDelete(userConfirmation: $input)\n }\n": typeof types.DeleteAccountDocument,
|
||||
"\n mutation verifyEmail($input: VerifyUserEmailInput!) {\n activeUserMutations {\n emailMutations {\n verify(input: $input)\n }\n }\n }\n": typeof types.VerifyEmailDocument,
|
||||
"\n fragment EmailFields on UserEmail {\n id\n email\n verified\n primary\n userId\n }\n": typeof types.EmailFieldsFragmentDoc,
|
||||
"\n query UserEmails {\n activeUser {\n id\n emails {\n ...EmailFields\n }\n hasPendingVerification\n }\n }\n": typeof types.UserEmailsDocument,
|
||||
"\n fragment ViewerCommentBubblesData on Comment {\n id\n viewedAt\n viewerState\n }\n": typeof types.ViewerCommentBubblesDataFragmentDoc,
|
||||
"\n fragment ViewerCommentThread on Comment {\n ...ViewerCommentsListItem\n ...ViewerCommentBubblesData\n ...ViewerCommentsReplyItem\n }\n": typeof types.ViewerCommentThreadFragmentDoc,
|
||||
"\n fragment ViewerCommentsReplyItem on Comment {\n id\n archived\n rawText\n text {\n doc\n }\n author {\n ...LimitedUserAvatar\n }\n createdAt\n ...ThreadCommentAttachment\n }\n": typeof types.ViewerCommentsReplyItemFragmentDoc,
|
||||
"\n mutation BroadcastViewerUserActivity(\n $projectId: String!\n $resourceIdString: String!\n $message: ViewerUserActivityMessageInput!\n ) {\n broadcastViewerUserActivity(\n projectId: $projectId\n resourceIdString: $resourceIdString\n message: $message\n )\n }\n": typeof types.BroadcastViewerUserActivityDocument,
|
||||
"\n mutation MarkCommentViewed($input: MarkCommentViewedInput!) {\n commentMutations {\n markViewed(input: $input)\n }\n }\n": typeof types.MarkCommentViewedDocument,
|
||||
"\n mutation CreateCommentThread($input: CreateCommentInput!) {\n commentMutations {\n create(input: $input) {\n ...ViewerCommentThread\n }\n }\n }\n": typeof types.CreateCommentThreadDocument,
|
||||
"\n mutation CreateCommentReply($input: CreateCommentReplyInput!) {\n commentMutations {\n reply(input: $input) {\n ...ViewerCommentsReplyItem\n }\n }\n }\n": typeof types.CreateCommentReplyDocument,
|
||||
"\n mutation ArchiveComment($input: ArchiveCommentInput!) {\n commentMutations {\n archive(input: $input)\n }\n }\n": typeof types.ArchiveCommentDocument,
|
||||
"\n query ProjectViewerResources($projectId: String!, $resourceUrlString: String!) {\n project(id: $projectId) {\n id\n viewerResources(resourceIdString: $resourceUrlString) {\n identifier\n items {\n modelId\n versionId\n objectId\n }\n }\n }\n }\n": typeof types.ProjectViewerResourcesDocument,
|
||||
"\n query ViewerLoadedResources(\n $projectId: String!\n $modelIds: [String!]!\n $versionIds: [String!]\n ) {\n project(id: $projectId) {\n id\n role\n allowPublicComments\n models(filter: { ids: $modelIds }) {\n totalCount\n items {\n id\n name\n updatedAt\n loadedVersion: versions(\n filter: { priorityIds: $versionIds, priorityIdsOnly: true }\n ) {\n items {\n ...ViewerModelVersionCardItem\n automationsStatus {\n id\n automationRuns {\n ...AutomateViewerPanel_AutomateRun\n }\n }\n }\n }\n versions(limit: 5) {\n totalCount\n cursor\n items {\n ...ViewerModelVersionCardItem\n }\n }\n }\n }\n ...ProjectPageLatestItemsModels\n ...ModelPageProject\n ...HeaderNavShare_Project\n }\n }\n": typeof types.ViewerLoadedResourcesDocument,
|
||||
"\n query ViewerModelVersions(\n $projectId: String!\n $modelId: String!\n $versionsCursor: String\n ) {\n project(id: $projectId) {\n id\n role\n model(id: $modelId) {\n id\n versions(cursor: $versionsCursor, limit: 5) {\n totalCount\n cursor\n items {\n ...ViewerModelVersionCardItem\n }\n }\n }\n }\n }\n": typeof types.ViewerModelVersionsDocument,
|
||||
"\n query ViewerDiffVersions(\n $projectId: String!\n $modelId: String!\n $versionAId: String!\n $versionBId: String!\n ) {\n project(id: $projectId) {\n id\n model(id: $modelId) {\n id\n versionA: version(id: $versionAId) {\n ...ViewerModelVersionCardItem\n }\n versionB: version(id: $versionBId) {\n ...ViewerModelVersionCardItem\n }\n }\n }\n }\n": typeof types.ViewerDiffVersionsDocument,
|
||||
"\n query ViewerLoadedThreads(\n $projectId: String!\n $filter: ProjectCommentsFilter!\n $cursor: String\n $limit: Int\n ) {\n project(id: $projectId) {\n id\n commentThreads(filter: $filter, cursor: $cursor, limit: $limit) {\n totalCount\n totalArchivedCount\n items {\n ...ViewerCommentThread\n ...LinkableComment\n }\n }\n }\n }\n": typeof types.ViewerLoadedThreadsDocument,
|
||||
"\n query ViewerRawProjectObject($projectId: String!, $objectId: String!) {\n project(id: $projectId) {\n id\n object(id: $objectId) {\n id\n data\n }\n }\n }\n": typeof types.ViewerRawProjectObjectDocument,
|
||||
"\n subscription OnViewerUserActivityBroadcasted(\n $target: ViewerUpdateTrackingTarget!\n $sessionId: String!\n ) {\n viewerUserActivityBroadcasted(target: $target, sessionId: $sessionId) {\n userName\n userId\n user {\n ...LimitedUserAvatar\n }\n state\n status\n sessionId\n }\n }\n": typeof types.OnViewerUserActivityBroadcastedDocument,
|
||||
"\n subscription OnViewerCommentsUpdated($target: ViewerUpdateTrackingTarget!) {\n projectCommentsUpdated(target: $target) {\n id\n type\n comment {\n id\n parent {\n id\n }\n ...ViewerCommentThread\n }\n }\n }\n": typeof types.OnViewerCommentsUpdatedDocument,
|
||||
"\n fragment LinkableComment on Comment {\n id\n viewerResources {\n modelId\n versionId\n objectId\n }\n }\n": typeof types.LinkableCommentFragmentDoc,
|
||||
"\n fragment UseWorkspaceInviteManager_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n token\n workspaceId\n workspaceSlug\n user {\n id\n }\n }\n": typeof types.UseWorkspaceInviteManager_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
"\n subscription OnWorkspaceProjectsUpdate($slug: String!) {\n workspaceProjectsUpdated(workspaceId: null, workspaceSlug: $slug) {\n projectId\n workspaceId\n type\n project {\n ...ProjectDashboardItem\n }\n }\n }\n ": typeof types.OnWorkspaceProjectsUpdateDocument,
|
||||
"\n fragment WorkspaceHasCustomDataResidency_Workspace on Workspace {\n id\n defaultRegion {\n id\n name\n }\n }\n": typeof types.WorkspaceHasCustomDataResidency_WorkspaceFragmentDoc,
|
||||
"\n query CheckProjectWorkspaceDataResidency($projectId: String!) {\n project(id: $projectId) {\n id\n workspace {\n ...WorkspaceHasCustomDataResidency_Workspace\n }\n }\n }\n": typeof types.CheckProjectWorkspaceDataResidencyDocument,
|
||||
"\n fragment WorkspaceSsoStatus_Workspace on Workspace {\n id\n sso {\n provider {\n id\n name\n clientId\n issuerUrl\n }\n session {\n validUntil\n }\n }\n }\n ": typeof types.WorkspaceSsoStatus_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceSsoStatus_User on User {\n expiredSsoSessions {\n id\n slug\n }\n }\n ": typeof types.WorkspaceSsoStatus_UserFragmentDoc,
|
||||
"\n fragment WorkspaceBase_Workspace on Workspace {\n id\n name\n slug\n role\n description\n logo\n plan {\n status\n createdAt\n }\n }\n": typeof types.WorkspaceBase_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceDashboardAbout_Workspace on Workspace {\n id\n name\n description\n }\n": typeof types.WorkspaceDashboardAbout_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceInvitedTeam_Workspace on Workspace {\n id\n invitedTeam(filter: $invitesFilter) {\n id\n role\n email\n }\n }\n": typeof types.WorkspaceInvitedTeam_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceTeam_Workspace on Workspace {\n id\n slug\n team {\n totalCount\n items {\n id\n user {\n id\n name\n ...LimitedUserAvatar\n }\n }\n }\n adminWorkspacesJoinRequests {\n totalCount\n items {\n status\n id\n }\n }\n ...WorkspaceInvitedTeam_Workspace\n }\n": typeof types.WorkspaceTeam_WorkspaceFragmentDoc,
|
||||
"\n fragment WorkspaceSecurity_Workspace on Workspace {\n id\n slug\n domains {\n id\n domain\n }\n }\n": typeof types.WorkspaceSecurity_WorkspaceFragmentDoc,
|
||||
"\n mutation UpdateRole($input: WorkspaceRoleUpdateInput!) {\n workspaceMutations {\n updateRole(input: $input) {\n team {\n items {\n id\n role\n }\n }\n }\n }\n }\n": typeof types.UpdateRoleDocument,
|
||||
"\n mutation InviteToWorkspace(\n $workspaceId: String!\n $input: [WorkspaceInviteCreateInput!]!\n ) {\n workspaceMutations {\n invites {\n batchCreate(workspaceId: $workspaceId, input: $input) {\n id\n invitedTeam {\n ...SettingsWorkspacesMembersInvitesTable_PendingWorkspaceCollaborator\n }\n }\n }\n }\n }\n": typeof types.InviteToWorkspaceDocument,
|
||||
"\n mutation CreateWorkspace($input: WorkspaceCreateInput!) {\n workspaceMutations {\n create(input: $input) {\n id\n ...SettingsDialog_Workspace\n }\n }\n }\n": typeof types.CreateWorkspaceDocument,
|
||||
"\n mutation ProcessWorkspaceInvite($input: WorkspaceInviteUseInput!) {\n workspaceMutations {\n invites {\n use(input: $input)\n }\n }\n }\n": typeof types.ProcessWorkspaceInviteDocument,
|
||||
"\n mutation SetDefaultWorkspaceRegion($workspaceId: String!, $regionKey: String!) {\n workspaceMutations {\n setDefaultRegion(workspaceId: $workspaceId, regionKey: $regionKey) {\n id\n defaultRegion {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n }\n }\n }\n": typeof types.SetDefaultWorkspaceRegionDocument,
|
||||
"\n mutation DeleteWorkspaceSsoProvider($workspaceId: String!) {\n workspaceMutations {\n deleteSsoProvider(workspaceId: $workspaceId)\n }\n }\n": typeof types.DeleteWorkspaceSsoProviderDocument,
|
||||
"\n mutation SetWorkspaceCreationState($input: WorkspaceCreationStateInput!) {\n workspaceMutations {\n updateCreationState(input: $input)\n }\n }\n": typeof types.SetWorkspaceCreationStateDocument,
|
||||
"\n mutation WorkspaceUpdateDomainProtectionMutation($input: WorkspaceUpdateInput!) {\n workspaceMutations {\n update(input: $input) {\n id\n domainBasedMembershipProtectionEnabled\n }\n }\n }\n": typeof types.WorkspaceUpdateDomainProtectionMutationDocument,
|
||||
"\n mutation WorkspaceUpdateDiscoverabilityMutation($input: WorkspaceUpdateInput!) {\n workspaceMutations {\n update(input: $input) {\n id\n discoverabilityEnabled\n }\n }\n }\n": typeof types.WorkspaceUpdateDiscoverabilityMutationDocument,
|
||||
"\n mutation ApproveWorkspaceJoinRequest($input: ApproveWorkspaceJoinRequestInput!) {\n workspaceJoinRequestMutations {\n approve(input: $input)\n }\n }\n": typeof types.ApproveWorkspaceJoinRequestDocument,
|
||||
"\n mutation DenyWorkspaceJoinRequest($input: DenyWorkspaceJoinRequestInput!) {\n workspaceJoinRequestMutations {\n deny(input: $input)\n }\n }\n": typeof types.DenyWorkspaceJoinRequestDocument,
|
||||
"\n query WorkspaceAccessCheck($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n }\n }\n": typeof types.WorkspaceAccessCheckDocument,
|
||||
"\n query WorkspacePageQuery(\n $workspaceSlug: String!\n $invitesFilter: PendingWorkspaceCollaboratorsFilter\n $token: String\n ) {\n workspaceBySlug(slug: $workspaceSlug) {\n ...WorkspaceProjectList_Workspace\n }\n workspaceInvite(\n workspaceId: $workspaceSlug\n token: $token\n options: { useSlug: true }\n ) {\n id\n ...WorkspaceInviteBanner_PendingWorkspaceCollaborator\n ...WorkspaceInviteBlock_PendingWorkspaceCollaborator\n }\n }\n": typeof types.WorkspacePageQueryDocument,
|
||||
"\n query WorkspaceProjectsQuery(\n $workspaceSlug: String!\n $filter: WorkspaceProjectsFilter\n $cursor: String\n ) {\n workspaceBySlug(slug: $workspaceSlug) {\n id\n projects(filter: $filter, cursor: $cursor, limit: 10) {\n ...WorkspaceProjectList_ProjectCollection\n }\n }\n }\n": typeof types.WorkspaceProjectsQueryDocument,
|
||||
"\n query WorkspaceFunctionsQuery($workspaceSlug: String!) {\n ...AutomateFunctionsPageHeader_Query\n workspaceBySlug(slug: $workspaceSlug) {\n id\n name\n automateFunctions {\n items {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateAutomationCreateDialog_AutomateFunction\n }\n }\n }\n }\n": typeof types.WorkspaceFunctionsQueryDocument,
|
||||
"\n query WorkspaceInvite(\n $workspaceId: String\n $token: String\n $options: WorkspaceInviteLookupOptions\n ) {\n workspaceInvite(workspaceId: $workspaceId, token: $token, options: $options) {\n ...WorkspaceInviteBanner_PendingWorkspaceCollaborator\n ...WorkspaceInviteBlock_PendingWorkspaceCollaborator\n }\n }\n": typeof types.WorkspaceInviteDocument,
|
||||
"\n query MoveProjectsDialog {\n activeUser {\n ...MoveProjectsDialog_User\n }\n }\n": typeof types.MoveProjectsDialogDocument,
|
||||
"\n query ValidateWorkspaceSlug($slug: String!) {\n validateWorkspaceSlug(slug: $slug)\n }\n": typeof types.ValidateWorkspaceSlugDocument,
|
||||
"\n query WorkspaceSsoByEmail($email: String!) {\n workspaceSsoByEmail(email: $email) {\n ...AuthSsoLogin_Workspace\n }\n }\n": typeof types.WorkspaceSsoByEmailDocument,
|
||||
"\n query WorkspaceSsoCheck($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...WorkspaceSsoStatus_Workspace\n }\n activeUser {\n ...WorkspaceSsoStatus_User\n }\n }\n": typeof types.WorkspaceSsoCheckDocument,
|
||||
"\n query WorkspaceWizard($workspaceId: String!) {\n workspace(id: $workspaceId) {\n id\n ...WorkspaceWizard_Workspace\n }\n }\n": typeof types.WorkspaceWizardDocument,
|
||||
"\n query WorkspaceWizardRegion {\n serverInfo {\n ...WorkspaceWizardStepRegion_ServerInfo\n }\n }\n": typeof types.WorkspaceWizardRegionDocument,
|
||||
"\n subscription onWorkspaceUpdated(\n $workspaceId: String\n $workspaceSlug: String\n $invitesFilter: PendingWorkspaceCollaboratorsFilter\n ) {\n workspaceUpdated(workspaceId: $workspaceId, workspaceSlug: $workspaceSlug) {\n id\n workspace {\n id\n ...WorkspaceProjectList_Workspace\n }\n }\n }\n": typeof types.OnWorkspaceUpdatedDocument,
|
||||
"\n query LegacyBranchRedirectMetadata($streamId: String!, $branchName: String!) {\n project(id: $streamId) {\n modelByName(name: $branchName) {\n id\n }\n }\n }\n": typeof types.LegacyBranchRedirectMetadataDocument,
|
||||
"\n query LegacyViewerCommitRedirectMetadata($streamId: String!, $commitId: String!) {\n project(id: $streamId) {\n version(id: $commitId) {\n id\n model {\n id\n }\n }\n }\n }\n": typeof types.LegacyViewerCommitRedirectMetadataDocument,
|
||||
"\n query LegacyViewerStreamRedirectMetadata($streamId: String!) {\n project(id: $streamId) {\n id\n versions(limit: 1) {\n totalCount\n items {\n id\n model {\n id\n }\n }\n }\n }\n }\n": typeof types.LegacyViewerStreamRedirectMetadataDocument,
|
||||
"\n query AutoAcceptableWorkspaceInvite(\n $token: String!\n $workspaceId: String!\n $options: WorkspaceInviteLookupOptions\n ) {\n workspaceInvite(token: $token, workspaceId: $workspaceId, options: $options) {\n id\n ...UseWorkspaceInviteManager_PendingWorkspaceCollaborator\n }\n }\n": typeof types.AutoAcceptableWorkspaceInviteDocument,
|
||||
"\n query ResolveCommentLink($commentId: String!, $projectId: String!) {\n project(id: $projectId) {\n comment(id: $commentId) {\n id\n ...LinkableComment\n }\n }\n }\n": typeof types.ResolveCommentLinkDocument,
|
||||
"\n fragment AutomateFunctionPage_AutomateFunction on AutomateFunction {\n id\n name\n description\n logo\n supportedSourceApps\n tags\n ...AutomateFunctionPageHeader_Function\n ...AutomateFunctionPageInfo_AutomateFunction\n ...AutomateAutomationCreateDialog_AutomateFunction\n creator {\n id\n }\n }\n": typeof types.AutomateFunctionPage_AutomateFunctionFragmentDoc,
|
||||
"\n query AutomateFunctionPage($functionId: ID!) {\n automateFunction(id: $functionId) {\n ...AutomateFunctionPage_AutomateFunction\n }\n activeUser {\n workspaces {\n items {\n ...AutomateFunctionCreateDialog_Workspace\n ...AutomateFunctionEditDialog_Workspace\n }\n }\n }\n }\n": typeof types.AutomateFunctionPageDocument,
|
||||
"\n query AutomateFunctionPageWorkspace($workspaceId: String!) {\n workspace(id: $workspaceId) {\n id\n ...AutomateFunctionPageHeader_Workspace\n }\n }\n": typeof types.AutomateFunctionPageWorkspaceDocument,
|
||||
"\n fragment PagesOnboarding_DiscoverableWorkspaces on User {\n discoverableWorkspaces {\n id\n name\n logo\n description\n slug\n }\n }\n": typeof types.PagesOnboarding_DiscoverableWorkspacesFragmentDoc,
|
||||
"\n fragment ProjectPageProject on Project {\n id\n createdAt\n modelCount: models(limit: 0) {\n totalCount\n }\n commentThreadCount: commentThreads(limit: 0) {\n totalCount\n }\n workspace {\n id\n }\n ...ProjectPageTeamInternals_Project\n ...ProjectPageProjectHeader\n ...ProjectPageTeamDialog\n ...ProjectsMoveToWorkspaceDialog_Project\n }\n": typeof types.ProjectPageProjectFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationPage_Automation on Automation {\n id\n ...ProjectPageAutomationHeader_Automation\n ...ProjectPageAutomationFunctions_Automation\n ...ProjectPageAutomationRuns_Automation\n }\n": typeof types.ProjectPageAutomationPage_AutomationFragmentDoc,
|
||||
"\n fragment ProjectPageAutomationPage_Project on Project {\n id\n workspaceId\n ...ProjectPageAutomationHeader_Project\n }\n": typeof types.ProjectPageAutomationPage_ProjectFragmentDoc,
|
||||
"\n fragment ProjectPageSettingsTab_Project on Project {\n id\n role\n }\n": typeof types.ProjectPageSettingsTab_ProjectFragmentDoc,
|
||||
"\n fragment SettingsServerProjects_ProjectCollection on ProjectCollection {\n totalCount\n items {\n ...SettingsSharedProjects_Project\n }\n }\n": typeof types.SettingsServerProjects_ProjectCollectionFragmentDoc,
|
||||
"\n query SettingsServerRegions {\n serverInfo {\n multiRegion {\n regions {\n id\n ...SettingsServerRegionsTable_ServerRegionItem\n }\n availableKeys\n }\n }\n }\n": typeof types.SettingsServerRegionsDocument,
|
||||
"\n fragment SettingsWorkspacesBilling_Workspace on Workspace {\n ...BillingAlert_Workspace\n id\n role\n plan {\n name\n status\n createdAt\n paymentMethod\n }\n subscription {\n billingInterval\n currentBillingCycleEnd\n seats {\n guest\n plan\n }\n }\n team {\n items {\n id\n role\n }\n }\n }\n": typeof types.SettingsWorkspacesBilling_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesGeneral_Workspace on Workspace {\n ...SettingsWorkspacesGeneralEditAvatar_Workspace\n ...SettingsWorkspaceGeneralDeleteDialog_Workspace\n ...SettingsWorkspacesGeneralEditSlugDialog_Workspace\n id\n name\n slug\n description\n logo\n role\n defaultProjectRole\n plan {\n status\n name\n }\n }\n": typeof types.SettingsWorkspacesGeneral_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembers_Workspace on Workspace {\n id\n role\n team {\n items {\n id\n }\n }\n invitedTeam(filter: $invitesFilter) {\n user {\n id\n }\n }\n adminWorkspacesJoinRequests(filter: $joinRequestsFilter) {\n totalCount\n }\n }\n": typeof types.SettingsWorkspacesMembers_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesProjects_ProjectCollection on ProjectCollection {\n totalCount\n items {\n ...SettingsSharedProjects_Project\n }\n }\n": typeof types.SettingsWorkspacesProjects_ProjectCollectionFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_Workspace on Workspace {\n id\n role\n defaultRegion {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n hasAccessToMultiRegion: hasAccessToFeature(\n featureName: workspaceDataRegionSpecificity\n )\n hasProjects: projects(limit: 0) {\n totalCount\n }\n }\n": typeof types.SettingsWorkspacesRegions_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_ServerInfo on ServerInfo {\n multiRegion {\n regions {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n }\n }\n": typeof types.SettingsWorkspacesRegions_ServerInfoFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesSecurity_Workspace on Workspace {\n id\n slug\n domains {\n id\n domain\n ...SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain\n }\n ...SettingsWorkspacesSecuritySsoWrapper_Workspace\n domainBasedMembershipProtectionEnabled\n discoverabilityEnabled\n }\n\n fragment SettingsWorkspacesSecurity_User on User {\n id\n emails {\n id\n email\n verified\n }\n }\n": typeof types.SettingsWorkspacesSecurity_WorkspaceFragmentDoc,
|
||||
};
|
||||
const documents: Documents = {
|
||||
"\n fragment AuthLoginWithEmailBlock_PendingWorkspaceCollaborator on PendingWorkspaceCollaborator {\n id\n email\n user {\n id\n }\n }\n": types.AuthLoginWithEmailBlock_PendingWorkspaceCollaboratorFragmentDoc,
|
||||
"\n query AuthRegisterPanelWorkspaceInvite($token: String) {\n workspaceInvite(token: $token) {\n id\n ...AuthWorkspaceInviteHeader_PendingWorkspaceCollaborator\n }\n }\n": types.AuthRegisterPanelWorkspaceInviteDocument,
|
||||
"\n fragment ServerTermsOfServicePrivacyPolicyFragment on ServerInfo {\n termsOfService\n }\n": types.ServerTermsOfServicePrivacyPolicyFragmentFragmentDoc,
|
||||
|
||||
@@ -331,12 +331,13 @@ export type AutomateFunctionTemplate = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateFunctionTemplateLanguage {
|
||||
DotNet = 'DOT_NET',
|
||||
Python = 'PYTHON',
|
||||
Typescript = 'TYPESCRIPT'
|
||||
}
|
||||
export const AutomateFunctionTemplateLanguage = {
|
||||
DotNet: 'DOT_NET',
|
||||
Python: 'PYTHON',
|
||||
Typescript: 'TYPESCRIPT'
|
||||
} as const;
|
||||
|
||||
export type AutomateFunctionTemplateLanguage = typeof AutomateFunctionTemplateLanguage[keyof typeof AutomateFunctionTemplateLanguage];
|
||||
export type AutomateFunctionToken = {
|
||||
__typename?: 'AutomateFunctionToken';
|
||||
functionId: Scalars['String']['output'];
|
||||
@@ -390,21 +391,23 @@ export type AutomateRunCollection = {
|
||||
totalCount: Scalars['Int']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateRunStatus {
|
||||
Canceled = 'CANCELED',
|
||||
Exception = 'EXCEPTION',
|
||||
Failed = 'FAILED',
|
||||
Initializing = 'INITIALIZING',
|
||||
Pending = 'PENDING',
|
||||
Running = 'RUNNING',
|
||||
Succeeded = 'SUCCEEDED',
|
||||
Timeout = 'TIMEOUT'
|
||||
}
|
||||
export const AutomateRunStatus = {
|
||||
Canceled: 'CANCELED',
|
||||
Exception: 'EXCEPTION',
|
||||
Failed: 'FAILED',
|
||||
Initializing: 'INITIALIZING',
|
||||
Pending: 'PENDING',
|
||||
Running: 'RUNNING',
|
||||
Succeeded: 'SUCCEEDED',
|
||||
Timeout: 'TIMEOUT'
|
||||
} as const;
|
||||
|
||||
export enum AutomateRunTriggerType {
|
||||
VersionCreated = 'VERSION_CREATED'
|
||||
}
|
||||
export type AutomateRunStatus = typeof AutomateRunStatus[keyof typeof AutomateRunStatus];
|
||||
export const AutomateRunTriggerType = {
|
||||
VersionCreated: 'VERSION_CREATED'
|
||||
} as const;
|
||||
|
||||
export type AutomateRunTriggerType = typeof AutomateRunTriggerType[keyof typeof AutomateRunTriggerType];
|
||||
export type Automation = {
|
||||
__typename?: 'Automation';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -465,11 +468,12 @@ export type BasicGitRepositoryMetadata = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum BillingInterval {
|
||||
Monthly = 'monthly',
|
||||
Yearly = 'yearly'
|
||||
}
|
||||
export const BillingInterval = {
|
||||
Monthly: 'monthly',
|
||||
Yearly: 'yearly'
|
||||
} as const;
|
||||
|
||||
export type BillingInterval = typeof BillingInterval[keyof typeof BillingInterval];
|
||||
export type BlobMetadata = {
|
||||
__typename?: 'BlobMetadata';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -928,11 +932,12 @@ export type DenyWorkspaceJoinRequestInput = {
|
||||
workspaceId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum DiscoverableStreamsSortType {
|
||||
CreatedDate = 'CREATED_DATE',
|
||||
FavoritesCount = 'FAVORITES_COUNT'
|
||||
}
|
||||
export const DiscoverableStreamsSortType = {
|
||||
CreatedDate: 'CREATED_DATE',
|
||||
FavoritesCount: 'FAVORITES_COUNT'
|
||||
} as const;
|
||||
|
||||
export type DiscoverableStreamsSortType = typeof DiscoverableStreamsSortType[keyof typeof DiscoverableStreamsSortType];
|
||||
export type DiscoverableStreamsSortingInput = {
|
||||
direction: SortDirection;
|
||||
type: DiscoverableStreamsSortType;
|
||||
@@ -1848,12 +1853,13 @@ export type ObjectCreateInput = {
|
||||
streamId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum PaidWorkspacePlans {
|
||||
Business = 'business',
|
||||
Plus = 'plus',
|
||||
Starter = 'starter'
|
||||
}
|
||||
export const PaidWorkspacePlans = {
|
||||
Business: 'business',
|
||||
Plus: 'plus',
|
||||
Starter: 'starter'
|
||||
} as const;
|
||||
|
||||
export type PaidWorkspacePlans = typeof PaidWorkspacePlans[keyof typeof PaidWorkspacePlans];
|
||||
export type PasswordStrengthCheckFeedback = {
|
||||
__typename?: 'PasswordStrengthCheckFeedback';
|
||||
suggestions: Array<Scalars['String']['output']>;
|
||||
@@ -2181,12 +2187,13 @@ export type ProjectAutomationsUpdatedMessage = {
|
||||
type: ProjectAutomationsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectAutomationsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
CreatedRevision = 'CREATED_REVISION',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectAutomationsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
CreatedRevision: 'CREATED_REVISION',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectAutomationsUpdatedMessageType = typeof ProjectAutomationsUpdatedMessageType[keyof typeof ProjectAutomationsUpdatedMessageType];
|
||||
export type ProjectCollaborator = {
|
||||
__typename?: 'ProjectCollaborator';
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -2233,12 +2240,13 @@ export type ProjectCommentsUpdatedMessage = {
|
||||
type: ProjectCommentsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectCommentsUpdatedMessageType {
|
||||
Archived = 'ARCHIVED',
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectCommentsUpdatedMessageType = {
|
||||
Archived: 'ARCHIVED',
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectCommentsUpdatedMessageType = typeof ProjectCommentsUpdatedMessageType[keyof typeof ProjectCommentsUpdatedMessageType];
|
||||
/** Any values left null will be ignored */
|
||||
export type ProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2254,11 +2262,12 @@ export type ProjectFileImportUpdatedMessage = {
|
||||
upload: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectFileImportUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectFileImportUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectFileImportUpdatedMessageType = typeof ProjectFileImportUpdatedMessageType[keyof typeof ProjectFileImportUpdatedMessageType];
|
||||
export type ProjectInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2355,12 +2364,13 @@ export type ProjectModelsUpdatedMessage = {
|
||||
type: ProjectModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectModelsUpdatedMessageType = typeof ProjectModelsUpdatedMessageType[keyof typeof ProjectModelsUpdatedMessageType];
|
||||
export type ProjectMutations = {
|
||||
__typename?: 'ProjectMutations';
|
||||
/** Access request related mutations */
|
||||
@@ -2430,11 +2440,12 @@ export type ProjectPendingModelsUpdatedMessage = {
|
||||
type: ProjectPendingModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectPendingModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingModelsUpdatedMessageType = typeof ProjectPendingModelsUpdatedMessageType[keyof typeof ProjectPendingModelsUpdatedMessageType];
|
||||
export type ProjectPendingVersionsUpdatedMessage = {
|
||||
__typename?: 'ProjectPendingVersionsUpdatedMessage';
|
||||
/** Upload ID */
|
||||
@@ -2443,11 +2454,12 @@ export type ProjectPendingVersionsUpdatedMessage = {
|
||||
version: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectPendingVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingVersionsUpdatedMessageType = typeof ProjectPendingVersionsUpdatedMessageType[keyof typeof ProjectPendingVersionsUpdatedMessageType];
|
||||
export type ProjectRole = {
|
||||
__typename?: 'ProjectRole';
|
||||
project: Project;
|
||||
@@ -2469,11 +2481,12 @@ export type ProjectTriggeredAutomationsStatusUpdatedMessage = {
|
||||
version: Version;
|
||||
};
|
||||
|
||||
export enum ProjectTriggeredAutomationsStatusUpdatedMessageType {
|
||||
RunCreated = 'RUN_CREATED',
|
||||
RunUpdated = 'RUN_UPDATED'
|
||||
}
|
||||
export const ProjectTriggeredAutomationsStatusUpdatedMessageType = {
|
||||
RunCreated: 'RUN_CREATED',
|
||||
RunUpdated: 'RUN_UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectTriggeredAutomationsStatusUpdatedMessageType = typeof ProjectTriggeredAutomationsStatusUpdatedMessageType[keyof typeof ProjectTriggeredAutomationsStatusUpdatedMessageType];
|
||||
/** Any values left null will be ignored, so only set the properties that you want updated */
|
||||
export type ProjectUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
@@ -2500,11 +2513,12 @@ export type ProjectUpdatedMessage = {
|
||||
type: ProjectUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectUpdatedMessageType {
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectUpdatedMessageType = {
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectUpdatedMessageType = typeof ProjectUpdatedMessageType[keyof typeof ProjectUpdatedMessageType];
|
||||
export type ProjectVersionsPreviewGeneratedMessage = {
|
||||
__typename?: 'ProjectVersionsPreviewGeneratedMessage';
|
||||
objectId: Scalars['String']['output'];
|
||||
@@ -2523,18 +2537,20 @@ export type ProjectVersionsUpdatedMessage = {
|
||||
version?: Maybe<Version>;
|
||||
};
|
||||
|
||||
export enum ProjectVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export enum ProjectVisibility {
|
||||
Private = 'PRIVATE',
|
||||
Public = 'PUBLIC',
|
||||
Unlisted = 'UNLISTED'
|
||||
}
|
||||
export type ProjectVersionsUpdatedMessageType = typeof ProjectVersionsUpdatedMessageType[keyof typeof ProjectVersionsUpdatedMessageType];
|
||||
export const ProjectVisibility = {
|
||||
Private: 'PRIVATE',
|
||||
Public: 'PUBLIC',
|
||||
Unlisted: 'UNLISTED'
|
||||
} as const;
|
||||
|
||||
export type ProjectVisibility = typeof ProjectVisibility[keyof typeof ProjectVisibility];
|
||||
export type Query = {
|
||||
__typename?: 'Query';
|
||||
/** Stare into the void. */
|
||||
@@ -2658,7 +2674,6 @@ export type Query = {
|
||||
* Either token or workspaceId must be specified, or both
|
||||
*/
|
||||
workspaceInvite?: Maybe<PendingWorkspaceCollaborator>;
|
||||
workspacePricingPlans: Scalars['JSONObject']['output'];
|
||||
/** Find workspaces a given user email can use SSO to sign with */
|
||||
workspaceSsoByEmail: Array<LimitedWorkspace>;
|
||||
};
|
||||
@@ -2845,13 +2860,14 @@ export type ResourceIdentifierInput = {
|
||||
resourceType: ResourceType;
|
||||
};
|
||||
|
||||
export enum ResourceType {
|
||||
Comment = 'comment',
|
||||
Commit = 'commit',
|
||||
Object = 'object',
|
||||
Stream = 'stream'
|
||||
}
|
||||
export const ResourceType = {
|
||||
Comment: 'comment',
|
||||
Commit: 'commit',
|
||||
Object: 'object',
|
||||
Stream: 'stream'
|
||||
} as const;
|
||||
|
||||
export type ResourceType = typeof ResourceType[keyof typeof ResourceType];
|
||||
export type Role = {
|
||||
__typename?: 'Role';
|
||||
description: Scalars['String']['output'];
|
||||
@@ -3015,13 +3031,14 @@ export type ServerRegionMutationsUpdateArgs = {
|
||||
input: UpdateServerRegionInput;
|
||||
};
|
||||
|
||||
export enum ServerRole {
|
||||
ServerAdmin = 'SERVER_ADMIN',
|
||||
ServerArchivedUser = 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest = 'SERVER_GUEST',
|
||||
ServerUser = 'SERVER_USER'
|
||||
}
|
||||
export const ServerRole = {
|
||||
ServerAdmin: 'SERVER_ADMIN',
|
||||
ServerArchivedUser: 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest: 'SERVER_GUEST',
|
||||
ServerUser: 'SERVER_USER'
|
||||
} as const;
|
||||
|
||||
export type ServerRole = typeof ServerRole[keyof typeof ServerRole];
|
||||
export type ServerRoleItem = {
|
||||
__typename?: 'ServerRoleItem';
|
||||
id: Scalars['String']['output'];
|
||||
@@ -3060,11 +3077,12 @@ export type ServerWorkspacesInfo = {
|
||||
workspacesEnabled: Scalars['Boolean']['output'];
|
||||
};
|
||||
|
||||
export enum SessionPaymentStatus {
|
||||
Paid = 'paid',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const SessionPaymentStatus = {
|
||||
Paid: 'paid',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type SessionPaymentStatus = typeof SessionPaymentStatus[keyof typeof SessionPaymentStatus];
|
||||
export type SetPrimaryUserEmailInput = {
|
||||
id: Scalars['ID']['input'];
|
||||
};
|
||||
@@ -3084,11 +3102,12 @@ export type SmartTextEditorValue = {
|
||||
version: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum SortDirection {
|
||||
Asc = 'ASC',
|
||||
Desc = 'DESC'
|
||||
}
|
||||
export const SortDirection = {
|
||||
Asc: 'ASC',
|
||||
Desc: 'DESC'
|
||||
} as const;
|
||||
|
||||
export type SortDirection = typeof SortDirection[keyof typeof SortDirection];
|
||||
export type Stream = {
|
||||
__typename?: 'Stream';
|
||||
/**
|
||||
@@ -3283,12 +3302,13 @@ export type StreamRevokePermissionInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum StreamRole {
|
||||
StreamContributor = 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner = 'STREAM_OWNER',
|
||||
StreamReviewer = 'STREAM_REVIEWER'
|
||||
}
|
||||
export const StreamRole = {
|
||||
StreamContributor: 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner: 'STREAM_OWNER',
|
||||
StreamReviewer: 'STREAM_REVIEWER'
|
||||
} as const;
|
||||
|
||||
export type StreamRole = typeof StreamRole[keyof typeof StreamRole];
|
||||
export type StreamUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -3604,11 +3624,12 @@ export type TokenResourceIdentifierInput = {
|
||||
type: TokenResourceIdentifierType;
|
||||
};
|
||||
|
||||
export enum TokenResourceIdentifierType {
|
||||
Project = 'project',
|
||||
Workspace = 'workspace'
|
||||
}
|
||||
export const TokenResourceIdentifierType = {
|
||||
Project: 'project',
|
||||
Workspace: 'workspace'
|
||||
} as const;
|
||||
|
||||
export type TokenResourceIdentifierType = typeof TokenResourceIdentifierType[keyof typeof TokenResourceIdentifierType];
|
||||
export type TriggeredAutomationsStatus = {
|
||||
__typename?: 'TriggeredAutomationsStatus';
|
||||
automationRuns: Array<AutomateRun>;
|
||||
@@ -3953,11 +3974,12 @@ export type UserProjectsUpdatedMessage = {
|
||||
type: UserProjectsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum UserProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const UserProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type UserProjectsUpdatedMessageType = typeof UserProjectsUpdatedMessageType[keyof typeof UserProjectsUpdatedMessageType];
|
||||
export type UserRoleInput = {
|
||||
id: Scalars['String']['input'];
|
||||
role: Scalars['String']['input'];
|
||||
@@ -4147,11 +4169,12 @@ export type ViewerUserActivityMessageInput = {
|
||||
userName: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum ViewerUserActivityStatus {
|
||||
Disconnected = 'DISCONNECTED',
|
||||
Viewing = 'VIEWING'
|
||||
}
|
||||
export const ViewerUserActivityStatus = {
|
||||
Disconnected: 'DISCONNECTED',
|
||||
Viewing: 'VIEWING'
|
||||
} as const;
|
||||
|
||||
export type ViewerUserActivityStatus = typeof ViewerUserActivityStatus[keyof typeof ViewerUserActivityStatus];
|
||||
export type Webhook = {
|
||||
__typename?: 'Webhook';
|
||||
description?: Maybe<Scalars['String']['output']>;
|
||||
@@ -4379,12 +4402,13 @@ export type WorkspaceDomainDeleteInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceFeatureName {
|
||||
DomainBasedSecurityPolicies = 'domainBasedSecurityPolicies',
|
||||
OidcSso = 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity = 'workspaceDataRegionSpecificity'
|
||||
}
|
||||
export const WorkspaceFeatureName = {
|
||||
DomainBasedSecurityPolicies: 'domainBasedSecurityPolicies',
|
||||
OidcSso: 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity: 'workspaceDataRegionSpecificity'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceFeatureName = typeof WorkspaceFeatureName[keyof typeof WorkspaceFeatureName];
|
||||
export type WorkspaceInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4489,12 +4513,13 @@ export type WorkspaceJoinRequestMutationsDenyArgs = {
|
||||
input: DenyWorkspaceJoinRequestInput;
|
||||
};
|
||||
|
||||
export enum WorkspaceJoinRequestStatus {
|
||||
Approved = 'approved',
|
||||
Denied = 'denied',
|
||||
Pending = 'pending'
|
||||
}
|
||||
export const WorkspaceJoinRequestStatus = {
|
||||
Approved: 'approved',
|
||||
Denied: 'denied',
|
||||
Pending: 'pending'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceJoinRequestStatus = typeof WorkspaceJoinRequestStatus[keyof typeof WorkspaceJoinRequestStatus];
|
||||
export type WorkspaceMutations = {
|
||||
__typename?: 'WorkspaceMutations';
|
||||
addDomain: Workspace;
|
||||
@@ -4583,12 +4608,13 @@ export type WorkspaceMutationsUpdateRoleArgs = {
|
||||
input: WorkspaceRoleUpdateInput;
|
||||
};
|
||||
|
||||
export enum WorkspacePaymentMethod {
|
||||
Billing = 'billing',
|
||||
Invoice = 'invoice',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const WorkspacePaymentMethod = {
|
||||
Billing: 'billing',
|
||||
Invoice: 'invoice',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePaymentMethod = typeof WorkspacePaymentMethod[keyof typeof WorkspacePaymentMethod];
|
||||
export type WorkspacePlan = {
|
||||
__typename?: 'WorkspacePlan';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -4597,27 +4623,31 @@ export type WorkspacePlan = {
|
||||
status: WorkspacePlanStatuses;
|
||||
};
|
||||
|
||||
export enum WorkspacePlanStatuses {
|
||||
CancelationScheduled = 'cancelationScheduled',
|
||||
Canceled = 'canceled',
|
||||
Expired = 'expired',
|
||||
PaymentFailed = 'paymentFailed',
|
||||
Trial = 'trial',
|
||||
Valid = 'valid'
|
||||
}
|
||||
export const WorkspacePlanStatuses = {
|
||||
CancelationScheduled: 'cancelationScheduled',
|
||||
Canceled: 'canceled',
|
||||
Expired: 'expired',
|
||||
PaymentFailed: 'paymentFailed',
|
||||
Trial: 'trial',
|
||||
Valid: 'valid'
|
||||
} as const;
|
||||
|
||||
export enum WorkspacePlans {
|
||||
Academia = 'academia',
|
||||
Business = 'business',
|
||||
BusinessInvoiced = 'businessInvoiced',
|
||||
Free = 'free',
|
||||
Plus = 'plus',
|
||||
PlusInvoiced = 'plusInvoiced',
|
||||
Starter = 'starter',
|
||||
StarterInvoiced = 'starterInvoiced',
|
||||
Unlimited = 'unlimited'
|
||||
}
|
||||
export type WorkspacePlanStatuses = typeof WorkspacePlanStatuses[keyof typeof WorkspacePlanStatuses];
|
||||
export const WorkspacePlans = {
|
||||
Academia: 'academia',
|
||||
Business: 'business',
|
||||
BusinessInvoiced: 'businessInvoiced',
|
||||
Free: 'free',
|
||||
Plus: 'plus',
|
||||
PlusInvoiced: 'plusInvoiced',
|
||||
Pro: 'pro',
|
||||
Starter: 'starter',
|
||||
StarterInvoiced: 'starterInvoiced',
|
||||
Team: 'team',
|
||||
Unlimited: 'unlimited'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePlans = typeof WorkspacePlans[keyof typeof WorkspacePlans];
|
||||
export type WorkspaceProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
name?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4689,21 +4719,23 @@ export type WorkspaceProjectsUpdatedMessage = {
|
||||
workspaceId: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum WorkspaceProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const WorkspaceProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceProjectsUpdatedMessageType = typeof WorkspaceProjectsUpdatedMessageType[keyof typeof WorkspaceProjectsUpdatedMessageType];
|
||||
export type WorkspaceRequestToJoinInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceRole {
|
||||
Admin = 'ADMIN',
|
||||
Guest = 'GUEST',
|
||||
Member = 'MEMBER'
|
||||
}
|
||||
export const WorkspaceRole = {
|
||||
Admin: 'ADMIN',
|
||||
Guest: 'GUEST',
|
||||
Member: 'MEMBER'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceRole = typeof WorkspaceRole[keyof typeof WorkspaceRole];
|
||||
export type WorkspaceRoleDeleteInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
workspaceId: Scalars['String']['input'];
|
||||
@@ -7888,7 +7920,6 @@ export type QueryFieldArgs = {
|
||||
workspace: QueryWorkspaceArgs,
|
||||
workspaceBySlug: QueryWorkspaceBySlugArgs,
|
||||
workspaceInvite: QueryWorkspaceInviteArgs,
|
||||
workspacePricingPlans: {},
|
||||
workspaceSsoByEmail: QueryWorkspaceSsoByEmailArgs,
|
||||
}
|
||||
export type ResourceIdentifierFieldArgs = {
|
||||
|
||||
@@ -85,10 +85,12 @@ export function useProjectVersionUpdateTracking(
|
||||
const event = res.data.projectVersionsUpdated
|
||||
const version = event.version
|
||||
if (
|
||||
[
|
||||
ProjectVersionsUpdatedMessageType.Created,
|
||||
ProjectVersionsUpdatedMessageType.Updated
|
||||
].includes(event.type) &&
|
||||
(
|
||||
[
|
||||
ProjectVersionsUpdatedMessageType.Created,
|
||||
ProjectVersionsUpdatedMessageType.Updated
|
||||
] as string[]
|
||||
).includes(event.type) &&
|
||||
version
|
||||
) {
|
||||
// Added new model w/ versions OR updated model that now has versions (it might not have had them previously)
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import type { AvailableRoles } from '@speckle/shared'
|
||||
import { isObjectLike, has } from 'lodash'
|
||||
import type { WorkspacePlans } from '~/lib/common/generated/gql/graphql'
|
||||
|
||||
type BaseSettingsMenuItem = {
|
||||
title: string
|
||||
@@ -17,22 +15,3 @@ export type WorkspaceSettingsMenuItem = BaseSettingsMenuItem & {
|
||||
name: string
|
||||
route: (slug: string) => string
|
||||
}
|
||||
|
||||
export type WorkspacePricingPlans = {
|
||||
workspacePricingPlans: {
|
||||
workspacePlanInformation: {
|
||||
[key: string]: {
|
||||
name: WorkspacePlans
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function isWorkspacePricingPlans(
|
||||
pricingPlans: unknown
|
||||
): pricingPlans is WorkspacePricingPlans {
|
||||
return (
|
||||
isObjectLike(pricingPlans) &&
|
||||
has(pricingPlans, 'workspacePricingPlans.workspacePlanInformation')
|
||||
)
|
||||
}
|
||||
|
||||
@@ -89,11 +89,11 @@
|
||||
"@babel/preset-typescript": "^7.18.6",
|
||||
"@datadog/datadog-ci": "^2.37.0",
|
||||
"@eslint/config-inspector": "^0.4.10",
|
||||
"@graphql-codegen/cli": "^5.0.3",
|
||||
"@graphql-codegen/client-preset": "^4.5.0",
|
||||
"@graphql-codegen/cli": "^5.0.5",
|
||||
"@graphql-codegen/client-preset": "^4.6.4",
|
||||
"@graphql-codegen/plugin-helpers": "^5.1.0",
|
||||
"@graphql-codegen/typescript": "^4.1.1",
|
||||
"@graphql-codegen/visitor-plugin-common": "5.5.0",
|
||||
"@graphql-codegen/typescript": "^4.1.5",
|
||||
"@graphql-codegen/visitor-plugin-common": "^5.7.1",
|
||||
"@nuxt/devtools": "^1.7.0",
|
||||
"@nuxt/eslint": "^1.1.0",
|
||||
"@nuxt/image": "^1.8.1",
|
||||
|
||||
@@ -217,13 +217,14 @@ import {
|
||||
type PaidWorkspacePlans
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import { useBillingActions } from '~/lib/billing/composables/actions'
|
||||
import { pricingPlansConfig } from '~/lib/billing/helpers/constants'
|
||||
import type { PaidWorkspacePlansOld } from '@speckle/shared'
|
||||
import { Roles } from '@speckle/shared'
|
||||
import { InformationCircleIcon } from '@heroicons/vue/24/outline'
|
||||
import { isPaidPlan } from '@/lib/billing/helpers/types'
|
||||
import { useMixpanel } from '~/lib/core/composables/mp'
|
||||
import { guideBillingUrl } from '~/lib/common/helpers/route'
|
||||
import { adminUpdateWorkspacePlanMutation } from '~/lib/billing/graphql/mutations'
|
||||
import { WorkspaceOldPaidPlanPrices } from '~/lib/billing/helpers/constants'
|
||||
|
||||
graphql(`
|
||||
fragment SettingsWorkspacesBilling_Workspace on Workspace {
|
||||
@@ -280,15 +281,15 @@ const { billingPortalRedirect, redirectToCheckout } = useBillingActions()
|
||||
const mixpanel = useMixpanel()
|
||||
const { mutate: mutateWorkspacePlan } = useMutation(adminUpdateWorkspacePlanMutation)
|
||||
|
||||
const seatPrices = ref({
|
||||
[WorkspacePlans.Starter]: pricingPlansConfig.plans[WorkspacePlans.Starter].cost,
|
||||
[WorkspacePlans.Plus]: pricingPlansConfig.plans[WorkspacePlans.Plus].cost,
|
||||
[WorkspacePlans.Business]: pricingPlansConfig.plans[WorkspacePlans.Business].cost
|
||||
})
|
||||
const selectedPlanName = ref<WorkspacePlans>()
|
||||
const selectedPlanName = ref<PaidWorkspacePlansOld>()
|
||||
const selectedPlanCycle = ref<BillingInterval>()
|
||||
const isUpgradeDialogOpen = ref(false)
|
||||
|
||||
const seatPrices = computed(() => ({
|
||||
[WorkspacePlans.Starter]: WorkspaceOldPaidPlanPrices[WorkspacePlans.Starter],
|
||||
[WorkspacePlans.Plus]: WorkspaceOldPaidPlanPrices[WorkspacePlans.Plus],
|
||||
[WorkspacePlans.Business]: WorkspaceOldPaidPlanPrices[WorkspacePlans.Business]
|
||||
}))
|
||||
const workspace = computed(() => workspaceResult.value?.workspaceBySlug)
|
||||
const currentPlan = computed(() => workspace.value?.plan)
|
||||
const subscription = computed(() => workspace.value?.subscription)
|
||||
@@ -422,7 +423,10 @@ const showStatusBadge = computed(() => {
|
||||
)
|
||||
})
|
||||
|
||||
const onPlanSelected = (plan: { name: WorkspacePlans; cycle: BillingInterval }) => {
|
||||
const onPlanSelected = (plan: {
|
||||
name: PaidWorkspacePlansOld
|
||||
cycle: BillingInterval
|
||||
}) => {
|
||||
const { name, cycle } = plan
|
||||
if (!isPaidPlan(name) || !workspace.value?.id) return
|
||||
|
||||
|
||||
@@ -244,11 +244,13 @@ const canDeleteWorkspace = computed(
|
||||
!needsSsoLogin.value &&
|
||||
(!isBillingIntegrationEnabled ||
|
||||
!(
|
||||
[
|
||||
WorkspacePlanStatuses.Valid,
|
||||
WorkspacePlanStatuses.PaymentFailed,
|
||||
WorkspacePlanStatuses.CancelationScheduled
|
||||
].includes(
|
||||
(
|
||||
[
|
||||
WorkspacePlanStatuses.Valid,
|
||||
WorkspacePlanStatuses.PaymentFailed,
|
||||
WorkspacePlanStatuses.CancelationScheduled
|
||||
] as string[]
|
||||
).includes(
|
||||
workspaceResult.value?.workspaceBySlug?.plan?.status as WorkspacePlanStatuses
|
||||
) && isPaidPlan(workspaceResult.value?.workspaceBySlug?.plan?.name)
|
||||
))
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
"imports": {
|
||||
"#lodash": {
|
||||
"require": "lodash",
|
||||
"import": "lodash-es",
|
||||
"node": "lodash",
|
||||
"default": "lodash-es"
|
||||
"import": "lodash-es"
|
||||
}
|
||||
},
|
||||
"homepage": "https://speckle.systems",
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@typescript-eslint/eslint-plugin": "^7.12.0",
|
||||
"@typescript-eslint/parser": "^7.12.0",
|
||||
"@vitest/coverage-v8": "^1.6.0",
|
||||
"@vitest/coverage-v8": "^3.0.7",
|
||||
"eslint": "^9.4.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"prettier": "^3.3.2",
|
||||
@@ -54,21 +54,19 @@
|
||||
"exports": {
|
||||
".": {
|
||||
"import": {
|
||||
"default": "./dist/objectsender.js",
|
||||
"types": "./dist/index.d.ts"
|
||||
"types": "./dist/index.d.ts",
|
||||
"default": "./dist/objectsender.js"
|
||||
},
|
||||
"require": {
|
||||
"default": "./dist/objectsender.cjs",
|
||||
"types": "./dist/index.d.ts"
|
||||
"types": "./dist/index.d.ts",
|
||||
"default": "./dist/objectsender.cjs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"imports": {
|
||||
"#lodash": {
|
||||
"require": "lodash",
|
||||
"import": "lodash-es",
|
||||
"node": "lodash",
|
||||
"default": "lodash-es"
|
||||
"import": "lodash-es"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-3
@@ -1,3 +1 @@
|
||||
{
|
||||
"vitest.disableWorkspaceWarning": true
|
||||
}
|
||||
{}
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
extend type Query {
|
||||
workspacePricingPlans: JSONObject!
|
||||
}
|
||||
|
||||
extend type WorkspaceMutations {
|
||||
billing: WorkspaceBillingMutations! @hasScope(scope: "workspace:billing")
|
||||
}
|
||||
@@ -66,6 +62,8 @@ enum WorkspacePlans {
|
||||
starterInvoiced
|
||||
plusInvoiced
|
||||
businessInvoiced
|
||||
team
|
||||
pro
|
||||
}
|
||||
|
||||
enum WorkspacePlanStatuses {
|
||||
|
||||
@@ -8,6 +8,7 @@ generates:
|
||||
- 'typescript'
|
||||
- 'typescript-resolvers'
|
||||
config:
|
||||
enumsAsConst: true
|
||||
contextType: '@/modules/shared/helpers/typeHelper#GraphQLContext'
|
||||
mappers:
|
||||
Stream: '@/modules/core/helpers/graphTypes#StreamGraphQLReturn'
|
||||
@@ -89,6 +90,7 @@ generates:
|
||||
documents:
|
||||
- 'modules/cross-server-sync/**/*.{js,ts}'
|
||||
config:
|
||||
enumsAsConst: true
|
||||
scalars:
|
||||
JSONObject: Record<string, unknown>
|
||||
DateTime: string
|
||||
@@ -101,10 +103,12 @@ generates:
|
||||
- 'test/graphql/*.{js,ts}'
|
||||
- 'modules/**/tests/helpers/graphql.ts'
|
||||
config:
|
||||
enumsAsConst: true
|
||||
scalars:
|
||||
JSONObject: Record<string, unknown>
|
||||
DateTime: string
|
||||
config:
|
||||
enumsAsConst: true
|
||||
scalars:
|
||||
JSONObject: Record<string, unknown>
|
||||
DateTime: Date
|
||||
|
||||
@@ -3,11 +3,8 @@ import { cliLogger } from '@/logging/logging'
|
||||
import { getWorkspaceBySlugOrIdFactory } from '@/modules/workspaces/repositories/workspaces'
|
||||
import { db } from '@/db/knex'
|
||||
import { upsertPaidWorkspacePlanFactory } from '@/modules/gatekeeper/repositories/billing'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
PaidWorkspacePlanStatuses
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace'
|
||||
import { PaidWorkspacePlans, PaidWorkspacePlanStatuses } from '@speckle/shared'
|
||||
|
||||
const command: CommandModule<
|
||||
unknown,
|
||||
|
||||
@@ -6,12 +6,14 @@ export type ResourceIdentifier = {
|
||||
resourceType: ResourceType
|
||||
}
|
||||
|
||||
export enum ResourceType {
|
||||
Comment = 'comment',
|
||||
Commit = 'commit',
|
||||
Object = 'object',
|
||||
Stream = 'stream'
|
||||
}
|
||||
export const ResourceType = {
|
||||
Comment: 'comment',
|
||||
Commit: 'commit',
|
||||
Object: 'object',
|
||||
Stream: 'stream'
|
||||
} as const
|
||||
|
||||
export type ResourceType = (typeof ResourceType)[keyof typeof ResourceType]
|
||||
|
||||
export type ExtendedComment = CommentRecord & {
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { ProjectVisibility } from '@/modules/core/domain/projects/operations'
|
||||
import { Project } from '@/modules/core/domain/streams/types'
|
||||
import {
|
||||
ProjectCreateInput,
|
||||
@@ -7,7 +6,6 @@ import {
|
||||
StreamUpdateInput
|
||||
} from '@/modules/core/graph/generated/graphql'
|
||||
import { StreamRoles } from '@speckle/shared'
|
||||
import { OverrideProperties } from 'type-fest'
|
||||
|
||||
export const projectEventsNamespace = 'projects' as const
|
||||
|
||||
@@ -24,23 +22,13 @@ export type ProjectEventsPayloads = {
|
||||
[ProjectEvents.Created]: {
|
||||
project: Project
|
||||
ownerId: string
|
||||
input:
|
||||
| StreamCreateInput
|
||||
| OverrideProperties<
|
||||
ProjectCreateInput,
|
||||
{ visibility: ProjectCreateInput['visibility'] | ProjectVisibility }
|
||||
>
|
||||
input: StreamCreateInput | ProjectCreateInput
|
||||
}
|
||||
[ProjectEvents.Updated]: {
|
||||
updaterId: string
|
||||
oldProject: Project
|
||||
newProject: Project
|
||||
update:
|
||||
| OverrideProperties<
|
||||
ProjectUpdateInput,
|
||||
{ visibility: ProjectUpdateInput['visibility'] | ProjectVisibility }
|
||||
>
|
||||
| StreamUpdateInput
|
||||
update: ProjectUpdateInput | StreamUpdateInput
|
||||
}
|
||||
[ProjectEvents.Deleted]: {
|
||||
deleterId: string
|
||||
|
||||
@@ -348,12 +348,13 @@ export type AutomateFunctionTemplate = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateFunctionTemplateLanguage {
|
||||
DotNet = 'DOT_NET',
|
||||
Python = 'PYTHON',
|
||||
Typescript = 'TYPESCRIPT'
|
||||
}
|
||||
export const AutomateFunctionTemplateLanguage = {
|
||||
DotNet: 'DOT_NET',
|
||||
Python: 'PYTHON',
|
||||
Typescript: 'TYPESCRIPT'
|
||||
} as const;
|
||||
|
||||
export type AutomateFunctionTemplateLanguage = typeof AutomateFunctionTemplateLanguage[keyof typeof AutomateFunctionTemplateLanguage];
|
||||
export type AutomateFunctionToken = {
|
||||
__typename?: 'AutomateFunctionToken';
|
||||
functionId: Scalars['String']['output'];
|
||||
@@ -407,21 +408,23 @@ export type AutomateRunCollection = {
|
||||
totalCount: Scalars['Int']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateRunStatus {
|
||||
Canceled = 'CANCELED',
|
||||
Exception = 'EXCEPTION',
|
||||
Failed = 'FAILED',
|
||||
Initializing = 'INITIALIZING',
|
||||
Pending = 'PENDING',
|
||||
Running = 'RUNNING',
|
||||
Succeeded = 'SUCCEEDED',
|
||||
Timeout = 'TIMEOUT'
|
||||
}
|
||||
export const AutomateRunStatus = {
|
||||
Canceled: 'CANCELED',
|
||||
Exception: 'EXCEPTION',
|
||||
Failed: 'FAILED',
|
||||
Initializing: 'INITIALIZING',
|
||||
Pending: 'PENDING',
|
||||
Running: 'RUNNING',
|
||||
Succeeded: 'SUCCEEDED',
|
||||
Timeout: 'TIMEOUT'
|
||||
} as const;
|
||||
|
||||
export enum AutomateRunTriggerType {
|
||||
VersionCreated = 'VERSION_CREATED'
|
||||
}
|
||||
export type AutomateRunStatus = typeof AutomateRunStatus[keyof typeof AutomateRunStatus];
|
||||
export const AutomateRunTriggerType = {
|
||||
VersionCreated: 'VERSION_CREATED'
|
||||
} as const;
|
||||
|
||||
export type AutomateRunTriggerType = typeof AutomateRunTriggerType[keyof typeof AutomateRunTriggerType];
|
||||
export type Automation = {
|
||||
__typename?: 'Automation';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -482,11 +485,12 @@ export type BasicGitRepositoryMetadata = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum BillingInterval {
|
||||
Monthly = 'monthly',
|
||||
Yearly = 'yearly'
|
||||
}
|
||||
export const BillingInterval = {
|
||||
Monthly: 'monthly',
|
||||
Yearly: 'yearly'
|
||||
} as const;
|
||||
|
||||
export type BillingInterval = typeof BillingInterval[keyof typeof BillingInterval];
|
||||
export type BlobMetadata = {
|
||||
__typename?: 'BlobMetadata';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -950,11 +954,12 @@ export type DenyWorkspaceJoinRequestInput = {
|
||||
workspaceId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum DiscoverableStreamsSortType {
|
||||
CreatedDate = 'CREATED_DATE',
|
||||
FavoritesCount = 'FAVORITES_COUNT'
|
||||
}
|
||||
export const DiscoverableStreamsSortType = {
|
||||
CreatedDate: 'CREATED_DATE',
|
||||
FavoritesCount: 'FAVORITES_COUNT'
|
||||
} as const;
|
||||
|
||||
export type DiscoverableStreamsSortType = typeof DiscoverableStreamsSortType[keyof typeof DiscoverableStreamsSortType];
|
||||
export type DiscoverableStreamsSortingInput = {
|
||||
direction: SortDirection;
|
||||
type: DiscoverableStreamsSortType;
|
||||
@@ -1870,12 +1875,13 @@ export type ObjectCreateInput = {
|
||||
streamId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum PaidWorkspacePlans {
|
||||
Business = 'business',
|
||||
Plus = 'plus',
|
||||
Starter = 'starter'
|
||||
}
|
||||
export const PaidWorkspacePlans = {
|
||||
Business: 'business',
|
||||
Plus: 'plus',
|
||||
Starter: 'starter'
|
||||
} as const;
|
||||
|
||||
export type PaidWorkspacePlans = typeof PaidWorkspacePlans[keyof typeof PaidWorkspacePlans];
|
||||
export type PasswordStrengthCheckFeedback = {
|
||||
__typename?: 'PasswordStrengthCheckFeedback';
|
||||
suggestions: Array<Scalars['String']['output']>;
|
||||
@@ -2203,12 +2209,13 @@ export type ProjectAutomationsUpdatedMessage = {
|
||||
type: ProjectAutomationsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectAutomationsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
CreatedRevision = 'CREATED_REVISION',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectAutomationsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
CreatedRevision: 'CREATED_REVISION',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectAutomationsUpdatedMessageType = typeof ProjectAutomationsUpdatedMessageType[keyof typeof ProjectAutomationsUpdatedMessageType];
|
||||
export type ProjectCollaborator = {
|
||||
__typename?: 'ProjectCollaborator';
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -2255,12 +2262,13 @@ export type ProjectCommentsUpdatedMessage = {
|
||||
type: ProjectCommentsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectCommentsUpdatedMessageType {
|
||||
Archived = 'ARCHIVED',
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectCommentsUpdatedMessageType = {
|
||||
Archived: 'ARCHIVED',
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectCommentsUpdatedMessageType = typeof ProjectCommentsUpdatedMessageType[keyof typeof ProjectCommentsUpdatedMessageType];
|
||||
/** Any values left null will be ignored */
|
||||
export type ProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2276,11 +2284,12 @@ export type ProjectFileImportUpdatedMessage = {
|
||||
upload: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectFileImportUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectFileImportUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectFileImportUpdatedMessageType = typeof ProjectFileImportUpdatedMessageType[keyof typeof ProjectFileImportUpdatedMessageType];
|
||||
export type ProjectInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2377,12 +2386,13 @@ export type ProjectModelsUpdatedMessage = {
|
||||
type: ProjectModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectModelsUpdatedMessageType = typeof ProjectModelsUpdatedMessageType[keyof typeof ProjectModelsUpdatedMessageType];
|
||||
export type ProjectMutations = {
|
||||
__typename?: 'ProjectMutations';
|
||||
/** Access request related mutations */
|
||||
@@ -2452,11 +2462,12 @@ export type ProjectPendingModelsUpdatedMessage = {
|
||||
type: ProjectPendingModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectPendingModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingModelsUpdatedMessageType = typeof ProjectPendingModelsUpdatedMessageType[keyof typeof ProjectPendingModelsUpdatedMessageType];
|
||||
export type ProjectPendingVersionsUpdatedMessage = {
|
||||
__typename?: 'ProjectPendingVersionsUpdatedMessage';
|
||||
/** Upload ID */
|
||||
@@ -2465,11 +2476,12 @@ export type ProjectPendingVersionsUpdatedMessage = {
|
||||
version: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectPendingVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingVersionsUpdatedMessageType = typeof ProjectPendingVersionsUpdatedMessageType[keyof typeof ProjectPendingVersionsUpdatedMessageType];
|
||||
export type ProjectRole = {
|
||||
__typename?: 'ProjectRole';
|
||||
project: Project;
|
||||
@@ -2491,11 +2503,12 @@ export type ProjectTriggeredAutomationsStatusUpdatedMessage = {
|
||||
version: Version;
|
||||
};
|
||||
|
||||
export enum ProjectTriggeredAutomationsStatusUpdatedMessageType {
|
||||
RunCreated = 'RUN_CREATED',
|
||||
RunUpdated = 'RUN_UPDATED'
|
||||
}
|
||||
export const ProjectTriggeredAutomationsStatusUpdatedMessageType = {
|
||||
RunCreated: 'RUN_CREATED',
|
||||
RunUpdated: 'RUN_UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectTriggeredAutomationsStatusUpdatedMessageType = typeof ProjectTriggeredAutomationsStatusUpdatedMessageType[keyof typeof ProjectTriggeredAutomationsStatusUpdatedMessageType];
|
||||
/** Any values left null will be ignored, so only set the properties that you want updated */
|
||||
export type ProjectUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
@@ -2522,11 +2535,12 @@ export type ProjectUpdatedMessage = {
|
||||
type: ProjectUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectUpdatedMessageType {
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectUpdatedMessageType = {
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectUpdatedMessageType = typeof ProjectUpdatedMessageType[keyof typeof ProjectUpdatedMessageType];
|
||||
export type ProjectVersionsPreviewGeneratedMessage = {
|
||||
__typename?: 'ProjectVersionsPreviewGeneratedMessage';
|
||||
objectId: Scalars['String']['output'];
|
||||
@@ -2545,18 +2559,20 @@ export type ProjectVersionsUpdatedMessage = {
|
||||
version?: Maybe<Version>;
|
||||
};
|
||||
|
||||
export enum ProjectVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export enum ProjectVisibility {
|
||||
Private = 'PRIVATE',
|
||||
Public = 'PUBLIC',
|
||||
Unlisted = 'UNLISTED'
|
||||
}
|
||||
export type ProjectVersionsUpdatedMessageType = typeof ProjectVersionsUpdatedMessageType[keyof typeof ProjectVersionsUpdatedMessageType];
|
||||
export const ProjectVisibility = {
|
||||
Private: 'PRIVATE',
|
||||
Public: 'PUBLIC',
|
||||
Unlisted: 'UNLISTED'
|
||||
} as const;
|
||||
|
||||
export type ProjectVisibility = typeof ProjectVisibility[keyof typeof ProjectVisibility];
|
||||
export type Query = {
|
||||
__typename?: 'Query';
|
||||
/** Stare into the void. */
|
||||
@@ -2680,7 +2696,6 @@ export type Query = {
|
||||
* Either token or workspaceId must be specified, or both
|
||||
*/
|
||||
workspaceInvite?: Maybe<PendingWorkspaceCollaborator>;
|
||||
workspacePricingPlans: Scalars['JSONObject']['output'];
|
||||
/** Find workspaces a given user email can use SSO to sign with */
|
||||
workspaceSsoByEmail: Array<LimitedWorkspace>;
|
||||
};
|
||||
@@ -2867,13 +2882,14 @@ export type ResourceIdentifierInput = {
|
||||
resourceType: ResourceType;
|
||||
};
|
||||
|
||||
export enum ResourceType {
|
||||
Comment = 'comment',
|
||||
Commit = 'commit',
|
||||
Object = 'object',
|
||||
Stream = 'stream'
|
||||
}
|
||||
export const ResourceType = {
|
||||
Comment: 'comment',
|
||||
Commit: 'commit',
|
||||
Object: 'object',
|
||||
Stream: 'stream'
|
||||
} as const;
|
||||
|
||||
export type ResourceType = typeof ResourceType[keyof typeof ResourceType];
|
||||
export type Role = {
|
||||
__typename?: 'Role';
|
||||
description: Scalars['String']['output'];
|
||||
@@ -3037,13 +3053,14 @@ export type ServerRegionMutationsUpdateArgs = {
|
||||
input: UpdateServerRegionInput;
|
||||
};
|
||||
|
||||
export enum ServerRole {
|
||||
ServerAdmin = 'SERVER_ADMIN',
|
||||
ServerArchivedUser = 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest = 'SERVER_GUEST',
|
||||
ServerUser = 'SERVER_USER'
|
||||
}
|
||||
export const ServerRole = {
|
||||
ServerAdmin: 'SERVER_ADMIN',
|
||||
ServerArchivedUser: 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest: 'SERVER_GUEST',
|
||||
ServerUser: 'SERVER_USER'
|
||||
} as const;
|
||||
|
||||
export type ServerRole = typeof ServerRole[keyof typeof ServerRole];
|
||||
export type ServerRoleItem = {
|
||||
__typename?: 'ServerRoleItem';
|
||||
id: Scalars['String']['output'];
|
||||
@@ -3082,11 +3099,12 @@ export type ServerWorkspacesInfo = {
|
||||
workspacesEnabled: Scalars['Boolean']['output'];
|
||||
};
|
||||
|
||||
export enum SessionPaymentStatus {
|
||||
Paid = 'paid',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const SessionPaymentStatus = {
|
||||
Paid: 'paid',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type SessionPaymentStatus = typeof SessionPaymentStatus[keyof typeof SessionPaymentStatus];
|
||||
export type SetPrimaryUserEmailInput = {
|
||||
id: Scalars['ID']['input'];
|
||||
};
|
||||
@@ -3106,11 +3124,12 @@ export type SmartTextEditorValue = {
|
||||
version: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum SortDirection {
|
||||
Asc = 'ASC',
|
||||
Desc = 'DESC'
|
||||
}
|
||||
export const SortDirection = {
|
||||
Asc: 'ASC',
|
||||
Desc: 'DESC'
|
||||
} as const;
|
||||
|
||||
export type SortDirection = typeof SortDirection[keyof typeof SortDirection];
|
||||
export type Stream = {
|
||||
__typename?: 'Stream';
|
||||
/**
|
||||
@@ -3305,12 +3324,13 @@ export type StreamRevokePermissionInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum StreamRole {
|
||||
StreamContributor = 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner = 'STREAM_OWNER',
|
||||
StreamReviewer = 'STREAM_REVIEWER'
|
||||
}
|
||||
export const StreamRole = {
|
||||
StreamContributor: 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner: 'STREAM_OWNER',
|
||||
StreamReviewer: 'STREAM_REVIEWER'
|
||||
} as const;
|
||||
|
||||
export type StreamRole = typeof StreamRole[keyof typeof StreamRole];
|
||||
export type StreamUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -3626,11 +3646,12 @@ export type TokenResourceIdentifierInput = {
|
||||
type: TokenResourceIdentifierType;
|
||||
};
|
||||
|
||||
export enum TokenResourceIdentifierType {
|
||||
Project = 'project',
|
||||
Workspace = 'workspace'
|
||||
}
|
||||
export const TokenResourceIdentifierType = {
|
||||
Project: 'project',
|
||||
Workspace: 'workspace'
|
||||
} as const;
|
||||
|
||||
export type TokenResourceIdentifierType = typeof TokenResourceIdentifierType[keyof typeof TokenResourceIdentifierType];
|
||||
export type TriggeredAutomationsStatus = {
|
||||
__typename?: 'TriggeredAutomationsStatus';
|
||||
automationRuns: Array<AutomateRun>;
|
||||
@@ -3975,11 +3996,12 @@ export type UserProjectsUpdatedMessage = {
|
||||
type: UserProjectsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum UserProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const UserProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type UserProjectsUpdatedMessageType = typeof UserProjectsUpdatedMessageType[keyof typeof UserProjectsUpdatedMessageType];
|
||||
export type UserRoleInput = {
|
||||
id: Scalars['String']['input'];
|
||||
role: Scalars['String']['input'];
|
||||
@@ -4169,11 +4191,12 @@ export type ViewerUserActivityMessageInput = {
|
||||
userName: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum ViewerUserActivityStatus {
|
||||
Disconnected = 'DISCONNECTED',
|
||||
Viewing = 'VIEWING'
|
||||
}
|
||||
export const ViewerUserActivityStatus = {
|
||||
Disconnected: 'DISCONNECTED',
|
||||
Viewing: 'VIEWING'
|
||||
} as const;
|
||||
|
||||
export type ViewerUserActivityStatus = typeof ViewerUserActivityStatus[keyof typeof ViewerUserActivityStatus];
|
||||
export type Webhook = {
|
||||
__typename?: 'Webhook';
|
||||
description?: Maybe<Scalars['String']['output']>;
|
||||
@@ -4401,12 +4424,13 @@ export type WorkspaceDomainDeleteInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceFeatureName {
|
||||
DomainBasedSecurityPolicies = 'domainBasedSecurityPolicies',
|
||||
OidcSso = 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity = 'workspaceDataRegionSpecificity'
|
||||
}
|
||||
export const WorkspaceFeatureName = {
|
||||
DomainBasedSecurityPolicies: 'domainBasedSecurityPolicies',
|
||||
OidcSso: 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity: 'workspaceDataRegionSpecificity'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceFeatureName = typeof WorkspaceFeatureName[keyof typeof WorkspaceFeatureName];
|
||||
export type WorkspaceInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4511,12 +4535,13 @@ export type WorkspaceJoinRequestMutationsDenyArgs = {
|
||||
input: DenyWorkspaceJoinRequestInput;
|
||||
};
|
||||
|
||||
export enum WorkspaceJoinRequestStatus {
|
||||
Approved = 'approved',
|
||||
Denied = 'denied',
|
||||
Pending = 'pending'
|
||||
}
|
||||
export const WorkspaceJoinRequestStatus = {
|
||||
Approved: 'approved',
|
||||
Denied: 'denied',
|
||||
Pending: 'pending'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceJoinRequestStatus = typeof WorkspaceJoinRequestStatus[keyof typeof WorkspaceJoinRequestStatus];
|
||||
export type WorkspaceMutations = {
|
||||
__typename?: 'WorkspaceMutations';
|
||||
addDomain: Workspace;
|
||||
@@ -4605,12 +4630,13 @@ export type WorkspaceMutationsUpdateRoleArgs = {
|
||||
input: WorkspaceRoleUpdateInput;
|
||||
};
|
||||
|
||||
export enum WorkspacePaymentMethod {
|
||||
Billing = 'billing',
|
||||
Invoice = 'invoice',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const WorkspacePaymentMethod = {
|
||||
Billing: 'billing',
|
||||
Invoice: 'invoice',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePaymentMethod = typeof WorkspacePaymentMethod[keyof typeof WorkspacePaymentMethod];
|
||||
export type WorkspacePlan = {
|
||||
__typename?: 'WorkspacePlan';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -4619,27 +4645,31 @@ export type WorkspacePlan = {
|
||||
status: WorkspacePlanStatuses;
|
||||
};
|
||||
|
||||
export enum WorkspacePlanStatuses {
|
||||
CancelationScheduled = 'cancelationScheduled',
|
||||
Canceled = 'canceled',
|
||||
Expired = 'expired',
|
||||
PaymentFailed = 'paymentFailed',
|
||||
Trial = 'trial',
|
||||
Valid = 'valid'
|
||||
}
|
||||
export const WorkspacePlanStatuses = {
|
||||
CancelationScheduled: 'cancelationScheduled',
|
||||
Canceled: 'canceled',
|
||||
Expired: 'expired',
|
||||
PaymentFailed: 'paymentFailed',
|
||||
Trial: 'trial',
|
||||
Valid: 'valid'
|
||||
} as const;
|
||||
|
||||
export enum WorkspacePlans {
|
||||
Academia = 'academia',
|
||||
Business = 'business',
|
||||
BusinessInvoiced = 'businessInvoiced',
|
||||
Free = 'free',
|
||||
Plus = 'plus',
|
||||
PlusInvoiced = 'plusInvoiced',
|
||||
Starter = 'starter',
|
||||
StarterInvoiced = 'starterInvoiced',
|
||||
Unlimited = 'unlimited'
|
||||
}
|
||||
export type WorkspacePlanStatuses = typeof WorkspacePlanStatuses[keyof typeof WorkspacePlanStatuses];
|
||||
export const WorkspacePlans = {
|
||||
Academia: 'academia',
|
||||
Business: 'business',
|
||||
BusinessInvoiced: 'businessInvoiced',
|
||||
Free: 'free',
|
||||
Plus: 'plus',
|
||||
PlusInvoiced: 'plusInvoiced',
|
||||
Pro: 'pro',
|
||||
Starter: 'starter',
|
||||
StarterInvoiced: 'starterInvoiced',
|
||||
Team: 'team',
|
||||
Unlimited: 'unlimited'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePlans = typeof WorkspacePlans[keyof typeof WorkspacePlans];
|
||||
export type WorkspaceProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
name?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4711,21 +4741,23 @@ export type WorkspaceProjectsUpdatedMessage = {
|
||||
workspaceId: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum WorkspaceProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const WorkspaceProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceProjectsUpdatedMessageType = typeof WorkspaceProjectsUpdatedMessageType[keyof typeof WorkspaceProjectsUpdatedMessageType];
|
||||
export type WorkspaceRequestToJoinInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceRole {
|
||||
Admin = 'ADMIN',
|
||||
Guest = 'GUEST',
|
||||
Member = 'MEMBER'
|
||||
}
|
||||
export const WorkspaceRole = {
|
||||
Admin: 'ADMIN',
|
||||
Guest: 'GUEST',
|
||||
Member: 'MEMBER'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceRole = typeof WorkspaceRole[keyof typeof WorkspaceRole];
|
||||
export type WorkspaceRoleDeleteInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
workspaceId: Scalars['String']['input'];
|
||||
@@ -6422,7 +6454,6 @@ export type QueryResolvers<ContextType = GraphQLContext, ParentType extends Reso
|
||||
workspace?: Resolver<ResolversTypes['Workspace'], ParentType, ContextType, RequireFields<QueryWorkspaceArgs, 'id'>>;
|
||||
workspaceBySlug?: Resolver<ResolversTypes['Workspace'], ParentType, ContextType, RequireFields<QueryWorkspaceBySlugArgs, 'slug'>>;
|
||||
workspaceInvite?: Resolver<Maybe<ResolversTypes['PendingWorkspaceCollaborator']>, ParentType, ContextType, Partial<QueryWorkspaceInviteArgs>>;
|
||||
workspacePricingPlans?: Resolver<ResolversTypes['JSONObject'], ParentType, ContextType>;
|
||||
workspaceSsoByEmail?: Resolver<Array<ResolversTypes['LimitedWorkspace']>, ParentType, ContextType, RequireFields<QueryWorkspaceSsoByEmailArgs, 'email'>>;
|
||||
};
|
||||
|
||||
|
||||
@@ -329,12 +329,13 @@ export type AutomateFunctionTemplate = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateFunctionTemplateLanguage {
|
||||
DotNet = 'DOT_NET',
|
||||
Python = 'PYTHON',
|
||||
Typescript = 'TYPESCRIPT'
|
||||
}
|
||||
export const AutomateFunctionTemplateLanguage = {
|
||||
DotNet: 'DOT_NET',
|
||||
Python: 'PYTHON',
|
||||
Typescript: 'TYPESCRIPT'
|
||||
} as const;
|
||||
|
||||
export type AutomateFunctionTemplateLanguage = typeof AutomateFunctionTemplateLanguage[keyof typeof AutomateFunctionTemplateLanguage];
|
||||
export type AutomateFunctionToken = {
|
||||
__typename?: 'AutomateFunctionToken';
|
||||
functionId: Scalars['String']['output'];
|
||||
@@ -388,21 +389,23 @@ export type AutomateRunCollection = {
|
||||
totalCount: Scalars['Int']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateRunStatus {
|
||||
Canceled = 'CANCELED',
|
||||
Exception = 'EXCEPTION',
|
||||
Failed = 'FAILED',
|
||||
Initializing = 'INITIALIZING',
|
||||
Pending = 'PENDING',
|
||||
Running = 'RUNNING',
|
||||
Succeeded = 'SUCCEEDED',
|
||||
Timeout = 'TIMEOUT'
|
||||
}
|
||||
export const AutomateRunStatus = {
|
||||
Canceled: 'CANCELED',
|
||||
Exception: 'EXCEPTION',
|
||||
Failed: 'FAILED',
|
||||
Initializing: 'INITIALIZING',
|
||||
Pending: 'PENDING',
|
||||
Running: 'RUNNING',
|
||||
Succeeded: 'SUCCEEDED',
|
||||
Timeout: 'TIMEOUT'
|
||||
} as const;
|
||||
|
||||
export enum AutomateRunTriggerType {
|
||||
VersionCreated = 'VERSION_CREATED'
|
||||
}
|
||||
export type AutomateRunStatus = typeof AutomateRunStatus[keyof typeof AutomateRunStatus];
|
||||
export const AutomateRunTriggerType = {
|
||||
VersionCreated: 'VERSION_CREATED'
|
||||
} as const;
|
||||
|
||||
export type AutomateRunTriggerType = typeof AutomateRunTriggerType[keyof typeof AutomateRunTriggerType];
|
||||
export type Automation = {
|
||||
__typename?: 'Automation';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -463,11 +466,12 @@ export type BasicGitRepositoryMetadata = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum BillingInterval {
|
||||
Monthly = 'monthly',
|
||||
Yearly = 'yearly'
|
||||
}
|
||||
export const BillingInterval = {
|
||||
Monthly: 'monthly',
|
||||
Yearly: 'yearly'
|
||||
} as const;
|
||||
|
||||
export type BillingInterval = typeof BillingInterval[keyof typeof BillingInterval];
|
||||
export type BlobMetadata = {
|
||||
__typename?: 'BlobMetadata';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -931,11 +935,12 @@ export type DenyWorkspaceJoinRequestInput = {
|
||||
workspaceId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum DiscoverableStreamsSortType {
|
||||
CreatedDate = 'CREATED_DATE',
|
||||
FavoritesCount = 'FAVORITES_COUNT'
|
||||
}
|
||||
export const DiscoverableStreamsSortType = {
|
||||
CreatedDate: 'CREATED_DATE',
|
||||
FavoritesCount: 'FAVORITES_COUNT'
|
||||
} as const;
|
||||
|
||||
export type DiscoverableStreamsSortType = typeof DiscoverableStreamsSortType[keyof typeof DiscoverableStreamsSortType];
|
||||
export type DiscoverableStreamsSortingInput = {
|
||||
direction: SortDirection;
|
||||
type: DiscoverableStreamsSortType;
|
||||
@@ -1851,12 +1856,13 @@ export type ObjectCreateInput = {
|
||||
streamId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum PaidWorkspacePlans {
|
||||
Business = 'business',
|
||||
Plus = 'plus',
|
||||
Starter = 'starter'
|
||||
}
|
||||
export const PaidWorkspacePlans = {
|
||||
Business: 'business',
|
||||
Plus: 'plus',
|
||||
Starter: 'starter'
|
||||
} as const;
|
||||
|
||||
export type PaidWorkspacePlans = typeof PaidWorkspacePlans[keyof typeof PaidWorkspacePlans];
|
||||
export type PasswordStrengthCheckFeedback = {
|
||||
__typename?: 'PasswordStrengthCheckFeedback';
|
||||
suggestions: Array<Scalars['String']['output']>;
|
||||
@@ -2184,12 +2190,13 @@ export type ProjectAutomationsUpdatedMessage = {
|
||||
type: ProjectAutomationsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectAutomationsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
CreatedRevision = 'CREATED_REVISION',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectAutomationsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
CreatedRevision: 'CREATED_REVISION',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectAutomationsUpdatedMessageType = typeof ProjectAutomationsUpdatedMessageType[keyof typeof ProjectAutomationsUpdatedMessageType];
|
||||
export type ProjectCollaborator = {
|
||||
__typename?: 'ProjectCollaborator';
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -2236,12 +2243,13 @@ export type ProjectCommentsUpdatedMessage = {
|
||||
type: ProjectCommentsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectCommentsUpdatedMessageType {
|
||||
Archived = 'ARCHIVED',
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectCommentsUpdatedMessageType = {
|
||||
Archived: 'ARCHIVED',
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectCommentsUpdatedMessageType = typeof ProjectCommentsUpdatedMessageType[keyof typeof ProjectCommentsUpdatedMessageType];
|
||||
/** Any values left null will be ignored */
|
||||
export type ProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2257,11 +2265,12 @@ export type ProjectFileImportUpdatedMessage = {
|
||||
upload: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectFileImportUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectFileImportUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectFileImportUpdatedMessageType = typeof ProjectFileImportUpdatedMessageType[keyof typeof ProjectFileImportUpdatedMessageType];
|
||||
export type ProjectInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2358,12 +2367,13 @@ export type ProjectModelsUpdatedMessage = {
|
||||
type: ProjectModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectModelsUpdatedMessageType = typeof ProjectModelsUpdatedMessageType[keyof typeof ProjectModelsUpdatedMessageType];
|
||||
export type ProjectMutations = {
|
||||
__typename?: 'ProjectMutations';
|
||||
/** Access request related mutations */
|
||||
@@ -2433,11 +2443,12 @@ export type ProjectPendingModelsUpdatedMessage = {
|
||||
type: ProjectPendingModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectPendingModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingModelsUpdatedMessageType = typeof ProjectPendingModelsUpdatedMessageType[keyof typeof ProjectPendingModelsUpdatedMessageType];
|
||||
export type ProjectPendingVersionsUpdatedMessage = {
|
||||
__typename?: 'ProjectPendingVersionsUpdatedMessage';
|
||||
/** Upload ID */
|
||||
@@ -2446,11 +2457,12 @@ export type ProjectPendingVersionsUpdatedMessage = {
|
||||
version: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectPendingVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingVersionsUpdatedMessageType = typeof ProjectPendingVersionsUpdatedMessageType[keyof typeof ProjectPendingVersionsUpdatedMessageType];
|
||||
export type ProjectRole = {
|
||||
__typename?: 'ProjectRole';
|
||||
project: Project;
|
||||
@@ -2472,11 +2484,12 @@ export type ProjectTriggeredAutomationsStatusUpdatedMessage = {
|
||||
version: Version;
|
||||
};
|
||||
|
||||
export enum ProjectTriggeredAutomationsStatusUpdatedMessageType {
|
||||
RunCreated = 'RUN_CREATED',
|
||||
RunUpdated = 'RUN_UPDATED'
|
||||
}
|
||||
export const ProjectTriggeredAutomationsStatusUpdatedMessageType = {
|
||||
RunCreated: 'RUN_CREATED',
|
||||
RunUpdated: 'RUN_UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectTriggeredAutomationsStatusUpdatedMessageType = typeof ProjectTriggeredAutomationsStatusUpdatedMessageType[keyof typeof ProjectTriggeredAutomationsStatusUpdatedMessageType];
|
||||
/** Any values left null will be ignored, so only set the properties that you want updated */
|
||||
export type ProjectUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
@@ -2503,11 +2516,12 @@ export type ProjectUpdatedMessage = {
|
||||
type: ProjectUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectUpdatedMessageType {
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectUpdatedMessageType = {
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectUpdatedMessageType = typeof ProjectUpdatedMessageType[keyof typeof ProjectUpdatedMessageType];
|
||||
export type ProjectVersionsPreviewGeneratedMessage = {
|
||||
__typename?: 'ProjectVersionsPreviewGeneratedMessage';
|
||||
objectId: Scalars['String']['output'];
|
||||
@@ -2526,18 +2540,20 @@ export type ProjectVersionsUpdatedMessage = {
|
||||
version?: Maybe<Version>;
|
||||
};
|
||||
|
||||
export enum ProjectVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export enum ProjectVisibility {
|
||||
Private = 'PRIVATE',
|
||||
Public = 'PUBLIC',
|
||||
Unlisted = 'UNLISTED'
|
||||
}
|
||||
export type ProjectVersionsUpdatedMessageType = typeof ProjectVersionsUpdatedMessageType[keyof typeof ProjectVersionsUpdatedMessageType];
|
||||
export const ProjectVisibility = {
|
||||
Private: 'PRIVATE',
|
||||
Public: 'PUBLIC',
|
||||
Unlisted: 'UNLISTED'
|
||||
} as const;
|
||||
|
||||
export type ProjectVisibility = typeof ProjectVisibility[keyof typeof ProjectVisibility];
|
||||
export type Query = {
|
||||
__typename?: 'Query';
|
||||
/** Stare into the void. */
|
||||
@@ -2661,7 +2677,6 @@ export type Query = {
|
||||
* Either token or workspaceId must be specified, or both
|
||||
*/
|
||||
workspaceInvite?: Maybe<PendingWorkspaceCollaborator>;
|
||||
workspacePricingPlans: Scalars['JSONObject']['output'];
|
||||
/** Find workspaces a given user email can use SSO to sign with */
|
||||
workspaceSsoByEmail: Array<LimitedWorkspace>;
|
||||
};
|
||||
@@ -2848,13 +2863,14 @@ export type ResourceIdentifierInput = {
|
||||
resourceType: ResourceType;
|
||||
};
|
||||
|
||||
export enum ResourceType {
|
||||
Comment = 'comment',
|
||||
Commit = 'commit',
|
||||
Object = 'object',
|
||||
Stream = 'stream'
|
||||
}
|
||||
export const ResourceType = {
|
||||
Comment: 'comment',
|
||||
Commit: 'commit',
|
||||
Object: 'object',
|
||||
Stream: 'stream'
|
||||
} as const;
|
||||
|
||||
export type ResourceType = typeof ResourceType[keyof typeof ResourceType];
|
||||
export type Role = {
|
||||
__typename?: 'Role';
|
||||
description: Scalars['String']['output'];
|
||||
@@ -3018,13 +3034,14 @@ export type ServerRegionMutationsUpdateArgs = {
|
||||
input: UpdateServerRegionInput;
|
||||
};
|
||||
|
||||
export enum ServerRole {
|
||||
ServerAdmin = 'SERVER_ADMIN',
|
||||
ServerArchivedUser = 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest = 'SERVER_GUEST',
|
||||
ServerUser = 'SERVER_USER'
|
||||
}
|
||||
export const ServerRole = {
|
||||
ServerAdmin: 'SERVER_ADMIN',
|
||||
ServerArchivedUser: 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest: 'SERVER_GUEST',
|
||||
ServerUser: 'SERVER_USER'
|
||||
} as const;
|
||||
|
||||
export type ServerRole = typeof ServerRole[keyof typeof ServerRole];
|
||||
export type ServerRoleItem = {
|
||||
__typename?: 'ServerRoleItem';
|
||||
id: Scalars['String']['output'];
|
||||
@@ -3063,11 +3080,12 @@ export type ServerWorkspacesInfo = {
|
||||
workspacesEnabled: Scalars['Boolean']['output'];
|
||||
};
|
||||
|
||||
export enum SessionPaymentStatus {
|
||||
Paid = 'paid',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const SessionPaymentStatus = {
|
||||
Paid: 'paid',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type SessionPaymentStatus = typeof SessionPaymentStatus[keyof typeof SessionPaymentStatus];
|
||||
export type SetPrimaryUserEmailInput = {
|
||||
id: Scalars['ID']['input'];
|
||||
};
|
||||
@@ -3087,11 +3105,12 @@ export type SmartTextEditorValue = {
|
||||
version: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum SortDirection {
|
||||
Asc = 'ASC',
|
||||
Desc = 'DESC'
|
||||
}
|
||||
export const SortDirection = {
|
||||
Asc: 'ASC',
|
||||
Desc: 'DESC'
|
||||
} as const;
|
||||
|
||||
export type SortDirection = typeof SortDirection[keyof typeof SortDirection];
|
||||
export type Stream = {
|
||||
__typename?: 'Stream';
|
||||
/**
|
||||
@@ -3286,12 +3305,13 @@ export type StreamRevokePermissionInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum StreamRole {
|
||||
StreamContributor = 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner = 'STREAM_OWNER',
|
||||
StreamReviewer = 'STREAM_REVIEWER'
|
||||
}
|
||||
export const StreamRole = {
|
||||
StreamContributor: 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner: 'STREAM_OWNER',
|
||||
StreamReviewer: 'STREAM_REVIEWER'
|
||||
} as const;
|
||||
|
||||
export type StreamRole = typeof StreamRole[keyof typeof StreamRole];
|
||||
export type StreamUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -3607,11 +3627,12 @@ export type TokenResourceIdentifierInput = {
|
||||
type: TokenResourceIdentifierType;
|
||||
};
|
||||
|
||||
export enum TokenResourceIdentifierType {
|
||||
Project = 'project',
|
||||
Workspace = 'workspace'
|
||||
}
|
||||
export const TokenResourceIdentifierType = {
|
||||
Project: 'project',
|
||||
Workspace: 'workspace'
|
||||
} as const;
|
||||
|
||||
export type TokenResourceIdentifierType = typeof TokenResourceIdentifierType[keyof typeof TokenResourceIdentifierType];
|
||||
export type TriggeredAutomationsStatus = {
|
||||
__typename?: 'TriggeredAutomationsStatus';
|
||||
automationRuns: Array<AutomateRun>;
|
||||
@@ -3956,11 +3977,12 @@ export type UserProjectsUpdatedMessage = {
|
||||
type: UserProjectsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum UserProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const UserProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type UserProjectsUpdatedMessageType = typeof UserProjectsUpdatedMessageType[keyof typeof UserProjectsUpdatedMessageType];
|
||||
export type UserRoleInput = {
|
||||
id: Scalars['String']['input'];
|
||||
role: Scalars['String']['input'];
|
||||
@@ -4150,11 +4172,12 @@ export type ViewerUserActivityMessageInput = {
|
||||
userName: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum ViewerUserActivityStatus {
|
||||
Disconnected = 'DISCONNECTED',
|
||||
Viewing = 'VIEWING'
|
||||
}
|
||||
export const ViewerUserActivityStatus = {
|
||||
Disconnected: 'DISCONNECTED',
|
||||
Viewing: 'VIEWING'
|
||||
} as const;
|
||||
|
||||
export type ViewerUserActivityStatus = typeof ViewerUserActivityStatus[keyof typeof ViewerUserActivityStatus];
|
||||
export type Webhook = {
|
||||
__typename?: 'Webhook';
|
||||
description?: Maybe<Scalars['String']['output']>;
|
||||
@@ -4382,12 +4405,13 @@ export type WorkspaceDomainDeleteInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceFeatureName {
|
||||
DomainBasedSecurityPolicies = 'domainBasedSecurityPolicies',
|
||||
OidcSso = 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity = 'workspaceDataRegionSpecificity'
|
||||
}
|
||||
export const WorkspaceFeatureName = {
|
||||
DomainBasedSecurityPolicies: 'domainBasedSecurityPolicies',
|
||||
OidcSso: 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity: 'workspaceDataRegionSpecificity'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceFeatureName = typeof WorkspaceFeatureName[keyof typeof WorkspaceFeatureName];
|
||||
export type WorkspaceInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4492,12 +4516,13 @@ export type WorkspaceJoinRequestMutationsDenyArgs = {
|
||||
input: DenyWorkspaceJoinRequestInput;
|
||||
};
|
||||
|
||||
export enum WorkspaceJoinRequestStatus {
|
||||
Approved = 'approved',
|
||||
Denied = 'denied',
|
||||
Pending = 'pending'
|
||||
}
|
||||
export const WorkspaceJoinRequestStatus = {
|
||||
Approved: 'approved',
|
||||
Denied: 'denied',
|
||||
Pending: 'pending'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceJoinRequestStatus = typeof WorkspaceJoinRequestStatus[keyof typeof WorkspaceJoinRequestStatus];
|
||||
export type WorkspaceMutations = {
|
||||
__typename?: 'WorkspaceMutations';
|
||||
addDomain: Workspace;
|
||||
@@ -4586,12 +4611,13 @@ export type WorkspaceMutationsUpdateRoleArgs = {
|
||||
input: WorkspaceRoleUpdateInput;
|
||||
};
|
||||
|
||||
export enum WorkspacePaymentMethod {
|
||||
Billing = 'billing',
|
||||
Invoice = 'invoice',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const WorkspacePaymentMethod = {
|
||||
Billing: 'billing',
|
||||
Invoice: 'invoice',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePaymentMethod = typeof WorkspacePaymentMethod[keyof typeof WorkspacePaymentMethod];
|
||||
export type WorkspacePlan = {
|
||||
__typename?: 'WorkspacePlan';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -4600,27 +4626,31 @@ export type WorkspacePlan = {
|
||||
status: WorkspacePlanStatuses;
|
||||
};
|
||||
|
||||
export enum WorkspacePlanStatuses {
|
||||
CancelationScheduled = 'cancelationScheduled',
|
||||
Canceled = 'canceled',
|
||||
Expired = 'expired',
|
||||
PaymentFailed = 'paymentFailed',
|
||||
Trial = 'trial',
|
||||
Valid = 'valid'
|
||||
}
|
||||
export const WorkspacePlanStatuses = {
|
||||
CancelationScheduled: 'cancelationScheduled',
|
||||
Canceled: 'canceled',
|
||||
Expired: 'expired',
|
||||
PaymentFailed: 'paymentFailed',
|
||||
Trial: 'trial',
|
||||
Valid: 'valid'
|
||||
} as const;
|
||||
|
||||
export enum WorkspacePlans {
|
||||
Academia = 'academia',
|
||||
Business = 'business',
|
||||
BusinessInvoiced = 'businessInvoiced',
|
||||
Free = 'free',
|
||||
Plus = 'plus',
|
||||
PlusInvoiced = 'plusInvoiced',
|
||||
Starter = 'starter',
|
||||
StarterInvoiced = 'starterInvoiced',
|
||||
Unlimited = 'unlimited'
|
||||
}
|
||||
export type WorkspacePlanStatuses = typeof WorkspacePlanStatuses[keyof typeof WorkspacePlanStatuses];
|
||||
export const WorkspacePlans = {
|
||||
Academia: 'academia',
|
||||
Business: 'business',
|
||||
BusinessInvoiced: 'businessInvoiced',
|
||||
Free: 'free',
|
||||
Plus: 'plus',
|
||||
PlusInvoiced: 'plusInvoiced',
|
||||
Pro: 'pro',
|
||||
Starter: 'starter',
|
||||
StarterInvoiced: 'starterInvoiced',
|
||||
Team: 'team',
|
||||
Unlimited: 'unlimited'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePlans = typeof WorkspacePlans[keyof typeof WorkspacePlans];
|
||||
export type WorkspaceProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
name?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4692,21 +4722,23 @@ export type WorkspaceProjectsUpdatedMessage = {
|
||||
workspaceId: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum WorkspaceProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const WorkspaceProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceProjectsUpdatedMessageType = typeof WorkspaceProjectsUpdatedMessageType[keyof typeof WorkspaceProjectsUpdatedMessageType];
|
||||
export type WorkspaceRequestToJoinInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceRole {
|
||||
Admin = 'ADMIN',
|
||||
Guest = 'GUEST',
|
||||
Member = 'MEMBER'
|
||||
}
|
||||
export const WorkspaceRole = {
|
||||
Admin: 'ADMIN',
|
||||
Guest: 'GUEST',
|
||||
Member: 'MEMBER'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceRole = typeof WorkspaceRole[keyof typeof WorkspaceRole];
|
||||
export type WorkspaceRoleDeleteInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
workspaceId: Scalars['String']['input'];
|
||||
|
||||
@@ -6,20 +6,17 @@ import {
|
||||
SubscriptionData
|
||||
} from '@/modules/gatekeeper/domain/billing'
|
||||
import { isNewPlanType } from '@/modules/gatekeeper/helpers/plans'
|
||||
import {
|
||||
paidWorkspacePlansNewSchema,
|
||||
WorkspacePlanBillingIntervals,
|
||||
WorkspacePricingPlans
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { WorkspacePricingProducts } from '@/modules/gatekeeperCore/domain/billing'
|
||||
import {
|
||||
EnvironmentResourceError,
|
||||
LogicError,
|
||||
NotImplementedError
|
||||
} from '@/modules/shared/errors'
|
||||
import { WorkspacePlanBillingIntervals } from '@speckle/shared'
|
||||
import { Stripe } from 'stripe'
|
||||
|
||||
type GetWorkspacePlanPrice = (args: {
|
||||
workspacePlan: WorkspacePricingPlans
|
||||
workspacePlan: WorkspacePricingProducts
|
||||
billingInterval: WorkspacePlanBillingIntervals
|
||||
}) => string
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
import {
|
||||
PaidWorkspacePlan,
|
||||
PaidWorkspacePlans,
|
||||
TrialWorkspacePlan,
|
||||
UnpaidWorkspacePlan,
|
||||
WorkspacePlan,
|
||||
WorkspacePlanBillingIntervals,
|
||||
WorkspacePricingPlans
|
||||
WorkspacePricingProducts
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { PaidWorkspacePlans, WorkspacePlanBillingIntervals } from '@speckle/shared'
|
||||
import { OverrideProperties } from 'type-fest'
|
||||
import { z } from 'zod'
|
||||
|
||||
@@ -150,12 +149,12 @@ export type GetSubscriptionData = (args: {
|
||||
}) => Promise<SubscriptionData>
|
||||
|
||||
export type GetWorkspacePlanPrice = (args: {
|
||||
workspacePlan: WorkspacePricingPlans
|
||||
workspacePlan: WorkspacePricingProducts
|
||||
billingInterval: WorkspacePlanBillingIntervals
|
||||
}) => string
|
||||
|
||||
export type GetWorkspacePlanProductId = (args: {
|
||||
workspacePlan: WorkspacePricingPlans
|
||||
workspacePlan: WorkspacePricingProducts
|
||||
}) => string
|
||||
|
||||
export type SubscriptionDataInput = OverrideProperties<
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { WorkspaceFeatureName } from '@/modules/gatekeeper/domain/workspacePricing'
|
||||
import {
|
||||
PlanStatuses,
|
||||
WorkspacePlan,
|
||||
WorkspacePlans
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { WorkspacePlan } from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { Workspace } from '@/modules/workspacesCore/domain/types'
|
||||
import {
|
||||
WorkspacePlanFeatures,
|
||||
WorkspacePlans,
|
||||
WorkspacePlanStatuses
|
||||
} from '@speckle/shared'
|
||||
|
||||
export type CanWorkspaceAccessFeature = (args: {
|
||||
workspaceId: string
|
||||
workspaceFeature: WorkspaceFeatureName
|
||||
workspaceFeature: WorkspacePlanFeatures
|
||||
}) => Promise<boolean>
|
||||
|
||||
export type WorkspaceFeatureAccessFunction = (args: {
|
||||
@@ -23,7 +23,7 @@ export type GetWorkspacesByPlanDaysTillExpiry = (args: {
|
||||
daysTillExpiry: number
|
||||
planValidFor: number
|
||||
plan: WorkspacePlans
|
||||
status: PlanStatuses
|
||||
status: WorkspacePlanStatuses
|
||||
}) => Promise<Workspace[]>
|
||||
export type GetWorkspacePlanByProjectId = ({
|
||||
projectId
|
||||
|
||||
@@ -1,193 +0,0 @@
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
UnpaidWorkspacePlans,
|
||||
WorkspacePlans
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import type { MaybeNullOrUndefined } from '@speckle/shared'
|
||||
|
||||
export type WorkspaceFeatureName =
|
||||
| 'workspace'
|
||||
| 'domainBasedSecurityPolicies'
|
||||
| 'oidcSso'
|
||||
| 'workspaceDataRegionSpecificity'
|
||||
|
||||
type FeatureDetails = {
|
||||
displayName: string
|
||||
description?: string
|
||||
}
|
||||
|
||||
const features: Record<WorkspaceFeatureName, FeatureDetails> = {
|
||||
workspace: {
|
||||
displayName: 'Workspace'
|
||||
},
|
||||
domainBasedSecurityPolicies: {
|
||||
description: 'Email domain based security policies',
|
||||
displayName: 'Domain security policies'
|
||||
},
|
||||
oidcSso: {
|
||||
displayName: 'Login / signup to the workspace with an OIDC provider'
|
||||
},
|
||||
workspaceDataRegionSpecificity: {
|
||||
displayName: 'Specify the geolocation, where the workspace project data is stored'
|
||||
}
|
||||
} as const
|
||||
|
||||
type WorkspaceFeatures = Record<keyof typeof features, boolean>
|
||||
|
||||
type WorkspaceInfoDetails = {
|
||||
name: MaybeNullOrUndefined<WorkspacePlans>
|
||||
description: MaybeNullOrUndefined<string>
|
||||
}
|
||||
|
||||
type WorkspaceInfo = Record<keyof WorkspaceInfoDetails, MaybeNullOrUndefined<string>>
|
||||
|
||||
type Limits = 'uploadSize' | 'automateMinutes'
|
||||
|
||||
type LimitDetails = {
|
||||
displayName: string
|
||||
measurementUnit: string | null
|
||||
}
|
||||
|
||||
const limits: Record<Limits, LimitDetails> = {
|
||||
automateMinutes: {
|
||||
displayName: 'Automate minutes',
|
||||
measurementUnit: 'minutes'
|
||||
},
|
||||
uploadSize: {
|
||||
displayName: 'Upload size limit',
|
||||
measurementUnit: 'MB'
|
||||
}
|
||||
}
|
||||
|
||||
export const workspacePricingPlanInformation = { features, limits }
|
||||
|
||||
type WorkspaceLimits = Record<keyof typeof limits, number | null>
|
||||
|
||||
type WorkspacePlanFeaturesAndLimits = WorkspaceInfo &
|
||||
WorkspaceFeatures &
|
||||
WorkspaceLimits
|
||||
|
||||
const baseFeatures = {
|
||||
domainBasedSecurityPolicies: true,
|
||||
workspace: true
|
||||
}
|
||||
|
||||
// new
|
||||
const free: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'free',
|
||||
description: 'For individuals, small teams and basic usage',
|
||||
oidcSso: false,
|
||||
workspaceDataRegionSpecificity: false,
|
||||
automateMinutes: 300,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
const team: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'team',
|
||||
description: 'For small teams and advanced usage',
|
||||
oidcSso: false,
|
||||
workspaceDataRegionSpecificity: false,
|
||||
// TODO: What should be the real numbers here for the new plans (free/team/pro?
|
||||
automateMinutes: 300,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
const pro: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'pro',
|
||||
description: 'For larger teams and advanced usage',
|
||||
// TODO: The following 2 will become conditional based on purchased addons
|
||||
oidcSso: true,
|
||||
workspaceDataRegionSpecificity: true,
|
||||
automateMinutes: 900,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
// old
|
||||
const starter: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'starter',
|
||||
description: 'The team plan',
|
||||
oidcSso: false,
|
||||
workspaceDataRegionSpecificity: false,
|
||||
automateMinutes: 300,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
const plus: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'plus',
|
||||
description: 'The pro plan',
|
||||
oidcSso: true,
|
||||
workspaceDataRegionSpecificity: false,
|
||||
automateMinutes: 900,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
const business: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'business',
|
||||
description: 'The business plan',
|
||||
oidcSso: true,
|
||||
workspaceDataRegionSpecificity: true,
|
||||
automateMinutes: 900,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
// custom
|
||||
const unlimited: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'unlimited',
|
||||
description: 'The unlimited plan',
|
||||
oidcSso: true,
|
||||
workspaceDataRegionSpecificity: true,
|
||||
automateMinutes: null,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
const academia: WorkspacePlanFeaturesAndLimits = {
|
||||
...baseFeatures,
|
||||
name: 'academia',
|
||||
description: 'The academia plan',
|
||||
oidcSso: true,
|
||||
workspaceDataRegionSpecificity: true,
|
||||
automateMinutes: 900,
|
||||
uploadSize: 100
|
||||
}
|
||||
|
||||
const paidWorkspacePlanFeatures: Record<
|
||||
PaidWorkspacePlans,
|
||||
WorkspacePlanFeaturesAndLimits
|
||||
> = {
|
||||
// old
|
||||
starter,
|
||||
plus,
|
||||
business,
|
||||
// new
|
||||
team,
|
||||
pro
|
||||
}
|
||||
|
||||
export const unpaidWorkspacePlanFeatures: Record<
|
||||
UnpaidWorkspacePlans,
|
||||
WorkspacePlanFeaturesAndLimits
|
||||
> = {
|
||||
free,
|
||||
academia,
|
||||
unlimited,
|
||||
starterInvoiced: starter,
|
||||
plusInvoiced: plus,
|
||||
businessInvoiced: business
|
||||
}
|
||||
|
||||
export const workspacePlanFeatures: Record<
|
||||
WorkspacePlans,
|
||||
WorkspacePlanFeaturesAndLimits
|
||||
> = { ...paidWorkspacePlanFeatures, ...unpaidWorkspacePlanFeatures }
|
||||
|
||||
export const pricingTable = {
|
||||
workspacePricingPlanInformation,
|
||||
workspacePlanInformation: paidWorkspacePlanFeatures
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
import { getFeatureFlags, getFrontendOrigin } from '@/modules/shared/helpers/envHelper'
|
||||
import { Resolvers } from '@/modules/core/graph/generated/graphql'
|
||||
import { pricingTable } from '@/modules/gatekeeper/domain/workspacePricing'
|
||||
import { authorizeResolver } from '@/modules/shared'
|
||||
import { Roles, throwUncoveredError } from '@speckle/shared'
|
||||
import {
|
||||
@@ -44,11 +43,6 @@ const getWorkspacePlan = getWorkspacePlanFactory({ db })
|
||||
|
||||
export = FF_GATEKEEPER_MODULE_ENABLED
|
||||
? ({
|
||||
Query: {
|
||||
workspacePricingPlans: async () => {
|
||||
return pricingTable
|
||||
}
|
||||
},
|
||||
Workspace: {
|
||||
plan: async (parent) => {
|
||||
const workspacePlan = await getWorkspacePlanFactory({ db })({
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
import {
|
||||
paidWorkspacePlansNewSchema,
|
||||
paidWorkspacePlansOldSchema
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
PaidWorkspacePlansNew,
|
||||
PaidWorkspacePlansOld,
|
||||
WorkspacePlans
|
||||
} from '@speckle/shared'
|
||||
|
||||
export const isNewPlanType = (plan: string): boolean => {
|
||||
return paidWorkspacePlansNewSchema.safeParse(plan).success || plan === 'free'
|
||||
export const isNewPaidPlanType = (plan: WorkspacePlans): boolean => {
|
||||
return (Object.values(PaidWorkspacePlansNew) as string[]).includes(plan)
|
||||
}
|
||||
|
||||
export const isOldPlanType = (plan: string): boolean => {
|
||||
return paidWorkspacePlansOldSchema.safeParse(plan).success
|
||||
export const isNewPlanType = (plan: WorkspacePlans): boolean => {
|
||||
return isNewPaidPlanType(plan) || plan === WorkspacePlans.Free
|
||||
}
|
||||
|
||||
export const isOldPaidPlanType = (plan: WorkspacePlans): boolean => {
|
||||
return (Object.values(PaidWorkspacePlansOld) as string[]).includes(plan)
|
||||
}
|
||||
|
||||
@@ -16,13 +16,14 @@ import {
|
||||
WorkspaceAlreadyPaidError,
|
||||
WorkspaceCheckoutSessionInProgressError
|
||||
} from '@/modules/gatekeeper/errors/billing'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
WorkspacePlanBillingIntervals
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { EventBusEmit } from '@/modules/shared/services/eventBus'
|
||||
import { CountWorkspaceRoleWithOptionalProjectRole } from '@/modules/workspaces/domain/operations'
|
||||
import { Roles, throwUncoveredError } from '@speckle/shared'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
Roles,
|
||||
throwUncoveredError,
|
||||
WorkspacePlanBillingIntervals
|
||||
} from '@speckle/shared'
|
||||
|
||||
export const startCheckoutSessionFactory =
|
||||
({
|
||||
|
||||
@@ -3,8 +3,7 @@ import {
|
||||
CanWorkspaceAccessFeature,
|
||||
WorkspaceFeatureAccessFunction
|
||||
} from '@/modules/gatekeeper/domain/operations'
|
||||
import { workspacePlanFeatures } from '@/modules/gatekeeper/domain/workspacePricing'
|
||||
import { throwUncoveredError } from '@speckle/shared'
|
||||
import { throwUncoveredError, WorkspacePlanConfigs } from '@speckle/shared'
|
||||
|
||||
export const canWorkspaceAccessFeatureFactory =
|
||||
({
|
||||
@@ -27,7 +26,8 @@ export const canWorkspaceAccessFeatureFactory =
|
||||
default:
|
||||
throwUncoveredError(workspacePlan)
|
||||
}
|
||||
return workspacePlanFeatures[workspacePlan.name][workspaceFeature]
|
||||
|
||||
return WorkspacePlanConfigs[workspacePlan.name].features.includes(workspaceFeature)
|
||||
}
|
||||
|
||||
export const canWorkspaceUseOidcSsoFactory =
|
||||
|
||||
@@ -20,19 +20,19 @@ import {
|
||||
WorkspacePlanNotFoundError,
|
||||
WorkspaceSubscriptionNotFoundError
|
||||
} from '@/modules/gatekeeper/errors/billing'
|
||||
import { isNewPlanType, isOldPlanType } from '@/modules/gatekeeper/helpers/plans'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
paidWorkspacePlansNewSchema,
|
||||
paidWorkspacePlansOldSchema,
|
||||
PaidWorkspacePlanStatuses,
|
||||
WorkspacePlanBillingIntervals,
|
||||
WorkspacePricingPlans
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { isNewPlanType, isOldPaidPlanType } from '@/modules/gatekeeper/helpers/plans'
|
||||
import { WorkspacePricingProducts } from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { LogicError, NotImplementedError } from '@/modules/shared/errors'
|
||||
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
|
||||
import { CountWorkspaceRoleWithOptionalProjectRole } from '@/modules/workspaces/domain/operations'
|
||||
import { throwUncoveredError, WorkspaceRoles, xor } from '@speckle/shared'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
PaidWorkspacePlanStatuses,
|
||||
throwUncoveredError,
|
||||
WorkspacePlanBillingIntervals,
|
||||
WorkspaceRoles,
|
||||
xor
|
||||
} from '@speckle/shared'
|
||||
import { cloneDeep, isEqual, sum } from 'lodash'
|
||||
|
||||
const { FF_WORKSPACES_NEW_PLANS_ENABLED } = getFeatureFlags()
|
||||
@@ -213,7 +213,7 @@ const mutateSubscriptionDataWithNewValidSeatNumbers = ({
|
||||
subscriptionData
|
||||
}: {
|
||||
seatCount: number
|
||||
workspacePlan: WorkspacePricingPlans
|
||||
workspacePlan: WorkspacePricingProducts
|
||||
getWorkspacePlanProductId: GetWorkspacePlanProductId
|
||||
subscriptionData: SubscriptionDataInput
|
||||
}): void => {
|
||||
@@ -451,7 +451,7 @@ export const upgradeWorkspaceSubscriptionFactory =
|
||||
throw new NotImplementedError()
|
||||
}
|
||||
|
||||
const planCheckers = [isNewPlanType, isOldPlanType]
|
||||
const planCheckers = [isNewPlanType, isOldPaidPlanType]
|
||||
for (const isSpecificPlanType of planCheckers) {
|
||||
const oldPlanFitsSchema = isSpecificPlanType(workspacePlan.name)
|
||||
const newPlanFitsSchema = isSpecificPlanType(targetPlan)
|
||||
|
||||
@@ -2,11 +2,9 @@ import {
|
||||
GetWorkspacePlanPrice,
|
||||
GetWorkspacePlanProductId
|
||||
} from '@/modules/gatekeeper/domain/billing'
|
||||
import {
|
||||
WorkspacePlanBillingIntervals,
|
||||
WorkspacePricingPlans
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { WorkspacePricingProducts } from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { getStringFromEnv, getStripeApiKey } from '@/modules/shared/helpers/envHelper'
|
||||
import { WorkspacePlanBillingIntervals } from '@speckle/shared'
|
||||
import { Stripe } from 'stripe'
|
||||
|
||||
let stripeClient: Stripe | undefined = undefined
|
||||
@@ -17,7 +15,7 @@ export const getStripeClient = () => {
|
||||
}
|
||||
|
||||
export const workspacePlanPrices = (): Record<
|
||||
WorkspacePricingPlans,
|
||||
WorkspacePricingProducts,
|
||||
Record<WorkspacePlanBillingIntervals, string> & { productId: string }
|
||||
> => ({
|
||||
// old
|
||||
|
||||
@@ -16,11 +16,8 @@ import {
|
||||
WorkspaceSubscription
|
||||
} from '@/modules/gatekeeper/domain/billing'
|
||||
import { omit } from 'lodash'
|
||||
import {
|
||||
PaidWorkspacePlan,
|
||||
PaidWorkspacePlans,
|
||||
WorkspacePlanBillingIntervals
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { PaidWorkspacePlan } from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { PaidWorkspacePlans, WorkspacePlanBillingIntervals } from '@speckle/shared'
|
||||
|
||||
describe('checkout @gatekeeper', () => {
|
||||
describe('startCheckoutSessionFactory creates a function, that', () => {
|
||||
|
||||
@@ -21,14 +21,11 @@ import {
|
||||
createTestSubscriptionData,
|
||||
createTestWorkspaceSubscription
|
||||
} from '@/modules/gatekeeper/tests/helpers'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
WorkspacePlan
|
||||
} from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { WorkspacePlan } from '@/modules/gatekeeperCore/domain/billing'
|
||||
import { NotImplementedError } from '@/modules/shared/errors'
|
||||
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
|
||||
import { expectToThrow, itEach } from '@/test/assertionHelper'
|
||||
import { throwUncoveredError } from '@speckle/shared'
|
||||
import { PaidWorkspacePlans, throwUncoveredError } from '@speckle/shared'
|
||||
import { expect } from 'chai'
|
||||
import cryptoRandomString from 'crypto-random-string'
|
||||
import { omit } from 'lodash'
|
||||
|
||||
@@ -1,68 +1,16 @@
|
||||
import { z } from 'zod'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
PaidWorkspacePlanStatuses,
|
||||
TrialEnabledPaidWorkspacePlans,
|
||||
TrialWorkspacePlanStatuses,
|
||||
UnpaidWorkspacePlans,
|
||||
UnpaidWorkspacePlanStatuses
|
||||
} from '@speckle/shared'
|
||||
|
||||
const trialWorkspacePlans = z.literal('starter')
|
||||
|
||||
type TrialWorkspacePlans = z.infer<typeof trialWorkspacePlans>
|
||||
|
||||
export const paidWorkspacePlansOldSchema = z.union([
|
||||
trialWorkspacePlans,
|
||||
// pro
|
||||
z.literal('plus'),
|
||||
z.literal('business')
|
||||
])
|
||||
export const paidWorkspacePlansNewSchema = z.union([
|
||||
z.literal('team'),
|
||||
z.literal('pro')
|
||||
])
|
||||
const paidWorkspacePlansSchema = z.union([
|
||||
paidWorkspacePlansOldSchema,
|
||||
paidWorkspacePlansNewSchema
|
||||
])
|
||||
|
||||
export type PaidWorkspacePlans = z.infer<typeof paidWorkspacePlansSchema>
|
||||
|
||||
const unpaidWorkspacePlans = z.union([
|
||||
z.literal('free'),
|
||||
z.literal('unlimited'),
|
||||
z.literal('academia'),
|
||||
z.literal('starterInvoiced'),
|
||||
z.literal('plusInvoiced'),
|
||||
z.literal('businessInvoiced')
|
||||
])
|
||||
|
||||
export type UnpaidWorkspacePlans = z.infer<typeof unpaidWorkspacePlans>
|
||||
|
||||
const workspacePlansSchema = z.union([paidWorkspacePlansSchema, unpaidWorkspacePlans])
|
||||
|
||||
// this includes the plans your workspace can be on
|
||||
export type WorkspacePlans = z.infer<typeof workspacePlansSchema>
|
||||
|
||||
// this includes the pricing plans (Stripe products) a customer can sub to
|
||||
export type WorkspacePricingPlans = PaidWorkspacePlans | 'guest'
|
||||
|
||||
const workspacePlanBillingIntervalsSchema = z.union([
|
||||
z.literal('monthly'),
|
||||
z.literal('yearly')
|
||||
])
|
||||
export type WorkspacePlanBillingIntervals = z.infer<
|
||||
typeof workspacePlanBillingIntervalsSchema
|
||||
>
|
||||
|
||||
type UnpaidWorkspacePlanStatuses = 'valid'
|
||||
|
||||
export type PaidWorkspacePlanStatuses =
|
||||
| UnpaidWorkspacePlanStatuses
|
||||
// | 'paymentNeeded' // unsure if this is needed
|
||||
| 'paymentFailed'
|
||||
| 'cancelationScheduled'
|
||||
| 'canceled'
|
||||
|
||||
export type TrialWorkspacePlanStatuses = 'trial' | 'expired'
|
||||
|
||||
export type PlanStatuses =
|
||||
| PaidWorkspacePlanStatuses
|
||||
| TrialWorkspacePlanStatuses
|
||||
| UnpaidWorkspacePlanStatuses
|
||||
/**
|
||||
* This includes the pricing plans (Stripe products) a customer can sub to
|
||||
*/
|
||||
export type WorkspacePricingProducts = PaidWorkspacePlans | 'guest'
|
||||
|
||||
type BaseWorkspacePlan = {
|
||||
workspaceId: string
|
||||
@@ -75,7 +23,7 @@ export type PaidWorkspacePlan = BaseWorkspacePlan & {
|
||||
}
|
||||
|
||||
export type TrialWorkspacePlan = BaseWorkspacePlan & {
|
||||
name: TrialWorkspacePlans
|
||||
name: TrialEnabledPaidWorkspacePlans
|
||||
status: TrialWorkspacePlanStatuses
|
||||
}
|
||||
|
||||
|
||||
@@ -330,12 +330,13 @@ export type AutomateFunctionTemplate = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateFunctionTemplateLanguage {
|
||||
DotNet = 'DOT_NET',
|
||||
Python = 'PYTHON',
|
||||
Typescript = 'TYPESCRIPT'
|
||||
}
|
||||
export const AutomateFunctionTemplateLanguage = {
|
||||
DotNet: 'DOT_NET',
|
||||
Python: 'PYTHON',
|
||||
Typescript: 'TYPESCRIPT'
|
||||
} as const;
|
||||
|
||||
export type AutomateFunctionTemplateLanguage = typeof AutomateFunctionTemplateLanguage[keyof typeof AutomateFunctionTemplateLanguage];
|
||||
export type AutomateFunctionToken = {
|
||||
__typename?: 'AutomateFunctionToken';
|
||||
functionId: Scalars['String']['output'];
|
||||
@@ -389,21 +390,23 @@ export type AutomateRunCollection = {
|
||||
totalCount: Scalars['Int']['output'];
|
||||
};
|
||||
|
||||
export enum AutomateRunStatus {
|
||||
Canceled = 'CANCELED',
|
||||
Exception = 'EXCEPTION',
|
||||
Failed = 'FAILED',
|
||||
Initializing = 'INITIALIZING',
|
||||
Pending = 'PENDING',
|
||||
Running = 'RUNNING',
|
||||
Succeeded = 'SUCCEEDED',
|
||||
Timeout = 'TIMEOUT'
|
||||
}
|
||||
export const AutomateRunStatus = {
|
||||
Canceled: 'CANCELED',
|
||||
Exception: 'EXCEPTION',
|
||||
Failed: 'FAILED',
|
||||
Initializing: 'INITIALIZING',
|
||||
Pending: 'PENDING',
|
||||
Running: 'RUNNING',
|
||||
Succeeded: 'SUCCEEDED',
|
||||
Timeout: 'TIMEOUT'
|
||||
} as const;
|
||||
|
||||
export enum AutomateRunTriggerType {
|
||||
VersionCreated = 'VERSION_CREATED'
|
||||
}
|
||||
export type AutomateRunStatus = typeof AutomateRunStatus[keyof typeof AutomateRunStatus];
|
||||
export const AutomateRunTriggerType = {
|
||||
VersionCreated: 'VERSION_CREATED'
|
||||
} as const;
|
||||
|
||||
export type AutomateRunTriggerType = typeof AutomateRunTriggerType[keyof typeof AutomateRunTriggerType];
|
||||
export type Automation = {
|
||||
__typename?: 'Automation';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -464,11 +467,12 @@ export type BasicGitRepositoryMetadata = {
|
||||
url: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum BillingInterval {
|
||||
Monthly = 'monthly',
|
||||
Yearly = 'yearly'
|
||||
}
|
||||
export const BillingInterval = {
|
||||
Monthly: 'monthly',
|
||||
Yearly: 'yearly'
|
||||
} as const;
|
||||
|
||||
export type BillingInterval = typeof BillingInterval[keyof typeof BillingInterval];
|
||||
export type BlobMetadata = {
|
||||
__typename?: 'BlobMetadata';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -932,11 +936,12 @@ export type DenyWorkspaceJoinRequestInput = {
|
||||
workspaceId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum DiscoverableStreamsSortType {
|
||||
CreatedDate = 'CREATED_DATE',
|
||||
FavoritesCount = 'FAVORITES_COUNT'
|
||||
}
|
||||
export const DiscoverableStreamsSortType = {
|
||||
CreatedDate: 'CREATED_DATE',
|
||||
FavoritesCount: 'FAVORITES_COUNT'
|
||||
} as const;
|
||||
|
||||
export type DiscoverableStreamsSortType = typeof DiscoverableStreamsSortType[keyof typeof DiscoverableStreamsSortType];
|
||||
export type DiscoverableStreamsSortingInput = {
|
||||
direction: SortDirection;
|
||||
type: DiscoverableStreamsSortType;
|
||||
@@ -1852,12 +1857,13 @@ export type ObjectCreateInput = {
|
||||
streamId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum PaidWorkspacePlans {
|
||||
Business = 'business',
|
||||
Plus = 'plus',
|
||||
Starter = 'starter'
|
||||
}
|
||||
export const PaidWorkspacePlans = {
|
||||
Business: 'business',
|
||||
Plus: 'plus',
|
||||
Starter: 'starter'
|
||||
} as const;
|
||||
|
||||
export type PaidWorkspacePlans = typeof PaidWorkspacePlans[keyof typeof PaidWorkspacePlans];
|
||||
export type PasswordStrengthCheckFeedback = {
|
||||
__typename?: 'PasswordStrengthCheckFeedback';
|
||||
suggestions: Array<Scalars['String']['output']>;
|
||||
@@ -2185,12 +2191,13 @@ export type ProjectAutomationsUpdatedMessage = {
|
||||
type: ProjectAutomationsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectAutomationsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
CreatedRevision = 'CREATED_REVISION',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectAutomationsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
CreatedRevision: 'CREATED_REVISION',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectAutomationsUpdatedMessageType = typeof ProjectAutomationsUpdatedMessageType[keyof typeof ProjectAutomationsUpdatedMessageType];
|
||||
export type ProjectCollaborator = {
|
||||
__typename?: 'ProjectCollaborator';
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -2237,12 +2244,13 @@ export type ProjectCommentsUpdatedMessage = {
|
||||
type: ProjectCommentsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectCommentsUpdatedMessageType {
|
||||
Archived = 'ARCHIVED',
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectCommentsUpdatedMessageType = {
|
||||
Archived: 'ARCHIVED',
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectCommentsUpdatedMessageType = typeof ProjectCommentsUpdatedMessageType[keyof typeof ProjectCommentsUpdatedMessageType];
|
||||
/** Any values left null will be ignored */
|
||||
export type ProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2258,11 +2266,12 @@ export type ProjectFileImportUpdatedMessage = {
|
||||
upload: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectFileImportUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectFileImportUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectFileImportUpdatedMessageType = typeof ProjectFileImportUpdatedMessageType[keyof typeof ProjectFileImportUpdatedMessageType];
|
||||
export type ProjectInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2359,12 +2368,13 @@ export type ProjectModelsUpdatedMessage = {
|
||||
type: ProjectModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectModelsUpdatedMessageType = typeof ProjectModelsUpdatedMessageType[keyof typeof ProjectModelsUpdatedMessageType];
|
||||
export type ProjectMutations = {
|
||||
__typename?: 'ProjectMutations';
|
||||
/** Access request related mutations */
|
||||
@@ -2434,11 +2444,12 @@ export type ProjectPendingModelsUpdatedMessage = {
|
||||
type: ProjectPendingModelsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectPendingModelsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingModelsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingModelsUpdatedMessageType = typeof ProjectPendingModelsUpdatedMessageType[keyof typeof ProjectPendingModelsUpdatedMessageType];
|
||||
export type ProjectPendingVersionsUpdatedMessage = {
|
||||
__typename?: 'ProjectPendingVersionsUpdatedMessage';
|
||||
/** Upload ID */
|
||||
@@ -2447,11 +2458,12 @@ export type ProjectPendingVersionsUpdatedMessage = {
|
||||
version: FileUpload;
|
||||
};
|
||||
|
||||
export enum ProjectPendingVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectPendingVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectPendingVersionsUpdatedMessageType = typeof ProjectPendingVersionsUpdatedMessageType[keyof typeof ProjectPendingVersionsUpdatedMessageType];
|
||||
export type ProjectRole = {
|
||||
__typename?: 'ProjectRole';
|
||||
project: Project;
|
||||
@@ -2473,11 +2485,12 @@ export type ProjectTriggeredAutomationsStatusUpdatedMessage = {
|
||||
version: Version;
|
||||
};
|
||||
|
||||
export enum ProjectTriggeredAutomationsStatusUpdatedMessageType {
|
||||
RunCreated = 'RUN_CREATED',
|
||||
RunUpdated = 'RUN_UPDATED'
|
||||
}
|
||||
export const ProjectTriggeredAutomationsStatusUpdatedMessageType = {
|
||||
RunCreated: 'RUN_CREATED',
|
||||
RunUpdated: 'RUN_UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectTriggeredAutomationsStatusUpdatedMessageType = typeof ProjectTriggeredAutomationsStatusUpdatedMessageType[keyof typeof ProjectTriggeredAutomationsStatusUpdatedMessageType];
|
||||
/** Any values left null will be ignored, so only set the properties that you want updated */
|
||||
export type ProjectUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
@@ -2504,11 +2517,12 @@ export type ProjectUpdatedMessage = {
|
||||
type: ProjectUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum ProjectUpdatedMessageType {
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectUpdatedMessageType = {
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export type ProjectUpdatedMessageType = typeof ProjectUpdatedMessageType[keyof typeof ProjectUpdatedMessageType];
|
||||
export type ProjectVersionsPreviewGeneratedMessage = {
|
||||
__typename?: 'ProjectVersionsPreviewGeneratedMessage';
|
||||
objectId: Scalars['String']['output'];
|
||||
@@ -2527,18 +2541,20 @@ export type ProjectVersionsUpdatedMessage = {
|
||||
version?: Maybe<Version>;
|
||||
};
|
||||
|
||||
export enum ProjectVersionsUpdatedMessageType {
|
||||
Created = 'CREATED',
|
||||
Deleted = 'DELETED',
|
||||
Updated = 'UPDATED'
|
||||
}
|
||||
export const ProjectVersionsUpdatedMessageType = {
|
||||
Created: 'CREATED',
|
||||
Deleted: 'DELETED',
|
||||
Updated: 'UPDATED'
|
||||
} as const;
|
||||
|
||||
export enum ProjectVisibility {
|
||||
Private = 'PRIVATE',
|
||||
Public = 'PUBLIC',
|
||||
Unlisted = 'UNLISTED'
|
||||
}
|
||||
export type ProjectVersionsUpdatedMessageType = typeof ProjectVersionsUpdatedMessageType[keyof typeof ProjectVersionsUpdatedMessageType];
|
||||
export const ProjectVisibility = {
|
||||
Private: 'PRIVATE',
|
||||
Public: 'PUBLIC',
|
||||
Unlisted: 'UNLISTED'
|
||||
} as const;
|
||||
|
||||
export type ProjectVisibility = typeof ProjectVisibility[keyof typeof ProjectVisibility];
|
||||
export type Query = {
|
||||
__typename?: 'Query';
|
||||
/** Stare into the void. */
|
||||
@@ -2662,7 +2678,6 @@ export type Query = {
|
||||
* Either token or workspaceId must be specified, or both
|
||||
*/
|
||||
workspaceInvite?: Maybe<PendingWorkspaceCollaborator>;
|
||||
workspacePricingPlans: Scalars['JSONObject']['output'];
|
||||
/** Find workspaces a given user email can use SSO to sign with */
|
||||
workspaceSsoByEmail: Array<LimitedWorkspace>;
|
||||
};
|
||||
@@ -2849,13 +2864,14 @@ export type ResourceIdentifierInput = {
|
||||
resourceType: ResourceType;
|
||||
};
|
||||
|
||||
export enum ResourceType {
|
||||
Comment = 'comment',
|
||||
Commit = 'commit',
|
||||
Object = 'object',
|
||||
Stream = 'stream'
|
||||
}
|
||||
export const ResourceType = {
|
||||
Comment: 'comment',
|
||||
Commit: 'commit',
|
||||
Object: 'object',
|
||||
Stream: 'stream'
|
||||
} as const;
|
||||
|
||||
export type ResourceType = typeof ResourceType[keyof typeof ResourceType];
|
||||
export type Role = {
|
||||
__typename?: 'Role';
|
||||
description: Scalars['String']['output'];
|
||||
@@ -3019,13 +3035,14 @@ export type ServerRegionMutationsUpdateArgs = {
|
||||
input: UpdateServerRegionInput;
|
||||
};
|
||||
|
||||
export enum ServerRole {
|
||||
ServerAdmin = 'SERVER_ADMIN',
|
||||
ServerArchivedUser = 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest = 'SERVER_GUEST',
|
||||
ServerUser = 'SERVER_USER'
|
||||
}
|
||||
export const ServerRole = {
|
||||
ServerAdmin: 'SERVER_ADMIN',
|
||||
ServerArchivedUser: 'SERVER_ARCHIVED_USER',
|
||||
ServerGuest: 'SERVER_GUEST',
|
||||
ServerUser: 'SERVER_USER'
|
||||
} as const;
|
||||
|
||||
export type ServerRole = typeof ServerRole[keyof typeof ServerRole];
|
||||
export type ServerRoleItem = {
|
||||
__typename?: 'ServerRoleItem';
|
||||
id: Scalars['String']['output'];
|
||||
@@ -3064,11 +3081,12 @@ export type ServerWorkspacesInfo = {
|
||||
workspacesEnabled: Scalars['Boolean']['output'];
|
||||
};
|
||||
|
||||
export enum SessionPaymentStatus {
|
||||
Paid = 'paid',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const SessionPaymentStatus = {
|
||||
Paid: 'paid',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type SessionPaymentStatus = typeof SessionPaymentStatus[keyof typeof SessionPaymentStatus];
|
||||
export type SetPrimaryUserEmailInput = {
|
||||
id: Scalars['ID']['input'];
|
||||
};
|
||||
@@ -3088,11 +3106,12 @@ export type SmartTextEditorValue = {
|
||||
version: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum SortDirection {
|
||||
Asc = 'ASC',
|
||||
Desc = 'DESC'
|
||||
}
|
||||
export const SortDirection = {
|
||||
Asc: 'ASC',
|
||||
Desc: 'DESC'
|
||||
} as const;
|
||||
|
||||
export type SortDirection = typeof SortDirection[keyof typeof SortDirection];
|
||||
export type Stream = {
|
||||
__typename?: 'Stream';
|
||||
/**
|
||||
@@ -3287,12 +3306,13 @@ export type StreamRevokePermissionInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum StreamRole {
|
||||
StreamContributor = 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner = 'STREAM_OWNER',
|
||||
StreamReviewer = 'STREAM_REVIEWER'
|
||||
}
|
||||
export const StreamRole = {
|
||||
StreamContributor: 'STREAM_CONTRIBUTOR',
|
||||
StreamOwner: 'STREAM_OWNER',
|
||||
StreamReviewer: 'STREAM_REVIEWER'
|
||||
} as const;
|
||||
|
||||
export type StreamRole = typeof StreamRole[keyof typeof StreamRole];
|
||||
export type StreamUpdateInput = {
|
||||
allowPublicComments?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -3608,11 +3628,12 @@ export type TokenResourceIdentifierInput = {
|
||||
type: TokenResourceIdentifierType;
|
||||
};
|
||||
|
||||
export enum TokenResourceIdentifierType {
|
||||
Project = 'project',
|
||||
Workspace = 'workspace'
|
||||
}
|
||||
export const TokenResourceIdentifierType = {
|
||||
Project: 'project',
|
||||
Workspace: 'workspace'
|
||||
} as const;
|
||||
|
||||
export type TokenResourceIdentifierType = typeof TokenResourceIdentifierType[keyof typeof TokenResourceIdentifierType];
|
||||
export type TriggeredAutomationsStatus = {
|
||||
__typename?: 'TriggeredAutomationsStatus';
|
||||
automationRuns: Array<AutomateRun>;
|
||||
@@ -3957,11 +3978,12 @@ export type UserProjectsUpdatedMessage = {
|
||||
type: UserProjectsUpdatedMessageType;
|
||||
};
|
||||
|
||||
export enum UserProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const UserProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type UserProjectsUpdatedMessageType = typeof UserProjectsUpdatedMessageType[keyof typeof UserProjectsUpdatedMessageType];
|
||||
export type UserRoleInput = {
|
||||
id: Scalars['String']['input'];
|
||||
role: Scalars['String']['input'];
|
||||
@@ -4151,11 +4173,12 @@ export type ViewerUserActivityMessageInput = {
|
||||
userName: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export enum ViewerUserActivityStatus {
|
||||
Disconnected = 'DISCONNECTED',
|
||||
Viewing = 'VIEWING'
|
||||
}
|
||||
export const ViewerUserActivityStatus = {
|
||||
Disconnected: 'DISCONNECTED',
|
||||
Viewing: 'VIEWING'
|
||||
} as const;
|
||||
|
||||
export type ViewerUserActivityStatus = typeof ViewerUserActivityStatus[keyof typeof ViewerUserActivityStatus];
|
||||
export type Webhook = {
|
||||
__typename?: 'Webhook';
|
||||
description?: Maybe<Scalars['String']['output']>;
|
||||
@@ -4383,12 +4406,13 @@ export type WorkspaceDomainDeleteInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceFeatureName {
|
||||
DomainBasedSecurityPolicies = 'domainBasedSecurityPolicies',
|
||||
OidcSso = 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity = 'workspaceDataRegionSpecificity'
|
||||
}
|
||||
export const WorkspaceFeatureName = {
|
||||
DomainBasedSecurityPolicies: 'domainBasedSecurityPolicies',
|
||||
OidcSso: 'oidcSso',
|
||||
WorkspaceDataRegionSpecificity: 'workspaceDataRegionSpecificity'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceFeatureName = typeof WorkspaceFeatureName[keyof typeof WorkspaceFeatureName];
|
||||
export type WorkspaceInviteCreateInput = {
|
||||
/** Either this or userId must be filled */
|
||||
email?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4493,12 +4517,13 @@ export type WorkspaceJoinRequestMutationsDenyArgs = {
|
||||
input: DenyWorkspaceJoinRequestInput;
|
||||
};
|
||||
|
||||
export enum WorkspaceJoinRequestStatus {
|
||||
Approved = 'approved',
|
||||
Denied = 'denied',
|
||||
Pending = 'pending'
|
||||
}
|
||||
export const WorkspaceJoinRequestStatus = {
|
||||
Approved: 'approved',
|
||||
Denied: 'denied',
|
||||
Pending: 'pending'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceJoinRequestStatus = typeof WorkspaceJoinRequestStatus[keyof typeof WorkspaceJoinRequestStatus];
|
||||
export type WorkspaceMutations = {
|
||||
__typename?: 'WorkspaceMutations';
|
||||
addDomain: Workspace;
|
||||
@@ -4587,12 +4612,13 @@ export type WorkspaceMutationsUpdateRoleArgs = {
|
||||
input: WorkspaceRoleUpdateInput;
|
||||
};
|
||||
|
||||
export enum WorkspacePaymentMethod {
|
||||
Billing = 'billing',
|
||||
Invoice = 'invoice',
|
||||
Unpaid = 'unpaid'
|
||||
}
|
||||
export const WorkspacePaymentMethod = {
|
||||
Billing: 'billing',
|
||||
Invoice: 'invoice',
|
||||
Unpaid: 'unpaid'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePaymentMethod = typeof WorkspacePaymentMethod[keyof typeof WorkspacePaymentMethod];
|
||||
export type WorkspacePlan = {
|
||||
__typename?: 'WorkspacePlan';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
@@ -4601,27 +4627,31 @@ export type WorkspacePlan = {
|
||||
status: WorkspacePlanStatuses;
|
||||
};
|
||||
|
||||
export enum WorkspacePlanStatuses {
|
||||
CancelationScheduled = 'cancelationScheduled',
|
||||
Canceled = 'canceled',
|
||||
Expired = 'expired',
|
||||
PaymentFailed = 'paymentFailed',
|
||||
Trial = 'trial',
|
||||
Valid = 'valid'
|
||||
}
|
||||
export const WorkspacePlanStatuses = {
|
||||
CancelationScheduled: 'cancelationScheduled',
|
||||
Canceled: 'canceled',
|
||||
Expired: 'expired',
|
||||
PaymentFailed: 'paymentFailed',
|
||||
Trial: 'trial',
|
||||
Valid: 'valid'
|
||||
} as const;
|
||||
|
||||
export enum WorkspacePlans {
|
||||
Academia = 'academia',
|
||||
Business = 'business',
|
||||
BusinessInvoiced = 'businessInvoiced',
|
||||
Free = 'free',
|
||||
Plus = 'plus',
|
||||
PlusInvoiced = 'plusInvoiced',
|
||||
Starter = 'starter',
|
||||
StarterInvoiced = 'starterInvoiced',
|
||||
Unlimited = 'unlimited'
|
||||
}
|
||||
export type WorkspacePlanStatuses = typeof WorkspacePlanStatuses[keyof typeof WorkspacePlanStatuses];
|
||||
export const WorkspacePlans = {
|
||||
Academia: 'academia',
|
||||
Business: 'business',
|
||||
BusinessInvoiced: 'businessInvoiced',
|
||||
Free: 'free',
|
||||
Plus: 'plus',
|
||||
PlusInvoiced: 'plusInvoiced',
|
||||
Pro: 'pro',
|
||||
Starter: 'starter',
|
||||
StarterInvoiced: 'starterInvoiced',
|
||||
Team: 'team',
|
||||
Unlimited: 'unlimited'
|
||||
} as const;
|
||||
|
||||
export type WorkspacePlans = typeof WorkspacePlans[keyof typeof WorkspacePlans];
|
||||
export type WorkspaceProjectCreateInput = {
|
||||
description?: InputMaybe<Scalars['String']['input']>;
|
||||
name?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4693,21 +4723,23 @@ export type WorkspaceProjectsUpdatedMessage = {
|
||||
workspaceId: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export enum WorkspaceProjectsUpdatedMessageType {
|
||||
Added = 'ADDED',
|
||||
Removed = 'REMOVED'
|
||||
}
|
||||
export const WorkspaceProjectsUpdatedMessageType = {
|
||||
Added: 'ADDED',
|
||||
Removed: 'REMOVED'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceProjectsUpdatedMessageType = typeof WorkspaceProjectsUpdatedMessageType[keyof typeof WorkspaceProjectsUpdatedMessageType];
|
||||
export type WorkspaceRequestToJoinInput = {
|
||||
workspaceId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum WorkspaceRole {
|
||||
Admin = 'ADMIN',
|
||||
Guest = 'GUEST',
|
||||
Member = 'MEMBER'
|
||||
}
|
||||
export const WorkspaceRole = {
|
||||
Admin: 'ADMIN',
|
||||
Guest: 'GUEST',
|
||||
Member: 'MEMBER'
|
||||
} as const;
|
||||
|
||||
export type WorkspaceRole = typeof WorkspaceRole[keyof typeof WorkspaceRole];
|
||||
export type WorkspaceRoleDeleteInput = {
|
||||
userId: Scalars['String']['input'];
|
||||
workspaceId: Scalars['String']['input'];
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"../src/**/*.tsx"
|
||||
],
|
||||
"exclude": [
|
||||
"../**/*.spec.ts",
|
||||
"../src/**/*.mts"
|
||||
],
|
||||
"compilerOptions": {
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
"../src/**/*.mts",
|
||||
"../src/**/*.tsx"
|
||||
],
|
||||
"exclude": [],
|
||||
"exclude": [
|
||||
"../**/*.spec.ts"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"outDir": "../.tshy-build/esm"
|
||||
}
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"vitest.vitestPackagePath": "../../node_modules/vitest/package.json"
|
||||
}
|
||||
@@ -22,7 +22,9 @@ const configs = [
|
||||
languageOptions: {
|
||||
parserOptions: {
|
||||
tsconfigRootDir: getESMDirname(import.meta.url),
|
||||
project: './tsconfig.json'
|
||||
projectService: {
|
||||
allowDefaultProject: ['*.ts']
|
||||
}
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
"lint:eslint": "eslint .",
|
||||
"lint:tsc": "tsc --noEmit",
|
||||
"lint": "yarn lint:eslint && yarn lint:tsc",
|
||||
"lint:ci": "yarn lint:tsc"
|
||||
"lint:ci": "yarn lint:tsc",
|
||||
"test": "vitest",
|
||||
"test:single-run": "vitest run"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"engines": {
|
||||
@@ -63,6 +65,7 @@
|
||||
"tshy": "^1.14.0",
|
||||
"typescript": "^4.5.4",
|
||||
"ua-parser-js": "^1.0.38",
|
||||
"vitest": "^3.0.7",
|
||||
"znv": "^0.4.0",
|
||||
"zod": "^3.22.4"
|
||||
},
|
||||
@@ -75,14 +78,15 @@
|
||||
"./observability": "./src/observability/index.ts",
|
||||
"./dist/*": "./dist/*",
|
||||
".": "./src/index.ts"
|
||||
}
|
||||
},
|
||||
"exclude": [
|
||||
"**/*.spec.ts"
|
||||
]
|
||||
},
|
||||
"imports": {
|
||||
"#lodash": {
|
||||
"require": "lodash",
|
||||
"import": "lodash-es",
|
||||
"node": "lodash",
|
||||
"default": "lodash-es"
|
||||
"import": "lodash-es"
|
||||
}
|
||||
},
|
||||
"exports": {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
import { describe, expect, test } from 'vitest'
|
||||
import { xor } from './utility.js'
|
||||
|
||||
describe('xor', () => {
|
||||
test('returns true if only one of the arguments is truthy', () => {
|
||||
expect(xor(true, false)).toBe(true)
|
||||
expect(xor(false, true)).toBe(true)
|
||||
expect(xor(true, true)).toBe(false)
|
||||
expect(xor(false, false)).toBe(false)
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,10 @@
|
||||
import { describe, expect, test } from 'vitest'
|
||||
import md5 from './md5.js'
|
||||
|
||||
describe('md5', () => {
|
||||
test('returns a valid md5 hash', () => {
|
||||
expect(md5('hello')).toBe('5d41402abc4b2a76b9719d911017c592')
|
||||
expect(md5('world')).toBe('7d793037a0760186574b0282f2f435e7')
|
||||
expect(md5('')).toBe('d41d8cd98f00b204e9800998ecf8427e')
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,186 @@
|
||||
import { WorkspaceRoles } from '../../core/constants.js'
|
||||
import {
|
||||
PaidWorkspacePlans,
|
||||
UnpaidWorkspacePlans,
|
||||
WorkspacePlanBillingIntervals,
|
||||
WorkspacePlans
|
||||
} from './plans.js'
|
||||
|
||||
type StringTemplate<Data extends object> = (data: Data) => string
|
||||
|
||||
/**
|
||||
* WORKSPACE FEATURES
|
||||
*/
|
||||
|
||||
export const WorkspacePlanFeatures = <const>{
|
||||
// Core features pretty much available to everyone
|
||||
Workspace: 'workspace',
|
||||
RoleManagement: 'roleManagement',
|
||||
GuestUsers: 'guestUsers',
|
||||
PrivateAutomateFunctions: 'privateAutomateFunctions',
|
||||
// Optional/plan specific
|
||||
DomainSecurity: 'domainBasedSecurityPolicies',
|
||||
PrioritySupport: 'prioritySupport',
|
||||
SSO: 'oidcSso',
|
||||
CustomDataRegion: 'workspaceDataRegionSpecificity'
|
||||
}
|
||||
|
||||
export type WorkspacePlanFeatures =
|
||||
(typeof WorkspacePlanFeatures)[keyof typeof WorkspacePlanFeatures]
|
||||
|
||||
export const WorkspacePlanFeaturesMetadata = (<const>{
|
||||
// Old
|
||||
[WorkspacePlanFeatures.Workspace]: {
|
||||
displayName: 'Workspace',
|
||||
description: 'A shared space for your team and projects'
|
||||
},
|
||||
[WorkspacePlanFeatures.RoleManagement]: {
|
||||
displayName: 'Role management',
|
||||
description: "Control individual members' access and edit rights"
|
||||
},
|
||||
[WorkspacePlanFeatures.GuestUsers]: {
|
||||
displayName: 'Guest users',
|
||||
description: (params: { price: number | string }) =>
|
||||
`Give guests access to specific projects in the workspace at £${params.price}/month/guest`
|
||||
},
|
||||
[WorkspacePlanFeatures.PrivateAutomateFunctions]: {
|
||||
displayName: 'Private automate functions',
|
||||
description:
|
||||
'Create and manage private automation functions securely within your workspace'
|
||||
},
|
||||
[WorkspacePlanFeatures.DomainSecurity]: {
|
||||
displayName: 'Domain security',
|
||||
description: 'Require workspace members to use a verified company email'
|
||||
},
|
||||
[WorkspacePlanFeatures.SSO]: {
|
||||
displayName: 'Single Sign-On (SSO)',
|
||||
description: 'Require workspace members to log in with your SSO provider'
|
||||
},
|
||||
[WorkspacePlanFeatures.CustomDataRegion]: {
|
||||
displayName: 'Custom data residency',
|
||||
description: 'Store the workspace data in a custom region'
|
||||
},
|
||||
[WorkspacePlanFeatures.PrioritySupport]: {
|
||||
displayName: 'Priority support',
|
||||
description: 'Personal and fast support'
|
||||
}
|
||||
}) satisfies Record<
|
||||
WorkspacePlanFeatures,
|
||||
{
|
||||
displayName: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
description: string | StringTemplate<any>
|
||||
}
|
||||
>
|
||||
|
||||
/**
|
||||
* PLAN CONFIG - PRICES & FEATURES
|
||||
*/
|
||||
|
||||
export type WorkspacePlanPriceStructure = {
|
||||
[interval in WorkspacePlanBillingIntervals]: {
|
||||
[role in WorkspaceRoles]: number
|
||||
}
|
||||
}
|
||||
|
||||
export type WorkspacePlanConfig<Plan extends WorkspacePlans = WorkspacePlans> = {
|
||||
plan: Plan
|
||||
features: readonly WorkspacePlanFeatures[]
|
||||
}
|
||||
|
||||
const baseFeatures = [
|
||||
WorkspacePlanFeatures.Workspace,
|
||||
WorkspacePlanFeatures.RoleManagement,
|
||||
WorkspacePlanFeatures.GuestUsers,
|
||||
WorkspacePlanFeatures.PrivateAutomateFunctions
|
||||
] as const
|
||||
|
||||
export const WorkspacePaidPlanConfigs: {
|
||||
[plan in PaidWorkspacePlans]: WorkspacePlanConfig<plan>
|
||||
} = {
|
||||
// Old
|
||||
[PaidWorkspacePlans.Starter]: {
|
||||
plan: PaidWorkspacePlans.Starter,
|
||||
features: [...baseFeatures, WorkspacePlanFeatures.DomainSecurity]
|
||||
},
|
||||
[PaidWorkspacePlans.Plus]: {
|
||||
plan: PaidWorkspacePlans.Plus,
|
||||
features: [
|
||||
...baseFeatures,
|
||||
WorkspacePlanFeatures.DomainSecurity,
|
||||
WorkspacePlanFeatures.SSO
|
||||
]
|
||||
},
|
||||
[PaidWorkspacePlans.Business]: {
|
||||
plan: PaidWorkspacePlans.Business,
|
||||
features: [
|
||||
...baseFeatures,
|
||||
WorkspacePlanFeatures.DomainSecurity,
|
||||
WorkspacePlanFeatures.SSO,
|
||||
WorkspacePlanFeatures.CustomDataRegion,
|
||||
WorkspacePlanFeatures.PrioritySupport
|
||||
]
|
||||
},
|
||||
[PaidWorkspacePlans.Team]: {
|
||||
plan: PaidWorkspacePlans.Team,
|
||||
features: baseFeatures
|
||||
},
|
||||
[PaidWorkspacePlans.Pro]: {
|
||||
plan: PaidWorkspacePlans.Pro,
|
||||
features: [
|
||||
...baseFeatures,
|
||||
WorkspacePlanFeatures.DomainSecurity,
|
||||
WorkspacePlanFeatures.SSO,
|
||||
WorkspacePlanFeatures.CustomDataRegion,
|
||||
WorkspacePlanFeatures.PrioritySupport
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
export const WorkspaceUnpaidPlanConfigs: {
|
||||
[plan in UnpaidWorkspacePlans]: WorkspacePlanConfig<plan>
|
||||
} = {
|
||||
// Old
|
||||
[UnpaidWorkspacePlans.Unlimited]: {
|
||||
plan: UnpaidWorkspacePlans.Unlimited,
|
||||
features: [
|
||||
...baseFeatures,
|
||||
WorkspacePlanFeatures.DomainSecurity,
|
||||
WorkspacePlanFeatures.SSO,
|
||||
WorkspacePlanFeatures.CustomDataRegion,
|
||||
WorkspacePlanFeatures.PrioritySupport
|
||||
]
|
||||
},
|
||||
[UnpaidWorkspacePlans.Academia]: {
|
||||
plan: UnpaidWorkspacePlans.Academia,
|
||||
features: [
|
||||
...baseFeatures,
|
||||
WorkspacePlanFeatures.DomainSecurity,
|
||||
WorkspacePlanFeatures.SSO,
|
||||
WorkspacePlanFeatures.CustomDataRegion,
|
||||
WorkspacePlanFeatures.PrioritySupport
|
||||
]
|
||||
},
|
||||
[UnpaidWorkspacePlans.StarterInvoiced]: {
|
||||
...WorkspacePaidPlanConfigs.starter,
|
||||
plan: UnpaidWorkspacePlans.StarterInvoiced
|
||||
},
|
||||
[UnpaidWorkspacePlans.PlusInvoiced]: {
|
||||
...WorkspacePaidPlanConfigs.plus,
|
||||
plan: UnpaidWorkspacePlans.PlusInvoiced
|
||||
},
|
||||
[UnpaidWorkspacePlans.BusinessInvoiced]: {
|
||||
...WorkspacePaidPlanConfigs.business,
|
||||
plan: UnpaidWorkspacePlans.BusinessInvoiced
|
||||
},
|
||||
// New
|
||||
[UnpaidWorkspacePlans.Free]: {
|
||||
plan: UnpaidWorkspacePlans.Free,
|
||||
features: baseFeatures
|
||||
}
|
||||
}
|
||||
|
||||
export const WorkspacePlanConfigs = {
|
||||
...WorkspacePaidPlanConfigs,
|
||||
...WorkspaceUnpaidPlanConfigs
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* PLANS
|
||||
*/
|
||||
|
||||
export const TrialEnabledPaidWorkspacePlans = <const>{
|
||||
Starter: 'starter'
|
||||
}
|
||||
|
||||
export type TrialEnabledPaidWorkspacePlans =
|
||||
(typeof TrialEnabledPaidWorkspacePlans)[keyof typeof TrialEnabledPaidWorkspacePlans]
|
||||
|
||||
export const PaidWorkspacePlansOld = <const>{
|
||||
...TrialEnabledPaidWorkspacePlans,
|
||||
Plus: 'plus',
|
||||
Business: 'business'
|
||||
}
|
||||
|
||||
export type PaidWorkspacePlansOld =
|
||||
(typeof PaidWorkspacePlansOld)[keyof typeof PaidWorkspacePlansOld]
|
||||
|
||||
export const PaidWorkspacePlansNew = <const>{
|
||||
Team: 'team',
|
||||
Pro: 'pro'
|
||||
}
|
||||
|
||||
export type PaidWorkspacePlansNew =
|
||||
(typeof PaidWorkspacePlansNew)[keyof typeof PaidWorkspacePlansNew]
|
||||
|
||||
export const PaidWorkspacePlans = <const>{
|
||||
...PaidWorkspacePlansOld,
|
||||
...PaidWorkspacePlansNew
|
||||
}
|
||||
|
||||
export type PaidWorkspacePlans =
|
||||
(typeof PaidWorkspacePlans)[keyof typeof PaidWorkspacePlans]
|
||||
|
||||
export const UnpaidWorkspacePlans = <const>{
|
||||
// Old
|
||||
Unlimited: 'unlimited',
|
||||
Academia: 'academia',
|
||||
StarterInvoiced: 'starterInvoiced',
|
||||
PlusInvoiced: 'plusInvoiced',
|
||||
BusinessInvoiced: 'businessInvoiced',
|
||||
// New
|
||||
Free: 'free'
|
||||
}
|
||||
|
||||
export type UnpaidWorkspacePlans =
|
||||
(typeof UnpaidWorkspacePlans)[keyof typeof UnpaidWorkspacePlans]
|
||||
|
||||
export const WorkspacePlans = <const>{
|
||||
...PaidWorkspacePlans,
|
||||
...UnpaidWorkspacePlans
|
||||
}
|
||||
|
||||
export type WorkspacePlans = (typeof WorkspacePlans)[keyof typeof WorkspacePlans]
|
||||
|
||||
/**
|
||||
* BILLING INTERVALS
|
||||
*/
|
||||
|
||||
export const WorkspacePlanBillingIntervals = <const>{
|
||||
Monthly: 'monthly',
|
||||
Yearly: 'yearly'
|
||||
}
|
||||
|
||||
export type WorkspacePlanBillingIntervals =
|
||||
(typeof WorkspacePlanBillingIntervals)[keyof typeof WorkspacePlanBillingIntervals]
|
||||
|
||||
/**
|
||||
* PLAN STATUSES
|
||||
*/
|
||||
|
||||
export const UnpaidWorkspacePlanStatuses = <const>{
|
||||
Valid: 'valid'
|
||||
}
|
||||
|
||||
export type UnpaidWorkspacePlanStatuses =
|
||||
(typeof UnpaidWorkspacePlanStatuses)[keyof typeof UnpaidWorkspacePlanStatuses]
|
||||
|
||||
export const PaidWorkspacePlanStatuses = <const>{
|
||||
...UnpaidWorkspacePlanStatuses,
|
||||
PaymentFailed: 'paymentFailed',
|
||||
CancelationScheduled: 'cancelationScheduled',
|
||||
Canceled: 'canceled'
|
||||
}
|
||||
|
||||
export type PaidWorkspacePlanStatuses =
|
||||
(typeof PaidWorkspacePlanStatuses)[keyof typeof PaidWorkspacePlanStatuses]
|
||||
|
||||
export const TrialWorkspacePlanStatuses = <const>{
|
||||
Trial: 'trial',
|
||||
Expired: 'expired'
|
||||
}
|
||||
|
||||
export type TrialWorkspacePlanStatuses =
|
||||
(typeof TrialWorkspacePlanStatuses)[keyof typeof TrialWorkspacePlanStatuses]
|
||||
|
||||
export const WorkspacePlanStatuses = <const>{
|
||||
...PaidWorkspacePlanStatuses,
|
||||
...TrialWorkspacePlanStatuses,
|
||||
...UnpaidWorkspacePlanStatuses
|
||||
}
|
||||
|
||||
export type WorkspacePlanStatuses =
|
||||
(typeof WorkspacePlanStatuses)[keyof typeof WorkspacePlanStatuses]
|
||||
@@ -1 +1,3 @@
|
||||
export * from './errors/index.js'
|
||||
export * from './helpers/plans.js'
|
||||
export * from './helpers/features.js'
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
||||
// "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
|
||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
||||
"types": [] /* Specify type package names to be included without being referenced in a source file. */,
|
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||
// "resolveJsonModule": true, /* Enable importing .json files */
|
||||
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
import { defineConfig } from 'vitest/config'
|
||||
|
||||
export default defineConfig({})
|
||||
+1
-3
@@ -1,3 +1 @@
|
||||
{
|
||||
"vitest.disableWorkspaceWarning": true
|
||||
}
|
||||
{}
|
||||
|
||||
@@ -26,9 +26,7 @@
|
||||
"imports": {
|
||||
"#lodash": {
|
||||
"require": "lodash",
|
||||
"import": "lodash-es",
|
||||
"node": "lodash",
|
||||
"default": "lodash-es"
|
||||
"import": "lodash-es"
|
||||
}
|
||||
},
|
||||
"exports": {
|
||||
|
||||
+1
-3
@@ -1,3 +1 @@
|
||||
{
|
||||
"vitest.disableWorkspaceWarning": true
|
||||
}
|
||||
{}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
import { defineConfig } from 'vitest/config'
|
||||
|
||||
export default defineConfig({})
|
||||
@@ -0,0 +1 @@
|
||||
export default ['packages/*/vitest.config.{js,ts,mjs}']
|
||||
Reference in New Issue
Block a user