@azure/web-pubsub 1.0.0-beta.3 → 1.0.1-alpha.20220103.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +107 -33
  3. package/dist/index.js +1048 -233
  4. package/dist/index.js.map +1 -1
  5. package/dist-esm/samples-dev/directMessage.js +1 -1
  6. package/dist-esm/samples-dev/directMessage.js.map +1 -1
  7. package/dist-esm/src/generated/generatedClient.js +3 -3
  8. package/dist-esm/src/generated/generatedClient.js.map +1 -1
  9. package/dist-esm/src/generated/generatedClientContext.js +8 -8
  10. package/dist-esm/src/generated/generatedClientContext.js.map +1 -1
  11. package/dist-esm/src/generated/models/index.js +6 -1
  12. package/dist-esm/src/generated/models/index.js.map +1 -1
  13. package/dist-esm/src/generated/models/mappers.js +368 -0
  14. package/dist-esm/src/generated/models/mappers.js.map +1 -0
  15. package/dist-esm/src/generated/models/parameters.js +105 -23
  16. package/dist-esm/src/generated/models/parameters.js.map +1 -1
  17. package/dist-esm/src/generated/operations/healthApi.js +4 -3
  18. package/dist-esm/src/generated/operations/healthApi.js.map +1 -1
  19. package/dist-esm/src/generated/operations/webPubSub.js +315 -59
  20. package/dist-esm/src/generated/operations/webPubSub.js.map +1 -1
  21. package/dist-esm/src/generated/operationsInterfaces/webPubSub.js.map +1 -1
  22. package/dist-esm/src/groupClient.js +32 -21
  23. package/dist-esm/src/groupClient.js.map +1 -1
  24. package/dist-esm/src/hubClient.js +162 -107
  25. package/dist-esm/src/hubClient.js.map +1 -1
  26. package/dist-esm/src/index.js +1 -1
  27. package/dist-esm/src/index.js.map +1 -1
  28. package/dist-esm/src/logger.js +1 -1
  29. package/dist-esm/src/logger.js.map +1 -1
  30. package/dist-esm/src/parseConnectionString.js +3 -1
  31. package/dist-esm/src/parseConnectionString.js.map +1 -1
  32. package/dist-esm/src/reverseProxyPolicy.js +21 -0
  33. package/dist-esm/src/reverseProxyPolicy.js.map +1 -0
  34. package/dist-esm/src/tracing.js +1 -1
  35. package/dist-esm/src/tracing.js.map +1 -1
  36. package/dist-esm/src/utils.js +2 -0
  37. package/dist-esm/src/utils.js.map +1 -1
  38. package/dist-esm/src/webPubSubCredentialPolicy.js +2 -2
  39. package/dist-esm/src/webPubSubCredentialPolicy.js.map +1 -1
  40. package/dist-esm/test/conn.spec.js +2 -2
  41. package/dist-esm/test/conn.spec.js.map +1 -1
  42. package/dist-esm/test/groups.spec.js +14 -6
  43. package/dist-esm/test/groups.spec.js.map +1 -1
  44. package/dist-esm/test/hubs.spec.js +53 -10
  45. package/dist-esm/test/hubs.spec.js.map +1 -1
  46. package/dist-esm/test/integration.spec.js +128 -0
  47. package/dist-esm/test/integration.spec.js.map +1 -0
  48. package/dist-esm/test/testEnv.js +6 -2
  49. package/dist-esm/test/testEnv.js.map +1 -1
  50. package/package.json +32 -32
  51. package/types/web-pubsub.d.ts +165 -109
  52. package/dist-esm/src/normalizeOptions.js +0 -8
  53. package/dist-esm/src/normalizeOptions.js.map +0 -1
package/dist/index.js CHANGED
@@ -8,7 +8,6 @@ var coreAuth = require('@azure/core-auth');
8
8
  var coreRestPipeline = require('@azure/core-rest-pipeline');
9
9
  var coreClient = require('@azure/core-client');
10
10
  var coreTracing = require('@azure/core-tracing');
11
- var tslib = require('tslib');
12
11
  var jwt = _interopDefault(require('jsonwebtoken'));
13
12
  var logger$1 = require('@azure/logger');
14
13
  var url = require('url');
@@ -20,10 +19,405 @@ var url = require('url');
20
19
  * Code generated by Microsoft (R) AutoRest Code Generator.
21
20
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
22
21
  */
23
- const $host = {
24
- parameterPath: "$host",
22
+ const ClientTokenResponse = {
23
+ type: {
24
+ name: "Composite",
25
+ className: "ClientTokenResponse",
26
+ modelProperties: {
27
+ token: {
28
+ serializedName: "token",
29
+ type: {
30
+ name: "String"
31
+ }
32
+ }
33
+ }
34
+ }
35
+ };
36
+ const ErrorDetail = {
37
+ type: {
38
+ name: "Composite",
39
+ className: "ErrorDetail",
40
+ modelProperties: {
41
+ code: {
42
+ serializedName: "code",
43
+ type: {
44
+ name: "String"
45
+ }
46
+ },
47
+ message: {
48
+ serializedName: "message",
49
+ type: {
50
+ name: "String"
51
+ }
52
+ },
53
+ target: {
54
+ serializedName: "target",
55
+ type: {
56
+ name: "String"
57
+ }
58
+ },
59
+ details: {
60
+ serializedName: "details",
61
+ type: {
62
+ name: "Sequence",
63
+ element: {
64
+ type: {
65
+ name: "Composite",
66
+ className: "ErrorDetail"
67
+ }
68
+ }
69
+ }
70
+ },
71
+ inner: {
72
+ serializedName: "inner",
73
+ type: {
74
+ name: "Composite",
75
+ className: "InnerError"
76
+ }
77
+ }
78
+ }
79
+ }
80
+ };
81
+ const InnerError = {
82
+ type: {
83
+ name: "Composite",
84
+ className: "InnerError",
85
+ modelProperties: {
86
+ code: {
87
+ serializedName: "code",
88
+ type: {
89
+ name: "String"
90
+ }
91
+ },
92
+ inner: {
93
+ serializedName: "inner",
94
+ type: {
95
+ name: "Composite",
96
+ className: "InnerError"
97
+ }
98
+ }
99
+ }
100
+ }
101
+ };
102
+ const WebPubSubGenerateClientTokenExceptionHeaders = {
103
+ type: {
104
+ name: "Composite",
105
+ className: "WebPubSubGenerateClientTokenExceptionHeaders",
106
+ modelProperties: {
107
+ errorCode: {
108
+ serializedName: "x-ms-error-code",
109
+ type: {
110
+ name: "String"
111
+ }
112
+ }
113
+ }
114
+ }
115
+ };
116
+ const WebPubSubCloseAllConnectionsExceptionHeaders = {
117
+ type: {
118
+ name: "Composite",
119
+ className: "WebPubSubCloseAllConnectionsExceptionHeaders",
120
+ modelProperties: {
121
+ errorCode: {
122
+ serializedName: "x-ms-error-code",
123
+ type: {
124
+ name: "String"
125
+ }
126
+ }
127
+ }
128
+ }
129
+ };
130
+ const WebPubSubSendToAllExceptionHeaders = {
131
+ type: {
132
+ name: "Composite",
133
+ className: "WebPubSubSendToAllExceptionHeaders",
134
+ modelProperties: {
135
+ errorCode: {
136
+ serializedName: "x-ms-error-code",
137
+ type: {
138
+ name: "String"
139
+ }
140
+ }
141
+ }
142
+ }
143
+ };
144
+ const WebPubSubConnectionExistsExceptionHeaders = {
145
+ type: {
146
+ name: "Composite",
147
+ className: "WebPubSubConnectionExistsExceptionHeaders",
148
+ modelProperties: {
149
+ errorCode: {
150
+ serializedName: "x-ms-error-code",
151
+ type: {
152
+ name: "String"
153
+ }
154
+ }
155
+ }
156
+ }
157
+ };
158
+ const WebPubSubCloseConnectionExceptionHeaders = {
159
+ type: {
160
+ name: "Composite",
161
+ className: "WebPubSubCloseConnectionExceptionHeaders",
162
+ modelProperties: {
163
+ errorCode: {
164
+ serializedName: "x-ms-error-code",
165
+ type: {
166
+ name: "String"
167
+ }
168
+ }
169
+ }
170
+ }
171
+ };
172
+ const WebPubSubSendToConnectionExceptionHeaders = {
173
+ type: {
174
+ name: "Composite",
175
+ className: "WebPubSubSendToConnectionExceptionHeaders",
176
+ modelProperties: {
177
+ errorCode: {
178
+ serializedName: "x-ms-error-code",
179
+ type: {
180
+ name: "String"
181
+ }
182
+ }
183
+ }
184
+ }
185
+ };
186
+ const WebPubSubGroupExistsExceptionHeaders = {
187
+ type: {
188
+ name: "Composite",
189
+ className: "WebPubSubGroupExistsExceptionHeaders",
190
+ modelProperties: {
191
+ errorCode: {
192
+ serializedName: "x-ms-error-code",
193
+ type: {
194
+ name: "String"
195
+ }
196
+ }
197
+ }
198
+ }
199
+ };
200
+ const WebPubSubCloseGroupConnectionsExceptionHeaders = {
201
+ type: {
202
+ name: "Composite",
203
+ className: "WebPubSubCloseGroupConnectionsExceptionHeaders",
204
+ modelProperties: {
205
+ errorCode: {
206
+ serializedName: "x-ms-error-code",
207
+ type: {
208
+ name: "String"
209
+ }
210
+ }
211
+ }
212
+ }
213
+ };
214
+ const WebPubSubSendToGroupExceptionHeaders = {
215
+ type: {
216
+ name: "Composite",
217
+ className: "WebPubSubSendToGroupExceptionHeaders",
218
+ modelProperties: {
219
+ errorCode: {
220
+ serializedName: "x-ms-error-code",
221
+ type: {
222
+ name: "String"
223
+ }
224
+ }
225
+ }
226
+ }
227
+ };
228
+ const WebPubSubAddConnectionToGroupExceptionHeaders = {
229
+ type: {
230
+ name: "Composite",
231
+ className: "WebPubSubAddConnectionToGroupExceptionHeaders",
232
+ modelProperties: {
233
+ errorCode: {
234
+ serializedName: "x-ms-error-code",
235
+ type: {
236
+ name: "String"
237
+ }
238
+ }
239
+ }
240
+ }
241
+ };
242
+ const WebPubSubRemoveConnectionFromGroupExceptionHeaders = {
243
+ type: {
244
+ name: "Composite",
245
+ className: "WebPubSubRemoveConnectionFromGroupExceptionHeaders",
246
+ modelProperties: {
247
+ errorCode: {
248
+ serializedName: "x-ms-error-code",
249
+ type: {
250
+ name: "String"
251
+ }
252
+ }
253
+ }
254
+ }
255
+ };
256
+ const WebPubSubUserExistsExceptionHeaders = {
257
+ type: {
258
+ name: "Composite",
259
+ className: "WebPubSubUserExistsExceptionHeaders",
260
+ modelProperties: {
261
+ errorCode: {
262
+ serializedName: "x-ms-error-code",
263
+ type: {
264
+ name: "String"
265
+ }
266
+ }
267
+ }
268
+ }
269
+ };
270
+ const WebPubSubCloseUserConnectionsExceptionHeaders = {
271
+ type: {
272
+ name: "Composite",
273
+ className: "WebPubSubCloseUserConnectionsExceptionHeaders",
274
+ modelProperties: {
275
+ errorCode: {
276
+ serializedName: "x-ms-error-code",
277
+ type: {
278
+ name: "String"
279
+ }
280
+ }
281
+ }
282
+ }
283
+ };
284
+ const WebPubSubSendToUserExceptionHeaders = {
285
+ type: {
286
+ name: "Composite",
287
+ className: "WebPubSubSendToUserExceptionHeaders",
288
+ modelProperties: {
289
+ errorCode: {
290
+ serializedName: "x-ms-error-code",
291
+ type: {
292
+ name: "String"
293
+ }
294
+ }
295
+ }
296
+ }
297
+ };
298
+ const WebPubSubAddUserToGroupExceptionHeaders = {
299
+ type: {
300
+ name: "Composite",
301
+ className: "WebPubSubAddUserToGroupExceptionHeaders",
302
+ modelProperties: {
303
+ errorCode: {
304
+ serializedName: "x-ms-error-code",
305
+ type: {
306
+ name: "String"
307
+ }
308
+ }
309
+ }
310
+ }
311
+ };
312
+ const WebPubSubRemoveUserFromGroupExceptionHeaders = {
313
+ type: {
314
+ name: "Composite",
315
+ className: "WebPubSubRemoveUserFromGroupExceptionHeaders",
316
+ modelProperties: {
317
+ errorCode: {
318
+ serializedName: "x-ms-error-code",
319
+ type: {
320
+ name: "String"
321
+ }
322
+ }
323
+ }
324
+ }
325
+ };
326
+ const WebPubSubRemoveUserFromAllGroupsExceptionHeaders = {
327
+ type: {
328
+ name: "Composite",
329
+ className: "WebPubSubRemoveUserFromAllGroupsExceptionHeaders",
330
+ modelProperties: {
331
+ errorCode: {
332
+ serializedName: "x-ms-error-code",
333
+ type: {
334
+ name: "String"
335
+ }
336
+ }
337
+ }
338
+ }
339
+ };
340
+ const WebPubSubGrantPermissionExceptionHeaders = {
341
+ type: {
342
+ name: "Composite",
343
+ className: "WebPubSubGrantPermissionExceptionHeaders",
344
+ modelProperties: {
345
+ errorCode: {
346
+ serializedName: "x-ms-error-code",
347
+ type: {
348
+ name: "String"
349
+ }
350
+ }
351
+ }
352
+ }
353
+ };
354
+ const WebPubSubRevokePermissionExceptionHeaders = {
355
+ type: {
356
+ name: "Composite",
357
+ className: "WebPubSubRevokePermissionExceptionHeaders",
358
+ modelProperties: {
359
+ errorCode: {
360
+ serializedName: "x-ms-error-code",
361
+ type: {
362
+ name: "String"
363
+ }
364
+ }
365
+ }
366
+ }
367
+ };
368
+ const WebPubSubCheckPermissionExceptionHeaders = {
369
+ type: {
370
+ name: "Composite",
371
+ className: "WebPubSubCheckPermissionExceptionHeaders",
372
+ modelProperties: {
373
+ errorCode: {
374
+ serializedName: "x-ms-error-code",
375
+ type: {
376
+ name: "String"
377
+ }
378
+ }
379
+ }
380
+ }
381
+ };
382
+
383
+ var Mappers = /*#__PURE__*/Object.freeze({
384
+ __proto__: null,
385
+ ClientTokenResponse: ClientTokenResponse,
386
+ ErrorDetail: ErrorDetail,
387
+ InnerError: InnerError,
388
+ WebPubSubGenerateClientTokenExceptionHeaders: WebPubSubGenerateClientTokenExceptionHeaders,
389
+ WebPubSubCloseAllConnectionsExceptionHeaders: WebPubSubCloseAllConnectionsExceptionHeaders,
390
+ WebPubSubSendToAllExceptionHeaders: WebPubSubSendToAllExceptionHeaders,
391
+ WebPubSubConnectionExistsExceptionHeaders: WebPubSubConnectionExistsExceptionHeaders,
392
+ WebPubSubCloseConnectionExceptionHeaders: WebPubSubCloseConnectionExceptionHeaders,
393
+ WebPubSubSendToConnectionExceptionHeaders: WebPubSubSendToConnectionExceptionHeaders,
394
+ WebPubSubGroupExistsExceptionHeaders: WebPubSubGroupExistsExceptionHeaders,
395
+ WebPubSubCloseGroupConnectionsExceptionHeaders: WebPubSubCloseGroupConnectionsExceptionHeaders,
396
+ WebPubSubSendToGroupExceptionHeaders: WebPubSubSendToGroupExceptionHeaders,
397
+ WebPubSubAddConnectionToGroupExceptionHeaders: WebPubSubAddConnectionToGroupExceptionHeaders,
398
+ WebPubSubRemoveConnectionFromGroupExceptionHeaders: WebPubSubRemoveConnectionFromGroupExceptionHeaders,
399
+ WebPubSubUserExistsExceptionHeaders: WebPubSubUserExistsExceptionHeaders,
400
+ WebPubSubCloseUserConnectionsExceptionHeaders: WebPubSubCloseUserConnectionsExceptionHeaders,
401
+ WebPubSubSendToUserExceptionHeaders: WebPubSubSendToUserExceptionHeaders,
402
+ WebPubSubAddUserToGroupExceptionHeaders: WebPubSubAddUserToGroupExceptionHeaders,
403
+ WebPubSubRemoveUserFromGroupExceptionHeaders: WebPubSubRemoveUserFromGroupExceptionHeaders,
404
+ WebPubSubRemoveUserFromAllGroupsExceptionHeaders: WebPubSubRemoveUserFromAllGroupsExceptionHeaders,
405
+ WebPubSubGrantPermissionExceptionHeaders: WebPubSubGrantPermissionExceptionHeaders,
406
+ WebPubSubRevokePermissionExceptionHeaders: WebPubSubRevokePermissionExceptionHeaders,
407
+ WebPubSubCheckPermissionExceptionHeaders: WebPubSubCheckPermissionExceptionHeaders
408
+ });
409
+
410
+ /*
411
+ * Copyright (c) Microsoft Corporation.
412
+ * Licensed under the MIT License.
413
+ *
414
+ * Code generated by Microsoft (R) AutoRest Code Generator.
415
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
416
+ */
417
+ const endpoint = {
418
+ parameterPath: "endpoint",
25
419
  mapper: {
26
- serializedName: "$host",
420
+ serializedName: "Endpoint",
27
421
  required: true,
28
422
  type: {
29
423
  name: "String"
@@ -34,7 +428,7 @@ const $host = {
34
428
  const apiVersion = {
35
429
  parameterPath: "apiVersion",
36
430
  mapper: {
37
- defaultValue: "2021-05-01-preview",
431
+ defaultValue: "2021-10-01",
38
432
  isConstant: true,
39
433
  serializedName: "api-version",
40
434
  type: {
@@ -42,6 +436,88 @@ const apiVersion = {
42
436
  }
43
437
  }
44
438
  };
439
+ const accept = {
440
+ parameterPath: "accept",
441
+ mapper: {
442
+ defaultValue: "application/json, text/json",
443
+ isConstant: true,
444
+ serializedName: "Accept",
445
+ type: {
446
+ name: "String"
447
+ }
448
+ }
449
+ };
450
+ const hub = {
451
+ parameterPath: "hub",
452
+ mapper: {
453
+ constraints: {
454
+ Pattern: new RegExp("^[A-Za-z][A-Za-z0-9_`,.[\\]]{0,127}$")
455
+ },
456
+ serializedName: "hub",
457
+ required: true,
458
+ type: {
459
+ name: "String"
460
+ }
461
+ }
462
+ };
463
+ const userId = {
464
+ parameterPath: ["options", "userId"],
465
+ mapper: {
466
+ serializedName: "userId",
467
+ type: {
468
+ name: "String"
469
+ }
470
+ }
471
+ };
472
+ const roles = {
473
+ parameterPath: ["options", "roles"],
474
+ mapper: {
475
+ serializedName: "role",
476
+ type: {
477
+ name: "Sequence",
478
+ element: {
479
+ type: {
480
+ name: "String"
481
+ }
482
+ }
483
+ }
484
+ },
485
+ collectionFormat: "Multi"
486
+ };
487
+ const expirationTimeInMinutes = {
488
+ parameterPath: ["options", "expirationTimeInMinutes"],
489
+ mapper: {
490
+ defaultValue: 60,
491
+ serializedName: "minutesToExpire",
492
+ type: {
493
+ name: "Number"
494
+ }
495
+ }
496
+ };
497
+ const excluded = {
498
+ parameterPath: ["options", "excluded"],
499
+ mapper: {
500
+ serializedName: "excluded",
501
+ type: {
502
+ name: "Sequence",
503
+ element: {
504
+ type: {
505
+ name: "String"
506
+ }
507
+ }
508
+ }
509
+ },
510
+ collectionFormat: "Multi"
511
+ };
512
+ const reason = {
513
+ parameterPath: ["options", "reason"],
514
+ mapper: {
515
+ serializedName: "reason",
516
+ type: {
517
+ name: "String"
518
+ }
519
+ }
520
+ };
45
521
  const contentType = {
46
522
  parameterPath: "contentType",
47
523
  mapper: {
@@ -63,6 +539,17 @@ const message = {
63
539
  }
64
540
  }
65
541
  };
542
+ const accept1 = {
543
+ parameterPath: "accept",
544
+ mapper: {
545
+ defaultValue: "application/json, text/json",
546
+ isConstant: true,
547
+ serializedName: "Accept",
548
+ type: {
549
+ name: "String"
550
+ }
551
+ }
552
+ };
66
553
  const contentType1 = {
67
554
  parameterPath: "contentType",
68
555
  mapper: {
@@ -84,21 +571,19 @@ const message1 = {
84
571
  }
85
572
  }
86
573
  };
87
- const hub = {
88
- parameterPath: "hub",
574
+ const accept2 = {
575
+ parameterPath: "accept",
89
576
  mapper: {
90
- constraints: {
91
- Pattern: new RegExp("^[A-Za-z][A-Za-z0-9_`,.[\\]]{0,127}$")
92
- },
93
- serializedName: "hub",
94
- required: true,
577
+ defaultValue: "application/json, text/json",
578
+ isConstant: true,
579
+ serializedName: "Accept",
95
580
  type: {
96
581
  name: "String"
97
582
  }
98
583
  }
99
584
  };
100
- const excluded = {
101
- parameterPath: ["options", "excluded"],
585
+ const excludedConnections = {
586
+ parameterPath: ["options", "excludedConnections"],
102
587
  mapper: {
103
588
  serializedName: "excluded",
104
589
  type: {
@@ -125,15 +610,6 @@ const connectionId = {
125
610
  }
126
611
  }
127
612
  };
128
- const reason = {
129
- parameterPath: ["options", "reason"],
130
- mapper: {
131
- serializedName: "reason",
132
- type: {
133
- name: "String"
134
- }
135
- }
136
- };
137
613
  const group = {
138
614
  parameterPath: "group",
139
615
  mapper: {
@@ -148,7 +624,7 @@ const group = {
148
624
  }
149
625
  }
150
626
  };
151
- const userId = {
627
+ const userId1 = {
152
628
  parameterPath: "userId",
153
629
  mapper: {
154
630
  constraints: {
@@ -188,7 +664,7 @@ const targetName = {
188
664
  * Code generated by Microsoft (R) AutoRest Code Generator.
189
665
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
190
666
  */
191
- /** Class representing a HealthApi. */
667
+ /** Class containing HealthApi operations. */
192
668
  class HealthApiImpl {
193
669
  /**
194
670
  * Initialize a new instance of the class HealthApi class.
@@ -206,13 +682,13 @@ class HealthApiImpl {
206
682
  }
207
683
  }
208
684
  // Operation Specifications
209
- const serializer = coreClient.createSerializer({}, /* isXml */ false);
685
+ const serializer = coreClient.createSerializer(Mappers, /* isXml */ false);
210
686
  const getServiceStatusOperationSpec = {
211
687
  path: "/api/health",
212
688
  httpMethod: "HEAD",
213
689
  responses: { 200: {}, default: {} },
214
690
  queryParameters: [apiVersion],
215
- urlParameters: [$host],
691
+ urlParameters: [endpoint],
216
692
  serializer
217
693
  };
218
694
 
@@ -223,7 +699,7 @@ const getServiceStatusOperationSpec = {
223
699
  * Code generated by Microsoft (R) AutoRest Code Generator.
224
700
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
225
701
  */
226
- /** Class representing a WebPubSub. */
702
+ /** Class containing WebPubSub operations. */
227
703
  class WebPubSubImpl {
228
704
  /**
229
705
  * Initialize a new instance of the class WebPubSub class.
@@ -232,6 +708,24 @@ class WebPubSubImpl {
232
708
  constructor(client) {
233
709
  this.client = client;
234
710
  }
711
+ /**
712
+ * Generate token for the client to connect Azure Web PubSub service.
713
+ * @param hub Target hub name, which should start with alphabetic characters and only contain
714
+ * alpha-numeric characters or underscore.
715
+ * @param options The options parameters.
716
+ */
717
+ generateClientToken(hub, options) {
718
+ return this.client.sendOperationRequest({ hub, options }, generateClientTokenOperationSpec);
719
+ }
720
+ /**
721
+ * Close the connections in the hub.
722
+ * @param hub Target hub name, which should start with alphabetic characters and only contain
723
+ * alpha-numeric characters or underscore.
724
+ * @param options The options parameters.
725
+ */
726
+ closeAllConnections(hub, options) {
727
+ return this.client.sendOperationRequest({ hub, options }, closeAllConnectionsOperationSpec);
728
+ }
235
729
  /**
236
730
  * Broadcast content inside request body to all the connected client connections.
237
731
  * @param args Includes all the parameters for this operation.
@@ -284,8 +778,8 @@ class WebPubSubImpl {
284
778
  * @param connectionId Target connection Id.
285
779
  * @param options The options parameters.
286
780
  */
287
- closeClientConnection(hub, connectionId, options) {
288
- return this.client.sendOperationRequest({ hub, connectionId, options }, closeClientConnectionOperationSpec);
781
+ closeConnection(hub, connectionId, options) {
782
+ return this.client.sendOperationRequest({ hub, connectionId, options }, closeConnectionOperationSpec);
289
783
  }
290
784
  /**
291
785
  * Send content inside request body to the specific connection.
@@ -334,6 +828,16 @@ class WebPubSubImpl {
334
828
  groupExists(hub, group, options) {
335
829
  return this.client.sendOperationRequest({ hub, group, options }, groupExistsOperationSpec);
336
830
  }
831
+ /**
832
+ * Close connections in the specific group.
833
+ * @param hub Target hub name, which should start with alphabetic characters and only contain
834
+ * alpha-numeric characters or underscore.
835
+ * @param group Target group name, which length should be greater than 0 and less than 1025.
836
+ * @param options The options parameters.
837
+ */
838
+ closeGroupConnections(hub, group, options) {
839
+ return this.client.sendOperationRequest({ hub, group, options }, closeGroupConnectionsOperationSpec);
840
+ }
337
841
  /**
338
842
  * Send content inside request body to a group of connections.
339
843
  * @param args Includes all the parameters for this operation.
@@ -403,6 +907,16 @@ class WebPubSubImpl {
403
907
  userExists(hub, userId, options) {
404
908
  return this.client.sendOperationRequest({ hub, userId, options }, userExistsOperationSpec);
405
909
  }
910
+ /**
911
+ * Close connections for the specific user.
912
+ * @param hub Target hub name, which should start with alphabetic characters and only contain
913
+ * alpha-numeric characters or underscore.
914
+ * @param userId The user Id.
915
+ * @param options The options parameters.
916
+ */
917
+ closeUserConnections(hub, userId, options) {
918
+ return this.client.sendOperationRequest({ hub, userId, options }, closeUserConnectionsOperationSpec);
919
+ }
406
920
  /**
407
921
  * Send content inside request body to the specific user.
408
922
  * @param args Includes all the parameters for this operation.
@@ -507,224 +1021,441 @@ class WebPubSubImpl {
507
1021
  }
508
1022
  }
509
1023
  // Operation Specifications
510
- const serializer$1 = coreClient.createSerializer({}, /* isXml */ false);
1024
+ const serializer$1 = coreClient.createSerializer(Mappers, /* isXml */ false);
1025
+ const generateClientTokenOperationSpec = {
1026
+ path: "/api/hubs/{hub}/:generateToken",
1027
+ httpMethod: "POST",
1028
+ responses: {
1029
+ 200: {
1030
+ bodyMapper: ClientTokenResponse
1031
+ },
1032
+ default: {
1033
+ bodyMapper: ErrorDetail,
1034
+ headersMapper: WebPubSubGenerateClientTokenExceptionHeaders
1035
+ }
1036
+ },
1037
+ queryParameters: [
1038
+ apiVersion,
1039
+ userId,
1040
+ roles,
1041
+ expirationTimeInMinutes
1042
+ ],
1043
+ urlParameters: [endpoint, hub],
1044
+ headerParameters: [accept],
1045
+ serializer: serializer$1
1046
+ };
1047
+ const closeAllConnectionsOperationSpec = {
1048
+ path: "/api/hubs/{hub}/:closeConnections",
1049
+ httpMethod: "POST",
1050
+ responses: {
1051
+ 204: {},
1052
+ default: {
1053
+ bodyMapper: ErrorDetail,
1054
+ headersMapper: WebPubSubCloseAllConnectionsExceptionHeaders
1055
+ }
1056
+ },
1057
+ queryParameters: [
1058
+ apiVersion,
1059
+ excluded,
1060
+ reason
1061
+ ],
1062
+ urlParameters: [endpoint, hub],
1063
+ headerParameters: [accept],
1064
+ serializer: serializer$1
1065
+ };
511
1066
  const sendToAll$binaryOperationSpec = {
512
1067
  path: "/api/hubs/{hub}/:send",
513
1068
  httpMethod: "POST",
514
- responses: { 202: {}, default: {} },
1069
+ responses: {
1070
+ 202: {},
1071
+ default: {
1072
+ bodyMapper: ErrorDetail,
1073
+ headersMapper: WebPubSubSendToAllExceptionHeaders
1074
+ }
1075
+ },
515
1076
  requestBody: message,
516
- queryParameters: [apiVersion, excluded],
517
- urlParameters: [$host, hub],
518
- headerParameters: [contentType],
1077
+ queryParameters: [apiVersion, excludedConnections],
1078
+ urlParameters: [endpoint, hub],
1079
+ headerParameters: [contentType, accept1],
519
1080
  mediaType: "binary",
520
1081
  serializer: serializer$1
521
1082
  };
522
1083
  const sendToAll$textOperationSpec = {
523
1084
  path: "/api/hubs/{hub}/:send",
524
1085
  httpMethod: "POST",
525
- responses: { 202: {}, default: {} },
1086
+ responses: {
1087
+ 202: {},
1088
+ default: {
1089
+ bodyMapper: ErrorDetail,
1090
+ headersMapper: WebPubSubSendToAllExceptionHeaders
1091
+ }
1092
+ },
526
1093
  requestBody: message1,
527
- queryParameters: [apiVersion, excluded],
528
- urlParameters: [$host, hub],
529
- headerParameters: [contentType1],
1094
+ queryParameters: [apiVersion, excludedConnections],
1095
+ urlParameters: [endpoint, hub],
1096
+ headerParameters: [contentType1, accept2],
530
1097
  mediaType: "text",
531
1098
  serializer: serializer$1
532
1099
  };
533
1100
  const connectionExistsOperationSpec = {
534
1101
  path: "/api/hubs/{hub}/connections/{connectionId}",
535
1102
  httpMethod: "HEAD",
536
- responses: { 200: {}, 404: {}, default: {} },
1103
+ responses: {
1104
+ 200: {},
1105
+ 404: {},
1106
+ default: {
1107
+ bodyMapper: ErrorDetail,
1108
+ headersMapper: WebPubSubConnectionExistsExceptionHeaders
1109
+ }
1110
+ },
537
1111
  queryParameters: [apiVersion],
538
- urlParameters: [$host, hub, connectionId],
1112
+ urlParameters: [endpoint, hub, connectionId],
1113
+ headerParameters: [accept],
539
1114
  serializer: serializer$1
540
1115
  };
541
- const closeClientConnectionOperationSpec = {
1116
+ const closeConnectionOperationSpec = {
542
1117
  path: "/api/hubs/{hub}/connections/{connectionId}",
543
1118
  httpMethod: "DELETE",
544
- responses: { 200: {}, default: {} },
1119
+ responses: {
1120
+ 204: {},
1121
+ default: {
1122
+ bodyMapper: ErrorDetail,
1123
+ headersMapper: WebPubSubCloseConnectionExceptionHeaders
1124
+ }
1125
+ },
545
1126
  queryParameters: [apiVersion, reason],
546
- urlParameters: [$host, hub, connectionId],
1127
+ urlParameters: [endpoint, hub, connectionId],
1128
+ headerParameters: [accept],
547
1129
  serializer: serializer$1
548
1130
  };
549
1131
  const sendToConnection$binaryOperationSpec = {
550
1132
  path: "/api/hubs/{hub}/connections/{connectionId}/:send",
551
1133
  httpMethod: "POST",
552
- responses: { 202: {}, default: {} },
1134
+ responses: {
1135
+ 202: {},
1136
+ default: {
1137
+ bodyMapper: ErrorDetail,
1138
+ headersMapper: WebPubSubSendToConnectionExceptionHeaders
1139
+ }
1140
+ },
553
1141
  requestBody: message,
554
1142
  queryParameters: [apiVersion],
555
- urlParameters: [$host, hub, connectionId],
556
- headerParameters: [contentType],
1143
+ urlParameters: [endpoint, hub, connectionId],
1144
+ headerParameters: [contentType, accept1],
557
1145
  mediaType: "binary",
558
1146
  serializer: serializer$1
559
1147
  };
560
1148
  const sendToConnection$textOperationSpec = {
561
1149
  path: "/api/hubs/{hub}/connections/{connectionId}/:send",
562
1150
  httpMethod: "POST",
563
- responses: { 202: {}, default: {} },
1151
+ responses: {
1152
+ 202: {},
1153
+ default: {
1154
+ bodyMapper: ErrorDetail,
1155
+ headersMapper: WebPubSubSendToConnectionExceptionHeaders
1156
+ }
1157
+ },
564
1158
  requestBody: message1,
565
1159
  queryParameters: [apiVersion],
566
- urlParameters: [$host, hub, connectionId],
567
- headerParameters: [contentType1],
1160
+ urlParameters: [endpoint, hub, connectionId],
1161
+ headerParameters: [contentType1, accept2],
568
1162
  mediaType: "text",
569
1163
  serializer: serializer$1
570
1164
  };
571
1165
  const groupExistsOperationSpec = {
572
1166
  path: "/api/hubs/{hub}/groups/{group}",
573
1167
  httpMethod: "HEAD",
574
- responses: { 200: {}, 404: {}, default: {} },
1168
+ responses: {
1169
+ 200: {},
1170
+ 404: {},
1171
+ default: {
1172
+ bodyMapper: ErrorDetail,
1173
+ headersMapper: WebPubSubGroupExistsExceptionHeaders
1174
+ }
1175
+ },
575
1176
  queryParameters: [apiVersion],
576
- urlParameters: [$host, hub, group],
1177
+ urlParameters: [endpoint, hub, group],
1178
+ headerParameters: [accept],
1179
+ serializer: serializer$1
1180
+ };
1181
+ const closeGroupConnectionsOperationSpec = {
1182
+ path: "/api/hubs/{hub}/groups/{group}/:closeConnections",
1183
+ httpMethod: "POST",
1184
+ responses: {
1185
+ 204: {},
1186
+ default: {
1187
+ bodyMapper: ErrorDetail,
1188
+ headersMapper: WebPubSubCloseGroupConnectionsExceptionHeaders
1189
+ }
1190
+ },
1191
+ queryParameters: [
1192
+ apiVersion,
1193
+ excluded,
1194
+ reason
1195
+ ],
1196
+ urlParameters: [endpoint, hub, group],
1197
+ headerParameters: [accept],
577
1198
  serializer: serializer$1
578
1199
  };
579
1200
  const sendToGroup$binaryOperationSpec = {
580
1201
  path: "/api/hubs/{hub}/groups/{group}/:send",
581
1202
  httpMethod: "POST",
582
- responses: { 202: {}, default: {} },
1203
+ responses: {
1204
+ 202: {},
1205
+ default: {
1206
+ bodyMapper: ErrorDetail,
1207
+ headersMapper: WebPubSubSendToGroupExceptionHeaders
1208
+ }
1209
+ },
583
1210
  requestBody: message,
584
- queryParameters: [apiVersion, excluded],
585
- urlParameters: [$host, hub, group],
586
- headerParameters: [contentType],
1211
+ queryParameters: [apiVersion, excludedConnections],
1212
+ urlParameters: [endpoint, hub, group],
1213
+ headerParameters: [contentType, accept1],
587
1214
  mediaType: "binary",
588
1215
  serializer: serializer$1
589
1216
  };
590
1217
  const sendToGroup$textOperationSpec = {
591
1218
  path: "/api/hubs/{hub}/groups/{group}/:send",
592
1219
  httpMethod: "POST",
593
- responses: { 202: {}, default: {} },
1220
+ responses: {
1221
+ 202: {},
1222
+ default: {
1223
+ bodyMapper: ErrorDetail,
1224
+ headersMapper: WebPubSubSendToGroupExceptionHeaders
1225
+ }
1226
+ },
594
1227
  requestBody: message1,
595
- queryParameters: [apiVersion, excluded],
596
- urlParameters: [$host, hub, group],
597
- headerParameters: [contentType1],
1228
+ queryParameters: [apiVersion, excludedConnections],
1229
+ urlParameters: [endpoint, hub, group],
1230
+ headerParameters: [contentType1, accept2],
598
1231
  mediaType: "text",
599
1232
  serializer: serializer$1
600
1233
  };
601
1234
  const addConnectionToGroupOperationSpec = {
602
1235
  path: "/api/hubs/{hub}/groups/{group}/connections/{connectionId}",
603
1236
  httpMethod: "PUT",
604
- responses: { 200: {}, 404: {}, default: {} },
1237
+ responses: {
1238
+ 200: {},
1239
+ 404: {},
1240
+ default: {
1241
+ bodyMapper: ErrorDetail,
1242
+ headersMapper: WebPubSubAddConnectionToGroupExceptionHeaders
1243
+ }
1244
+ },
605
1245
  queryParameters: [apiVersion],
606
1246
  urlParameters: [
607
- $host,
1247
+ endpoint,
608
1248
  hub,
609
1249
  connectionId,
610
1250
  group
611
1251
  ],
1252
+ headerParameters: [accept],
612
1253
  serializer: serializer$1
613
1254
  };
614
1255
  const removeConnectionFromGroupOperationSpec = {
615
1256
  path: "/api/hubs/{hub}/groups/{group}/connections/{connectionId}",
616
1257
  httpMethod: "DELETE",
617
- responses: { 200: {}, default: {} },
1258
+ responses: {
1259
+ 204: {},
1260
+ default: {
1261
+ bodyMapper: ErrorDetail,
1262
+ headersMapper: WebPubSubRemoveConnectionFromGroupExceptionHeaders
1263
+ }
1264
+ },
618
1265
  queryParameters: [apiVersion],
619
1266
  urlParameters: [
620
- $host,
1267
+ endpoint,
621
1268
  hub,
622
1269
  connectionId,
623
1270
  group
624
1271
  ],
1272
+ headerParameters: [accept],
625
1273
  serializer: serializer$1
626
1274
  };
627
1275
  const userExistsOperationSpec = {
628
1276
  path: "/api/hubs/{hub}/users/{userId}",
629
1277
  httpMethod: "HEAD",
630
- responses: { 200: {}, 404: {}, default: {} },
1278
+ responses: {
1279
+ 200: {},
1280
+ 404: {},
1281
+ default: {
1282
+ bodyMapper: ErrorDetail,
1283
+ headersMapper: WebPubSubUserExistsExceptionHeaders
1284
+ }
1285
+ },
631
1286
  queryParameters: [apiVersion],
632
- urlParameters: [$host, hub, userId],
1287
+ urlParameters: [endpoint, hub, userId1],
1288
+ headerParameters: [accept],
1289
+ serializer: serializer$1
1290
+ };
1291
+ const closeUserConnectionsOperationSpec = {
1292
+ path: "/api/hubs/{hub}/users/{userId}/:closeConnections",
1293
+ httpMethod: "POST",
1294
+ responses: {
1295
+ 204: {},
1296
+ default: {
1297
+ bodyMapper: ErrorDetail,
1298
+ headersMapper: WebPubSubCloseUserConnectionsExceptionHeaders
1299
+ }
1300
+ },
1301
+ queryParameters: [
1302
+ apiVersion,
1303
+ excluded,
1304
+ reason
1305
+ ],
1306
+ urlParameters: [endpoint, hub, userId1],
1307
+ headerParameters: [accept],
633
1308
  serializer: serializer$1
634
1309
  };
635
1310
  const sendToUser$binaryOperationSpec = {
636
1311
  path: "/api/hubs/{hub}/users/{userId}/:send",
637
1312
  httpMethod: "POST",
638
- responses: { 202: {}, default: {} },
1313
+ responses: {
1314
+ 202: {},
1315
+ default: {
1316
+ bodyMapper: ErrorDetail,
1317
+ headersMapper: WebPubSubSendToUserExceptionHeaders
1318
+ }
1319
+ },
639
1320
  requestBody: message,
640
1321
  queryParameters: [apiVersion],
641
- urlParameters: [$host, hub, userId],
642
- headerParameters: [contentType],
1322
+ urlParameters: [endpoint, hub, userId1],
1323
+ headerParameters: [contentType, accept1],
643
1324
  mediaType: "binary",
644
1325
  serializer: serializer$1
645
1326
  };
646
1327
  const sendToUser$textOperationSpec = {
647
1328
  path: "/api/hubs/{hub}/users/{userId}/:send",
648
1329
  httpMethod: "POST",
649
- responses: { 202: {}, default: {} },
1330
+ responses: {
1331
+ 202: {},
1332
+ default: {
1333
+ bodyMapper: ErrorDetail,
1334
+ headersMapper: WebPubSubSendToUserExceptionHeaders
1335
+ }
1336
+ },
650
1337
  requestBody: message1,
651
1338
  queryParameters: [apiVersion],
652
- urlParameters: [$host, hub, userId],
653
- headerParameters: [contentType1],
1339
+ urlParameters: [endpoint, hub, userId1],
1340
+ headerParameters: [contentType1, accept2],
654
1341
  mediaType: "text",
655
1342
  serializer: serializer$1
656
1343
  };
657
1344
  const addUserToGroupOperationSpec = {
658
1345
  path: "/api/hubs/{hub}/users/{userId}/groups/{group}",
659
1346
  httpMethod: "PUT",
660
- responses: { 200: {}, 404: {}, default: {} },
1347
+ responses: {
1348
+ 200: {},
1349
+ 404: {},
1350
+ default: {
1351
+ bodyMapper: ErrorDetail,
1352
+ headersMapper: WebPubSubAddUserToGroupExceptionHeaders
1353
+ }
1354
+ },
661
1355
  queryParameters: [apiVersion],
662
1356
  urlParameters: [
663
- $host,
1357
+ endpoint,
664
1358
  hub,
665
1359
  group,
666
- userId
1360
+ userId1
667
1361
  ],
1362
+ headerParameters: [accept],
668
1363
  serializer: serializer$1
669
1364
  };
670
1365
  const removeUserFromGroupOperationSpec = {
671
1366
  path: "/api/hubs/{hub}/users/{userId}/groups/{group}",
672
1367
  httpMethod: "DELETE",
673
- responses: { 200: {}, default: {} },
1368
+ responses: {
1369
+ 204: {},
1370
+ default: {
1371
+ bodyMapper: ErrorDetail,
1372
+ headersMapper: WebPubSubRemoveUserFromGroupExceptionHeaders
1373
+ }
1374
+ },
674
1375
  queryParameters: [apiVersion],
675
1376
  urlParameters: [
676
- $host,
1377
+ endpoint,
677
1378
  hub,
678
1379
  group,
679
- userId
1380
+ userId1
680
1381
  ],
1382
+ headerParameters: [accept],
681
1383
  serializer: serializer$1
682
1384
  };
683
1385
  const removeUserFromAllGroupsOperationSpec = {
684
1386
  path: "/api/hubs/{hub}/users/{userId}/groups",
685
1387
  httpMethod: "DELETE",
686
- responses: { 200: {}, default: {} },
1388
+ responses: {
1389
+ 204: {},
1390
+ default: {
1391
+ bodyMapper: ErrorDetail,
1392
+ headersMapper: WebPubSubRemoveUserFromAllGroupsExceptionHeaders
1393
+ }
1394
+ },
687
1395
  queryParameters: [apiVersion],
688
- urlParameters: [$host, hub, userId],
1396
+ urlParameters: [endpoint, hub, userId1],
1397
+ headerParameters: [accept],
689
1398
  serializer: serializer$1
690
1399
  };
691
1400
  const grantPermissionOperationSpec = {
692
1401
  path: "/api/hubs/{hub}/permissions/{permission}/connections/{connectionId}",
693
1402
  httpMethod: "PUT",
694
- responses: { 200: {}, default: {} },
1403
+ responses: {
1404
+ 200: {},
1405
+ default: {
1406
+ bodyMapper: ErrorDetail,
1407
+ headersMapper: WebPubSubGrantPermissionExceptionHeaders
1408
+ }
1409
+ },
695
1410
  queryParameters: [apiVersion, targetName],
696
1411
  urlParameters: [
697
- $host,
1412
+ endpoint,
698
1413
  hub,
699
1414
  connectionId,
700
1415
  permission
701
1416
  ],
1417
+ headerParameters: [accept],
702
1418
  serializer: serializer$1
703
1419
  };
704
1420
  const revokePermissionOperationSpec = {
705
1421
  path: "/api/hubs/{hub}/permissions/{permission}/connections/{connectionId}",
706
1422
  httpMethod: "DELETE",
707
- responses: { 200: {}, default: {} },
1423
+ responses: {
1424
+ 204: {},
1425
+ default: {
1426
+ bodyMapper: ErrorDetail,
1427
+ headersMapper: WebPubSubRevokePermissionExceptionHeaders
1428
+ }
1429
+ },
708
1430
  queryParameters: [apiVersion, targetName],
709
1431
  urlParameters: [
710
- $host,
1432
+ endpoint,
711
1433
  hub,
712
1434
  connectionId,
713
1435
  permission
714
1436
  ],
1437
+ headerParameters: [accept],
715
1438
  serializer: serializer$1
716
1439
  };
717
1440
  const checkPermissionOperationSpec = {
718
1441
  path: "/api/hubs/{hub}/permissions/{permission}/connections/{connectionId}",
719
1442
  httpMethod: "HEAD",
720
- responses: { 200: {}, 404: {}, default: {} },
1443
+ responses: {
1444
+ 200: {},
1445
+ 404: {},
1446
+ default: {
1447
+ bodyMapper: ErrorDetail,
1448
+ headersMapper: WebPubSubCheckPermissionExceptionHeaders
1449
+ }
1450
+ },
721
1451
  queryParameters: [apiVersion, targetName],
722
1452
  urlParameters: [
723
- $host,
1453
+ endpoint,
724
1454
  hub,
725
1455
  connectionId,
726
1456
  permission
727
1457
  ],
1458
+ headerParameters: [accept],
728
1459
  serializer: serializer$1
729
1460
  };
730
1461
 
@@ -739,12 +1470,12 @@ const checkPermissionOperationSpec = {
739
1470
  class GeneratedClientContext extends coreClient.ServiceClient {
740
1471
  /**
741
1472
  * Initializes a new instance of the GeneratedClientContext class.
742
- * @param $host server parameter
1473
+ * @param endpoint HTTP or HTTPS endpoint for the Web PubSub service instance.
743
1474
  * @param options The parameter options
744
1475
  */
745
- constructor($host, options) {
746
- if ($host === undefined) {
747
- throw new Error("'$host' cannot be null");
1476
+ constructor(endpoint, options) {
1477
+ if (endpoint === undefined) {
1478
+ throw new Error("'endpoint' cannot be null");
748
1479
  }
749
1480
  // Initializing default values for options
750
1481
  if (!options) {
@@ -753,18 +1484,18 @@ class GeneratedClientContext extends coreClient.ServiceClient {
753
1484
  const defaults = {
754
1485
  requestContentType: "application/json; charset=utf-8"
755
1486
  };
756
- const packageDetails = `azsdk-js-web-pubsub/1.0.0-beta.3`;
1487
+ const packageDetails = `azsdk-js-web-pubsub/1.0.1`;
757
1488
  const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
758
1489
  ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
759
1490
  : `${packageDetails}`;
760
1491
  const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {
761
1492
  userAgentPrefix
762
- }, baseUri: options.endpoint || "{$host}" });
1493
+ }, baseUri: options.endpoint || "{Endpoint}" });
763
1494
  super(optionsWithDefaults);
764
1495
  // Parameter assignments
765
- this.$host = $host;
1496
+ this.endpoint = endpoint;
766
1497
  // Assigning values to Constant parameters
767
- this.apiVersion = options.apiVersion || "2021-05-01-preview";
1498
+ this.apiVersion = options.apiVersion || "2021-10-01";
768
1499
  }
769
1500
  }
770
1501
 
@@ -779,11 +1510,11 @@ class GeneratedClientContext extends coreClient.ServiceClient {
779
1510
  class GeneratedClient extends GeneratedClientContext {
780
1511
  /**
781
1512
  * Initializes a new instance of the GeneratedClient class.
782
- * @param $host server parameter
1513
+ * @param endpoint HTTP or HTTPS endpoint for the Web PubSub service instance.
783
1514
  * @param options The parameter options
784
1515
  */
785
- constructor($host, options) {
786
- super($host, options);
1516
+ constructor(endpoint, options) {
1517
+ super(endpoint, options);
787
1518
  this.healthApi = new HealthApiImpl(this);
788
1519
  this.webPubSub = new WebPubSubImpl(this);
789
1520
  }
@@ -793,15 +1524,11 @@ class GeneratedClient extends GeneratedClientContext {
793
1524
  /** @internal */
794
1525
  const createSpan = coreTracing.createSpanFunction({
795
1526
  namespace: "Microsoft.WebPubSub",
796
- packagePrefix: "Azure.Messaging.WebPubSub"
1527
+ packagePrefix: "Azure.Messaging.WebPubSub",
797
1528
  });
798
1529
 
799
1530
  // Copyright (c) Microsoft Corporation.
800
- function normalizeSendToAllOptions(options) {
801
- const { excludedConnections } = options, otherOptions = tslib.__rest(options, ["excludedConnections"]);
802
- return Object.assign(Object.assign({}, otherOptions), { excluded: excludedConnections });
803
- }
804
-
1531
+ // Licensed under the MIT license.
805
1532
  function isRequestBody(obj) {
806
1533
  return (typeof obj === "function" ||
807
1534
  (typeof obj === "object" &&
@@ -831,7 +1558,6 @@ function getPayloadForMessage(message, options) {
831
1558
  */
832
1559
  class WebPubSubGroupImpl {
833
1560
  /**
834
- * @private
835
1561
  * @internal
836
1562
  */
837
1563
  constructor(client, hubName, groupName) {
@@ -846,25 +1572,25 @@ class WebPubSubGroupImpl {
846
1572
  /**
847
1573
  * Add a specific connection to this group
848
1574
  *
849
- * @param connectionId The connection id to add to this group
850
- * @param options Additional options
1575
+ * @param connectionId - The connection id to add to this group
1576
+ * @param options - Additional options
851
1577
  */
852
1578
  async addConnection(connectionId, options = {}) {
853
1579
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-addConnection", options);
854
- try {
855
- let response;
856
- function onResponse(rawResponse, flatResponse) {
857
- response = rawResponse;
858
- if (updatedOptions.onResponse) {
859
- updatedOptions.onResponse(rawResponse, flatResponse);
860
- }
1580
+ let response;
1581
+ function onResponse(rawResponse, flatResponse) {
1582
+ response = rawResponse;
1583
+ if (updatedOptions.onResponse) {
1584
+ updatedOptions.onResponse(rawResponse, flatResponse);
861
1585
  }
1586
+ }
1587
+ try {
862
1588
  await this.client.webPubSub.addConnectionToGroup(this.hubName, this.groupName, connectionId, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
863
- if ((response === null || response === void 0 ? void 0 : response.status) === 404) {
1589
+ if (response.status === 404) {
864
1590
  throw new coreRestPipeline.RestError(`Connection id '${connectionId}' doesn't exist`, {
865
1591
  statusCode: response === null || response === void 0 ? void 0 : response.status,
866
1592
  request: response === null || response === void 0 ? void 0 : response.request,
867
- response: response
1593
+ response: response,
868
1594
  });
869
1595
  }
870
1596
  }
@@ -875,8 +1601,8 @@ class WebPubSubGroupImpl {
875
1601
  /**
876
1602
  * Remove a specific connection from this group
877
1603
  *
878
- * @param connectionId The connection id to remove from this group
879
- * @param options Additional options
1604
+ * @param connectionId - The connection id to remove from this group
1605
+ * @param options - Additional options
880
1606
  */
881
1607
  async removeConnection(connectionId, options = {}) {
882
1608
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-removeConnection", options);
@@ -887,11 +1613,25 @@ class WebPubSubGroupImpl {
887
1613
  span.end();
888
1614
  }
889
1615
  }
1616
+ /**
1617
+ * Close all connections to this group
1618
+ *
1619
+ * @param options - Additional options
1620
+ */
1621
+ async closeAllConnections(options = {}) {
1622
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-closeAllConnections", options);
1623
+ try {
1624
+ return await this.client.webPubSub.closeGroupConnections(this.hubName, this.groupName, updatedOptions);
1625
+ }
1626
+ finally {
1627
+ span.end();
1628
+ }
1629
+ }
890
1630
  /**
891
1631
  * Add a user to this group
892
1632
  *
893
- * @param username The user name to add
894
- * @param options Additional options
1633
+ * @param username - The user name to add
1634
+ * @param options - Additional options
895
1635
  */
896
1636
  async addUser(username, options = {}) {
897
1637
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-addUser", options);
@@ -905,8 +1645,8 @@ class WebPubSubGroupImpl {
905
1645
  /**
906
1646
  * Remove a user from this group
907
1647
  *
908
- * @param username The user name to remove
909
- * @param options Additional options
1648
+ * @param username - The user name to remove
1649
+ * @param options - Additional options
910
1650
  */
911
1651
  async removeUser(username, options = {}) {
912
1652
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-removeUser", options);
@@ -918,8 +1658,7 @@ class WebPubSubGroupImpl {
918
1658
  }
919
1659
  }
920
1660
  async sendToAll(message, options = {}) {
921
- const normalizedOptions = normalizeSendToAllOptions(options);
922
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-sendToAll", normalizedOptions);
1661
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-sendToAll", options);
923
1662
  const { contentType, payload } = getPayloadForMessage(message, updatedOptions);
924
1663
  try {
925
1664
  await this.client.webPubSub.sendToGroup(this.hubName, this.groupName, contentType, payload, updatedOptions);
@@ -947,22 +1686,23 @@ function webPubSubKeyCredentialPolicy(credential) {
947
1686
  const bearerToken = jwt.sign({}, credential.key, {
948
1687
  audience: request.url,
949
1688
  expiresIn: "1h",
950
- algorithm: "HS256"
1689
+ algorithm: "HS256",
951
1690
  });
952
1691
  request.headers.set("Authorization", `Bearer ${bearerToken}`);
953
1692
  return next(request);
954
- }
1693
+ },
955
1694
  };
956
1695
  }
957
1696
 
958
1697
  // Copyright (c) Microsoft Corporation.
959
1698
  /**
960
- * The @azure/logger configuration for this package.
1699
+ * The `@azure/logger` configuration for this package.
961
1700
  */
962
1701
  const logger = logger$1.createClientLogger("web-pubsub");
963
1702
 
1703
+ // Copyright (c) Microsoft Corporation.
964
1704
  function parseConnectionString(conn) {
965
- let parsed = {};
1705
+ const parsed = {};
966
1706
  conn.split(";").forEach((i) => {
967
1707
  const assignmentPos = i.indexOf("=");
968
1708
  if (assignmentPos === -1)
@@ -989,22 +1729,44 @@ function parseConnectionString(conn) {
989
1729
  return { credential, endpoint };
990
1730
  }
991
1731
 
1732
+ // Copyright (c) Microsoft Corporation.
1733
+ // Licensed under the MIT license.
1734
+ const webPubSubReverseProxyPolicyName = "webPubSubReverseProxyPolicy";
1735
+ /**
1736
+ * Create an HTTP pipeline policy to use a reverse proxy.
1737
+ * This is generally going to be an Azure APIM endpoint.
1738
+ * @internal
1739
+ */
1740
+ function webPubSubReverseProxyPolicy(endpoint) {
1741
+ const rpEndpointUrl = new URL(endpoint);
1742
+ return {
1743
+ name: webPubSubReverseProxyPolicyName,
1744
+ sendRequest(request, next) {
1745
+ const parsedUrl = new URL(request.url);
1746
+ parsedUrl.host = rpEndpointUrl.host;
1747
+ request.url = parsedUrl.toString();
1748
+ return next(request);
1749
+ },
1750
+ };
1751
+ }
1752
+
992
1753
  // Copyright (c) Microsoft Corporation.
993
1754
  /**
994
1755
  * Client for connecting to a Web PubSub hub
995
1756
  */
996
1757
  class WebPubSubServiceClient {
997
1758
  constructor(endpointOrConnectionString, credsOrHubName, hubNameOrOpts, opts) {
1759
+ var _a, _b;
998
1760
  /**
999
1761
  * The Web PubSub API version being used by this client
1000
1762
  */
1001
- this.apiVersion = "2020-10-01";
1763
+ this.apiVersion = "2021-10-01";
1002
1764
  // unpack constructor arguments
1003
- if (typeof credsOrHubName === "object" && "key" in credsOrHubName) {
1765
+ if (typeof credsOrHubName === "object") {
1004
1766
  this.endpoint = endpointOrConnectionString;
1005
- this.credential = credsOrHubName;
1006
1767
  this.hubName = hubNameOrOpts;
1007
1768
  this.clientOptions = opts;
1769
+ this.credential = credsOrHubName;
1008
1770
  }
1009
1771
  else {
1010
1772
  const parsedCs = parseConnectionString(endpointOrConnectionString);
@@ -1013,52 +1775,34 @@ class WebPubSubServiceClient {
1013
1775
  this.hubName = credsOrHubName;
1014
1776
  this.clientOptions = hubNameOrOpts;
1015
1777
  }
1016
- const internalPipelineOptions = Object.assign(Object.assign({}, this.clientOptions), {
1778
+ const internalPipelineOptions = Object.assign(Object.assign(Object.assign({}, this.clientOptions), {
1779
+ apiVersion: this.apiVersion,
1017
1780
  loggingOptions: {
1018
- logger: logger.info
1781
+ logger: logger.info,
1782
+ },
1783
+ }), (coreAuth.isTokenCredential(this.credential)
1784
+ ? {
1785
+ credential: this.credential,
1786
+ credentialScopes: ["https://webpubsub.azure.com/.default"],
1019
1787
  }
1020
- });
1788
+ : {}));
1021
1789
  this.client = new GeneratedClient(this.endpoint, internalPipelineOptions);
1022
- this.client.pipeline.addPolicy(webPubSubKeyCredentialPolicy(this.credential));
1023
- }
1024
- /**
1025
- * Auth the client connection with userId and custom claims if any
1026
- * @param options The options that the client has
1027
- */
1028
- async getAuthenticationToken(options) {
1029
- const endpoint = this.endpoint.endsWith("/") ? this.endpoint : this.endpoint + "/";
1030
- const key = this.credential.key;
1031
- const hub = this.hubName;
1032
- const clientEndpoint = endpoint.replace(/(http)(s?:\/\/)/gi, "ws$2");
1033
- const clientUrl = `${clientEndpoint}client/hubs/${hub}`;
1034
- const audience = `${endpoint}client/hubs/${hub}`;
1035
- const payload = { role: options === null || options === void 0 ? void 0 : options.roles };
1036
- const signOptions = {
1037
- audience: audience,
1038
- expiresIn: (options === null || options === void 0 ? void 0 : options.ttl) === undefined ? "1h" : `${options.ttl}m`,
1039
- algorithm: "HS256"
1040
- };
1041
- if (options === null || options === void 0 ? void 0 : options.userId) {
1042
- signOptions.subject = options === null || options === void 0 ? void 0 : options.userId;
1043
- }
1044
- const token = jwt.sign(payload, key, signOptions);
1045
- const url = `${clientUrl}?access_token=${token}`;
1046
- return {
1047
- baseUrl: clientUrl,
1048
- token: jwt.sign(payload, key, signOptions),
1049
- url: url
1050
- };
1790
+ if (!coreAuth.isTokenCredential(this.credential)) {
1791
+ this.client.pipeline.addPolicy(webPubSubKeyCredentialPolicy(this.credential));
1792
+ }
1793
+ if ((_a = this.clientOptions) === null || _a === void 0 ? void 0 : _a.reverseProxyEndpoint) {
1794
+ this.client.pipeline.addPolicy(webPubSubReverseProxyPolicy((_b = this.clientOptions) === null || _b === void 0 ? void 0 : _b.reverseProxyEndpoint));
1795
+ }
1051
1796
  }
1052
1797
  /**
1053
1798
  * Get a client for a group
1054
- * @param groupName The name of the group to connect to.
1799
+ * @param groupName - The name of the group to connect to.
1055
1800
  */
1056
1801
  group(groupName) {
1057
1802
  return new WebPubSubGroupImpl(this.client, this.hubName, groupName);
1058
1803
  }
1059
1804
  async sendToAll(message, options = {}) {
1060
- const normalizedOptions = normalizeSendToAllOptions(options);
1061
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToAll", normalizedOptions);
1805
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToAll", options);
1062
1806
  const { contentType, payload } = getPayloadForMessage(message, updatedOptions);
1063
1807
  try {
1064
1808
  return await this.client.webPubSub.sendToAll(this.hubName, contentType, payload, updatedOptions);
@@ -1090,32 +1834,32 @@ class WebPubSubServiceClient {
1090
1834
  /**
1091
1835
  * Check if a specific connection is connected to this hub
1092
1836
  *
1093
- * @param connectionId Connection id to check
1094
- * @param options Additional options
1837
+ * @param connectionId - Connection id to check
1838
+ * @param options - Additional options
1095
1839
  */
1096
- async hasConnection(connectionId, options = {}) {
1840
+ async connectionExists(connectionId, options = {}) {
1097
1841
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasConnection", options);
1098
- try {
1099
- let response;
1100
- function onResponse(rawResponse, flatResponse) {
1101
- response = rawResponse;
1102
- if (updatedOptions.onResponse) {
1103
- updatedOptions.onResponse(rawResponse, flatResponse);
1104
- }
1842
+ let response;
1843
+ function onResponse(rawResponse, flatResponse) {
1844
+ response = rawResponse;
1845
+ if (updatedOptions.onResponse) {
1846
+ updatedOptions.onResponse(rawResponse, flatResponse);
1105
1847
  }
1848
+ }
1849
+ try {
1106
1850
  await this.client.webPubSub.connectionExists(this.hubName, connectionId, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1107
- if ((response === null || response === void 0 ? void 0 : response.status) === 200) {
1851
+ if (response.status === 200) {
1108
1852
  return true;
1109
1853
  }
1110
- else if ((response === null || response === void 0 ? void 0 : response.status) === 404) {
1854
+ else if (response.status === 404) {
1111
1855
  return false;
1112
1856
  }
1113
1857
  else {
1114
1858
  // this is sad - wish this was handled by autorest.
1115
- throw new coreRestPipeline.RestError(response === null || response === void 0 ? void 0 : response.bodyAsText, {
1859
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
1116
1860
  statusCode: response === null || response === void 0 ? void 0 : response.status,
1117
1861
  request: response === null || response === void 0 ? void 0 : response.request,
1118
- response: response
1862
+ response: response,
1119
1863
  });
1120
1864
  }
1121
1865
  }
@@ -1126,13 +1870,42 @@ class WebPubSubServiceClient {
1126
1870
  /**
1127
1871
  * Close a specific connection to this hub
1128
1872
  *
1129
- * @param connectionId Connection id to close
1130
- * @param options Additional options
1873
+ * @param connectionId - Connection id to close
1874
+ * @param options - Additional options
1131
1875
  */
1132
1876
  async closeConnection(connectionId, options = {}) {
1133
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-removeConnection", options);
1877
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-closeConnection", options);
1134
1878
  try {
1135
- return await this.client.webPubSub.closeClientConnection(this.hubName, connectionId, updatedOptions);
1879
+ return await this.client.webPubSub.closeConnection(this.hubName, connectionId, updatedOptions);
1880
+ }
1881
+ finally {
1882
+ span.end();
1883
+ }
1884
+ }
1885
+ /**
1886
+ * Close all connections to this hub
1887
+ *
1888
+ * @param options - Additional options
1889
+ */
1890
+ async closeAllConnections(options = {}) {
1891
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-closeAllConnections", options);
1892
+ try {
1893
+ return await this.client.webPubSub.closeAllConnections(this.hubName, updatedOptions);
1894
+ }
1895
+ finally {
1896
+ span.end();
1897
+ }
1898
+ }
1899
+ /**
1900
+ * Close all connections with the given user id
1901
+ *
1902
+ * @param user - User id to close
1903
+ * @param options - Additional options
1904
+ */
1905
+ async closeUserConnections(userId, options = {}) {
1906
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-closeUserConnections", options);
1907
+ try {
1908
+ return await this.client.webPubSub.closeUserConnections(this.hubName, userId, updatedOptions);
1136
1909
  }
1137
1910
  finally {
1138
1911
  span.end();
@@ -1140,8 +1913,8 @@ class WebPubSubServiceClient {
1140
1913
  }
1141
1914
  /**
1142
1915
  * Remove a specific user from all groups they are joined to
1143
- * @param userId The user id to remove from all groups
1144
- * @param options Additional options
1916
+ * @param userId - The user id to remove from all groups
1917
+ * @param options - Additional options
1145
1918
  */
1146
1919
  async removeUserFromAllGroups(userId, options = {}) {
1147
1920
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-removeUserFromAllGroups", options);
@@ -1155,31 +1928,31 @@ class WebPubSubServiceClient {
1155
1928
  /**
1156
1929
  * Check if a particular group exists (i.e. has active connections).
1157
1930
  *
1158
- * @param groupName The group name to check for
1159
- * @param options Additional options
1931
+ * @param groupName - The group name to check for
1932
+ * @param options - Additional options
1160
1933
  */
1161
- async hasGroup(groupName, options = {}) {
1934
+ async groupExists(groupName, options = {}) {
1162
1935
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasGroup", options);
1163
- try {
1164
- let response;
1165
- function onResponse(rawResponse, flatResponse) {
1166
- response = rawResponse;
1167
- if (updatedOptions.onResponse) {
1168
- updatedOptions.onResponse(rawResponse, flatResponse);
1169
- }
1936
+ let response;
1937
+ function onResponse(rawResponse, flatResponse) {
1938
+ response = rawResponse;
1939
+ if (updatedOptions.onResponse) {
1940
+ updatedOptions.onResponse(rawResponse, flatResponse);
1170
1941
  }
1942
+ }
1943
+ try {
1171
1944
  await this.client.webPubSub.groupExists(this.hubName, groupName, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1172
- if ((response === null || response === void 0 ? void 0 : response.status) === 200) {
1945
+ if (response.status === 200) {
1173
1946
  return true;
1174
1947
  }
1175
- else if ((response === null || response === void 0 ? void 0 : response.status) === 404) {
1948
+ else if (response.status === 404) {
1176
1949
  return false;
1177
1950
  }
1178
1951
  else {
1179
- throw new coreRestPipeline.RestError(response === null || response === void 0 ? void 0 : response.bodyAsText, {
1952
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
1180
1953
  statusCode: response === null || response === void 0 ? void 0 : response.status,
1181
1954
  request: response === null || response === void 0 ? void 0 : response.request,
1182
- response: response
1955
+ response: response,
1183
1956
  });
1184
1957
  }
1185
1958
  }
@@ -1190,32 +1963,32 @@ class WebPubSubServiceClient {
1190
1963
  /**
1191
1964
  * Check if a particular user is connected to this hub.
1192
1965
  *
1193
- * @param username The user name to check for
1194
- * @param options Additional options
1966
+ * @param username - The user name to check for
1967
+ * @param options - Additional options
1195
1968
  */
1196
- async hasUser(username, options = {}) {
1969
+ async userExists(username, options = {}) {
1197
1970
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasUser", options);
1198
- try {
1199
- let response;
1200
- function onResponse(rawResponse, flatResponse) {
1201
- response = rawResponse;
1202
- if (updatedOptions.onResponse) {
1203
- updatedOptions.onResponse(rawResponse, flatResponse);
1204
- }
1971
+ let response;
1972
+ function onResponse(rawResponse, flatResponse) {
1973
+ response = rawResponse;
1974
+ if (updatedOptions.onResponse) {
1975
+ updatedOptions.onResponse(rawResponse, flatResponse);
1205
1976
  }
1977
+ }
1978
+ try {
1206
1979
  await this.client.webPubSub.userExists(this.hubName, username, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1207
- if ((response === null || response === void 0 ? void 0 : response.status) === 200) {
1980
+ if (response.status === 200) {
1208
1981
  return true;
1209
1982
  }
1210
- else if ((response === null || response === void 0 ? void 0 : response.status) === 404) {
1983
+ else if (response.status === 404) {
1211
1984
  return false;
1212
1985
  }
1213
1986
  else {
1214
1987
  // this is sad - wish this was handled by autorest.
1215
- throw new coreRestPipeline.RestError(response === null || response === void 0 ? void 0 : response.bodyAsText, {
1988
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
1216
1989
  statusCode: response === null || response === void 0 ? void 0 : response.status,
1217
1990
  request: response === null || response === void 0 ? void 0 : response.request,
1218
- response: response
1991
+ response: response,
1219
1992
  });
1220
1993
  }
1221
1994
  }
@@ -1226,9 +1999,9 @@ class WebPubSubServiceClient {
1226
1999
  /**
1227
2000
  * Grant permissions to a connection
1228
2001
  *
1229
- * @param connectionId The connection id to grant permissions to
1230
- * @param Permission The permission to grant
1231
- * @param options Additional options
2002
+ * @param connectionId - The connection id to grant permissions to
2003
+ * @param Permission - The permission to grant
2004
+ * @param options - Additional options
1232
2005
  */
1233
2006
  async grantPermission(connectionId, permission, options = {}) {
1234
2007
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-grantPermission", options);
@@ -1242,9 +2015,9 @@ class WebPubSubServiceClient {
1242
2015
  /**
1243
2016
  * Revoke permissions from a connection
1244
2017
  *
1245
- * @param connectionId The connection id to revoke permissions from
1246
- * @param Permission The permission to revoke
1247
- * @param options Additional options
2018
+ * @param connectionId - The connection id to revoke permissions from
2019
+ * @param Permission - The permission to revoke
2020
+ * @param options - Additional options
1248
2021
  */
1249
2022
  async revokePermission(connectionId, permission, options = {}) {
1250
2023
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-revokePermission", options);
@@ -1258,33 +2031,33 @@ class WebPubSubServiceClient {
1258
2031
  /**
1259
2032
  * Check if the connection has the specified permission
1260
2033
  *
1261
- * @param connectionId The connection id to check permission
1262
- * @param Permission The permission to check
1263
- * @param options Additional options
2034
+ * @param connectionId - The connection id to check permission
2035
+ * @param Permission - The permission to check
2036
+ * @param options - Additional options
1264
2037
  */
1265
2038
  async hasPermission(connectionId, permission, options = {}) {
1266
2039
  const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasPermission", options);
1267
- try {
1268
- let response;
1269
- function onResponse(rawResponse, flatResponse) {
1270
- response = rawResponse;
1271
- if (updatedOptions.onResponse) {
1272
- updatedOptions.onResponse(rawResponse, flatResponse);
1273
- }
2040
+ let response;
2041
+ function onResponse(rawResponse, flatResponse) {
2042
+ response = rawResponse;
2043
+ if (updatedOptions.onResponse) {
2044
+ updatedOptions.onResponse(rawResponse, flatResponse);
1274
2045
  }
2046
+ }
2047
+ try {
1275
2048
  await this.client.webPubSub.checkPermission(this.hubName, permission, connectionId, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1276
- if ((response === null || response === void 0 ? void 0 : response.status) === 200) {
2049
+ if (response.status === 200) {
1277
2050
  return true;
1278
2051
  }
1279
- else if ((response === null || response === void 0 ? void 0 : response.status) === 404) {
2052
+ else if (response.status === 404) {
1280
2053
  return false;
1281
2054
  }
1282
2055
  else {
1283
2056
  // this is sad - wish this was handled by autorest.
1284
- throw new coreRestPipeline.RestError(response === null || response === void 0 ? void 0 : response.bodyAsText, {
2057
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
1285
2058
  statusCode: response === null || response === void 0 ? void 0 : response.status,
1286
2059
  request: response === null || response === void 0 ? void 0 : response.request,
1287
- response: response
2060
+ response: response,
1288
2061
  });
1289
2062
  }
1290
2063
  }
@@ -1292,6 +2065,48 @@ class WebPubSubServiceClient {
1292
2065
  span.end();
1293
2066
  }
1294
2067
  }
2068
+ /**
2069
+ * Generate a token for a client to connect to the Azure Web PubSub service.
2070
+ *
2071
+ * @param options - Additional options
2072
+ */
2073
+ async getClientAccessToken(options = {}) {
2074
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-generateClientToken", options);
2075
+ try {
2076
+ const endpoint = this.endpoint.endsWith("/") ? this.endpoint : this.endpoint + "/";
2077
+ const clientEndpoint = endpoint.replace(/(http)(s?:\/\/)/gi, "ws$2");
2078
+ const baseUrl = `${clientEndpoint}client/hubs/${this.hubName}`;
2079
+ let token;
2080
+ if (coreAuth.isTokenCredential(this.credential)) {
2081
+ const response = await this.client.webPubSub.generateClientToken(this.hubName, updatedOptions);
2082
+ token = response.token;
2083
+ }
2084
+ else {
2085
+ const key = this.credential.key;
2086
+ const audience = `${endpoint}client/hubs/${this.hubName}`;
2087
+ const payload = { role: options === null || options === void 0 ? void 0 : options.roles };
2088
+ const signOptions = {
2089
+ audience: audience,
2090
+ expiresIn: (options === null || options === void 0 ? void 0 : options.expirationTimeInMinutes) === undefined
2091
+ ? "1h"
2092
+ : `${options.expirationTimeInMinutes}m`,
2093
+ algorithm: "HS256",
2094
+ };
2095
+ if (options === null || options === void 0 ? void 0 : options.userId) {
2096
+ signOptions.subject = options === null || options === void 0 ? void 0 : options.userId;
2097
+ }
2098
+ token = jwt.sign(payload, key, signOptions);
2099
+ }
2100
+ return {
2101
+ token,
2102
+ baseUrl,
2103
+ url: `${baseUrl}?access_token=${token}`,
2104
+ };
2105
+ }
2106
+ finally {
2107
+ span.end();
2108
+ }
2109
+ }
1295
2110
  }
1296
2111
 
1297
2112
  Object.defineProperty(exports, 'AzureKeyCredential', {