@fastybird/smart-panel-backend 1.1.0-alpha.41 → 1.1.0-alpha.43

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 (101) hide show
  1. package/dist/app.module.js +1 -1
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/common/utils/cancellable-exec.utils.d.ts +5 -0
  4. package/dist/common/utils/cancellable-exec.utils.js +34 -0
  5. package/dist/common/utils/cancellable-exec.utils.js.map +1 -0
  6. package/dist/common/utils/remote-access-observation.utils.d.ts +11 -0
  7. package/dist/common/utils/remote-access-observation.utils.js +89 -0
  8. package/dist/common/utils/remote-access-observation.utils.js.map +1 -0
  9. package/dist/modules/remote-access/controllers/remote-access.controller.js +11 -6
  10. package/dist/modules/remote-access/controllers/remote-access.controller.js.map +1 -1
  11. package/dist/modules/remote-access/models/provider.model.d.ts +3 -0
  12. package/dist/modules/remote-access/models/provider.model.js +23 -0
  13. package/dist/modules/remote-access/models/provider.model.js.map +1 -1
  14. package/dist/modules/remote-access/models/status.model.d.ts +2 -0
  15. package/dist/modules/remote-access/models/status.model.js +18 -1
  16. package/dist/modules/remote-access/models/status.model.js.map +1 -1
  17. package/dist/modules/remote-access/models/urls.model.d.ts +2 -0
  18. package/dist/modules/remote-access/models/urls.model.js +17 -0
  19. package/dist/modules/remote-access/models/urls.model.js.map +1 -1
  20. package/dist/modules/remote-access/platforms/remote-access-provider.platform.d.ts +18 -1
  21. package/dist/modules/remote-access/remote-access.constants.d.ts +2 -1
  22. package/dist/modules/remote-access/remote-access.constants.js +2 -1
  23. package/dist/modules/remote-access/remote-access.constants.js.map +1 -1
  24. package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.d.ts +1 -0
  25. package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.js +4 -1
  26. package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.js.map +1 -1
  27. package/dist/modules/remote-access/services/remote-access-status.service.d.ts +40 -8
  28. package/dist/modules/remote-access/services/remote-access-status.service.js +314 -65
  29. package/dist/modules/remote-access/services/remote-access-status.service.js.map +1 -1
  30. package/dist/modules/remote-access/services/remote-access-url.service.d.ts +2 -2
  31. package/dist/modules/remote-access/services/remote-access-url.service.js +4 -2
  32. package/dist/modules/remote-access/services/remote-access-url.service.js.map +1 -1
  33. package/dist/modules/websocket/gateway/websocket.gateway.js +1 -0
  34. package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
  35. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.d.ts +5 -3
  36. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js +20 -8
  37. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js.map +1 -1
  38. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.d.ts +3 -5
  39. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js +11 -10
  40. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js.map +1 -1
  41. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.d.ts +2 -0
  42. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js +17 -0
  43. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js.map +1 -1
  44. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.d.ts +20 -2
  45. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js +105 -48
  46. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js.map +1 -1
  47. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.d.ts +13 -1
  48. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js +8 -2
  49. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js.map +1 -1
  50. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.d.ts +1 -1
  51. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js +12 -24
  52. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js.map +1 -1
  53. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.d.ts +1 -1
  54. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js +5 -2
  55. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js.map +1 -1
  56. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.d.ts +10 -5
  57. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js +105 -15
  58. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js.map +1 -1
  59. package/dist/plugins/remote-access-tailscale/controllers/status.controller.d.ts +5 -4
  60. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js +19 -9
  61. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js.map +1 -1
  62. package/dist/plugins/remote-access-tailscale/models/status.model.d.ts +16 -0
  63. package/dist/plugins/remote-access-tailscale/models/status.model.js +100 -1
  64. package/dist/plugins/remote-access-tailscale/models/status.model.js.map +1 -1
  65. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.d.ts +2 -0
  66. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js +3 -1
  67. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js.map +1 -1
  68. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.d.ts +17 -1
  69. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js +33 -1
  70. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js.map +1 -1
  71. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.d.ts +2 -2
  72. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js +1 -0
  73. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js.map +1 -1
  74. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js +2 -0
  75. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js.map +1 -1
  76. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.d.ts +8 -4
  77. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js +58 -14
  78. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js.map +1 -1
  79. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.d.ts +8 -3
  80. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js +175 -151
  81. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js.map +1 -1
  82. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.d.ts +51 -7
  83. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js +481 -101
  84. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js.map +1 -1
  85. package/dist/plugins/remote-access-tailscale/services/tailscale-operation-coordinator.service.d.ts +33 -0
  86. package/dist/plugins/remote-access-tailscale/services/tailscale-operation-coordinator.service.js +167 -0
  87. package/dist/plugins/remote-access-tailscale/services/tailscale-operation-coordinator.service.js.map +1 -0
  88. package/dist/plugins/remote-access-tailscale/services/tailscale-provider.service.d.ts +13 -1
  89. package/dist/plugins/remote-access-tailscale/services/tailscale-provider.service.js +8 -2
  90. package/dist/plugins/remote-access-tailscale/services/tailscale-provider.service.js.map +1 -1
  91. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.d.ts +1 -1
  92. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js +7 -6
  93. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js.map +1 -1
  94. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.d.ts +1 -3
  95. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +9 -11
  96. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
  97. package/dist/plugins/remote-access-tailscale/utils/tailscale-control.utils.d.ts +5 -0
  98. package/dist/plugins/remote-access-tailscale/utils/tailscale-control.utils.js +36 -0
  99. package/dist/plugins/remote-access-tailscale/utils/tailscale-control.utils.js.map +1 -0
  100. package/dist/tsconfig.build.tsbuildinfo +1 -1
  101. package/package.json +2 -2
@@ -1,22 +1,54 @@
1
+ import { EventEmitter2 } from '@nestjs/event-emitter';
1
2
  import { ConfigService } from '../../config/services/config.service';
2
3
  import { RemoteAccessProviderModel } from '../models/provider.model';
3
- import { RemoteAccessProviderStatus } from '../platforms/remote-access-provider.platform';
4
+ import { RemoteAccessAcceptedProviderStatus, RemoteAccessProviderSnapshot, RemoteAccessProviderStatus, RemoteAccessSnapshotVersion, RemoteAccessStatusReadOptions } from '../platforms/remote-access-provider.platform';
4
5
  import { RemoteAccessProviderRegistryService } from './remote-access-provider-registry.service';
5
6
  export declare class RemoteAccessStatusService {
6
7
  private readonly registry;
7
8
  private readonly configService;
9
+ private readonly eventEmitter?;
8
10
  private readonly logger;
11
+ private readonly epoch;
12
+ private revision;
9
13
  private readonly cache;
14
+ private readonly detailSnapshots;
15
+ private readonly generations;
16
+ private readonly observations;
17
+ private readonly configRefreshes;
18
+ private readonly configRefreshWorkers;
10
19
  private readonly warnedTypeMismatches;
11
- constructor(registry: RemoteAccessProviderRegistryService, configService: ConfigService);
20
+ constructor(registry: RemoteAccessProviderRegistryService, configService: ConfigService, eventEmitter?: EventEmitter2);
12
21
  hasProvider(type: string): boolean;
13
- onProviderStatus(status: RemoteAccessProviderStatus): void;
14
- getCachedStatuses(): RemoteAccessProviderStatus[];
15
- getAggregatedStatuses(): Promise<RemoteAccessProviderModel[]>;
16
- getProviderStatus(type: string): Promise<RemoteAccessProviderModel>;
22
+ getVersion(): RemoteAccessSnapshotVersion;
23
+ onProviderStatus(observation: RemoteAccessProviderStatus | RemoteAccessProviderSnapshot): void;
24
+ onConfigUpdated(event: {
25
+ source: string;
26
+ type: 'module' | 'plugin';
27
+ }): void;
28
+ getCachedStatuses(): RemoteAccessAcceptedProviderStatus[];
29
+ getCachedProviderStatus(type: string): RemoteAccessAcceptedProviderStatus | undefined;
30
+ getCachedProviderModels(): RemoteAccessProviderModel[];
31
+ getAggregatedStatuses(options?: RemoteAccessStatusReadOptions): Promise<RemoteAccessProviderModel[]>;
32
+ getProviderStatus(type: string, options?: RemoteAccessStatusReadOptions): Promise<RemoteAccessProviderModel>;
33
+ getCachedProviderSnapshot<T = unknown>(type: string): {
34
+ status: RemoteAccessProviderModel;
35
+ metadata?: T;
36
+ } | undefined;
37
+ getProviderSnapshot<T = unknown>(type: string, options?: RemoteAccessStatusReadOptions): Promise<{
38
+ status: RemoteAccessProviderModel;
39
+ metadata?: T;
40
+ }>;
17
41
  private isProviderEnabled;
18
42
  private pollProvider;
43
+ private scheduleConfigRefresh;
44
+ private startConfigRefreshWorker;
45
+ private refreshAfterObservationIdle;
46
+ private finishConfigRefresh;
47
+ private observe;
48
+ private invalidateObservation;
49
+ private prune;
50
+ private accept;
51
+ private toModel;
19
52
  private normalizeStatusType;
20
- private fetchStatus;
21
- private raceWithTimeout;
53
+ private errorStatus;
22
54
  }
@@ -8,12 +8,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.RemoteAccessStatusService = void 0;
16
+ const crypto_1 = require("crypto");
13
17
  const common_1 = require("@nestjs/common");
14
18
  const event_emitter_1 = require("@nestjs/event-emitter");
15
19
  const logger_1 = require("../../../common/logger");
16
20
  const transform_utils_1 = require("../../../common/utils/transform.utils");
21
+ const config_constants_1 = require("../../config/config.constants");
17
22
  const config_service_1 = require("../../config/services/config.service");
18
23
  const provider_model_1 = require("../models/provider.model");
19
24
  const remote_access_constants_1 = require("../remote-access.constants");
@@ -21,55 +26,133 @@ const remote_access_exceptions_1 = require("../remote-access.exceptions");
21
26
  const remote_access_provider_registry_service_1 = require("./remote-access-provider-registry.service");
22
27
  class ProviderStatusTimeoutError extends Error {
23
28
  }
29
+ const freezeSnapshot = (value) => {
30
+ if (value !== null && typeof value === 'object') {
31
+ for (const nested of Object.values(value)) {
32
+ freezeSnapshot(nested);
33
+ }
34
+ Object.freeze(value);
35
+ }
36
+ return value;
37
+ };
24
38
  let RemoteAccessStatusService = class RemoteAccessStatusService {
25
- constructor(registry, configService) {
39
+ constructor(registry, configService, eventEmitter) {
26
40
  this.registry = registry;
27
41
  this.configService = configService;
42
+ this.eventEmitter = eventEmitter;
28
43
  this.logger = (0, logger_1.createExtensionLogger)(remote_access_constants_1.REMOTE_ACCESS_MODULE_NAME, 'RemoteAccessStatusService');
44
+ this.epoch = (0, crypto_1.randomUUID)();
45
+ this.revision = 0;
29
46
  this.cache = new Map();
47
+ this.detailSnapshots = new Map();
48
+ this.generations = new Map();
49
+ this.observations = new Map();
50
+ this.configRefreshes = new Map();
51
+ this.configRefreshWorkers = new Map();
30
52
  this.warnedTypeMismatches = new Set();
31
53
  }
32
54
  hasProvider(type) {
33
55
  return this.registry.get(type) !== null;
34
56
  }
35
- onProviderStatus(status) {
57
+ getVersion() {
58
+ this.getCachedStatuses();
59
+ return { epoch: this.epoch, revision: this.revision };
60
+ }
61
+ onProviderStatus(observation) {
62
+ const { status, metadata } = 'status' in observation ? observation : { status: observation, metadata: undefined };
36
63
  const provider = this.registry.get(status.type);
37
64
  if (!provider) {
38
65
  this.logger.debug(`Ignoring a Provider.Status event for '${status.type}', which is not a registered provider type.`);
39
66
  return;
40
67
  }
41
- if (!this.isProviderEnabled(provider.type)) {
42
- this.cache.delete(provider.type);
43
- this.logger.debug(`Ignoring a Provider.Status event for '${provider.type}', whose plugin is disabled.`);
44
- return;
68
+ this.invalidateObservation(provider.type);
69
+ const accepted = this.accept(provider, status, metadata);
70
+ const refresh = this.configRefreshes.get(provider.type);
71
+ if (refresh)
72
+ this.finishConfigRefresh(provider.type, refresh, accepted);
73
+ }
74
+ onConfigUpdated(event) {
75
+ if (event.type === 'plugin' && this.hasProvider(event.source)) {
76
+ this.invalidateObservation(event.source);
77
+ const provider = this.registry.get(event.source);
78
+ if (provider) {
79
+ if (!this.isProviderEnabled(provider.type)) {
80
+ const status = this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
81
+ const refresh = this.configRefreshes.get(provider.type);
82
+ if (refresh)
83
+ this.finishConfigRefresh(provider.type, refresh, status);
84
+ }
85
+ else {
86
+ this.scheduleConfigRefresh(provider);
87
+ }
88
+ }
89
+ }
90
+ else if (event.type === 'module' && event.source === remote_access_constants_1.REMOTE_ACCESS_MODULE_NAME) {
91
+ this.revision++;
45
92
  }
46
- this.cache.set(provider.type, this.normalizeStatusType(provider, status));
47
93
  }
48
94
  getCachedStatuses() {
49
- for (const type of Array.from(this.cache.keys())) {
95
+ for (const type of this.cache.keys()) {
50
96
  if (!this.isProviderEnabled(type)) {
51
- this.cache.delete(type);
97
+ this.invalidateObservation(type);
98
+ const provider = this.registry.get(type);
99
+ if (provider) {
100
+ this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
101
+ }
102
+ else {
103
+ this.prune(type);
104
+ }
52
105
  }
53
106
  }
54
107
  return Array.from(this.cache.values());
55
108
  }
56
- async getAggregatedStatuses() {
57
- const enabledProviders = this.registry.getAll().filter((provider) => {
58
- if (this.isProviderEnabled(provider.type)) {
59
- return true;
60
- }
61
- this.cache.delete(provider.type);
62
- return false;
109
+ getCachedProviderStatus(type) {
110
+ this.getCachedStatuses();
111
+ return this.cache.get(type);
112
+ }
113
+ getCachedProviderModels() {
114
+ this.getCachedStatuses();
115
+ return this.registry.getAll().flatMap((provider) => {
116
+ const status = this.cache.get(provider.type);
117
+ return status ? [this.toModel(provider, status)] : [];
63
118
  });
64
- const statuses = await Promise.all(enabledProviders.map((provider) => this.pollProvider(provider)));
65
- return statuses.filter((status) => this.isProviderEnabled(status.type));
66
119
  }
67
- async getProviderStatus(type) {
120
+ async getAggregatedStatuses(options = {}) {
121
+ const enabled = this.registry.getAll().filter((provider) => this.isProviderEnabled(provider.type));
122
+ await Promise.all(enabled.map((provider) => this.pollProvider(provider, options)));
123
+ return this.getCachedProviderModels();
124
+ }
125
+ async getProviderStatus(type, options = {}) {
68
126
  const provider = this.registry.get(type);
69
127
  if (!provider) {
70
128
  throw new remote_access_exceptions_1.RemoteAccessProviderNotFoundException(`Remote access provider '${type}' is not registered.`);
71
129
  }
72
- return this.pollProvider(provider);
130
+ return this.pollProvider(provider, options);
131
+ }
132
+ getCachedProviderSnapshot(type) {
133
+ const provider = this.registry.get(type);
134
+ let snapshot = this.detailSnapshots.get(type);
135
+ if (provider && snapshot?.enabled && !this.isProviderEnabled(type)) {
136
+ this.invalidateObservation(type);
137
+ this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
138
+ snapshot = this.detailSnapshots.get(type);
139
+ }
140
+ if (!provider || !snapshot) {
141
+ return undefined;
142
+ }
143
+ return {
144
+ status: this.toModel(provider, snapshot.status),
145
+ metadata: structuredClone(snapshot.metadata),
146
+ };
147
+ }
148
+ async getProviderSnapshot(type, options = {}) {
149
+ const provider = this.registry.get(type);
150
+ if (!provider) {
151
+ throw new remote_access_exceptions_1.RemoteAccessProviderNotFoundException(`Remote access provider '${type}' is not registered.`);
152
+ }
153
+ const result = await (this.configRefreshes.get(type)?.result ??
154
+ (this.observations.get(type) ?? this.observe(provider, options)).result);
155
+ return this.getCachedProviderSnapshot(type) ?? { status: this.toModel(provider, result) };
73
156
  }
74
157
  isProviderEnabled(type) {
75
158
  try {
@@ -79,16 +162,201 @@ let RemoteAccessStatusService = class RemoteAccessStatusService {
79
162
  return false;
80
163
  }
81
164
  }
82
- async pollProvider(provider) {
83
- const status = this.normalizeStatusType(provider, await this.fetchStatus(provider));
84
- if (this.isProviderEnabled(provider.type)) {
85
- this.cache.set(provider.type, status);
165
+ async pollProvider(provider, options) {
166
+ if (!this.isProviderEnabled(provider.type)) {
167
+ this.invalidateObservation(provider.type);
168
+ this.prune(provider.type);
169
+ return this.toModel(provider, {
170
+ ...this.errorStatus(provider, 'Provider plugin is disabled.'),
171
+ enabled: false,
172
+ ...this.getVersion(),
173
+ });
174
+ }
175
+ const result = await (this.configRefreshes.get(provider.type)?.result ??
176
+ (this.observations.get(provider.type) ?? this.observe(provider, options)).result);
177
+ return this.toModel(provider, this.getCachedProviderStatus(provider.type) ?? result);
178
+ }
179
+ scheduleConfigRefresh(provider) {
180
+ const existing = this.configRefreshes.get(provider.type);
181
+ if (existing) {
182
+ existing.generation++;
183
+ return;
184
+ }
185
+ let resolve;
186
+ const result = new Promise((done) => {
187
+ resolve = done;
188
+ });
189
+ const refresh = {
190
+ generation: 0,
191
+ result,
192
+ resolve,
193
+ timer: setTimeout(() => {
194
+ if (this.configRefreshes.get(provider.type) !== refresh)
195
+ return;
196
+ this.invalidateObservation(provider.type);
197
+ if (this.configRefreshes.get(provider.type) !== refresh)
198
+ return;
199
+ const status = this.accept(provider, this.errorStatus(provider, `Provider did not report a fresh configuration status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`));
200
+ resolve(status);
201
+ }, remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS),
202
+ };
203
+ this.configRefreshes.set(provider.type, refresh);
204
+ this.startConfigRefreshWorker(provider);
205
+ }
206
+ startConfigRefreshWorker(provider) {
207
+ const refresh = this.configRefreshes.get(provider.type);
208
+ if (!refresh || this.configRefreshWorkers.has(provider.type))
209
+ return;
210
+ const worker = this.refreshAfterObservationIdle(provider, refresh)
211
+ .catch(() => {
212
+ if (this.configRefreshes.get(provider.type) !== refresh)
213
+ return;
214
+ const status = this.accept(provider, this.errorStatus(provider, 'Failed to retrieve fresh configuration status.'));
215
+ this.finishConfigRefresh(provider.type, refresh, status);
216
+ })
217
+ .finally(() => {
218
+ this.configRefreshWorkers.delete(provider.type);
219
+ this.startConfigRefreshWorker(provider);
220
+ });
221
+ this.configRefreshWorkers.set(provider.type, worker);
222
+ }
223
+ async refreshAfterObservationIdle(provider, refresh) {
224
+ while (this.configRefreshes.get(provider.type) === refresh) {
225
+ await this.observations.get(provider.type)?.settled;
226
+ await provider.awaitObservationIdle?.();
227
+ if (this.configRefreshes.get(provider.type) !== refresh)
228
+ return;
229
+ if (!this.isProviderEnabled(provider.type)) {
230
+ const status = this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
231
+ this.finishConfigRefresh(provider.type, refresh, status);
232
+ return;
233
+ }
234
+ const generation = refresh.generation;
235
+ const observation = this.observations.get(provider.type) ?? this.observe(provider, { fresh: true });
236
+ const status = await observation.result;
237
+ if (generation === refresh.generation) {
238
+ this.finishConfigRefresh(provider.type, refresh, status);
239
+ return;
240
+ }
86
241
  }
87
- return (0, transform_utils_1.toInstance)(provider_model_1.RemoteAccessProviderModel, {
242
+ }
243
+ finishConfigRefresh(type, refresh, status) {
244
+ if (this.configRefreshes.get(type) !== refresh)
245
+ return;
246
+ clearTimeout(refresh.timer);
247
+ this.configRefreshes.delete(type);
248
+ refresh.resolve(status);
249
+ }
250
+ observe(provider, options) {
251
+ const generation = this.generations.get(provider.type) ?? 0;
252
+ const controller = new AbortController();
253
+ let expired = false;
254
+ let timer;
255
+ let work;
256
+ try {
257
+ const readOptions = { fresh: options.fresh, signal: controller.signal };
258
+ work = provider.getSnapshot
259
+ ? provider.getSnapshot(readOptions)
260
+ : provider.getStatus(readOptions).then((status) => ({ status }));
261
+ }
262
+ catch (error) {
263
+ work = Promise.reject(error instanceof Error ? error : new Error('Provider observation failed.'));
264
+ }
265
+ const deadline = new Promise((_resolve, reject) => {
266
+ timer = setTimeout(() => {
267
+ expired = true;
268
+ reject(new ProviderStatusTimeoutError());
269
+ controller.abort();
270
+ }, remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS);
271
+ });
272
+ const result = Promise.race([work, deadline])
273
+ .catch((error) => {
274
+ const message = error instanceof ProviderStatusTimeoutError
275
+ ? `Provider did not report a status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`
276
+ : 'Failed to retrieve status from this provider.';
277
+ this.logger.error(`Failed to retrieve status from provider '${provider.type}'`, { message });
278
+ return { status: this.errorStatus(provider, message) };
279
+ })
280
+ .then(({ status, metadata }) => {
281
+ clearTimeout(timer);
282
+ if (generation !== (this.generations.get(provider.type) ?? 0)) {
283
+ return (this.detailSnapshots.get(provider.type)?.status ?? {
284
+ ...this.errorStatus(provider, 'Provider observation was superseded.'),
285
+ enabled: this.isProviderEnabled(provider.type),
286
+ ...this.getVersion(),
287
+ });
288
+ }
289
+ return this.accept(provider, status, metadata);
290
+ });
291
+ let resolveSettled;
292
+ const settled = new Promise((resolve) => {
293
+ resolveSettled = resolve;
294
+ });
295
+ const observation = { controller, result, settled };
296
+ this.observations.set(provider.type, observation);
297
+ let workSettled = false;
298
+ let resultSettled = false;
299
+ const release = () => {
300
+ if (workSettled && resultSettled && this.observations.get(provider.type) === observation) {
301
+ this.observations.delete(provider.type);
302
+ resolveSettled();
303
+ }
304
+ };
305
+ const settleWork = () => {
306
+ workSettled = true;
307
+ if (!expired) {
308
+ clearTimeout(timer);
309
+ }
310
+ release();
311
+ };
312
+ const settleResult = () => {
313
+ resultSettled = true;
314
+ release();
315
+ };
316
+ void work.then(settleWork, settleWork);
317
+ void result.then(settleResult, settleResult);
318
+ return observation;
319
+ }
320
+ invalidateObservation(type) {
321
+ this.generations.set(type, (this.generations.get(type) ?? 0) + 1);
322
+ this.observations.get(type)?.controller.abort();
323
+ }
324
+ prune(type) {
325
+ if (this.cache.delete(type)) {
326
+ this.revision++;
327
+ }
328
+ }
329
+ accept(provider, status, metadata) {
330
+ const enabled = this.isProviderEnabled(provider.type);
331
+ const accepted = freezeSnapshot(structuredClone({
332
+ ...this.normalizeStatusType(provider, status),
333
+ ...(!enabled ? { state: 'disconnected', endpoints: [], proxyAddresses: [] } : {}),
334
+ enabled,
335
+ epoch: this.epoch,
336
+ revision: ++this.revision,
337
+ }));
338
+ this.detailSnapshots.set(provider.type, {
339
+ status: accepted,
340
+ metadata: freezeSnapshot(structuredClone(metadata)),
341
+ enabled,
342
+ });
343
+ if (enabled) {
344
+ this.cache.set(provider.type, accepted);
345
+ }
346
+ else {
347
+ this.cache.delete(provider.type);
348
+ }
349
+ this.eventEmitter?.emit(remote_access_constants_1.EventType.PROVIDER_STATUS, accepted);
350
+ return accepted;
351
+ }
352
+ toModel(provider, status) {
353
+ const model = (0, transform_utils_1.toInstance)(provider_model_1.RemoteAccessProviderModel, {
88
354
  ...status,
89
355
  kind: provider.kind,
90
356
  capabilities: provider.capabilities,
91
357
  });
358
+ model.details = { ...status.details };
359
+ return model;
92
360
  }
93
361
  normalizeStatusType(provider, status) {
94
362
  if (status.type === provider.type) {
@@ -100,56 +368,37 @@ let RemoteAccessStatusService = class RemoteAccessStatusService {
100
368
  }
101
369
  return { ...status, type: provider.type };
102
370
  }
103
- async fetchStatus(provider) {
104
- try {
105
- return await this.raceWithTimeout(provider);
106
- }
107
- catch (error) {
108
- const timedOut = error instanceof ProviderStatusTimeoutError;
109
- const err = error instanceof Error ? error : new Error('Unknown remote access provider status error');
110
- this.logger.error(`Failed to retrieve status from provider '${provider.type}'`, {
111
- message: err.message,
112
- stack: err.stack,
113
- });
114
- return {
115
- type: provider.type,
116
- state: 'error',
117
- endpoints: [],
118
- message: timedOut
119
- ? `Provider did not report a status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`
120
- : 'Failed to retrieve status from this provider.',
121
- details: {},
122
- proxyAddresses: [],
123
- advisories: [],
124
- updatedAt: new Date().toISOString(),
125
- };
126
- }
127
- }
128
- raceWithTimeout(provider) {
129
- return new Promise((resolve, reject) => {
130
- const timer = setTimeout(() => {
131
- reject(new ProviderStatusTimeoutError(`Provider '${provider.type}' did not report a status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`));
132
- }, remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS);
133
- provider.getStatus().then((status) => {
134
- clearTimeout(timer);
135
- resolve(status);
136
- }, (error) => {
137
- clearTimeout(timer);
138
- reject(error);
139
- });
140
- });
371
+ errorStatus(provider, message) {
372
+ return {
373
+ type: provider.type,
374
+ state: 'error',
375
+ endpoints: [],
376
+ message,
377
+ details: {},
378
+ proxyAddresses: [],
379
+ advisories: [],
380
+ updatedAt: new Date().toISOString(),
381
+ };
141
382
  }
142
383
  };
143
384
  exports.RemoteAccessStatusService = RemoteAccessStatusService;
144
385
  __decorate([
145
- (0, event_emitter_1.OnEvent)(remote_access_constants_1.EventType.PROVIDER_STATUS),
386
+ (0, event_emitter_1.OnEvent)(remote_access_constants_1.EventType.PROVIDER_OBSERVATION),
146
387
  __metadata("design:type", Function),
147
388
  __metadata("design:paramtypes", [Object]),
148
389
  __metadata("design:returntype", void 0)
149
390
  ], RemoteAccessStatusService.prototype, "onProviderStatus", null);
391
+ __decorate([
392
+ (0, event_emitter_1.OnEvent)(config_constants_1.EventType.CONFIG_UPDATED),
393
+ __metadata("design:type", Function),
394
+ __metadata("design:paramtypes", [Object]),
395
+ __metadata("design:returntype", void 0)
396
+ ], RemoteAccessStatusService.prototype, "onConfigUpdated", null);
150
397
  exports.RemoteAccessStatusService = RemoteAccessStatusService = __decorate([
151
398
  (0, common_1.Injectable)(),
399
+ __param(2, (0, common_1.Optional)()),
152
400
  __metadata("design:paramtypes", [remote_access_provider_registry_service_1.RemoteAccessProviderRegistryService,
153
- config_service_1.ConfigService])
401
+ config_service_1.ConfigService,
402
+ event_emitter_1.EventEmitter2])
154
403
  ], RemoteAccessStatusService);
155
404
  //# sourceMappingURL=remote-access-status.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-access-status.service.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/services/remote-access-status.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-access-status.service.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/services/remote-access-status.service.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { ConfigService as NestConfigService } from '@nestjs/config';
2
2
  import { EventEmitter2 } from '@nestjs/event-emitter';
3
3
  import { ConfigService } from '../../config/services/config.service';
4
- import { RemoteAccessEndpoint } from '../platforms/remote-access-provider.platform';
4
+ import { RemoteAccessEndpoint, RemoteAccessSnapshotVersion } from '../platforms/remote-access-provider.platform';
5
5
  import { RemoteAccessStatusService } from './remote-access-status.service';
6
- export interface RemoteAccessUrlsSnapshot {
6
+ export interface RemoteAccessUrlsSnapshot extends RemoteAccessSnapshotVersion {
7
7
  internal: string;
8
8
  external: RemoteAccessEndpoint[];
9
9
  primaryExternalUrl: string | null;
@@ -39,10 +39,10 @@ let RemoteAccessUrlService = class RemoteAccessUrlService {
39
39
  const config = this.configService.getModuleConfig(remote_access_constants_1.REMOTE_ACCESS_MODULE_NAME);
40
40
  const internal = this.resolveInternalUrl(config);
41
41
  if (!config.enabled) {
42
- return { internal, external: [], primaryExternalUrl: null };
42
+ return { internal, external: [], primaryExternalUrl: null, ...this.statusService.getVersion() };
43
43
  }
44
44
  const external = this.rank(this.collectExternalEndpoints(config));
45
- return { internal, external, primaryExternalUrl: external[0]?.url ?? null };
45
+ return { internal, external, primaryExternalUrl: external[0]?.url ?? null, ...this.statusService.getVersion() };
46
46
  }
47
47
  getUrl(options = {}) {
48
48
  const { requireHttps = false, requirePublic = false, allowInternal = true, allowExternal = true, preferExternal = false, } = options;
@@ -116,6 +116,8 @@ let RemoteAccessUrlService = class RemoteAccessUrlService {
116
116
  }
117
117
  this.lastSnapshot = next;
118
118
  this.eventEmitter.emit(remote_access_constants_1.EventType.URLS_CHANGED, {
119
+ epoch: next.epoch,
120
+ revision: next.revision,
119
121
  internal: next.internal,
120
122
  external: next.external,
121
123
  primaryExternalUrl: next.primaryExternalUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"remote-access-url.service.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/services/remote-access-url.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-access-url.service.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/services/remote-access-url.service.ts"],"names":[],"mappings":"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"}
@@ -311,6 +311,7 @@ WebsocketGateway.INTERNAL_EVENT_PREFIXES = [
311
311
  'shelly-ng:',
312
312
  'HaMdns.',
313
313
  'ha.adapter.',
314
+ 'RemoteAccessModule.Provider.Observation',
314
315
  ];
315
316
  WebsocketGateway.DISPLAY_TARGETED_EVENT_PREFIXES = [
316
317
  'SystemModule.Display.',