@camunda/ccma-shared-types 0.5.1 → 0.6.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.
Files changed (35) hide show
  1. package/dist/constants/misc.const.d.ts +75 -0
  2. package/dist/constants/misc.const.js +12 -0
  3. package/dist/constants/misc.const.js.map +2 -2
  4. package/dist/dtos/CommonCluster.dto.d.ts +13 -1
  5. package/dist/dtos/ControlV2.dto.d.ts +17 -3
  6. package/dist/enums/AuditEntity.enum.d.ts +2 -0
  7. package/dist/enums/AuditEntity.enum.js +2 -0
  8. package/dist/enums/AuditEntity.enum.js.map +2 -2
  9. package/dist/enums/ConsoleApiClientPermission.enum.d.ts +6 -1
  10. package/dist/enums/ConsoleApiClientPermission.enum.js +4 -0
  11. package/dist/enums/ConsoleApiClientPermission.enum.js.map +2 -2
  12. package/dist/enums/ErrorType.enum.d.ts +1 -0
  13. package/dist/enums/ErrorType.enum.js +1 -0
  14. package/dist/enums/ErrorType.enum.js.map +2 -2
  15. package/dist/index.d.ts +9 -5
  16. package/dist/index.js +31 -1
  17. package/dist/index.js.map +2 -2
  18. package/dist/types/HdpTenantUsage.type.d.ts +32 -0
  19. package/dist/types/TrialManagement.types.d.ts +63 -0
  20. package/dist/types/TrialManagement.types.js +1 -0
  21. package/dist/types/TrialManagement.types.js.map +7 -0
  22. package/dist/utils/cloudProvider.utils.d.ts +18 -0
  23. package/dist/utils/cloudProvider.utils.js +23 -0
  24. package/dist/utils/cloudProvider.utils.js.map +7 -0
  25. package/dist/utils/cronSchedule.utils.d.ts +42 -0
  26. package/dist/utils/cronSchedule.utils.js +161 -0
  27. package/dist/utils/cronSchedule.utils.js.map +7 -0
  28. package/dist/utils/cronSchedule.utils.spec.d.ts +1 -0
  29. package/dist/utils/string-validation.utils.d.ts +17 -0
  30. package/dist/utils/string-validation.utils.js +8 -1
  31. package/dist/utils/string-validation.utils.js.map +2 -2
  32. package/dist/utils/versionCheck.utils.d.ts +12 -0
  33. package/dist/utils/versionCheck.utils.js +37 -1
  34. package/dist/utils/versionCheck.utils.js.map +2 -2
  35. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/string-validation.utils.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 { PRIVATE_LINK_REGIONS } from '../constants/privateLinkRegions.const.js'\n\nconst AWS_ARN_PARTITIONS = new Set(['aws', 'aws-cn', 'aws-us-gov'])\n\nfunction isAlphaNumericOrDash(value: string): boolean {\n for (const char of value) {\n const isLowercaseLetter = char >= 'a' && char <= 'z'\n const isUppercaseLetter = char >= 'A' && char <= 'Z'\n const isDigit = char >= '0' && char <= '9'\n\n if (!isLowercaseLetter && !isUppercaseLetter && !isDigit && char !== '-') {\n return false\n }\n }\n\n return true\n}\n\nfunction isDigitsOnly(value: string): boolean {\n for (const char of value) {\n if (char < '0' || char > '9') {\n return false\n }\n }\n\n return true\n}\n\nexport function isValidHostname(value: string) {\n if (typeof value !== 'string') {\n return false\n }\n\n const validHostnameChars = /^[a-zA-Z0-9-.]{1,253}\\.?$/gu\n if (!validHostnameChars.test(value)) {\n return false\n }\n\n if (value.endsWith('.')) {\n // eslint-disable-next-line no-param-reassign\n value = value.slice(0, value.length - 1)\n }\n\n if (value.length > 253) {\n return false\n }\n\n const labels = value.split('.')\n\n const isValid = labels.every((label) => {\n // eslint-disable-next-line prefer-named-capture-group\n const validLabelChars = /^([a-zA-Z0-9-]+)$/gu\n\n const validLabel =\n validLabelChars.test(label) &&\n label.length < 64 &&\n !label.startsWith('-') &&\n !label.endsWith('-')\n\n return validLabel\n })\n\n return isValid\n}\n\nexport function isValidAwsArn(value: string): boolean {\n if (typeof value !== 'string') {\n return false\n }\n\n if (value.length === 0 || value.includes('*')) {\n return false\n }\n\n const segments = value.split(':')\n\n if (segments.length < 6) {\n return false\n }\n\n const [prefix, partition, service, region, accountId, ...resourceParts] =\n segments\n const resource = resourceParts.join(':')\n\n if (prefix !== 'arn' || !AWS_ARN_PARTITIONS.has(partition)) {\n return false\n }\n\n if (!service || !isAlphaNumericOrDash(service)) {\n return false\n }\n\n if (service === 'iam' && accountId.length === 0) {\n return false\n }\n\n if (region && !isAlphaNumericOrDash(region)) {\n return false\n }\n\n if (accountId && (!isDigitsOnly(accountId) || accountId.length !== 12)) {\n return false\n }\n\n return resource.length > 0\n}\n\nexport function isValidPrivateLinkRegion(value: string): boolean {\n if (typeof value !== 'string') {\n return false\n }\n\n return PRIVATE_LINK_REGIONS.includes(value)\n}\n\n/**\n * Regular expression to validate client names.\n * Allows only letters (a-z, A-Z), digits (0-9), dashes (-), and underscores (_).\n * This matches the frontend validation in console-frontend/src/models/validation/input.ts\n */\nconst CLIENT_NAME_REGEX = /^[a-zA-Z0-9_-]+$/u\n\n/**\n * Validates that a client name contains only allowed characters:\n * letters, digits, dashes, and underscores.\n *\n * @param name - The client name to validate\n * @returns true if the name is valid, false otherwise\n */\nexport function isValidClientName(name: string): boolean {\n if (typeof name !== 'string') {\n return false\n }\n\n if (name.trim().length === 0) {\n return false\n }\n\n return CLIENT_NAME_REGEX.test(name)\n}\n\n/**\n * Validates a single IPv4 address or CIDR notation.\n *\n * Valid examples:\n * - 192.168.1.1\n * - 10.0.0.0/8\n * - 0.0.0.0/0\n * - 255.255.255.255/32\n *\n * Invalid examples:\n * - 999.999.999.999 (octets must be 0-255)\n * - 1.2.3.4/55 (prefix must be 0-32)\n * - 256.1.1.1 (octets must be 0-255)\n * - 1.2.3 (must have 4 octets)\n *\n * @param cidr - The IPv4 address or CIDR notation to validate\n * @returns true if the CIDR is valid, false otherwise\n */\nexport function isValidCIDR(cidr: string): boolean {\n if (typeof cidr !== 'string') {\n return false\n }\n\n const trimmed = cidr.trim()\n\n if (trimmed.length === 0) {\n return false\n }\n\n // Split IP and prefix\n const parts = trimmed.split('/')\n\n // Must have either IP only or IP/prefix\n if (parts.length > 2) {\n return false\n }\n\n const ip = parts[0]\n const prefix = parts[1]\n\n // Validate IP address\n const octets = ip.split('.')\n\n // Must have exactly 4 octets\n if (octets.length !== 4) {\n return false\n }\n\n // Validate each octet\n for (const octet of octets) {\n // Check if it's a valid number\n if (!/^\\d+$/u.test(octet)) {\n return false\n }\n\n const num = parseInt(octet, 10)\n\n // Octet must be 0-255\n if (num < 0 || num > 255) {\n return false\n }\n\n // Leading zeros are not allowed (except for \"0\" itself)\n if (octet.length > 1 && octet.startsWith('0')) {\n return false\n }\n }\n\n // If prefix is present, validate it\n if (prefix !== undefined) {\n if (!/^\\d+$/u.test(prefix)) {\n return false\n }\n\n const prefixNum = parseInt(prefix, 10)\n\n // Prefix must be 0-32 for IPv4\n if (prefixNum < 0 || prefixNum > 32) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Validates a comma-separated list of IPv4 addresses and/or CIDR notations.\n *\n * Valid examples:\n * - \"192.168.1.1\"\n * - \"192.168.1.1,10.0.0.0/8\"\n * - \"192.168.1.1, 10.0.0.0/8\" (spaces are trimmed)\n *\n * Invalid examples:\n * - \"192.168.1.1,999.999.999.999\" (second entry is invalid)\n * - \"1.2.3.4/55\" (prefix is invalid)\n *\n * @param cidrList - A comma-separated list of IPv4 addresses or CIDR notations\n * @returns true if all entries in the list are valid, false otherwise\n */\nexport function isValidCIDRList(cidrList: string): boolean {\n if (typeof cidrList !== 'string') {\n return false\n }\n\n const trimmed = cidrList.trim()\n\n if (trimmed.length === 0) {\n return false\n }\n\n const entries = trimmed.split(',')\n\n // At least one entry must be present\n if (entries.length === 0) {\n return false\n }\n\n // All entries must be valid CIDRs\n return entries.every((entry) => isValidCIDR(entry))\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 { PRIVATE_LINK_REGIONS } from '../constants/privateLinkRegions.const.js'\n\nconst AWS_ARN_PARTITIONS = new Set(['aws', 'aws-cn', 'aws-us-gov'])\n\nfunction isAlphaNumericOrDash(value: string): boolean {\n for (const char of value) {\n const isLowercaseLetter = char >= 'a' && char <= 'z'\n const isUppercaseLetter = char >= 'A' && char <= 'Z'\n const isDigit = char >= '0' && char <= '9'\n\n if (!isLowercaseLetter && !isUppercaseLetter && !isDigit && char !== '-') {\n return false\n }\n }\n\n return true\n}\n\nfunction isDigitsOnly(value: string): boolean {\n for (const char of value) {\n if (char < '0' || char > '9') {\n return false\n }\n }\n\n return true\n}\n\nexport function isValidHostname(value: string) {\n if (typeof value !== 'string') {\n return false\n }\n\n const validHostnameChars = /^[a-zA-Z0-9-.]{1,253}\\.?$/gu\n if (!validHostnameChars.test(value)) {\n return false\n }\n\n if (value.endsWith('.')) {\n // eslint-disable-next-line no-param-reassign\n value = value.slice(0, value.length - 1)\n }\n\n if (value.length > 253) {\n return false\n }\n\n const labels = value.split('.')\n\n const isValid = labels.every((label) => {\n // eslint-disable-next-line prefer-named-capture-group\n const validLabelChars = /^([a-zA-Z0-9-]+)$/gu\n\n const validLabel =\n validLabelChars.test(label) &&\n label.length < 64 &&\n !label.startsWith('-') &&\n !label.endsWith('-')\n\n return validLabel\n })\n\n return isValid\n}\n\nexport function isValidAwsArn(value: string): boolean {\n if (typeof value !== 'string') {\n return false\n }\n\n if (value.length === 0 || value.includes('*')) {\n return false\n }\n\n const segments = value.split(':')\n\n if (segments.length < 6) {\n return false\n }\n\n const [prefix, partition, service, region, accountId, ...resourceParts] =\n segments\n const resource = resourceParts.join(':')\n\n if (prefix !== 'arn' || !AWS_ARN_PARTITIONS.has(partition)) {\n return false\n }\n\n if (!service || !isAlphaNumericOrDash(service)) {\n return false\n }\n\n if (service === 'iam' && accountId.length === 0) {\n return false\n }\n\n if (region && !isAlphaNumericOrDash(region)) {\n return false\n }\n\n if (accountId && (!isDigitsOnly(accountId) || accountId.length !== 12)) {\n return false\n }\n\n return resource.length > 0\n}\n\nexport function isValidPrivateLinkRegion(value: string): boolean {\n if (typeof value !== 'string') {\n return false\n }\n\n return PRIVATE_LINK_REGIONS.includes(value)\n}\n\n/**\n * Regular expression to validate client names.\n * Allows only letters (a-z, A-Z), digits (0-9), dashes (-), and underscores (_).\n * This matches the frontend validation in console-frontend/src/models/validation/input.ts\n */\nconst CLIENT_NAME_REGEX = /^[a-zA-Z0-9_-]+$/u\n\n/**\n * Validates that a client name contains only allowed characters:\n * letters, digits, dashes, and underscores.\n *\n * @param name - The client name to validate\n * @returns true if the name is valid, false otherwise\n */\nexport function isValidClientName(name: string): boolean {\n if (typeof name !== 'string') {\n return false\n }\n\n if (name.trim().length === 0) {\n return false\n }\n\n return CLIENT_NAME_REGEX.test(name)\n}\n\n/**\n * Validates a single IPv4 address or CIDR notation.\n *\n * Valid examples:\n * - 192.168.1.1\n * - 10.0.0.0/8\n * - 0.0.0.0/0\n * - 255.255.255.255/32\n *\n * Invalid examples:\n * - 999.999.999.999 (octets must be 0-255)\n * - 1.2.3.4/55 (prefix must be 0-32)\n * - 256.1.1.1 (octets must be 0-255)\n * - 1.2.3 (must have 4 octets)\n *\n * @param cidr - The IPv4 address or CIDR notation to validate\n * @returns true if the CIDR is valid, false otherwise\n */\nexport function isValidCIDR(cidr: string): boolean {\n if (typeof cidr !== 'string') {\n return false\n }\n\n const trimmed = cidr.trim()\n\n if (trimmed.length === 0) {\n return false\n }\n\n // Split IP and prefix\n const parts = trimmed.split('/')\n\n // Must have either IP only or IP/prefix\n if (parts.length > 2) {\n return false\n }\n\n const ip = parts[0]\n const prefix = parts[1]\n\n // Validate IP address\n const octets = ip.split('.')\n\n // Must have exactly 4 octets\n if (octets.length !== 4) {\n return false\n }\n\n // Validate each octet\n for (const octet of octets) {\n // Check if it's a valid number\n if (!/^\\d+$/u.test(octet)) {\n return false\n }\n\n const num = parseInt(octet, 10)\n\n // Octet must be 0-255\n if (num < 0 || num > 255) {\n return false\n }\n\n // Leading zeros are not allowed (except for \"0\" itself)\n if (octet.length > 1 && octet.startsWith('0')) {\n return false\n }\n }\n\n // If prefix is present, validate it\n if (prefix !== undefined) {\n if (!/^\\d+$/u.test(prefix)) {\n return false\n }\n\n const prefixNum = parseInt(prefix, 10)\n\n // Prefix must be 0-32 for IPv4\n if (prefixNum < 0 || prefixNum > 32) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Normalizes a comma-separated list of IPv4 addresses and/or CIDR notations by\n * stripping every whitespace character.\n *\n * Whitespace is never meaningful inside a CIDR list, but `isValidCIDR` trims\n * before validating, so a value such as `\"10.0.0.1 \"` passes validation and is\n * then persisted verbatim \u2014 where the trailing space later breaks the cluster\n * controller. Normalizing on the way in keeps the stored value clean.\n *\n * Examples:\n * - \"10.0.0.1 \" -> \"10.0.0.1\"\n * - \"192.168.1.1, 10.0.0.0/8\" -> \"192.168.1.1,10.0.0.0/8\"\n *\n * @param cidrList - A comma-separated list of IPv4 addresses or CIDR notations\n * @returns The list with all whitespace removed\n */\nexport function normalizeCIDRList(cidrList: string): string {\n if (typeof cidrList !== 'string') {\n return ''\n }\n\n return cidrList.replace(/\\s/gu, '')\n}\n\n/**\n * Validates a comma-separated list of IPv4 addresses and/or CIDR notations.\n *\n * Valid examples:\n * - \"192.168.1.1\"\n * - \"192.168.1.1,10.0.0.0/8\"\n * - \"192.168.1.1, 10.0.0.0/8\" (spaces are trimmed)\n *\n * Invalid examples:\n * - \"192.168.1.1,999.999.999.999\" (second entry is invalid)\n * - \"1.2.3.4/55\" (prefix is invalid)\n *\n * @param cidrList - A comma-separated list of IPv4 addresses or CIDR notations\n * @returns true if all entries in the list are valid, false otherwise\n */\nexport function isValidCIDRList(cidrList: string): boolean {\n if (typeof cidrList !== 'string') {\n return false\n }\n\n const trimmed = cidrList.trim()\n\n if (trimmed.length === 0) {\n return false\n }\n\n const entries = trimmed.split(',')\n\n // At least one entry must be present\n if (entries.length === 0) {\n return false\n }\n\n // All entries must be valid CIDRs\n return entries.every((entry) => isValidCIDR(entry))\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -13,3 +13,15 @@ export declare const checkVersion: (params: {
13
13
  versionToCompareTo: string;
14
14
  trueOnInvalidVersion?: boolean;
15
15
  }) => boolean;
16
+ /**
17
+ * Version gate for the App Integrations exporter toggle (#8536). Shared by the
18
+ * c4 settings tile and the console-backend update guard so both stay in
19
+ * lockstep — the fix landed as patches on the 8.9 stream (zeebe >=8.9.14 AND
20
+ * connectorBridge >=8.9.7), everything from 8.10.0-alpha4 on already carries
21
+ * both fixes. A plain zeebe >=8.9.14 check would wrongly match
22
+ * 8.10.0-alpha1/2/3, which predate the fix.
23
+ */
24
+ export declare const isAppIntegrationsVersionSupported: (versions: {
25
+ zeebe?: string;
26
+ connectorBridge?: string;
27
+ }) => boolean;
@@ -1,4 +1,9 @@
1
1
  import * as semver from "semver";
2
+ import {
3
+ APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION,
4
+ APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION,
5
+ APP_INTEGRATIONS_MIN_VERSION
6
+ } from "../constants/misc.const.js";
2
7
  var VersionCheckOperator = /* @__PURE__ */ ((VersionCheckOperator2) => {
3
8
  VersionCheckOperator2[VersionCheckOperator2["LessThan"] = 0] = "LessThan";
4
9
  VersionCheckOperator2[VersionCheckOperator2["LessThanOrEqual"] = 1] = "LessThanOrEqual";
@@ -88,8 +93,39 @@ const checkVersion = (params) => {
88
93
  return false;
89
94
  }
90
95
  };
96
+ const isAppIntegrationsVersionSupported = (versions) => {
97
+ if (!versions.zeebe) {
98
+ return false;
99
+ }
100
+ const isIn89Stream = checkVersion({
101
+ possiblyVersionOrDockerPath: versions.zeebe,
102
+ trueForSnapshot: "compare",
103
+ operator: 5 /* SameMinor */,
104
+ versionToCompareTo: "8.9.0"
105
+ });
106
+ if (!isIn89Stream) {
107
+ return checkVersion({
108
+ possiblyVersionOrDockerPath: versions.zeebe,
109
+ trueForSnapshot: true,
110
+ operator: 3 /* GreaterThanOrEqual */,
111
+ versionToCompareTo: APP_INTEGRATIONS_MIN_VERSION
112
+ });
113
+ }
114
+ return checkVersion({
115
+ possiblyVersionOrDockerPath: versions.zeebe,
116
+ trueForSnapshot: true,
117
+ operator: 3 /* GreaterThanOrEqual */,
118
+ versionToCompareTo: APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION
119
+ }) && checkVersion({
120
+ possiblyVersionOrDockerPath: versions.connectorBridge,
121
+ trueForSnapshot: true,
122
+ operator: 3 /* GreaterThanOrEqual */,
123
+ versionToCompareTo: APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION
124
+ });
125
+ };
91
126
  export {
92
127
  VersionCheckOperator,
93
- checkVersion
128
+ checkVersion,
129
+ isAppIntegrationsVersionSupported
94
130
  };
95
131
  //# sourceMappingURL=versionCheck.utils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/versionCheck.utils.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 * as semver from 'semver'\n\n// eslint-disable-next-line no-shadow\nexport enum VersionCheckOperator {\n LessThan,\n LessThanOrEqual,\n GreaterThan,\n GreaterThanOrEqual,\n SameMajor,\n SameMinor,\n}\n\nexport const checkVersion = (params: {\n possiblyVersionOrDockerPath?: string\n trueForSnapshot: boolean | 'compare'\n operator: VersionCheckOperator\n versionToCompareTo: string\n trueOnInvalidVersion?: boolean\n}) => {\n // quick exit: if the versionToCompareTo is\n // - `SNAPSHOT` there is not a lot we can compare here to, so we return false directly\n // - ends with `-SNAPSHOT` we ignore the `-SNAPSHOT` part for the comparison, guess a good matching semver compliant version and try to move on with the generated one in the code\n if (params.versionToCompareTo === 'SNAPSHOT') {\n return false\n }\n let versionToCompareTo = params.versionToCompareTo\n if (versionToCompareTo.endsWith('-SNAPSHOT')) {\n versionToCompareTo = versionToCompareTo.replace('-SNAPSHOT', '')\n const parts = versionToCompareTo.split('.')\n if (parts.length === 1) {\n versionToCompareTo = `${parts[0]}.0.0`\n } else if (parts.length === 2) {\n versionToCompareTo = `${parts[0]}.${parts[1]}.0`\n } else if (parts.length === 3) {\n versionToCompareTo = `${parts[0]}.${parts[1]}.${parts[2]}`\n }\n }\n if (!semver.valid(versionToCompareTo)) {\n throw new Error('Invalid version to compare to')\n }\n let version: string = ''\n if (semver.valid(params.possiblyVersionOrDockerPath ?? '')) {\n version = params.possiblyVersionOrDockerPath ?? ''\n } else {\n const versionSplit = params.possiblyVersionOrDockerPath?.split(':') ?? []\n if (versionSplit.length > 1) {\n version = versionSplit[1]\n } else {\n // bare version string not valid semver (e.g. '8.10-SNAPSHOT') \u2014 use as-is so SNAPSHOT expansion can handle it\n version = params.possiblyVersionOrDockerPath ?? ''\n }\n }\n if (params.trueForSnapshot && version.includes('SNAPSHOT')) {\n if (version === 'SNAPSHOT') {\n // bare SNAPSHOT: `true` short-circuits here; `'compare'` falls through to invalid-version handling\n if (params.trueForSnapshot !== 'compare') {\n return true\n }\n } else {\n version = version.replace('-SNAPSHOT', '')\n if (version.split('.').length === 1) {\n version = `${version}.99.99`\n }\n if (version.split('.').length === 2) {\n version = `${version}.99`\n }\n if (version.split('.').length === 3) {\n version = `${version.split('.')[0]}.${version.split('.')[1]}.99`\n }\n }\n }\n\n let parsedVersionToCompareTo: string = ''\n if (semver.valid(versionToCompareTo ?? '')) {\n parsedVersionToCompareTo = versionToCompareTo ?? ''\n } else {\n const versionSplit = versionToCompareTo?.split(':') ?? []\n if (versionSplit.length > 1) {\n parsedVersionToCompareTo = versionSplit[1]\n }\n }\n if (params.trueForSnapshot && parsedVersionToCompareTo === 'SNAPSHOT') {\n return true\n }\n\n if (!semver.valid(version)) {\n return !!params.trueOnInvalidVersion\n }\n\n switch (params.operator) {\n case VersionCheckOperator.LessThan:\n return semver.lt(version, parsedVersionToCompareTo)\n case VersionCheckOperator.LessThanOrEqual:\n return semver.lte(version, parsedVersionToCompareTo)\n case VersionCheckOperator.GreaterThan:\n return semver.gt(version, parsedVersionToCompareTo)\n case VersionCheckOperator.GreaterThanOrEqual:\n return semver.gte(version, parsedVersionToCompareTo)\n case VersionCheckOperator.SameMajor:\n return semver.major(version) === semver.major(parsedVersionToCompareTo)\n case VersionCheckOperator.SameMinor:\n return (\n semver.major(version) === semver.major(parsedVersionToCompareTo) &&\n semver.minor(version) === semver.minor(parsedVersionToCompareTo)\n )\n default:\n return false\n }\n}\n"],
5
- "mappings": "AAMA,YAAY,YAAY;AAGjB,IAAK,uBAAL,kBAAKA,0BAAL;AACL,EAAAA,4CAAA;AACA,EAAAA,4CAAA;AACA,EAAAA,4CAAA;AACA,EAAAA,4CAAA;AACA,EAAAA,4CAAA;AACA,EAAAA,4CAAA;AANU,SAAAA;AAAA,GAAA;AASL,MAAM,eAAe,CAAC,WAMvB;AAIJ,MAAI,OAAO,uBAAuB,YAAY;AAC5C,WAAO;AAAA,EACT;AACA,MAAI,qBAAqB,OAAO;AAChC,MAAI,mBAAmB,SAAS,WAAW,GAAG;AAC5C,yBAAqB,mBAAmB,QAAQ,aAAa,EAAE;AAC/D,UAAM,QAAQ,mBAAmB,MAAM,GAAG;AAC1C,QAAI,MAAM,WAAW,GAAG;AACtB,2BAAqB,GAAG,MAAM,CAAC,CAAC;AAAA,IAClC,WAAW,MAAM,WAAW,GAAG;AAC7B,2BAAqB,GAAG,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAAA,IAC9C,WAAW,MAAM,WAAW,GAAG;AAC7B,2BAAqB,GAAG,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAAA,IAC1D;AAAA,EACF;AACA,MAAI,CAAC,OAAO,MAAM,kBAAkB,GAAG;AACrC,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AACA,MAAI,UAAkB;AACtB,MAAI,OAAO,MAAM,OAAO,+BAA+B,EAAE,GAAG;AAC1D,cAAU,OAAO,+BAA+B;AAAA,EAClD,OAAO;AACL,UAAM,eAAe,OAAO,6BAA6B,MAAM,GAAG,KAAK,CAAC;AACxE,QAAI,aAAa,SAAS,GAAG;AAC3B,gBAAU,aAAa,CAAC;AAAA,IAC1B,OAAO;AAEL,gBAAU,OAAO,+BAA+B;AAAA,IAClD;AAAA,EACF;AACA,MAAI,OAAO,mBAAmB,QAAQ,SAAS,UAAU,GAAG;AAC1D,QAAI,YAAY,YAAY;AAE1B,UAAI,OAAO,oBAAoB,WAAW;AACxC,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AACL,gBAAU,QAAQ,QAAQ,aAAa,EAAE;AACzC,UAAI,QAAQ,MAAM,GAAG,EAAE,WAAW,GAAG;AACnC,kBAAU,GAAG,OAAO;AAAA,MACtB;AACA,UAAI,QAAQ,MAAM,GAAG,EAAE,WAAW,GAAG;AACnC,kBAAU,GAAG,OAAO;AAAA,MACtB;AACA,UAAI,QAAQ,MAAM,GAAG,EAAE,WAAW,GAAG;AACnC,kBAAU,GAAG,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;AAEA,MAAI,2BAAmC;AACvC,MAAI,OAAO,MAAM,sBAAsB,EAAE,GAAG;AAC1C,+BAA2B,sBAAsB;AAAA,EACnD,OAAO;AACL,UAAM,eAAe,oBAAoB,MAAM,GAAG,KAAK,CAAC;AACxD,QAAI,aAAa,SAAS,GAAG;AAC3B,iCAA2B,aAAa,CAAC;AAAA,IAC3C;AAAA,EACF;AACA,MAAI,OAAO,mBAAmB,6BAA6B,YAAY;AACrE,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,OAAO,MAAM,OAAO,GAAG;AAC1B,WAAO,CAAC,CAAC,OAAO;AAAA,EAClB;AAEA,UAAQ,OAAO,UAAU;AAAA,IACvB,KAAK;AACH,aAAO,OAAO,GAAG,SAAS,wBAAwB;AAAA,IACpD,KAAK;AACH,aAAO,OAAO,IAAI,SAAS,wBAAwB;AAAA,IACrD,KAAK;AACH,aAAO,OAAO,GAAG,SAAS,wBAAwB;AAAA,IACpD,KAAK;AACH,aAAO,OAAO,IAAI,SAAS,wBAAwB;AAAA,IACrD,KAAK;AACH,aAAO,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,wBAAwB;AAAA,IACxE,KAAK;AACH,aACE,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,wBAAwB,KAC/D,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,wBAAwB;AAAA,IAEnE;AACE,aAAO;AAAA,EACX;AACF;",
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 * as semver from 'semver'\nimport {\n APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION,\n APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION,\n APP_INTEGRATIONS_MIN_VERSION,\n} from '../constants/misc.const.js'\n\n// eslint-disable-next-line no-shadow\nexport enum VersionCheckOperator {\n LessThan,\n LessThanOrEqual,\n GreaterThan,\n GreaterThanOrEqual,\n SameMajor,\n SameMinor,\n}\n\nexport const checkVersion = (params: {\n possiblyVersionOrDockerPath?: string\n trueForSnapshot: boolean | 'compare'\n operator: VersionCheckOperator\n versionToCompareTo: string\n trueOnInvalidVersion?: boolean\n}) => {\n // quick exit: if the versionToCompareTo is\n // - `SNAPSHOT` there is not a lot we can compare here to, so we return false directly\n // - ends with `-SNAPSHOT` we ignore the `-SNAPSHOT` part for the comparison, guess a good matching semver compliant version and try to move on with the generated one in the code\n if (params.versionToCompareTo === 'SNAPSHOT') {\n return false\n }\n let versionToCompareTo = params.versionToCompareTo\n if (versionToCompareTo.endsWith('-SNAPSHOT')) {\n versionToCompareTo = versionToCompareTo.replace('-SNAPSHOT', '')\n const parts = versionToCompareTo.split('.')\n if (parts.length === 1) {\n versionToCompareTo = `${parts[0]}.0.0`\n } else if (parts.length === 2) {\n versionToCompareTo = `${parts[0]}.${parts[1]}.0`\n } else if (parts.length === 3) {\n versionToCompareTo = `${parts[0]}.${parts[1]}.${parts[2]}`\n }\n }\n if (!semver.valid(versionToCompareTo)) {\n throw new Error('Invalid version to compare to')\n }\n let version: string = ''\n if (semver.valid(params.possiblyVersionOrDockerPath ?? '')) {\n version = params.possiblyVersionOrDockerPath ?? ''\n } else {\n const versionSplit = params.possiblyVersionOrDockerPath?.split(':') ?? []\n if (versionSplit.length > 1) {\n version = versionSplit[1]\n } else {\n // bare version string not valid semver (e.g. '8.10-SNAPSHOT') \u2014 use as-is so SNAPSHOT expansion can handle it\n version = params.possiblyVersionOrDockerPath ?? ''\n }\n }\n if (params.trueForSnapshot && version.includes('SNAPSHOT')) {\n if (version === 'SNAPSHOT') {\n // bare SNAPSHOT: `true` short-circuits here; `'compare'` falls through to invalid-version handling\n if (params.trueForSnapshot !== 'compare') {\n return true\n }\n } else {\n version = version.replace('-SNAPSHOT', '')\n if (version.split('.').length === 1) {\n version = `${version}.99.99`\n }\n if (version.split('.').length === 2) {\n version = `${version}.99`\n }\n if (version.split('.').length === 3) {\n version = `${version.split('.')[0]}.${version.split('.')[1]}.99`\n }\n }\n }\n\n let parsedVersionToCompareTo: string = ''\n if (semver.valid(versionToCompareTo ?? '')) {\n parsedVersionToCompareTo = versionToCompareTo ?? ''\n } else {\n const versionSplit = versionToCompareTo?.split(':') ?? []\n if (versionSplit.length > 1) {\n parsedVersionToCompareTo = versionSplit[1]\n }\n }\n if (params.trueForSnapshot && parsedVersionToCompareTo === 'SNAPSHOT') {\n return true\n }\n\n if (!semver.valid(version)) {\n return !!params.trueOnInvalidVersion\n }\n\n switch (params.operator) {\n case VersionCheckOperator.LessThan:\n return semver.lt(version, parsedVersionToCompareTo)\n case VersionCheckOperator.LessThanOrEqual:\n return semver.lte(version, parsedVersionToCompareTo)\n case VersionCheckOperator.GreaterThan:\n return semver.gt(version, parsedVersionToCompareTo)\n case VersionCheckOperator.GreaterThanOrEqual:\n return semver.gte(version, parsedVersionToCompareTo)\n case VersionCheckOperator.SameMajor:\n return semver.major(version) === semver.major(parsedVersionToCompareTo)\n case VersionCheckOperator.SameMinor:\n return (\n semver.major(version) === semver.major(parsedVersionToCompareTo) &&\n semver.minor(version) === semver.minor(parsedVersionToCompareTo)\n )\n default:\n return false\n }\n}\n\n/**\n * Version gate for the App Integrations exporter toggle (#8536). Shared by the\n * c4 settings tile and the console-backend update guard so both stay in\n * lockstep \u2014 the fix landed as patches on the 8.9 stream (zeebe >=8.9.14 AND\n * connectorBridge >=8.9.7), everything from 8.10.0-alpha4 on already carries\n * both fixes. A plain zeebe >=8.9.14 check would wrongly match\n * 8.10.0-alpha1/2/3, which predate the fix.\n */\nexport const isAppIntegrationsVersionSupported = (versions: {\n zeebe?: string\n connectorBridge?: string\n}): boolean => {\n if (!versions.zeebe) {\n return false\n }\n const isIn89Stream = checkVersion({\n possiblyVersionOrDockerPath: versions.zeebe,\n trueForSnapshot: 'compare',\n operator: VersionCheckOperator.SameMinor,\n versionToCompareTo: '8.9.0',\n })\n if (!isIn89Stream) {\n return checkVersion({\n possiblyVersionOrDockerPath: versions.zeebe,\n trueForSnapshot: true,\n operator: VersionCheckOperator.GreaterThanOrEqual,\n versionToCompareTo: APP_INTEGRATIONS_MIN_VERSION,\n })\n }\n return (\n checkVersion({\n possiblyVersionOrDockerPath: versions.zeebe,\n trueForSnapshot: true,\n operator: VersionCheckOperator.GreaterThanOrEqual,\n versionToCompareTo: APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION,\n }) &&\n checkVersion({\n possiblyVersionOrDockerPath: versions.connectorBridge,\n trueForSnapshot: true,\n operator: VersionCheckOperator.GreaterThanOrEqual,\n versionToCompareTo:\n APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION,\n })\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["VersionCheckOperator"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/ccma-shared-types",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Shared TypeScript types for Camunda Cloud Management Apps",
5
5
  "bugs": {
6
6
  "url": "https://github.com/camunda/camunda-cloud-management-apps/issues"