velocious 1.0.130 → 1.0.132

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 (77) hide show
  1. package/README.md +103 -0
  2. package/build/src/configuration.d.ts +8 -0
  3. package/build/src/configuration.d.ts.map +1 -1
  4. package/build/src/configuration.js +13 -1
  5. package/build/src/database/drivers/base-table.d.ts +5 -0
  6. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  7. package/build/src/database/drivers/base-table.js +11 -1
  8. package/build/src/database/drivers/base.d.ts +9 -0
  9. package/build/src/database/drivers/base.d.ts.map +1 -1
  10. package/build/src/database/drivers/base.js +12 -1
  11. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  12. package/build/src/database/drivers/mssql/index.js +7 -3
  13. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  14. package/build/src/database/drivers/mysql/index.js +2 -1
  15. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  16. package/build/src/database/drivers/pgsql/index.js +2 -1
  17. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  18. package/build/src/database/drivers/sqlite/base.js +3 -2
  19. package/build/src/database/migration/index.d.ts.map +1 -1
  20. package/build/src/database/migration/index.js +11 -2
  21. package/build/src/database/record/index.d.ts.map +1 -1
  22. package/build/src/database/record/index.js +15 -2
  23. package/build/src/database/table-data/index.d.ts +24 -24
  24. package/build/src/database/table-data/index.d.ts.map +1 -1
  25. package/build/src/database/table-data/index.js +13 -13
  26. package/build/src/http-client/response.d.ts +4 -0
  27. package/build/src/http-client/response.d.ts.map +1 -1
  28. package/build/src/http-client/response.js +19 -17
  29. package/build/src/http-client/websocket-client.d.ts +105 -0
  30. package/build/src/http-client/websocket-client.d.ts.map +1 -0
  31. package/build/src/http-client/websocket-client.js +237 -0
  32. package/build/src/http-server/client/index.d.ts +14 -0
  33. package/build/src/http-server/client/index.d.ts.map +1 -1
  34. package/build/src/http-server/client/index.js +72 -1
  35. package/build/src/http-server/client/params-to-object.d.ts +7 -7
  36. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  37. package/build/src/http-server/client/params-to-object.js +4 -4
  38. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +21 -2
  39. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  40. package/build/src/http-server/client/request-buffer/form-data-part.js +62 -4
  41. package/build/src/http-server/client/request-parser.js +2 -2
  42. package/build/src/http-server/client/request-runner.d.ts +4 -4
  43. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  44. package/build/src/http-server/client/request-runner.js +2 -2
  45. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +21 -0
  46. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -0
  47. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +26 -0
  48. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +21 -0
  49. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -0
  50. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +26 -0
  51. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +29 -0
  52. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -0
  53. package/build/src/http-server/client/uploaded-file/uploaded-file.js +34 -0
  54. package/build/src/http-server/client/websocket-request.d.ts +40 -0
  55. package/build/src/http-server/client/websocket-request.d.ts.map +1 -0
  56. package/build/src/http-server/client/websocket-request.js +88 -0
  57. package/build/src/http-server/client/websocket-session.d.ts +73 -0
  58. package/build/src/http-server/client/websocket-session.d.ts.map +1 -0
  59. package/build/src/http-server/client/websocket-session.js +231 -0
  60. package/build/src/http-server/server-client.d.ts.map +1 -1
  61. package/build/src/http-server/server-client.js +6 -3
  62. package/build/src/http-server/websocket-events-host.d.ts +22 -0
  63. package/build/src/http-server/websocket-events-host.d.ts.map +1 -0
  64. package/build/src/http-server/websocket-events-host.js +29 -0
  65. package/build/src/http-server/websocket-events.d.ts +20 -0
  66. package/build/src/http-server/websocket-events.d.ts.map +1 -0
  67. package/build/src/http-server/websocket-events.js +23 -0
  68. package/build/src/http-server/worker-handler/index.d.ts +19 -4
  69. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  70. package/build/src/http-server/worker-handler/index.js +24 -3
  71. package/build/src/http-server/worker-handler/worker-thread.d.ts +18 -2
  72. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  73. package/build/src/http-server/worker-handler/worker-thread.js +23 -2
  74. package/build/src/routes/resolver.d.ts +5 -0
  75. package/build/src/routes/resolver.d.ts.map +1 -1
  76. package/build/src/routes/resolver.js +28 -2
  77. package/package.json +1 -1
@@ -62,75 +62,75 @@ export default class TableData {
62
62
  getReferences(): TableReference[];
63
63
  /**
64
64
  * @param {string} name
65
- * @param {import("./table-column.js").TableColumnArgsType} args
65
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
66
66
  * @returns {void}
67
67
  */
68
- bigint(name: string, args: import("./table-column.js").TableColumnArgsType): void;
68
+ bigint(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
69
69
  /**
70
70
  * @param {string} name
71
- * @param {import("./table-column.js").TableColumnArgsType} args
71
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
72
72
  * @returns {void}
73
73
  */
74
- blob(name: string, args: import("./table-column.js").TableColumnArgsType): void;
74
+ blob(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
75
75
  /**
76
76
  * @param {string} name
77
- * @param {import("./table-column.js").TableColumnArgsType} args
77
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
78
78
  * @returns {void}
79
79
  */
80
- boolean(name: string, args: import("./table-column.js").TableColumnArgsType): void;
80
+ boolean(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
81
81
  /**
82
82
  * @param {string} name
83
- * @param {import("./table-column.js").TableColumnArgsType} args
83
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
84
84
  * @returns {void}
85
85
  */
86
- datetime(name: string, args: import("./table-column.js").TableColumnArgsType): void;
86
+ datetime(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
87
87
  /**
88
88
  * @param {string} name
89
- * @param {import("./table-column.js").TableColumnArgsType} args
89
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
90
90
  * @returns {void}
91
91
  */
92
- integer(name: string, args: import("./table-column.js").TableColumnArgsType): void;
92
+ integer(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
93
93
  /**
94
94
  * @param {string} name
95
- * @param {import("./table-column.js").TableColumnArgsType} args
95
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
96
96
  * @returns {void}
97
97
  */
98
- json(name: string, args: import("./table-column.js").TableColumnArgsType): void;
98
+ json(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
99
99
  /**
100
100
  * @param {string} name
101
- * @param {import("./table-column.js").TableColumnArgsType} args
101
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
102
102
  * @returns {void}
103
103
  */
104
- tinyint(name: string, args: import("./table-column.js").TableColumnArgsType): void;
104
+ tinyint(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
105
105
  /**
106
106
  * @param {string} name
107
- * @param {import("./table-column.js").TableColumnArgsType} args
107
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
108
108
  * @returns {void}
109
109
  */
110
- references(name: string, args: import("./table-column.js").TableColumnArgsType): void;
110
+ references(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
111
111
  /**
112
112
  * @param {string} name
113
- * @param {import("./table-column.js").TableColumnArgsType} args
113
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
114
114
  * @returns {void}
115
115
  */
116
- string(name: string, args: import("./table-column.js").TableColumnArgsType): void;
116
+ string(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
117
117
  /**
118
118
  * @param {string} name
119
- * @param {import("./table-column.js").TableColumnArgsType} args
119
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
120
120
  * @returns {void}
121
121
  */
122
- text(name: string, args: import("./table-column.js").TableColumnArgsType): void;
122
+ text(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
123
123
  /**
124
- * @param {import("./table-column.js").TableColumnArgsType} args
124
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
125
125
  * @returns {void}
126
126
  */
127
- timestamps(args: import("./table-column.js").TableColumnArgsType): void;
127
+ timestamps(args?: import("./table-column.js").TableColumnArgsType): void;
128
128
  /**
129
129
  * @param {string} name
130
- * @param {import("./table-column.js").TableColumnArgsType} args
130
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
131
131
  * @returns {void}
132
132
  */
133
- uuid(name: string, args: import("./table-column.js").TableColumnArgsType): void;
133
+ uuid(name: string, args?: import("./table-column.js").TableColumnArgsType): void;
134
134
  }
135
135
  export type TableDataArgsType = {
136
136
  ifNotExists: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/table-data/index.js"],"names":[],"mappings":"AAMA;;;GAGG;AAEH;IAaE;;;OAGG;IACH,kBAHW,MAAM,SACN,iBAAiB,EAO3B;IArBD,4BAA4B;IAC5B,UADW,WAAW,EAAE,CACX;IAEb,yDAAyD;IACzD,cADW,OAAO,wBAAwB,EAAE,OAAO,EAAE,CACpC;IAEjB,2BAA2B;IAC3B,UADW,UAAU,EAAE,CACV;IAEb,+BAA+B;IAC/B,aADW,cAAc,EAAE,CACX;IASd,wBAAgB;IAChB,cAAiB;IAGnB;;;OAGG;IACH,gBAHW,MAAM,GAAC,WAAW,SAClB,OAAO,mBAAmB,EAAE,mBAAmB,QAUzD;IAED;;OAEG;IACH,cAFa,WAAW,EAAE,CAEW;IAErC;;OAEG;IACH,0BAFW,OAAO,wBAAwB,EAAE,OAAO,QAEa;IAEhE;;OAEG;IACH,kBAFa,OAAO,wBAAwB,EAAE,OAAO,EAAE,CAEV;IAE7C;;OAEG;IACH,gBAFW,UAAU,QAEwB;IAE7C;;OAEG;IACH,cAFa,UAAU,EAAE,CAEY;IAErC;;OAEG;IACH,WAFa,MAAM,CAEY;IAE/B;;;OAGG;IACH,iBAHW,MAAM,GACJ,IAAI,CAEwB;IAEzC;;OAEG;IACH,kBAFa,OAAO,CAEuC;IAE3D;;OAEG;IACH,iBAFa,cAAc,EAAE,CAEc;IAE3C;;;;OAIG;IACH,aAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEoF;IAErG;;;;OAIG;IACH,WAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;IAEjG;;;;OAIG;IACH,cAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEsF;IAEvG;;;;OAIG;IACH,eAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEwF;IAEzG;;;;OAIG;IACH,cAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEsF;IAEvG;;;;OAIG;IACH,WAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;IAEjG;;;;OAIG;IACH,cAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEsF;IAEvG;;;;OAIG;IACH,iBAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAoBhB;IAED;;;;OAIG;IACH,aAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEoF;IAErG;;;;OAIG;IACH,WAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;IAEjG;;;OAGG;IACH,iBAHW,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAKhB;IAED;;;;OAIG;IACH,WAJW,MAAM,QACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;CAClG;;iBA9La,OAAO;;wBANG,mBAAmB;uBACpB,kBAAkB;2BACd,sBAAsB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/table-data/index.js"],"names":[],"mappings":"AAMA;;;GAGG;AAEH;IAaE;;;OAGG;IACH,kBAHW,MAAM,SACN,iBAAiB,EAO3B;IArBD,4BAA4B;IAC5B,UADW,WAAW,EAAE,CACX;IAEb,yDAAyD;IACzD,cADW,OAAO,wBAAwB,EAAE,OAAO,EAAE,CACpC;IAEjB,2BAA2B;IAC3B,UADW,UAAU,EAAE,CACV;IAEb,+BAA+B;IAC/B,aADW,cAAc,EAAE,CACX;IASd,wBAAgB;IAChB,cAAiB;IAGnB;;;OAGG;IACH,gBAHW,MAAM,GAAC,WAAW,SAClB,OAAO,mBAAmB,EAAE,mBAAmB,QAUzD;IAED;;OAEG;IACH,cAFa,WAAW,EAAE,CAEW;IAErC;;OAEG;IACH,0BAFW,OAAO,wBAAwB,EAAE,OAAO,QAEa;IAEhE;;OAEG;IACH,kBAFa,OAAO,wBAAwB,EAAE,OAAO,EAAE,CAEV;IAE7C;;OAEG;IACH,gBAFW,UAAU,QAEwB;IAE7C;;OAEG;IACH,cAFa,UAAU,EAAE,CAEY;IAErC;;OAEG;IACH,WAFa,MAAM,CAEY;IAE/B;;;OAGG;IACH,iBAHW,MAAM,GACJ,IAAI,CAEwB;IAEzC;;OAEG;IACH,kBAFa,OAAO,CAEuC;IAE3D;;OAEG;IACH,iBAFa,cAAc,EAAE,CAEc;IAE3C;;;;OAIG;IACH,aAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEoF;IAErG;;;;OAIG;IACH,WAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;IAEjG;;;;OAIG;IACH,cAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEsF;IAEvG;;;;OAIG;IACH,eAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEwF;IAEzG;;;;OAIG;IACH,cAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEsF;IAEvG;;;;OAIG;IACH,WAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;IAEjG;;;;OAIG;IACH,cAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEsF;IAEvG;;;;OAIG;IACH,iBAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAoBhB;IAED;;;;OAIG;IACH,aAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEoF;IAErG;;;;OAIG;IACH,WAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;IAEjG;;;OAGG;IACH,kBAHW,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAKhB;IAED;;;;OAIG;IACH,WAJW,MAAM,SACN,OAAO,mBAAmB,EAAE,mBAAmB,GAC7C,IAAI,CAEgF;CAClG;;iBA9La,OAAO;;wBANG,mBAAmB;uBACpB,kBAAkB;2BACd,sBAAsB"}
@@ -77,49 +77,49 @@ export default class TableData {
77
77
  getReferences() { return this._references; }
78
78
  /**
79
79
  * @param {string} name
80
- * @param {import("./table-column.js").TableColumnArgsType} args
80
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
81
81
  * @returns {void}
82
82
  */
83
83
  bigint(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "bigint" }, args)); }
84
84
  /**
85
85
  * @param {string} name
86
- * @param {import("./table-column.js").TableColumnArgsType} args
86
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
87
87
  * @returns {void}
88
88
  */
89
89
  blob(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "blob" }, args)); }
90
90
  /**
91
91
  * @param {string} name
92
- * @param {import("./table-column.js").TableColumnArgsType} args
92
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
93
93
  * @returns {void}
94
94
  */
95
95
  boolean(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "boolean" }, args)); }
96
96
  /**
97
97
  * @param {string} name
98
- * @param {import("./table-column.js").TableColumnArgsType} args
98
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
99
99
  * @returns {void}
100
100
  */
101
101
  datetime(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "datetime" }, args)); }
102
102
  /**
103
103
  * @param {string} name
104
- * @param {import("./table-column.js").TableColumnArgsType} args
104
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
105
105
  * @returns {void}
106
106
  */
107
107
  integer(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "integer" }, args)); }
108
108
  /**
109
109
  * @param {string} name
110
- * @param {import("./table-column.js").TableColumnArgsType} args
110
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
111
111
  * @returns {void}
112
112
  */
113
113
  json(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "json" }, args)); }
114
114
  /**
115
115
  * @param {string} name
116
- * @param {import("./table-column.js").TableColumnArgsType} args
116
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
117
117
  * @returns {void}
118
118
  */
119
119
  tinyint(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "tinyint" }, args)); }
120
120
  /**
121
121
  * @param {string} name
122
- * @param {import("./table-column.js").TableColumnArgsType} args
122
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
123
123
  * @returns {void}
124
124
  */
125
125
  references(name, args) {
@@ -140,18 +140,18 @@ export default class TableData {
140
140
  }
141
141
  /**
142
142
  * @param {string} name
143
- * @param {import("./table-column.js").TableColumnArgsType} args
143
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
144
144
  * @returns {void}
145
145
  */
146
146
  string(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "string" }, args)); }
147
147
  /**
148
148
  * @param {string} name
149
- * @param {import("./table-column.js").TableColumnArgsType} args
149
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
150
150
  * @returns {void}
151
151
  */
152
152
  text(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "text" }, args)); }
153
153
  /**
154
- * @param {import("./table-column.js").TableColumnArgsType} args
154
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
155
155
  * @returns {void}
156
156
  */
157
157
  timestamps(args) {
@@ -160,9 +160,9 @@ export default class TableData {
160
160
  }
161
161
  /**
162
162
  * @param {string} name
163
- * @param {import("./table-column.js").TableColumnArgsType} args
163
+ * @param {import("./table-column.js").TableColumnArgsType} [args]
164
164
  * @returns {void}
165
165
  */
166
166
  uuid(name, args) { this.addColumn(name, Object.assign({ isNewColumn: true, type: "uuid" }, args)); }
167
167
  }
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvdGFibGUtZGF0YS9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxjQUFjLE1BQU0sc0JBQXNCLENBQUE7QUFFakQ7OztHQUdHO0FBRUgsTUFBTSxDQUFDLE9BQU8sT0FBTyxTQUFTO0lBQzVCLDRCQUE0QjtJQUM1QixRQUFRLEdBQUcsRUFBRSxDQUFBO0lBRWIseURBQXlEO0lBQ3pELFlBQVksR0FBRyxFQUFFLENBQUE7SUFFakIsMkJBQTJCO0lBQzNCLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFFYiwrQkFBK0I7SUFDL0IsV0FBVyxHQUFHLEVBQUUsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCxZQUFZLElBQUksRUFBRSxJQUFJO1FBQ3BCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUV6RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO1FBQ2xCLElBQUksSUFBSSxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFFMUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtR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QUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXJHOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFakc7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQUk7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUNsRyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgVGFibGVDb2x1bW4gZnJvbSBcIi4vdGFibGUtY29sdW1uLmpzXCJcbmltcG9ydCBUYWJsZUluZGV4IGZyb20gXCIuL3RhYmxlLWluZGV4LmpzXCJcbmltcG9ydCBUYWJsZVJlZmVyZW5jZSBmcm9tIFwiLi90YWJsZS1yZWZlcmVuY2UuanNcIlxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFRhYmxlRGF0YUFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlmTm90RXhpc3RzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVEYXRhIHtcbiAgLyoqIEB0eXBlIHtUYWJsZUNvbHVtbltdfSAqL1xuICBfY29sdW1ucyA9IFtdXG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgX2ZvcmVpZ25LZXlzID0gW11cblxuICAvKiogQHR5cGUge1RhYmxlSW5kZXhbXX0gKi9cbiAgX2luZGV4ZXMgPSBbXVxuXG4gIC8qKiBAdHlwZSB7VGFibGVSZWZlcmVuY2VbXX0gKi9cbiAgX3JlZmVyZW5jZXMgPSBbXVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge1RhYmxlRGF0YUFyZ3NUeXBlfSBbYXJnc11cbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWUsIGFyZ3MpIHtcbiAgICBpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0YWJsZSBuYW1lOiAke25hbWV9YClcblxuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgICB0aGlzLl9uYW1lID0gbmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFRhYmxlQ29sdW1ufSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqL1xuICBhZGRDb2x1bW4obmFtZSwgYXJncykge1xuICAgIGlmIChuYW1lIGluc3RhbmNlb2YgVGFibGVDb2x1bW4pIHtcbiAgICAgIHRoaXMuZ2V0Q29sdW1ucygpLnB1c2gobmFtZSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKG5hbWUsIGFyZ3MpXG5cbiAgICAgIHRoaXMuZ2V0Q29sdW1ucygpLnB1c2goY29sdW1uKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7VGFibGVDb2x1bW5bXX1cbiAgICovXG4gIGdldENvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCIpLmRlZmF1bHR9IGZvcmVpZ25LZXlcbiAgICovXG4gIGFkZEZvcmVpZ25LZXkoZm9yZWlnbktleSkgeyB0aGlzLl9mb3JlaWduS2V5cy5wdXNoKGZvcmVpZ25LZXkpIH1cblxuICAvKipcbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vdGFibGUtZm9yZWlnbi1rZXkuanNcIikuZGVmYXVsdFtdfVxuICAgKi9cbiAgZ2V0Rm9yZWlnbktleXMoKSB7IHJldHVybiB0aGlzLl9mb3JlaWduS2V5cyB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGFibGVJbmRleH0gaW5kZXhcbiAgICovXG4gIGFkZEluZGV4KGluZGV4KSB7IHRoaXMuX2luZGV4ZXMucHVzaChpbmRleCkgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7VGFibGVJbmRleFtdfVxuICAgKi9cbiAgZ2V0SW5kZXhlcygpIHsgcmV0dXJuIHRoaXMuX2luZGV4ZXMgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIHRoaXMuX25hbWUgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3TmFtZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHNldE5hbWUobmV3TmFtZSkgeyB0aGlzLl9uYW1lID0gbmV3TmFtZSB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZ2V0SWZOb3RFeGlzdHMoKSB7IHJldHVybiB0aGlzLmFyZ3M/LmlmTm90RXhpc3RzIHx8IGZhbHNlIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1RhYmxlUmVmZXJlbmNlW119XG4gICAqL1xuICBnZXRSZWZlcmVuY2VzKCkgeyByZXR1cm4gdGhpcy5fcmVmZXJlbmNlcyB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gYXJnc1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGJpZ2ludChuYW1lLCBhcmdzKSB7IHRoaXMuYWRkQ29sdW1uKG5hbWUsIE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcImJpZ2ludFwifSwgYXJncykpIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3RhYmxlLWNvbHVtbi5qc1wiKS5UYWJsZUNvbHVtbkFyZ3NUeXBlfSBhcmdzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYmxvYihuYW1lLCBhcmdzKSB7IHRoaXMuYWRkQ29sdW1uKG5hbWUsIE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcImJsb2JcIn0sIGFyZ3MpKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gYXJnc1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGJvb2xlYW4obmFtZSwgYXJncykgeyB0aGlzLmFkZENvbHVtbihuYW1lLCBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJib29sZWFuXCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IGFyZ3NcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBkYXRldGltZShuYW1lLCBhcmdzKSB7IHRoaXMuYWRkQ29sdW1uKG5hbWUsIE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcImRhdGV0aW1lXCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IGFyZ3NcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBpbnRlZ2VyKG5hbWUsIGFyZ3MpIHsgdGhpcy5hZGRDb2x1bW4obmFtZSwgT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IFwiaW50ZWdlclwifSwgYXJncykpIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3RhYmxlLWNvbHVtbi5qc1wiKS5UYWJsZUNvbHVtbkFyZ3NUeXBlfSBhcmdzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAganNvbihuYW1lLCBhcmdzKSB7IHRoaXMuYWRkQ29sdW1uKG5hbWUsIE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcImpzb25cIn0sIGFyZ3MpKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gYXJnc1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHRpbnlpbnQobmFtZSwgYXJncykgeyB0aGlzLmFkZENvbHVtbihuYW1lLCBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJ0aW55aW50XCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IGFyZ3NcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICByZWZlcmVuY2VzKG5hbWUsIGFyZ3MpIHtcbiAgICBjb25zdCBjb2x1bW5OYW1lID0gYCR7bmFtZX1faWRgXG4gICAgY29uc3QgcmVmZXJlbmNlID0gbmV3IFRhYmxlUmVmZXJlbmNlKG5hbWUsIGFyZ3MpXG4gICAgY29uc3Qge3BvbHltb3JwaGljLCAuLi5yZXN0QXJnc30gPSBhcmdzXG4gICAgY29uc3QgY29sdW1uQXJncyA9IE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcImJpZ2ludFwifSwgcmVzdEFyZ3MpXG4gICAgY29uc3QgY29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKGNvbHVtbk5hbWUsIGNvbHVtbkFyZ3MpXG4gICAgY29uc3QgaW5kZXggPSBuZXcgVGFibGVJbmRleChbY29sdW1uXSlcblxuICAgIHRoaXMuZ2V0Q29sdW1ucygpLnB1c2goY29sdW1uKVxuICAgIHRoaXMuZ2V0SW5kZXhlcygpLnB1c2goaW5kZXgpXG4gICAgdGhpcy5nZXRSZWZlcmVuY2VzKCkucHVzaChyZWZlcmVuY2UpXG5cbiAgICBpZiAocG9seW1vcnBoaWMpIHtcbiAgICAgIGNvbnN0IHR5cGVDb2x1bW5OYW1lID0gYCR7bmFtZX1fdHlwZWBcbiAgICAgIGNvbnN0IHR5cGVDb2x1bW4gPSBuZXcgVGFibGVDb2x1bW4odHlwZUNvbHVtbk5hbWUsIHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJzdHJpbmdcIn0pXG5cbiAgICAgIHRoaXMuZ2V0Q29sdW1ucygpLnB1c2godHlwZUNvbHVtbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3RhYmxlLWNvbHVtbi5qc1wiKS5UYWJsZUNvbHVtbkFyZ3NUeXBlfSBhcmdzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RyaW5nKG5hbWUsIGFyZ3MpIHsgdGhpcy5hZGRDb2x1bW4obmFtZSwgT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IFwic3RyaW5nXCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IGFyZ3NcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICB0ZXh0KG5hbWUsIGFyZ3MpIHsgdGhpcy5hZGRDb2x1bW4obmFtZSwgT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IFwidGV4dFwifSwgYXJncykpIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3RhYmxlLWNvbHVtbi5qc1wiKS5UYWJsZUNvbHVtbkFyZ3NUeXBlfSBhcmdzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdGltZXN0YW1wcyhhcmdzKSB7XG4gICAgdGhpcy5kYXRldGltZShcImNyZWF0ZWRfYXRcIiwgYXJncylcbiAgICB0aGlzLmRhdGV0aW1lKFwidXBkYXRlZF9hdFwiLCBhcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gYXJnc1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHV1aWQobmFtZSwgYXJncykgeyB0aGlzLmFkZENvbHVtbihuYW1lLCBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJ1dWlkXCJ9LCBhcmdzKSkgfVxufVxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvdGFibGUtZGF0YS9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxjQUFjLE1BQU0sc0JBQXNCLENBQUE7QUFFakQ7OztHQUdHO0FBRUgsTUFBTSxDQUFDLE9BQU8sT0FBTyxTQUFTO0lBQzVCLDRCQUE0QjtJQUM1QixRQUFRLEdBQUcsRUFBRSxDQUFBO0lBRWIseURBQXlEO0lBQ3pELFlBQVksR0FBRyxFQUFFLENBQUE7SUFFakIsMkJBQTJCO0lBQzNCLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFFYiwrQkFBK0I7SUFDL0IsV0FBVyxHQUFHLEVBQUUsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCxZQUFZLElBQUksRUFBRSxJQUFJO1FBQ3BCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUV6RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtJQUNuQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJO1FBQ2xCLElBQUksSUFBSSxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFFMUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtR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QUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXJHOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFakc7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQUk7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUNsRyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgVGFibGVDb2x1bW4gZnJvbSBcIi4vdGFibGUtY29sdW1uLmpzXCJcbmltcG9ydCBUYWJsZUluZGV4IGZyb20gXCIuL3RhYmxlLWluZGV4LmpzXCJcbmltcG9ydCBUYWJsZVJlZmVyZW5jZSBmcm9tIFwiLi90YWJsZS1yZWZlcmVuY2UuanNcIlxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFRhYmxlRGF0YUFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlmTm90RXhpc3RzXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFibGVEYXRhIHtcbiAgLyoqIEB0eXBlIHtUYWJsZUNvbHVtbltdfSAqL1xuICBfY29sdW1ucyA9IFtdXG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgX2ZvcmVpZ25LZXlzID0gW11cblxuICAvKiogQHR5cGUge1RhYmxlSW5kZXhbXX0gKi9cbiAgX2luZGV4ZXMgPSBbXVxuXG4gIC8qKiBAdHlwZSB7VGFibGVSZWZlcmVuY2VbXX0gKi9cbiAgX3JlZmVyZW5jZXMgPSBbXVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge1RhYmxlRGF0YUFyZ3NUeXBlfSBbYXJnc11cbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWUsIGFyZ3MpIHtcbiAgICBpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0YWJsZSBuYW1lOiAke25hbWV9YClcblxuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgICB0aGlzLl9uYW1lID0gbmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFRhYmxlQ29sdW1ufSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqL1xuICBhZGRDb2x1bW4obmFtZSwgYXJncykge1xuICAgIGlmIChuYW1lIGluc3RhbmNlb2YgVGFibGVDb2x1bW4pIHtcbiAgICAgIHRoaXMuZ2V0Q29sdW1ucygpLnB1c2gobmFtZSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKG5hbWUsIGFyZ3MpXG5cbiAgICAgIHRoaXMuZ2V0Q29sdW1ucygpLnB1c2goY29sdW1uKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7VGFibGVDb2x1bW5bXX1cbiAgICovXG4gIGdldENvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCIpLmRlZmF1bHR9IGZvcmVpZ25LZXlcbiAgICovXG4gIGFkZEZvcmVpZ25LZXkoZm9yZWlnbktleSkgeyB0aGlzLl9mb3JlaWduS2V5cy5wdXNoKGZvcmVpZ25LZXkpIH1cblxuICAvKipcbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vdGFibGUtZm9yZWlnbi1rZXkuanNcIikuZGVmYXVsdFtdfVxuICAgKi9cbiAgZ2V0Rm9yZWlnbktleXMoKSB7IHJldHVybiB0aGlzLl9mb3JlaWduS2V5cyB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGFibGVJbmRleH0gaW5kZXhcbiAgICovXG4gIGFkZEluZGV4KGluZGV4KSB7IHRoaXMuX2luZGV4ZXMucHVzaChpbmRleCkgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7VGFibGVJbmRleFtdfVxuICAgKi9cbiAgZ2V0SW5kZXhlcygpIHsgcmV0dXJuIHRoaXMuX2luZGV4ZXMgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIHRoaXMuX25hbWUgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3TmFtZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHNldE5hbWUobmV3TmFtZSkgeyB0aGlzLl9uYW1lID0gbmV3TmFtZSB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZ2V0SWZOb3RFeGlzdHMoKSB7IHJldHVybiB0aGlzLmFyZ3M/LmlmTm90RXhpc3RzIHx8IGZhbHNlIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1RhYmxlUmVmZXJlbmNlW119XG4gICAqL1xuICBnZXRSZWZlcmVuY2VzKCkgeyByZXR1cm4gdGhpcy5fcmVmZXJlbmNlcyB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgYmlnaW50KG5hbWUsIGFyZ3MpIHsgdGhpcy5hZGRDb2x1bW4obmFtZSwgT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IFwiYmlnaW50XCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IFthcmdzXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGJsb2IobmFtZSwgYXJncykgeyB0aGlzLmFkZENvbHVtbihuYW1lLCBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJibG9iXCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IFthcmdzXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGJvb2xlYW4obmFtZSwgYXJncykgeyB0aGlzLmFkZENvbHVtbihuYW1lLCBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJib29sZWFuXCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IFthcmdzXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGRhdGV0aW1lKG5hbWUsIGFyZ3MpIHsgdGhpcy5hZGRDb2x1bW4obmFtZSwgT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IFwiZGF0ZXRpbWVcIn0sIGFyZ3MpKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgaW50ZWdlcihuYW1lLCBhcmdzKSB7IHRoaXMuYWRkQ29sdW1uKG5hbWUsIE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcImludGVnZXJcIn0sIGFyZ3MpKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAganNvbihuYW1lLCBhcmdzKSB7IHRoaXMuYWRkQ29sdW1uKG5hbWUsIE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcImpzb25cIn0sIGFyZ3MpKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdGlueWludChuYW1lLCBhcmdzKSB7IHRoaXMuYWRkQ29sdW1uKG5hbWUsIE9iamVjdC5hc3NpZ24oe2lzTmV3Q29sdW1uOiB0cnVlLCB0eXBlOiBcInRpbnlpbnRcIn0sIGFyZ3MpKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcmVmZXJlbmNlcyhuYW1lLCBhcmdzKSB7XG4gICAgY29uc3QgY29sdW1uTmFtZSA9IGAke25hbWV9X2lkYFxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IG5ldyBUYWJsZVJlZmVyZW5jZShuYW1lLCBhcmdzKVxuICAgIGNvbnN0IHtwb2x5bW9ycGhpYywgLi4ucmVzdEFyZ3N9ID0gYXJnc1xuICAgIGNvbnN0IGNvbHVtbkFyZ3MgPSBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJiaWdpbnRcIn0sIHJlc3RBcmdzKVxuICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBUYWJsZUNvbHVtbihjb2x1bW5OYW1lLCBjb2x1bW5BcmdzKVxuICAgIGNvbnN0IGluZGV4ID0gbmV3IFRhYmxlSW5kZXgoW2NvbHVtbl0pXG5cbiAgICB0aGlzLmdldENvbHVtbnMoKS5wdXNoKGNvbHVtbilcbiAgICB0aGlzLmdldEluZGV4ZXMoKS5wdXNoKGluZGV4KVxuICAgIHRoaXMuZ2V0UmVmZXJlbmNlcygpLnB1c2gocmVmZXJlbmNlKVxuXG4gICAgaWYgKHBvbHltb3JwaGljKSB7XG4gICAgICBjb25zdCB0eXBlQ29sdW1uTmFtZSA9IGAke25hbWV9X3R5cGVgXG4gICAgICBjb25zdCB0eXBlQ29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKHR5cGVDb2x1bW5OYW1lLCB7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IFwic3RyaW5nXCJ9KVxuXG4gICAgICB0aGlzLmdldENvbHVtbnMoKS5wdXNoKHR5cGVDb2x1bW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90YWJsZS1jb2x1bW4uanNcIikuVGFibGVDb2x1bW5BcmdzVHlwZX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RyaW5nKG5hbWUsIGFyZ3MpIHsgdGhpcy5hZGRDb2x1bW4obmFtZSwgT2JqZWN0LmFzc2lnbih7aXNOZXdDb2x1bW46IHRydWUsIHR5cGU6IFwic3RyaW5nXCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IFthcmdzXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHRleHQobmFtZSwgYXJncykgeyB0aGlzLmFkZENvbHVtbihuYW1lLCBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJ0ZXh0XCJ9LCBhcmdzKSkgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IFthcmdzXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHRpbWVzdGFtcHMoYXJncykge1xuICAgIHRoaXMuZGF0ZXRpbWUoXCJjcmVhdGVkX2F0XCIsIGFyZ3MpXG4gICAgdGhpcy5kYXRldGltZShcInVwZGF0ZWRfYXRcIiwgYXJncylcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGFibGUtY29sdW1uLmpzXCIpLlRhYmxlQ29sdW1uQXJnc1R5cGV9IFthcmdzXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHV1aWQobmFtZSwgYXJncykgeyB0aGlzLmFkZENvbHVtbihuYW1lLCBPYmplY3QuYXNzaWduKHtpc05ld0NvbHVtbjogdHJ1ZSwgdHlwZTogXCJ1dWlkXCJ9LCBhcmdzKSkgfVxufVxuIl19
@@ -26,6 +26,10 @@ export default class Response {
26
26
  tryToParse(): void;
27
27
  statusLine: string;
28
28
  completeResponse(): void;
29
+ /**
30
+ * @returns {number}
31
+ */
32
+ _contentLengthNumber(): number;
29
33
  }
30
34
  import Header from "./header.js";
31
35
  //# sourceMappingURL=response.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/http-client/response.js"],"names":[],"mappings":"AAIA;IACE;;;;OAIG;IACH,oCAHG;QAAqB,MAAM,EAAnB,MAAM;QACkB,UAAU,EAAlC,MAAa,IAAI;KAC3B,EAaA;IATC,uBAAuB;IACvB,SADW,MAAM,EAAE,CACF;IAEjB,eAAyC;IACzC,kBATsB,IAAI,CASE;IAC5B,cAA0B;IAE1B,qBAAqB;IACrB,UADW,MAAM,CACc;IAGjC,2BAA2B;IAC3B,WADY,MAAM,QAIjB;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,MAAM,CAclB;IAED,YAaC;IAED,mBAkEC;IAzBS,mBAAsB;IA2BhC,yBAGC;CACF;mBArIkB,aAAa"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/http-client/response.js"],"names":[],"mappings":"AAIA;IACE;;;;OAIG;IACH,oCAHG;QAAqB,MAAM,EAAnB,MAAM;QACkB,UAAU,EAAlC,MAAa,IAAI;KAC3B,EAaA;IATC,uBAAuB;IACvB,SADW,MAAM,EAAE,CACF;IAEjB,eAAyC;IACzC,kBATsB,IAAI,CASE;IAC5B,cAA0B;IAE1B,qBAAqB;IACrB,UADW,MAAM,CACc;IAGjC,2BAA2B;IAC3B,WADY,MAAM,QAIjB;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,MAAM,CAclB;IAED,YAaC;IAED,mBAsDC;IA3BS,mBAAsB;IA6BhC,yBAGC;IAED;;OAEG;IACH,wBAFa,MAAM,CAalB;CACF;mBAzIkB,aAAa"}
@@ -50,20 +50,7 @@ export default class Response {
50
50
  tryToParse() {
51
51
  while (true) {
52
52
  if (this.state == "body") {
53
- const contentLengthValue = this.getHeader("Content-Length")?.getValue();
54
- if (contentLengthValue === undefined) {
55
- throw new Error("No content length given");
56
- }
57
- let contentLengthNumber;
58
- if (typeof contentLengthValue == "number") {
59
- contentLengthNumber = contentLengthValue;
60
- }
61
- else if (contentLengthValue == "string") {
62
- contentLengthNumber = parseInt(contentLengthValue);
63
- }
64
- else {
65
- throw new Error(`Content-Length is not a number: ${contentLengthValue}`);
66
- }
53
+ const contentLengthNumber = this._contentLengthNumber();
67
54
  if (this.response.byteLength >= contentLengthNumber) {
68
55
  this.completeResponse();
69
56
  break;
@@ -89,11 +76,12 @@ export default class Response {
89
76
  }
90
77
  else if (this.state == "headers") {
91
78
  if (line == "") {
92
- if (this.method == "GET" || this.method == "HEAD") {
79
+ const contentLengthNumber = this._contentLengthNumber();
80
+ if (!contentLengthNumber) {
93
81
  this.completeResponse();
94
82
  break;
95
83
  }
96
- else if (this.method == "POST") {
84
+ else {
97
85
  this.state = "body";
98
86
  }
99
87
  }
@@ -116,5 +104,19 @@ export default class Response {
116
104
  this.state = "done";
117
105
  this.onComplete();
118
106
  }
107
+ /**
108
+ * @returns {number}
109
+ */
110
+ _contentLengthNumber() {
111
+ const header = this.headers.find((currentHeader) => currentHeader.getName().toLowerCase() == "content-length");
112
+ if (!header)
113
+ return 0;
114
+ const contentLengthValue = header.getValue();
115
+ if (typeof contentLengthValue === "number")
116
+ return contentLengthValue;
117
+ if (typeof contentLengthValue === "string")
118
+ return parseInt(contentLengthValue);
119
+ throw new Error(`Content-Length is not a number: ${contentLengthValue}`);
120
+ }
119
121
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1jbGllbnQvcmVzcG9uc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUVoQyxNQUFNLENBQUMsT0FBTyxPQUFPLFFBQVE7SUFDM0I7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLFVBQVUsRUFBQztRQUN0QyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFBO1FBRTFCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLENBQUMsSUFBSTtRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUFJO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO1FBRTdDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFB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QUssRUFBRSxDQUFDLENBQUE7b0JBQ3BELENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFBO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEhlYWRlciBmcm9tIFwiLi9oZWFkZXIuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXRob2RcbiAgICogQHBhcmFtIHtmdW5jdGlvbigpIDogdm9pZH0gYXJncy5vbkNvbXBsZXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7bWV0aG9kID0gXCJHRVRcIiwgb25Db21wbGV0ZX0pIHtcbiAgICBpZiAoIW1ldGhvZCkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1ldGhvZCBnaXZlbjogJHttZXRob2R9YClcblxuICAgIC8qKiBAdHlwZSB7SGVhZGVyW119ICovXG4gICAgdGhpcy5oZWFkZXJzID0gW11cblxuICAgIHRoaXMubWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCkudHJpbSgpXG4gICAgdGhpcy5vbkNvbXBsZXRlID0gb25Db21wbGV0ZVxuICAgIHRoaXMuc3RhdGUgPSBcInN0YXR1cy1saW5lXCJcblxuICAgIC8qKiBAdHlwZSB7QnVmZmVyfSAqL1xuICAgIHRoaXMucmVzcG9uc2UgPSBCdWZmZXIuYWxsb2MoMCk7XG4gIH1cblxuICAvKiogQHBhcmFtIHtCdWZmZXJ9IGRhdGEgKi9cbiAgZmVlZChkYXRhKSB7XG4gICAgdGhpcy5yZXNwb25zZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMucmVzcG9uc2UsIGRhdGFdKVxuICAgIHRoaXMudHJ5VG9QYXJzZSgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHJldHVybnMge0hlYWRlcn1cbiAgICovXG4gIGdldEhlYWRlcihuYW1lKSB7XG4gICAgY29uc3QgY29tcGFyZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCkudHJpbSgpXG5cbiAgICBmb3IgKGNvbnN0IGhlYWRlciBvZiB0aGlzLmhlYWRlcnMpIHtcbiAgICAgIGNvbnN0IGhlYWRlckNvbXBhcmVOYW1lID0gaGVhZGVyLmdldE5hbWUoKS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxuXG4gICAgICBpZiAoY29tcGFyZU5hbWUgPT0gaGVhZGVyQ29tcGFyZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGhlYWRlclxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgSGVhZGVyICR7bmFtZX0gbm90IGZvdW5kYClcbiAgfVxuXG4gIGpzb24oKSB7XG4gICAgY29uc3QgY29udGVudFR5cGVIZWFkZXIgPSB0aGlzLmdldEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiKT8uZ2V0VmFsdWUoKVxuXG4gICAgaWYgKHR5cGVvZiBjb250ZW50VHlwZUhlYWRlciAhPSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoYENvbnRlbnQtVHlwZSB3YXNuJ3QgYSBzdHJpbmc6ICR7Y29udGVudFR5cGVIZWFkZXJ9YClcblxuICAgIGlmICghY29udGVudFR5cGVIZWFkZXIudG9Mb3dlckNhc2UoKS50cmltKCkuc3RhcnRzV2l0aChcImFwcGxpY2F0aW9uL2pzb25cIikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGVudC1UeXBlIGlzIG5vdCBKU09OOiAke2NvbnRlbnRUeXBlSGVhZGVyfWApXG4gICAgfVxuXG4gICAgY29uc3QgYm9keSA9IHRoaXMucmVzcG9uc2UudG9TdHJpbmcoKVxuICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKGJvZHkpXG5cbiAgICByZXR1cm4ganNvblxuICB9XG5cbiAgdHJ5VG9QYXJzZSgpIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKHRoaXMuc3RhdGUgPT0gXCJib2R5XCIpIHtcbiAgICAgICAgY29uc3QgY29udGVudExlbmd0aFZhbHVlID0gdGhpcy5nZXRIZWFkZXIoXCJDb250ZW50LUxlbmd0aFwiKT8uZ2V0VmFsdWUoKVxuXG4gICAgICAgIGlmIChjb250ZW50TGVuZ3RoVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbnRlbnQgbGVuZ3RoIGdpdmVuXCIpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY29udGVudExlbmd0aE51bWJlclxuXG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudExlbmd0aFZhbHVlID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBjb250ZW50TGVuZ3RoTnVtYmVyID0gY29udGVudExlbmd0aFZhbHVlXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGVudExlbmd0aFZhbHVlID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBjb250ZW50TGVuZ3RoTnVtYmVyID0gcGFyc2VJbnQoY29udGVudExlbmd0aFZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGVudC1MZW5ndGggaXMgbm90IGEgbnVtYmVyOiAke2NvbnRlbnRMZW5ndGhWYWx1ZX1gKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2UuYnl0ZUxlbmd0aCA+PSBjb250ZW50TGVuZ3RoTnVtYmVyKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVJlc3BvbnNlKClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMucmVzcG9uc2UudG9TdHJpbmcoKVxuICAgICAgICBsZXQgbGluZUVuZEluZGV4ID0gcmVzcG9uc2UuaW5kZXhPZihcIlxcclxcblwiKVxuICAgICAgICBsZXQgbGluZUVuZExlbmd0aCA9IDJcblxuICAgICAgICBpZiAobGluZUVuZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgIGxpbmVFbmRJbmRleCA9IHJlc3BvbnNlLmluZGV4T2YoXCJcXG5cIilcbiAgICAgICAgICBsaW5lRW5kTGVuZ3RoID0gMVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpbmVFbmRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhayAvLyBXZSBuZWVkIHRvIGdldCBmZWQgbW9yZSB0byBjb250aW51ZSByZWFkaW5nXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbGluZSA9IHJlc3BvbnNlLnN1YnN0cmluZygwLCBsaW5lRW5kSW5kZXgpXG5cbiAgICAgICAgICB0aGlzLnJlc3BvbnNlID0gdGhpcy5yZXNwb25zZS5zbGljZShsaW5lRW5kSW5kZXggKyBsaW5lRW5kTGVuZ3RoKVxuXG4gICAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT0gXCJzdGF0dXMtbGluZVwiKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXR1c0xpbmUgPSBsaW5lXG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gXCJoZWFkZXJzXCJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgPT0gXCJoZWFkZXJzXCIpIHtcbiAgICAgICAgICAgIGlmIChsaW5lID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMubWV0aG9kID09IFwiR0VUXCIgfHwgdGhpcy5tZXRob2QgPT0gXCJIRUFEXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlUmVzcG9uc2UoKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZXRob2QgPT0gXCJQT1NUXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gXCJib2R5XCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgaGVhZGVyTWF0Y2ggPSBsaW5lLm1hdGNoKC9eKC4rPyk6XFxzKiguKykkLylcblxuICAgICAgICAgICAgICBpZiAoIWhlYWRlck1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaGVhZGVyOiAke2xpbmV9YClcblxuICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBuZXcgSGVhZGVyKGhlYWRlck1hdGNoWzFdLCBoZWFkZXJNYXRjaFsyXSlcblxuICAgICAgICAgICAgICB0aGlzLmhlYWRlcnMucHVzaChoZWFkZXIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBzdGF0ZTogJHt0aGlzLnN0YXRlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29tcGxldGVSZXNwb25zZSgpIHtcbiAgICB0aGlzLnN0YXRlID0gXCJkb25lXCJcbiAgICB0aGlzLm9uQ29tcGxldGUoKVxuICB9XG59XG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1jbGllbnQvcmVzcG9uc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUVoQyxNQUFNLENBQUMsT0FBTyxPQUFPLFFBQVE7SUFDM0I7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLFVBQVUsRUFBQztRQUN0QyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFBO1FBRTFCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLENBQUMsSUFBSTtRQUNQLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUFJO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO1FBRTdDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO1lBRS9ELElBQUksV0FBVyxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3JDLE9BQU8sTUFBTSxDQUFBO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQTtRQUVwRSxJQUFJLE9BQU8saUJBQWlCLElBQUksUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLGlCQUFpQixFQUFFLENBQUMsQ0FBQTtRQUUvRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixpQkFBaUIsRUFBRSxDQUFDLENBQUE7UUFDbkUsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUU3QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtnQkFFdkQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO29CQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtvQkFDdkIsTUFBSztnQkFDUCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7Z0JBQ3pDLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQzNDLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQTtnQkFFckIsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3JDLGFBQWEsR0FBRyxDQUFDLENBQUE7Z0JBQ25CLENBQUM7Z0JBRUQsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsTUFBSyxDQUFDLDhDQUE4QztnQkFDdEQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFBO29CQUVoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsQ0FBQTtvQkFFakUsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTt3QkFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUE7b0JBQ3hCLENBQUM7eUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNuQyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQzs0QkFDZixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBOzRCQUV2RCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQ0FDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7Z0NBQ3ZCLE1BQUs7NEJBQ1AsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFBOzRCQUNyQixDQUFDO3dCQUNILENBQUM7NkJBQU0sQ0FBQzs0QkFDTixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUE7NEJBRWpELElBQUksQ0FBQyxXQUFXO2dDQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUE7NEJBRTVELE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTs0QkFFekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7d0JBQzNCLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO29CQUNwRCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQTtRQUNuQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksZ0JBQWdCLENBQUMsQ0FBQTtRQUU5RyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRXJCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRTVDLElBQUksT0FBTyxrQkFBa0IsS0FBSyxRQUFRO1lBQUUsT0FBTyxrQkFBa0IsQ0FBQTtRQUNyRSxJQUFJLE9BQU8sa0JBQWtCLEtBQUssUUFBUTtZQUFFLE9BQU8sUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFFL0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgSGVhZGVyIGZyb20gXCIuL2hlYWRlci5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1ldGhvZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiB2b2lkfSBhcmdzLm9uQ29tcGxldGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHttZXRob2QgPSBcIkdFVFwiLCBvbkNvbXBsZXRlfSkge1xuICAgIGlmICghbWV0aG9kKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbWV0aG9kIGdpdmVuOiAke21ldGhvZH1gKVxuXG4gICAgLyoqIEB0eXBlIHtIZWFkZXJbXX0gKi9cbiAgICB0aGlzLmhlYWRlcnMgPSBbXVxuXG4gICAgdGhpcy5tZXRob2QgPSBtZXRob2QudG9VcHBlckNhc2UoKS50cmltKClcbiAgICB0aGlzLm9uQ29tcGxldGUgPSBvbkNvbXBsZXRlXG4gICAgdGhpcy5zdGF0ZSA9IFwic3RhdHVzLWxpbmVcIlxuXG4gICAgLyoqIEB0eXBlIHtCdWZmZXJ9ICovXG4gICAgdGhpcy5yZXNwb25zZSA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge0J1ZmZlcn0gZGF0YSAqL1xuICBmZWVkKGRhdGEpIHtcbiAgICB0aGlzLnJlc3BvbnNlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5yZXNwb25zZSwgZGF0YV0pXG4gICAgdGhpcy50cnlUb1BhcnNlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcmV0dXJucyB7SGVhZGVyfVxuICAgKi9cbiAgZ2V0SGVhZGVyKG5hbWUpIHtcbiAgICBjb25zdCBjb21wYXJlTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKS50cmltKClcblxuICAgIGZvciAoY29uc3QgaGVhZGVyIG9mIHRoaXMuaGVhZGVycykge1xuICAgICAgY29uc3QgaGVhZGVyQ29tcGFyZU5hbWUgPSBoZWFkZXIuZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG5cbiAgICAgIGlmIChjb21wYXJlTmFtZSA9PSBoZWFkZXJDb21wYXJlTmFtZSkge1xuICAgICAgICByZXR1cm4gaGVhZGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBIZWFkZXIgJHtuYW1lfSBub3QgZm91bmRgKVxuICB9XG5cbiAganNvbigpIHtcbiAgICBjb25zdCBjb250ZW50VHlwZUhlYWRlciA9IHRoaXMuZ2V0SGVhZGVyKFwiQ29udGVudC1UeXBlXCIpPy5nZXRWYWx1ZSgpXG5cbiAgICBpZiAodHlwZW9mIGNvbnRlbnRUeXBlSGVhZGVyICE9IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihgQ29udGVudC1UeXBlIHdhc24ndCBhIHN0cmluZzogJHtjb250ZW50VHlwZUhlYWRlcn1gKVxuXG4gICAgaWYgKCFjb250ZW50VHlwZUhlYWRlci50b0xvd2VyQ2FzZSgpLnRyaW0oKS5zdGFydHNXaXRoKFwiYXBwbGljYXRpb24vanNvblwiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb250ZW50LVR5cGUgaXMgbm90IEpTT046ICR7Y29udGVudFR5cGVIZWFkZXJ9YClcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gdGhpcy5yZXNwb25zZS50b1N0cmluZygpXG4gICAgY29uc3QganNvbiA9IEpTT04ucGFyc2UoYm9keSlcblxuICAgIHJldHVybiBqc29uXG4gIH1cblxuICB0cnlUb1BhcnNlKCkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZSA9PSBcImJvZHlcIikge1xuICAgICAgICBjb25zdCBjb250ZW50TGVuZ3RoTnVtYmVyID0gdGhpcy5fY29udGVudExlbmd0aE51bWJlcigpXG5cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2UuYnl0ZUxlbmd0aCA+PSBjb250ZW50TGVuZ3RoTnVtYmVyKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVJlc3BvbnNlKClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMucmVzcG9uc2UudG9TdHJpbmcoKVxuICAgICAgICBsZXQgbGluZUVuZEluZGV4ID0gcmVzcG9uc2UuaW5kZXhPZihcIlxcclxcblwiKVxuICAgICAgICBsZXQgbGluZUVuZExlbmd0aCA9IDJcblxuICAgICAgICBpZiAobGluZUVuZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgIGxpbmVFbmRJbmRleCA9IHJlc3BvbnNlLmluZGV4T2YoXCJcXG5cIilcbiAgICAgICAgICBsaW5lRW5kTGVuZ3RoID0gMVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpbmVFbmRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhayAvLyBXZSBuZWVkIHRvIGdldCBmZWQgbW9yZSB0byBjb250aW51ZSByZWFkaW5nXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbGluZSA9IHJlc3BvbnNlLnN1YnN0cmluZygwLCBsaW5lRW5kSW5kZXgpXG5cbiAgICAgICAgICB0aGlzLnJlc3BvbnNlID0gdGhpcy5yZXNwb25zZS5zbGljZShsaW5lRW5kSW5kZXggKyBsaW5lRW5kTGVuZ3RoKVxuXG4gICAgICAgICAgaWYgKHRoaXMuc3RhdGUgPT0gXCJzdGF0dXMtbGluZVwiKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXR1c0xpbmUgPSBsaW5lXG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gXCJoZWFkZXJzXCJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUgPT0gXCJoZWFkZXJzXCIpIHtcbiAgICAgICAgICAgIGlmIChsaW5lID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29udGVudExlbmd0aE51bWJlciA9IHRoaXMuX2NvbnRlbnRMZW5ndGhOdW1iZXIoKVxuXG4gICAgICAgICAgICAgIGlmICghY29udGVudExlbmd0aE51bWJlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVSZXNwb25zZSgpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gXCJib2R5XCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgaGVhZGVyTWF0Y2ggPSBsaW5lLm1hdGNoKC9eKC4rPyk6XFxzKiguKykkLylcblxuICAgICAgICAgICAgICBpZiAoIWhlYWRlck1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaGVhZGVyOiAke2xpbmV9YClcblxuICAgICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBuZXcgSGVhZGVyKGhlYWRlck1hdGNoWzFdLCBoZWFkZXJNYXRjaFsyXSlcblxuICAgICAgICAgICAgICB0aGlzLmhlYWRlcnMucHVzaChoZWFkZXIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBzdGF0ZTogJHt0aGlzLnN0YXRlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29tcGxldGVSZXNwb25zZSgpIHtcbiAgICB0aGlzLnN0YXRlID0gXCJkb25lXCJcbiAgICB0aGlzLm9uQ29tcGxldGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBfY29udGVudExlbmd0aE51bWJlcigpIHtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmhlYWRlcnMuZmluZCgoY3VycmVudEhlYWRlcikgPT4gY3VycmVudEhlYWRlci5nZXROYW1lKCkudG9Mb3dlckNhc2UoKSA9PSBcImNvbnRlbnQtbGVuZ3RoXCIpXG5cbiAgICBpZiAoIWhlYWRlcikgcmV0dXJuIDBcblxuICAgIGNvbnN0IGNvbnRlbnRMZW5ndGhWYWx1ZSA9IGhlYWRlci5nZXRWYWx1ZSgpXG5cbiAgICBpZiAodHlwZW9mIGNvbnRlbnRMZW5ndGhWYWx1ZSA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGNvbnRlbnRMZW5ndGhWYWx1ZVxuICAgIGlmICh0eXBlb2YgY29udGVudExlbmd0aFZhbHVlID09PSBcInN0cmluZ1wiKSByZXR1cm4gcGFyc2VJbnQoY29udGVudExlbmd0aFZhbHVlKVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb250ZW50LUxlbmd0aCBpcyBub3QgYSBudW1iZXI6ICR7Y29udGVudExlbmd0aFZhbHVlfWApXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,105 @@
1
+ /**
2
+ * A small websocket client that mirrors simple HTTP-style calls and channel subscriptions.
3
+ */
4
+ export default class VelociousWebsocketClient {
5
+ /**
6
+ * @param {object} [args]
7
+ * @param {boolean} [args.debug]
8
+ * @param {string} [args.url] Full websocket URL (default: ws://127.0.0.1:3006/websocket)
9
+ */
10
+ constructor({ debug, url }?: {
11
+ debug?: boolean;
12
+ url?: string;
13
+ });
14
+ debug: boolean;
15
+ pendingRequests: Map<any, any>;
16
+ subscribedChannels: Set<any>;
17
+ url: string;
18
+ listeners: Map<any, any>;
19
+ nextID: number;
20
+ /**
21
+ * Ensure a websocket connection is open.
22
+ * @returns {Promise<void>}
23
+ */
24
+ connect(): Promise<void>;
25
+ connectPromise: Promise<any>;
26
+ socket: WebSocket;
27
+ /**
28
+ * Close the websocket and clear pending state.
29
+ * @returns {Promise<void>}
30
+ */
31
+ close(): Promise<void>;
32
+ /**
33
+ * Perform a POST request over the websocket.
34
+ * @param {string} path
35
+ * @param {any} [body]
36
+ * @param {{headers?: Record<string, string>}} [options]
37
+ * @returns {Promise<VelociousWebsocketResponse>}
38
+ */
39
+ post(path: string, body?: any, options?: {
40
+ headers?: Record<string, string>;
41
+ }): Promise<VelociousWebsocketResponse>;
42
+ /**
43
+ * Perform a GET request over the websocket.
44
+ * @param {string} path
45
+ * @param {{headers?: Record<string, string>}} [options]
46
+ * @returns {Promise<VelociousWebsocketResponse>}
47
+ */
48
+ get(path: string, options?: {
49
+ headers?: Record<string, string>;
50
+ }): Promise<VelociousWebsocketResponse>;
51
+ /**
52
+ * Subscribe to a channel for server-sent events.
53
+ * @param {string} channel
54
+ * @param {(payload: any) => void} callback
55
+ * @returns {() => void} unsubscribe function
56
+ */
57
+ on(channel: string, callback: (payload: any) => void): () => void;
58
+ /**
59
+ * @private
60
+ * @param {string} method
61
+ * @param {string} path
62
+ * @param {object} [options]
63
+ * @param {any} [options.body]
64
+ * @param {Record<string, string>} [options.headers]
65
+ * @returns {Promise<VelociousWebsocketResponse>}
66
+ */
67
+ private request;
68
+ /**
69
+ * @private
70
+ * @param {MessageEvent<any>} event
71
+ */
72
+ private onMessage;
73
+ /**
74
+ * Reject all pending requests when the socket closes unexpectedly.
75
+ * @private
76
+ */
77
+ private onClose;
78
+ /**
79
+ * @private
80
+ * @param {Record<string, any>} payload
81
+ */
82
+ private _sendMessage;
83
+ /**
84
+ * @private
85
+ * @param {...any} args
86
+ * @returns {void}
87
+ */
88
+ private _debug;
89
+ }
90
+ declare class VelociousWebsocketResponse {
91
+ /**
92
+ * @param {object} message
93
+ */
94
+ constructor(message: object);
95
+ body: any;
96
+ headers: any;
97
+ id: any;
98
+ statusCode: any;
99
+ statusMessage: any;
100
+ type: any;
101
+ /** @returns {any} */
102
+ json(): any;
103
+ }
104
+ export {};
105
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../../src/http-client/websocket-client.js"],"names":[],"mappings":"AAEA;;GAEG;AACH;IACE;;;;OAIG;IACH,6BAHG;QAAuB,KAAK,GAApB,OAAO;QACO,GAAG,GAAjB,MAAM;KAChB,EAUA;IANC,eAAkB;IAClB,+BAAgC;IAChC,6BAAmC;IACnC,YAAiD;IACjD,yBAA0B;IAC1B,eAAe;IAGjB;;;OAGG;IACH,WAFa,OAAO,CAAC,IAAI,CAAC,CA+BzB;IAzBC,6BAsBE;IArBA,kBAAqC;IA0BzC;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;;;;;OAMG;IACH,WALW,MAAM,SACN,GAAG,YACH;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAC,GAChC,OAAO,CAAC,0BAA0B,CAAC,CAI/C;IAED;;;;;OAKG;IACH,UAJW,MAAM,YACN;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAC,GAChC,OAAO,CAAC,0BAA0B,CAAC,CAI/C;IAED;;;;;OAKG;IACH,YAJW,MAAM,YACN,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GACpB,MAAM,IAAI,CAyBtB;IAED;;;;;;;;OAQG;IACH,gBAiBC;IAED;;;OAGG;IACH,kBA6CC;IAED;;;OAGG;IACH,gBAOC;IAED;;;OAGG;IACH,qBASC;IAED;;;;OAIG;IACH,eAIC;CACF;AAED;IACE;;OAEG;IACH,qBAFW,MAAM,EAShB;IANC,UAAwB;IACxB,aAAoC;IACpC,QAAoB;IACpB,gBAA2C;IAC3C,mBAAkD;IAClD,UAAwB;IAG1B,qBAAqB;IACrB,QADc,GAAG,CAOhB;CACF"}