@camunda/ccma-shared-types 0.6.0 → 1.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.
Files changed (46) hide show
  1. package/dist/_tests/types/alertSubscription.enum.spec.d.ts +1 -0
  2. package/dist/_tests/utils/connectivityStatus.utils.spec.d.ts +1 -0
  3. package/dist/_tests/utils/secondaryStorageStatus.utils.spec.d.ts +1 -0
  4. package/dist/constants/failoverRegionPairs.const.d.ts +21 -3
  5. package/dist/constants/failoverRegionPairs.const.js +13 -1
  6. package/dist/constants/failoverRegionPairs.const.js.map +2 -2
  7. package/dist/constants/misc.const.d.ts +0 -82
  8. package/dist/constants/misc.const.js +0 -14
  9. package/dist/constants/misc.const.js.map +2 -2
  10. package/dist/constants/version-gates.const.d.ts +343 -0
  11. package/dist/constants/version-gates.const.js +109 -0
  12. package/dist/constants/version-gates.const.js.map +7 -0
  13. package/dist/dtos/AlertSubscription.dto.d.ts +1 -1
  14. package/dist/dtos/AlertSubscription.dto.js.map +1 -1
  15. package/dist/dtos/CommonCluster.dto.d.ts +21 -1
  16. package/dist/dtos/ControlV2.dto.d.ts +14 -1
  17. package/dist/dtos/K8sContext.dto.d.ts +14 -0
  18. package/dist/dtos/SalesPlan.dto.d.ts +0 -1
  19. package/dist/dtos/SalesPlan.dto.js +0 -7
  20. package/dist/dtos/SalesPlan.dto.js.map +2 -2
  21. package/dist/enums/AlertSubscription.enum.d.ts +1 -3
  22. package/dist/enums/AlertSubscription.enum.js +0 -2
  23. package/dist/enums/AlertSubscription.enum.js.map +2 -2
  24. package/dist/enums/AuditEntity.enum.d.ts +2 -0
  25. package/dist/enums/AuditEntity.enum.js +2 -0
  26. package/dist/enums/AuditEntity.enum.js.map +2 -2
  27. package/dist/index.d.ts +6 -3
  28. package/dist/index.js +113 -7
  29. package/dist/index.js.map +2 -2
  30. package/dist/types/SalesPlanType.type.d.ts +1 -1
  31. package/dist/types/hdp.types.d.ts +1 -3
  32. package/dist/types/hdp.types.js +0 -2
  33. package/dist/types/hdp.types.js.map +2 -2
  34. package/dist/utils/connectivityStatus.utils.d.ts +28 -0
  35. package/dist/utils/connectivityStatus.utils.js +32 -0
  36. package/dist/utils/connectivityStatus.utils.js.map +7 -0
  37. package/dist/utils/failoverKeyPolicy.utils.d.ts +6 -9
  38. package/dist/utils/failoverKeyPolicy.utils.js +1 -2
  39. package/dist/utils/failoverKeyPolicy.utils.js.map +2 -2
  40. package/dist/utils/secondaryStorageStatus.utils.d.ts +25 -0
  41. package/dist/utils/secondaryStorageStatus.utils.js +13 -0
  42. package/dist/utils/secondaryStorageStatus.utils.js.map +7 -0
  43. package/dist/utils/versionCheck.utils.d.ts +22 -0
  44. package/dist/utils/versionCheck.utils.js +44 -4
  45. package/dist/utils/versionCheck.utils.js.map +2 -2
  46. package/package.json +1 -1
@@ -0,0 +1,25 @@
1
+ export type SecondaryStorageStatus = 'SecondaryBucketReady' | 'SecondaryEncryptionNotReady';
2
+ interface SecondaryStorageStatusCondition {
3
+ type?: string;
4
+ reason?: string;
5
+ lastTransitionTime?: string | Date;
6
+ }
7
+ /**
8
+ * Pick the most recent `SecondaryStorageReady` condition from the
9
+ * operator-reported status conditions list and map its `reason` to a
10
+ * `SecondaryStorageStatus`.
11
+ *
12
+ * Replication to the secondary region can fail silently: the secondary key
13
+ * is not accessible, but nothing blocks cluster creation on it. This lets
14
+ * the encryption tab warn the customer instead of staying quiet about it.
15
+ *
16
+ * Falls back to `SecondaryBucketReady` only when no condition exists at
17
+ * all — a cluster the operator has not reported on yet is not a known
18
+ * problem. Once a `SecondaryStorageReady` condition exists, only its exact
19
+ * known-good reason counts as ready; any other reason (including one this
20
+ * function does not recognise yet) is treated as not ready. Defaulting an
21
+ * unrecognised reason to "ready" would hide a new operator failure reason
22
+ * behind the same silent failure this function exists to catch.
23
+ */
24
+ export declare function deriveSecondaryStorageStatus(conditions: SecondaryStorageStatusCondition[] | undefined): SecondaryStorageStatus;
25
+ export {};
@@ -0,0 +1,13 @@
1
+ function deriveSecondaryStorageStatus(conditions) {
2
+ const secondaryStorageReady = (conditions ?? []).filter((c) => c.type === "SecondaryStorageReady").slice().sort((a, b) => {
3
+ const aTime = new Date(a.lastTransitionTime ?? 0).getTime();
4
+ const bTime = new Date(b.lastTransitionTime ?? 0).getTime();
5
+ return (Number.isFinite(bTime) ? bTime : 0) - (Number.isFinite(aTime) ? aTime : 0);
6
+ })[0];
7
+ if (!secondaryStorageReady) return "SecondaryBucketReady";
8
+ return secondaryStorageReady.reason === "SecondaryBucketReady" ? "SecondaryBucketReady" : "SecondaryEncryptionNotReady";
9
+ }
10
+ export {
11
+ deriveSecondaryStorageStatus
12
+ };
13
+ //# sourceMappingURL=secondaryStorageStatus.utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/secondaryStorageStatus.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\n// Reason values the operator emits on the SecondaryStorageReady condition.\n// Unlike EncryptionReady, most clusters never emit this condition at all\n// (single-region clusters have no secondary to replicate to), so the default\n// below is \"ready\" rather than \"not ready\".\nexport type SecondaryStorageStatus =\n | 'SecondaryBucketReady'\n | 'SecondaryEncryptionNotReady'\n\ninterface SecondaryStorageStatusCondition {\n type?: string\n reason?: string\n lastTransitionTime?: string | Date\n}\n\n/**\n * Pick the most recent `SecondaryStorageReady` condition from the\n * operator-reported status conditions list and map its `reason` to a\n * `SecondaryStorageStatus`.\n *\n * Replication to the secondary region can fail silently: the secondary key\n * is not accessible, but nothing blocks cluster creation on it. This lets\n * the encryption tab warn the customer instead of staying quiet about it.\n *\n * Falls back to `SecondaryBucketReady` only when no condition exists at\n * all \u2014 a cluster the operator has not reported on yet is not a known\n * problem. Once a `SecondaryStorageReady` condition exists, only its exact\n * known-good reason counts as ready; any other reason (including one this\n * function does not recognise yet) is treated as not ready. Defaulting an\n * unrecognised reason to \"ready\" would hide a new operator failure reason\n * behind the same silent failure this function exists to catch.\n */\nexport function deriveSecondaryStorageStatus(\n conditions: SecondaryStorageStatusCondition[] | undefined,\n): SecondaryStorageStatus {\n const secondaryStorageReady = (conditions ?? [])\n .filter((c) => c.type === 'SecondaryStorageReady')\n .slice()\n .sort((a, b) => {\n const aTime = new Date(a.lastTransitionTime ?? 0).getTime()\n const bTime = new Date(b.lastTransitionTime ?? 0).getTime()\n return (\n (Number.isFinite(bTime) ? bTime : 0) -\n (Number.isFinite(aTime) ? aTime : 0)\n )\n })[0]\n\n if (!secondaryStorageReady) return 'SecondaryBucketReady'\n return secondaryStorageReady.reason === 'SecondaryBucketReady'\n ? 'SecondaryBucketReady'\n : 'SecondaryEncryptionNotReady'\n}\n"],
5
+ "mappings": "AAqCO,SAAS,6BACd,YACwB;AACxB,QAAM,yBAAyB,cAAc,CAAC,GAC3C,OAAO,CAAC,MAAM,EAAE,SAAS,uBAAuB,EAChD,MAAM,EACN,KAAK,CAAC,GAAG,MAAM;AACd,UAAM,QAAQ,IAAI,KAAK,EAAE,sBAAsB,CAAC,EAAE,QAAQ;AAC1D,UAAM,QAAQ,IAAI,KAAK,EAAE,sBAAsB,CAAC,EAAE,QAAQ;AAC1D,YACG,OAAO,SAAS,KAAK,IAAI,QAAQ,MACjC,OAAO,SAAS,KAAK,IAAI,QAAQ;AAAA,EAEtC,CAAC,EAAE,CAAC;AAEN,MAAI,CAAC,sBAAuB,QAAO;AACnC,SAAO,sBAAsB,WAAW,yBACpC,yBACA;AACN;",
6
+ "names": []
7
+ }
@@ -25,3 +25,25 @@ export declare const isAppIntegrationsVersionSupported: (versions: {
25
25
  zeebe?: string;
26
26
  connectorBridge?: string;
27
27
  }) => boolean;
28
+ /**
29
+ * Version gate for the secrets filter mode setting on Connectors
30
+ * (`CAMUNDA_CONNECTOR_SECRETRESOLVER_SECRETFILTER_MODE`). Each 8.x line got the
31
+ * fix on a different patch, so a single floor across all lines is wrong: it
32
+ * would open the setting on an early patch of a newer line, or close it on a
33
+ * late patch of an older line. This picks the zeebe minor line first, then
34
+ * applies that line's own floor.
35
+ *
36
+ * On the 8.6 to 8.9 lines, each floor is the patch where the shipped default
37
+ * became STRICT. Below its floor a line either has no setting at all, or has it
38
+ * with the DISABLED default, so the toggle stays hidden and never shows a mode
39
+ * the cluster does not use.
40
+ *
41
+ * Above the 8.9 line, one floor covers everything: 8.10.0-alpha6 and all later
42
+ * versions, 8.11 included. That floor has a second reason, which
43
+ * SECRETS_FILTER_MODE_8_10_MIN_VERSION gives: on 8.10.0-alpha5 a mode other
44
+ * than STRICT crashes the Connectors runtime at startup.
45
+ *
46
+ * Shared by the c4 settings tile and the console-backend update guard so
47
+ * both stay in lockstep.
48
+ */
49
+ export declare const isSecretsFilterModeConfigurable: (zeebeVersion: string | undefined) => boolean;
@@ -1,9 +1,15 @@
1
1
  import * as semver from "semver";
2
2
  import {
3
3
  APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION,
4
+ APP_INTEGRATIONS_89_STREAM_MINOR,
4
5
  APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION,
5
- APP_INTEGRATIONS_MIN_VERSION
6
- } from "../constants/misc.const.js";
6
+ APP_INTEGRATIONS_MIN_VERSION,
7
+ SECRETS_FILTER_MODE_8_6_MIN_VERSION,
8
+ SECRETS_FILTER_MODE_8_7_MIN_VERSION,
9
+ SECRETS_FILTER_MODE_8_8_MIN_VERSION,
10
+ SECRETS_FILTER_MODE_8_9_MIN_VERSION,
11
+ SECRETS_FILTER_MODE_8_10_MIN_VERSION
12
+ } from "../constants/version-gates.const.js";
7
13
  var VersionCheckOperator = /* @__PURE__ */ ((VersionCheckOperator2) => {
8
14
  VersionCheckOperator2[VersionCheckOperator2["LessThan"] = 0] = "LessThan";
9
15
  VersionCheckOperator2[VersionCheckOperator2["LessThanOrEqual"] = 1] = "LessThanOrEqual";
@@ -101,7 +107,7 @@ const isAppIntegrationsVersionSupported = (versions) => {
101
107
  possiblyVersionOrDockerPath: versions.zeebe,
102
108
  trueForSnapshot: "compare",
103
109
  operator: 5 /* SameMinor */,
104
- versionToCompareTo: "8.9.0"
110
+ versionToCompareTo: APP_INTEGRATIONS_89_STREAM_MINOR
105
111
  });
106
112
  if (!isIn89Stream) {
107
113
  return checkVersion({
@@ -123,9 +129,43 @@ const isAppIntegrationsVersionSupported = (versions) => {
123
129
  versionToCompareTo: APP_INTEGRATIONS_89_STREAM_CONNECTOR_BRIDGE_MIN_VERSION
124
130
  });
125
131
  };
132
+ const isSecretsFilterModeConfigurable = (zeebeVersion) => {
133
+ if (!zeebeVersion) {
134
+ return false;
135
+ }
136
+ const lineFloors = [
137
+ SECRETS_FILTER_MODE_8_6_MIN_VERSION,
138
+ SECRETS_FILTER_MODE_8_7_MIN_VERSION,
139
+ SECRETS_FILTER_MODE_8_8_MIN_VERSION,
140
+ SECRETS_FILTER_MODE_8_9_MIN_VERSION
141
+ ];
142
+ for (const floor of lineFloors) {
143
+ const isOnThisLine = checkVersion({
144
+ possiblyVersionOrDockerPath: zeebeVersion,
145
+ trueForSnapshot: "compare",
146
+ operator: 5 /* SameMinor */,
147
+ versionToCompareTo: floor
148
+ });
149
+ if (isOnThisLine) {
150
+ return checkVersion({
151
+ possiblyVersionOrDockerPath: zeebeVersion,
152
+ trueForSnapshot: true,
153
+ operator: 3 /* GreaterThanOrEqual */,
154
+ versionToCompareTo: floor
155
+ });
156
+ }
157
+ }
158
+ return checkVersion({
159
+ possiblyVersionOrDockerPath: zeebeVersion,
160
+ trueForSnapshot: true,
161
+ operator: 3 /* GreaterThanOrEqual */,
162
+ versionToCompareTo: SECRETS_FILTER_MODE_8_10_MIN_VERSION
163
+ });
164
+ };
126
165
  export {
127
166
  VersionCheckOperator,
128
167
  checkVersion,
129
- isAppIntegrationsVersionSupported
168
+ isAppIntegrationsVersionSupported,
169
+ isSecretsFilterModeConfigurable
130
170
  };
131
171
  //# 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'\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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",
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_MINOR,\n APP_INTEGRATIONS_89_STREAM_ZEEBE_MIN_VERSION,\n APP_INTEGRATIONS_MIN_VERSION,\n SECRETS_FILTER_MODE_8_6_MIN_VERSION,\n SECRETS_FILTER_MODE_8_7_MIN_VERSION,\n SECRETS_FILTER_MODE_8_8_MIN_VERSION,\n SECRETS_FILTER_MODE_8_9_MIN_VERSION,\n SECRETS_FILTER_MODE_8_10_MIN_VERSION,\n} from '../constants/version-gates.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: APP_INTEGRATIONS_89_STREAM_MINOR,\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\n/**\n * Version gate for the secrets filter mode setting on Connectors\n * (`CAMUNDA_CONNECTOR_SECRETRESOLVER_SECRETFILTER_MODE`). Each 8.x line got the\n * fix on a different patch, so a single floor across all lines is wrong: it\n * would open the setting on an early patch of a newer line, or close it on a\n * late patch of an older line. This picks the zeebe minor line first, then\n * applies that line's own floor.\n *\n * On the 8.6 to 8.9 lines, each floor is the patch where the shipped default\n * became STRICT. Below its floor a line either has no setting at all, or has it\n * with the DISABLED default, so the toggle stays hidden and never shows a mode\n * the cluster does not use.\n *\n * Above the 8.9 line, one floor covers everything: 8.10.0-alpha6 and all later\n * versions, 8.11 included. That floor has a second reason, which\n * SECRETS_FILTER_MODE_8_10_MIN_VERSION gives: on 8.10.0-alpha5 a mode other\n * than STRICT crashes the Connectors runtime at startup.\n *\n * Shared by the c4 settings tile and the console-backend update guard so\n * both stay in lockstep.\n */\nexport const isSecretsFilterModeConfigurable = (\n zeebeVersion: string | undefined,\n): boolean => {\n if (!zeebeVersion) {\n return false\n }\n const lineFloors = [\n SECRETS_FILTER_MODE_8_6_MIN_VERSION,\n SECRETS_FILTER_MODE_8_7_MIN_VERSION,\n SECRETS_FILTER_MODE_8_8_MIN_VERSION,\n SECRETS_FILTER_MODE_8_9_MIN_VERSION,\n ]\n for (const floor of lineFloors) {\n const isOnThisLine = checkVersion({\n possiblyVersionOrDockerPath: zeebeVersion,\n trueForSnapshot: 'compare',\n operator: VersionCheckOperator.SameMinor,\n versionToCompareTo: floor,\n })\n if (isOnThisLine) {\n return checkVersion({\n possiblyVersionOrDockerPath: zeebeVersion,\n trueForSnapshot: true,\n operator: VersionCheckOperator.GreaterThanOrEqual,\n versionToCompareTo: floor,\n })\n }\n }\n // Not on the 8.6-8.9 lines: either older than 8.6, which never had the\n // setting, or 8.10 and above, which all share the 8.10 floor.\n return checkVersion({\n possiblyVersionOrDockerPath: zeebeVersion,\n trueForSnapshot: true,\n operator: VersionCheckOperator.GreaterThanOrEqual,\n versionToCompareTo: SECRETS_FILTER_MODE_8_10_MIN_VERSION,\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.6.0",
3
+ "version": "1.0.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"