tnp-helpers 18.0.18 → 18.0.19

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 (90) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/esm2022/lib/base/classes/base-cli-worker.mjs +54 -7
  3. package/browser/esm2022/lib/base/classes/base-vscode.mjs +26 -1
  4. package/browser/esm2022/lib/base/tcp-udp-ports/index.mjs +1 -2
  5. package/browser/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +169 -17
  6. package/browser/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +10 -3
  7. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +2 -3
  8. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +187 -11
  9. package/browser/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +16 -8
  10. package/browser/esm2022/migrations/1736454437350_addFreePorts.mjs +20 -7
  11. package/browser/fesm2022/tnp-helpers.mjs +475 -62
  12. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  13. package/browser/lib/base/classes/base-cli-worker.d.ts +27 -4
  14. package/browser/lib/base/tcp-udp-ports/index.d.ts +0 -1
  15. package/browser/lib/base/tcp-udp-ports/ports.controller.d.ts +15 -6
  16. package/browser/lib/base/tcp-udp-ports/ports.entity.d.ts +8 -4
  17. package/browser/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +10 -8
  18. package/client/esm2022/lib/base/classes/base-cli-worker.mjs +54 -7
  19. package/client/esm2022/lib/base/classes/base-vscode.mjs +26 -1
  20. package/client/esm2022/lib/base/tcp-udp-ports/index.mjs +1 -2
  21. package/client/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +169 -17
  22. package/client/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +10 -3
  23. package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +2 -3
  24. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +187 -11
  25. package/client/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +16 -8
  26. package/client/esm2022/migrations/1736454437350_addFreePorts.mjs +20 -7
  27. package/client/fesm2022/tnp-helpers.mjs +475 -62
  28. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  29. package/client/lib/base/classes/base-cli-worker.d.ts +27 -4
  30. package/client/lib/base/tcp-udp-ports/index.d.ts +0 -1
  31. package/client/lib/base/tcp-udp-ports/ports.controller.d.ts +15 -6
  32. package/client/lib/base/tcp-udp-ports/ports.entity.d.ts +8 -4
  33. package/client/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +10 -8
  34. package/lib/base/classes/base-cli-worker.d.ts +27 -4
  35. package/lib/base/classes/base-cli-worker.js +94 -28
  36. package/lib/base/classes/base-cli-worker.js.map +1 -1
  37. package/lib/base/classes/base-global-command-line.backend.d.ts +1 -0
  38. package/lib/base/classes/base-global-command-line.backend.js +12 -0
  39. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  40. package/lib/base/classes/base-vscode.js +43 -25
  41. package/lib/base/classes/base-vscode.js.map +1 -1
  42. package/lib/base/tcp-udp-ports/index.d.ts +0 -1
  43. package/lib/base/tcp-udp-ports/index.js +0 -1
  44. package/lib/base/tcp-udp-ports/index.js.map +1 -1
  45. package/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +0 -6
  46. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -42
  47. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js.map +1 -1
  48. package/lib/base/tcp-udp-ports/ports.controller.d.ts +14 -5
  49. package/lib/base/tcp-udp-ports/ports.controller.js +227 -19
  50. package/lib/base/tcp-udp-ports/ports.controller.js.map +1 -1
  51. package/lib/base/tcp-udp-ports/ports.entity.d.ts +8 -4
  52. package/lib/base/tcp-udp-ports/ports.entity.js +32 -2
  53. package/lib/base/tcp-udp-ports/ports.entity.js.map +1 -1
  54. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +1 -2
  55. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
  56. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +14 -8
  57. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +293 -30
  58. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
  59. package/lib/helpers/for-browser/angular.helper.js +2 -2
  60. package/lib/old/base-component.js +2 -2
  61. package/lib/old/base-formly-component.js +2 -2
  62. package/lib/old/dual-component-ctrl.js +2 -2
  63. package/migrations/1736199486472_addingNotAssignablePorts.js +33 -10
  64. package/migrations/1736199486472_addingNotAssignablePorts.js.map +1 -1
  65. package/migrations/1736454437350_addFreePorts.js +42 -14
  66. package/migrations/1736454437350_addFreePorts.js.map +1 -1
  67. package/package.json +5 -5
  68. package/tmp-environment.json +29 -29
  69. package/websql/esm2022/lib/base/classes/base-cli-worker.mjs +54 -7
  70. package/websql/esm2022/lib/base/classes/base-vscode.mjs +26 -1
  71. package/websql/esm2022/lib/base/tcp-udp-ports/index.mjs +1 -2
  72. package/websql/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +169 -17
  73. package/websql/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +25 -3
  74. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +2 -3
  75. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +187 -11
  76. package/websql/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +16 -8
  77. package/websql/esm2022/migrations/1736454437350_addFreePorts.mjs +20 -7
  78. package/websql/fesm2022/tnp-helpers.mjs +485 -72
  79. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  80. package/websql/lib/base/classes/base-cli-worker.d.ts +27 -4
  81. package/websql/lib/base/tcp-udp-ports/index.d.ts +0 -1
  82. package/websql/lib/base/tcp-udp-ports/ports.controller.d.ts +15 -6
  83. package/websql/lib/base/tcp-udp-ports/ports.entity.d.ts +8 -4
  84. package/websql/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +10 -8
  85. package/browser/esm2022/lib/base/tcp-udp-ports/not-assignable-port.entity.mjs +0 -19
  86. package/browser/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +0 -7
  87. package/client/esm2022/lib/base/tcp-udp-ports/not-assignable-port.entity.mjs +0 -19
  88. package/client/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +0 -7
  89. package/websql/esm2022/lib/base/tcp-udp-ports/not-assignable-port.entity.mjs +0 -34
  90. package/websql/lib/base/tcp-udp-ports/not-assignable-port.entity.d.ts +0 -7
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { Taon } from 'taon/websql';
3
- import { NotAssignablePort, PortsController } from '../lib';
3
+ import { Port, PortsController } from '../lib';
4
4
  const portsWithDescription = {
5
5
  3000: 'Commonly used for development servers',
6
6
  3001: 'Alternate development server port',
@@ -28,20 +28,28 @@ let PortsContext_1736199486472_addingNotAssignablePorts = class PortsContext_173
28
28
  this.commonPortsFrom3000to6000 = Object.keys(portsWithDescription).map(Number);
29
29
  }
30
30
  async up(queryRunner) {
31
- const db = await queryRunner.manager.getRepository(NotAssignablePort);
32
- const allPorts = this.commonPortsFrom3000to6000.map(port => NotAssignablePort.from({
31
+ const db = await queryRunner.manager.getRepository(Port);
32
+ const allPorts = this.commonPortsFrom3000to6000.map(port => Port.from({
33
33
  port,
34
34
  serviceId: `not assignable (${portsWithDescription[port]})`,
35
+ status: 'assigned-taken-by-os',
35
36
  }));
36
37
  await db.save(allPorts);
37
38
  for (const commonPortObj of allPorts) {
38
- this.portsController.takenByOsPorts.set(commonPortObj.port, commonPortObj);
39
+ this.portsController.portsCache.set(commonPortObj.serviceId, commonPortObj);
39
40
  }
40
41
  }
41
42
  async down(queryRunner) {
42
- const db = await queryRunner.manager.getRepository(NotAssignablePort);
43
- db.clear();
44
- this.portsController.takenByOsPorts.clear();
43
+ const db = await queryRunner.manager.getRepository(Port);
44
+ await db.remove(await db.find({
45
+ where: {
46
+ status: 'assigned-taken-by-os',
47
+ },
48
+ }));
49
+ const allPorts = Array.from(this.portsController.portsCache.values()).filter(f => f.status === 'assigned-taken-by-os');
50
+ for (const port of allPorts) {
51
+ this.portsController.portsCache.delete(port.serviceId);
52
+ }
45
53
  }
46
54
  };
47
55
  PortsContext_1736199486472_addingNotAssignablePorts = __decorate([
@@ -52,4 +60,4 @@ PortsContext_1736199486472_addingNotAssignablePorts = __decorate([
52
60
  export { PortsContext_1736199486472_addingNotAssignablePorts };
53
61
  ;
54
62
  ({}); // @--end-of-file-for-module=tnp-helpers migrations/1736199486472_addingNotAssignablePorts.ts
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTczNjE5OTQ4NjQ3Ml9hZGRpbmdOb3RBc3NpZ25hYmxlUG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL21pZ3JhdGlvbnMvMTczNjE5OTQ4NjQ3Ml9hZGRpbmdOb3RBc3NpZ25hYmxlUG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFRLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVsRSxNQUFNLG9CQUFvQixHQUFHO0lBQzNCLElBQUksRUFBRSx1Q0FBdUM7SUFDN0MsSUFBSSxFQUFFLG1DQUFtQztJQUN6QyxJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSwrQkFBK0I7SUFDckMsSUFBSSxFQUFFLDRDQUE0QztJQUNsRCxJQUFJLEVBQUUscUNBQXFDO0lBQzNDLElBQUksRUFBRSxnQ0FBZ0M7SUFDdEMsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLElBQUksRUFBRSxtREFBbUQ7SUFDekQsSUFBSSxFQUFFLFlBQVk7SUFDbEIsSUFBSSxFQUFFLGlDQUFpQztJQUN2QyxJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsMkJBQTJCO0lBQ2pDLElBQUksRUFBRSxvQkFBb0I7SUFDMUIsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsOEJBQThCO0NBQ3JDLENBQUM7QUFLSyxJQUFNLG1EQUFtRCxHQUF6RCxNQUFNLG1EQUFvRCxTQUFRLElBQUk7S0FDMUUsSUFBSSxDQUFDLFNBQVM7SUFEVjs7UUFFSyxvQkFBZSxHQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEIsOEJBQXlCLEdBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUF5QmxELENBQUM7SUF2QkMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUMvQixNQUFNLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN6RCxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDckIsSUFBSTtZQUNKLFNBQVMsRUFBRSxtQkFBbUIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUc7U0FDNUQsQ0FBQyxDQUNILENBQUM7UUFDRixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsS0FBSyxNQUFNLGFBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JDLGFBQWEsQ0FBQyxJQUFJLEVBQ2xCLGFBQWEsQ0FDZCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQXdCO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0NBQ0YsQ0FBQTtBQS9CWSxtREFBbUQ7SUFIL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNkLFNBQVMsRUFBRSxxREFBcUQ7S0FDakUsQ0FBQztHQUNXLG1EQUFtRCxDQStCL0Q7O0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw2RkFBNkYiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgVGFvbiB9IGZyb20gJ3Rhb24vd2Vic3FsJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgUXVlcnlSdW5uZXIgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJztcbmltcG9ydCB7IE5vdEFzc2lnbmFibGVQb3J0LCBQb3J0LCBQb3J0c0NvbnRyb2xsZXIgfSBmcm9tICcuLi9saWInO1xuXG5jb25zdCBwb3J0c1dpdGhEZXNjcmlwdGlvbiA9IHtcbiAgMzAwMDogJ0NvbW1vbmx5IHVzZWQgZm9yIGRldmVsb3BtZW50IHNlcnZlcnMnLFxuICAzMDAxOiAnQWx0ZXJuYXRlIGRldmVsb3BtZW50IHNlcnZlciBwb3J0JyxcbiAgMzMwNjogJ015U1FMJyxcbiAgMzM4OTogJ1JlbW90ZSBEZXNrdG9wIFByb3RvY29sIChSRFApJyxcbiAgMzQ3ODogJ1NUVU4gKFNlc3Npb24gVHJhdmVyc2FsIFV0aWxpdGllcyBmb3IgTkFUKScsXG4gIDQwMDA6ICdBbHRlcm5hdGl2ZSBkZXZlbG9wbWVudCBzZXJ2ZXIgcG9ydCcsXG4gIDQyMDA6ICdBbmd1bGFyIENMSSBEZXZlbG9wbWVudCBTZXJ2ZXInLFxuICA0NTAwOiAnSVBTZWMgTkFUIHRyYXZlcnNhbCcsXG4gIDQ1Njc6ICdTaW5hdHJhIERlZmF1bHQgUG9ydCcsXG4gIDUwMDA6ICdGbGFzaywgUHl0aG9uIGRldmVsb3BtZW50IHNlcnZlciwgb3IgTm9kZS5qcyBhcHBzJyxcbiAgNTQzMjogJ1Bvc3RncmVTUUwnLFxuICA1NTAwOiAnTGl2ZSBTZXJ2ZXIgKFZTIENvZGUgRXh0ZW5zaW9uKScsXG4gIDU2NzI6ICdSYWJiaXRNUScsXG4gIDU4MDA6ICdWTkMgUmVtb3RlIERlc2t0b3AgKEhUVFApJyxcbiAgNTkwMDogJ1ZOQyBSZW1vdGUgRGVza3RvcCcsXG4gIDU5ODQ6ICdDb3VjaERCJyxcbiAgNjAwMDogJ2luIHVzZSBieSBzb21ldGhpbmcgaW4gbWFjb3MnLFxufTtcblxuQFRhb24uTWlncmF0aW9uKHtcbiAgY2xhc3NOYW1lOiAnUG9ydHNDb250ZXh0XzE3MzYxOTk0ODY0NzJfYWRkaW5nTm90QXNzaWduYWJsZVBvcnRzJyxcbn0pXG5leHBvcnQgY2xhc3MgUG9ydHNDb250ZXh0XzE3MzYxOTk0ODY0NzJfYWRkaW5nTm90QXNzaWduYWJsZVBvcnRzIGV4dGVuZHMgVGFvblxuICAuQmFzZS5NaWdyYXRpb24ge1xuICBwcm90ZWN0ZWQgcG9ydHNDb250cm9sbGVyOiBQb3J0c0NvbnRyb2xsZXIgPVxuICAgIHRoaXMuaW5qZWN0Q29udHJvbGxlcihQb3J0c0NvbnRyb2xsZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uUG9ydHNGcm9tMzAwMHRvNjAwMDogbnVtYmVyW10gPVxuICAgIE9iamVjdC5rZXlzKHBvcnRzV2l0aERlc2NyaXB0aW9uKS5tYXAoTnVtYmVyKTtcblxuICBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KE5vdEFzc2lnbmFibGVQb3J0KTtcblxuICAgIGNvbnN0IGFsbFBvcnRzID0gdGhpcy5jb21tb25Qb3J0c0Zyb20zMDAwdG82MDAwLm1hcChwb3J0ID0+XG4gICAgICBOb3RBc3NpZ25hYmxlUG9ydC5mcm9tKHtcbiAgICAgICAgcG9ydCxcbiAgICAgICAgc2VydmljZUlkOiBgbm90IGFzc2lnbmFibGUgKCR7cG9ydHNXaXRoRGVzY3JpcHRpb25bcG9ydF19KWAsXG4gICAgICB9KSxcbiAgICApO1xuICAgIGF3YWl0IGRiLnNhdmUoYWxsUG9ydHMpO1xuICAgIGZvciAoY29uc3QgY29tbW9uUG9ydE9iaiBvZiBhbGxQb3J0cykge1xuICAgICAgdGhpcy5wb3J0c0NvbnRyb2xsZXIudGFrZW5CeU9zUG9ydHMuc2V0KFxuICAgICAgICBjb21tb25Qb3J0T2JqLnBvcnQsXG4gICAgICAgIGNvbW1vblBvcnRPYmosXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRvd24ocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShOb3RBc3NpZ25hYmxlUG9ydCk7XG4gICAgZGIuY2xlYXIoKTtcbiAgICB0aGlzLnBvcnRzQ29udHJvbGxlci50YWtlbkJ5T3NQb3J0cy5jbGVhcigpO1xuICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBtaWdyYXRpb25zLzE3MzYxOTk0ODY0NzJfYWRkaW5nTm90QXNzaWduYWJsZVBvcnRzLnRzIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTczNjE5OTQ4NjQ3Ml9hZGRpbmdOb3RBc3NpZ25hYmxlUG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL21pZ3JhdGlvbnMvMTczNjE5OTQ4NjQ3Ml9hZGRpbmdOb3RBc3NpZ25hYmxlUG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbkMsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0MsTUFBTSxvQkFBb0IsR0FBRztJQUMzQixJQUFJLEVBQUUsdUNBQXVDO0lBQzdDLElBQUksRUFBRSxtQ0FBbUM7SUFDekMsSUFBSSxFQUFFLE9BQU87SUFDYixJQUFJLEVBQUUsK0JBQStCO0lBQ3JDLElBQUksRUFBRSw0Q0FBNEM7SUFDbEQsSUFBSSxFQUFFLHFDQUFxQztJQUMzQyxJQUFJLEVBQUUsZ0NBQWdDO0lBQ3RDLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QixJQUFJLEVBQUUsbURBQW1EO0lBQ3pELElBQUksRUFBRSxZQUFZO0lBQ2xCLElBQUksRUFBRSxpQ0FBaUM7SUFDdkMsSUFBSSxFQUFFLFVBQVU7SUFDaEIsSUFBSSxFQUFFLDJCQUEyQjtJQUNqQyxJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLElBQUksRUFBRSxTQUFTO0lBQ2YsSUFBSSxFQUFFLDhCQUE4QjtDQUNyQyxDQUFDO0FBS0ssSUFBTSxtREFBbUQsR0FBekQsTUFBTSxtREFBb0QsU0FBUSxJQUFJO0tBQzFFLElBQUksQ0FBQyxTQUFTO0lBRFY7O1FBRUssb0JBQWUsR0FDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXhCLDhCQUF5QixHQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBcUNsRCxDQUFDO0lBbkNDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBd0I7UUFDL0IsTUFBTSxFQUFFLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3pELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixJQUFJO1lBQ0osU0FBUyxFQUFFLG1CQUFtQixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRztZQUMzRCxNQUFNLEVBQUUsc0JBQXNCO1NBQy9CLENBQUMsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssTUFBTSxhQUFhLElBQUksUUFBUSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUNqQyxhQUFhLENBQUMsU0FBUyxFQUN2QixhQUFhLENBQ2QsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUNqQyxNQUFNLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FDYixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDWixLQUFLLEVBQUU7Z0JBQ0wsTUFBTSxFQUFFLHNCQUFzQjthQUMvQjtTQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQ3pDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25ELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUE7QUEzQ1ksbURBQW1EO0lBSC9ELElBQUksQ0FBQyxTQUFTLENBQUM7UUFDZCxTQUFTLEVBQUUscURBQXFEO0tBQ2pFLENBQUM7R0FDVyxtREFBbUQsQ0EyQy9EOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNkZBQTZGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IFRhb24gfSBmcm9tICd0YW9uL3dlYnNxbCc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IFF1ZXJ5UnVubmVyIH0gZnJvbSAndGFvbi10eXBlb3JtL3dlYnNxbCc7XG5pbXBvcnQgeyBQb3J0LCBQb3J0c0NvbnRyb2xsZXIgfSBmcm9tICcuLi9saWInO1xuXG5jb25zdCBwb3J0c1dpdGhEZXNjcmlwdGlvbiA9IHtcbiAgMzAwMDogJ0NvbW1vbmx5IHVzZWQgZm9yIGRldmVsb3BtZW50IHNlcnZlcnMnLFxuICAzMDAxOiAnQWx0ZXJuYXRlIGRldmVsb3BtZW50IHNlcnZlciBwb3J0JyxcbiAgMzMwNjogJ015U1FMJyxcbiAgMzM4OTogJ1JlbW90ZSBEZXNrdG9wIFByb3RvY29sIChSRFApJyxcbiAgMzQ3ODogJ1NUVU4gKFNlc3Npb24gVHJhdmVyc2FsIFV0aWxpdGllcyBmb3IgTkFUKScsXG4gIDQwMDA6ICdBbHRlcm5hdGl2ZSBkZXZlbG9wbWVudCBzZXJ2ZXIgcG9ydCcsXG4gIDQyMDA6ICdBbmd1bGFyIENMSSBEZXZlbG9wbWVudCBTZXJ2ZXInLFxuICA0NTAwOiAnSVBTZWMgTkFUIHRyYXZlcnNhbCcsXG4gIDQ1Njc6ICdTaW5hdHJhIERlZmF1bHQgUG9ydCcsXG4gIDUwMDA6ICdGbGFzaywgUHl0aG9uIGRldmVsb3BtZW50IHNlcnZlciwgb3IgTm9kZS5qcyBhcHBzJyxcbiAgNTQzMjogJ1Bvc3RncmVTUUwnLFxuICA1NTAwOiAnTGl2ZSBTZXJ2ZXIgKFZTIENvZGUgRXh0ZW5zaW9uKScsXG4gIDU2NzI6ICdSYWJiaXRNUScsXG4gIDU4MDA6ICdWTkMgUmVtb3RlIERlc2t0b3AgKEhUVFApJyxcbiAgNTkwMDogJ1ZOQyBSZW1vdGUgRGVza3RvcCcsXG4gIDU5ODQ6ICdDb3VjaERCJyxcbiAgNjAwMDogJ2luIHVzZSBieSBzb21ldGhpbmcgaW4gbWFjb3MnLFxufTtcblxuQFRhb24uTWlncmF0aW9uKHtcbiAgY2xhc3NOYW1lOiAnUG9ydHNDb250ZXh0XzE3MzYxOTk0ODY0NzJfYWRkaW5nTm90QXNzaWduYWJsZVBvcnRzJyxcbn0pXG5leHBvcnQgY2xhc3MgUG9ydHNDb250ZXh0XzE3MzYxOTk0ODY0NzJfYWRkaW5nTm90QXNzaWduYWJsZVBvcnRzIGV4dGVuZHMgVGFvblxuICAuQmFzZS5NaWdyYXRpb24ge1xuICBwcm90ZWN0ZWQgcG9ydHNDb250cm9sbGVyOiBQb3J0c0NvbnRyb2xsZXIgPVxuICAgIHRoaXMuaW5qZWN0Q29udHJvbGxlcihQb3J0c0NvbnRyb2xsZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uUG9ydHNGcm9tMzAwMHRvNjAwMDogbnVtYmVyW10gPVxuICAgIE9iamVjdC5rZXlzKHBvcnRzV2l0aERlc2NyaXB0aW9uKS5tYXAoTnVtYmVyKTtcblxuICBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFBvcnQpO1xuXG4gICAgY29uc3QgYWxsUG9ydHMgPSB0aGlzLmNvbW1vblBvcnRzRnJvbTMwMDB0bzYwMDAubWFwKHBvcnQgPT5cbiAgICAgIFBvcnQuZnJvbSh7XG4gICAgICAgIHBvcnQsXG4gICAgICAgIHNlcnZpY2VJZDogYG5vdCBhc3NpZ25hYmxlICgke3BvcnRzV2l0aERlc2NyaXB0aW9uW3BvcnRdfSlgLFxuICAgICAgICBzdGF0dXM6ICdhc3NpZ25lZC10YWtlbi1ieS1vcycsXG4gICAgICB9KSxcbiAgICApO1xuICAgIGF3YWl0IGRiLnNhdmUoYWxsUG9ydHMpO1xuICAgIGZvciAoY29uc3QgY29tbW9uUG9ydE9iaiBvZiBhbGxQb3J0cykge1xuICAgICAgdGhpcy5wb3J0c0NvbnRyb2xsZXIucG9ydHNDYWNoZS5zZXQoXG4gICAgICAgIGNvbW1vblBvcnRPYmouc2VydmljZUlkLFxuICAgICAgICBjb21tb25Qb3J0T2JqLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLmdldFJlcG9zaXRvcnkoUG9ydCk7XG4gICAgYXdhaXQgZGIucmVtb3ZlKFxuICAgICAgYXdhaXQgZGIuZmluZCh7XG4gICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgc3RhdHVzOiAnYXNzaWduZWQtdGFrZW4tYnktb3MnLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKTtcbiAgICBjb25zdCBhbGxQb3J0cyA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLnBvcnRzQ29udHJvbGxlci5wb3J0c0NhY2hlLnZhbHVlcygpLFxuICAgICkuZmlsdGVyKGYgPT4gZi5zdGF0dXMgPT09ICdhc3NpZ25lZC10YWtlbi1ieS1vcycpO1xuICAgIGZvciAoY29uc3QgcG9ydCBvZiBhbGxQb3J0cykge1xuICAgICAgdGhpcy5wb3J0c0NvbnRyb2xsZXIucG9ydHNDYWNoZS5kZWxldGUocG9ydC5zZXJ2aWNlSWQpO1xuICAgIH1cbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbWlncmF0aW9ucy8xNzM2MTk5NDg2NDcyX2FkZGluZ05vdEFzc2lnbmFibGVQb3J0cy50cyJdfQ==
@@ -11,19 +11,32 @@ let PortsContext_1736454437350_addFreePorts = class PortsContext_1736454437350_a
11
11
  async up(queryRunner) {
12
12
  const portsTableRepo = await queryRunner.manager.getRepository(Port);
13
13
  const addFreePortsInRange = _.range(this.portsController.START_PORT, this.portsController.END_PORT + 1);
14
+ const allTakeByOsPort = (await portsTableRepo.find({
15
+ where: {
16
+ status: 'assigned-taken-by-os',
17
+ },
18
+ })).map(f => f.port);
14
19
  const freePortsInRange = addFreePortsInRange.map(port => Port.from({
15
20
  port: port,
16
- serviceId: `free port ${port}`,
17
- }));
21
+ serviceId: Port.getTitleForFreePort(port),
22
+ status: 'unassigned',
23
+ })).filter(f => !allTakeByOsPort.includes(f.port));
18
24
  await portsTableRepo.save(freePortsInRange);
19
25
  for (const port of freePortsInRange) {
20
- this.portsController.assignedPorts.set(port.serviceId, port);
26
+ this.portsController.portsCache.set(port.serviceId, port);
21
27
  }
22
28
  }
23
29
  async down(queryRunner) {
24
- this.portsController.assignedPorts.clear();
25
- const portsTableRepo = await queryRunner.manager.getRepository(Port);
26
- portsTableRepo.clear();
30
+ const db = await queryRunner.manager.getRepository(Port);
31
+ await db.remove(await db.find({
32
+ where: {
33
+ status: 'unassigned',
34
+ },
35
+ }));
36
+ const allPorts = Array.from(this.portsController.portsCache.values()).filter(f => f.status === 'unassigned');
37
+ for (const port of allPorts) {
38
+ this.portsController.portsCache.delete(port.serviceId);
39
+ }
27
40
  }
28
41
  };
29
42
  PortsContext_1736454437350_addFreePorts = __decorate([
@@ -34,4 +47,4 @@ PortsContext_1736454437350_addFreePorts = __decorate([
34
47
  export { PortsContext_1736454437350_addFreePorts };
35
48
  ;
36
49
  ({}); // @--end-of-file-for-module=tnp-helpers migrations/1736454437350_addFreePorts.ts
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTczNjQ1NDQzNzM1MF9hZGRGcmVlUG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL21pZ3JhdGlvbnMvMTczNjQ1NDQzNzM1MF9hZGRGcmVlUG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBcUIsSUFBSSxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUszRCxJQUFNLHVDQUF1QyxHQUE3QyxNQUFNLHVDQUF3QyxTQUFRLElBQUksQ0FBQyxJQUFJO0tBQ25FLFNBQVM7SUFETDs7UUFFSyxvQkFBZSxHQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7SUE2QjNDLENBQUM7SUExQkMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUMvQixNQUFNLGNBQWMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FDbEMsQ0FBQztRQUNGLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3RELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixJQUFJLEVBQUUsSUFBSTtZQUNWLFNBQVMsRUFBRSxhQUFhLElBQUksRUFBRTtTQUMvQixDQUFDLENBQ0gsQ0FBQztRQUVGLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVDLEtBQUssTUFBTSxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFFakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNGLENBQUE7QUFoQ1ksdUNBQXVDO0lBSG5ELElBQUksQ0FBQyxTQUFTLENBQUM7UUFDZCxTQUFTLEVBQUUseUNBQXlDO0tBQ3JELENBQUM7R0FDVyx1Q0FBdUMsQ0FnQ25EOztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUZBQWlGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IFRhb24gfSBmcm9tICd0YW9uL3dlYnNxbCc7XG5pbXBvcnQgeyBRdWVyeVJ1bm5lciB9IGZyb20gJ3Rhb24tdHlwZW9ybS93ZWJzcWwnO1xuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBOb3RBc3NpZ25hYmxlUG9ydCwgUG9ydCwgUG9ydHNDb250cm9sbGVyIH0gZnJvbSAnLi4vbGliJztcblxuQFRhb24uTWlncmF0aW9uKHtcbiAgY2xhc3NOYW1lOiAnUG9ydHNDb250ZXh0XzE3MzY0NTQ0MzczNTBfYWRkRnJlZVBvcnRzJyxcbn0pXG5leHBvcnQgY2xhc3MgUG9ydHNDb250ZXh0XzE3MzY0NTQ0MzczNTBfYWRkRnJlZVBvcnRzIGV4dGVuZHMgVGFvbi5CYXNlXG4gIC5NaWdyYXRpb24ge1xuICBwcm90ZWN0ZWQgcG9ydHNDb250cm9sbGVyOiBQb3J0c0NvbnRyb2xsZXIgPVxuICAgIHRoaXMuaW5qZWN0Q29udHJvbGxlcihQb3J0c0NvbnRyb2xsZXIpO1xuXG5cbiAgYXN5bmMgdXAocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwb3J0c1RhYmxlUmVwbyA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShQb3J0KTtcbiAgICBjb25zdCBhZGRGcmVlUG9ydHNJblJhbmdlID0gXy5yYW5nZShcbiAgICAgIHRoaXMucG9ydHNDb250cm9sbGVyLlNUQVJUX1BPUlQsXG4gICAgICB0aGlzLnBvcnRzQ29udHJvbGxlci5FTkRfUE9SVCArIDEsXG4gICAgKTtcbiAgICBjb25zdCBmcmVlUG9ydHNJblJhbmdlID0gYWRkRnJlZVBvcnRzSW5SYW5nZS5tYXAocG9ydCA9PlxuICAgICAgUG9ydC5mcm9tKHtcbiAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgc2VydmljZUlkOiBgZnJlZSBwb3J0ICR7cG9ydH1gLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGF3YWl0IHBvcnRzVGFibGVSZXBvLnNhdmUoZnJlZVBvcnRzSW5SYW5nZSk7XG5cbiAgICBmb3IgKGNvbnN0IHBvcnQgb2YgZnJlZVBvcnRzSW5SYW5nZSkge1xuICAgICAgdGhpcy5wb3J0c0NvbnRyb2xsZXIuYXNzaWduZWRQb3J0cy5zZXQocG9ydC5zZXJ2aWNlSWQsIHBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRvd24ocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTxhbnk+IHtcblxuICAgIHRoaXMucG9ydHNDb250cm9sbGVyLmFzc2lnbmVkUG9ydHMuY2xlYXIoKTtcbiAgICBjb25zdCBwb3J0c1RhYmxlUmVwbyA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShQb3J0KTtcbiAgICBwb3J0c1RhYmxlUmVwby5jbGVhcigpO1xuICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBtaWdyYXRpb25zLzE3MzY0NTQ0MzczNTBfYWRkRnJlZVBvcnRzLnRzIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTczNjQ1NDQzNzM1MF9hZGRGcmVlUG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL21pZ3JhdGlvbnMvMTczNjQ1NDQzNzM1MF9hZGRGcmVlUG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBS3hDLElBQU0sdUNBQXVDLEdBQTdDLE1BQU0sdUNBQXdDLFNBQVEsSUFBSSxDQUFDLElBQUk7S0FDbkUsU0FBUztJQURMOztRQUVLLG9CQUFlLEdBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQWlEM0MsQ0FBQztJQS9DQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQy9CLE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckUsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUNsQyxDQUFDO1FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FDdEIsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ3hCLEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUUsc0JBQXNCO2FBQy9CO1NBQ0YsQ0FBQyxDQUNILENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5CLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ3RELElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixJQUFJLEVBQUUsSUFBSTtZQUNWLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1lBQ3pDLE1BQU0sRUFBRSxZQUFZO1NBQ3JCLENBQUMsQ0FDSCxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVqRCxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxLQUFLLE1BQU0sSUFBSSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQXdCO1FBRWpDLE1BQU0sRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUNiLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztZQUNaLEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUUsWUFBWTthQUNyQjtTQUNGLENBQUMsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQ3pDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsQ0FBQztRQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsQ0FBQztJQUNILENBQUM7Q0FDRixDQUFBO0FBcERZLHVDQUF1QztJQUhuRCxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2QsU0FBUyxFQUFFLHlDQUF5QztLQUNyRCxDQUFDO0dBQ1csdUNBQXVDLENBb0RuRDs7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlGQUFpRiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBUYW9uIH0gZnJvbSAndGFvbi93ZWJzcWwnO1xuaW1wb3J0IHsgUXVlcnlSdW5uZXIgfSBmcm9tICd0YW9uLXR5cGVvcm0vd2Vic3FsJztcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgUG9ydCwgUG9ydHNDb250cm9sbGVyIH0gZnJvbSAnLi4vbGliJztcblxuQFRhb24uTWlncmF0aW9uKHtcbiAgY2xhc3NOYW1lOiAnUG9ydHNDb250ZXh0XzE3MzY0NTQ0MzczNTBfYWRkRnJlZVBvcnRzJyxcbn0pXG5leHBvcnQgY2xhc3MgUG9ydHNDb250ZXh0XzE3MzY0NTQ0MzczNTBfYWRkRnJlZVBvcnRzIGV4dGVuZHMgVGFvbi5CYXNlXG4gIC5NaWdyYXRpb24ge1xuICBwcm90ZWN0ZWQgcG9ydHNDb250cm9sbGVyOiBQb3J0c0NvbnRyb2xsZXIgPVxuICAgIHRoaXMuaW5qZWN0Q29udHJvbGxlcihQb3J0c0NvbnRyb2xsZXIpO1xuXG4gIGFzeW5jIHVwKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcG9ydHNUYWJsZVJlcG8gPSBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLmdldFJlcG9zaXRvcnkoUG9ydCk7XG4gICAgY29uc3QgYWRkRnJlZVBvcnRzSW5SYW5nZSA9IF8ucmFuZ2UoXG4gICAgICB0aGlzLnBvcnRzQ29udHJvbGxlci5TVEFSVF9QT1JULFxuICAgICAgdGhpcy5wb3J0c0NvbnRyb2xsZXIuRU5EX1BPUlQgKyAxLFxuICAgICk7XG5cbiAgICBjb25zdCBhbGxUYWtlQnlPc1BvcnQgPSAoXG4gICAgICBhd2FpdCBwb3J0c1RhYmxlUmVwby5maW5kKHtcbiAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICBzdGF0dXM6ICdhc3NpZ25lZC10YWtlbi1ieS1vcycsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkubWFwKGYgPT4gZi5wb3J0KTtcblxuICAgIGNvbnN0IGZyZWVQb3J0c0luUmFuZ2UgPSBhZGRGcmVlUG9ydHNJblJhbmdlLm1hcChwb3J0ID0+XG4gICAgICBQb3J0LmZyb20oe1xuICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICBzZXJ2aWNlSWQ6IFBvcnQuZ2V0VGl0bGVGb3JGcmVlUG9ydChwb3J0KSxcbiAgICAgICAgc3RhdHVzOiAndW5hc3NpZ25lZCcsXG4gICAgICB9KSxcbiAgICApLmZpbHRlcihmID0+ICFhbGxUYWtlQnlPc1BvcnQuaW5jbHVkZXMoZi5wb3J0KSk7XG5cbiAgICBhd2FpdCBwb3J0c1RhYmxlUmVwby5zYXZlKGZyZWVQb3J0c0luUmFuZ2UpO1xuXG4gICAgZm9yIChjb25zdCBwb3J0IG9mIGZyZWVQb3J0c0luUmFuZ2UpIHtcbiAgICAgIHRoaXMucG9ydHNDb250cm9sbGVyLnBvcnRzQ2FjaGUuc2V0KHBvcnQuc2VydmljZUlkLCBwb3J0KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8YW55PiB7XG5cbiAgICBjb25zdCBkYiA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShQb3J0KTtcbiAgICBhd2FpdCBkYi5yZW1vdmUoXG4gICAgICBhd2FpdCBkYi5maW5kKHtcbiAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICBzdGF0dXM6ICd1bmFzc2lnbmVkJyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3QgYWxsUG9ydHMgPSBBcnJheS5mcm9tKFxuICAgICAgdGhpcy5wb3J0c0NvbnRyb2xsZXIucG9ydHNDYWNoZS52YWx1ZXMoKSxcbiAgICApLmZpbHRlcihmID0+IGYuc3RhdHVzID09PSAndW5hc3NpZ25lZCcpO1xuICAgIGZvciAoY29uc3QgcG9ydCBvZiBhbGxQb3J0cykge1xuICAgICAgdGhpcy5wb3J0c0NvbnRyb2xsZXIucG9ydHNDYWNoZS5kZWxldGUocG9ydC5zZXJ2aWNlSWQpO1xuICAgIH1cbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbWlncmF0aW9ucy8xNzM2NDU0NDM3MzUwX2FkZEZyZWVQb3J0cy50cyJdfQ==