@azure/web-pubsub 1.0.0-beta.2 → 1.0.1-alpha.20211215.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +118 -31
  3. package/dist/index.js +1315 -567
  4. package/dist/index.js.map +1 -1
  5. package/dist-esm/samples-dev/broadcasting.js +16 -16
  6. package/dist-esm/samples-dev/broadcasting.js.map +1 -1
  7. package/dist-esm/samples-dev/directMessage.js +9 -9
  8. package/dist-esm/samples-dev/directMessage.js.map +1 -1
  9. package/dist-esm/samples-dev/managingGroups.js +11 -12
  10. package/dist-esm/samples-dev/managingGroups.js.map +1 -1
  11. package/dist-esm/src/generated/generatedClient.js +23 -0
  12. package/dist-esm/src/generated/generatedClient.js.map +1 -0
  13. package/dist-esm/src/generated/generatedClientContext.js +41 -0
  14. package/dist-esm/src/generated/generatedClientContext.js.map +1 -0
  15. package/dist-esm/src/generated/index.js +10 -2
  16. package/dist-esm/src/generated/index.js.map +1 -1
  17. package/dist-esm/src/generated/models/index.js +13 -1
  18. package/dist-esm/src/generated/models/index.js.map +1 -1
  19. package/dist-esm/src/generated/models/mappers.js +368 -0
  20. package/dist-esm/src/generated/models/mappers.js.map +1 -0
  21. package/dist-esm/src/generated/models/parameters.js +124 -43
  22. package/dist-esm/src/generated/models/parameters.js.map +1 -1
  23. package/dist-esm/src/generated/operations/healthApi.js +16 -11
  24. package/dist-esm/src/generated/operations/healthApi.js.map +1 -1
  25. package/dist-esm/src/generated/operations/index.js +7 -0
  26. package/dist-esm/src/generated/operations/index.js.map +1 -1
  27. package/dist-esm/src/generated/operations/webPubSub.js +341 -175
  28. package/dist-esm/src/generated/operations/webPubSub.js.map +1 -1
  29. package/dist-esm/src/generated/operationsInterfaces/healthApi.js +9 -0
  30. package/dist-esm/src/generated/operationsInterfaces/healthApi.js.map +1 -0
  31. package/dist-esm/src/generated/operationsInterfaces/index.js +10 -0
  32. package/dist-esm/src/generated/operationsInterfaces/index.js.map +1 -0
  33. package/dist-esm/src/generated/operationsInterfaces/webPubSub.js +9 -0
  34. package/dist-esm/src/generated/operationsInterfaces/webPubSub.js.map +1 -0
  35. package/dist-esm/src/groupClient.js +74 -92
  36. package/dist-esm/src/groupClient.js.map +1 -1
  37. package/dist-esm/src/hubClient.js +280 -196
  38. package/dist-esm/src/hubClient.js.map +1 -1
  39. package/dist-esm/src/index.js.map +1 -1
  40. package/dist-esm/src/logger.js +1 -1
  41. package/dist-esm/src/logger.js.map +1 -1
  42. package/dist-esm/src/parseConnectionString.js +3 -1
  43. package/dist-esm/src/parseConnectionString.js.map +1 -1
  44. package/dist-esm/src/reverseProxyPolicy.js +21 -0
  45. package/dist-esm/src/reverseProxyPolicy.js.map +1 -0
  46. package/dist-esm/src/utils.js +8 -6
  47. package/dist-esm/src/utils.js.map +1 -1
  48. package/dist-esm/src/webPubSubCredentialPolicy.js +18 -18
  49. package/dist-esm/src/webPubSubCredentialPolicy.js.map +1 -1
  50. package/dist-esm/test/conn.spec.js +7 -8
  51. package/dist-esm/test/conn.spec.js.map +1 -1
  52. package/dist-esm/test/groups.spec.js +39 -38
  53. package/dist-esm/test/groups.spec.js.map +1 -1
  54. package/dist-esm/test/hubs.spec.js +95 -49
  55. package/dist-esm/test/hubs.spec.js.map +1 -1
  56. package/dist-esm/test/integration.spec.js +128 -0
  57. package/dist-esm/test/integration.spec.js.map +1 -0
  58. package/dist-esm/test/testEnv.js +5 -1
  59. package/dist-esm/test/testEnv.js.map +1 -1
  60. package/package.json +37 -36
  61. package/types/web-pubsub.d.ts +186 -138
  62. package/dist-esm/src/generated/azureWebPubSubServiceRestAPI.js +0 -15
  63. package/dist-esm/src/generated/azureWebPubSubServiceRestAPI.js.map +0 -1
  64. package/dist-esm/src/generated/azureWebPubSubServiceRestAPIContext.js +0 -34
  65. package/dist-esm/src/generated/azureWebPubSubServiceRestAPIContext.js.map +0 -1
  66. package/dist-esm/src/normalizeOptions.js +0 -8
  67. package/dist-esm/src/normalizeOptions.js.map +0 -1
package/dist/index.js CHANGED
@@ -5,17 +5,419 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
6
 
7
7
  var coreAuth = require('@azure/core-auth');
8
- var tslib = require('tslib');
9
- var coreHttp = require('@azure/core-http');
8
+ var coreRestPipeline = require('@azure/core-rest-pipeline');
9
+ var coreClient = require('@azure/core-client');
10
10
  var coreTracing = require('@azure/core-tracing');
11
11
  var jwt = _interopDefault(require('jsonwebtoken'));
12
12
  var logger$1 = require('@azure/logger');
13
13
  var url = require('url');
14
14
 
15
- const $host = {
16
- parameterPath: "$host",
15
+ /*
16
+ * Copyright (c) Microsoft Corporation.
17
+ * Licensed under the MIT License.
18
+ *
19
+ * Code generated by Microsoft (R) AutoRest Code Generator.
20
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
21
+ */
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",
17
419
  mapper: {
18
- serializedName: "$host",
420
+ serializedName: "Endpoint",
19
421
  required: true,
20
422
  type: {
21
423
  name: "String"
@@ -26,7 +428,7 @@ const $host = {
26
428
  const apiVersion = {
27
429
  parameterPath: "apiVersion",
28
430
  mapper: {
29
- defaultValue: "2020-10-01",
431
+ defaultValue: "2021-10-01",
30
432
  isConstant: true,
31
433
  serializedName: "api-version",
32
434
  type: {
@@ -34,6 +436,88 @@ const apiVersion = {
34
436
  }
35
437
  }
36
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
+ };
37
521
  const contentType = {
38
522
  parameterPath: "contentType",
39
523
  mapper: {
@@ -55,6 +539,17 @@ const message = {
55
539
  }
56
540
  }
57
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
+ };
58
553
  const contentType1 = {
59
554
  parameterPath: "contentType",
60
555
  mapper: {
@@ -76,18 +571,19 @@ const message1 = {
76
571
  }
77
572
  }
78
573
  };
79
- const hub = {
80
- parameterPath: "hub",
574
+ const accept2 = {
575
+ parameterPath: "accept",
81
576
  mapper: {
82
- serializedName: "hub",
83
- required: true,
577
+ defaultValue: "application/json, text/json",
578
+ isConstant: true,
579
+ serializedName: "Accept",
84
580
  type: {
85
581
  name: "String"
86
582
  }
87
583
  }
88
584
  };
89
- const excluded = {
90
- parameterPath: ["options", "excluded"],
585
+ const excludedConnections = {
586
+ parameterPath: ["options", "excludedConnections"],
91
587
  mapper: {
92
588
  serializedName: "excluded",
93
589
  type: {
@@ -99,11 +595,14 @@ const excluded = {
99
595
  }
100
596
  }
101
597
  },
102
- collectionFormat: coreHttp.QueryCollectionFormat.Multi
598
+ collectionFormat: "Multi"
103
599
  };
104
600
  const connectionId = {
105
601
  parameterPath: "connectionId",
106
602
  mapper: {
603
+ constraints: {
604
+ MinLength: 1
605
+ },
107
606
  serializedName: "connectionId",
108
607
  required: true,
109
608
  type: {
@@ -111,18 +610,13 @@ const connectionId = {
111
610
  }
112
611
  }
113
612
  };
114
- const reason = {
115
- parameterPath: ["options", "reason"],
116
- mapper: {
117
- serializedName: "reason",
118
- type: {
119
- name: "String"
120
- }
121
- }
122
- };
123
613
  const group = {
124
614
  parameterPath: "group",
125
615
  mapper: {
616
+ constraints: {
617
+ MaxLength: 1024,
618
+ MinLength: 1
619
+ },
126
620
  serializedName: "group",
127
621
  required: true,
128
622
  type: {
@@ -130,9 +624,12 @@ const group = {
130
624
  }
131
625
  }
132
626
  };
133
- const userId = {
627
+ const userId1 = {
134
628
  parameterPath: "userId",
135
629
  mapper: {
630
+ constraints: {
631
+ MinLength: 1
632
+ },
136
633
  serializedName: "userId",
137
634
  required: true,
138
635
  type: {
@@ -159,29 +656,16 @@ const targetName = {
159
656
  }
160
657
  }
161
658
  };
162
- const permission1 = {
163
- parameterPath: "permission",
164
- mapper: {
165
- serializedName: "permission",
166
- required: true,
167
- type: {
168
- name: "String"
169
- }
170
- }
171
- };
172
- const permission2 = {
173
- parameterPath: "permission",
174
- mapper: {
175
- serializedName: "permission",
176
- required: true,
177
- type: {
178
- name: "String"
179
- }
180
- }
181
- };
182
659
 
183
- /** Class representing a HealthApi. */
184
- class HealthApi {
660
+ /*
661
+ * Copyright (c) Microsoft Corporation.
662
+ * Licensed under the MIT License.
663
+ *
664
+ * Code generated by Microsoft (R) AutoRest Code Generator.
665
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
666
+ */
667
+ /** Class containing HealthApi operations. */
668
+ class HealthApiImpl {
185
669
  /**
186
670
  * Initialize a new instance of the class HealthApi class.
187
671
  * @param client Reference to the service client
@@ -193,26 +677,30 @@ class HealthApi {
193
677
  * Get service health status.
194
678
  * @param options The options parameters.
195
679
  */
196
- getHealthStatus(options) {
197
- const operationArguments = {
198
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
199
- };
200
- return this.client.sendOperationRequest(operationArguments, getHealthStatusOperationSpec);
680
+ getServiceStatus(options) {
681
+ return this.client.sendOperationRequest({ options }, getServiceStatusOperationSpec);
201
682
  }
202
683
  }
203
684
  // Operation Specifications
204
- const serializer = new coreHttp.Serializer({}, /* isXml */ false);
205
- const getHealthStatusOperationSpec = {
685
+ const serializer = coreClient.createSerializer(Mappers, /* isXml */ false);
686
+ const getServiceStatusOperationSpec = {
206
687
  path: "/api/health",
207
688
  httpMethod: "HEAD",
208
689
  responses: { 200: {}, default: {} },
209
690
  queryParameters: [apiVersion],
210
- urlParameters: [$host],
691
+ urlParameters: [endpoint],
211
692
  serializer
212
693
  };
213
694
 
214
- /** Class representing a WebPubSub. */
215
- class WebPubSub {
695
+ /*
696
+ * Copyright (c) Microsoft Corporation.
697
+ * Licensed under the MIT License.
698
+ *
699
+ * Code generated by Microsoft (R) AutoRest Code Generator.
700
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
701
+ */
702
+ /** Class containing WebPubSub operations. */
703
+ class WebPubSubImpl {
216
704
  /**
217
705
  * Initialize a new instance of the class WebPubSub class.
218
706
  * @param client Reference to the service client
@@ -220,6 +708,24 @@ class WebPubSub {
220
708
  constructor(client) {
221
709
  this.client = client;
222
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
+ }
223
729
  /**
224
730
  * Broadcast content inside request body to all the connected client connections.
225
731
  * @param args Includes all the parameters for this operation.
@@ -252,7 +758,7 @@ class WebPubSub {
252
758
  else {
253
759
  throw new TypeError(`"contentType" must be a valid value but instead was "${args[1]}".`);
254
760
  }
255
- operationArguments.options = coreHttp.operationOptionsToRequestOptionsBase(options || {});
761
+ operationArguments.options = options || {};
256
762
  return this.client.sendOperationRequest(operationArguments, operationSpec);
257
763
  }
258
764
  /**
@@ -263,12 +769,7 @@ class WebPubSub {
263
769
  * @param options The options parameters.
264
770
  */
265
771
  connectionExists(hub, connectionId, options) {
266
- const operationArguments = {
267
- hub,
268
- connectionId,
269
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
270
- };
271
- return this.client.sendOperationRequest(operationArguments, connectionExistsOperationSpec);
772
+ return this.client.sendOperationRequest({ hub, connectionId, options }, connectionExistsOperationSpec);
272
773
  }
273
774
  /**
274
775
  * Close the client connection.
@@ -277,13 +778,8 @@ class WebPubSub {
277
778
  * @param connectionId Target connection Id.
278
779
  * @param options The options parameters.
279
780
  */
280
- closeClientConnection(hub, connectionId, options) {
281
- const operationArguments = {
282
- hub,
283
- connectionId,
284
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
285
- };
286
- return this.client.sendOperationRequest(operationArguments, closeClientConnectionOperationSpec);
781
+ closeConnection(hub, connectionId, options) {
782
+ return this.client.sendOperationRequest({ hub, connectionId, options }, closeConnectionOperationSpec);
287
783
  }
288
784
  /**
289
785
  * Send content inside request body to the specific connection.
@@ -319,7 +815,7 @@ class WebPubSub {
319
815
  else {
320
816
  throw new TypeError(`"contentType" must be a valid value but instead was "${args[2]}".`);
321
817
  }
322
- operationArguments.options = coreHttp.operationOptionsToRequestOptionsBase(options || {});
818
+ operationArguments.options = options || {};
323
819
  return this.client.sendOperationRequest(operationArguments, operationSpec);
324
820
  }
325
821
  /**
@@ -330,12 +826,17 @@ class WebPubSub {
330
826
  * @param options The options parameters.
331
827
  */
332
828
  groupExists(hub, group, options) {
333
- const operationArguments = {
334
- hub,
335
- group,
336
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
337
- };
338
- return this.client.sendOperationRequest(operationArguments, groupExistsOperationSpec);
829
+ return this.client.sendOperationRequest({ hub, group, options }, groupExistsOperationSpec);
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);
339
840
  }
340
841
  /**
341
842
  * Send content inside request body to a group of connections.
@@ -371,7 +872,7 @@ class WebPubSub {
371
872
  else {
372
873
  throw new TypeError(`"contentType" must be a valid value but instead was "${args[2]}".`);
373
874
  }
374
- operationArguments.options = coreHttp.operationOptionsToRequestOptionsBase(options || {});
875
+ operationArguments.options = options || {};
375
876
  return this.client.sendOperationRequest(operationArguments, operationSpec);
376
877
  }
377
878
  /**
@@ -383,13 +884,7 @@ class WebPubSub {
383
884
  * @param options The options parameters.
384
885
  */
385
886
  addConnectionToGroup(hub, group, connectionId, options) {
386
- const operationArguments = {
387
- hub,
388
- group,
389
- connectionId,
390
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
391
- };
392
- return this.client.sendOperationRequest(operationArguments, addConnectionToGroupOperationSpec);
887
+ return this.client.sendOperationRequest({ hub, group, connectionId, options }, addConnectionToGroupOperationSpec);
393
888
  }
394
889
  /**
395
890
  * Remove a connection from the target group.
@@ -400,28 +895,27 @@ class WebPubSub {
400
895
  * @param options The options parameters.
401
896
  */
402
897
  removeConnectionFromGroup(hub, group, connectionId, options) {
403
- const operationArguments = {
404
- hub,
405
- group,
406
- connectionId,
407
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
408
- };
409
- return this.client.sendOperationRequest(operationArguments, removeConnectionFromGroupOperationSpec);
898
+ return this.client.sendOperationRequest({ hub, group, connectionId, options }, removeConnectionFromGroupOperationSpec);
899
+ }
900
+ /**
901
+ * Check if there are any client connections connected for the given user.
902
+ * @param hub Target hub name, which should start with alphabetic characters and only contain
903
+ * alpha-numeric characters or underscore.
904
+ * @param userId Target user Id.
905
+ * @param options The options parameters.
906
+ */
907
+ userExists(hub, userId, options) {
908
+ return this.client.sendOperationRequest({ hub, userId, options }, userExistsOperationSpec);
410
909
  }
411
910
  /**
412
- * Check if there are any client connections connected for the given user.
911
+ * Close connections for the specific user.
413
912
  * @param hub Target hub name, which should start with alphabetic characters and only contain
414
913
  * alpha-numeric characters or underscore.
415
- * @param userId Target user Id.
914
+ * @param userId The user Id.
416
915
  * @param options The options parameters.
417
916
  */
418
- userExists(hub, userId, options) {
419
- const operationArguments = {
420
- hub,
421
- userId,
422
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
423
- };
424
- return this.client.sendOperationRequest(operationArguments, userExistsOperationSpec);
917
+ closeUserConnections(hub, userId, options) {
918
+ return this.client.sendOperationRequest({ hub, userId, options }, closeUserConnectionsOperationSpec);
425
919
  }
426
920
  /**
427
921
  * Send content inside request body to the specific user.
@@ -457,26 +951,9 @@ class WebPubSub {
457
951
  else {
458
952
  throw new TypeError(`"contentType" must be a valid value but instead was "${args[2]}".`);
459
953
  }
460
- operationArguments.options = coreHttp.operationOptionsToRequestOptionsBase(options || {});
954
+ operationArguments.options = options || {};
461
955
  return this.client.sendOperationRequest(operationArguments, operationSpec);
462
956
  }
463
- /**
464
- * Check whether a user exists in the target group.
465
- * @param hub Target hub name, which should start with alphabetic characters and only contain
466
- * alpha-numeric characters or underscore.
467
- * @param group Target group name, which length should be greater than 0 and less than 1025.
468
- * @param userId Target user Id.
469
- * @param options The options parameters.
470
- */
471
- userExistsInGroup(hub, group, userId, options) {
472
- const operationArguments = {
473
- hub,
474
- group,
475
- userId,
476
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
477
- };
478
- return this.client.sendOperationRequest(operationArguments, userExistsInGroupOperationSpec);
479
- }
480
957
  /**
481
958
  * Add a user to the target group.
482
959
  * @param hub Target hub name, which should start with alphabetic characters and only contain
@@ -486,13 +963,7 @@ class WebPubSub {
486
963
  * @param options The options parameters.
487
964
  */
488
965
  addUserToGroup(hub, group, userId, options) {
489
- const operationArguments = {
490
- hub,
491
- group,
492
- userId,
493
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
494
- };
495
- return this.client.sendOperationRequest(operationArguments, addUserToGroupOperationSpec);
966
+ return this.client.sendOperationRequest({ hub, group, userId, options }, addUserToGroupOperationSpec);
496
967
  }
497
968
  /**
498
969
  * Remove a user from the target group.
@@ -503,13 +974,7 @@ class WebPubSub {
503
974
  * @param options The options parameters.
504
975
  */
505
976
  removeUserFromGroup(hub, group, userId, options) {
506
- const operationArguments = {
507
- hub,
508
- group,
509
- userId,
510
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
511
- };
512
- return this.client.sendOperationRequest(operationArguments, removeUserFromGroupOperationSpec);
977
+ return this.client.sendOperationRequest({ hub, group, userId, options }, removeUserFromGroupOperationSpec);
513
978
  }
514
979
  /**
515
980
  * Remove a user from all groups.
@@ -519,12 +984,7 @@ class WebPubSub {
519
984
  * @param options The options parameters.
520
985
  */
521
986
  removeUserFromAllGroups(hub, userId, options) {
522
- const operationArguments = {
523
- hub,
524
- userId,
525
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
526
- };
527
- return this.client.sendOperationRequest(operationArguments, removeUserFromAllGroupsOperationSpec);
987
+ return this.client.sendOperationRequest({ hub, userId, options }, removeUserFromAllGroupsOperationSpec);
528
988
  }
529
989
  /**
530
990
  * Grant permission to the connection.
@@ -535,13 +995,7 @@ class WebPubSub {
535
995
  * @param options The options parameters.
536
996
  */
537
997
  grantPermission(hub, permission, connectionId, options) {
538
- const operationArguments = {
539
- hub,
540
- permission,
541
- connectionId,
542
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
543
- };
544
- return this.client.sendOperationRequest(operationArguments, grantPermissionOperationSpec);
998
+ return this.client.sendOperationRequest({ hub, permission, connectionId, options }, grantPermissionOperationSpec);
545
999
  }
546
1000
  /**
547
1001
  * Revoke permission for the connection.
@@ -552,13 +1006,7 @@ class WebPubSub {
552
1006
  * @param options The options parameters.
553
1007
  */
554
1008
  revokePermission(hub, permission, connectionId, options) {
555
- const operationArguments = {
556
- hub,
557
- permission,
558
- connectionId,
559
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
560
- };
561
- return this.client.sendOperationRequest(operationArguments, revokePermissionOperationSpec);
1009
+ return this.client.sendOperationRequest({ hub, permission, connectionId, options }, revokePermissionOperationSpec);
562
1010
  }
563
1011
  /**
564
1012
  * Check if a connection has permission to the specified action.
@@ -569,293 +1017,506 @@ class WebPubSub {
569
1017
  * @param options The options parameters.
570
1018
  */
571
1019
  checkPermission(hub, permission, connectionId, options) {
572
- const operationArguments = {
573
- hub,
574
- permission,
575
- connectionId,
576
- options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
577
- };
578
- return this.client.sendOperationRequest(operationArguments, checkPermissionOperationSpec);
1020
+ return this.client.sendOperationRequest({ hub, permission, connectionId, options }, checkPermissionOperationSpec);
579
1021
  }
580
1022
  }
581
1023
  // Operation Specifications
582
- const serializer$1 = new coreHttp.Serializer({}, /* 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
+ };
583
1066
  const sendToAll$binaryOperationSpec = {
584
1067
  path: "/api/hubs/{hub}/:send",
585
1068
  httpMethod: "POST",
586
- responses: { 202: {}, default: {} },
1069
+ responses: {
1070
+ 202: {},
1071
+ default: {
1072
+ bodyMapper: ErrorDetail,
1073
+ headersMapper: WebPubSubSendToAllExceptionHeaders
1074
+ }
1075
+ },
587
1076
  requestBody: message,
588
- queryParameters: [apiVersion, excluded],
589
- urlParameters: [$host, hub],
590
- headerParameters: [contentType],
1077
+ queryParameters: [apiVersion, excludedConnections],
1078
+ urlParameters: [endpoint, hub],
1079
+ headerParameters: [contentType, accept1],
591
1080
  mediaType: "binary",
592
1081
  serializer: serializer$1
593
1082
  };
594
1083
  const sendToAll$textOperationSpec = {
595
1084
  path: "/api/hubs/{hub}/:send",
596
1085
  httpMethod: "POST",
597
- responses: { 202: {}, default: {} },
1086
+ responses: {
1087
+ 202: {},
1088
+ default: {
1089
+ bodyMapper: ErrorDetail,
1090
+ headersMapper: WebPubSubSendToAllExceptionHeaders
1091
+ }
1092
+ },
598
1093
  requestBody: message1,
599
- queryParameters: [apiVersion, excluded],
600
- urlParameters: [$host, hub],
601
- headerParameters: [contentType1],
1094
+ queryParameters: [apiVersion, excludedConnections],
1095
+ urlParameters: [endpoint, hub],
1096
+ headerParameters: [contentType1, accept2],
602
1097
  mediaType: "text",
603
1098
  serializer: serializer$1
604
1099
  };
605
1100
  const connectionExistsOperationSpec = {
606
1101
  path: "/api/hubs/{hub}/connections/{connectionId}",
607
1102
  httpMethod: "HEAD",
608
- responses: { 200: {}, 404: {}, default: {} },
1103
+ responses: {
1104
+ 200: {},
1105
+ 404: {},
1106
+ default: {
1107
+ bodyMapper: ErrorDetail,
1108
+ headersMapper: WebPubSubConnectionExistsExceptionHeaders
1109
+ }
1110
+ },
609
1111
  queryParameters: [apiVersion],
610
- urlParameters: [$host, hub, connectionId],
1112
+ urlParameters: [endpoint, hub, connectionId],
1113
+ headerParameters: [accept],
611
1114
  serializer: serializer$1
612
1115
  };
613
- const closeClientConnectionOperationSpec = {
1116
+ const closeConnectionOperationSpec = {
614
1117
  path: "/api/hubs/{hub}/connections/{connectionId}",
615
1118
  httpMethod: "DELETE",
616
- responses: { 200: {}, default: {} },
1119
+ responses: {
1120
+ 204: {},
1121
+ default: {
1122
+ bodyMapper: ErrorDetail,
1123
+ headersMapper: WebPubSubCloseConnectionExceptionHeaders
1124
+ }
1125
+ },
617
1126
  queryParameters: [apiVersion, reason],
618
- urlParameters: [$host, hub, connectionId],
1127
+ urlParameters: [endpoint, hub, connectionId],
1128
+ headerParameters: [accept],
619
1129
  serializer: serializer$1
620
1130
  };
621
1131
  const sendToConnection$binaryOperationSpec = {
622
1132
  path: "/api/hubs/{hub}/connections/{connectionId}/:send",
623
1133
  httpMethod: "POST",
624
- responses: { 202: {}, default: {} },
1134
+ responses: {
1135
+ 202: {},
1136
+ default: {
1137
+ bodyMapper: ErrorDetail,
1138
+ headersMapper: WebPubSubSendToConnectionExceptionHeaders
1139
+ }
1140
+ },
625
1141
  requestBody: message,
626
1142
  queryParameters: [apiVersion],
627
- urlParameters: [$host, hub, connectionId],
628
- headerParameters: [contentType],
1143
+ urlParameters: [endpoint, hub, connectionId],
1144
+ headerParameters: [contentType, accept1],
629
1145
  mediaType: "binary",
630
1146
  serializer: serializer$1
631
1147
  };
632
1148
  const sendToConnection$textOperationSpec = {
633
1149
  path: "/api/hubs/{hub}/connections/{connectionId}/:send",
634
1150
  httpMethod: "POST",
635
- responses: { 202: {}, default: {} },
1151
+ responses: {
1152
+ 202: {},
1153
+ default: {
1154
+ bodyMapper: ErrorDetail,
1155
+ headersMapper: WebPubSubSendToConnectionExceptionHeaders
1156
+ }
1157
+ },
636
1158
  requestBody: message1,
637
1159
  queryParameters: [apiVersion],
638
- urlParameters: [$host, hub, connectionId],
639
- headerParameters: [contentType1],
1160
+ urlParameters: [endpoint, hub, connectionId],
1161
+ headerParameters: [contentType1, accept2],
640
1162
  mediaType: "text",
641
1163
  serializer: serializer$1
642
1164
  };
643
1165
  const groupExistsOperationSpec = {
644
1166
  path: "/api/hubs/{hub}/groups/{group}",
645
1167
  httpMethod: "HEAD",
646
- responses: { 200: {}, 404: {}, default: {} },
1168
+ responses: {
1169
+ 200: {},
1170
+ 404: {},
1171
+ default: {
1172
+ bodyMapper: ErrorDetail,
1173
+ headersMapper: WebPubSubGroupExistsExceptionHeaders
1174
+ }
1175
+ },
647
1176
  queryParameters: [apiVersion],
648
- 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],
649
1198
  serializer: serializer$1
650
1199
  };
651
1200
  const sendToGroup$binaryOperationSpec = {
652
1201
  path: "/api/hubs/{hub}/groups/{group}/:send",
653
1202
  httpMethod: "POST",
654
- responses: { 202: {}, default: {} },
1203
+ responses: {
1204
+ 202: {},
1205
+ default: {
1206
+ bodyMapper: ErrorDetail,
1207
+ headersMapper: WebPubSubSendToGroupExceptionHeaders
1208
+ }
1209
+ },
655
1210
  requestBody: message,
656
- queryParameters: [apiVersion, excluded],
657
- urlParameters: [$host, hub, group],
658
- headerParameters: [contentType],
1211
+ queryParameters: [apiVersion, excludedConnections],
1212
+ urlParameters: [endpoint, hub, group],
1213
+ headerParameters: [contentType, accept1],
659
1214
  mediaType: "binary",
660
1215
  serializer: serializer$1
661
1216
  };
662
1217
  const sendToGroup$textOperationSpec = {
663
1218
  path: "/api/hubs/{hub}/groups/{group}/:send",
664
1219
  httpMethod: "POST",
665
- responses: { 202: {}, default: {} },
1220
+ responses: {
1221
+ 202: {},
1222
+ default: {
1223
+ bodyMapper: ErrorDetail,
1224
+ headersMapper: WebPubSubSendToGroupExceptionHeaders
1225
+ }
1226
+ },
666
1227
  requestBody: message1,
667
- queryParameters: [apiVersion, excluded],
668
- urlParameters: [$host, hub, group],
669
- headerParameters: [contentType1],
1228
+ queryParameters: [apiVersion, excludedConnections],
1229
+ urlParameters: [endpoint, hub, group],
1230
+ headerParameters: [contentType1, accept2],
670
1231
  mediaType: "text",
671
1232
  serializer: serializer$1
672
1233
  };
673
1234
  const addConnectionToGroupOperationSpec = {
674
1235
  path: "/api/hubs/{hub}/groups/{group}/connections/{connectionId}",
675
1236
  httpMethod: "PUT",
676
- responses: { 200: {}, 404: {}, default: {} },
1237
+ responses: {
1238
+ 200: {},
1239
+ 404: {},
1240
+ default: {
1241
+ bodyMapper: ErrorDetail,
1242
+ headersMapper: WebPubSubAddConnectionToGroupExceptionHeaders
1243
+ }
1244
+ },
677
1245
  queryParameters: [apiVersion],
678
1246
  urlParameters: [
679
- $host,
1247
+ endpoint,
680
1248
  hub,
681
1249
  connectionId,
682
1250
  group
683
1251
  ],
1252
+ headerParameters: [accept],
684
1253
  serializer: serializer$1
685
1254
  };
686
1255
  const removeConnectionFromGroupOperationSpec = {
687
1256
  path: "/api/hubs/{hub}/groups/{group}/connections/{connectionId}",
688
1257
  httpMethod: "DELETE",
689
- responses: { 200: {}, 404: {}, default: {} },
1258
+ responses: {
1259
+ 204: {},
1260
+ default: {
1261
+ bodyMapper: ErrorDetail,
1262
+ headersMapper: WebPubSubRemoveConnectionFromGroupExceptionHeaders
1263
+ }
1264
+ },
690
1265
  queryParameters: [apiVersion],
691
1266
  urlParameters: [
692
- $host,
1267
+ endpoint,
693
1268
  hub,
694
1269
  connectionId,
695
1270
  group
696
1271
  ],
1272
+ headerParameters: [accept],
697
1273
  serializer: serializer$1
698
1274
  };
699
1275
  const userExistsOperationSpec = {
700
1276
  path: "/api/hubs/{hub}/users/{userId}",
701
1277
  httpMethod: "HEAD",
702
- responses: { 200: {}, 404: {}, default: {} },
1278
+ responses: {
1279
+ 200: {},
1280
+ 404: {},
1281
+ default: {
1282
+ bodyMapper: ErrorDetail,
1283
+ headersMapper: WebPubSubUserExistsExceptionHeaders
1284
+ }
1285
+ },
703
1286
  queryParameters: [apiVersion],
704
- 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],
705
1308
  serializer: serializer$1
706
1309
  };
707
1310
  const sendToUser$binaryOperationSpec = {
708
1311
  path: "/api/hubs/{hub}/users/{userId}/:send",
709
1312
  httpMethod: "POST",
710
- responses: { 202: {}, default: {} },
1313
+ responses: {
1314
+ 202: {},
1315
+ default: {
1316
+ bodyMapper: ErrorDetail,
1317
+ headersMapper: WebPubSubSendToUserExceptionHeaders
1318
+ }
1319
+ },
711
1320
  requestBody: message,
712
1321
  queryParameters: [apiVersion],
713
- urlParameters: [$host, hub, userId],
714
- headerParameters: [contentType],
1322
+ urlParameters: [endpoint, hub, userId1],
1323
+ headerParameters: [contentType, accept1],
715
1324
  mediaType: "binary",
716
1325
  serializer: serializer$1
717
1326
  };
718
1327
  const sendToUser$textOperationSpec = {
719
1328
  path: "/api/hubs/{hub}/users/{userId}/:send",
720
1329
  httpMethod: "POST",
721
- responses: { 202: {}, default: {} },
1330
+ responses: {
1331
+ 202: {},
1332
+ default: {
1333
+ bodyMapper: ErrorDetail,
1334
+ headersMapper: WebPubSubSendToUserExceptionHeaders
1335
+ }
1336
+ },
722
1337
  requestBody: message1,
723
1338
  queryParameters: [apiVersion],
724
- urlParameters: [$host, hub, userId],
725
- headerParameters: [contentType1],
1339
+ urlParameters: [endpoint, hub, userId1],
1340
+ headerParameters: [contentType1, accept2],
726
1341
  mediaType: "text",
727
1342
  serializer: serializer$1
728
1343
  };
729
- const userExistsInGroupOperationSpec = {
730
- path: "/api/hubs/{hub}/users/{userId}/groups/{group}",
731
- httpMethod: "HEAD",
732
- responses: { 200: {}, 404: {}, default: {} },
733
- queryParameters: [apiVersion],
734
- urlParameters: [
735
- $host,
736
- hub,
737
- group,
738
- userId
739
- ],
740
- serializer: serializer$1
741
- };
742
1344
  const addUserToGroupOperationSpec = {
743
1345
  path: "/api/hubs/{hub}/users/{userId}/groups/{group}",
744
1346
  httpMethod: "PUT",
745
- responses: { 200: {}, default: {} },
1347
+ responses: {
1348
+ 200: {},
1349
+ 404: {},
1350
+ default: {
1351
+ bodyMapper: ErrorDetail,
1352
+ headersMapper: WebPubSubAddUserToGroupExceptionHeaders
1353
+ }
1354
+ },
746
1355
  queryParameters: [apiVersion],
747
1356
  urlParameters: [
748
- $host,
1357
+ endpoint,
749
1358
  hub,
750
1359
  group,
751
- userId
1360
+ userId1
752
1361
  ],
1362
+ headerParameters: [accept],
753
1363
  serializer: serializer$1
754
1364
  };
755
1365
  const removeUserFromGroupOperationSpec = {
756
1366
  path: "/api/hubs/{hub}/users/{userId}/groups/{group}",
757
1367
  httpMethod: "DELETE",
758
- responses: { 200: {}, default: {} },
1368
+ responses: {
1369
+ 204: {},
1370
+ default: {
1371
+ bodyMapper: ErrorDetail,
1372
+ headersMapper: WebPubSubRemoveUserFromGroupExceptionHeaders
1373
+ }
1374
+ },
759
1375
  queryParameters: [apiVersion],
760
1376
  urlParameters: [
761
- $host,
1377
+ endpoint,
762
1378
  hub,
763
1379
  group,
764
- userId
1380
+ userId1
765
1381
  ],
1382
+ headerParameters: [accept],
766
1383
  serializer: serializer$1
767
1384
  };
768
1385
  const removeUserFromAllGroupsOperationSpec = {
769
1386
  path: "/api/hubs/{hub}/users/{userId}/groups",
770
1387
  httpMethod: "DELETE",
771
- responses: { 200: {}, default: {} },
1388
+ responses: {
1389
+ 204: {},
1390
+ default: {
1391
+ bodyMapper: ErrorDetail,
1392
+ headersMapper: WebPubSubRemoveUserFromAllGroupsExceptionHeaders
1393
+ }
1394
+ },
772
1395
  queryParameters: [apiVersion],
773
- urlParameters: [$host, hub, userId],
1396
+ urlParameters: [endpoint, hub, userId1],
1397
+ headerParameters: [accept],
774
1398
  serializer: serializer$1
775
1399
  };
776
1400
  const grantPermissionOperationSpec = {
777
1401
  path: "/api/hubs/{hub}/permissions/{permission}/connections/{connectionId}",
778
1402
  httpMethod: "PUT",
779
- responses: { 200: {}, default: {} },
1403
+ responses: {
1404
+ 200: {},
1405
+ default: {
1406
+ bodyMapper: ErrorDetail,
1407
+ headersMapper: WebPubSubGrantPermissionExceptionHeaders
1408
+ }
1409
+ },
780
1410
  queryParameters: [apiVersion, targetName],
781
1411
  urlParameters: [
782
- $host,
1412
+ endpoint,
783
1413
  hub,
784
1414
  connectionId,
785
1415
  permission
786
1416
  ],
1417
+ headerParameters: [accept],
787
1418
  serializer: serializer$1
788
1419
  };
789
1420
  const revokePermissionOperationSpec = {
790
1421
  path: "/api/hubs/{hub}/permissions/{permission}/connections/{connectionId}",
791
1422
  httpMethod: "DELETE",
792
- responses: { 200: {}, default: {} },
1423
+ responses: {
1424
+ 204: {},
1425
+ default: {
1426
+ bodyMapper: ErrorDetail,
1427
+ headersMapper: WebPubSubRevokePermissionExceptionHeaders
1428
+ }
1429
+ },
793
1430
  queryParameters: [apiVersion, targetName],
794
1431
  urlParameters: [
795
- $host,
1432
+ endpoint,
796
1433
  hub,
797
1434
  connectionId,
798
- permission1
1435
+ permission
799
1436
  ],
1437
+ headerParameters: [accept],
800
1438
  serializer: serializer$1
801
1439
  };
802
1440
  const checkPermissionOperationSpec = {
803
1441
  path: "/api/hubs/{hub}/permissions/{permission}/connections/{connectionId}",
804
1442
  httpMethod: "HEAD",
805
- responses: { 200: {}, 404: {}, default: {} },
1443
+ responses: {
1444
+ 200: {},
1445
+ 404: {},
1446
+ default: {
1447
+ bodyMapper: ErrorDetail,
1448
+ headersMapper: WebPubSubCheckPermissionExceptionHeaders
1449
+ }
1450
+ },
806
1451
  queryParameters: [apiVersion, targetName],
807
1452
  urlParameters: [
808
- $host,
1453
+ endpoint,
809
1454
  hub,
810
1455
  connectionId,
811
- permission2
1456
+ permission
812
1457
  ],
1458
+ headerParameters: [accept],
813
1459
  serializer: serializer$1
814
1460
  };
815
1461
 
816
- const packageName = "WebPubSub";
817
- const packageVersion = "1.0.0";
818
- /**
819
- * @hidden
1462
+ /*
1463
+ * Copyright (c) Microsoft Corporation.
1464
+ * Licensed under the MIT License.
1465
+ *
1466
+ * Code generated by Microsoft (R) AutoRest Code Generator.
1467
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
820
1468
  */
821
- class AzureWebPubSubServiceRestAPIContext extends coreHttp.ServiceClient {
1469
+ /** @internal */
1470
+ class GeneratedClientContext extends coreClient.ServiceClient {
822
1471
  /**
823
- * Initializes a new instance of the AzureWebPubSubServiceRestAPIContext class.
824
- * @param $host server parameter
1472
+ * Initializes a new instance of the GeneratedClientContext class.
1473
+ * @param endpoint HTTP or HTTPS endpoint for the Web PubSub service instance.
825
1474
  * @param options The parameter options
826
1475
  */
827
- constructor($host, options) {
828
- if ($host === undefined) {
829
- throw new Error("'$host' cannot be null");
1476
+ constructor(endpoint, options) {
1477
+ if (endpoint === undefined) {
1478
+ throw new Error("'endpoint' cannot be null");
830
1479
  }
831
1480
  // Initializing default values for options
832
1481
  if (!options) {
833
1482
  options = {};
834
1483
  }
835
- if (!options.userAgent) {
836
- const defaultUserAgent = coreHttp.getDefaultUserAgentValue();
837
- options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;
838
- }
839
- super(undefined, options);
840
- this.requestContentType = "application/json; charset=utf-8";
841
- this.baseUri = options.endpoint || "{$host}";
1484
+ const defaults = {
1485
+ requestContentType: "application/json; charset=utf-8"
1486
+ };
1487
+ const packageDetails = `azsdk-js-web-pubsub/1.0.1`;
1488
+ const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
1489
+ ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
1490
+ : `${packageDetails}`;
1491
+ const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {
1492
+ userAgentPrefix
1493
+ }, baseUri: options.endpoint || "{Endpoint}" });
1494
+ super(optionsWithDefaults);
842
1495
  // Parameter assignments
843
- this.$host = $host;
1496
+ this.endpoint = endpoint;
844
1497
  // Assigning values to Constant parameters
845
- this.apiVersion = options.apiVersion || "2020-10-01";
1498
+ this.apiVersion = options.apiVersion || "2021-10-01";
846
1499
  }
847
1500
  }
848
1501
 
849
- class AzureWebPubSubServiceRestAPI extends AzureWebPubSubServiceRestAPIContext {
1502
+ /*
1503
+ * Copyright (c) Microsoft Corporation.
1504
+ * Licensed under the MIT License.
1505
+ *
1506
+ * Code generated by Microsoft (R) AutoRest Code Generator.
1507
+ * Changes may cause incorrect behavior and will be lost if the code is regenerated.
1508
+ */
1509
+ /** @internal */
1510
+ class GeneratedClient extends GeneratedClientContext {
850
1511
  /**
851
- * Initializes a new instance of the AzureWebPubSubServiceRestAPI class.
852
- * @param $host server parameter
1512
+ * Initializes a new instance of the GeneratedClient class.
1513
+ * @param endpoint HTTP or HTTPS endpoint for the Web PubSub service instance.
853
1514
  * @param options The parameter options
854
1515
  */
855
- constructor($host, options) {
856
- super($host, options);
857
- this.healthApi = new HealthApi(this);
858
- this.webPubSub = new WebPubSub(this);
1516
+ constructor(endpoint, options) {
1517
+ super(endpoint, options);
1518
+ this.healthApi = new HealthApiImpl(this);
1519
+ this.webPubSub = new WebPubSubImpl(this);
859
1520
  }
860
1521
  }
861
1522
 
@@ -867,12 +1528,8 @@ const createSpan = coreTracing.createSpanFunction({
867
1528
  });
868
1529
 
869
1530
  // Copyright (c) Microsoft Corporation.
870
- function normalizeSendToAllOptions(options) {
871
- const { excludedConnections } = options, otherOptions = tslib.__rest(options, ["excludedConnections"]);
872
- return Object.assign(Object.assign({}, otherOptions), { excluded: excludedConnections });
873
- }
874
-
875
- function isHttpRequestBody(obj) {
1531
+ // Licensed under the MIT license.
1532
+ function isRequestBody(obj) {
876
1533
  return (typeof obj === "function" ||
877
1534
  (typeof obj === "object" &&
878
1535
  obj != null &&
@@ -880,18 +1537,18 @@ function isHttpRequestBody(obj) {
880
1537
  obj.constructor.name === "Blob" ||
881
1538
  ArrayBuffer.isView(obj))));
882
1539
  }
883
- function getContentTypeForMessage(message, options) {
1540
+ function getPayloadForMessage(message, options) {
884
1541
  if ((options === null || options === void 0 ? void 0 : options.contentType) === "text/plain") {
885
1542
  if (typeof message !== "string") {
886
1543
  throw new TypeError("Message must be a string.");
887
1544
  }
888
- return "text/plain";
1545
+ return { contentType: "text/plain", payload: message };
889
1546
  }
890
- else if (isHttpRequestBody(message)) {
891
- return "application/octet-stream";
1547
+ else if (isRequestBody(message)) {
1548
+ return { contentType: "application/octet-stream", payload: message };
892
1549
  }
893
1550
  else {
894
- return "application/json";
1551
+ return { contentType: "application/json", payload: JSON.stringify(message) };
895
1552
  }
896
1553
  }
897
1554
 
@@ -901,7 +1558,6 @@ function getContentTypeForMessage(message, options) {
901
1558
  */
902
1559
  class WebPubSubGroupImpl {
903
1560
  /**
904
- * @private
905
1561
  * @internal
906
1562
  */
907
1563
  constructor(client, hubName, groupName) {
@@ -916,150 +1572,137 @@ class WebPubSubGroupImpl {
916
1572
  /**
917
1573
  * Add a specific connection to this group
918
1574
  *
919
- * @param connectionId The connection id to add to this group
920
- * @param options Additional options
1575
+ * @param connectionId - The connection id to add to this group
1576
+ * @param options - Additional options
921
1577
  */
922
- addConnection(connectionId, options = {}) {
923
- return tslib.__awaiter(this, void 0, void 0, function* () {
924
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-addConnection", options);
925
- try {
926
- const res = yield this.client.webPubSub.addConnectionToGroup(this.hubName, this.groupName, connectionId, updatedOptions);
927
- if (res._response.status === 404) {
928
- throw new coreHttp.RestError(`Connection id '${connectionId}' doesn't exist`, undefined, res._response.status, res._response.request, res._response);
929
- }
930
- return res;
1578
+ async addConnection(connectionId, options = {}) {
1579
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-addConnection", options);
1580
+ let response;
1581
+ function onResponse(rawResponse, flatResponse) {
1582
+ response = rawResponse;
1583
+ if (updatedOptions.onResponse) {
1584
+ updatedOptions.onResponse(rawResponse, flatResponse);
931
1585
  }
932
- finally {
933
- span.end();
1586
+ }
1587
+ try {
1588
+ await this.client.webPubSub.addConnectionToGroup(this.hubName, this.groupName, connectionId, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1589
+ if (response.status === 404) {
1590
+ throw new coreRestPipeline.RestError(`Connection id '${connectionId}' doesn't exist`, {
1591
+ statusCode: response === null || response === void 0 ? void 0 : response.status,
1592
+ request: response === null || response === void 0 ? void 0 : response.request,
1593
+ response: response
1594
+ });
934
1595
  }
935
- });
1596
+ }
1597
+ finally {
1598
+ span.end();
1599
+ }
936
1600
  }
937
1601
  /**
938
1602
  * Remove a specific connection from this group
939
1603
  *
940
- * @param connectionId The connection id to remove from this group
941
- * @param options Additional options
1604
+ * @param connectionId - The connection id to remove from this group
1605
+ * @param options - Additional options
942
1606
  */
943
- removeConnection(connectionId, options = {}) {
944
- return tslib.__awaiter(this, void 0, void 0, function* () {
945
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-removeConnection", options);
946
- try {
947
- const res = yield this.client.webPubSub.removeConnectionFromGroup(this.hubName, this.groupName, connectionId, updatedOptions);
948
- return res;
949
- }
950
- finally {
951
- span.end();
952
- }
953
- });
1607
+ async removeConnection(connectionId, options = {}) {
1608
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-removeConnection", options);
1609
+ try {
1610
+ await this.client.webPubSub.removeConnectionFromGroup(this.hubName, this.groupName, connectionId, updatedOptions);
1611
+ }
1612
+ finally {
1613
+ span.end();
1614
+ }
954
1615
  }
955
1616
  /**
956
- * Add a user to this group
1617
+ * Close all connections to this group
957
1618
  *
958
- * @param username The user name to add
959
- * @param options Additional options
1619
+ * @param options - Additional options
960
1620
  */
961
- addUser(username, options = {}) {
962
- return tslib.__awaiter(this, void 0, void 0, function* () {
963
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-addUser", options);
964
- try {
965
- return yield this.client.webPubSub.addUserToGroup(this.hubName, this.groupName, username, updatedOptions);
966
- }
967
- finally {
968
- span.end();
969
- }
970
- });
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
+ }
971
1629
  }
972
1630
  /**
973
- * Check if a user is in this group
1631
+ * Add a user to this group
974
1632
  *
975
- * @param username The user name to check for
976
- * @param options Additional options
1633
+ * @param username - The user name to add
1634
+ * @param options - Additional options
977
1635
  */
978
- hasUser(username, options = {}) {
979
- return tslib.__awaiter(this, void 0, void 0, function* () {
980
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-hasUser", options);
981
- try {
982
- const res = yield this.client.webPubSub.userExistsInGroup(this.hubName, this.groupName, username, updatedOptions);
983
- if (res._response.status === 200) {
984
- return true;
985
- }
986
- else if (res._response.status === 404) {
987
- return false;
988
- }
989
- else {
990
- // this is sad - wish this was handled by autorest.
991
- throw new coreHttp.RestError(res._response.bodyAsText, undefined, res._response.status, res._response.request, res._response);
992
- }
993
- }
994
- finally {
995
- span.end();
996
- }
997
- });
1636
+ async addUser(username, options = {}) {
1637
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-addUser", options);
1638
+ try {
1639
+ await this.client.webPubSub.addUserToGroup(this.hubName, this.groupName, username, updatedOptions);
1640
+ }
1641
+ finally {
1642
+ span.end();
1643
+ }
998
1644
  }
999
1645
  /**
1000
1646
  * Remove a user from this group
1001
1647
  *
1002
- * @param username The user name to remove
1003
- * @param options Additional options
1648
+ * @param username - The user name to remove
1649
+ * @param options - Additional options
1004
1650
  */
1005
- removeUser(username, options = {}) {
1006
- return tslib.__awaiter(this, void 0, void 0, function* () {
1007
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-removeUser", options);
1008
- try {
1009
- return yield this.client.webPubSub.removeUserFromGroup(this.hubName, this.groupName, username, updatedOptions);
1010
- }
1011
- finally {
1012
- span.end();
1013
- }
1014
- });
1015
- }
1016
- sendToAll(message, options = {}) {
1017
- return tslib.__awaiter(this, void 0, void 0, function* () {
1018
- const normalizedOptions = normalizeSendToAllOptions(options);
1019
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-sendToAll", normalizedOptions);
1020
- const contentType = getContentTypeForMessage(message, updatedOptions);
1021
- try {
1022
- return yield this.client.webPubSub.sendToGroup(this.hubName, this.groupName, contentType, contentType === "application/json" ? JSON.stringify(message) : message, updatedOptions);
1023
- }
1024
- finally {
1025
- span.end();
1026
- }
1027
- });
1651
+ async removeUser(username, options = {}) {
1652
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-removeUser", options);
1653
+ try {
1654
+ await this.client.webPubSub.removeUserFromGroup(this.hubName, this.groupName, username, updatedOptions);
1655
+ }
1656
+ finally {
1657
+ span.end();
1658
+ }
1659
+ }
1660
+ async sendToAll(message, options = {}) {
1661
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-group-sendToAll", options);
1662
+ const { contentType, payload } = getPayloadForMessage(message, updatedOptions);
1663
+ try {
1664
+ await this.client.webPubSub.sendToGroup(this.hubName, this.groupName, contentType, payload, updatedOptions);
1665
+ }
1666
+ finally {
1667
+ span.end();
1668
+ }
1028
1669
  }
1029
1670
  }
1030
1671
 
1031
1672
  // Copyright (c) Microsoft Corporation.
1032
- function webPubSubAzureKeyCredentialPolicyFactory(credential) {
1673
+ /**
1674
+ * The programmatic identifier of the webPubSubKeyCredentialPolicy.
1675
+ */
1676
+ const webPubSubKeyCredentialPolicyName = "webPubSubKeyCredentialPolicy";
1677
+ /**
1678
+ * Create an HTTP pipeline policy to authenticate a request
1679
+ * using an `AzureKeyCredential` for Text Analytics
1680
+ * @internal
1681
+ */
1682
+ function webPubSubKeyCredentialPolicy(credential) {
1033
1683
  return {
1034
- create: (nextPolicy, options) => {
1035
- return new WebPubSubKeyCredentialPolicy(nextPolicy, options, credential);
1036
- }
1037
- };
1038
- }
1039
- class WebPubSubKeyCredentialPolicy extends coreHttp.BaseRequestPolicy {
1040
- constructor(nextPolicy, options, credential) {
1041
- super(nextPolicy, options);
1042
- this.credential = credential;
1043
- }
1044
- sendRequest(request) {
1045
- request.headers.set("Authorization", "Bearer " +
1046
- jwt.sign({}, this.credential.key, {
1684
+ name: webPubSubKeyCredentialPolicyName,
1685
+ sendRequest(request, next) {
1686
+ const bearerToken = jwt.sign({}, credential.key, {
1047
1687
  audience: request.url,
1048
1688
  expiresIn: "1h",
1049
1689
  algorithm: "HS256"
1050
- }));
1051
- return this._nextPolicy.sendRequest(request);
1052
- }
1690
+ });
1691
+ request.headers.set("Authorization", `Bearer ${bearerToken}`);
1692
+ return next(request);
1693
+ }
1694
+ };
1053
1695
  }
1054
1696
 
1055
1697
  // Copyright (c) Microsoft Corporation.
1056
1698
  /**
1057
- * The @azure/logger configuration for this package.
1699
+ * The `@azure/logger` configuration for this package.
1058
1700
  */
1059
1701
  const logger = logger$1.createClientLogger("web-pubsub");
1060
1702
 
1703
+ // Copyright (c) Microsoft Corporation.
1061
1704
  function parseConnectionString(conn) {
1062
- let parsed = {};
1705
+ const parsed = {};
1063
1706
  conn.split(";").forEach((i) => {
1064
1707
  const assignmentPos = i.indexOf("=");
1065
1708
  if (assignmentPos === -1)
@@ -1086,22 +1729,44 @@ function parseConnectionString(conn) {
1086
1729
  return { credential, endpoint };
1087
1730
  }
1088
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
+
1089
1753
  // Copyright (c) Microsoft Corporation.
1090
1754
  /**
1091
1755
  * Client for connecting to a Web PubSub hub
1092
1756
  */
1093
1757
  class WebPubSubServiceClient {
1094
1758
  constructor(endpointOrConnectionString, credsOrHubName, hubNameOrOpts, opts) {
1759
+ var _a, _b;
1095
1760
  /**
1096
1761
  * The Web PubSub API version being used by this client
1097
1762
  */
1098
- this.apiVersion = "2020-10-01";
1763
+ this.apiVersion = "2021-10-01";
1099
1764
  // unpack constructor arguments
1100
- if (typeof credsOrHubName === "object" && "key" in credsOrHubName) {
1765
+ if (typeof credsOrHubName === "object") {
1101
1766
  this.endpoint = endpointOrConnectionString;
1102
- this.credential = credsOrHubName;
1103
1767
  this.hubName = hubNameOrOpts;
1104
1768
  this.clientOptions = opts;
1769
+ this.credential = credsOrHubName;
1105
1770
  }
1106
1771
  else {
1107
1772
  const parsedCs = parseConnectionString(endpointOrConnectionString);
@@ -1110,254 +1775,337 @@ class WebPubSubServiceClient {
1110
1775
  this.hubName = credsOrHubName;
1111
1776
  this.clientOptions = hubNameOrOpts;
1112
1777
  }
1113
- const internalPipelineOptions = Object.assign(Object.assign({}, this.clientOptions), {
1778
+ const internalPipelineOptions = Object.assign(Object.assign(Object.assign({}, this.clientOptions), {
1779
+ apiVersion: this.apiVersion,
1114
1780
  loggingOptions: {
1115
1781
  logger: logger.info
1116
1782
  }
1117
- });
1118
- const pipeline = coreHttp.createPipelineFromOptions(internalPipelineOptions, webPubSubAzureKeyCredentialPolicyFactory(this.credential));
1119
- this.client = new AzureWebPubSubServiceRestAPI(this.endpoint, pipeline);
1120
- }
1121
- /**
1122
- * Auth the client connection with userId and custom claims if any
1123
- * @param options The options that the client has
1124
- */
1125
- getAuthenticationToken(options) {
1126
- return tslib.__awaiter(this, void 0, void 0, function* () {
1127
- const endpoint = this.endpoint.endsWith("/") ? this.endpoint : this.endpoint + "/";
1128
- const key = this.credential.key;
1129
- const hub = this.hubName;
1130
- const clientEndpoint = endpoint.replace(/(http)(s?:\/\/)/gi, "ws$2");
1131
- const clientUrl = `${clientEndpoint}client/hubs/${hub}`;
1132
- const audience = `${endpoint}client/hubs/${hub}`;
1133
- const payload = { role: options === null || options === void 0 ? void 0 : options.roles };
1134
- const signOptions = {
1135
- audience: audience,
1136
- expiresIn: (options === null || options === void 0 ? void 0 : options.ttl) === undefined ? "1h" : `${options.ttl}m`,
1137
- algorithm: "HS256"
1138
- };
1139
- if (options === null || options === void 0 ? void 0 : options.userId) {
1140
- signOptions.subject = options === null || options === void 0 ? void 0 : options.userId;
1783
+ }), (coreAuth.isTokenCredential(this.credential)
1784
+ ? {
1785
+ credential: this.credential,
1786
+ credentialScopes: ["https://webpubsub.azure.com/.default"]
1141
1787
  }
1142
- const token = jwt.sign(payload, key, signOptions);
1143
- const url = `${clientUrl}?access_token=${token}`;
1144
- return {
1145
- baseUrl: clientUrl,
1146
- token: jwt.sign(payload, key, signOptions),
1147
- url: url
1148
- };
1149
- });
1788
+ : {}));
1789
+ this.client = new GeneratedClient(this.endpoint, internalPipelineOptions);
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
+ }
1150
1796
  }
1151
1797
  /**
1152
1798
  * Get a client for a group
1153
- * @param groupName The name of the group to connect to.
1799
+ * @param groupName - The name of the group to connect to.
1154
1800
  */
1155
1801
  group(groupName) {
1156
1802
  return new WebPubSubGroupImpl(this.client, this.hubName, groupName);
1157
1803
  }
1158
- sendToAll(message, options = {}) {
1159
- return tslib.__awaiter(this, void 0, void 0, function* () {
1160
- const normalizedOptions = normalizeSendToAllOptions(options);
1161
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToAll", normalizedOptions);
1162
- const contentType = getContentTypeForMessage(message, updatedOptions);
1163
- try {
1164
- return yield this.client.webPubSub.sendToAll(this.hubName, contentType, contentType === "application/json" ? JSON.stringify(message) : message, updatedOptions);
1165
- }
1166
- finally {
1167
- span.end();
1168
- }
1169
- });
1170
- }
1171
- sendToUser(username, message, options = {}) {
1172
- return tslib.__awaiter(this, void 0, void 0, function* () {
1173
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToUser", options);
1174
- const contentType = getContentTypeForMessage(message, updatedOptions);
1175
- try {
1176
- return yield this.client.webPubSub.sendToUser(this.hubName, username, contentType, contentType === "application/json" ? JSON.stringify(message) : message, updatedOptions);
1177
- }
1178
- finally {
1179
- span.end();
1180
- }
1181
- });
1182
- }
1183
- sendToConnection(connectionId, message, options = {}) {
1184
- return tslib.__awaiter(this, void 0, void 0, function* () {
1185
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToConnection", options);
1186
- const contentType = getContentTypeForMessage(message, updatedOptions);
1187
- try {
1188
- return yield this.client.webPubSub.sendToConnection(this.hubName, connectionId, contentType, contentType === "application/json" ? JSON.stringify(message) : message, updatedOptions);
1189
- }
1190
- finally {
1191
- span.end();
1192
- }
1193
- });
1804
+ async sendToAll(message, options = {}) {
1805
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToAll", options);
1806
+ const { contentType, payload } = getPayloadForMessage(message, updatedOptions);
1807
+ try {
1808
+ return await this.client.webPubSub.sendToAll(this.hubName, contentType, payload, updatedOptions);
1809
+ }
1810
+ finally {
1811
+ span.end();
1812
+ }
1813
+ }
1814
+ async sendToUser(username, message, options = {}) {
1815
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToUser", options);
1816
+ const { contentType, payload } = getPayloadForMessage(message, updatedOptions);
1817
+ try {
1818
+ return await this.client.webPubSub.sendToUser(this.hubName, username, contentType, payload, updatedOptions);
1819
+ }
1820
+ finally {
1821
+ span.end();
1822
+ }
1823
+ }
1824
+ async sendToConnection(connectionId, message, options = {}) {
1825
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-sendToConnection", options);
1826
+ const { contentType, payload } = getPayloadForMessage(message, updatedOptions);
1827
+ try {
1828
+ return await this.client.webPubSub.sendToConnection(this.hubName, connectionId, contentType, payload, updatedOptions);
1829
+ }
1830
+ finally {
1831
+ span.end();
1832
+ }
1194
1833
  }
1195
1834
  /**
1196
1835
  * Check if a specific connection is connected to this hub
1197
1836
  *
1198
- * @param connectionId Connection id to check
1199
- * @param options Additional options
1837
+ * @param connectionId - Connection id to check
1838
+ * @param options - Additional options
1200
1839
  */
1201
- hasConnection(connectionId, options = {}) {
1202
- return tslib.__awaiter(this, void 0, void 0, function* () {
1203
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasConnection", options);
1204
- try {
1205
- const res = yield this.client.webPubSub.connectionExists(this.hubName, connectionId, updatedOptions);
1206
- if (res._response.status === 200) {
1207
- return true;
1208
- }
1209
- else if (res._response.status === 404) {
1210
- return false;
1211
- }
1212
- else {
1213
- // this is sad - wish this was handled by autorest.
1214
- throw new coreHttp.RestError(res._response.bodyAsText, undefined, res._response.status, res._response.request, res._response);
1215
- }
1840
+ async connectionExists(connectionId, options = {}) {
1841
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasConnection", options);
1842
+ let response;
1843
+ function onResponse(rawResponse, flatResponse) {
1844
+ response = rawResponse;
1845
+ if (updatedOptions.onResponse) {
1846
+ updatedOptions.onResponse(rawResponse, flatResponse);
1847
+ }
1848
+ }
1849
+ try {
1850
+ await this.client.webPubSub.connectionExists(this.hubName, connectionId, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1851
+ if (response.status === 200) {
1852
+ return true;
1853
+ }
1854
+ else if (response.status === 404) {
1855
+ return false;
1216
1856
  }
1217
- finally {
1218
- span.end();
1857
+ else {
1858
+ // this is sad - wish this was handled by autorest.
1859
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
1860
+ statusCode: response === null || response === void 0 ? void 0 : response.status,
1861
+ request: response === null || response === void 0 ? void 0 : response.request,
1862
+ response: response
1863
+ });
1219
1864
  }
1220
- });
1865
+ }
1866
+ finally {
1867
+ span.end();
1868
+ }
1221
1869
  }
1222
1870
  /**
1223
1871
  * Close a specific connection to this hub
1224
1872
  *
1225
- * @param connectionId Connection id to close
1226
- * @param options Additional options
1873
+ * @param connectionId - Connection id to close
1874
+ * @param options - Additional options
1227
1875
  */
1228
- closeConnection(connectionId, options = {}) {
1229
- return tslib.__awaiter(this, void 0, void 0, function* () {
1230
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-removeConnection", options);
1231
- try {
1232
- return yield this.client.webPubSub.closeClientConnection(this.hubName, connectionId, updatedOptions);
1233
- }
1234
- finally {
1235
- span.end();
1236
- }
1237
- });
1876
+ async closeConnection(connectionId, options = {}) {
1877
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-closeConnection", options);
1878
+ try {
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);
1909
+ }
1910
+ finally {
1911
+ span.end();
1912
+ }
1238
1913
  }
1239
1914
  /**
1240
1915
  * Remove a specific user from all groups they are joined to
1241
- * @param userId The user id to remove from all groups
1242
- * @param options Additional options
1916
+ * @param userId - The user id to remove from all groups
1917
+ * @param options - Additional options
1243
1918
  */
1244
- removeUserFromAllGroups(userId, options = {}) {
1245
- return tslib.__awaiter(this, void 0, void 0, function* () {
1246
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-removeUserFromAllGroups", options);
1247
- try {
1248
- return yield this.client.webPubSub.removeUserFromAllGroups(this.hubName, userId, updatedOptions);
1249
- }
1250
- finally {
1251
- span.end();
1252
- }
1253
- });
1919
+ async removeUserFromAllGroups(userId, options = {}) {
1920
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-removeUserFromAllGroups", options);
1921
+ try {
1922
+ await this.client.webPubSub.removeUserFromAllGroups(this.hubName, userId, updatedOptions);
1923
+ }
1924
+ finally {
1925
+ span.end();
1926
+ }
1254
1927
  }
1255
1928
  /**
1256
1929
  * Check if a particular group exists (i.e. has active connections).
1257
1930
  *
1258
- * @param groupName The group name to check for
1259
- * @param options Additional options
1931
+ * @param groupName - The group name to check for
1932
+ * @param options - Additional options
1260
1933
  */
1261
- hasGroup(groupName, options = {}) {
1262
- return tslib.__awaiter(this, void 0, void 0, function* () {
1263
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasGroup", options);
1264
- try {
1265
- const res = yield this.client.webPubSub.groupExists(this.hubName, groupName, updatedOptions);
1266
- if (res._response.status === 200) {
1267
- return true;
1268
- }
1269
- else if (res._response.status === 404) {
1270
- return false;
1271
- }
1272
- else {
1273
- throw new coreHttp.RestError(res._response.bodyAsText, undefined, res._response.status, res._response.request, res._response);
1274
- }
1934
+ async groupExists(groupName, options = {}) {
1935
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasGroup", options);
1936
+ let response;
1937
+ function onResponse(rawResponse, flatResponse) {
1938
+ response = rawResponse;
1939
+ if (updatedOptions.onResponse) {
1940
+ updatedOptions.onResponse(rawResponse, flatResponse);
1941
+ }
1942
+ }
1943
+ try {
1944
+ await this.client.webPubSub.groupExists(this.hubName, groupName, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1945
+ if (response.status === 200) {
1946
+ return true;
1947
+ }
1948
+ else if (response.status === 404) {
1949
+ return false;
1275
1950
  }
1276
- finally {
1277
- span.end();
1951
+ else {
1952
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
1953
+ statusCode: response === null || response === void 0 ? void 0 : response.status,
1954
+ request: response === null || response === void 0 ? void 0 : response.request,
1955
+ response: response
1956
+ });
1278
1957
  }
1279
- });
1958
+ }
1959
+ finally {
1960
+ span.end();
1961
+ }
1280
1962
  }
1281
1963
  /**
1282
1964
  * Check if a particular user is connected to this hub.
1283
1965
  *
1284
- * @param username The user name to check for
1285
- * @param options Additional options
1966
+ * @param username - The user name to check for
1967
+ * @param options - Additional options
1286
1968
  */
1287
- hasUser(username, options = {}) {
1288
- return tslib.__awaiter(this, void 0, void 0, function* () {
1289
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasUser", options);
1290
- try {
1291
- const res = yield this.client.webPubSub.userExists(this.hubName, username, updatedOptions);
1292
- if (res._response.status === 200) {
1293
- return true;
1294
- }
1295
- else if (res._response.status === 404) {
1296
- return false;
1297
- }
1298
- else {
1299
- // this is sad - wish this was handled by autorest.
1300
- throw new coreHttp.RestError(res._response.bodyAsText, undefined, res._response.status, res._response.request, res._response);
1301
- }
1969
+ async userExists(username, options = {}) {
1970
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasUser", options);
1971
+ let response;
1972
+ function onResponse(rawResponse, flatResponse) {
1973
+ response = rawResponse;
1974
+ if (updatedOptions.onResponse) {
1975
+ updatedOptions.onResponse(rawResponse, flatResponse);
1976
+ }
1977
+ }
1978
+ try {
1979
+ await this.client.webPubSub.userExists(this.hubName, username, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
1980
+ if (response.status === 200) {
1981
+ return true;
1982
+ }
1983
+ else if (response.status === 404) {
1984
+ return false;
1302
1985
  }
1303
- finally {
1304
- span.end();
1986
+ else {
1987
+ // this is sad - wish this was handled by autorest.
1988
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
1989
+ statusCode: response === null || response === void 0 ? void 0 : response.status,
1990
+ request: response === null || response === void 0 ? void 0 : response.request,
1991
+ response: response
1992
+ });
1305
1993
  }
1306
- });
1994
+ }
1995
+ finally {
1996
+ span.end();
1997
+ }
1307
1998
  }
1308
1999
  /**
1309
2000
  * Grant permissions to a connection
1310
2001
  *
1311
- * @param connectionId The connection id to grant permissions to
1312
- * @param Permission The permission to grant
1313
- * @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
1314
2005
  */
1315
- grantPermission(connectionId, permission, options = {}) {
1316
- return tslib.__awaiter(this, void 0, void 0, function* () {
1317
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-grantPermission", options);
1318
- try {
1319
- return yield this.client.webPubSub.grantPermission(this.hubName, permission, connectionId, updatedOptions);
1320
- }
1321
- finally {
1322
- span.end();
1323
- }
1324
- });
2006
+ async grantPermission(connectionId, permission, options = {}) {
2007
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-grantPermission", options);
2008
+ try {
2009
+ return await this.client.webPubSub.grantPermission(this.hubName, permission, connectionId, updatedOptions);
2010
+ }
2011
+ finally {
2012
+ span.end();
2013
+ }
1325
2014
  }
1326
2015
  /**
1327
2016
  * Revoke permissions from a connection
1328
2017
  *
1329
- * @param connectionId The connection id to revoke permissions from
1330
- * @param Permission The permission to revoke
1331
- * @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
2021
+ */
2022
+ async revokePermission(connectionId, permission, options = {}) {
2023
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-revokePermission", options);
2024
+ try {
2025
+ return await this.client.webPubSub.revokePermission(this.hubName, permission, connectionId, updatedOptions);
2026
+ }
2027
+ finally {
2028
+ span.end();
2029
+ }
2030
+ }
2031
+ /**
2032
+ * Check if the connection has the specified permission
2033
+ *
2034
+ * @param connectionId - The connection id to check permission
2035
+ * @param Permission - The permission to check
2036
+ * @param options - Additional options
1332
2037
  */
1333
- revokePermission(connectionId, permission, options = {}) {
1334
- return tslib.__awaiter(this, void 0, void 0, function* () {
1335
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-revokePermission", options);
1336
- try {
1337
- return yield this.client.webPubSub.revokePermission(this.hubName, permission, connectionId, updatedOptions);
2038
+ async hasPermission(connectionId, permission, options = {}) {
2039
+ const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasPermission", options);
2040
+ let response;
2041
+ function onResponse(rawResponse, flatResponse) {
2042
+ response = rawResponse;
2043
+ if (updatedOptions.onResponse) {
2044
+ updatedOptions.onResponse(rawResponse, flatResponse);
2045
+ }
2046
+ }
2047
+ try {
2048
+ await this.client.webPubSub.checkPermission(this.hubName, permission, connectionId, Object.assign(Object.assign({}, updatedOptions), { onResponse }));
2049
+ if (response.status === 200) {
2050
+ return true;
2051
+ }
2052
+ else if (response.status === 404) {
2053
+ return false;
1338
2054
  }
1339
- finally {
1340
- span.end();
2055
+ else {
2056
+ // this is sad - wish this was handled by autorest.
2057
+ throw new coreRestPipeline.RestError(response.bodyAsText, {
2058
+ statusCode: response === null || response === void 0 ? void 0 : response.status,
2059
+ request: response === null || response === void 0 ? void 0 : response.request,
2060
+ response: response
2061
+ });
1341
2062
  }
1342
- });
2063
+ }
2064
+ finally {
2065
+ span.end();
2066
+ }
1343
2067
  }
1344
2068
  /**
1345
- * Check if the connection has the specified permission
2069
+ * Generate a token for a client to connect to the Azure Web PubSub service.
1346
2070
  *
1347
- * @param connectionId The connection id to check permission
1348
- * @param Permission The permission to check
1349
- * @param options Additional options
2071
+ * @param options - Additional options
1350
2072
  */
1351
- hasPermission(connectionId, permission, options = {}) {
1352
- return tslib.__awaiter(this, void 0, void 0, function* () {
1353
- const { span, updatedOptions } = createSpan("WebPubSubServiceClient-hub-hasPermission", options);
1354
- try {
1355
- return yield this.client.webPubSub.checkPermission(this.hubName, permission, connectionId, updatedOptions);
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;
1356
2083
  }
1357
- finally {
1358
- span.end();
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);
1359
2099
  }
1360
- });
2100
+ return {
2101
+ token,
2102
+ baseUrl,
2103
+ url: `${baseUrl}?access_token=${token}`
2104
+ };
2105
+ }
2106
+ finally {
2107
+ span.end();
2108
+ }
1361
2109
  }
1362
2110
  }
1363
2111