velocious 1.0.442 → 1.0.443

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/build/authorization/base-resource.js +2 -2
  2. package/build/beacon/client.js +13 -7
  3. package/build/beacon/server.js +11 -0
  4. package/build/configuration-types.js +5 -1
  5. package/build/controller.js +1 -1
  6. package/build/database/record/index.js +42 -31
  7. package/build/database/record/relationships/belongs-to.js +1 -1
  8. package/build/database/record/relationships/has-many.js +3 -1
  9. package/build/database/record/relationships/has-one.js +3 -1
  10. package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +2 -2
  11. package/build/frontend-model-resource/base-resource.js +9 -10
  12. package/build/frontend-models/base.js +6 -6
  13. package/build/frontend-models/query.js +2 -2
  14. package/build/src/authorization/base-resource.d.ts +4 -4
  15. package/build/src/authorization/base-resource.d.ts.map +1 -1
  16. package/build/src/authorization/base-resource.js +3 -3
  17. package/build/src/beacon/client.d.ts.map +1 -1
  18. package/build/src/beacon/client.js +13 -8
  19. package/build/src/beacon/server.d.ts +5 -0
  20. package/build/src/beacon/server.d.ts.map +1 -1
  21. package/build/src/beacon/server.js +11 -1
  22. package/build/src/configuration-types.d.ts +7 -3
  23. package/build/src/configuration-types.d.ts.map +1 -1
  24. package/build/src/configuration-types.js +5 -2
  25. package/build/src/controller.d.ts +3 -3
  26. package/build/src/controller.d.ts.map +1 -1
  27. package/build/src/controller.js +2 -2
  28. package/build/src/database/record/index.d.ts +43 -37
  29. package/build/src/database/record/index.d.ts.map +1 -1
  30. package/build/src/database/record/index.js +41 -32
  31. package/build/src/database/record/relationships/belongs-to.js +2 -2
  32. package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
  33. package/build/src/database/record/relationships/has-many.js +3 -2
  34. package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
  35. package/build/src/database/record/relationships/has-one.js +3 -2
  36. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +3 -3
  37. package/build/src/frontend-model-resource/base-resource.d.ts +15 -16
  38. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  39. package/build/src/frontend-model-resource/base-resource.js +10 -11
  40. package/build/src/frontend-models/base.d.ts +18 -12
  41. package/build/src/frontend-models/base.d.ts.map +1 -1
  42. package/build/src/frontend-models/base.js +7 -7
  43. package/build/src/frontend-models/query.d.ts +4 -4
  44. package/build/src/frontend-models/query.d.ts.map +1 -1
  45. package/build/src/frontend-models/query.js +3 -3
  46. package/package.json +1 -1
  47. package/src/authorization/base-resource.js +2 -2
  48. package/src/beacon/client.js +13 -7
  49. package/src/beacon/server.js +11 -0
  50. package/src/configuration-types.js +5 -1
  51. package/src/controller.js +1 -1
  52. package/src/database/record/index.js +42 -31
  53. package/src/database/record/relationships/belongs-to.js +1 -1
  54. package/src/database/record/relationships/has-many.js +3 -1
  55. package/src/database/record/relationships/has-one.js +3 -1
  56. package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +2 -2
  57. package/src/frontend-model-resource/base-resource.js +9 -10
  58. package/src/frontend-models/base.js +6 -6
  59. package/src/frontend-models/query.js +2 -2
@@ -111,7 +111,7 @@ export default class AuthorizationBaseResource {
111
111
 
112
112
  /**
113
113
  * Runs current user.
114
- * @returns {import("../configuration-types.js").VelociousLooseObject | null | undefined} - Current user from context.
114
+ * @returns {unknown} - Current user from context.
115
115
  */
116
116
  currentUser() {
117
117
  return this.context.currentUser
@@ -127,7 +127,7 @@ export default class AuthorizationBaseResource {
127
127
 
128
128
  /**
129
129
  * Runs params.
130
- * @returns {import("../configuration-types.js").VelociousLooseObject | undefined} - Params from context.
130
+ * @returns {import("../configuration-types.js").VelociousParams | undefined} - Params from context.
131
131
  */
132
132
  params() {
133
133
  return this.context.params
@@ -225,14 +225,20 @@ export default class BeaconClient extends EventEmitter {
225
225
  this._reconnectTimer = undefined
226
226
  }
227
227
 
228
- if (this._socket) {
229
- const socket = this._socket
228
+ const socket = this._socket
230
229
 
231
- await new Promise((resolve) => {
232
- socket.once("close", () => resolve(undefined))
233
- socket.end()
234
- })
235
- }
230
+ if (!socket) return
231
+
232
+ this._socket = undefined
233
+ this._jsonSocket = undefined
234
+
235
+ if (socket.destroyed) return
236
+
237
+ await new Promise((resolve) => {
238
+ socket.once("close", () => resolve(undefined))
239
+ socket.end()
240
+ socket.destroySoon()
241
+ })
236
242
  }
237
243
 
238
244
  /**
@@ -37,6 +37,11 @@ export default class BeaconServer {
37
37
  * Narrows the runtime value to the documented type.
38
38
  @type {net.Server | undefined} */
39
39
  this.server = undefined
40
+ /**
41
+ * Accepted sockets, including connections that have not completed the hello handshake yet.
42
+ * @type {Set<net.Socket>}
43
+ */
44
+ this.sockets = new Set()
40
45
  }
41
46
 
42
47
  /**
@@ -68,6 +73,10 @@ export default class BeaconServer {
68
73
  peer.close()
69
74
  }
70
75
 
76
+ for (const socket of this.sockets) {
77
+ socket.destroy()
78
+ }
79
+
71
80
  if (!this.server) return
72
81
 
73
82
  const {server} = this
@@ -97,6 +106,7 @@ export default class BeaconServer {
97
106
  * @returns {void}
98
107
  */
99
108
  _handleConnection(socket) {
109
+ this.sockets.add(socket)
100
110
  const jsonSocket = new JsonSocket(socket)
101
111
  /**
102
112
  * Defines peerId.
@@ -104,6 +114,7 @@ export default class BeaconServer {
104
114
  let peerId
105
115
 
106
116
  const cleanup = () => {
117
+ this.sockets.delete(socket)
107
118
  this.peers.delete(jsonSocket)
108
119
  }
109
120
 
@@ -202,7 +202,11 @@
202
202
  */
203
203
 
204
204
  /**
205
- * @typedef {Record<string, unknown> & {configuration?: import("./configuration.js").default, currentUser?: Record<string, unknown> | null, params?: Record<string, unknown>, request?: import("./http-server/client/request.js").default | import("./http-server/client/websocket-request.js").default}} VelociousLooseObject
205
+ * @typedef {Record<string, string>} VelociousParams
206
+ */
207
+
208
+ /**
209
+ * @typedef {Record<string, unknown> & {configuration?: import("./configuration.js").default, currentUser?: unknown, params?: VelociousParams, request?: import("./http-server/client/request.js").default | import("./http-server/client/websocket-request.js").default}} VelociousLooseObject
206
210
  */
207
211
 
208
212
  /**
@@ -34,7 +34,7 @@ export default class VelociousController {
34
34
  * @param {string} args.action - Action.
35
35
  * @param {import("./configuration.js").default} args.configuration - Configuration instance.
36
36
  * @param {string} args.controller - Controller.
37
- * @param {object} args.params - Parameters object.
37
+ * @param {Record<string, ?>} args.params - Parameters object.
38
38
  * @param {import("./http-server/client/request.js").default} args.request - Request object.
39
39
  * @param {import("./http-server/client/response.js").default} args.response - Response object.
40
40
  * @param {string} args.viewPath - View path.
@@ -14,7 +14,7 @@
14
14
  /**
15
15
  * Model class constructor type used for static `this` typing.
16
16
  * @template {VelociousDatabaseRecord} T
17
- * @typedef {{new (...args: Array<never>): T}} ModelConstructor
17
+ * @typedef {{new (changes?: Record<string, unknown>): T}} ModelConstructor
18
18
  */
19
19
 
20
20
  import timeout from "awaitery/build/timeout.js"
@@ -501,9 +501,9 @@ class VelociousDatabaseRecord {
501
501
 
502
502
  /**
503
503
  * Runs before validation.
504
- * @template {VelociousDatabaseRecord} T
505
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
506
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
504
+ * @template {typeof VelociousDatabaseRecord} MC
505
+ * @this {MC}
506
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
507
507
  * @returns {void}
508
508
  */
509
509
  static beforeValidation(callback) {
@@ -512,9 +512,9 @@ class VelociousDatabaseRecord {
512
512
 
513
513
  /**
514
514
  * Runs before save.
515
- * @template {VelociousDatabaseRecord} T
516
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
517
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
515
+ * @template {typeof VelociousDatabaseRecord} MC
516
+ * @this {MC}
517
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
518
518
  * @returns {void}
519
519
  */
520
520
  static beforeSave(callback) {
@@ -523,9 +523,9 @@ class VelociousDatabaseRecord {
523
523
 
524
524
  /**
525
525
  * Runs before create.
526
- * @template {VelociousDatabaseRecord} T
527
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
528
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
526
+ * @template {typeof VelociousDatabaseRecord} MC
527
+ * @this {MC}
528
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
529
529
  * @returns {void}
530
530
  */
531
531
  static beforeCreate(callback) {
@@ -534,9 +534,9 @@ class VelociousDatabaseRecord {
534
534
 
535
535
  /**
536
536
  * Runs before update.
537
- * @template {VelociousDatabaseRecord} T
538
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
539
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
537
+ * @template {typeof VelociousDatabaseRecord} MC
538
+ * @this {MC}
539
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
540
540
  * @returns {void}
541
541
  */
542
542
  static beforeUpdate(callback) {
@@ -545,9 +545,9 @@ class VelociousDatabaseRecord {
545
545
 
546
546
  /**
547
547
  * Runs before destroy.
548
- * @template {VelociousDatabaseRecord} T
549
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
550
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
548
+ * @template {typeof VelociousDatabaseRecord} MC
549
+ * @this {MC}
550
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
551
551
  * @returns {void}
552
552
  */
553
553
  static beforeDestroy(callback) {
@@ -556,9 +556,9 @@ class VelociousDatabaseRecord {
556
556
 
557
557
  /**
558
558
  * Runs after save.
559
- * @template {VelociousDatabaseRecord} T
560
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
561
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
559
+ * @template {typeof VelociousDatabaseRecord} MC
560
+ * @this {MC}
561
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
562
562
  * @returns {void}
563
563
  */
564
564
  static afterSave(callback) {
@@ -567,9 +567,9 @@ class VelociousDatabaseRecord {
567
567
 
568
568
  /**
569
569
  * Runs after create.
570
- * @template {VelociousDatabaseRecord} T
571
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
572
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
570
+ * @template {typeof VelociousDatabaseRecord} MC
571
+ * @this {MC}
572
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
573
573
  * @returns {void}
574
574
  */
575
575
  static afterCreate(callback) {
@@ -578,9 +578,9 @@ class VelociousDatabaseRecord {
578
578
 
579
579
  /**
580
580
  * Runs after update.
581
- * @template {VelociousDatabaseRecord} T
582
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
583
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
581
+ * @template {typeof VelociousDatabaseRecord} MC
582
+ * @this {MC}
583
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
584
584
  * @returns {void}
585
585
  */
586
586
  static afterUpdate(callback) {
@@ -589,9 +589,9 @@ class VelociousDatabaseRecord {
589
589
 
590
590
  /**
591
591
  * Runs after destroy.
592
- * @template {VelociousDatabaseRecord} T
593
- * @this {ModelConstructor<T> & typeof VelociousDatabaseRecord}
594
- * @param {LifecycleCallbackType<T>} callback - Callback function or instance method name.
592
+ * @template {typeof VelociousDatabaseRecord} MC
593
+ * @this {MC}
594
+ * @param {LifecycleCallbackType<InstanceType<MC>>} callback - Callback function or instance method name.
595
595
  * @returns {void}
596
596
  */
597
597
  static afterDestroy(callback) {
@@ -2438,7 +2438,7 @@ class VelociousDatabaseRecord {
2438
2438
  if (model.isChanged()) {
2439
2439
  await model.save()
2440
2440
 
2441
- const foreignKey = instanceRelationship.getForeignKey()
2441
+ const foreignKey = this._relationshipForeignKeyAttribute(instanceRelationship)
2442
2442
 
2443
2443
  this.setAttribute(foreignKey, model.id())
2444
2444
 
@@ -2493,7 +2493,7 @@ class VelociousDatabaseRecord {
2493
2493
 
2494
2494
  if (loaded) {
2495
2495
  for (const model of loaded) {
2496
- const foreignKey = instanceRelationship.getForeignKey()
2496
+ const foreignKey = model._relationshipForeignKeyAttribute(instanceRelationship)
2497
2497
 
2498
2498
  model.setAttribute(foreignKey, this.id())
2499
2499
 
@@ -2510,6 +2510,17 @@ class VelociousDatabaseRecord {
2510
2510
  return relationships
2511
2511
  }
2512
2512
 
2513
+ /**
2514
+ * Resolves a relationship foreign-key column to this model's public attribute name.
2515
+ * @param {import("./instance-relationships/base.js").default<?, ?>} instanceRelationship - Relationship instance.
2516
+ * @returns {string} Attribute name accepted by setAttribute/assign.
2517
+ */
2518
+ _relationshipForeignKeyAttribute(instanceRelationship) {
2519
+ const foreignKey = instanceRelationship.getForeignKey()
2520
+
2521
+ return this.getModelClass().getColumnNameToAttributeNameMap()[foreignKey] || foreignKey
2522
+ }
2523
+
2513
2524
  /**
2514
2525
  * Runs auto save has many and has one relationships.
2515
2526
  * @param {object} args - Options object.
@@ -2535,7 +2546,7 @@ class VelociousDatabaseRecord {
2535
2546
  }
2536
2547
 
2537
2548
  for (const model of loaded) {
2538
- const foreignKey = instanceRelationship.getForeignKey()
2549
+ const foreignKey = model._relationshipForeignKeyAttribute(instanceRelationship)
2539
2550
 
2540
2551
  model.setAttribute(foreignKey, this.id())
2541
2552
 
@@ -21,7 +21,7 @@ export default class VelociousDatabaseRecordBelongsToRelationship extends BaseRe
21
21
  }
22
22
  }
23
23
 
24
- return this.foreignKey
24
+ return this.modelClass.getAttributeNameToColumnNameMap()[this.foreignKey] || this.foreignKey
25
25
  }
26
26
 
27
27
  /**
@@ -13,7 +13,9 @@ export default class VelociousDatabaseRecordHasManyRelationship extends BaseRela
13
13
  this.foreignKey = `${inflection.underscore(this.modelClass.getModelName())}_id`
14
14
  }
15
15
 
16
- return this.foreignKey
16
+ const targetModelClass = this.className || this.klass ? this.getTargetModelClass() : undefined
17
+
18
+ return targetModelClass?.getAttributeNameToColumnNameMap()[this.foreignKey] || this.foreignKey
17
19
  }
18
20
 
19
21
  /**
@@ -13,7 +13,9 @@ export default class VelociousDatabaseRecordHasOneRelationship extends BaseRelat
13
13
  this.foreignKey = `${inflection.underscore(this.modelClass.getModelName())}_id`
14
14
  }
15
15
 
16
- return this.foreignKey
16
+ const targetModelClass = this.className || this.klass ? this.getTargetModelClass() : undefined
17
+
18
+ return targetModelClass?.getAttributeNameToColumnNameMap()[this.foreignKey] || this.foreignKey
17
19
  }
18
20
 
19
21
  /**
@@ -373,14 +373,14 @@ export default class DbGenerateFrontendModels extends BaseCommand {
373
373
 
374
374
  fileContent += "\n"
375
375
  fileContent += ` /** @returns {${attributesTypeName}[${JSON.stringify(attribute.name)}]} - Attribute value. */\n`
376
- fileContent += ` ${camelizedAttribute}() { return this.readAttribute(${JSON.stringify(attribute.name)}) }\n`
376
+ fileContent += ` ${camelizedAttribute}() { return /** @type {${attributesTypeName}[${JSON.stringify(attribute.name)}]} */ (this.readAttribute(${JSON.stringify(attribute.name)})) }\n`
377
377
 
378
378
  fileContent += "\n"
379
379
  fileContent += " /**\n"
380
380
  fileContent += ` * @param {${attributesTypeName}[${JSON.stringify(attribute.name)}]} newValue - New attribute value.\n`
381
381
  fileContent += ` * @returns {${attributesTypeName}[${JSON.stringify(attribute.name)}]} - Assigned value.\n`
382
382
  fileContent += " */\n"
383
- fileContent += ` set${camelizedAttributeUpper}(newValue) { return this.setAttribute(${JSON.stringify(attribute.name)}, newValue) }\n`
383
+ fileContent += ` set${camelizedAttributeUpper}(newValue) { return /** @type {${attributesTypeName}[${JSON.stringify(attribute.name)}]} */ (this.setAttribute(${JSON.stringify(attribute.name)}, newValue)) }\n`
384
384
  }
385
385
 
386
386
  for (const methodName of Object.keys(collectionCommands)) {
@@ -9,7 +9,7 @@ import * as inflection from "inflection"
9
9
  * @property {import("../controller.js").default} controller - Frontend-model controller instance.
10
10
  * @property {typeof import("../database/record/index.js").default} modelClass - Backing model class.
11
11
  * @property {string} modelName - Model name.
12
- * @property {import("../configuration-types.js").VelociousLooseObject} params - Request params.
12
+ * @property {import("../configuration-types.js").VelociousParams} params - Request params.
13
13
  * @property {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | import("../configuration-types.js").FrontendModelResourceConfiguration} resourceConfiguration - Normalized resource configuration (or raw input shape during early bootstrap).
14
14
  */
15
15
 
@@ -21,13 +21,13 @@ import * as inflection from "inflection"
21
21
  * @property {import("../configuration-types.js").VelociousLooseObject} [locals] - Ability locals.
22
22
  * @property {typeof import("../database/record/index.js").default} [modelClass] - Optional backing model class override.
23
23
  * @property {string} [modelName] - Optional model name override.
24
- * @property {import("../configuration-types.js").VelociousLooseObject} [params] - Optional params override.
24
+ * @property {import("../configuration-types.js").VelociousParams} [params] - Optional params override.
25
25
  * @property {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | import("../configuration-types.js").FrontendModelResourceConfiguration} [resourceConfiguration] - Optional normalized resource configuration.
26
26
  */
27
27
 
28
28
  /**
29
29
  * Base class for backend frontend-model resources.
30
- * @template {typeof import("../database/record/index.js").default} [out TModelClass=typeof import("../database/record/index.js").default]
30
+ * @template {typeof import("../database/record/index.js").default} [TModelClass=typeof import("../database/record/index.js").default]
31
31
  */
32
32
  export default class FrontendModelBaseResource extends AuthorizationBaseResource {
33
33
  /**
@@ -99,10 +99,10 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
99
99
  /**
100
100
  * Runs typed controller instance.
101
101
  * @returns {import("../controller.js").default & {
102
- * frontendModelAuthorizedQuery: (action: "index" | "find" | "create" | "update" | "destroy" | "attach" | "download" | "url") => import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>,
102
+ * frontendModelAuthorizedQuery: (action: "index" | "find" | "create" | "update" | "destroy" | "attach" | "download" | "url") => import("../database/query/model-class-query.js").default<TModelClass>,
103
103
  * frontendModelAbilityAction: (action: string) => string,
104
104
  * currentAbility: () => import("../authorization/ability.js").default | undefined,
105
- * frontendModelIndexQuery: () => import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>,
105
+ * frontendModelIndexQuery: () => import("../database/query/model-class-query.js").default<TModelClass>,
106
106
  * frontendModelPreload: () => import("../database/query/index.js").NestedPreloadRecord | null,
107
107
  * serializeFrontendModel: (model: import("../database/record/index.js").default) => Promise<Record<string, unknown>>
108
108
  * }} - Controller instance with frontend-model helpers.
@@ -176,9 +176,9 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
176
176
 
177
177
  /**
178
178
  * Runs params.
179
- * @returns {import("../configuration-types.js").VelociousLooseObject} - Params.
179
+ * @returns {import("../configuration-types.js").VelociousParams} - Params.
180
180
  */
181
- params() { return this.paramsValue || super.params() || {} }
181
+ params() { return /** @type {import("../configuration-types.js").VelociousParams} */ (this.paramsValue || super.params() || {}) }
182
182
 
183
183
  /**
184
184
  * Runs resource configuration.
@@ -243,11 +243,10 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
243
243
  /**
244
244
  * Runs authorized query.
245
245
  * @param {"index" | "find" | "create" | "update" | "destroy" | "attach" | "download" | "url"} action - Ability action.
246
- * @template {typeof import("../database/record/index.js").default} [MC=typeof import("../database/record/index.js").default]
247
- * @returns {import("../database/query/model-class-query.js").default<MC>} - Authorized query.
246
+ * @returns {import("../database/query/model-class-query.js").default<TModelClass>} - Authorized query.
248
247
  */
249
248
  authorizedQuery(action) {
250
- return /** Narrows the authorized query to the resource's model class. @type {import("../database/query/model-class-query.js").default<MC>} */ (this.typedControllerInstance().frontendModelAuthorizedQuery(action))
249
+ return this.typedControllerInstance().frontendModelAuthorizedQuery(action)
251
250
  }
252
251
 
253
252
 
@@ -2660,8 +2660,8 @@ export default class FrontendModelBase {
2660
2660
  * `openConnection`. Apps use this for per-session state/messaging
2661
2661
  * that doesn't fit the pub/sub Channel model (locale, presence).
2662
2662
  * @param {string} connectionType - Name the server registered the class under.
2663
- * @param {{params?: Record<string, ?>, onConnect?: () => void, onMessage?: (body: ?) => void, onDisconnect?: () => void, onResume?: () => void, onClose?: (reason: string) => void}} [options] - Connection options and event handlers.
2664
- * @returns {?} - VelociousWebsocketClientConnection handle (typed loosely to avoid a cross-module import cycle).
2663
+ * @param {{params?: Record<string, ?>, onConnect?: () => void, onMessage?: (body: Record<string, unknown>) => void, onDisconnect?: () => void, onResume?: () => void, onClose?: (reason: string) => void}} [options] - Connection options and event handlers.
2664
+ * @returns {{ready: Promise<void>, close: () => void}} - Websocket connection handle.
2665
2665
  */
2666
2666
  static openWebsocketConnection(connectionType, options) {
2667
2667
  const client = /**
@@ -2679,8 +2679,8 @@ export default class FrontendModelBase {
2679
2679
  * Subscribes to a pub/sub `WebsocketChannel`. Thin wrapper around
2680
2680
  * the internal client's `subscribeChannel`.
2681
2681
  * @param {string} channelType - Channel class name registered on the server.
2682
- * @param {{params?: Record<string, ?>, onMessage?: (body: ?) => void, onDisconnect?: () => void, onResume?: () => void, onClose?: (reason: string) => void}} [options] - Channel subscription options and event handlers.
2683
- * @returns {?} - Websocket channel handle from the configured client.
2682
+ * @param {{params?: Record<string, ?>, onMessage?: (body: Record<string, unknown>) => void, onDisconnect?: () => void, onResume?: () => void, onClose?: (reason: string) => void}} [options] - Channel subscription options and event handlers.
2683
+ * @returns {{ready: Promise<void>, close: () => void}} - Websocket channel handle from the configured client.
2684
2684
  */
2685
2685
  static subscribeWebsocketChannel(channelType, options) {
2686
2686
  const client = /**
@@ -3200,7 +3200,7 @@ export default class FrontendModelBase {
3200
3200
  * Runs sort.
3201
3201
  * @template {typeof FrontendModelBase} T
3202
3202
  * @this {T}
3203
- * @param {string | string[] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} sort - Sort definition(s).
3203
+ * @param {string | string[] | string[][] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} sort - Sort definition(s).
3204
3204
  * @returns {FrontendModelQuery<T>} - Query builder with sort definitions.
3205
3205
  */
3206
3206
  static sort(sort) {
@@ -3211,7 +3211,7 @@ export default class FrontendModelBase {
3211
3211
  * Runs order.
3212
3212
  * @template {typeof FrontendModelBase} T
3213
3213
  * @this {T}
3214
- * @param {string | string[] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} sort - Sort definition(s).
3214
+ * @param {string | string[] | string[][] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} sort - Sort definition(s).
3215
3215
  * @returns {FrontendModelQuery<T>} - Query builder with sort definitions.
3216
3216
  */
3217
3217
  static order(sort) {
@@ -1414,7 +1414,7 @@ export default class FrontendModelQuery {
1414
1414
 
1415
1415
  /**
1416
1416
  * Runs sort.
1417
- * @param {string | string[] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} sort - Sort definition(s).
1417
+ * @param {string | string[] | string[][] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} sort - Sort definition(s).
1418
1418
  * @returns {this} - Query with appended sort definitions.
1419
1419
  */
1420
1420
  sort(sort) {
@@ -1425,7 +1425,7 @@ export default class FrontendModelQuery {
1425
1425
 
1426
1426
  /**
1427
1427
  * Runs order.
1428
- * @param {string | string[] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} order - Order definition(s).
1428
+ * @param {string | string[] | string[][] | [string, string] | Array<[string, string]> | Record<string, ?> | Array<Record<string, ?>>} order - Order definition(s).
1429
1429
  * @returns {this} - Query with appended sort definitions.
1430
1430
  */
1431
1431
  order(order) {
@@ -73,9 +73,9 @@ export default class AuthorizationBaseResource {
73
73
  getLocals(): import("../configuration-types.js").VelociousLooseObject;
74
74
  /**
75
75
  * Runs current user.
76
- * @returns {import("../configuration-types.js").VelociousLooseObject | null | undefined} - Current user from context.
76
+ * @returns {unknown} - Current user from context.
77
77
  */
78
- currentUser(): import("../configuration-types.js").VelociousLooseObject | null | undefined;
78
+ currentUser(): unknown;
79
79
  /**
80
80
  * Runs request.
81
81
  * @returns {import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined} - Request from context.
@@ -83,9 +83,9 @@ export default class AuthorizationBaseResource {
83
83
  request(): import("../http-server/client/request.js").default | import("../http-server/client/websocket-request.js").default | undefined;
84
84
  /**
85
85
  * Runs params.
86
- * @returns {import("../configuration-types.js").VelociousLooseObject | undefined} - Params from context.
86
+ * @returns {import("../configuration-types.js").VelociousParams | undefined} - Params from context.
87
87
  */
88
- params(): import("../configuration-types.js").VelociousLooseObject | undefined;
88
+ params(): import("../configuration-types.js").VelociousParams | undefined;
89
89
  /**
90
90
  * Runs abilities.
91
91
  * @returns {void} - Implement in subclasses to define abilities.
@@ -1 +1 @@
1
- {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/authorization/base-resource.js"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E;IACE;;iFAE6E;IAC7E,mBADS,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAC5C;IAe7B;;;OAGG;IACH,qBAFa,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAI5E;IAnBD;;;;;;OAMG;IACH,0CAJG;QAA8C,OAAO;QACmB,OAAO;QACP,MAAM;KAChF,EAKA;IAHC,oDAAsB;IACtB,kEAAsB;IACtB,iEAAoB;IAWtB;;;;;;OAMG;IACH,IALoE,EAAE,SAAzD,cAAe,6BAA6B,EAAE,OAAQ,WACxD,MAAM,GAAG,MAAM,EAAE,eACjB,OAAO,cAAc,EAAE,qBAAqB,CAAC,EAAE,CAAC,GAC9C,IAAI,CAKhB;IAED;;;;;;OAMG;IACH,OALoE,EAAE,SAAzD,cAAe,6BAA6B,EAAE,OAAQ,WACxD,MAAM,GAAG,MAAM,EAAE,eACjB,OAAO,cAAc,EAAE,qBAAqB,CAAC,EAAE,CAAC,GAC9C,IAAI,CAKhB;IAED;;;OAGG;IACH,mBAFa,OAAO,cAAc,EAAE,OAAO,CAQ1C;IAED;;;OAGG;IACH,sBAFa,cAAc,6BAA6B,EAAE,OAAO,CAYhE;IAED;;;;;;OAMG;IACH,8DAJG;QAAgB,UAAU,EAAlB,OAAC;QACsB,UAAU,EAAjC,KAAK,GAAG,QAAQ;KACxB,GAAU,IAAI,CAMhB;IAED;;;OAGG;IACH,cAFa,OAAO,2BAA2B,EAAE,oBAAoB,CAIpE;IAED;;;OAGG;IACH,aAFa,OAAO,2BAA2B,EAAE,oBAAoB,CAIpE;IAED;;;OAGG;IACH,eAFa,OAAO,2BAA2B,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAIvF;IAED;;;OAGG;IACH,WAFa,OAAO,kCAAkC,EAAE,OAAO,GAAG,OAAO,4CAA4C,EAAE,OAAO,GAAG,SAAS,CAIzI;IAED;;;OAGG;IACH,UAFa,OAAO,2BAA2B,EAAE,oBAAoB,GAAG,SAAS,CAIhF;IAED;;;OAGG;IACH,aAFa,IAAI,CAIhB;CACF"}
1
+ {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/authorization/base-resource.js"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E;IACE;;iFAE6E;IAC7E,mBADS,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAC5C;IAe7B;;;OAGG;IACH,qBAFa,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAI5E;IAnBD;;;;;;OAMG;IACH,0CAJG;QAA8C,OAAO;QACmB,OAAO;QACP,MAAM;KAChF,EAKA;IAHC,oDAAsB;IACtB,kEAAsB;IACtB,iEAAoB;IAWtB;;;;;;OAMG;IACH,IALoE,EAAE,SAAzD,cAAe,6BAA6B,EAAE,OAAQ,WACxD,MAAM,GAAG,MAAM,EAAE,eACjB,OAAO,cAAc,EAAE,qBAAqB,CAAC,EAAE,CAAC,GAC9C,IAAI,CAKhB;IAED;;;;;;OAMG;IACH,OALoE,EAAE,SAAzD,cAAe,6BAA6B,EAAE,OAAQ,WACxD,MAAM,GAAG,MAAM,EAAE,eACjB,OAAO,cAAc,EAAE,qBAAqB,CAAC,EAAE,CAAC,GAC9C,IAAI,CAKhB;IAED;;;OAGG;IACH,mBAFa,OAAO,cAAc,EAAE,OAAO,CAQ1C;IAED;;;OAGG;IACH,sBAFa,cAAc,6BAA6B,EAAE,OAAO,CAYhE;IAED;;;;;;OAMG;IACH,8DAJG;QAAgB,UAAU,EAAlB,OAAC;QACsB,UAAU,EAAjC,KAAK,GAAG,QAAQ;KACxB,GAAU,IAAI,CAMhB;IAED;;;OAGG;IACH,cAFa,OAAO,2BAA2B,EAAE,oBAAoB,CAIpE;IAED;;;OAGG;IACH,aAFa,OAAO,2BAA2B,EAAE,oBAAoB,CAIpE;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;OAGG;IACH,WAFa,OAAO,kCAAkC,EAAE,OAAO,GAAG,OAAO,4CAA4C,EAAE,OAAO,GAAG,SAAS,CAIzI;IAED;;;OAGG;IACH,UAFa,OAAO,2BAA2B,EAAE,eAAe,GAAG,SAAS,CAI3E;IAED;;;OAGG;IACH,aAFa,IAAI,CAIhB;CACF"}
@@ -97,7 +97,7 @@ export default class AuthorizationBaseResource {
97
97
  }
98
98
  /**
99
99
  * Runs current user.
100
- * @returns {import("../configuration-types.js").VelociousLooseObject | null | undefined} - Current user from context.
100
+ * @returns {unknown} - Current user from context.
101
101
  */
102
102
  currentUser() {
103
103
  return this.context.currentUser;
@@ -111,7 +111,7 @@ export default class AuthorizationBaseResource {
111
111
  }
112
112
  /**
113
113
  * Runs params.
114
- * @returns {import("../configuration-types.js").VelociousLooseObject | undefined} - Params from context.
114
+ * @returns {import("../configuration-types.js").VelociousParams | undefined} - Params from context.
115
115
  */
116
116
  params() {
117
117
  return this.context.params;
@@ -124,4 +124,4 @@ export default class AuthorizationBaseResource {
124
124
  // No-op by default.
125
125
  }
126
126
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2Jhc2UtcmVzb3VyY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUM1Qzs7aUZBRTZFO0lBQzdFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBRTdCOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVO1FBQ3JCLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUN2RSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxxTEFBcUwsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFDcFEsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVTtRQUN4QixJQUFJLENBQUMsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7UUFDMUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUscUxBQXFMLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ3ZRLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLDBEQUEwRCxDQUFDLENBQUE7UUFDckcsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCO1FBQ2hCLE1BQU0sVUFBVSxHQUFHOzt3RUFFNkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUVoRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxnRUFBZ0UsQ0FBQyxDQUFBO1FBQzNHLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDO1FBQ3hELElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxJQUFJLFlBQVksSUFBSSxVQUFVLElBQUksV0FBVyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hHLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxVQUFVLDJGQUEyRixDQUFDLENBQUE7UUFDcEosQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1Asb0JBQW9CO0lBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEJhc2UgY2xhc3MgZm9yIGF1dGhvcml6YXRpb24gcmVzb3VyY2VzIGRlZmluaW5nIGFiaWxpdGllcyBmb3IgYSBtb2RlbC4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGhvcml6YXRpb25CYXNlUmVzb3VyY2Uge1xuICAvKipcbiAgICogTW9kZWwgY2xhc3MuXG4gICAgQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gKi9cbiAgc3RhdGljIE1vZGVsQ2xhc3MgPSB1bmRlZmluZWRcblxuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBSZXNvdXJjZSBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYWJpbGl0eS5qc1wiKS5kZWZhdWx0fSBbYXJncy5hYmlsaXR5XSAtIEFiaWxpdHkgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdH0gW2FyZ3MuY29udGV4dF0gLSBBYmlsaXR5IGNvbnRleHQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdH0gW2FyZ3MubG9jYWxzXSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2FiaWxpdHksIGNvbnRleHQgPSB7fSwgbG9jYWxzID0ge319KSB7XG4gICAgdGhpcy5hYmlsaXR5ID0gYWJpbGl0eVxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcbiAgICB0aGlzLmxvY2FscyA9IGxvY2Fsc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9IC0gTW9kZWwgY2xhc3MgaGFuZGxlZCBieSB0aGlzIHJlc291cmNlLlxuICAgKi9cbiAgc3RhdGljIG1vZGVsQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuTW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY2FuLlxuICAgKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gTUNcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYWN0aW9ucyAtIEFiaWxpdHkgYWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYWJpbGl0eS5qc1wiKS5BYmlsaXR5Q29uZGl0aW9uc1R5cGU8TUM+fSBbY29uZGl0aW9uc10gLSBDb25kaXRpb25zLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBjYW4oYWN0aW9ucywgY29uZGl0aW9ucykge1xuICAgIHRoaXMuYXNzZXJ0UmVzb3VyY2VDb25kaXRpb25zU2lnbmF0dXJlKHtjb25kaXRpb25zLCBtZXRob2ROYW1lOiBcImNhblwifSlcbiAgICB0aGlzLnJlcXVpcmVkQWJpbGl0eSgpLmNhbihhY3Rpb25zLCB0aGlzLnJlcXVpcmVkTW9kZWxDbGFzcygpLCAvKiogTmFycm93cyBjb25kaXRpb25zIHRvIHRoZSBydW50aW1lIHJlc291cmNlIG1vZGVsIGNsYXNzLiBAdHlwZSB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLkFiaWxpdHlDb25kaXRpb25zVHlwZTx0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+IHwgdW5kZWZpbmVkfSAqLyAoY29uZGl0aW9ucykpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjYW5ub3QuXG4gICAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBNQ1xuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhY3Rpb25zIC0gQWJpbGl0eSBhY3Rpb24ocykuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLkFiaWxpdHlDb25kaXRpb25zVHlwZTxNQz59IFtjb25kaXRpb25zXSAtIENvbmRpdGlvbnMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGNhbm5vdChhY3Rpb25zLCBjb25kaXRpb25zKSB7XG4gICAgdGhpcy5hc3NlcnRSZXNvdXJjZUNvbmRpdGlvbnNTaWduYXR1cmUoe2NvbmRpdGlvbnMsIG1ldGhvZE5hbWU6IFwiY2Fubm90XCJ9KVxuICAgIHRoaXMucmVxdWlyZWRBYmlsaXR5KCkuY2Fubm90KGFjdGlvbnMsIHRoaXMucmVxdWlyZWRNb2RlbENsYXNzKCksIC8qKiBOYXJyb3dzIGNvbmRpdGlvbnMgdG8gdGhlIHJ1bnRpbWUgcmVzb3VyY2UgbW9kZWwgY2xhc3MuIEB0eXBlIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuQWJpbGl0eUNvbmRpdGlvbnNUeXBlPHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4gfCB1bmRlZmluZWR9ICovIChjb25kaXRpb25zKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlcXVpcmVkIGFiaWxpdHkuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuZGVmYXVsdH0gLSBBYmlsaXR5IGluc3RhbmNlLlxuICAgKi9cbiAgcmVxdWlyZWRBYmlsaXR5KCkge1xuICAgIGlmICghdGhpcy5hYmlsaXR5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSByZXF1aXJlcyBhbiBhYmlsaXR5IGluc3RhbmNlIGJlZm9yZSBkZWZpbmluZyBhYmlsaXRpZXMuYClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hYmlsaXR5XG4gIH1cblxuICAvKipcbiAgICogUnVucyByZXF1aXJlZCBtb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gLSBNb2RlbCBjbGFzcyBoYW5kbGVkIGJ5IHRoaXMgcmVzb3VyY2UuXG4gICAqL1xuICByZXF1aXJlZE1vZGVsQ2xhc3MoKSB7XG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUge3R5cGVvZiBBdXRob3JpemF0aW9uQmFzZVJlc291cmNlfSAqLyAodGhpcy5jb25zdHJ1Y3RvcikubW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IG11c3QgZGVmaW5lIHN0YXRpYyBNb2RlbENsYXNzIGJlZm9yZSBjYWxsaW5nIGFiaWxpdHkgaGVscGVycy5gKVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbENsYXNzXG4gIH1cblxuICAvKipcbiAgICogUnVucyBhc3NlcnQgcmVzb3VyY2UgY29uZGl0aW9ucyBzaWduYXR1cmUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gU2lnbmF0dXJlIGFyZ3MuXG4gICAqIEBwYXJhbSB7P30gYXJncy5jb25kaXRpb25zIC0gQ29uZGl0aW9ucyB2YWx1ZS5cbiAgICogQHBhcmFtIHtcImNhblwiIHwgXCJjYW5ub3RcIn0gYXJncy5tZXRob2ROYW1lIC0gTWV0aG9kIG5hbWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYXNzZXJ0UmVzb3VyY2VDb25kaXRpb25zU2lnbmF0dXJlKHtjb25kaXRpb25zLCBtZXRob2ROYW1lfSkge1xuICAgIGlmICh0eXBlb2YgY29uZGl0aW9ucyA9PT0gXCJmdW5jdGlvblwiICYmIFwicHJpbWFyeUtleVwiIGluIGNvbmRpdGlvbnMgJiYgXCJfbmV3UXVlcnlcIiBpbiBjb25kaXRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfS4ke21ldGhvZE5hbWV9KC4uLikgbm8gbG9uZ2VyIGFjY2VwdHMgYSBtb2RlbCBjbGFzcy4gRGVmaW5lIHN0YXRpYyBNb2RlbENsYXNzIGFuZCBwYXNzIG9ubHkgY29uZGl0aW9ucy5gKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBjb250ZXh0LlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdH0gLSBBYmlsaXR5IGNvbnRleHQuXG4gICAqL1xuICBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBsb2NhbHMuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c0xvb3NlT2JqZWN0fSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKi9cbiAgZ2V0TG9jYWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxvY2Fsc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY3VycmVudCB1c2VyLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdCB8IG51bGwgfCB1bmRlZmluZWR9IC0gQ3VycmVudCB1c2VyIGZyb20gY29udGV4dC5cbiAgICovXG4gIGN1cnJlbnRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQuY3VycmVudFVzZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9IC0gUmVxdWVzdCBmcm9tIGNvbnRleHQuXG4gICAqL1xuICByZXF1ZXN0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVxdWVzdFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcGFyYW1zLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdCB8IHVuZGVmaW5lZH0gLSBQYXJhbXMgZnJvbSBjb250ZXh0LlxuICAgKi9cbiAgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucGFyYW1zXG4gIH1cblxuICAvKipcbiAgICogUnVucyBhYmlsaXRpZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIEltcGxlbWVudCBpbiBzdWJjbGFzc2VzIHRvIGRlZmluZSBhYmlsaXRpZXMuXG4gICAqL1xuICBhYmlsaXRpZXMoKSB7XG4gICAgLy8gTm8tb3AgYnkgZGVmYXVsdC5cbiAgfVxufVxuIl19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2Jhc2UtcmVzb3VyY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUM1Qzs7aUZBRTZFO0lBQzdFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBRTdCOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVO1FBQ3JCLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUN2RSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxxTEFBcUwsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFDcFEsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVTtRQUN4QixJQUFJLENBQUMsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7UUFDMUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUscUxBQXFMLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQ3ZRLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLDBEQUEwRCxDQUFDLENBQUE7UUFDckcsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCO1FBQ2hCLE1BQU0sVUFBVSxHQUFHOzt3RUFFNkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUVoRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxnRUFBZ0UsQ0FBQyxDQUFBO1FBQzNHLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDO1FBQ3hELElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxJQUFJLFlBQVksSUFBSSxVQUFVLElBQUksV0FBVyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hHLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxVQUFVLDJGQUEyRixDQUFDLENBQUE7UUFDcEosQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1Asb0JBQW9CO0lBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEJhc2UgY2xhc3MgZm9yIGF1dGhvcml6YXRpb24gcmVzb3VyY2VzIGRlZmluaW5nIGFiaWxpdGllcyBmb3IgYSBtb2RlbC4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGhvcml6YXRpb25CYXNlUmVzb3VyY2Uge1xuICAvKipcbiAgICogTW9kZWwgY2xhc3MuXG4gICAgQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gKi9cbiAgc3RhdGljIE1vZGVsQ2xhc3MgPSB1bmRlZmluZWRcblxuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBSZXNvdXJjZSBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYWJpbGl0eS5qc1wiKS5kZWZhdWx0fSBbYXJncy5hYmlsaXR5XSAtIEFiaWxpdHkgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdH0gW2FyZ3MuY29udGV4dF0gLSBBYmlsaXR5IGNvbnRleHQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdH0gW2FyZ3MubG9jYWxzXSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2FiaWxpdHksIGNvbnRleHQgPSB7fSwgbG9jYWxzID0ge319KSB7XG4gICAgdGhpcy5hYmlsaXR5ID0gYWJpbGl0eVxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcbiAgICB0aGlzLmxvY2FscyA9IGxvY2Fsc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9IC0gTW9kZWwgY2xhc3MgaGFuZGxlZCBieSB0aGlzIHJlc291cmNlLlxuICAgKi9cbiAgc3RhdGljIG1vZGVsQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuTW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY2FuLlxuICAgKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gTUNcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYWN0aW9ucyAtIEFiaWxpdHkgYWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vYWJpbGl0eS5qc1wiKS5BYmlsaXR5Q29uZGl0aW9uc1R5cGU8TUM+fSBbY29uZGl0aW9uc10gLSBDb25kaXRpb25zLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBjYW4oYWN0aW9ucywgY29uZGl0aW9ucykge1xuICAgIHRoaXMuYXNzZXJ0UmVzb3VyY2VDb25kaXRpb25zU2lnbmF0dXJlKHtjb25kaXRpb25zLCBtZXRob2ROYW1lOiBcImNhblwifSlcbiAgICB0aGlzLnJlcXVpcmVkQWJpbGl0eSgpLmNhbihhY3Rpb25zLCB0aGlzLnJlcXVpcmVkTW9kZWxDbGFzcygpLCAvKiogTmFycm93cyBjb25kaXRpb25zIHRvIHRoZSBydW50aW1lIHJlc291cmNlIG1vZGVsIGNsYXNzLiBAdHlwZSB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLkFiaWxpdHlDb25kaXRpb25zVHlwZTx0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+IHwgdW5kZWZpbmVkfSAqLyAoY29uZGl0aW9ucykpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjYW5ub3QuXG4gICAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBNQ1xuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhY3Rpb25zIC0gQWJpbGl0eSBhY3Rpb24ocykuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9hYmlsaXR5LmpzXCIpLkFiaWxpdHlDb25kaXRpb25zVHlwZTxNQz59IFtjb25kaXRpb25zXSAtIENvbmRpdGlvbnMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGNhbm5vdChhY3Rpb25zLCBjb25kaXRpb25zKSB7XG4gICAgdGhpcy5hc3NlcnRSZXNvdXJjZUNvbmRpdGlvbnNTaWduYXR1cmUoe2NvbmRpdGlvbnMsIG1ldGhvZE5hbWU6IFwiY2Fubm90XCJ9KVxuICAgIHRoaXMucmVxdWlyZWRBYmlsaXR5KCkuY2Fubm90KGFjdGlvbnMsIHRoaXMucmVxdWlyZWRNb2RlbENsYXNzKCksIC8qKiBOYXJyb3dzIGNvbmRpdGlvbnMgdG8gdGhlIHJ1bnRpbWUgcmVzb3VyY2UgbW9kZWwgY2xhc3MuIEB0eXBlIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuQWJpbGl0eUNvbmRpdGlvbnNUeXBlPHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4gfCB1bmRlZmluZWR9ICovIChjb25kaXRpb25zKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlcXVpcmVkIGFiaWxpdHkuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuZGVmYXVsdH0gLSBBYmlsaXR5IGluc3RhbmNlLlxuICAgKi9cbiAgcmVxdWlyZWRBYmlsaXR5KCkge1xuICAgIGlmICghdGhpcy5hYmlsaXR5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSByZXF1aXJlcyBhbiBhYmlsaXR5IGluc3RhbmNlIGJlZm9yZSBkZWZpbmluZyBhYmlsaXRpZXMuYClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hYmlsaXR5XG4gIH1cblxuICAvKipcbiAgICogUnVucyByZXF1aXJlZCBtb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gLSBNb2RlbCBjbGFzcyBoYW5kbGVkIGJ5IHRoaXMgcmVzb3VyY2UuXG4gICAqL1xuICByZXF1aXJlZE1vZGVsQ2xhc3MoKSB7XG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUge3R5cGVvZiBBdXRob3JpemF0aW9uQmFzZVJlc291cmNlfSAqLyAodGhpcy5jb25zdHJ1Y3RvcikubW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9IG11c3QgZGVmaW5lIHN0YXRpYyBNb2RlbENsYXNzIGJlZm9yZSBjYWxsaW5nIGFiaWxpdHkgaGVscGVycy5gKVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbENsYXNzXG4gIH1cblxuICAvKipcbiAgICogUnVucyBhc3NlcnQgcmVzb3VyY2UgY29uZGl0aW9ucyBzaWduYXR1cmUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gU2lnbmF0dXJlIGFyZ3MuXG4gICAqIEBwYXJhbSB7P30gYXJncy5jb25kaXRpb25zIC0gQ29uZGl0aW9ucyB2YWx1ZS5cbiAgICogQHBhcmFtIHtcImNhblwiIHwgXCJjYW5ub3RcIn0gYXJncy5tZXRob2ROYW1lIC0gTWV0aG9kIG5hbWUuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYXNzZXJ0UmVzb3VyY2VDb25kaXRpb25zU2lnbmF0dXJlKHtjb25kaXRpb25zLCBtZXRob2ROYW1lfSkge1xuICAgIGlmICh0eXBlb2YgY29uZGl0aW9ucyA9PT0gXCJmdW5jdGlvblwiICYmIFwicHJpbWFyeUtleVwiIGluIGNvbmRpdGlvbnMgJiYgXCJfbmV3UXVlcnlcIiBpbiBjb25kaXRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfS4ke21ldGhvZE5hbWV9KC4uLikgbm8gbG9uZ2VyIGFjY2VwdHMgYSBtb2RlbCBjbGFzcy4gRGVmaW5lIHN0YXRpYyBNb2RlbENsYXNzIGFuZCBwYXNzIG9ubHkgY29uZGl0aW9ucy5gKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBjb250ZXh0LlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdH0gLSBBYmlsaXR5IGNvbnRleHQuXG4gICAqL1xuICBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBsb2NhbHMuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c0xvb3NlT2JqZWN0fSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKi9cbiAgZ2V0TG9jYWxzKCkge1xuICAgIHJldHVybiB0aGlzLmxvY2Fsc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY3VycmVudCB1c2VyLlxuICAgKiBAcmV0dXJucyB7dW5rbm93bn0gLSBDdXJyZW50IHVzZXIgZnJvbSBjb250ZXh0LlxuICAgKi9cbiAgY3VycmVudFVzZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5jdXJyZW50VXNlclxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVxdWVzdC5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2h0dHAtc2VydmVyL2NsaWVudC9yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCBpbXBvcnQoXCIuLi9odHRwLXNlcnZlci9jbGllbnQvd2Vic29ja2V0LXJlcXVlc3QuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gLSBSZXF1ZXN0IGZyb20gY29udGV4dC5cbiAgICovXG4gIHJlcXVlc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXF1ZXN0XG4gIH1cblxuICAvKipcbiAgICogUnVucyBwYXJhbXMuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLXR5cGVzLmpzXCIpLlZlbG9jaW91c1BhcmFtcyB8IHVuZGVmaW5lZH0gLSBQYXJhbXMgZnJvbSBjb250ZXh0LlxuICAgKi9cbiAgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucGFyYW1zXG4gIH1cblxuICAvKipcbiAgICogUnVucyBhYmlsaXRpZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIEltcGxlbWVudCBpbiBzdWJjbGFzc2VzIHRvIGRlZmluZSBhYmlsaXRpZXMuXG4gICAqL1xuICBhYmlsaXRpZXMoKSB7XG4gICAgLy8gTm8tb3AgYnkgZGVmYXVsdC5cbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/beacon/client.js"],"names":[],"mappings":";AAYA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH;IACE;;;;;;;;;OASG;IACH,qFAPG;QAAqB,IAAI,EAAjB,MAAM;QACO,IAAI,EAAjB,MAAM;QACQ,QAAQ;QACR,MAAM;QACN,gBAAgB;QAChB,mBAAmB;KAC3C,EAkCA;IA/BC,aAAgB;IAChB,aAAgB;IAChB,6BAAwB;IACxB,eAAoC;IACpC,iCAA8E;IAC9E,6BAAyE;IACzE,0BAAsD;IACtD;;uCAEmC;IACnC,aADS,UAAU,GAAG,SAAS,CACH;IAC5B;;uCAEmC;IACnC,SADS,GAAG,CAAC,MAAM,GAAG,SAAS,CACP;IACxB,oBAAuB;IACvB,gBAAmB;IACnB,iBAAoB;IACpB;;2CAEuC;IACvC,iBADS,MAAM,CAAC,OAAO,GAAG,SAAS,CACH;IAChC;;0CAEsC;IACtC,iBADS,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CACF;IAChC;;;OAGG;IACH,kBAFU,KAAK,GAAG,SAAS,CAEM;IAGnC;;;OAGG;IACH,aAFa,MAAM,CAEe;IAElC;;;OAGG;IACH,eAFa,OAAO,CAEoB;IAExC;;;OAGG;IACH,WAFa,OAAO,CAEY;IAEhC;;;;;;;;OAQG;IACH,WAFa,OAAO,CAAC,IAAI,CAAC,CA2BzB;IAED;;;;;;;;OAQG;IACH,6BAHG;QAAsB,SAAS;KAC/B,GAAU,OAAO,CAAC,IAAI,CAAC,CA4BzB;IAED;;;;;;;;OAQG;IACH,4CALG;QAAqB,OAAO,EAApB,MAAM;QACkB,eAAe,EAAvC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;QACT,IAAI,EAAZ,OAAC;KACT,GAAU,OAAO,CAsBnB;IAED;;;;;;OAMG;IACH,qBAHW,sBAAsB,GACpB,MAAM,IAAI,CAKtB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAkBzB;IAED;;;OAGG;IACH,eAFa,IAAI,CAyEhB;IAED;;;OAGG;IACH,sBAFa,IAAI,CAYhB;CACF;;;;qCA3TY,CAAS,IAA2C,EAA3C,OAAO,YAAY,EAAE,sBAAsB,KAAG,IAAI;uBARjD,mCAAmC;gBAH1C,UAAU"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/beacon/client.js"],"names":[],"mappings":";AAYA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH;IACE;;;;;;;;;OASG;IACH,qFAPG;QAAqB,IAAI,EAAjB,MAAM;QACO,IAAI,EAAjB,MAAM;QACQ,QAAQ;QACR,MAAM;QACN,gBAAgB;QAChB,mBAAmB;KAC3C,EAkCA;IA/BC,aAAgB;IAChB,aAAgB;IAChB,6BAAwB;IACxB,eAAoC;IACpC,iCAA8E;IAC9E,6BAAyE;IACzE,0BAAsD;IACtD;;uCAEmC;IACnC,aADS,UAAU,GAAG,SAAS,CACH;IAC5B;;uCAEmC;IACnC,SADS,GAAG,CAAC,MAAM,GAAG,SAAS,CACP;IACxB,oBAAuB;IACvB,gBAAmB;IACnB,iBAAoB;IACpB;;2CAEuC;IACvC,iBADS,MAAM,CAAC,OAAO,GAAG,SAAS,CACH;IAChC;;0CAEsC;IACtC,iBADS,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CACF;IAChC;;;OAGG;IACH,kBAFU,KAAK,GAAG,SAAS,CAEM;IAGnC;;;OAGG;IACH,aAFa,MAAM,CAEe;IAElC;;;OAGG;IACH,eAFa,OAAO,CAEoB;IAExC;;;OAGG;IACH,WAFa,OAAO,CAEY;IAEhC;;;;;;;;OAQG;IACH,WAFa,OAAO,CAAC,IAAI,CAAC,CA2BzB;IAED;;;;;;;;OAQG;IACH,6BAHG;QAAsB,SAAS;KAC/B,GAAU,OAAO,CAAC,IAAI,CAAC,CA4BzB;IAED;;;;;;;;OAQG;IACH,4CALG;QAAqB,OAAO,EAApB,MAAM;QACkB,eAAe,EAAvC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;QACT,IAAI,EAAZ,OAAC;KACT,GAAU,OAAO,CAsBnB;IAED;;;;;;OAMG;IACH,qBAHW,sBAAsB,GACpB,MAAM,IAAI,CAKtB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAwBzB;IAED;;;OAGG;IACH,eAFa,IAAI,CAyEhB;IAED;;;OAGG;IACH,sBAFa,IAAI,CAYhB;CACF;;;;qCAjUY,CAAS,IAA2C,EAA3C,OAAO,YAAY,EAAE,sBAAsB,KAAG,IAAI;uBARjD,mCAAmC;gBAH1C,UAAU"}