Files
speckle-server/packages/server/modules/gatekeeperCore/utils/limits.ts
T
Kristaps Fabians Geikins 9998ed2586 feat: personal project limits (#4759)
* base limits cleanup

* history limit tests

* canCreatePersonal & tests

* canInvite block

* WIP model check

* fix tests

* shared tests fix

* lodash import fix

* lint fix

* help update

* hopefully fixing test

* CR comment
2025-05-20 14:56:05 +03:00

39 lines
1.4 KiB
TypeScript

import { GraphQLContext } from '@/modules/shared/helpers/typeHelper'
import {
getProjectLimitDateFactory as getProjectLimitDateFactoryBase,
isCreatedBeyondHistoryLimitCutoffFactory as isCreatedBeyondHistoryLimitCutoffFactoryBase,
IsCreatedBeyondHistoryLimitCutoff,
GetProjectLimitDate
} from '@speckle/shared'
import { PersonalProjectsLimits } from '@speckle/shared/authz'
import { getFeatureFlags } from '@speckle/shared/environment'
const { FF_PERSONAL_PROJECTS_LIMITS_ENABLED } = getFeatureFlags()
const getPersonalProjectLimits = FF_PERSONAL_PROJECTS_LIMITS_ENABLED
? () => Promise.resolve(PersonalProjectsLimits)
: () => Promise.resolve(null)
export const isCreatedBeyondHistoryLimitCutoffFactory = (deps: {
ctx: GraphQLContext
}): IsCreatedBeyondHistoryLimitCutoff => {
const getProjectLimitDate = getProjectLimitDateFactory(deps)
const isCreatedBeyondHistoryLimitCutoffFactory =
isCreatedBeyondHistoryLimitCutoffFactoryBase({
getProjectLimitDate
})
return isCreatedBeyondHistoryLimitCutoffFactory
}
export const getProjectLimitDateFactory = (deps: {
ctx: GraphQLContext
}): GetProjectLimitDate => {
const getProjectLimitDate = getProjectLimitDateFactoryBase({
getWorkspaceLimits: async ({ workspaceId }) =>
(await deps.ctx.loaders.gatekeeper?.getWorkspaceLimits.load(workspaceId)) || null,
getPersonalProjectLimits
})
return getProjectLimitDate
}