@camunda8/sdk 8.7.24 → 8.7.26

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/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## [8.7.26](https://github.com/camunda/camunda-8-js-sdk/compare/v8.7.25...v8.7.26) (2025-07-30)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **docs:** adjust variable names for cookie auth ([a162005](https://github.com/camunda/camunda-8-js-sdk/commit/a162005e98cd03fc02021f96788f139a332c3f67))
7
+
8
+
9
+ ### Features
10
+
11
+ * add ability to override caching of clients. fixes [#575](https://github.com/camunda/camunda-8-js-sdk/issues/575) ([d9c24c5](https://github.com/camunda/camunda-8-js-sdk/commit/d9c24c5bde8d71eded2544dd7bcbc78f8d6dcf2f))
12
+ * add close() method to Rest Job Worker. Fixes [#571](https://github.com/camunda/camunda-8-js-sdk/issues/571) ([da239fb](https://github.com/camunda/camunda-8-js-sdk/commit/da239fb1e1d313798ae74ef7794ecc72e755449d))
13
+ * allow configuration of default Camunda8 client caching behaviour ([97d2a45](https://github.com/camunda/camunda-8-js-sdk/commit/97d2a45dfa19162cdfcda95fbe008882af00abcd))
14
+
15
+ ## [8.7.25](https://github.com/camunda/camunda-8-js-sdk/compare/v8.7.24...v8.7.25) (2025-07-29)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * export SearchUsersRequest type ([5c44ffe](https://github.com/camunda/camunda-8-js-sdk/commit/5c44ffe8074e3899df847710ec95a64477d9d61b))
21
+
22
+
23
+ ### Features
24
+
25
+ * export Camunda Rest Types. fixes [#564](https://github.com/camunda/camunda-8-js-sdk/issues/564) ([b4b0d53](https://github.com/camunda/camunda-8-js-sdk/commit/b4b0d53522513622f0db1f96de62906d2bbaff80))
26
+
1
27
  ## [8.7.24](https://github.com/camunda/camunda-8-js-sdk/compare/v8.7.23...v8.7.24) (2025-07-25)
2
28
 
3
29
 
package/README.md CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
6
6
 
7
- Full API Docs are [here](https://camunda.github.io/camunda-8-js-sdk/).
7
+ [Full API Docs](https://camunda.github.io/camunda-8-js-sdk/).
8
8
 
9
9
  This is the official Camunda 8 JavaScript SDK. It is written in TypeScript and runs on Node.js. See why [this does not run in a web browser](https://github.com/camunda/camunda-8-js-sdk/issues/79).
10
10
 
11
- See the QUICKSTART.md file in [the repository](https://github.com/camunda/camunda-8-js-sdk) for a quick start.
11
+ See the [Getting Started Example](https://docs.camunda.io/docs/next/guides/getting-started-example/) in the Camunda Docs for a quick start.
12
12
 
13
13
  ## What does "supported" mean?
14
14
 
@@ -32,15 +32,23 @@ npm i @camunda8/sdk
32
32
 
33
33
  ## Usage
34
34
 
35
- In this release, the functionality of Camunda 8 is exposed via dedicated clients for the component APIs.
35
+ The functionality of Camunda 8 is exposed via dedicated clients for the component APIs. The recommended API client for Camunda 8.8 is the Orchestration Cluster API, using the `CamundaRestClient`.
36
36
 
37
37
  ```typescript
38
38
  import { Camunda8 } from '@camunda8/sdk'
39
39
 
40
+ // Optional: Import types for CamundaRestClient requests and responses
41
+ import type { CamundaRestTypes} from '@camunda8/sdk'
42
+
40
43
  const c8 = new Camunda8()
41
- const restClient = c8.getCamundaRestClient() // New REST API
44
+
45
+ // Camunda 8 Orchestration API - recommended API from 8.8.0
46
+ const restClient = c8.getCamundaRestClient()
47
+
48
+ // Zeebe gRPC client - not recommended for new users
42
49
  const zeebe = c8.getZeebeGrpcApiClient()
43
- const zeebeRest = c8.getZeebeRestClient() // Deprecated
50
+
51
+ // Camunda v1 REST API clients
44
52
  const operate = c8.getOperateApiClient()
45
53
  const optimize = c8.getOptimizeApiClient()
46
54
  const tasklist = c8.getTasklistApiClient()
@@ -58,9 +66,9 @@ Any configuration passed in to the `Camunda8` constructor is merged over any con
58
66
 
59
67
  ## A note on how int64 is handled in the JavaScript SDK
60
68
 
61
- Entity keys in Camunda 8 are stored and represented as `int64` numbers. The range of `int64` extends to numbers that cannot be represented by the JavaScript `number` type. To deal with this, `int64` keys are serialised by the SDK to the JavaScript `string` type. See [this issue](https://github.com/camunda/camunda-8-js-sdk/issues/78) for more details.
69
+ Entity keys in Camunda 8.6 and earlier are stored and represented as `int64` numbers. The range of `int64` extends to numbers that cannot be represented by the JavaScript `number` type. To deal with this, `int64` keys are serialised by the SDK to the JavaScript `string` type. See [this issue](https://github.com/camunda/camunda-8-js-sdk/issues/78) for more details.
62
70
 
63
- For `int64` values whose type is not known ahead of time, such as job variables, you can pass an annotated data transfer object (DTO) to decode them reliably. If no DTO is specified, the default behavior of the SDK is to serialise all numbers to JavaScript `number`, and to throw an exception if a number value is detected at a runtime that cannot be accurately represented as the JavaScript `number` type (that is, a value greater than 2^53-1).
71
+ For `int64` values whose type is not known ahead of time, such as job variables, you can pass an annotated data transfer object (DTO) to decode them reliably. See the section on [Process Variable Typing](#process-variable-typing). If no DTO is specified, the default behavior of the SDK is to serialise all numbers to JavaScript `number`, and to throw an exception if a number value is detected at a runtime that cannot be accurately represented as the JavaScript `number` type (that is, a value greater than 2^53-1).
64
72
 
65
73
  ## Authorization
66
74
 
@@ -140,9 +148,9 @@ To use cookie auth, set the following value:
140
148
  CAMUNDA_AUTH_STRATEGY=COOKIE
141
149
 
142
150
  # Optional configurable values - these are the defaults
143
- CAMUNDA_AUTH_COOKIE_URL=http://localhost:8080/api/login
144
- CAMUNDA_AUTH_COOKIE_USERNAME=demo
145
- CAMUNDA_AUTH_COOKIE_PASSWORD=demo
151
+ CAMUNDA_COOKIE_AUTH_URL=http://localhost:8080/api/login
152
+ CAMUNDA_COOKIE_AUTH_USERNAME=demo
153
+ CAMUNDA_COOKIE_AUTH_PASSWORD=demo
146
154
  ```
147
155
 
148
156
  ### Bearer Token Auth
@@ -206,6 +214,16 @@ CAMUNDA_CUSTOM_PRIVATE_KEY_PATH # path to mTLS (client-side) key
206
214
 
207
215
  ## Connection configuration examples
208
216
 
217
+ ### Camunda 8 Run 8.8
218
+
219
+ This is the configuration for [Camunda 8 Run](https://developers.camunda.com/install-camunda-8/) - a local Camunda 8 instance that is the best way to get started.
220
+
221
+ ```bash
222
+ export ZEEBE_REST_ADDRESS='http://localhost:8080'
223
+ export ZEEBE_GRPC_ADDRESS='grpc://localhost:26500'
224
+ export CAMUNDA_AUTH_STRATEGY=NONE
225
+ ```
226
+
209
227
  ### Self-Managed
210
228
 
211
229
  This is the complete environment configuration needed to run against the Dockerised Self-Managed stack in the `docker` subdirectory:
@@ -226,9 +244,6 @@ export CAMUNDA_MODELER_BASE_URL='http://localhost:8070/api'
226
244
  # Turn off the tenant ID, which may have been set by multi-tenant tests
227
245
  # You can set this in a constructor config, or in the environment if running multi-tenant
228
246
  export CAMUNDA_TENANT_ID=''
229
-
230
- # TLS for gRPC is on by default. If the Zeebe broker is not secured by TLS, turn it off
231
- export CAMUNDA_SECURE_CONNECTION=false
232
247
  ```
233
248
 
234
249
  If you are using an OIDC that requires a `scope` parameter to be passed with the token request, set the following variable:
@@ -268,16 +283,13 @@ export ZEEBE_GRPC_ADDRESS='grpcs://5c34c0a7-7f29-4424-8414-125615f7a9b9.syd-1.ze
268
283
  export ZEEBE_REST_ADDRESS='https://syd-1.zeebe.camunda.io/5c34c0a7-7f29-4424-8414-125615f7a9b9'
269
284
  export ZEEBE_CLIENT_ID='yvvURO9TmBnP3zx4Xd8Ho6apgeiZTjn6'
270
285
  export ZEEBE_CLIENT_SECRET='iJJu-SHgUtuJTTAMnMLdcb8WGF8s2mHfXhXutEwe8eSbLXn98vUpoxtuLk5uG0en'
271
- # export CAMUNDA_CREDENTIALS_SCOPES='Zeebe,Tasklist,Operate,Optimize' # What APIs these client creds are authorised for
286
+
272
287
  export CAMUNDA_TASKLIST_BASE_URL='https://syd-1.tasklist.camunda.io/5c34c0a7-7f29-4424-8414-125615f7a9b9'
273
288
  export CAMUNDA_OPTIMIZE_BASE_URL='https://syd-1.optimize.camunda.io/5c34c0a7-7f29-4424-8414-125615f7a9b9'
274
289
  export CAMUNDA_OPERATE_BASE_URL='https://syd-1.operate.camunda.io/5c34c0a7-7f29-4424-8414-125615f7a9b9'
275
290
  export CAMUNDA_OAUTH_URL='https://login.cloud.camunda.io/oauth/token'
276
291
  export CAMUNDA_AUTH_STRATEGY='OAUTH'
277
292
 
278
- # This is on by default, but we include it in case it got turned off for local tests
279
- export CAMUNDA_SECURE_CONNECTION=true
280
-
281
293
  # Admin Console and Modeler API Client
282
294
  export CAMUNDA_CONSOLE_CLIENT_ID='e-JdgKfJy9hHSXzi'
283
295
  export CAMUNDA_CONSOLE_CLIENT_SECRET='DT8Pe-ANC6e3Je_ptLyzZvBNS0aFwaIV'
@@ -298,7 +310,7 @@ You can supply a custom logger via the constructor. For example, to use the [Pin
298
310
  ```typescript
299
311
  import pino from 'pino'
300
312
 
301
- import { Camunda8 } from '../../c8/index'
313
+ import { Camunda8 } from '@camunda8/sdk'
302
314
 
303
315
  const level = process.env.CAMUNDA_LOG_LEVEL ?? 'trace'
304
316
  const logger = pino({ level }) // Logging level controlled via the logging library
@@ -8,6 +8,16 @@ import { TasklistApiClient } from '../tasklist';
8
8
  import { ZeebeGrpcClient, ZeebeRestClient } from '../zeebe';
9
9
  import { Logger } from './lib/C8Logger';
10
10
  import { CamundaRestClient } from './lib/CamundaRestClient';
11
+ /** Options interface for client creation */
12
+ interface ClientOptions {
13
+ /** Whether to cache the client instance. Overrides global default if specified. */
14
+ cached?: boolean;
15
+ }
16
+ /** Options interface for Camunda8 constructor */
17
+ interface Camunda8Options {
18
+ /** Default caching behavior for all client methods. Default: true */
19
+ defaultCached?: boolean;
20
+ }
11
21
  /**
12
22
  * A single point of configuration for all Camunda Platform 8 clients.
13
23
  *
@@ -28,16 +38,19 @@ import { CamundaRestClient } from './lib/CamundaRestClient';
28
38
  * ```
29
39
  */
30
40
  export declare class Camunda8 {
31
- private operateApiClient?;
32
- private adminApiClient?;
33
- private modelerApiClient?;
34
- private optimizeApiClient?;
35
- private tasklistApiClient?;
36
- private zeebeGrpcApiClient?;
37
- private zeebeRestClient?;
41
+ private zeebeGrpcApiClients;
42
+ private camundaRestClients;
43
+ private operateApiClients;
44
+ private tasklistApiClients;
45
+ private optimizeApiClients;
46
+ private adminApiClients;
47
+ private modelerApiClients;
48
+ private zeebeRestClients;
49
+ private createdClients;
50
+ private __apiClientCreationListener?;
51
+ private defaultCached;
38
52
  private configuration;
39
53
  private oAuthProvider;
40
- private camundaRestClient?;
41
54
  log: Logger;
42
55
  /**
43
56
  * All constructor parameters for configuration are optional. If no configuration is provided, the SDK will use environment variables to configure itself.
@@ -55,44 +68,71 @@ export declare class Camunda8 {
55
68
  * a preconfigured auth strategy. This configuration parameter is provided for advanced use-cases.
56
69
  **/
57
70
  oAuthProvider?: IHeadersProvider;
58
- });
71
+ },
72
+ /**
73
+ * Optional global configuration for the Camunda8 instance.
74
+ */
75
+ options?: Camunda8Options);
76
+ /**
77
+ * @internal
78
+ * Private hook for framework integration. Not part of public API.
79
+ * Subject to change without notice. Use at your own risk.
80
+ */
81
+ private __registerApiClientCreationListener;
82
+ /**
83
+ * Creates a deterministic cache key from configuration object
84
+ */
85
+ private createConfigKey;
86
+ /**
87
+ * Closes all created API clients and clears all caches
88
+ */
89
+ closeAllClients(): Promise<void>;
59
90
  /**
60
91
  * Returns a client for the "Operate REST API"
61
92
  * See: https://docs.camunda.io/docs/apis-tools/operate-api/overview/
62
93
  */
63
- getOperateApiClient(config?: Camunda8ClientConfiguration): OperateApiClient;
94
+ getOperateApiClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): OperateApiClient;
95
+ private createNewOperateApiClient;
64
96
  /**
65
97
  * Returns a client for the Administration REST API
66
98
  * See: https://docs.camunda.io/docs/apis-tools/administration-api/administration-api-reference/
67
99
  */
68
- getAdminApiClient(config?: Camunda8ClientConfiguration): AdminApiClient;
100
+ getAdminApiClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): AdminApiClient;
101
+ private createNewAdminApiClient;
69
102
  /**
70
103
  * Returns a client for the Web Modeler REST API
71
104
  * See: https://docs.camunda.io/docs/apis-tools/web-modeler-api/overview/
72
105
  */
73
- getModelerApiClient(config?: Camunda8ClientConfiguration): ModelerApiClient;
106
+ getModelerApiClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): ModelerApiClient;
107
+ private createNewModelerApiClient;
74
108
  /**
75
109
  * Returns a client for the Optimize REST API
76
110
  * See: https://docs.camunda.io/docs/apis-tools/optimize-api/overview/
77
111
  */
78
- getOptimizeApiClient(config?: Camunda8ClientConfiguration): OptimizeApiClient;
112
+ getOptimizeApiClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): OptimizeApiClient;
113
+ private createNewOptimizeApiClient;
79
114
  /**
80
115
  * Returns a client for the Tasklist REST API
81
116
  * See: https://docs.camunda.io/docs/apis-tools/tasklist-api-rest/tasklist-api-rest-overview/
82
117
  */
83
- getTasklistApiClient(config?: Camunda8ClientConfiguration): TasklistApiClient;
118
+ getTasklistApiClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): TasklistApiClient;
119
+ private createNewTasklistApiClient;
84
120
  /**
85
121
  * Returns a client for the Zeebe gRPC API
86
122
  * See: https://docs.camunda.io/docs/apis-tools/zeebe-api/overview/
87
123
  */
88
- getZeebeGrpcApiClient(config?: Camunda8ClientConfiguration): ZeebeGrpcClient;
124
+ getZeebeGrpcApiClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): ZeebeGrpcClient;
125
+ private createNewZeebeGrpcClient;
89
126
  /**
90
127
  * @deprecated from 8.6.0. Please use getCamundaRestClient() instead.
91
128
  */
92
- getZeebeRestClient(config?: Camunda8ClientConfiguration): ZeebeRestClient;
129
+ getZeebeRestClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): ZeebeRestClient;
130
+ private createNewZeebeRestClient;
93
131
  /**
94
132
  * Returns a client for the Camunda 8 REST API
95
133
  * See: https://docs.camunda.io/docs/apis-tools/camunda-api-rest/camunda-api-rest-overview/
96
134
  */
97
- getCamundaRestClient(config?: Camunda8ClientConfiguration): CamundaRestClient;
135
+ getCamundaRestClient(config?: Camunda8ClientConfiguration, options?: ClientOptions): CamundaRestClient;
136
+ private createNewCamundaRestClient;
98
137
  }
138
+ export {};
package/dist/c8/index.js CHANGED
@@ -39,118 +39,281 @@ class Camunda8 {
39
39
  /**
40
40
  * Optional explicit overrides. With no configuration, the SDK will use environment variables to configure itself.
41
41
  */
42
- config = {}) {
42
+ config = {},
43
+ /**
44
+ * Optional global configuration for the Camunda8 instance.
45
+ */
46
+ options = { defaultCached: true }) {
47
+ // Enhanced configuration-based caching (new functionality)
48
+ this.zeebeGrpcApiClients = new Map();
49
+ this.camundaRestClients = new Map();
50
+ this.operateApiClients = new Map();
51
+ this.tasklistApiClients = new Map();
52
+ this.optimizeApiClients = new Map();
53
+ this.adminApiClients = new Map();
54
+ this.modelerApiClients = new Map();
55
+ this.zeebeRestClients = new Map();
56
+ // Client tracking for lifecycle management
57
+ this.createdClients = new Set();
43
58
  this.configuration =
44
59
  lib_1.CamundaEnvironmentConfigurator.mergeConfigWithEnvironment(config);
45
60
  // Allow custom oAuthProvider to be passed in.
46
61
  // See: https://github.com/camunda/camunda-8-js-sdk/issues/448
47
62
  this.oAuthProvider =
48
63
  config.oAuthProvider ?? (0, lib_1.constructOAuthProvider)(this.configuration);
64
+ this.defaultCached = options.defaultCached ?? true;
49
65
  this.log = (0, C8Logger_1.getLogger)(config);
50
66
  this.log.debug('Camunda8 SDK initialized');
51
67
  }
68
+ /**
69
+ * @internal
70
+ * Private hook for framework integration. Not part of public API.
71
+ * Subject to change without notice. Use at your own risk.
72
+ */
73
+ // @ts-expect-error - Intentionally unused, accessed via type bypass in frameworks
74
+ __registerApiClientCreationListener(callback) {
75
+ this.__apiClientCreationListener = callback;
76
+ }
77
+ /**
78
+ * Creates a deterministic cache key from configuration object
79
+ */
80
+ createConfigKey(config) {
81
+ return JSON.stringify(config, Object.keys(config).sort());
82
+ }
83
+ /**
84
+ * Closes all created API clients and clears all caches
85
+ */
86
+ async closeAllClients() {
87
+ const promises = Array.from(this.createdClients).map((client) => {
88
+ if (client instanceof zeebe_1.ZeebeGrpcClient) {
89
+ return client
90
+ .close()
91
+ .catch((err) => console.warn('Failed to close ZeebeGrpc client:', err));
92
+ }
93
+ if (client instanceof CamundaRestClient_1.CamundaRestClient) {
94
+ client.stopWorkers();
95
+ }
96
+ return Promise.resolve();
97
+ });
98
+ await Promise.all(promises);
99
+ // Clear all tracking
100
+ this.createdClients.clear();
101
+ // Clear all configuration-based caches
102
+ this.zeebeGrpcApiClients.clear();
103
+ this.camundaRestClients.clear();
104
+ this.operateApiClients.clear();
105
+ this.tasklistApiClients.clear();
106
+ this.optimizeApiClients.clear();
107
+ this.adminApiClients.clear();
108
+ this.modelerApiClients.clear();
109
+ this.zeebeRestClients.clear();
110
+ }
52
111
  /**
53
112
  * Returns a client for the "Operate REST API"
54
113
  * See: https://docs.camunda.io/docs/apis-tools/operate-api/overview/
55
114
  */
56
- getOperateApiClient(config = {}) {
57
- if (!this.operateApiClient) {
58
- this.operateApiClient = new operate_1.OperateApiClient({
59
- config: { ...this.configuration, ...config },
60
- oAuthProvider: this.oAuthProvider,
61
- });
115
+ getOperateApiClient(config = {}, options = {}) {
116
+ const { cached = this.defaultCached } = options;
117
+ if (!cached) {
118
+ return this.createNewOperateApiClient(config);
62
119
  }
63
- return this.operateApiClient;
120
+ const configKey = this.createConfigKey(config);
121
+ if (this.operateApiClients.has(configKey)) {
122
+ return this.operateApiClients.get(configKey);
123
+ }
124
+ const client = this.createNewOperateApiClient(config);
125
+ this.operateApiClients.set(configKey, client);
126
+ return client;
127
+ }
128
+ createNewOperateApiClient(config) {
129
+ const client = new operate_1.OperateApiClient({
130
+ config: { ...this.configuration, ...config },
131
+ oAuthProvider: this.oAuthProvider,
132
+ });
133
+ this.createdClients.add(client);
134
+ this.__apiClientCreationListener?.(client);
135
+ return client;
64
136
  }
65
137
  /**
66
138
  * Returns a client for the Administration REST API
67
139
  * See: https://docs.camunda.io/docs/apis-tools/administration-api/administration-api-reference/
68
140
  */
69
- getAdminApiClient(config = {}) {
70
- if (!this.adminApiClient) {
71
- this.adminApiClient = new admin_1.AdminApiClient({
72
- config: { ...this.configuration, ...config },
73
- oAuthProvider: this.oAuthProvider,
74
- });
141
+ getAdminApiClient(config = {}, options = {}) {
142
+ const { cached = this.defaultCached } = options;
143
+ if (!cached) {
144
+ return this.createNewAdminApiClient(config);
145
+ }
146
+ const configKey = this.createConfigKey(config);
147
+ if (this.adminApiClients.has(configKey)) {
148
+ return this.adminApiClients.get(configKey);
75
149
  }
76
- return this.adminApiClient;
150
+ const client = this.createNewAdminApiClient(config);
151
+ this.adminApiClients.set(configKey, client);
152
+ return client;
153
+ }
154
+ createNewAdminApiClient(config) {
155
+ const client = new admin_1.AdminApiClient({
156
+ config: { ...this.configuration, ...config },
157
+ oAuthProvider: this.oAuthProvider,
158
+ });
159
+ this.createdClients.add(client);
160
+ this.__apiClientCreationListener?.(client);
161
+ return client;
77
162
  }
78
163
  /**
79
164
  * Returns a client for the Web Modeler REST API
80
165
  * See: https://docs.camunda.io/docs/apis-tools/web-modeler-api/overview/
81
166
  */
82
- getModelerApiClient(config = {}) {
83
- if (!this.modelerApiClient) {
84
- this.modelerApiClient = new modeler_1.ModelerApiClient({
85
- config: { ...this.configuration, ...config },
86
- oAuthProvider: this.oAuthProvider,
87
- });
167
+ getModelerApiClient(config = {}, options = {}) {
168
+ const { cached = this.defaultCached } = options;
169
+ if (!cached) {
170
+ return this.createNewModelerApiClient(config);
171
+ }
172
+ const configKey = this.createConfigKey(config);
173
+ if (this.modelerApiClients.has(configKey)) {
174
+ return this.modelerApiClients.get(configKey);
88
175
  }
89
- return this.modelerApiClient;
176
+ const client = this.createNewModelerApiClient(config);
177
+ this.modelerApiClients.set(configKey, client);
178
+ return client;
179
+ }
180
+ createNewModelerApiClient(config) {
181
+ const client = new modeler_1.ModelerApiClient({
182
+ config: { ...this.configuration, ...config },
183
+ oAuthProvider: this.oAuthProvider,
184
+ });
185
+ this.createdClients.add(client);
186
+ this.__apiClientCreationListener?.(client);
187
+ return client;
90
188
  }
91
189
  /**
92
190
  * Returns a client for the Optimize REST API
93
191
  * See: https://docs.camunda.io/docs/apis-tools/optimize-api/overview/
94
192
  */
95
- getOptimizeApiClient(config = {}) {
96
- if (!this.optimizeApiClient) {
97
- this.optimizeApiClient = new optimize_1.OptimizeApiClient({
98
- config: { ...this.configuration, ...config },
99
- oAuthProvider: this.oAuthProvider,
100
- });
193
+ getOptimizeApiClient(config = {}, options = {}) {
194
+ const { cached = this.defaultCached } = options;
195
+ if (!cached) {
196
+ return this.createNewOptimizeApiClient(config);
197
+ }
198
+ const configKey = this.createConfigKey(config);
199
+ if (this.optimizeApiClients.has(configKey)) {
200
+ return this.optimizeApiClients.get(configKey);
101
201
  }
102
- return this.optimizeApiClient;
202
+ const client = this.createNewOptimizeApiClient(config);
203
+ this.optimizeApiClients.set(configKey, client);
204
+ return client;
205
+ }
206
+ createNewOptimizeApiClient(config) {
207
+ const client = new optimize_1.OptimizeApiClient({
208
+ config: { ...this.configuration, ...config },
209
+ oAuthProvider: this.oAuthProvider,
210
+ });
211
+ this.createdClients.add(client);
212
+ this.__apiClientCreationListener?.(client);
213
+ return client;
103
214
  }
104
215
  /**
105
216
  * Returns a client for the Tasklist REST API
106
217
  * See: https://docs.camunda.io/docs/apis-tools/tasklist-api-rest/tasklist-api-rest-overview/
107
218
  */
108
- getTasklistApiClient(config = {}) {
109
- if (!this.tasklistApiClient) {
110
- this.tasklistApiClient = new tasklist_1.TasklistApiClient({
111
- config: { ...this.configuration, ...config },
112
- oAuthProvider: this.oAuthProvider,
113
- });
219
+ getTasklistApiClient(config = {}, options = {}) {
220
+ const { cached = this.defaultCached } = options;
221
+ if (!cached) {
222
+ return this.createNewTasklistApiClient(config);
223
+ }
224
+ const configKey = this.createConfigKey(config);
225
+ if (this.tasklistApiClients.has(configKey)) {
226
+ return this.tasklistApiClients.get(configKey);
114
227
  }
115
- return this.tasklistApiClient;
228
+ const client = this.createNewTasklistApiClient(config);
229
+ this.tasklistApiClients.set(configKey, client);
230
+ return client;
231
+ }
232
+ createNewTasklistApiClient(config) {
233
+ const client = new tasklist_1.TasklistApiClient({
234
+ config: { ...this.configuration, ...config },
235
+ oAuthProvider: this.oAuthProvider,
236
+ });
237
+ this.createdClients.add(client);
238
+ this.__apiClientCreationListener?.(client);
239
+ return client;
116
240
  }
117
241
  /**
118
242
  * Returns a client for the Zeebe gRPC API
119
243
  * See: https://docs.camunda.io/docs/apis-tools/zeebe-api/overview/
120
244
  */
121
- getZeebeGrpcApiClient(config = {}) {
122
- if (!this.zeebeGrpcApiClient) {
123
- this.zeebeGrpcApiClient = new zeebe_1.ZeebeGrpcClient({
124
- config: { ...this.configuration, ...config },
125
- oAuthProvider: this.oAuthProvider,
126
- });
245
+ getZeebeGrpcApiClient(config = {}, options = {}) {
246
+ const { cached = this.defaultCached } = options;
247
+ if (!cached) {
248
+ return this.createNewZeebeGrpcClient(config);
127
249
  }
128
- return this.zeebeGrpcApiClient;
250
+ const configKey = this.createConfigKey(config);
251
+ if (this.zeebeGrpcApiClients.has(configKey)) {
252
+ return this.zeebeGrpcApiClients.get(configKey);
253
+ }
254
+ const client = this.createNewZeebeGrpcClient(config);
255
+ this.zeebeGrpcApiClients.set(configKey, client);
256
+ return client;
257
+ }
258
+ createNewZeebeGrpcClient(config) {
259
+ const client = new zeebe_1.ZeebeGrpcClient({
260
+ config: { ...this.configuration, ...config },
261
+ oAuthProvider: this.oAuthProvider,
262
+ });
263
+ this.createdClients.add(client);
264
+ this.__apiClientCreationListener?.(client);
265
+ return client;
129
266
  }
130
267
  /**
131
268
  * @deprecated from 8.6.0. Please use getCamundaRestClient() instead.
132
269
  */
133
- getZeebeRestClient(config = {}) {
134
- if (!this.zeebeRestClient) {
135
- this.zeebeRestClient = new zeebe_1.ZeebeRestClient({
136
- config: { ...this.configuration, ...config },
137
- oAuthProvider: this.oAuthProvider,
138
- });
270
+ getZeebeRestClient(config = {}, options = {}) {
271
+ const { cached = this.defaultCached } = options;
272
+ if (!cached) {
273
+ return this.createNewZeebeRestClient(config);
139
274
  }
140
- return this.zeebeRestClient;
275
+ const configKey = this.createConfigKey(config);
276
+ if (this.zeebeRestClients.has(configKey)) {
277
+ return this.zeebeRestClients.get(configKey);
278
+ }
279
+ const client = this.createNewZeebeRestClient(config);
280
+ this.zeebeRestClients.set(configKey, client);
281
+ return client;
282
+ }
283
+ createNewZeebeRestClient(config) {
284
+ const client = new zeebe_1.ZeebeRestClient({
285
+ config: { ...this.configuration, ...config },
286
+ oAuthProvider: this.oAuthProvider,
287
+ });
288
+ this.createdClients.add(client);
289
+ this.__apiClientCreationListener?.(client);
290
+ return client;
141
291
  }
142
292
  /**
143
293
  * Returns a client for the Camunda 8 REST API
144
294
  * See: https://docs.camunda.io/docs/apis-tools/camunda-api-rest/camunda-api-rest-overview/
145
295
  */
146
- getCamundaRestClient(config = {}) {
147
- if (!this.camundaRestClient) {
148
- this.camundaRestClient = new CamundaRestClient_1.CamundaRestClient({
149
- config: { ...this.configuration, ...config },
150
- oAuthProvider: this.oAuthProvider,
151
- });
152
- }
153
- return this.camundaRestClient;
296
+ getCamundaRestClient(config = {}, options = {}) {
297
+ const { cached = this.defaultCached } = options;
298
+ if (!cached) {
299
+ return this.createNewCamundaRestClient(config);
300
+ }
301
+ const configKey = this.createConfigKey(config);
302
+ if (this.camundaRestClients.has(configKey)) {
303
+ return this.camundaRestClients.get(configKey);
304
+ }
305
+ const client = this.createNewCamundaRestClient(config);
306
+ this.camundaRestClients.set(configKey, client);
307
+ return client;
308
+ }
309
+ createNewCamundaRestClient(config) {
310
+ const client = new CamundaRestClient_1.CamundaRestClient({
311
+ config: { ...this.configuration, ...config },
312
+ oAuthProvider: this.oAuthProvider,
313
+ });
314
+ this.createdClients.add(client);
315
+ this.__apiClientCreationListener?.(client);
316
+ return client;
154
317
  }
155
318
  }
156
319
  exports.Camunda8 = Camunda8;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/c8/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/c8/index.ts"],"names":[],"mappings":"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"}