@camunda/ccma-shared-types 4.0.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/approvals/use-cases.const.d.ts +0 -66
- package/dist/approvals/use-cases.const.js +2 -11
- package/dist/approvals/use-cases.const.js.map +2 -2
- package/dist/dtos/ControlV2.dto.d.ts +10 -0
- package/dist/dtos/ExternalWebapp.dto.d.ts +12 -0
- package/dist/dtos/FeatureFlags.dto.d.ts +51 -58
- package/dist/dtos/FeatureFlags.dto.js +0 -10
- package/dist/dtos/FeatureFlags.dto.js.map +3 -3
- package/dist/dtos/Hdp.dto.d.ts +153 -0
- package/dist/dtos/SalesPlan.dto.d.ts +25 -1
- package/dist/dtos/SalesPlan.dto.js +19 -6
- package/dist/dtos/SalesPlan.dto.js.map +2 -2
- package/dist/index.d.ts +7 -9
- package/dist/index.js +16 -26
- package/dist/index.js.map +2 -2
- package/dist/permissions/accounts.permissions.d.ts +0 -33
- package/dist/permissions/accounts.permissions.js +0 -31
- package/dist/permissions/accounts.permissions.js.map +2 -2
- package/dist/permissions/combo.js +0 -6
- package/dist/permissions/combo.js.map +2 -2
- package/dist/types/PreprodClusterTtl.type.d.ts +33 -0
- package/dist/types/PreprodClusterTtl.type.js +37 -0
- package/dist/types/PreprodClusterTtl.type.js.map +7 -0
- package/dist/types/hdp.types.d.ts +6 -0
- package/dist/types/hdp.types.js +3 -1
- package/dist/types/hdp.types.js.map +2 -2
- package/package.json +1 -1
- package/dist/dtos/FeatureFlagOverride.dto.d.ts +0 -226
- package/dist/dtos/FeatureFlagOverride.dto.js +0 -38
- package/dist/dtos/FeatureFlagOverride.dto.js.map +0 -7
- /package/dist/_tests/{dtos/FeatureFlagOverride.dto.spec.d.ts → types/PreprodClusterTtl.type.spec.d.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/permissions/accounts.permissions.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { Roles } from '../types/Roles.js'\n\nexport namespace AccountsPermissions {\n export const READ_ALL = 'aara'\n export const CREATE_ORG = 'aaco'\n export const CHANGE_ORG_NAME = 'aacn'\n export const DELETE_ORG = 'aado'\n export const RESET_TOKEN_VERIFICATION = 'aart'\n export const DELETE_USER = 'aadu'\n export const DELETE_NOT_ACTIVATED_USER = 'aadn'\n export const ADD_TO_ORG = 'aaao'\n export const REMOVE_FROM_ORG = 'aaro'\n export const SET_DEFAULT_ORG = 'aasd'\n export const CANCEL_INVITE = 'aaci'\n export const CHANGE_ROLE = 'aacr'\n export const CHANGE_SAFE_ROLE = 'aacs'\n export const EXTEND_TRIAL = 'aaet'\n export const INVALIDATE_TOKEN = 'aait'\n export const SALES_PLAN_CREATE = 'asc'\n export const SALES_PLAN_MODIFY = 'asm'\n export const SALES_PLAN_FORCE_MODIFY = 'asfm'\n export const SALES_PLAN_SWITCH = 'ass'\n export const SALES_PLAN_DELETE = 'asd'\n export const SALES_PLAN_DELETE_AS_GOD = 'asdg'\n export const SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG = 'asar'\n export const SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS = 'asas'\n export const SUPPORT_AGENT_ADD_TO_ORG = 'asaa'\n export const MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS = 'acpm'\n export const M2M_SALESPLAN_GET = 'amsg'\n export const M2M_SALESPLAN_SWITCH = 'amss'\n\n // The routes of `api/admin/approvals` read `ConsolePermissions.M2M_CONTROL_APPROVALS`,\n // the one m2m permission of control-backend for accounts and console.\n\n export const ENTERPRISE_ORG_CONVERT = 'aeoc'\n\n export const ENTERPRISE_ORG_MODIFY = 'aeom'\n\n export const ENTERPRISE_ORG_MODIFY_START_DATE = 'aeos'\n\n export const TRIAL_TO_IN_NEGOTIATION_CONVERT = 'atin'\n\n export const EXTERNAL_M2M_GET_ORG_MEMBERS = 'amog'\n export const EXTERNAL_M2M_SEARCH_ORGS = 'amos'\n export const EXTERNAL_M2M_QA_ORG_CREATE = 'amqc'\n export const EXTERNAL_M2M_OFFBOARD_CAMUNDI = 'amoc'\n\n export const ORG_MAY_CHANGE_LIMITS = 'alc'\n export const ORG_MAY_CHANGE_GENERATION_WHITELIST = 'algw'\n export const ORG_CANCEL_PAID = 'aacp'\n\n export const ADMIN_SQL = 'aasq'\n\n export const ADMIN_AUTH0_CONNECTIONS_CREATE = 'aa0c'\n export const ADMIN_AUTH0_CONNECTIONS_READ = 'aa0r'\n export const ADMIN_AUTH0_CONNECTIONS_UPDATE = 'aa0u'\n export const ADMIN_AUTH0_CONNECTIONS_DELETE = 'aa0d'\n export const UNBLOCK_USER = 'aaub'\n\n export const ADMIN_CHANGE_EMAIL = 'aace'\n export const ADMIN_CHANGE_USER_NAME = 'aacu'\n\n export const BOT = 'abot'\n\n // OBACHT: NOT THIS ONE\n export const MODELER_DELETE_USER = 'mdu'\n\n export const GOD_CRON = 'gcr'\n export const GOD_SIGNUP_SPAM_PATTERNS = 'gsp'\n export const GOD_PURGE_USERS = 'gpu'\n export const GOD_UPDATE_USER_METADATA = 'gum'\n\n export const ADMIN_EARLY_ACCESS_FEATURES_READ = 'aaer'\n export const ADMIN_EARLY_ACCESS_FEATURES_CREATE = 'aaec'\n export const ADMIN_EARLY_ACCESS_FEATURES_DELETE = 'aaed'\n export const ADMIN_EARLY_ACCESS_FEATURES_UPDATE = 'aaeu'\n export const PDF_WATERMARK_READ = 'awmr'\n export const PDF_WATERMARK_WRITE = 'awmw'\n export const ROLE_SUPPORT_AGENT = 'support:agent'\n export const FORCE_SALES_PLAN_ON_ORG = 'aafs'\n\n /**\n * May propose and approve an override of a feature flag in Camunda Control.\n *\n * An override moves a flag for a whole stage, or for one organization,\n * without a deploy. The write always goes through a four-eyes approval\n * request, thus this permission alone CHANGES nothing.\n *\n * It does READ, though, and a reviewer of this permission has to know it:\n * it opens `GET /api/feature-flags` of control-backend and the page over\n * it. That answer names the person who asked for the override of this\n * stage and why, and counts the organizations that hold one. The read is\n * behind this permission and not the wider `viewModifications` for that\n * reason.\n */\n export const CONTROL_FLAG_OVERRIDE = 'acfo'\n\n /**\n * May ask for AND approve an override that names the PROD stage.\n *\n * BOTH, and the distinction matters to whoever grants it at Auth0.\n * `permissionsFor` puts this permission on the row, and `canCreate` reads\n * the same list, so a Camundi without it cannot even open a prod request.\n * Granting it as \"an approver permission\" would give it to the wrong\n * pool: it names everybody who may move a flag on prod, in either seat.\n *\n * It is needed ON TOP of `CONTROL_FLAG_OVERRIDE`, and the payload of the\n * request adds it. A flag change on prod reaches every customer, thus it\n * asks for a narrower pool than the same change on dev.\n */\n export const CONTROL_FLAG_OVERRIDE_PROD = 'acfp'\n\n export interface Features {\n admin: {\n readAll: boolean\n createOrg: boolean\n changeOrgName: boolean\n deleteOrg: boolean\n resetTokenVerification: boolean\n deleteUser: boolean\n deleteNotActivatedUser: boolean\n addToOrg: boolean\n removeFromOrg: boolean\n setDefaultOrg: boolean\n cancelInvite: boolean\n changeRole: boolean\n addSafeRole: boolean\n deleteClusters: boolean\n extendTrial: boolean\n invalidateToken: boolean\n cancelPaid: boolean\n searchForOrgs: boolean\n readAudit: boolean\n modifyClusterPlanTypeReservations: boolean\n mayChangeOrgLimits: boolean\n mayChangeGenerationWhiteList: boolean\n sql: boolean\n modelerDeleteUser: boolean\n unblockUser: boolean\n god: {\n triggerCrons: boolean\n forceSalesPlanOnOrg: boolean\n changeSignupSpamPatterns: boolean\n purgeUsers: boolean\n updateUserMetadata: boolean\n }\n bot: boolean\n changeEmail: boolean\n changeUserName: boolean\n }\n salesPlan: {\n create: boolean\n modify: boolean\n forceModify: boolean\n switch: boolean\n delete: boolean\n godDelete: boolean\n }\n enterprise: {\n org: {\n convert: boolean\n modify: boolean\n modifyStartDate: boolean\n }\n }\n trial: {\n convertToInNegotiation: boolean\n }\n supportAgent: {\n removeAgentsFromOrg: boolean\n seeOrgMemberships: boolean\n addAgentsToOrg: boolean\n }\n m2m: {\n salesplan: {\n get: boolean\n switch: boolean\n }\n\n fetchMigrationData: boolean\n /** Every route of `api/admin/approvals`. See `M2M_CONTROL_APPROVALS`. */\n approvals: boolean\n }\n externalM2m: {\n org: {\n members: {\n get: boolean\n }\n search: boolean\n }\n qa: {\n org: {\n create: boolean\n }\n }\n offboarding: {\n camundi: boolean\n }\n }\n auth0: {\n connections: {\n create: boolean\n read: boolean\n update: boolean\n delete: boolean\n }\n }\n notifications: {\n global: {\n read: boolean\n delete: boolean\n create: boolean\n }\n }\n earlyAccessFeatures: {\n read: boolean\n create: boolean\n delete: boolean\n update: boolean\n }\n pdfWatermark: {\n read: boolean\n write: boolean\n }\n featureFlags: {\n override: boolean\n overrideProd: boolean\n }\n }\n\n export function createEmptyFeatures(): Features {\n return {\n admin: {\n readAll: false,\n createOrg: false,\n changeOrgName: false,\n deleteOrg: false,\n resetTokenVerification: false,\n deleteUser: false,\n deleteNotActivatedUser: false,\n addToOrg: false,\n removeFromOrg: false,\n setDefaultOrg: false,\n cancelInvite: false,\n changeRole: false,\n addSafeRole: false,\n deleteClusters: false,\n extendTrial: false,\n invalidateToken: false,\n cancelPaid: false,\n searchForOrgs: false,\n readAudit: false,\n modifyClusterPlanTypeReservations: false,\n mayChangeOrgLimits: false,\n mayChangeGenerationWhiteList: false,\n sql: false,\n modelerDeleteUser: false,\n unblockUser: false,\n god: {\n triggerCrons: false,\n forceSalesPlanOnOrg: false,\n changeSignupSpamPatterns: false,\n purgeUsers: false,\n updateUserMetadata: false,\n },\n bot: false,\n changeEmail: false,\n changeUserName: false,\n },\n salesPlan: {\n create: false,\n modify: false,\n forceModify: false,\n switch: false,\n delete: false,\n godDelete: false,\n },\n enterprise: {\n org: { convert: false, modify: false, modifyStartDate: false },\n },\n trial: {\n convertToInNegotiation: false,\n },\n supportAgent: {\n removeAgentsFromOrg: false,\n seeOrgMemberships: false,\n addAgentsToOrg: false,\n },\n m2m: {\n salesplan: {\n get: false,\n switch: false,\n },\n fetchMigrationData: false,\n approvals: false,\n },\n externalM2m: {\n org: {\n members: {\n get: false,\n },\n search: false,\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: false,\n },\n },\n offboarding: {\n camundi: false,\n },\n },\n auth0: {\n connections: {\n create: false,\n read: false,\n update: false,\n delete: false,\n },\n },\n notifications: {\n global: {\n read: false,\n delete: false,\n create: false,\n },\n },\n earlyAccessFeatures: {\n read: false,\n create: false,\n delete: false,\n update: false,\n },\n pdfWatermark: {\n read: false,\n write: false,\n },\n featureFlags: {\n override: false,\n overrideProd: false,\n },\n }\n }\n\n export const PermissionsAtAuth0: Array<{\n value: string\n description: string\n initialRoles: Roles[]\n }> = [\n {\n value: READ_ALL,\n description: 'read access to all orgs and users',\n initialRoles: [\n 'accounts:read',\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:editSalesPlans',\n 'console:admin',\n 'console:admin:readonly',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:trialExtender',\n 'accounts:limitExtender',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n 'console:C8ReleaseManager',\n 'console:C8UpdateEnforcer',\n 'accounts:addSafeRoles',\n 'accounts:consultingManager',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: CREATE_ORG,\n description: 'can create organisations',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ORG_NAME,\n description: 'can change name of organisations',\n initialRoles: [\n 'accounts:admin',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_ORG,\n description: 'can delete organisations',\n initialRoles: ['accounts:admin'],\n },\n {\n value: RESET_TOKEN_VERIFICATION,\n description: 'can reset a verification token of a pending user',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_USER,\n description: 'can delete users',\n initialRoles: ['accounts:god'],\n },\n {\n value: DELETE_NOT_ACTIVATED_USER,\n description: 'can delete users that are not activated yet',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ADD_TO_ORG,\n description: 'can add someone to an org',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: REMOVE_FROM_ORG,\n description: 'can remove someone from an org',\n initialRoles: [\n 'accounts:admin',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: SET_DEFAULT_ORG,\n description: 'can set an org as default for any user',\n initialRoles: [\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:onboard',\n ],\n },\n {\n value: CANCEL_INVITE,\n description: 'can cancelpending invites',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ROLE,\n description: 'can change the role of a user',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: EXTEND_TRIAL,\n description: 'can extend the trial period of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:trialExtender',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: INVALIDATE_TOKEN,\n description: 'can invalidate tokens in TokenIssuer',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_CREATE,\n description: 'can create a SalesPlan',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_MODIFY,\n description: 'can modify a SalesPlan',\n initialRoles: ['accounts:admin', 'accounts:editSalesPlans'],\n },\n {\n value: SALES_PLAN_FORCE_MODIFY,\n description:\n 'can force modify a SalesPlan without caring about the orgs actual reservations/cluster usage',\n initialRoles: [],\n },\n {\n value: SALES_PLAN_SWITCH,\n description: 'can switch an organization to another SalesPlan',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseOffboarding',\n 'accounts:consultingManager',\n ],\n },\n {\n value: SALES_PLAN_DELETE,\n description:\n 'can delete a SalesPlan if it is not used by any Organization',\n initialRoles: ['accounts:admin'],\n },\n\n {\n value: SALES_PLAN_DELETE_AS_GOD,\n description: `can delete salesplans even if there is no replacement salesplan for this type. use with great caution`,\n initialRoles: [],\n },\n {\n value: SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n description: 'can remove support agents from organizations',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n description: 'can see all org memberships of support agents',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_ADD_TO_ORG,\n description: 'can add users as support agent to an organization',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n description: 'can modify cluster plan type reservations of an org',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_GET,\n description: 'm2m can get salesplans',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_SWITCH,\n description: 'm2m can switch salesplans',\n initialRoles: [],\n },\n {\n value: ENTERPRISE_ORG_CONVERT,\n description: 'can convert orgs to enterprise plans',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY,\n description:\n 'can modify value metrics and contract duration of enterprise orgs',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY_START_DATE,\n description: 'can modify start date of enterprise orgs',\n initialRoles: [\n 'accounts:god',\n 'accounts:enterpriseOffboarding',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: TRIAL_TO_IN_NEGOTIATION_CONVERT,\n description: 'can convert trial orgs to in-negotiation plans',\n initialRoles: ['accounts:admin', 'accounts:enterpriseAdmin'],\n },\n {\n value: EXTERNAL_M2M_GET_ORG_MEMBERS,\n description: 'external m2m can get all members of all orgs',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_QA_ORG_CREATE,\n description:\n 'external m2m can create orgs, initially add users to org and assign sales plan',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n description:\n 'external m2m can trigger offboarding process for Camunda employees',\n initialRoles: ['accounts:god'],\n },\n {\n value: EXTERNAL_M2M_SEARCH_ORGS,\n description: 'external m2m can search organizations',\n initialRoles: [],\n },\n {\n value: ORG_MAY_CHANGE_LIMITS,\n description: 'may change limits of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:limitExtender',\n ],\n },\n {\n value: ORG_MAY_CHANGE_GENERATION_WHITELIST,\n description: 'may change the generation whitelist of an organization',\n initialRoles: ['accounts:admin', 'accounts:clusterUpdates'],\n },\n {\n value: ORG_CANCEL_PAID,\n description: 'may terminate a running paid organisation',\n initialRoles: ['accounts:admin', 'accounts:enterpriseOffboarding'],\n },\n {\n value: ADMIN_SQL,\n description: 'may query the DB',\n initialRoles: ['accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_READ,\n description: 'may read connections from auth0',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n ],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_CREATE,\n description: 'may create new connections at auth0',\n initialRoles: ['accounts:connections:create', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_UPDATE,\n description: 'may update connections at auth0',\n initialRoles: ['accounts:connections:update', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_DELETE,\n description: 'may delete connections at auth0',\n initialRoles: ['accounts:connections:delete', 'accounts:god'],\n },\n {\n value: MODELER_DELETE_USER,\n description: 'can delete a user within the modeler',\n initialRoles: ['modeler:admin'],\n },\n {\n value: UNBLOCK_USER,\n description: 'can unblock a user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: GOD_CRON,\n description: 'can run cron jobs',\n initialRoles: ['consoleTeam'],\n },\n {\n value: GOD_SIGNUP_SPAM_PATTERNS,\n description: 'can read and change signup spam patterns',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_PURGE_USERS,\n description: 'can purge user records based on create date / name pattern',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_UPDATE_USER_METADATA,\n description: 'can update auth0 user_metadata and app_metadata',\n initialRoles: ['accounts:god'],\n },\n {\n value: FORCE_SALES_PLAN_ON_ORG,\n description: 'can force a sales plan on an org',\n initialRoles: ['consoleTeam'],\n },\n {\n value: CHANGE_SAFE_ROLE,\n description: 'Can assign/unassign safe roles',\n initialRoles: ['accounts:addSafeRoles', 'accounts:consultingManager'],\n },\n {\n value: BOT,\n description: 'Can execute bot commands',\n initialRoles: [],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_READ,\n description: 'may read Alpha Features',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n description: 'may create new Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: PDF_WATERMARK_READ,\n description: 'may read PDF watermark projects and the audit log',\n initialRoles: [\n 'accounts:pdfWatermarkReader',\n 'accounts:pdfWatermarkWriter',\n ],\n },\n {\n value: PDF_WATERMARK_WRITE,\n description: 'may create, update and delete PDF watermark projects',\n initialRoles: ['accounts:pdfWatermarkWriter'],\n },\n {\n value: CONTROL_FLAG_OVERRIDE,\n // Auth0 shows this text to the person who grants the scope, so it\n // names the READ as well. `GET /api/feature-flags` takes this\n // permission and its answer carries the reason for a stage override\n // and the address of whoever asked for it.\n description:\n 'may read every feature flag with its override, and propose and ' +\n 'approve a feature flag override',\n initialRoles: ['consoleTeam'],\n },\n {\n value: CONTROL_FLAG_OVERRIDE_PROD,\n // \"propose AND approve\", because `permissionsFor` puts this on the\n // row and `canCreate` reads the same list: without it a Camundi\n // cannot even OPEN a prod request. Granting it as an approver scope\n // would hand it to the wrong pool.\n description:\n 'may propose and approve a feature flag override on the prod stage',\n // NOT `consoleTeam`, and the empty list is the point. This permission\n // exists to make the pool for a PROD flag change narrower than the\n // pool for dev. Giving it to the same role as `CONTROL_FLAG_OVERRIDE`\n // gave every holder of one the other, thus the narrower pool was a\n // sentence in the documentation and nothing in the code.\n //\n // It is granted one person at a time, until a role exists for it.\n initialRoles: [],\n },\n {\n value: ADMIN_CHANGE_EMAIL,\n description: 'can change the email of an user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_CHANGE_USER_NAME,\n description: 'can change the name of an user',\n initialRoles: ['accounts:admin'],\n },\n ]\n}\n"],
|
|
5
|
-
"mappings": "AAQO,IAAU;AAAA,CAAV,CAAUA,yBAAV;AACE,EAAMA,qBAAA,WAAW;AACjB,EAAMA,qBAAA,aAAa;AACnB,EAAMA,qBAAA,kBAAkB;AACxB,EAAMA,qBAAA,aAAa;AACnB,EAAMA,qBAAA,2BAA2B;AACjC,EAAMA,qBAAA,cAAc;AACpB,EAAMA,qBAAA,4BAA4B;AAClC,EAAMA,qBAAA,aAAa;AACnB,EAAMA,qBAAA,kBAAkB;AACxB,EAAMA,qBAAA,kBAAkB;AACxB,EAAMA,qBAAA,gBAAgB;AACtB,EAAMA,qBAAA,cAAc;AACpB,EAAMA,qBAAA,mBAAmB;AACzB,EAAMA,qBAAA,eAAe;AACrB,EAAMA,qBAAA,mBAAmB;AACzB,EAAMA,qBAAA,oBAAoB;AAC1B,EAAMA,qBAAA,oBAAoB;AAC1B,EAAMA,qBAAA,0BAA0B;AAChC,EAAMA,qBAAA,oBAAoB;AAC1B,EAAMA,qBAAA,oBAAoB;AAC1B,EAAMA,qBAAA,2BAA2B;AACjC,EAAMA,qBAAA,uCAAuC;AAC7C,EAAMA,qBAAA,oCAAoC;AAC1C,EAAMA,qBAAA,2BAA2B;AACjC,EAAMA,qBAAA,wCAAwC;AAC9C,EAAMA,qBAAA,oBAAoB;AAC1B,EAAMA,qBAAA,uBAAuB;AAK7B,EAAMA,qBAAA,yBAAyB;AAE/B,EAAMA,qBAAA,wBAAwB;AAE9B,EAAMA,qBAAA,mCAAmC;AAEzC,EAAMA,qBAAA,kCAAkC;AAExC,EAAMA,qBAAA,+BAA+B;AACrC,EAAMA,qBAAA,2BAA2B;AACjC,EAAMA,qBAAA,6BAA6B;AACnC,EAAMA,qBAAA,gCAAgC;AAEtC,EAAMA,qBAAA,wBAAwB;AAC9B,EAAMA,qBAAA,sCAAsC;AAC5C,EAAMA,qBAAA,kBAAkB;AAExB,EAAMA,qBAAA,YAAY;AAElB,EAAMA,qBAAA,iCAAiC;AACvC,EAAMA,qBAAA,+BAA+B;AACrC,EAAMA,qBAAA,iCAAiC;AACvC,EAAMA,qBAAA,iCAAiC;AACvC,EAAMA,qBAAA,eAAe;AAErB,EAAMA,qBAAA,qBAAqB;AAC3B,EAAMA,qBAAA,yBAAyB;AAE/B,EAAMA,qBAAA,MAAM;AAGZ,EAAMA,qBAAA,sBAAsB;AAE5B,EAAMA,qBAAA,WAAW;AACjB,EAAMA,qBAAA,2BAA2B;AACjC,EAAMA,qBAAA,kBAAkB;AACxB,EAAMA,qBAAA,2BAA2B;AAEjC,EAAMA,qBAAA,mCAAmC;AACzC,EAAMA,qBAAA,qCAAqC;AAC3C,EAAMA,qBAAA,qCAAqC;AAC3C,EAAMA,qBAAA,qCAAqC;AAC3C,EAAMA,qBAAA,qBAAqB;AAC3B,EAAMA,qBAAA,sBAAsB;AAC5B,EAAMA,qBAAA,qBAAqB;AAC3B,EAAMA,qBAAA,0BAA0B;
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { Roles } from '../types/Roles.js'\n\nexport namespace AccountsPermissions {\n export const READ_ALL = 'aara'\n export const CREATE_ORG = 'aaco'\n export const CHANGE_ORG_NAME = 'aacn'\n export const DELETE_ORG = 'aado'\n export const RESET_TOKEN_VERIFICATION = 'aart'\n export const DELETE_USER = 'aadu'\n export const DELETE_NOT_ACTIVATED_USER = 'aadn'\n export const ADD_TO_ORG = 'aaao'\n export const REMOVE_FROM_ORG = 'aaro'\n export const SET_DEFAULT_ORG = 'aasd'\n export const CANCEL_INVITE = 'aaci'\n export const CHANGE_ROLE = 'aacr'\n export const CHANGE_SAFE_ROLE = 'aacs'\n export const EXTEND_TRIAL = 'aaet'\n export const INVALIDATE_TOKEN = 'aait'\n export const SALES_PLAN_CREATE = 'asc'\n export const SALES_PLAN_MODIFY = 'asm'\n export const SALES_PLAN_FORCE_MODIFY = 'asfm'\n export const SALES_PLAN_SWITCH = 'ass'\n export const SALES_PLAN_DELETE = 'asd'\n export const SALES_PLAN_DELETE_AS_GOD = 'asdg'\n export const SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG = 'asar'\n export const SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS = 'asas'\n export const SUPPORT_AGENT_ADD_TO_ORG = 'asaa'\n export const MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS = 'acpm'\n export const M2M_SALESPLAN_GET = 'amsg'\n export const M2M_SALESPLAN_SWITCH = 'amss'\n\n // The routes of `api/admin/approvals` read `ConsolePermissions.M2M_CONTROL_APPROVALS`,\n // the one m2m permission of control-backend for accounts and console.\n\n export const ENTERPRISE_ORG_CONVERT = 'aeoc'\n\n export const ENTERPRISE_ORG_MODIFY = 'aeom'\n\n export const ENTERPRISE_ORG_MODIFY_START_DATE = 'aeos'\n\n export const TRIAL_TO_IN_NEGOTIATION_CONVERT = 'atin'\n\n export const EXTERNAL_M2M_GET_ORG_MEMBERS = 'amog'\n export const EXTERNAL_M2M_SEARCH_ORGS = 'amos'\n export const EXTERNAL_M2M_QA_ORG_CREATE = 'amqc'\n export const EXTERNAL_M2M_OFFBOARD_CAMUNDI = 'amoc'\n\n export const ORG_MAY_CHANGE_LIMITS = 'alc'\n export const ORG_MAY_CHANGE_GENERATION_WHITELIST = 'algw'\n export const ORG_CANCEL_PAID = 'aacp'\n\n export const ADMIN_SQL = 'aasq'\n\n export const ADMIN_AUTH0_CONNECTIONS_CREATE = 'aa0c'\n export const ADMIN_AUTH0_CONNECTIONS_READ = 'aa0r'\n export const ADMIN_AUTH0_CONNECTIONS_UPDATE = 'aa0u'\n export const ADMIN_AUTH0_CONNECTIONS_DELETE = 'aa0d'\n export const UNBLOCK_USER = 'aaub'\n\n export const ADMIN_CHANGE_EMAIL = 'aace'\n export const ADMIN_CHANGE_USER_NAME = 'aacu'\n\n export const BOT = 'abot'\n\n // OBACHT: NOT THIS ONE\n export const MODELER_DELETE_USER = 'mdu'\n\n export const GOD_CRON = 'gcr'\n export const GOD_SIGNUP_SPAM_PATTERNS = 'gsp'\n export const GOD_PURGE_USERS = 'gpu'\n export const GOD_UPDATE_USER_METADATA = 'gum'\n\n export const ADMIN_EARLY_ACCESS_FEATURES_READ = 'aaer'\n export const ADMIN_EARLY_ACCESS_FEATURES_CREATE = 'aaec'\n export const ADMIN_EARLY_ACCESS_FEATURES_DELETE = 'aaed'\n export const ADMIN_EARLY_ACCESS_FEATURES_UPDATE = 'aaeu'\n export const PDF_WATERMARK_READ = 'awmr'\n export const PDF_WATERMARK_WRITE = 'awmw'\n export const ROLE_SUPPORT_AGENT = 'support:agent'\n export const FORCE_SALES_PLAN_ON_ORG = 'aafs'\n\n export interface Features {\n admin: {\n readAll: boolean\n createOrg: boolean\n changeOrgName: boolean\n deleteOrg: boolean\n resetTokenVerification: boolean\n deleteUser: boolean\n deleteNotActivatedUser: boolean\n addToOrg: boolean\n removeFromOrg: boolean\n setDefaultOrg: boolean\n cancelInvite: boolean\n changeRole: boolean\n addSafeRole: boolean\n deleteClusters: boolean\n extendTrial: boolean\n invalidateToken: boolean\n cancelPaid: boolean\n searchForOrgs: boolean\n readAudit: boolean\n modifyClusterPlanTypeReservations: boolean\n mayChangeOrgLimits: boolean\n mayChangeGenerationWhiteList: boolean\n sql: boolean\n modelerDeleteUser: boolean\n unblockUser: boolean\n god: {\n triggerCrons: boolean\n forceSalesPlanOnOrg: boolean\n changeSignupSpamPatterns: boolean\n purgeUsers: boolean\n updateUserMetadata: boolean\n }\n bot: boolean\n changeEmail: boolean\n changeUserName: boolean\n }\n salesPlan: {\n create: boolean\n modify: boolean\n forceModify: boolean\n switch: boolean\n delete: boolean\n godDelete: boolean\n }\n enterprise: {\n org: {\n convert: boolean\n modify: boolean\n modifyStartDate: boolean\n }\n }\n trial: {\n convertToInNegotiation: boolean\n }\n supportAgent: {\n removeAgentsFromOrg: boolean\n seeOrgMemberships: boolean\n addAgentsToOrg: boolean\n }\n m2m: {\n salesplan: {\n get: boolean\n switch: boolean\n }\n\n fetchMigrationData: boolean\n /** Every route of `api/admin/approvals`. See `M2M_CONTROL_APPROVALS`. */\n approvals: boolean\n }\n externalM2m: {\n org: {\n members: {\n get: boolean\n }\n search: boolean\n }\n qa: {\n org: {\n create: boolean\n }\n }\n offboarding: {\n camundi: boolean\n }\n }\n auth0: {\n connections: {\n create: boolean\n read: boolean\n update: boolean\n delete: boolean\n }\n }\n notifications: {\n global: {\n read: boolean\n delete: boolean\n create: boolean\n }\n }\n earlyAccessFeatures: {\n read: boolean\n create: boolean\n delete: boolean\n update: boolean\n }\n pdfWatermark: {\n read: boolean\n write: boolean\n }\n }\n\n export function createEmptyFeatures(): Features {\n return {\n admin: {\n readAll: false,\n createOrg: false,\n changeOrgName: false,\n deleteOrg: false,\n resetTokenVerification: false,\n deleteUser: false,\n deleteNotActivatedUser: false,\n addToOrg: false,\n removeFromOrg: false,\n setDefaultOrg: false,\n cancelInvite: false,\n changeRole: false,\n addSafeRole: false,\n deleteClusters: false,\n extendTrial: false,\n invalidateToken: false,\n cancelPaid: false,\n searchForOrgs: false,\n readAudit: false,\n modifyClusterPlanTypeReservations: false,\n mayChangeOrgLimits: false,\n mayChangeGenerationWhiteList: false,\n sql: false,\n modelerDeleteUser: false,\n unblockUser: false,\n god: {\n triggerCrons: false,\n forceSalesPlanOnOrg: false,\n changeSignupSpamPatterns: false,\n purgeUsers: false,\n updateUserMetadata: false,\n },\n bot: false,\n changeEmail: false,\n changeUserName: false,\n },\n salesPlan: {\n create: false,\n modify: false,\n forceModify: false,\n switch: false,\n delete: false,\n godDelete: false,\n },\n enterprise: {\n org: { convert: false, modify: false, modifyStartDate: false },\n },\n trial: {\n convertToInNegotiation: false,\n },\n supportAgent: {\n removeAgentsFromOrg: false,\n seeOrgMemberships: false,\n addAgentsToOrg: false,\n },\n m2m: {\n salesplan: {\n get: false,\n switch: false,\n },\n fetchMigrationData: false,\n approvals: false,\n },\n externalM2m: {\n org: {\n members: {\n get: false,\n },\n search: false,\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: false,\n },\n },\n offboarding: {\n camundi: false,\n },\n },\n auth0: {\n connections: {\n create: false,\n read: false,\n update: false,\n delete: false,\n },\n },\n notifications: {\n global: {\n read: false,\n delete: false,\n create: false,\n },\n },\n earlyAccessFeatures: {\n read: false,\n create: false,\n delete: false,\n update: false,\n },\n pdfWatermark: {\n read: false,\n write: false,\n },\n }\n }\n\n export const PermissionsAtAuth0: Array<{\n value: string\n description: string\n initialRoles: Roles[]\n }> = [\n {\n value: READ_ALL,\n description: 'read access to all orgs and users',\n initialRoles: [\n 'accounts:read',\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:editSalesPlans',\n 'console:admin',\n 'console:admin:readonly',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:trialExtender',\n 'accounts:limitExtender',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n 'console:C8ReleaseManager',\n 'console:C8UpdateEnforcer',\n 'accounts:addSafeRoles',\n 'accounts:consultingManager',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: CREATE_ORG,\n description: 'can create organisations',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ORG_NAME,\n description: 'can change name of organisations',\n initialRoles: [\n 'accounts:admin',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_ORG,\n description: 'can delete organisations',\n initialRoles: ['accounts:admin'],\n },\n {\n value: RESET_TOKEN_VERIFICATION,\n description: 'can reset a verification token of a pending user',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: DELETE_USER,\n description: 'can delete users',\n initialRoles: ['accounts:god'],\n },\n {\n value: DELETE_NOT_ACTIVATED_USER,\n description: 'can delete users that are not activated yet',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ADD_TO_ORG,\n description: 'can add someone to an org',\n initialRoles: [\n 'accounts:onboard',\n 'accounts:orgCreator',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: REMOVE_FROM_ORG,\n description: 'can remove someone from an org',\n initialRoles: [\n 'accounts:admin',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: SET_DEFAULT_ORG,\n description: 'can set an org as default for any user',\n initialRoles: [\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:onboard',\n ],\n },\n {\n value: CANCEL_INVITE,\n description: 'can cancelpending invites',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: CHANGE_ROLE,\n description: 'can change the role of a user',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n 'supersupport:agent',\n ],\n },\n {\n value: EXTEND_TRIAL,\n description: 'can extend the trial period of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:trialExtender',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: INVALIDATE_TOKEN,\n description: 'can invalidate tokens in TokenIssuer',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_CREATE,\n description: 'can create a SalesPlan',\n initialRoles: ['accounts:admin'],\n },\n {\n value: SALES_PLAN_MODIFY,\n description: 'can modify a SalesPlan',\n initialRoles: ['accounts:admin', 'accounts:editSalesPlans'],\n },\n {\n value: SALES_PLAN_FORCE_MODIFY,\n description:\n 'can force modify a SalesPlan without caring about the orgs actual reservations/cluster usage',\n initialRoles: [],\n },\n {\n value: SALES_PLAN_SWITCH,\n description: 'can switch an organization to another SalesPlan',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseOffboarding',\n 'accounts:consultingManager',\n ],\n },\n {\n value: SALES_PLAN_DELETE,\n description:\n 'can delete a SalesPlan if it is not used by any Organization',\n initialRoles: ['accounts:admin'],\n },\n\n {\n value: SALES_PLAN_DELETE_AS_GOD,\n description: `can delete salesplans even if there is no replacement salesplan for this type. use with great caution`,\n initialRoles: [],\n },\n {\n value: SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n description: 'can remove support agents from organizations',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n description: 'can see all org memberships of support agents',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: SUPPORT_AGENT_ADD_TO_ORG,\n description: 'can add users as support agent to an organization',\n initialRoles: ['support:agent', 'supersupport:agent'],\n },\n {\n value: MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n description: 'can modify cluster plan type reservations of an org',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_GET,\n description: 'm2m can get salesplans',\n initialRoles: [],\n },\n {\n value: M2M_SALESPLAN_SWITCH,\n description: 'm2m can switch salesplans',\n initialRoles: [],\n },\n {\n value: ENTERPRISE_ORG_CONVERT,\n description: 'can convert orgs to enterprise plans',\n initialRoles: [\n 'accounts:admin',\n 'accounts:onboard',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY,\n description:\n 'can modify value metrics and contract duration of enterprise orgs',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:enterpriseOffboarding',\n ],\n },\n {\n value: ENTERPRISE_ORG_MODIFY_START_DATE,\n description: 'can modify start date of enterprise orgs',\n initialRoles: [\n 'accounts:god',\n 'accounts:enterpriseOffboarding',\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n ],\n },\n {\n value: TRIAL_TO_IN_NEGOTIATION_CONVERT,\n description: 'can convert trial orgs to in-negotiation plans',\n initialRoles: ['accounts:admin', 'accounts:enterpriseAdmin'],\n },\n {\n value: EXTERNAL_M2M_GET_ORG_MEMBERS,\n description: 'external m2m can get all members of all orgs',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_QA_ORG_CREATE,\n description:\n 'external m2m can create orgs, initially add users to org and assign sales plan',\n initialRoles: [],\n },\n {\n value: EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n description:\n 'external m2m can trigger offboarding process for Camunda employees',\n initialRoles: ['accounts:god'],\n },\n {\n value: EXTERNAL_M2M_SEARCH_ORGS,\n description: 'external m2m can search organizations',\n initialRoles: [],\n },\n {\n value: ORG_MAY_CHANGE_LIMITS,\n description: 'may change limits of an organization',\n initialRoles: [\n 'accounts:admin',\n 'accounts:enterpriseAdmin',\n 'accounts:limitExtender',\n ],\n },\n {\n value: ORG_MAY_CHANGE_GENERATION_WHITELIST,\n description: 'may change the generation whitelist of an organization',\n initialRoles: ['accounts:admin', 'accounts:clusterUpdates'],\n },\n {\n value: ORG_CANCEL_PAID,\n description: 'may terminate a running paid organisation',\n initialRoles: ['accounts:admin', 'accounts:enterpriseOffboarding'],\n },\n {\n value: ADMIN_SQL,\n description: 'may query the DB',\n initialRoles: ['accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_READ,\n description: 'may read connections from auth0',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n ],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_CREATE,\n description: 'may create new connections at auth0',\n initialRoles: ['accounts:connections:create', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_UPDATE,\n description: 'may update connections at auth0',\n initialRoles: ['accounts:connections:update', 'accounts:god'],\n },\n {\n value: ADMIN_AUTH0_CONNECTIONS_DELETE,\n description: 'may delete connections at auth0',\n initialRoles: ['accounts:connections:delete', 'accounts:god'],\n },\n {\n value: MODELER_DELETE_USER,\n description: 'can delete a user within the modeler',\n initialRoles: ['modeler:admin'],\n },\n {\n value: UNBLOCK_USER,\n description: 'can unblock a user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: GOD_CRON,\n description: 'can run cron jobs',\n initialRoles: ['consoleTeam'],\n },\n {\n value: GOD_SIGNUP_SPAM_PATTERNS,\n description: 'can read and change signup spam patterns',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_PURGE_USERS,\n description: 'can purge user records based on create date / name pattern',\n initialRoles: ['consoleTeam', 'accounts:god'],\n },\n {\n value: GOD_UPDATE_USER_METADATA,\n description: 'can update auth0 user_metadata and app_metadata',\n initialRoles: ['accounts:god'],\n },\n {\n value: FORCE_SALES_PLAN_ON_ORG,\n description: 'can force a sales plan on an org',\n initialRoles: ['consoleTeam'],\n },\n {\n value: CHANGE_SAFE_ROLE,\n description: 'Can assign/unassign safe roles',\n initialRoles: ['accounts:addSafeRoles', 'accounts:consultingManager'],\n },\n {\n value: BOT,\n description: 'Can execute bot commands',\n initialRoles: [],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_READ,\n description: 'may read Alpha Features',\n initialRoles: [\n 'accounts:read',\n 'accounts:orgCreator',\n 'support:agent',\n 'supersupport:agent',\n 'accounts:admin',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n description: 'may create new Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n description: 'may delete Alpha Features',\n initialRoles: [\n 'accounts:admin',\n 'accounts:god',\n 'accounts:earlyAccessEditor',\n ],\n },\n {\n value: PDF_WATERMARK_READ,\n description: 'may read PDF watermark projects and the audit log',\n initialRoles: [\n 'accounts:pdfWatermarkReader',\n 'accounts:pdfWatermarkWriter',\n ],\n },\n {\n value: PDF_WATERMARK_WRITE,\n description: 'may create, update and delete PDF watermark projects',\n initialRoles: ['accounts:pdfWatermarkWriter'],\n },\n {\n value: ADMIN_CHANGE_EMAIL,\n description: 'can change the email of an user',\n initialRoles: ['accounts:admin'],\n },\n {\n value: ADMIN_CHANGE_USER_NAME,\n description: 'can change the name of an user',\n initialRoles: ['accounts:admin'],\n },\n ]\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["AccountsPermissions"]
|
|
7
7
|
}
|
|
@@ -181,12 +181,6 @@ function accountsUserFeaturesFromPermissions(permissions) {
|
|
|
181
181
|
pdfWatermark: {
|
|
182
182
|
read: permissions.includes(AccountsPermissions.PDF_WATERMARK_READ),
|
|
183
183
|
write: permissions.includes(AccountsPermissions.PDF_WATERMARK_WRITE)
|
|
184
|
-
},
|
|
185
|
-
featureFlags: {
|
|
186
|
-
override: permissions.includes(AccountsPermissions.CONTROL_FLAG_OVERRIDE),
|
|
187
|
-
overrideProd: permissions.includes(
|
|
188
|
-
AccountsPermissions.CONTROL_FLAG_OVERRIDE_PROD
|
|
189
|
-
)
|
|
190
184
|
}
|
|
191
185
|
};
|
|
192
186
|
return newFeatures;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/permissions/combo.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport { AccountsPermissions } from './accounts.permissions.js'\nimport { AuditLoggerPermissions } from './auditlogger.permissions.js'\nimport { ConsolePermissions } from './console.permissions.js'\nimport { NotificationPermissions } from './notification.permissions.js'\n\nexport function accountsUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: AccountsPermissions.Features = {\n admin: {\n readAll: permissions.includes(AccountsPermissions.READ_ALL),\n createOrg: permissions.includes(AccountsPermissions.CREATE_ORG),\n changeOrgName: permissions.includes(AccountsPermissions.CHANGE_ORG_NAME),\n\n deleteOrg: permissions.includes(AccountsPermissions.DELETE_ORG),\n resetTokenVerification: permissions.includes(\n AccountsPermissions.RESET_TOKEN_VERIFICATION,\n ),\n deleteUser: permissions.includes(AccountsPermissions.DELETE_USER),\n deleteNotActivatedUser: permissions.includes(\n AccountsPermissions.DELETE_NOT_ACTIVATED_USER,\n ),\n addToOrg: permissions.includes(AccountsPermissions.ADD_TO_ORG),\n removeFromOrg: permissions.includes(AccountsPermissions.REMOVE_FROM_ORG),\n setDefaultOrg: permissions.includes(AccountsPermissions.SET_DEFAULT_ORG),\n cancelInvite: permissions.includes(AccountsPermissions.CANCEL_INVITE),\n changeRole: permissions.includes(AccountsPermissions.CHANGE_ROLE),\n addSafeRole: permissions.includes(AccountsPermissions.CHANGE_SAFE_ROLE),\n deleteClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n extendTrial: permissions.includes(AccountsPermissions.EXTEND_TRIAL),\n invalidateToken: permissions.includes(\n AccountsPermissions.INVALIDATE_TOKEN,\n ),\n cancelPaid: permissions.includes(AccountsPermissions.ORG_CANCEL_PAID),\n searchForOrgs: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_SEE_ALL,\n ),\n readAudit: permissions.includes(AuditLoggerPermissions.READ),\n modifyClusterPlanTypeReservations: permissions.includes(\n AccountsPermissions.MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n ),\n mayChangeOrgLimits: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_LIMITS,\n ),\n mayChangeGenerationWhiteList: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_GENERATION_WHITELIST,\n ),\n sql: permissions.includes(AccountsPermissions.ADMIN_SQL),\n modelerDeleteUser: permissions.includes(\n AccountsPermissions.MODELER_DELETE_USER,\n ),\n unblockUser: permissions.includes(AccountsPermissions.UNBLOCK_USER),\n god: {\n triggerCrons: permissions.includes(AccountsPermissions.GOD_CRON),\n forceSalesPlanOnOrg: permissions.includes(\n AccountsPermissions.FORCE_SALES_PLAN_ON_ORG,\n ),\n changeSignupSpamPatterns: permissions.includes(\n AccountsPermissions.GOD_SIGNUP_SPAM_PATTERNS,\n ),\n purgeUsers: permissions.includes(AccountsPermissions.GOD_PURGE_USERS),\n updateUserMetadata: permissions.includes(\n AccountsPermissions.GOD_UPDATE_USER_METADATA,\n ),\n },\n bot: permissions.includes(AccountsPermissions.BOT),\n changeEmail: permissions.includes(AccountsPermissions.ADMIN_CHANGE_EMAIL),\n changeUserName: permissions.includes(\n AccountsPermissions.ADMIN_CHANGE_USER_NAME,\n ),\n },\n salesPlan: {\n create: permissions.includes(AccountsPermissions.SALES_PLAN_CREATE),\n modify: permissions.includes(AccountsPermissions.SALES_PLAN_MODIFY),\n forceModify: permissions.includes(\n AccountsPermissions.SALES_PLAN_FORCE_MODIFY,\n ),\n switch: permissions.includes(AccountsPermissions.SALES_PLAN_SWITCH),\n delete: permissions.includes(AccountsPermissions.SALES_PLAN_DELETE),\n godDelete: permissions.includes(\n AccountsPermissions.SALES_PLAN_DELETE_AS_GOD,\n ),\n },\n enterprise: {\n org: {\n convert: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_CONVERT,\n ),\n modify: permissions.includes(AccountsPermissions.ENTERPRISE_ORG_MODIFY),\n modifyStartDate: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_MODIFY_START_DATE,\n ),\n },\n },\n trial: {\n convertToInNegotiation: permissions.includes(\n AccountsPermissions.TRIAL_TO_IN_NEGOTIATION_CONVERT,\n ),\n },\n supportAgent: {\n removeAgentsFromOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n ),\n seeOrgMemberships: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n ),\n addAgentsToOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_ADD_TO_ORG,\n ),\n },\n m2m: {\n salesplan: {\n get: permissions.includes(AccountsPermissions.M2M_SALESPLAN_GET),\n switch: permissions.includes(AccountsPermissions.M2M_SALESPLAN_SWITCH),\n },\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n },\n externalM2m: {\n org: {\n members: {\n get: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_GET_ORG_MEMBERS,\n ),\n },\n search: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_SEARCH_ORGS,\n ),\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_QA_ORG_CREATE,\n ),\n },\n },\n offboarding: {\n camundi: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n ),\n },\n },\n auth0: {\n connections: {\n create: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_CREATE,\n ),\n read: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_READ,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_UPDATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_DELETE,\n ),\n },\n },\n notifications: {\n global: {\n read: permissions.includes(NotificationPermissions.READ_GLOBAL),\n delete: permissions.includes(NotificationPermissions.DELETE_GLOBAL),\n create: permissions.includes(NotificationPermissions.CREATE_GLOBAL),\n },\n },\n earlyAccessFeatures: {\n read: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_READ,\n ),\n create: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n ),\n },\n pdfWatermark: {\n read: permissions.includes(AccountsPermissions.PDF_WATERMARK_READ),\n write: permissions.includes(AccountsPermissions.PDF_WATERMARK_WRITE),\n },\n featureFlags: {\n override: permissions.includes(AccountsPermissions.CONTROL_FLAG_OVERRIDE),\n overrideProd: permissions.includes(\n AccountsPermissions.CONTROL_FLAG_OVERRIDE_PROD,\n ),\n },\n }\n return newFeatures\n}\n\nexport function consoleUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: ConsolePermissions.Features = {\n apiClient: {\n read: permissions.includes(ConsolePermissions.APICLIENT_READ),\n delete: permissions.includes(ConsolePermissions.APICLIENT_DELETE),\n },\n multiCluster: {\n admin: permissions.includes(ConsolePermissions.MULTICLUSTER_ADMIN),\n },\n multiGen: {\n admin: {\n see: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_SEE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN,\n ),\n patchExistingChannel: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_PATCH_EXISTING_CHANNEL,\n ),\n migrate: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_MIGRATE,\n ),\n deleteAllClustersOfGeneration: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_DELETE_ALL_CLUSTERS,\n ),\n },\n releaseTrain: {\n publish: permissions.includes(ConsolePermissions.RELEASE_TRAIN_PUBLISH),\n },\n },\n clusters: {\n canReadAllClusterInfo: permissions.includes(\n ConsolePermissions.CLUSTERS_READALLCLUSTERINFO,\n ),\n canDeleteAllClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n canMoveToOtherOrg: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_MOVE_TO_OTHER_ORG,\n ),\n createOnBehalf: permissions.includes(\n ConsolePermissions.CLUSTER_CREATE_ON_BEHALF,\n ),\n canSendToSleep: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_SEND_TO_SLEEP,\n ),\n canCreateInternalBackup: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_INTERNAL_BACKUP,\n ),\n canUpdateClusterPlanType: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_CLUSTERPLANTYPE,\n ),\n canOverrideEnvVars: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_OVERRIDE_ENV_VARS,\n ),\n canCreateModificationConfig: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_MODIFICATION_CONFIG,\n ),\n canUpgradeGeneration: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION,\n ),\n canUpgradeGenerationYolo: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION_YOLO,\n ),\n canUpdateOptionalTelemetry: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_OPTIONAL_TELEMETRY,\n ),\n },\n clusterPlan: {\n seeAll: permissions.includes(ConsolePermissions.CLUSTER_PLAN_SEE_ALL),\n create: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CREATE),\n delete: permissions.includes(ConsolePermissions.CLUSTER_PLAN_DELETE),\n type: {\n create: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_CREATE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_MODIFY,\n ),\n delete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_DELETE,\n ),\n forceDelete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_FORCE_DELETE,\n ),\n },\n migrate: permissions.includes(ConsolePermissions.CLUSTER_PLAN_MIGRATE),\n deleteAllClustersOfPlan: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_CAN_DELETE_ALL_CLUSTERS_OF_PLAN,\n ),\n modify: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CAN_MODIFY),\n },\n features: {\n newHome: permissions.includes(ConsolePermissions.FEATURE_NEW_HOME),\n templatePicker: permissions.includes(\n ConsolePermissions.FEATURE_TEMPLATE_PICKER,\n ),\n userSettings: permissions.includes(ConsolePermissions.USER_SETTINGS),\n debug: permissions.includes(ConsolePermissions.DEBUG),\n },\n m2m: {\n updateCrd: permissions.includes(ConsolePermissions.M2M_UPDATE_CRD),\n signup: permissions.includes(ConsolePermissions.M2M_SIGNUP),\n triggerAlert: permissions.includes(ConsolePermissions.M2M_TRIGGER_ALERT),\n deleteOrgClusters: permissions.includes(\n ConsolePermissions.M2M_DELETE_ORG_CLUSTERS,\n ),\n updateOrgClusters: permissions.includes(\n ConsolePermissions.M2M_UPDATE_ORG_CLUSTERS,\n ),\n addUsageMetrics: permissions.includes(\n ConsolePermissions.M2M_ADD_CLUSTER_USAGE_METRICS,\n ),\n sendSseEvent: permissions.includes(ConsolePermissions.M2M_SEND_SSE_EVENT),\n external: {\n internalClient: permissions.includes(\n ConsolePermissions.M2M_EXTERNAL_INTERNAL_CLIENT,\n ),\n },\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n manageGenerationUpgradePath: permissions.includes(\n ConsolePermissions.M2M_MANAGE_GENERATION_UPGRADE_PATH,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n },\n }\n return newFeatures\n}\n\n/**\n * Flattens a feature tree into the dotted keys of the Control session.\n *\n * `buildSession` in accounts-backend writes the session with exactly this\n * shape, under the prefixes `` (accounts), `console` and `notifications`.\n */\nfunction flattenFeatureBooleans(\n value: unknown,\n prefix = '',\n): Record<string, boolean> {\n const out: Record<string, boolean> = {}\n if (!value || typeof value !== 'object') {\n return out\n }\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n const flatKey = prefix ? `${prefix}.${key}` : key\n if (typeof entry === 'boolean') {\n out[flatKey] = entry\n } else if (entry && typeof entry === 'object') {\n Object.assign(out, flattenFeatureBooleans(entry, flatKey))\n }\n }\n return out\n}\n\n/**\n * The session keys that ONE raw Auth0 permission turns on.\n *\n * The Control session holds a flat record of feature booleans, such as\n * `admin.extendTrial` and `console.clusters.canUpgradeGenerationYolo`. An\n * approval use case names the raw Auth0 short code instead, such as `aaet`,\n * because that is what the token carries and what a backend compares.\n *\n * This function bridges the two, and it bridges them by RUNNING the same\n * mappers that build the session. A hand-written table of code to key would be\n * a third copy of the permission model, and a code that gained a key would\n * silently stop gating anything in the browser.\n *\n * It answers an array, because one code can turn on more than one key. An\n * unknown code answers an empty array, and the caller decides what that means.\n *\n * The answer is CACHED, because the work is three feature trees and a flatten\n * of each one. `ApprovalActorView.has` of the browser runs this, and the rules\n * call `has` for every row of the queue: a page of 2000 requests turned one\n * cheap question into thousands of tree builds. The answer of a code never\n * changes inside one bundle, so the cache needs no invalidation, and the keys\n * are the permission codes of the use cases, which is a short list.\n *\n * The answer is `readonly`, and frozen, because every caller of one code gets\n * the SAME array: a caller that sorted or pushed in place would change what\n * the next reader of that code sees.\n */\nconst keysByPermissionCode = new Map<string, readonly string[]>()\n\nexport function sessionPermissionKeysFor(\n permissionCode: string,\n): readonly string[] {\n const cached = keysByPermissionCode.get(permissionCode)\n if (cached) {\n return cached\n }\n const answer = Object.freeze(buildSessionPermissionKeys(permissionCode))\n keysByPermissionCode.set(permissionCode, answer)\n return answer\n}\n\nfunction buildSessionPermissionKeys(permissionCode: string): string[] {\n const trees: [unknown, string][] = [\n [accountsUserFeaturesFromPermissions([permissionCode]), ''],\n [consoleUserFeaturesFromPermissions([permissionCode]), 'console'],\n [\n NotificationPermissions.userFeaturesFromPermissions([permissionCode]),\n 'notifications',\n ],\n ]\n const keys: string[] = []\n for (const [tree, prefix] of trees) {\n for (const [key, on] of Object.entries(\n flattenFeatureBooleans(tree, prefix),\n )) {\n if (on) {\n keys.push(key)\n }\n }\n }\n return keys\n}\n\n/**\n * Reports whether a Control session holds one raw Auth0 permission.\n *\n * It is what `ApprovalActorView.has` runs in the browser. An unknown code\n * answers false: a permission that nothing maps is a permission that nobody\n * holds, and the alternative would open a button that the backend refuses.\n */\nexport function sessionHasPermission(\n sessionPermissions: Record<string, boolean>,\n permissionCode: string,\n): boolean {\n return sessionPermissionKeysFor(permissionCode).some(\n (key) => sessionPermissions[key] === true,\n )\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport { AccountsPermissions } from './accounts.permissions.js'\nimport { AuditLoggerPermissions } from './auditlogger.permissions.js'\nimport { ConsolePermissions } from './console.permissions.js'\nimport { NotificationPermissions } from './notification.permissions.js'\n\nexport function accountsUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: AccountsPermissions.Features = {\n admin: {\n readAll: permissions.includes(AccountsPermissions.READ_ALL),\n createOrg: permissions.includes(AccountsPermissions.CREATE_ORG),\n changeOrgName: permissions.includes(AccountsPermissions.CHANGE_ORG_NAME),\n\n deleteOrg: permissions.includes(AccountsPermissions.DELETE_ORG),\n resetTokenVerification: permissions.includes(\n AccountsPermissions.RESET_TOKEN_VERIFICATION,\n ),\n deleteUser: permissions.includes(AccountsPermissions.DELETE_USER),\n deleteNotActivatedUser: permissions.includes(\n AccountsPermissions.DELETE_NOT_ACTIVATED_USER,\n ),\n addToOrg: permissions.includes(AccountsPermissions.ADD_TO_ORG),\n removeFromOrg: permissions.includes(AccountsPermissions.REMOVE_FROM_ORG),\n setDefaultOrg: permissions.includes(AccountsPermissions.SET_DEFAULT_ORG),\n cancelInvite: permissions.includes(AccountsPermissions.CANCEL_INVITE),\n changeRole: permissions.includes(AccountsPermissions.CHANGE_ROLE),\n addSafeRole: permissions.includes(AccountsPermissions.CHANGE_SAFE_ROLE),\n deleteClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n extendTrial: permissions.includes(AccountsPermissions.EXTEND_TRIAL),\n invalidateToken: permissions.includes(\n AccountsPermissions.INVALIDATE_TOKEN,\n ),\n cancelPaid: permissions.includes(AccountsPermissions.ORG_CANCEL_PAID),\n searchForOrgs: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_SEE_ALL,\n ),\n readAudit: permissions.includes(AuditLoggerPermissions.READ),\n modifyClusterPlanTypeReservations: permissions.includes(\n AccountsPermissions.MODIFY_CLUSTER_PLAN_TYPE_RESERVATIONS,\n ),\n mayChangeOrgLimits: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_LIMITS,\n ),\n mayChangeGenerationWhiteList: permissions.includes(\n AccountsPermissions.ORG_MAY_CHANGE_GENERATION_WHITELIST,\n ),\n sql: permissions.includes(AccountsPermissions.ADMIN_SQL),\n modelerDeleteUser: permissions.includes(\n AccountsPermissions.MODELER_DELETE_USER,\n ),\n unblockUser: permissions.includes(AccountsPermissions.UNBLOCK_USER),\n god: {\n triggerCrons: permissions.includes(AccountsPermissions.GOD_CRON),\n forceSalesPlanOnOrg: permissions.includes(\n AccountsPermissions.FORCE_SALES_PLAN_ON_ORG,\n ),\n changeSignupSpamPatterns: permissions.includes(\n AccountsPermissions.GOD_SIGNUP_SPAM_PATTERNS,\n ),\n purgeUsers: permissions.includes(AccountsPermissions.GOD_PURGE_USERS),\n updateUserMetadata: permissions.includes(\n AccountsPermissions.GOD_UPDATE_USER_METADATA,\n ),\n },\n bot: permissions.includes(AccountsPermissions.BOT),\n changeEmail: permissions.includes(AccountsPermissions.ADMIN_CHANGE_EMAIL),\n changeUserName: permissions.includes(\n AccountsPermissions.ADMIN_CHANGE_USER_NAME,\n ),\n },\n salesPlan: {\n create: permissions.includes(AccountsPermissions.SALES_PLAN_CREATE),\n modify: permissions.includes(AccountsPermissions.SALES_PLAN_MODIFY),\n forceModify: permissions.includes(\n AccountsPermissions.SALES_PLAN_FORCE_MODIFY,\n ),\n switch: permissions.includes(AccountsPermissions.SALES_PLAN_SWITCH),\n delete: permissions.includes(AccountsPermissions.SALES_PLAN_DELETE),\n godDelete: permissions.includes(\n AccountsPermissions.SALES_PLAN_DELETE_AS_GOD,\n ),\n },\n enterprise: {\n org: {\n convert: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_CONVERT,\n ),\n modify: permissions.includes(AccountsPermissions.ENTERPRISE_ORG_MODIFY),\n modifyStartDate: permissions.includes(\n AccountsPermissions.ENTERPRISE_ORG_MODIFY_START_DATE,\n ),\n },\n },\n trial: {\n convertToInNegotiation: permissions.includes(\n AccountsPermissions.TRIAL_TO_IN_NEGOTIATION_CONVERT,\n ),\n },\n supportAgent: {\n removeAgentsFromOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_REMOVE_AGENTS_FROM_ORG,\n ),\n seeOrgMemberships: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_SEE_ORG_MEMBERSHIPS,\n ),\n addAgentsToOrg: permissions.includes(\n AccountsPermissions.SUPPORT_AGENT_ADD_TO_ORG,\n ),\n },\n m2m: {\n salesplan: {\n get: permissions.includes(AccountsPermissions.M2M_SALESPLAN_GET),\n switch: permissions.includes(AccountsPermissions.M2M_SALESPLAN_SWITCH),\n },\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n },\n externalM2m: {\n org: {\n members: {\n get: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_GET_ORG_MEMBERS,\n ),\n },\n search: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_SEARCH_ORGS,\n ),\n },\n // eslint-disable-next-line id-length\n qa: {\n org: {\n create: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_QA_ORG_CREATE,\n ),\n },\n },\n offboarding: {\n camundi: permissions.includes(\n AccountsPermissions.EXTERNAL_M2M_OFFBOARD_CAMUNDI,\n ),\n },\n },\n auth0: {\n connections: {\n create: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_CREATE,\n ),\n read: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_READ,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_UPDATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_AUTH0_CONNECTIONS_DELETE,\n ),\n },\n },\n notifications: {\n global: {\n read: permissions.includes(NotificationPermissions.READ_GLOBAL),\n delete: permissions.includes(NotificationPermissions.DELETE_GLOBAL),\n create: permissions.includes(NotificationPermissions.CREATE_GLOBAL),\n },\n },\n earlyAccessFeatures: {\n read: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_READ,\n ),\n create: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_CREATE,\n ),\n delete: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_DELETE,\n ),\n update: permissions.includes(\n AccountsPermissions.ADMIN_EARLY_ACCESS_FEATURES_UPDATE,\n ),\n },\n pdfWatermark: {\n read: permissions.includes(AccountsPermissions.PDF_WATERMARK_READ),\n write: permissions.includes(AccountsPermissions.PDF_WATERMARK_WRITE),\n },\n }\n return newFeatures\n}\n\nexport function consoleUserFeaturesFromPermissions(permissions: string[]) {\n const newFeatures: ConsolePermissions.Features = {\n apiClient: {\n read: permissions.includes(ConsolePermissions.APICLIENT_READ),\n delete: permissions.includes(ConsolePermissions.APICLIENT_DELETE),\n },\n multiCluster: {\n admin: permissions.includes(ConsolePermissions.MULTICLUSTER_ADMIN),\n },\n multiGen: {\n admin: {\n see: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_SEE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN,\n ),\n patchExistingChannel: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_PATCH_EXISTING_CHANNEL,\n ),\n migrate: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_MIGRATE,\n ),\n deleteAllClustersOfGeneration: permissions.includes(\n ConsolePermissions.CHANNELS_AND_GENERATIONS_ADMIN_DELETE_ALL_CLUSTERS,\n ),\n },\n releaseTrain: {\n publish: permissions.includes(ConsolePermissions.RELEASE_TRAIN_PUBLISH),\n },\n },\n clusters: {\n canReadAllClusterInfo: permissions.includes(\n ConsolePermissions.CLUSTERS_READALLCLUSTERINFO,\n ),\n canDeleteAllClusters: permissions.includes(\n ConsolePermissions.CLUSTERS_DELETE_CLUSTER,\n ),\n canMoveToOtherOrg: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_MOVE_TO_OTHER_ORG,\n ),\n createOnBehalf: permissions.includes(\n ConsolePermissions.CLUSTER_CREATE_ON_BEHALF,\n ),\n canSendToSleep: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_SEND_TO_SLEEP,\n ),\n canCreateInternalBackup: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_INTERNAL_BACKUP,\n ),\n canUpdateClusterPlanType: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_CLUSTERPLANTYPE,\n ),\n canOverrideEnvVars: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_OVERRIDE_ENV_VARS,\n ),\n canCreateModificationConfig: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_CREATE_MODIFICATION_CONFIG,\n ),\n canUpgradeGeneration: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION,\n ),\n canUpgradeGenerationYolo: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_GENERATION_YOLO,\n ),\n canUpdateOptionalTelemetry: permissions.includes(\n ConsolePermissions.CLUSTERS_CAN_UPDATE_OPTIONAL_TELEMETRY,\n ),\n },\n clusterPlan: {\n seeAll: permissions.includes(ConsolePermissions.CLUSTER_PLAN_SEE_ALL),\n create: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CREATE),\n delete: permissions.includes(ConsolePermissions.CLUSTER_PLAN_DELETE),\n type: {\n create: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_CREATE,\n ),\n modify: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_MODIFY,\n ),\n delete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_DELETE,\n ),\n forceDelete: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_TYPE_FORCE_DELETE,\n ),\n },\n migrate: permissions.includes(ConsolePermissions.CLUSTER_PLAN_MIGRATE),\n deleteAllClustersOfPlan: permissions.includes(\n ConsolePermissions.CLUSTER_PLAN_CAN_DELETE_ALL_CLUSTERS_OF_PLAN,\n ),\n modify: permissions.includes(ConsolePermissions.CLUSTER_PLAN_CAN_MODIFY),\n },\n features: {\n newHome: permissions.includes(ConsolePermissions.FEATURE_NEW_HOME),\n templatePicker: permissions.includes(\n ConsolePermissions.FEATURE_TEMPLATE_PICKER,\n ),\n userSettings: permissions.includes(ConsolePermissions.USER_SETTINGS),\n debug: permissions.includes(ConsolePermissions.DEBUG),\n },\n m2m: {\n updateCrd: permissions.includes(ConsolePermissions.M2M_UPDATE_CRD),\n signup: permissions.includes(ConsolePermissions.M2M_SIGNUP),\n triggerAlert: permissions.includes(ConsolePermissions.M2M_TRIGGER_ALERT),\n deleteOrgClusters: permissions.includes(\n ConsolePermissions.M2M_DELETE_ORG_CLUSTERS,\n ),\n updateOrgClusters: permissions.includes(\n ConsolePermissions.M2M_UPDATE_ORG_CLUSTERS,\n ),\n addUsageMetrics: permissions.includes(\n ConsolePermissions.M2M_ADD_CLUSTER_USAGE_METRICS,\n ),\n sendSseEvent: permissions.includes(ConsolePermissions.M2M_SEND_SSE_EVENT),\n external: {\n internalClient: permissions.includes(\n ConsolePermissions.M2M_EXTERNAL_INTERNAL_CLIENT,\n ),\n },\n fetchMigrationData: permissions.includes(\n ConsolePermissions.M2M_FETCH_MIGRATION_DATA,\n ),\n manageGenerationUpgradePath: permissions.includes(\n ConsolePermissions.M2M_MANAGE_GENERATION_UPGRADE_PATH,\n ),\n approvals: permissions.includes(ConsolePermissions.M2M_CONTROL_APPROVALS),\n },\n }\n return newFeatures\n}\n\n/**\n * Flattens a feature tree into the dotted keys of the Control session.\n *\n * `buildSession` in accounts-backend writes the session with exactly this\n * shape, under the prefixes `` (accounts), `console` and `notifications`.\n */\nfunction flattenFeatureBooleans(\n value: unknown,\n prefix = '',\n): Record<string, boolean> {\n const out: Record<string, boolean> = {}\n if (!value || typeof value !== 'object') {\n return out\n }\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n const flatKey = prefix ? `${prefix}.${key}` : key\n if (typeof entry === 'boolean') {\n out[flatKey] = entry\n } else if (entry && typeof entry === 'object') {\n Object.assign(out, flattenFeatureBooleans(entry, flatKey))\n }\n }\n return out\n}\n\n/**\n * The session keys that ONE raw Auth0 permission turns on.\n *\n * The Control session holds a flat record of feature booleans, such as\n * `admin.extendTrial` and `console.clusters.canUpgradeGenerationYolo`. An\n * approval use case names the raw Auth0 short code instead, such as `aaet`,\n * because that is what the token carries and what a backend compares.\n *\n * This function bridges the two, and it bridges them by RUNNING the same\n * mappers that build the session. A hand-written table of code to key would be\n * a third copy of the permission model, and a code that gained a key would\n * silently stop gating anything in the browser.\n *\n * It answers an array, because one code can turn on more than one key. An\n * unknown code answers an empty array, and the caller decides what that means.\n *\n * The answer is CACHED, because the work is three feature trees and a flatten\n * of each one. `ApprovalActorView.has` of the browser runs this, and the rules\n * call `has` for every row of the queue: a page of 2000 requests turned one\n * cheap question into thousands of tree builds. The answer of a code never\n * changes inside one bundle, so the cache needs no invalidation, and the keys\n * are the permission codes of the use cases, which is a short list.\n *\n * The answer is `readonly`, and frozen, because every caller of one code gets\n * the SAME array: a caller that sorted or pushed in place would change what\n * the next reader of that code sees.\n */\nconst keysByPermissionCode = new Map<string, readonly string[]>()\n\nexport function sessionPermissionKeysFor(\n permissionCode: string,\n): readonly string[] {\n const cached = keysByPermissionCode.get(permissionCode)\n if (cached) {\n return cached\n }\n const answer = Object.freeze(buildSessionPermissionKeys(permissionCode))\n keysByPermissionCode.set(permissionCode, answer)\n return answer\n}\n\nfunction buildSessionPermissionKeys(permissionCode: string): string[] {\n const trees: [unknown, string][] = [\n [accountsUserFeaturesFromPermissions([permissionCode]), ''],\n [consoleUserFeaturesFromPermissions([permissionCode]), 'console'],\n [\n NotificationPermissions.userFeaturesFromPermissions([permissionCode]),\n 'notifications',\n ],\n ]\n const keys: string[] = []\n for (const [tree, prefix] of trees) {\n for (const [key, on] of Object.entries(\n flattenFeatureBooleans(tree, prefix),\n )) {\n if (on) {\n keys.push(key)\n }\n }\n }\n return keys\n}\n\n/**\n * Reports whether a Control session holds one raw Auth0 permission.\n *\n * It is what `ApprovalActorView.has` runs in the browser. An unknown code\n * answers false: a permission that nothing maps is a permission that nobody\n * holds, and the alternative would open a button that the backend refuses.\n */\nexport function sessionHasPermission(\n sessionPermissions: Record<string, boolean>,\n permissionCode: string,\n): boolean {\n return sessionPermissionKeysFor(permissionCode).some(\n (key) => sessionPermissions[key] === true,\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Limits } from '../dtos/SalesPlan.dto.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the value of a number limit as a finite number, or `undefined`.
|
|
4
|
+
* Accepts only a finite number and a string with a decimal number, such as
|
|
5
|
+
* `'8'`, `'-1'` or `'1.5'`. `Number` alone also accepts `true` (1), `[8]`
|
|
6
|
+
* (8), `''` (0) and `'0x8'` (8), and limits are JSON that nothing types at
|
|
7
|
+
* run time.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseNumericLimit(value: unknown): number | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Returns `true` for the stages `dev` and `int`, where the
|
|
12
|
+
* `preprodClusterTtlHours` limit applies. Returns `false` for every other
|
|
13
|
+
* stage, `prod` and `local` included.
|
|
14
|
+
*/
|
|
15
|
+
export declare const isPreprodClusterTtlStage: (stage: string) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Returns the `preprodClusterTtlHours` limit of an org when it applies, or
|
|
18
|
+
* `undefined`. The limit applies only on dev and int, so a prod org with the
|
|
19
|
+
* limit keeps its clusters. The value goes through `parseNumericLimit`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getPreprodClusterTtlHours({ limits, stage, }: {
|
|
22
|
+
limits: Pick<Limits, 'preprodClusterTtlHours'> | undefined;
|
|
23
|
+
stage: string;
|
|
24
|
+
}): number | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Returns whether a cluster is older than the TTL of its org. A cluster with
|
|
27
|
+
* no valid `created` is never past the TTL.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isPastPreprodClusterTtl({ created, ttlHours, now, }: {
|
|
30
|
+
created: Date | string | undefined;
|
|
31
|
+
ttlHours: number | undefined;
|
|
32
|
+
now?: Date;
|
|
33
|
+
}): boolean;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const HOUR = 60 * 60 * 1e3;
|
|
2
|
+
function parseNumericLimit(value) {
|
|
3
|
+
if (typeof value === "number") {
|
|
4
|
+
return Number.isFinite(value) ? value : void 0;
|
|
5
|
+
}
|
|
6
|
+
if (typeof value !== "string" || !/^-?\d+(\.\d+)?$/.test(value.trim())) {
|
|
7
|
+
return void 0;
|
|
8
|
+
}
|
|
9
|
+
const parsed = Number(value);
|
|
10
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
11
|
+
}
|
|
12
|
+
const isPreprodClusterTtlStage = (stage) => stage === "dev" || stage === "int";
|
|
13
|
+
function getPreprodClusterTtlHours({
|
|
14
|
+
limits,
|
|
15
|
+
stage
|
|
16
|
+
}) {
|
|
17
|
+
if (!isPreprodClusterTtlStage(stage)) return void 0;
|
|
18
|
+
const ttlHours = parseNumericLimit(limits?.preprodClusterTtlHours);
|
|
19
|
+
return ttlHours !== void 0 && Number.isInteger(ttlHours) && ttlHours >= 1 ? ttlHours : void 0;
|
|
20
|
+
}
|
|
21
|
+
function isPastPreprodClusterTtl({
|
|
22
|
+
created,
|
|
23
|
+
ttlHours,
|
|
24
|
+
now = /* @__PURE__ */ new Date()
|
|
25
|
+
}) {
|
|
26
|
+
if (ttlHours === void 0 || created === void 0) return false;
|
|
27
|
+
const createdMs = new Date(created).getTime();
|
|
28
|
+
if (Number.isNaN(createdMs)) return false;
|
|
29
|
+
return now.getTime() - createdMs > ttlHours * HOUR;
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
getPreprodClusterTtlHours,
|
|
33
|
+
isPastPreprodClusterTtl,
|
|
34
|
+
isPreprodClusterTtlStage,
|
|
35
|
+
parseNumericLimit
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=PreprodClusterTtl.type.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/types/PreprodClusterTtl.type.ts"],
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { Limits } from '../dtos/SalesPlan.dto.js'\n\nconst HOUR = 60 * 60 * 1000\n\n/**\n * Returns the value of a number limit as a finite number, or `undefined`.\n * Accepts only a finite number and a string with a decimal number, such as\n * `'8'`, `'-1'` or `'1.5'`. `Number` alone also accepts `true` (1), `[8]`\n * (8), `''` (0) and `'0x8'` (8), and limits are JSON that nothing types at\n * run time.\n */\nexport function parseNumericLimit(value: unknown): number | undefined {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined\n }\n if (typeof value !== 'string' || !/^-?\\d+(\\.\\d+)?$/.test(value.trim())) {\n return undefined\n }\n // A string of 309 or more digits is `Infinity`.\n const parsed = Number(value)\n return Number.isFinite(parsed) ? parsed : undefined\n}\n\n/**\n * Returns `true` for the stages `dev` and `int`, where the\n * `preprodClusterTtlHours` limit applies. Returns `false` for every other\n * stage, `prod` and `local` included.\n */\nexport const isPreprodClusterTtlStage = (stage: string): boolean =>\n stage === 'dev' || stage === 'int'\n\n/**\n * Returns the `preprodClusterTtlHours` limit of an org when it applies, or\n * `undefined`. The limit applies only on dev and int, so a prod org with the\n * limit keeps its clusters. The value goes through `parseNumericLimit`.\n */\nexport function getPreprodClusterTtlHours({\n limits,\n stage,\n}: {\n limits: Pick<Limits, 'preprodClusterTtlHours'> | undefined\n stage: string\n}): number | undefined {\n if (!isPreprodClusterTtlStage(stage)) return undefined\n const ttlHours = parseNumericLimit(limits?.preprodClusterTtlHours)\n return ttlHours !== undefined && Number.isInteger(ttlHours) && ttlHours >= 1\n ? ttlHours\n : undefined\n}\n\n/**\n * Returns whether a cluster is older than the TTL of its org. A cluster with\n * no valid `created` is never past the TTL.\n */\nexport function isPastPreprodClusterTtl({\n created,\n ttlHours,\n now = new Date(),\n}: {\n created: Date | string | undefined\n ttlHours: number | undefined\n now?: Date\n}): boolean {\n if (ttlHours === undefined || created === undefined) return false\n const createdMs = new Date(created).getTime()\n if (Number.isNaN(createdMs)) return false\n return now.getTime() - createdMs > ttlHours * HOUR\n}\n"],
|
|
5
|
+
"mappings": "AAQA,MAAM,OAAO,KAAK,KAAK;AAShB,SAAS,kBAAkB,OAAoC;AACpE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAAA,EAC1C;AACA,MAAI,OAAO,UAAU,YAAY,CAAC,kBAAkB,KAAK,MAAM,KAAK,CAAC,GAAG;AACtE,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,OAAO,KAAK;AAC3B,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAOO,MAAM,2BAA2B,CAAC,UACvC,UAAU,SAAS,UAAU;AAOxB,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AACF,GAGuB;AACrB,MAAI,CAAC,yBAAyB,KAAK,EAAG,QAAO;AAC7C,QAAM,WAAW,kBAAkB,QAAQ,sBAAsB;AACjE,SAAO,aAAa,UAAa,OAAO,UAAU,QAAQ,KAAK,YAAY,IACvE,WACA;AACN;AAMO,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA,MAAM,oBAAI,KAAK;AACjB,GAIY;AACV,MAAI,aAAa,UAAa,YAAY,OAAW,QAAO;AAC5D,QAAM,YAAY,IAAI,KAAK,OAAO,EAAE,QAAQ;AAC5C,MAAI,OAAO,MAAM,SAAS,EAAG,QAAO;AACpC,SAAO,IAAI,QAAQ,IAAI,YAAY,WAAW;AAChD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -246,6 +246,12 @@ export interface LlmSpend {
|
|
|
246
246
|
maxBudget: number;
|
|
247
247
|
}
|
|
248
248
|
export type HdpEntity = 'cluster' | 'clusterBackup' | 'clusterBackupSchedule' | 'clusterRestore' | 'datacenter' | 'generation' | 'channel' | 'clusterPlan' | 'clusterPlanType' | 'alertSubscription' | 'consoleApiClient' | 'connectorSecret' | 'byomClient' | 'secureConnectivity' | 'clusterClient' | 'organization' | 'user' | 'invite' | 'usageAlert' | 'audit' | 'systemAudit' | 'telemetry' | 'userlogin' | 'clusterBulkOperation' | 'clusterModification' | 'clusterModificationConfig' | 'llmSpend';
|
|
249
|
+
/**
|
|
250
|
+
* The cluster disks that the disk-usage route of accounts-backend accepts.
|
|
251
|
+
* HDP does not ingest the Zeebe gauge yet, so a Zeebe read returns no rows.
|
|
252
|
+
*/
|
|
253
|
+
export declare const HDP_DISKS: readonly ["elasticsearch", "zeebe"];
|
|
254
|
+
export type HdpDisk = (typeof HDP_DISKS)[number];
|
|
249
255
|
export interface HdpPrometheusDataCapacityDataPoint {
|
|
250
256
|
clusterId?: string;
|
|
251
257
|
ts: number;
|
package/dist/types/hdp.types.js
CHANGED
|
@@ -7,8 +7,10 @@ var AlertSubscriptionReportType = /* @__PURE__ */ ((AlertSubscriptionReportType2
|
|
|
7
7
|
AlertSubscriptionReportType2["Webhook"] = "Webhook";
|
|
8
8
|
return AlertSubscriptionReportType2;
|
|
9
9
|
})(AlertSubscriptionReportType || {});
|
|
10
|
+
const HDP_DISKS = ["elasticsearch", "zeebe"];
|
|
10
11
|
export {
|
|
11
12
|
AlertSubscriptionReportType,
|
|
12
|
-
AlertSubscriptionType
|
|
13
|
+
AlertSubscriptionType,
|
|
14
|
+
HDP_DISKS
|
|
13
15
|
};
|
|
14
16
|
//# sourceMappingURL=hdp.types.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/types/hdp.types.ts"],
|
|
4
|
-
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { Limits } from '../dtos/SalesPlan.dto.js'\nimport type { UsageAlertMetric } from '../dtos/UsageAlert.dto.js'\nimport type { ClusterClientPermission } from '../enums/ClusterClientPermissions.enum.js'\nimport type { ConsoleAPIClientPermission } from '../enums/ConsoleApiClientPermission.enum.js'\nimport type { OrganizationRole } from '../enums/OrganizationRole.enum.js'\nimport type { DisplayedSalesPlan, SalesPlanType } from './SalesPlanType.type.js'\n\nexport interface Cluster {\n uuid: string\n name: string\n clusterPlanType: ClusterPlanType\n clusterPlan: ClusterPlan\n generation: Generation\n channel: Channel\n datacenter?: Datacenter // is not fetched eagerly, if we do not have it we just gonna omit it\n amountOfIpWhitelistRules: number\n ownerUuid: string\n created: Date\n autoUpdate: boolean\n mcpEnabled?: boolean\n businessIdUniquenessEnabled?: boolean\n optimizeEnabled?: boolean\n tags?: string[]\n sleeping?: boolean\n activeModifications: boolean\n encryptionKeysSet?: {\n primaryConfigured: boolean\n secondaryConfigured: boolean\n }\n}\nexport interface ClusterBackup {\n clusterId: string\n backupId?: string\n}\n\nexport interface ClusterModification {\n uuid: string\n clusterUuid: string\n owner: string\n createdAt?: Date\n archivedAt?: Date\n}\n\nexport interface ClusterModificationConfig {\n uuid: string\n clusterUuid: string\n modificationUuid: string\n creator: string\n description: string\n url?: string\n createdAt?: Date\n sealedAt?: Date\n activatedAt?: Date\n replacedBy?: string\n deactivatedAt?: Date\n deactivatedBy?: string | null\n expiresAt?: Date | null\n expiredNotifiedAt?: Date | null\n yoloJustification?: string\n}\n\n/**\n * HDP-specific interface for ClusterModificationConfig.\n * Used for Holy Data Platform integration - keeps Date objects for timestamp fields.\n */\nexport interface HdpClusterModificationConfig {\n uuid: string\n clusterUuid: string\n modificationUuid: string\n creator: string\n description: string\n url?: string\n createdAt?: Date\n sealedAt?: Date\n activatedAt?: Date\n replacedBy?: string\n deactivatedAt?: Date\n deactivatedBy?: string | null\n expiresAt?: Date | null\n expiredNotifiedAt?: Date | null\n}\n\nexport interface ClusterBackupSchedule {\n clusterId: string\n schedule?: string\n}\n\nexport interface ClusterPlanType {\n uuid: string\n name: string\n availabilityClass: string\n isDevelopment: boolean\n}\n\nexport interface ClusterPlan {\n uuid: string\n name: string\n}\n\nexport interface Datacenter {\n uuid: string\n name: string\n}\nexport interface Generation {\n uuid: string\n name: string\n}\nexport interface Channel {\n uuid: string\n name: string\n}\n\n// eslint-disable-next-line no-shadow\nexport enum AlertSubscriptionType {\n ProcessAlert = 'ProcessAlert',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum AlertSubscriptionReportType {\n Email = 'Email',\n Webhook = 'Webhook',\n}\nexport interface AlertSubscription {\n uuid: string\n clusterUuid?: string\n target: string // userIdOrWebhook\n reportType: AlertSubscriptionReportType\n type: AlertSubscriptionType\n}\n\nexport interface ConsoleApiClient {\n uuid: string\n name: string\n organizationUuid: string\n permissions: ConsoleAPIClientPermission[]\n}\n\nexport interface ConnectorSecret {\n clusterUuid: string\n amountOfSecrets: number\n}\n\nexport interface ByomClient {\n uuid: string\n clusterUuid?: string\n username: string\n}\n\nexport interface SecureConnectivity {\n clusterUuid: string\n allowedRegions: string[]\n allowedPrincipals: string[]\n}\n\nexport interface ClusterClient {\n uuid: string\n name: string\n clusterUuid?: string\n clientId: string\n permissions: ClusterClientPermission[]\n}\n\nexport interface Organization {\n uuid: string\n name: string\n salesplan?: {\n type: SalesPlanType // might be undefined when in limbo\n displayedType?: DisplayedSalesPlan // might be undefined when in limbo\n uuid: string // might be undefined when in limbo\n name: string // might be undefined when in limbo\n expireDate?: Date\n }\n reservations?: {\n [key: string]: number\n }\n earlyAccessFeatures?: string[]\n justOptedForTheBetaTerms?: boolean\n salesForceProjectId?: string\n awsOnly?: boolean\n limits?: Limits\n}\n\nexport interface User {\n name: string\n email: string\n userId: string\n orgMemberships?: Array<{ orgUuid: string; roles: OrganizationRole[] }> // can be undefined which means: no new info ;)\n}\n\nexport interface UserLogin {\n userId: string\n}\n\nexport interface Invite {\n email: string\n orgUuid: string\n roles: OrganizationRole[]\n}\n\nexport interface UsageAlert {\n orgId: string\n metric: UsageAlertMetric\n threshold: number\n enabled: boolean\n triggered: boolean\n}\n\nexport interface Audit {\n service: string\n orgId: string\n timestamp: number\n audit: string\n auditType: 'c' | 'r' | 'u' | 'd'\n entity: string\n entityId: string\n userId: string\n entityAttribute?: string\n entityAttributeValueFrom?: string\n entityAttributeValueTo?: string\n parentEntity?: string\n parentEntityId?: string\n}\n\nexport interface SystemAudit {\n service: string\n timestamp: number\n audit: string\n auditType: 'c' | 'r' | 'u' | 'd'\n entity: string\n entityId: string\n userId: string\n entityAttribute?: string | null\n entityAttributeValueFrom?: string | null\n entityAttributeValueTo?: string | null\n orgId?: string | null\n clusterId?: string | null\n}\n\nexport interface TelemetryData {\n customerId: string\n installationId: string\n entities: Array<{ id: string; type: string }>\n key: string\n value: string | number | boolean\n tags?: Record<string, string>\n timestampFrom: number\n timestampTo?: number\n}\n\nexport interface ClusterBulkOperation {\n uuid: string\n name: string\n reason: string\n eyes: number\n clusterUuids: string[]\n type: string\n created: Date\n updated?: Date\n executedAt?: Date\n createdBy: string\n}\n\nexport interface LlmSpend {\n orgId: string\n salesPlanType: SalesPlanType\n spend: number\n maxBudget: number\n}\n\nexport type HdpEntity =\n | 'cluster'\n | 'clusterBackup'\n | 'clusterBackupSchedule'\n | 'clusterRestore'\n | 'datacenter'\n | 'generation'\n | 'channel'\n | 'clusterPlan'\n | 'clusterPlanType'\n | 'alertSubscription'\n | 'consoleApiClient'\n | 'connectorSecret'\n | 'byomClient'\n | 'secureConnectivity'\n | 'clusterClient'\n | 'organization'\n | 'user'\n | 'invite'\n | 'usageAlert'\n | 'audit'\n | 'systemAudit'\n | 'telemetry'\n | 'userlogin'\n | 'clusterBulkOperation'\n | 'clusterModification'\n | 'clusterModificationConfig'\n | 'llmSpend'\n\nexport interface HdpPrometheusDataCapacityDataPoint {\n clusterId?: string\n ts: number\n avg: number\n min: number\n max: number\n}\n\nexport interface HdpBackendChangeEvent {\n ts: number\n data: {\n stage: string\n entity: string\n operation: string\n data: any\n }\n}\n"],
|
|
5
|
-
"mappings": "AAuHO,IAAK,wBAAL,kBAAKA,2BAAL;AACL,EAAAA,uBAAA,kBAAe;AADL,SAAAA;AAAA,GAAA;AAKL,IAAK,8BAAL,kBAAKC,iCAAL;AACL,EAAAA,6BAAA,WAAQ;AACR,EAAAA,6BAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;",
|
|
4
|
+
"sourcesContent": ["/*\n * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH\n * under one or more contributor license agreements. Licensed under a commercial license.\n * You may not use this file except in compliance with the commercial license.\n */\n\nimport type { Limits } from '../dtos/SalesPlan.dto.js'\nimport type { UsageAlertMetric } from '../dtos/UsageAlert.dto.js'\nimport type { ClusterClientPermission } from '../enums/ClusterClientPermissions.enum.js'\nimport type { ConsoleAPIClientPermission } from '../enums/ConsoleApiClientPermission.enum.js'\nimport type { OrganizationRole } from '../enums/OrganizationRole.enum.js'\nimport type { DisplayedSalesPlan, SalesPlanType } from './SalesPlanType.type.js'\n\nexport interface Cluster {\n uuid: string\n name: string\n clusterPlanType: ClusterPlanType\n clusterPlan: ClusterPlan\n generation: Generation\n channel: Channel\n datacenter?: Datacenter // is not fetched eagerly, if we do not have it we just gonna omit it\n amountOfIpWhitelistRules: number\n ownerUuid: string\n created: Date\n autoUpdate: boolean\n mcpEnabled?: boolean\n businessIdUniquenessEnabled?: boolean\n optimizeEnabled?: boolean\n tags?: string[]\n sleeping?: boolean\n activeModifications: boolean\n encryptionKeysSet?: {\n primaryConfigured: boolean\n secondaryConfigured: boolean\n }\n}\nexport interface ClusterBackup {\n clusterId: string\n backupId?: string\n}\n\nexport interface ClusterModification {\n uuid: string\n clusterUuid: string\n owner: string\n createdAt?: Date\n archivedAt?: Date\n}\n\nexport interface ClusterModificationConfig {\n uuid: string\n clusterUuid: string\n modificationUuid: string\n creator: string\n description: string\n url?: string\n createdAt?: Date\n sealedAt?: Date\n activatedAt?: Date\n replacedBy?: string\n deactivatedAt?: Date\n deactivatedBy?: string | null\n expiresAt?: Date | null\n expiredNotifiedAt?: Date | null\n yoloJustification?: string\n}\n\n/**\n * HDP-specific interface for ClusterModificationConfig.\n * Used for Holy Data Platform integration - keeps Date objects for timestamp fields.\n */\nexport interface HdpClusterModificationConfig {\n uuid: string\n clusterUuid: string\n modificationUuid: string\n creator: string\n description: string\n url?: string\n createdAt?: Date\n sealedAt?: Date\n activatedAt?: Date\n replacedBy?: string\n deactivatedAt?: Date\n deactivatedBy?: string | null\n expiresAt?: Date | null\n expiredNotifiedAt?: Date | null\n}\n\nexport interface ClusterBackupSchedule {\n clusterId: string\n schedule?: string\n}\n\nexport interface ClusterPlanType {\n uuid: string\n name: string\n availabilityClass: string\n isDevelopment: boolean\n}\n\nexport interface ClusterPlan {\n uuid: string\n name: string\n}\n\nexport interface Datacenter {\n uuid: string\n name: string\n}\nexport interface Generation {\n uuid: string\n name: string\n}\nexport interface Channel {\n uuid: string\n name: string\n}\n\n// eslint-disable-next-line no-shadow\nexport enum AlertSubscriptionType {\n ProcessAlert = 'ProcessAlert',\n}\n\n// eslint-disable-next-line no-shadow\nexport enum AlertSubscriptionReportType {\n Email = 'Email',\n Webhook = 'Webhook',\n}\nexport interface AlertSubscription {\n uuid: string\n clusterUuid?: string\n target: string // userIdOrWebhook\n reportType: AlertSubscriptionReportType\n type: AlertSubscriptionType\n}\n\nexport interface ConsoleApiClient {\n uuid: string\n name: string\n organizationUuid: string\n permissions: ConsoleAPIClientPermission[]\n}\n\nexport interface ConnectorSecret {\n clusterUuid: string\n amountOfSecrets: number\n}\n\nexport interface ByomClient {\n uuid: string\n clusterUuid?: string\n username: string\n}\n\nexport interface SecureConnectivity {\n clusterUuid: string\n allowedRegions: string[]\n allowedPrincipals: string[]\n}\n\nexport interface ClusterClient {\n uuid: string\n name: string\n clusterUuid?: string\n clientId: string\n permissions: ClusterClientPermission[]\n}\n\nexport interface Organization {\n uuid: string\n name: string\n salesplan?: {\n type: SalesPlanType // might be undefined when in limbo\n displayedType?: DisplayedSalesPlan // might be undefined when in limbo\n uuid: string // might be undefined when in limbo\n name: string // might be undefined when in limbo\n expireDate?: Date\n }\n reservations?: {\n [key: string]: number\n }\n earlyAccessFeatures?: string[]\n justOptedForTheBetaTerms?: boolean\n salesForceProjectId?: string\n awsOnly?: boolean\n limits?: Limits\n}\n\nexport interface User {\n name: string\n email: string\n userId: string\n orgMemberships?: Array<{ orgUuid: string; roles: OrganizationRole[] }> // can be undefined which means: no new info ;)\n}\n\nexport interface UserLogin {\n userId: string\n}\n\nexport interface Invite {\n email: string\n orgUuid: string\n roles: OrganizationRole[]\n}\n\nexport interface UsageAlert {\n orgId: string\n metric: UsageAlertMetric\n threshold: number\n enabled: boolean\n triggered: boolean\n}\n\nexport interface Audit {\n service: string\n orgId: string\n timestamp: number\n audit: string\n auditType: 'c' | 'r' | 'u' | 'd'\n entity: string\n entityId: string\n userId: string\n entityAttribute?: string\n entityAttributeValueFrom?: string\n entityAttributeValueTo?: string\n parentEntity?: string\n parentEntityId?: string\n}\n\nexport interface SystemAudit {\n service: string\n timestamp: number\n audit: string\n auditType: 'c' | 'r' | 'u' | 'd'\n entity: string\n entityId: string\n userId: string\n entityAttribute?: string | null\n entityAttributeValueFrom?: string | null\n entityAttributeValueTo?: string | null\n orgId?: string | null\n clusterId?: string | null\n}\n\nexport interface TelemetryData {\n customerId: string\n installationId: string\n entities: Array<{ id: string; type: string }>\n key: string\n value: string | number | boolean\n tags?: Record<string, string>\n timestampFrom: number\n timestampTo?: number\n}\n\nexport interface ClusterBulkOperation {\n uuid: string\n name: string\n reason: string\n eyes: number\n clusterUuids: string[]\n type: string\n created: Date\n updated?: Date\n executedAt?: Date\n createdBy: string\n}\n\nexport interface LlmSpend {\n orgId: string\n salesPlanType: SalesPlanType\n spend: number\n maxBudget: number\n}\n\nexport type HdpEntity =\n | 'cluster'\n | 'clusterBackup'\n | 'clusterBackupSchedule'\n | 'clusterRestore'\n | 'datacenter'\n | 'generation'\n | 'channel'\n | 'clusterPlan'\n | 'clusterPlanType'\n | 'alertSubscription'\n | 'consoleApiClient'\n | 'connectorSecret'\n | 'byomClient'\n | 'secureConnectivity'\n | 'clusterClient'\n | 'organization'\n | 'user'\n | 'invite'\n | 'usageAlert'\n | 'audit'\n | 'systemAudit'\n | 'telemetry'\n | 'userlogin'\n | 'clusterBulkOperation'\n | 'clusterModification'\n | 'clusterModificationConfig'\n | 'llmSpend'\n\n/**\n * The cluster disks that the disk-usage route of accounts-backend accepts.\n * HDP does not ingest the Zeebe gauge yet, so a Zeebe read returns no rows.\n */\nexport const HDP_DISKS = ['elasticsearch', 'zeebe'] as const\nexport type HdpDisk = (typeof HDP_DISKS)[number]\n\nexport interface HdpPrometheusDataCapacityDataPoint {\n clusterId?: string\n ts: number\n avg: number\n min: number\n max: number\n}\n\nexport interface HdpBackendChangeEvent {\n ts: number\n data: {\n stage: string\n entity: string\n operation: string\n data: any\n }\n}\n"],
|
|
5
|
+
"mappings": "AAuHO,IAAK,wBAAL,kBAAKA,2BAAL;AACL,EAAAA,uBAAA,kBAAe;AADL,SAAAA;AAAA,GAAA;AAKL,IAAK,8BAAL,kBAAKC,iCAAL;AACL,EAAAA,6BAAA,WAAQ;AACR,EAAAA,6BAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;AAwLL,MAAM,YAAY,CAAC,iBAAiB,OAAO;",
|
|
6
6
|
"names": ["AlertSubscriptionType", "AlertSubscriptionReportType"]
|
|
7
7
|
}
|
package/package.json
CHANGED