velocious 1.0.131 → 1.0.133

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 (88) 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 +41 -4
  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/query/preloader/belongs-to.d.ts +4 -1
  22. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  23. package/build/src/database/query/preloader/belongs-to.js +55 -3
  24. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  25. package/build/src/database/query/preloader/has-many.js +5 -1
  26. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  27. package/build/src/database/query/preloader/has-one.js +5 -1
  28. package/build/src/database/query/preloader.d.ts.map +1 -1
  29. package/build/src/database/query/preloader.js +25 -10
  30. package/build/src/database/record/index.d.ts.map +1 -1
  31. package/build/src/database/record/index.js +15 -2
  32. package/build/src/database/record/relationships/base.d.ts +3 -0
  33. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  34. package/build/src/database/record/relationships/base.js +21 -3
  35. package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
  36. package/build/src/database/record/relationships/belongs-to.js +10 -5
  37. package/build/src/http-client/response.d.ts +4 -0
  38. package/build/src/http-client/response.d.ts.map +1 -1
  39. package/build/src/http-client/response.js +19 -17
  40. package/build/src/http-client/websocket-client.d.ts +105 -0
  41. package/build/src/http-client/websocket-client.d.ts.map +1 -0
  42. package/build/src/http-client/websocket-client.js +237 -0
  43. package/build/src/http-server/client/index.d.ts +14 -0
  44. package/build/src/http-server/client/index.d.ts.map +1 -1
  45. package/build/src/http-server/client/index.js +72 -1
  46. package/build/src/http-server/client/params-to-object.d.ts +7 -7
  47. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  48. package/build/src/http-server/client/params-to-object.js +4 -4
  49. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +21 -2
  50. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  51. package/build/src/http-server/client/request-buffer/form-data-part.js +62 -4
  52. package/build/src/http-server/client/request-parser.js +2 -2
  53. package/build/src/http-server/client/request-runner.d.ts +4 -4
  54. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  55. package/build/src/http-server/client/request-runner.js +2 -2
  56. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +21 -0
  57. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -0
  58. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +26 -0
  59. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +21 -0
  60. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -0
  61. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +26 -0
  62. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +29 -0
  63. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -0
  64. package/build/src/http-server/client/uploaded-file/uploaded-file.js +34 -0
  65. package/build/src/http-server/client/websocket-request.d.ts +40 -0
  66. package/build/src/http-server/client/websocket-request.d.ts.map +1 -0
  67. package/build/src/http-server/client/websocket-request.js +88 -0
  68. package/build/src/http-server/client/websocket-session.d.ts +73 -0
  69. package/build/src/http-server/client/websocket-session.d.ts.map +1 -0
  70. package/build/src/http-server/client/websocket-session.js +231 -0
  71. package/build/src/http-server/server-client.d.ts.map +1 -1
  72. package/build/src/http-server/server-client.js +6 -3
  73. package/build/src/http-server/websocket-events-host.d.ts +22 -0
  74. package/build/src/http-server/websocket-events-host.d.ts.map +1 -0
  75. package/build/src/http-server/websocket-events-host.js +29 -0
  76. package/build/src/http-server/websocket-events.d.ts +20 -0
  77. package/build/src/http-server/websocket-events.d.ts.map +1 -0
  78. package/build/src/http-server/websocket-events.js +23 -0
  79. package/build/src/http-server/worker-handler/index.d.ts +19 -4
  80. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  81. package/build/src/http-server/worker-handler/index.js +24 -3
  82. package/build/src/http-server/worker-handler/worker-thread.d.ts +18 -2
  83. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  84. package/build/src/http-server/worker-handler/worker-thread.js +23 -2
  85. package/build/src/routes/resolver.d.ts +5 -0
  86. package/build/src/routes/resolver.d.ts.map +1 -1
  87. package/build/src/routes/resolver.js +28 -2
  88. package/package.json +1 -1
@@ -45,6 +45,9 @@ export default class VelociousDatabaseRecordBaseRelationship {
45
45
  getRelationshipName(): string;
46
46
  /** @returns {boolean} */
47
47
  getPolymorphic(): boolean;
48
+ /** @returns {string} */
49
+ getPolymorphicTypeColumn(): string;
50
+ _polymorphicTypeColumn: string;
48
51
  /** @returns {string} The name of the foreign key, e.g. "id" etc. */
49
52
  getPrimaryKey(): string;
50
53
  /** @returns {string} The type of the relationship, e.g. "has_many", "belongs_to", "has_one", "has_and_belongs_to_many" etc. */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/relationships/base.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH;IACE,6CAA6C;IAC7C,uJADY,wBAAwB,EAsBnC;IAXC,kBAA0B;IAC1B,mBAA2B;IAC3B,mBAA4B;IAC5B,mBAA2B;IAC3B,4CAAkB;IAClB,iDAA4B;IAC5B,sBAA+B;IAC/B,oBAA6B;IAC7B,yBAAwC;IACxC,gBAAsB;IACtB,aAAgB;IAGlB,gEAAiE;IAEjE,sIAAsI;IACtI,gBADc,MAAM,GAAG,SAAS,CACS;IAEzC;;;OAGG;IACH,iBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,gBAFa,MAAM,GAAG,SAAS,CAI9B;IAED,sDAAsD;IACtD,iBADc,cAAc,aAAa,EAAE,OAAO,CACR;IAE1C,4FAA4F;IAC5F,uBADc,MAAM,CACkC;IAEtD,yBAAyB;IACzB,kBADc,OAAO,CAGpB;IAED,oEAAoE;IACpE,iBADc,MAAM,CACuB;IAE3C,+HAA+H;IAC/H,WADc,MAAM,CACU;IAE9B,mMAAmM;IACnM,uBADc,cAAc,aAAa,EAAE,OAAO,GAAG,SAAS,CAW7D;CACF;;gBAxFa,MAAM;gBACN,MAAM;iBACN,MAAM,GAAG,SAAS;gBAClB,MAAM;YACN,cAAc,aAAa,EAAE,OAAO;gBACpC,cAAc,aAAa,EAAE,OAAO;iBACpC,MAAM;kBACN,OAAO;sBACP,MAAM;cACN,MAAM;UACN,MAAM"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/relationships/base.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;GAaG;AAEH;IACE,6CAA6C;IAC7C,uJADY,wBAAwB,EAsBnC;IAXC,kBAA0B;IAC1B,mBAA2B;IAC3B,mBAA4B;IAC5B,mBAA2B;IAC3B,4CAAkB;IAClB,iDAA4B;IAC5B,sBAA+B;IAC/B,oBAA6B;IAC7B,yBAAwC;IACxC,gBAAsB;IACtB,aAAgB;IAGlB,gEAAiE;IAEjE,sIAAsI;IACtI,gBADc,MAAM,GAAG,SAAS,CACS;IAEzC;;;OAGG;IACH,iBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,gBAFa,MAAM,GAAG,SAAS,CAI9B;IAED,sDAAsD;IACtD,iBADc,cAAc,aAAa,EAAE,OAAO,CACR;IAE1C,4FAA4F;IAC5F,uBADc,MAAM,CACkC;IAEtD,yBAAyB;IACzB,kBADc,OAAO,CAGpB;IAED,wBAAwB;IACxB,4BADc,MAAM,CAmBnB;IATK,+BAAiE;IAWvE,oEAAoE;IACpE,iBADc,MAAM,CACuB;IAE3C,+HAA+H;IAC/H,WADc,MAAM,CACU;IAE9B,mMAAmM;IACnM,uBADc,cAAc,aAAa,EAAE,OAAO,GAAG,SAAS,CAW7D;CACF;;gBA7Ga,MAAM;gBACN,MAAM;iBACN,MAAM,GAAG,SAAS;gBAClB,MAAM;YACN,cAAc,aAAa,EAAE,OAAO;gBACpC,cAAc,aAAa,EAAE,OAAO;iBACpC,MAAM;kBACN,OAAO;sBACP,MAAM;cACN,MAAM;UACN,MAAM"}
@@ -1,5 +1,6 @@
1
1
  // @ts-check
2
2
  import restArgsError from "../../../utils/rest-args-error.js";
3
+ import * as inflection from "inflection";
3
4
  /**
4
5
  * @typedef {object} RelationshipBaseArgsType
5
6
  * @property {string} [className]
@@ -20,7 +21,7 @@ export default class VelociousDatabaseRecordBaseRelationship {
20
21
  restArgsError(restArgs);
21
22
  if (!modelClass)
22
23
  throw new Error(`'modelClass' wasn't given for ${relationshipName}`);
23
- if (!className && !klass)
24
+ if (!className && !klass && !polymorphic)
24
25
  throw new Error(`Neither 'className' or 'klass' was given for ${modelClass.name}#${relationshipName}`);
25
26
  if (className == "EventSery") {
26
27
  throw new Error(`Invalid model name: ${className}`);
@@ -62,13 +63,30 @@ export default class VelociousDatabaseRecordBaseRelationship {
62
63
  getPolymorphic() {
63
64
  return this._polymorphic || false;
64
65
  }
66
+ /** @returns {string} */
67
+ getPolymorphicTypeColumn() {
68
+ if (!this.getPolymorphic()) {
69
+ throw new Error(`${this.modelClass.name}#${this.relationshipName} isn't polymorphic`);
70
+ }
71
+ if (!this._polymorphicTypeColumn) {
72
+ const foreignKey = this.getForeignKey();
73
+ if (foreignKey && foreignKey.endsWith("_id")) {
74
+ this._polymorphicTypeColumn = foreignKey.replace(/_id$/, "_type");
75
+ }
76
+ else {
77
+ const underscoredName = inflection.underscore(this.getRelationshipName());
78
+ this._polymorphicTypeColumn = `${underscoredName}_type`;
79
+ }
80
+ }
81
+ return this._polymorphicTypeColumn;
82
+ }
65
83
  /** @returns {string} The name of the foreign key, e.g. "id" etc. */
66
84
  getPrimaryKey() { return this._primaryKey; }
67
85
  /** @returns {string} The type of the relationship, e.g. "has_many", "belongs_to", "has_one", "has_and_belongs_to_many" etc. */
68
86
  getType() { return this.type; }
69
87
  /** @returns {typeof import("../index.js").default | undefined} The target model class for this relationship, e.g. if the relationship is "posts" then the target model class is the Post class. */
70
88
  getTargetModelClass() {
71
- if (this.getPolymorphic()) {
89
+ if (this.getPolymorphic() && this.type == "belongsTo") {
72
90
  return undefined;
73
91
  }
74
92
  else if (this.className) {
@@ -80,4 +98,4 @@ export default class VelociousDatabaseRecordBaseRelationship {
80
98
  throw new Error("Couldn't figure out the target model class");
81
99
  }
82
100
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVsYXRpb25zaGlwcy9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUU3RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxDQUFDLE9BQU8sT0FBTyx1Q0FBdUM7SUFDMUQsNkNBQTZDO0lBQzdDLFlBQVksRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3hKLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELFVBQVUsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBRWhJLElBQUksU0FBUyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFBO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFBO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQTtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsZ0JBQWdCLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRWpFLHNJQUFzSTtJQUN0SSxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQztJQUV6Qzs7O09BR0c7SUFDSCxhQUFhO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFDLENBQUM7SUFFMUMsNEZBQTRGO0lBQzVGLG1CQUFtQixLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFBLENBQUMsQ0FBQztJQUV0RCx5QkFBeUI7SUFDekIsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUE7SUFDbkMsQ0FBQztJQUVELG9FQUFvRTtJQUNwRSxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFBLENBQUMsQ0FBQztJQUUzQywrSEFBK0g7SUFDL0gsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUM7SUFFOUIsbU1BQW1NO0lBQ25NLG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDOUQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUNuQixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO0lBQy9ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBSZWxhdGlvbnNoaXBCYXNlQXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2xhc3NOYW1lXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkZXBlbmRlbnRdXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gW2ZvcmVpZ25LZXldXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludmVyc2VPZl1cbiAqIEBwcm9wZXJ0eSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IFtrbGFzc11cbiAqIEBwcm9wZXJ0eSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcHJpbWFyeUtleV1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3BvbHltb3JwaGljXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJlbGF0aW9uc2hpcE5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdGhyb3VnaF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VSZWNvcmRCYXNlUmVsYXRpb25zaGlwIHtcbiAgLyoqIEBwYXJhbSB7UmVsYXRpb25zaGlwQmFzZUFyZ3NUeXBlfSBhcmdzICovXG4gIGNvbnN0cnVjdG9yKHtjbGFzc05hbWUsIGRlcGVuZGVudCwgZm9yZWlnbktleSwgaW52ZXJzZU9mLCBrbGFzcywgbW9kZWxDbGFzcywgcHJpbWFyeUtleSA9IFwiaWRcIiwgcG9seW1vcnBoaWMsIHJlbGF0aW9uc2hpcE5hbWUsIHRocm91Z2gsIHR5cGUsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoIW1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihgJ21vZGVsQ2xhc3MnIHdhc24ndCBnaXZlbiBmb3IgJHtyZWxhdGlvbnNoaXBOYW1lfWApXG4gICAgaWYgKCFjbGFzc05hbWUgJiYgIWtsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYE5laXRoZXIgJ2NsYXNzTmFtZScgb3IgJ2tsYXNzJyB3YXMgZ2l2ZW4gZm9yICR7bW9kZWxDbGFzcy5uYW1lfSMke3JlbGF0aW9uc2hpcE5hbWV9YClcblxuICAgIGlmIChjbGFzc05hbWUgPT0gXCJFdmVudFNlcnlcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1vZGVsIG5hbWU6ICR7Y2xhc3NOYW1lfWApXG4gICAgfVxuXG4gICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICB0aGlzLl9kZXBlbmRlbnQgPSBkZXBlbmRlbnRcbiAgICB0aGlzLmZvcmVpZ25LZXkgPSBmb3JlaWduS2V5XG4gICAgdGhpcy5faW52ZXJzZU9mID0gaW52ZXJzZU9mXG4gICAgdGhpcy5rbGFzcyA9IGtsYXNzXG4gICAgdGhpcy5tb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuICAgIHRoaXMuX3BvbHltb3JwaGljID0gcG9seW1vcnBoaWNcbiAgICB0aGlzLl9wcmltYXJ5S2V5ID0gcHJpbWFyeUtleVxuICAgIHRoaXMucmVsYXRpb25zaGlwTmFtZSA9IHJlbGF0aW9uc2hpcE5hbWVcbiAgICB0aGlzLnRocm91Z2ggPSB0aHJvdWdoXG4gICAgdGhpcy50eXBlID0gdHlwZVxuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpIHsgcmV0dXJuIHRoaXMubW9kZWxDbGFzcy5fZ2V0Q29uZmlndXJhdGlvbigpIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gV2hhdCB3aWxsIGJlIGRvbmUgd2hlbiB0aGUgcGFyZW50IHJlY29yZCBpcyBkZXN0cm95ZWQuIEUuZy4gXCJkZXN0cm95XCIsIFwibnVsbGlmeVwiLCBcInJlc3RyaWN0XCIgZXRjLiAqL1xuICBnZXREZXBlbmRlbnQoKSB7IHJldHVybiB0aGlzLl9kZXBlbmRlbnQgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIGZvcmVpZ24ga2V5LCBlLmcuIFwidXNlcl9pZFwiLCBcInBvc3RfaWRcIiBldGMuXG4gICAqL1xuICBnZXRGb3JlaWduS2V5KCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImdldEZvcmVpZ25LZXkgbm90IGltcGxlbWVudGVkXCIpXG4gIH1cblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBuYW1lIG9mIHRoZSBpbnZlcnNlIHJlbGF0aW9uc2hpcCwgZS5nLiBcInBvc3RzXCIsIFwiY29tbWVudHNcIiBldGMuXG4gICAqL1xuICBnZXRJbnZlcnNlT2YoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZ2V0SW52ZXJzZU9mIG5vdCBpbXBsZW1lbnRlZFwiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gKi9cbiAgZ2V0TW9kZWxDbGFzcygpIHsgcmV0dXJuIHRoaXMubW9kZWxDbGFzcyB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAsIGUuZy4gXCJwb3N0c1wiLCBcInVzZXJcIiwgXCJjb21tZW50c1wiIGV0Yy4gKi9cbiAgZ2V0UmVsYXRpb25zaGlwTmFtZSgpIHsgcmV0dXJuIHRoaXMucmVsYXRpb25zaGlwTmFtZSB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBnZXRQb2x5bW9ycGhpYygpIHtcbiAgICByZXR1cm4gdGhpcy5fcG9seW1vcnBoaWMgfHwgZmFsc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgZm9yZWlnbiBrZXksIGUuZy4gXCJpZFwiIGV0Yy4gKi9cbiAgZ2V0UHJpbWFyeUtleSgpIHsgcmV0dXJuIHRoaXMuX3ByaW1hcnlLZXkgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgdHlwZSBvZiB0aGUgcmVsYXRpb25zaGlwLCBlLmcuIFwiaGFzX21hbnlcIiwgXCJiZWxvbmdzX3RvXCIsIFwiaGFzX29uZVwiLCBcImhhc19hbmRfYmVsb25nc190b19tYW55XCIgZXRjLiAqL1xuICBnZXRUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlIH1cblxuICAvKiogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSBUaGUgdGFyZ2V0IG1vZGVsIGNsYXNzIGZvciB0aGlzIHJlbGF0aW9uc2hpcCwgZS5nLiBpZiB0aGUgcmVsYXRpb25zaGlwIGlzIFwicG9zdHNcIiB0aGVuIHRoZSB0YXJnZXQgbW9kZWwgY2xhc3MgaXMgdGhlIFBvc3QgY2xhc3MuICovXG4gIGdldFRhcmdldE1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKHRoaXMuZ2V0UG9seW1vcnBoaWMoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAodGhpcy5jbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXRNb2RlbENsYXNzKHRoaXMuY2xhc3NOYW1lKVxuICAgIH0gZWxzZSBpZiAodGhpcy5rbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMua2xhc3NcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaWd1cmUgb3V0IHRoZSB0YXJnZXQgbW9kZWwgY2xhc3NcIilcbiAgfVxufVxuIl19
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVsYXRpb25zaGlwcy9iYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM3RCxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUV4Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsTUFBTSxDQUFDLE9BQU8sT0FBTyx1Q0FBdUM7SUFDMUQsNkNBQTZDO0lBQzdDLFlBQVksRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3hKLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUNyRixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELFVBQVUsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBRWhKLElBQUksU0FBUyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFBO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFBO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQTtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsZ0JBQWdCLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUEsQ0FBQyxDQUFDO0lBRWpFLHNJQUFzSTtJQUN0SSxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQztJQUV6Qzs7O09BR0c7SUFDSCxhQUFhO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQSxDQUFDLENBQUM7SUFFMUMsNEZBQTRGO0lBQzVGLG1CQUFtQixLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFBLENBQUMsQ0FBQztJQUV0RCx5QkFBeUI7SUFDekIsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUE7SUFDbkMsQ0FBQztJQUVELHdCQUF3QjtJQUN4Qix3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLG9CQUFvQixDQUFDLENBQUE7UUFDdkYsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7WUFFdkMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDbkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQTtnQkFFekUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsZUFBZSxPQUFPLENBQUE7WUFDekQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDO0lBRTNDLCtIQUErSDtJQUMvSCxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUU5QixtTUFBbU07SUFDbk0sbUJBQW1CO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7WUFDdEQsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5RCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ25CLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7SUFDL0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUmVsYXRpb25zaGlwQmFzZUFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVwZW5kZW50XVxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IFtmb3JlaWduS2V5XVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpbnZlcnNlT2ZdXG4gKiBAcHJvcGVydHkge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBba2xhc3NdXG4gKiBAcHJvcGVydHkge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ByaW1hcnlLZXldXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwb2x5bW9ycGhpY11cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZWxhdGlvbnNoaXBOYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Rocm91Z2hdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUmVjb3JkQmFzZVJlbGF0aW9uc2hpcCB7XG4gIC8qKiBAcGFyYW0ge1JlbGF0aW9uc2hpcEJhc2VBcmdzVHlwZX0gYXJncyAqL1xuICBjb25zdHJ1Y3Rvcih7Y2xhc3NOYW1lLCBkZXBlbmRlbnQsIGZvcmVpZ25LZXksIGludmVyc2VPZiwga2xhc3MsIG1vZGVsQ2xhc3MsIHByaW1hcnlLZXkgPSBcImlkXCIsIHBvbHltb3JwaGljLCByZWxhdGlvbnNoaXBOYW1lLCB0aHJvdWdoLCB0eXBlLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYCdtb2RlbENsYXNzJyB3YXNuJ3QgZ2l2ZW4gZm9yICR7cmVsYXRpb25zaGlwTmFtZX1gKVxuICAgIGlmICghY2xhc3NOYW1lICYmICFrbGFzcyAmJiAhcG9seW1vcnBoaWMpIHRocm93IG5ldyBFcnJvcihgTmVpdGhlciAnY2xhc3NOYW1lJyBvciAna2xhc3MnIHdhcyBnaXZlbiBmb3IgJHttb2RlbENsYXNzLm5hbWV9IyR7cmVsYXRpb25zaGlwTmFtZX1gKVxuXG4gICAgaWYgKGNsYXNzTmFtZSA9PSBcIkV2ZW50U2VyeVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbW9kZWwgbmFtZTogJHtjbGFzc05hbWV9YClcbiAgICB9XG5cbiAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZVxuICAgIHRoaXMuX2RlcGVuZGVudCA9IGRlcGVuZGVudFxuICAgIHRoaXMuZm9yZWlnbktleSA9IGZvcmVpZ25LZXlcbiAgICB0aGlzLl9pbnZlcnNlT2YgPSBpbnZlcnNlT2ZcbiAgICB0aGlzLmtsYXNzID0ga2xhc3NcbiAgICB0aGlzLm1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzXG4gICAgdGhpcy5fcG9seW1vcnBoaWMgPSBwb2x5bW9ycGhpY1xuICAgIHRoaXMuX3ByaW1hcnlLZXkgPSBwcmltYXJ5S2V5XG4gICAgdGhpcy5yZWxhdGlvbnNoaXBOYW1lID0gcmVsYXRpb25zaGlwTmFtZVxuICAgIHRoaXMudGhyb3VnaCA9IHRocm91Z2hcbiAgICB0aGlzLnR5cGUgPSB0eXBlXG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCkgeyByZXR1cm4gdGhpcy5tb2RlbENsYXNzLl9nZXRDb25maWd1cmF0aW9uKCkgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBXaGF0IHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBwYXJlbnQgcmVjb3JkIGlzIGRlc3Ryb3llZC4gRS5nLiBcImRlc3Ryb3lcIiwgXCJudWxsaWZ5XCIsIFwicmVzdHJpY3RcIiBldGMuICovXG4gIGdldERlcGVuZGVudCgpIHsgcmV0dXJuIHRoaXMuX2RlcGVuZGVudCB9XG5cbiAgLyoqXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgZm9yZWlnbiBrZXksIGUuZy4gXCJ1c2VyX2lkXCIsIFwicG9zdF9pZFwiIGV0Yy5cbiAgICovXG4gIGdldEZvcmVpZ25LZXkoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiZ2V0Rm9yZWlnbktleSBub3QgaW1wbGVtZW50ZWRcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIGludmVyc2UgcmVsYXRpb25zaGlwLCBlLmcuIFwicG9zdHNcIiwgXCJjb21tZW50c1wiIGV0Yy5cbiAgICovXG4gIGdldEludmVyc2VPZigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZXRJbnZlcnNlT2Ygbm90IGltcGxlbWVudGVkXCIpXG4gIH1cblxuICAvKiogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqL1xuICBnZXRNb2RlbENsYXNzKCkgeyByZXR1cm4gdGhpcy5tb2RlbENsYXNzIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIHJlbGF0aW9uc2hpcCwgZS5nLiBcInBvc3RzXCIsIFwidXNlclwiLCBcImNvbW1lbnRzXCIgZXRjLiAqL1xuICBnZXRSZWxhdGlvbnNoaXBOYW1lKCkgeyByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBOYW1lIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGdldFBvbHltb3JwaGljKCkge1xuICAgIHJldHVybiB0aGlzLl9wb2x5bW9ycGhpYyB8fCBmYWxzZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIGdldFBvbHltb3JwaGljVHlwZUNvbHVtbigpIHtcbiAgICBpZiAoIXRoaXMuZ2V0UG9seW1vcnBoaWMoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMubW9kZWxDbGFzcy5uYW1lfSMke3RoaXMucmVsYXRpb25zaGlwTmFtZX0gaXNuJ3QgcG9seW1vcnBoaWNgKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5fcG9seW1vcnBoaWNUeXBlQ29sdW1uKSB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5nZXRGb3JlaWduS2V5KClcblxuICAgICAgaWYgKGZvcmVpZ25LZXkgJiYgZm9yZWlnbktleS5lbmRzV2l0aChcIl9pZFwiKSkge1xuICAgICAgICB0aGlzLl9wb2x5bW9ycGhpY1R5cGVDb2x1bW4gPSBmb3JlaWduS2V5LnJlcGxhY2UoL19pZCQvLCBcIl90eXBlXCIpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB1bmRlcnNjb3JlZE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGhpcy5nZXRSZWxhdGlvbnNoaXBOYW1lKCkpXG5cbiAgICAgICAgdGhpcy5fcG9seW1vcnBoaWNUeXBlQ29sdW1uID0gYCR7dW5kZXJzY29yZWROYW1lfV90eXBlYFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wb2x5bW9ycGhpY1R5cGVDb2x1bW5cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgZm9yZWlnbiBrZXksIGUuZy4gXCJpZFwiIGV0Yy4gKi9cbiAgZ2V0UHJpbWFyeUtleSgpIHsgcmV0dXJuIHRoaXMuX3ByaW1hcnlLZXkgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgdHlwZSBvZiB0aGUgcmVsYXRpb25zaGlwLCBlLmcuIFwiaGFzX21hbnlcIiwgXCJiZWxvbmdzX3RvXCIsIFwiaGFzX29uZVwiLCBcImhhc19hbmRfYmVsb25nc190b19tYW55XCIgZXRjLiAqL1xuICBnZXRUeXBlKCkgeyByZXR1cm4gdGhpcy50eXBlIH1cblxuICAvKiogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSBUaGUgdGFyZ2V0IG1vZGVsIGNsYXNzIGZvciB0aGlzIHJlbGF0aW9uc2hpcCwgZS5nLiBpZiB0aGUgcmVsYXRpb25zaGlwIGlzIFwicG9zdHNcIiB0aGVuIHRoZSB0YXJnZXQgbW9kZWwgY2xhc3MgaXMgdGhlIFBvc3QgY2xhc3MuICovXG4gIGdldFRhcmdldE1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKHRoaXMuZ2V0UG9seW1vcnBoaWMoKSAmJiB0aGlzLnR5cGUgPT0gXCJiZWxvbmdzVG9cIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAodGhpcy5jbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXRNb2RlbENsYXNzKHRoaXMuY2xhc3NOYW1lKVxuICAgIH0gZWxzZSBpZiAodGhpcy5rbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMua2xhc3NcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaWd1cmUgb3V0IHRoZSB0YXJnZXQgbW9kZWwgY2xhc3NcIilcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/relationships/belongs-to.js"],"names":[],"mappings":"AAKA;IAiBM,yCAA2C;CAuBhD;6BA3C4B,WAAW"}
1
+ {"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/relationships/belongs-to.js"],"names":[],"mappings":"AAKA;IAqBM,yCAA2C;CAuBhD;6BA/C4B,WAAW"}
@@ -5,10 +5,15 @@ export default class VelociousDatabaseRecordBelongsToRelationship extends BaseRe
5
5
  /** @returns {string} */
6
6
  getForeignKey() {
7
7
  if (!this.foreignKey) {
8
- const targetModelClass = this.getTargetModelClass();
9
- if (!targetModelClass)
10
- throw new Error("Can't calculate foreign key without a target model class");
11
- this.foreignKey = `${inflection.underscore(targetModelClass.name)}_id`;
8
+ if (this.getPolymorphic()) {
9
+ this.foreignKey = `${inflection.underscore(this.getRelationshipName())}_id`;
10
+ }
11
+ else {
12
+ const targetModelClass = this.getTargetModelClass();
13
+ if (!targetModelClass)
14
+ throw new Error("Can't calculate foreign key without a target model class");
15
+ this.foreignKey = `${inflection.underscore(targetModelClass.name)}_id`;
16
+ }
12
17
  }
13
18
  return this.foreignKey;
14
19
  }
@@ -35,4 +40,4 @@ export default class VelociousDatabaseRecordBelongsToRelationship extends BaseRe
35
40
  return this._inverseOf;
36
41
  }
37
42
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVsYXRpb25zaGlwcy9iZWxvbmdzLXRvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGdCQUFnQixNQUFNLFdBQVcsQ0FBQTtBQUN4QyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUV4QyxNQUFNLENBQUMsT0FBTyxPQUFPLDRDQUE2QyxTQUFRLGdCQUFnQjtJQUN4Rix3QkFBd0I7SUFDeEIsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtZQUVuRCxJQUFJLENBQUMsZ0JBQWdCO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQTtZQUVsRyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ3hFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDeEIsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFBO1lBRTNDLDRGQUE0RjtZQUM1RixNQUFNLHFCQUFxQixHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUE7WUFFeEssTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtZQUVuRCxJQUFJLGdCQUFnQixJQUFJLHFCQUFxQixJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2RSw2RkFBNkY7Z0JBQzdGLE1BQU0sNEJBQTRCLEdBQUcsZ0JBQWdCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtnQkFDNUUsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBO2dCQUNqSyxNQUFNLGlDQUFpQyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtnQkFFaEcsSUFBSSw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUMsRUFBRSxDQUFDO29CQUM1RSxJQUFJLENBQUMsVUFBVSxHQUFHLGdDQUFnQyxDQUFBO2dCQUNwRCxDQUFDO3FCQUFNLElBQUksNEJBQTRCLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsQ0FBQztvQkFDcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxpQ0FBaUMsQ0FBQTtnQkFDckQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZVJlbGF0aW9uc2hpcCBmcm9tIFwiLi9iYXNlLmpzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZEJlbG9uZ3NUb1JlbGF0aW9uc2hpcCBleHRlbmRzIEJhc2VSZWxhdGlvbnNoaXAge1xuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgZ2V0Rm9yZWlnbktleSgpIHtcbiAgICBpZiAoIXRoaXMuZm9yZWlnbktleSkge1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IHRoaXMuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgY2FsY3VsYXRlIGZvcmVpZ24ga2V5IHdpdGhvdXQgYSB0YXJnZXQgbW9kZWwgY2xhc3NcIilcblxuICAgICAgdGhpcy5mb3JlaWduS2V5ID0gYCR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKHRhcmdldE1vZGVsQ2xhc3MubmFtZSl9X2lkYFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZvcmVpZ25LZXlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSAqL1xuICBnZXRJbnZlcnNlT2YoKSB7XG4gICAgaWYgKCF0aGlzLl9pbnZlcnNlT2YgJiYgIXRoaXMuX2F1dG9HZW5lcmF0ZUludmVyc2VPZkF0dGVtcHRlZCkge1xuICAgICAgdGhpcy5fYXV0b0dlbmVyYXRlSW52ZXJzZU9mQXR0ZW1wdGVkID0gdHJ1ZVxuXG4gICAgICAvLyBPbmx5IG1ha2UgYXV0by1pbnZlcnNlLW9mIGlmIHRoZSByZWxhdGlvbnNoaXBzIG5hbWUgbWF0Y2hlcyB0aGUgdGFyZ2V0IG1vZGVsIGNsYXNzJ3MgbmFtZVxuICAgICAgY29uc3QgdGFyZ2V0Q2xhc3NTaW1wbGVOYW1lID0gYCR7dGhpcy5nZXRSZWxhdGlvbnNoaXBOYW1lKCkuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCl9JHt0aGlzLmdldFJlbGF0aW9uc2hpcE5hbWUoKS5zdWJzdHJpbmcoMSwgdGhpcy5nZXRSZWxhdGlvbnNoaXBOYW1lKCkubGVuZ3RoKX1gXG5cbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgICBpZiAodGFyZ2V0TW9kZWxDbGFzcyAmJiB0YXJnZXRDbGFzc1NpbXBsZU5hbWUgPT0gdGFyZ2V0TW9kZWxDbGFzcy5uYW1lKSB7XG4gICAgICAgIC8vIE9ubHkgbWFrZSBhdXRvLWludmVyc2Utb2YgaWYgdGhlIGV4cGVjdGVkIHJlbGF0aW9uc2hpcCBleGlzdCBpbiBhIGhhcy1vbmUgb3IgaGFzLW1hbnkgZm9ybVxuICAgICAgICBjb25zdCB0YXJnZXRDbGFzc1JlbGF0aW9uc2hpcE5hbWVzID0gdGFyZ2V0TW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBOYW1lcygpXG4gICAgICAgIGNvbnN0IGF1dG9HZW5lcmF0ZWRIYXNPbmVJbnZlcnNlT2ZOYW1lID0gYCR7dGhpcy5tb2RlbENsYXNzLm5hbWUuc3Vic3RyaW5nKDAsIDEpLnRvTG93ZXJDYXNlKCl9JHt0aGlzLm1vZGVsQ2xhc3MubmFtZS5zdWJzdHJpbmcoMSwgdGhpcy5tb2RlbENsYXNzLm5hbWUubGVuZ3RoKX1gXG4gICAgICAgIGNvbnN0IGF1dG9HZW5lcmF0ZWRIYXNNYW55SW52ZXJzZU9mTmFtZSA9IGluZmxlY3Rpb24ucGx1cmFsaXplKGF1dG9HZW5lcmF0ZWRIYXNPbmVJbnZlcnNlT2ZOYW1lKVxuXG4gICAgICAgIGlmICh0YXJnZXRDbGFzc1JlbGF0aW9uc2hpcE5hbWVzLmluY2x1ZGVzKGF1dG9HZW5lcmF0ZWRIYXNPbmVJbnZlcnNlT2ZOYW1lKSkge1xuICAgICAgICAgIHRoaXMuX2ludmVyc2VPZiA9IGF1dG9HZW5lcmF0ZWRIYXNPbmVJbnZlcnNlT2ZOYW1lXG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0Q2xhc3NSZWxhdGlvbnNoaXBOYW1lcy5pbmNsdWRlcyhhdXRvR2VuZXJhdGVkSGFzTWFueUludmVyc2VPZk5hbWUpKSB7XG4gICAgICAgICAgdGhpcy5faW52ZXJzZU9mID0gYXV0b0dlbmVyYXRlZEhhc01hbnlJbnZlcnNlT2ZOYW1lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW52ZXJzZU9mXG4gIH1cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVsYXRpb25zaGlwcy9iZWxvbmdzLXRvLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGdCQUFnQixNQUFNLFdBQVcsQ0FBQTtBQUN4QyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUV4QyxNQUFNLENBQUMsT0FBTyxPQUFPLDRDQUE2QyxTQUFRLGdCQUFnQjtJQUN4Rix3QkFBd0I7SUFDeEIsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsS0FBSyxDQUFBO1lBQzdFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO2dCQUVuRCxJQUFJLENBQUMsZ0JBQWdCO29CQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQTtnQkFFbEcsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtZQUN4RSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUE7WUFFM0MsNEZBQTRGO1lBQzVGLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtZQUV4SyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1lBRW5ELElBQUksZ0JBQWdCLElBQUkscUJBQXFCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZFLDZGQUE2RjtnQkFDN0YsTUFBTSw0QkFBNEIsR0FBRyxnQkFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO2dCQUM1RSxNQUFNLGdDQUFnQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUE7Z0JBQ2pLLE1BQU0saUNBQWlDLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO2dCQUVoRyxJQUFJLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUM7b0JBQzVFLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0NBQWdDLENBQUE7Z0JBQ3BELENBQUM7cUJBQU0sSUFBSSw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsRUFBRSxDQUFDO29CQUNwRixJQUFJLENBQUMsVUFBVSxHQUFHLGlDQUFpQyxDQUFBO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlUmVsYXRpb25zaGlwIGZyb20gXCIuL2Jhc2UuanNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUmVjb3JkQmVsb25nc1RvUmVsYXRpb25zaGlwIGV4dGVuZHMgQmFzZVJlbGF0aW9uc2hpcCB7XG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBnZXRGb3JlaWduS2V5KCkge1xuICAgIGlmICghdGhpcy5mb3JlaWduS2V5KSB7XG4gICAgICBpZiAodGhpcy5nZXRQb2x5bW9ycGhpYygpKSB7XG4gICAgICAgIHRoaXMuZm9yZWlnbktleSA9IGAke2luZmxlY3Rpb24udW5kZXJzY29yZSh0aGlzLmdldFJlbGF0aW9uc2hpcE5hbWUoKSl9X2lkYFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IHRoaXMuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBjYWxjdWxhdGUgZm9yZWlnbiBrZXkgd2l0aG91dCBhIHRhcmdldCBtb2RlbCBjbGFzc1wiKVxuXG4gICAgICAgIHRoaXMuZm9yZWlnbktleSA9IGAke2luZmxlY3Rpb24udW5kZXJzY29yZSh0YXJnZXRNb2RlbENsYXNzLm5hbWUpfV9pZGBcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5mb3JlaWduS2V5XG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgZ2V0SW52ZXJzZU9mKCkge1xuICAgIGlmICghdGhpcy5faW52ZXJzZU9mICYmICF0aGlzLl9hdXRvR2VuZXJhdGVJbnZlcnNlT2ZBdHRlbXB0ZWQpIHtcbiAgICAgIHRoaXMuX2F1dG9HZW5lcmF0ZUludmVyc2VPZkF0dGVtcHRlZCA9IHRydWVcblxuICAgICAgLy8gT25seSBtYWtlIGF1dG8taW52ZXJzZS1vZiBpZiB0aGUgcmVsYXRpb25zaGlwcyBuYW1lIG1hdGNoZXMgdGhlIHRhcmdldCBtb2RlbCBjbGFzcydzIG5hbWVcbiAgICAgIGNvbnN0IHRhcmdldENsYXNzU2ltcGxlTmFtZSA9IGAke3RoaXMuZ2V0UmVsYXRpb25zaGlwTmFtZSgpLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpfSR7dGhpcy5nZXRSZWxhdGlvbnNoaXBOYW1lKCkuc3Vic3RyaW5nKDEsIHRoaXMuZ2V0UmVsYXRpb25zaGlwTmFtZSgpLmxlbmd0aCl9YFxuXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gdGhpcy5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgICAgaWYgKHRhcmdldE1vZGVsQ2xhc3MgJiYgdGFyZ2V0Q2xhc3NTaW1wbGVOYW1lID09IHRhcmdldE1vZGVsQ2xhc3MubmFtZSkge1xuICAgICAgICAvLyBPbmx5IG1ha2UgYXV0by1pbnZlcnNlLW9mIGlmIHRoZSBleHBlY3RlZCByZWxhdGlvbnNoaXAgZXhpc3QgaW4gYSBoYXMtb25lIG9yIGhhcy1tYW55IGZvcm1cbiAgICAgICAgY29uc3QgdGFyZ2V0Q2xhc3NSZWxhdGlvbnNoaXBOYW1lcyA9IHRhcmdldE1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwTmFtZXMoKVxuICAgICAgICBjb25zdCBhdXRvR2VuZXJhdGVkSGFzT25lSW52ZXJzZU9mTmFtZSA9IGAke3RoaXMubW9kZWxDbGFzcy5uYW1lLnN1YnN0cmluZygwLCAxKS50b0xvd2VyQ2FzZSgpfSR7dGhpcy5tb2RlbENsYXNzLm5hbWUuc3Vic3RyaW5nKDEsIHRoaXMubW9kZWxDbGFzcy5uYW1lLmxlbmd0aCl9YFxuICAgICAgICBjb25zdCBhdXRvR2VuZXJhdGVkSGFzTWFueUludmVyc2VPZk5hbWUgPSBpbmZsZWN0aW9uLnBsdXJhbGl6ZShhdXRvR2VuZXJhdGVkSGFzT25lSW52ZXJzZU9mTmFtZSlcblxuICAgICAgICBpZiAodGFyZ2V0Q2xhc3NSZWxhdGlvbnNoaXBOYW1lcy5pbmNsdWRlcyhhdXRvR2VuZXJhdGVkSGFzT25lSW52ZXJzZU9mTmFtZSkpIHtcbiAgICAgICAgICB0aGlzLl9pbnZlcnNlT2YgPSBhdXRvR2VuZXJhdGVkSGFzT25lSW52ZXJzZU9mTmFtZVxuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldENsYXNzUmVsYXRpb25zaGlwTmFtZXMuaW5jbHVkZXMoYXV0b0dlbmVyYXRlZEhhc01hbnlJbnZlcnNlT2ZOYW1lKSkge1xuICAgICAgICAgIHRoaXMuX2ludmVyc2VPZiA9IGF1dG9HZW5lcmF0ZWRIYXNNYW55SW52ZXJzZU9mTmFtZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ludmVyc2VPZlxuICB9XG59XG4iXX0=
@@ -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"}