@serve.zone/dcrouter 13.15.0 → 13.16.0

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 (46) hide show
  1. package/dist_serve/bundle.js +510 -517
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/classes.dcrouter.d.ts +3 -6
  4. package/dist_ts/classes.dcrouter.js +39 -53
  5. package/dist_ts/config/classes.reference-resolver.d.ts +8 -8
  6. package/dist_ts/config/classes.reference-resolver.js +6 -6
  7. package/dist_ts/config/classes.route-config-manager.d.ts +13 -13
  8. package/dist_ts/config/classes.route-config-manager.js +117 -144
  9. package/dist_ts/config/classes.target-profile-manager.d.ts +2 -2
  10. package/dist_ts/config/classes.target-profile-manager.js +7 -18
  11. package/dist_ts/db/documents/{classes.stored-route.doc.d.ts → classes.route.doc.d.ts} +6 -3
  12. package/dist_ts/db/documents/{classes.stored-route.doc.js → classes.route.doc.js} +21 -9
  13. package/dist_ts/db/documents/index.d.ts +1 -2
  14. package/dist_ts/db/documents/index.js +2 -3
  15. package/dist_ts/monitoring/classes.metricsmanager.js +86 -8
  16. package/dist_ts/opsserver/handlers/network-target.handler.js +3 -3
  17. package/dist_ts/opsserver/handlers/route-management.handler.js +3 -23
  18. package/dist_ts/opsserver/handlers/source-profile.handler.js +3 -3
  19. package/dist_ts_apiclient/classes.route.d.ts +2 -5
  20. package/dist_ts_apiclient/classes.route.js +13 -42
  21. package/dist_ts_interfaces/data/route-management.d.ts +8 -17
  22. package/dist_ts_interfaces/requests/route-management.d.ts +6 -37
  23. package/dist_ts_migrations/index.js +23 -1
  24. package/dist_ts_web/00_commitinfo_data.js +1 -1
  25. package/dist_ts_web/appstate.d.ts +0 -5
  26. package/dist_ts_web/appstate.js +1 -38
  27. package/dist_ts_web/elements/network/ops-view-routes.js +60 -110
  28. package/package.json +1 -1
  29. package/ts/00_commitinfo_data.ts +1 -1
  30. package/ts/classes.dcrouter.ts +45 -55
  31. package/ts/config/classes.reference-resolver.ts +13 -13
  32. package/ts/config/classes.route-config-manager.ts +128 -146
  33. package/ts/config/classes.target-profile-manager.ts +7 -20
  34. package/ts/db/documents/{classes.stored-route.doc.ts → classes.route.doc.ts} +16 -5
  35. package/ts/db/documents/index.ts +1 -2
  36. package/ts/monitoring/classes.metricsmanager.ts +80 -7
  37. package/ts/opsserver/handlers/network-target.handler.ts +2 -2
  38. package/ts/opsserver/handlers/route-management.handler.ts +2 -34
  39. package/ts/opsserver/handlers/source-profile.handler.ts +2 -2
  40. package/ts_apiclient/classes.route.ts +12 -49
  41. package/ts_web/00_commitinfo_data.ts +1 -1
  42. package/ts_web/appstate.ts +0 -52
  43. package/ts_web/elements/network/ops-view-routes.ts +65 -123
  44. package/dist_ts/db/documents/classes.route-override.doc.d.ts +0 -10
  45. package/dist_ts/db/documents/classes.route-override.doc.js +0 -91
  46. package/ts/db/documents/classes.route-override.doc.ts +0 -32
@@ -4,10 +4,9 @@ import type { DcRouterApiClient } from './classes.dcrouterapiclient.js';
4
4
  export declare class Route {
5
5
  private clientRef;
6
6
  routeConfig: IRouteConfig;
7
- source: 'hardcoded' | 'programmatic';
7
+ id: string;
8
8
  enabled: boolean;
9
- overridden: boolean;
10
- storedRouteId?: string;
9
+ origin: 'config' | 'email' | 'dns' | 'api';
11
10
  createdAt?: number;
12
11
  updatedAt?: number;
13
12
  get name(): string;
@@ -15,8 +14,6 @@ export declare class Route {
15
14
  update(changes: Partial<IRouteConfig>): Promise<void>;
16
15
  delete(): Promise<void>;
17
16
  toggle(enabled: boolean): Promise<void>;
18
- setOverride(enabled: boolean): Promise<void>;
19
- removeOverride(): Promise<void>;
20
17
  }
21
18
  export declare class RouteBuilder {
22
19
  private clientRef;
@@ -3,10 +3,9 @@ export class Route {
3
3
  clientRef;
4
4
  // Data from IMergedRoute
5
5
  routeConfig;
6
- source;
6
+ id;
7
7
  enabled;
8
- overridden;
9
- storedRouteId;
8
+ origin;
10
9
  createdAt;
11
10
  updatedAt;
12
11
  // Convenience accessors
@@ -16,56 +15,31 @@ export class Route {
16
15
  constructor(clientRef, data) {
17
16
  this.clientRef = clientRef;
18
17
  this.routeConfig = data.route;
19
- this.source = data.source;
18
+ this.id = data.id;
20
19
  this.enabled = data.enabled;
21
- this.overridden = data.overridden;
22
- this.storedRouteId = data.storedRouteId;
20
+ this.origin = data.origin;
23
21
  this.createdAt = data.createdAt;
24
22
  this.updatedAt = data.updatedAt;
25
23
  }
26
24
  async update(changes) {
27
- if (!this.storedRouteId) {
28
- throw new Error('Cannot update a hardcoded route. Use setOverride() instead.');
29
- }
30
- const response = await this.clientRef.request('updateRoute', this.clientRef.buildRequestPayload({ id: this.storedRouteId, route: changes }));
25
+ const response = await this.clientRef.request('updateRoute', this.clientRef.buildRequestPayload({ id: this.id, route: changes }));
31
26
  if (!response.success) {
32
27
  throw new Error(response.message || 'Failed to update route');
33
28
  }
34
29
  }
35
30
  async delete() {
36
- if (!this.storedRouteId) {
37
- throw new Error('Cannot delete a hardcoded route. Use setOverride() instead.');
38
- }
39
- const response = await this.clientRef.request('deleteRoute', this.clientRef.buildRequestPayload({ id: this.storedRouteId }));
31
+ const response = await this.clientRef.request('deleteRoute', this.clientRef.buildRequestPayload({ id: this.id }));
40
32
  if (!response.success) {
41
33
  throw new Error(response.message || 'Failed to delete route');
42
34
  }
43
35
  }
44
36
  async toggle(enabled) {
45
- if (!this.storedRouteId) {
46
- throw new Error('Cannot toggle a hardcoded route. Use setOverride() instead.');
47
- }
48
- const response = await this.clientRef.request('toggleRoute', this.clientRef.buildRequestPayload({ id: this.storedRouteId, enabled }));
37
+ const response = await this.clientRef.request('toggleRoute', this.clientRef.buildRequestPayload({ id: this.id, enabled }));
49
38
  if (!response.success) {
50
39
  throw new Error(response.message || 'Failed to toggle route');
51
40
  }
52
41
  this.enabled = enabled;
53
42
  }
54
- async setOverride(enabled) {
55
- const response = await this.clientRef.request('setRouteOverride', this.clientRef.buildRequestPayload({ routeName: this.name, enabled }));
56
- if (!response.success) {
57
- throw new Error(response.message || 'Failed to set route override');
58
- }
59
- this.overridden = true;
60
- this.enabled = enabled;
61
- }
62
- async removeOverride() {
63
- const response = await this.clientRef.request('removeRouteOverride', this.clientRef.buildRequestPayload({ routeName: this.name }));
64
- if (!response.success) {
65
- throw new Error(response.message || 'Failed to remove route override');
66
- }
67
- this.overridden = false;
68
- }
69
43
  }
70
44
  export class RouteBuilder {
71
45
  clientRef;
@@ -106,19 +80,17 @@ export class RouteBuilder {
106
80
  throw new Error(response.message || 'Failed to create route');
107
81
  }
108
82
  // Return a Route instance by re-fetching the list
109
- // The created route is programmatic, so we find it by storedRouteId
110
83
  const { routes } = await new RouteManager(this.clientRef).list();
111
- const created = routes.find((r) => r.storedRouteId === response.storedRouteId);
84
+ const created = routes.find((r) => r.id === response.routeId);
112
85
  if (created) {
113
86
  return created;
114
87
  }
115
88
  // Fallback: construct from known data
116
89
  return new Route(this.clientRef, {
117
90
  route: this.routeConfig,
118
- source: 'programmatic',
91
+ id: response.routeId || '',
119
92
  enabled: this.isEnabled,
120
- overridden: false,
121
- storedRouteId: response.storedRouteId,
93
+ origin: 'api',
122
94
  });
123
95
  }
124
96
  }
@@ -141,14 +113,13 @@ export class RouteManager {
141
113
  }
142
114
  return new Route(this.clientRef, {
143
115
  route: routeConfig,
144
- source: 'programmatic',
116
+ id: response.routeId || '',
145
117
  enabled: enabled ?? true,
146
- overridden: false,
147
- storedRouteId: response.storedRouteId,
118
+ origin: 'api',
148
119
  });
149
120
  }
150
121
  build() {
151
122
  return new RouteBuilder(this.clientRef);
152
123
  }
153
124
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2FwaWNsaWVudC9jbGFzc2VzLnJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFJeEQsTUFBTSxPQUFPLEtBQUs7SUFDUixTQUFTLENBQW9CO0lBRXJDLHlCQUF5QjtJQUNsQixXQUFXLENBQWU7SUFDMUIsTUFBTSxDQUErQjtJQUNyQyxPQUFPLENBQVU7SUFDakIsVUFBVSxDQUFVO0lBQ3BCLGFBQWEsQ0FBVTtJQUN2QixTQUFTLENBQVU7SUFDbkIsU0FBUyxDQUFVO0lBRTFCLHdCQUF3QjtJQUN4QixJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWSxTQUE0QixFQUFFLElBQWtDO1FBQzFFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUE4QjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFB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
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX2FwaWNsaWVudC9jbGFzc2VzLnJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFJeEQsTUFBTSxPQUFPLEtBQUs7SUFDUixTQUFTLENBQW9CO0lBRXJDLHlCQUF5QjtJQUNsQixXQUFXLENBQWU7SUFDMUIsRUFBRSxDQUFTO0lBQ1gsT0FBTyxDQUFVO0lBQ2pCLE1BQU0sQ0FBcUM7SUFDM0MsU0FBUyxDQUFVO0lBQ25CLFNBQVMsQ0FBVTtJQUUxQix3QkFBd0I7SUFDeEIsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELFlBQVksU0FBNEIsRUFBRSxJQUFrQztRQUMxRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUE4QjtRQUNoRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQyxhQUFhLEVBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJ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
@@ -50,23 +50,22 @@ export interface IRouteMetadata {
50
50
  lastResolvedAt?: number;
51
51
  }
52
52
  /**
53
- * A merged route combining hardcoded and programmatic sources.
53
+ * A route entry returned by the route management API.
54
54
  */
55
55
  export interface IMergedRoute {
56
56
  route: IDcRouterRouteConfig;
57
- source: 'hardcoded' | 'programmatic';
57
+ id: string;
58
58
  enabled: boolean;
59
- overridden: boolean;
60
- storedRouteId?: string;
59
+ origin: 'config' | 'email' | 'dns' | 'api';
61
60
  createdAt?: number;
62
61
  updatedAt?: number;
63
62
  metadata?: IRouteMetadata;
64
63
  }
65
64
  /**
66
- * A warning generated during route merge/startup.
65
+ * A warning generated during route startup/apply.
67
66
  */
68
67
  export interface IRouteWarning {
69
- type: 'disabled-hardcoded' | 'disabled-programmatic' | 'orphaned-override';
68
+ type: 'disabled-route';
70
69
  routeName: string;
71
70
  message: string;
72
71
  }
@@ -83,26 +82,18 @@ export interface IApiTokenInfo {
83
82
  enabled: boolean;
84
83
  }
85
84
  /**
86
- * A programmatic route stored in /config-api/routes/{id}.json
85
+ * A route persisted in the database.
87
86
  */
88
- export interface IStoredRoute {
87
+ export interface IRoute {
89
88
  id: string;
90
89
  route: IDcRouterRouteConfig;
91
90
  enabled: boolean;
92
91
  createdAt: number;
93
92
  updatedAt: number;
94
93
  createdBy: string;
94
+ origin: 'config' | 'email' | 'dns' | 'api';
95
95
  metadata?: IRouteMetadata;
96
96
  }
97
- /**
98
- * An override for a hardcoded route, stored in /config-api/overrides/{routeName}.json
99
- */
100
- export interface IRouteOverride {
101
- routeName: string;
102
- enabled: boolean;
103
- updatedAt: number;
104
- updatedBy: string;
105
- }
106
97
  /**
107
98
  * A stored API token, stored in /config-api/tokens/{id}.json
108
99
  */
@@ -3,7 +3,7 @@ import type * as authInterfaces from '../data/auth.js';
3
3
  import type { IMergedRoute, IRouteWarning, IRouteMetadata } from '../data/route-management.js';
4
4
  import type { IDcRouterRouteConfig } from '../data/remoteingress.js';
5
5
  /**
6
- * Get all merged routes (hardcoded + programmatic) with warnings.
6
+ * Get all routes with warnings.
7
7
  */
8
8
  export interface IReq_GetMergedRoutes extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetMergedRoutes> {
9
9
  method: 'getMergedRoutes';
@@ -17,7 +17,7 @@ export interface IReq_GetMergedRoutes extends plugins.typedrequestInterfaces.imp
17
17
  };
18
18
  }
19
19
  /**
20
- * Create a new programmatic route.
20
+ * Create a new route.
21
21
  */
22
22
  export interface IReq_CreateRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateRoute> {
23
23
  method: 'createRoute';
@@ -30,12 +30,12 @@ export interface IReq_CreateRoute extends plugins.typedrequestInterfaces.impleme
30
30
  };
31
31
  response: {
32
32
  success: boolean;
33
- storedRouteId?: string;
33
+ routeId?: string;
34
34
  message?: string;
35
35
  };
36
36
  }
37
37
  /**
38
- * Update a programmatic route.
38
+ * Update a route.
39
39
  */
40
40
  export interface IReq_UpdateRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateRoute> {
41
41
  method: 'updateRoute';
@@ -53,7 +53,7 @@ export interface IReq_UpdateRoute extends plugins.typedrequestInterfaces.impleme
53
53
  };
54
54
  }
55
55
  /**
56
- * Delete a programmatic route.
56
+ * Delete a route.
57
57
  */
58
58
  export interface IReq_DeleteRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteRoute> {
59
59
  method: 'deleteRoute';
@@ -68,38 +68,7 @@ export interface IReq_DeleteRoute extends plugins.typedrequestInterfaces.impleme
68
68
  };
69
69
  }
70
70
  /**
71
- * Set an override on a hardcoded route (disable/enable by name).
72
- */
73
- export interface IReq_SetRouteOverride extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_SetRouteOverride> {
74
- method: 'setRouteOverride';
75
- request: {
76
- identity?: authInterfaces.IIdentity;
77
- apiToken?: string;
78
- routeName: string;
79
- enabled: boolean;
80
- };
81
- response: {
82
- success: boolean;
83
- message?: string;
84
- };
85
- }
86
- /**
87
- * Remove an override from a hardcoded route (restore default behavior).
88
- */
89
- export interface IReq_RemoveRouteOverride extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_RemoveRouteOverride> {
90
- method: 'removeRouteOverride';
91
- request: {
92
- identity?: authInterfaces.IIdentity;
93
- apiToken?: string;
94
- routeName: string;
95
- };
96
- response: {
97
- success: boolean;
98
- message?: string;
99
- };
100
- }
101
- /**
102
- * Toggle a programmatic route on/off by id.
71
+ * Toggle a route on/off by id.
103
72
  */
104
73
  export interface IReq_ToggleRoute extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ToggleRoute> {
105
74
  method: 'toggleRoute';
@@ -54,7 +54,29 @@ export async function createMigrationRunner(db, targetVersion) {
54
54
  const collection = ctx.mongo.collection('dnsrecorddoc');
55
55
  const result = await collection.updateMany({ source: 'manual' }, { $set: { source: 'local' } });
56
56
  ctx.log.log('info', `rename-record-source-manual-to-local: migrated ${result.modifiedCount} record(s)`);
57
+ })
58
+ .step('unify-routes-rename-collection')
59
+ .from('13.8.2').to('13.16.0')
60
+ .description('Rename storedroutedoc → routedoc, add origin field, drop routeoverridedoc')
61
+ .up(async (ctx) => {
62
+ const db = ctx.mongo;
63
+ // 1. Rename storedroutedoc → routedoc
64
+ const collections = await db.listCollections({ name: 'storedroutedoc' }).toArray();
65
+ if (collections.length > 0) {
66
+ await db.renameCollection('storedroutedoc', 'routedoc');
67
+ ctx.log.log('info', 'Renamed storedroutedoc → routedoc');
68
+ }
69
+ // 2. Set origin='api' on all migrated docs (they were API-created)
70
+ const routeCol = db.collection('routedoc');
71
+ const result = await routeCol.updateMany({ origin: { $exists: false } }, { $set: { origin: 'api' } });
72
+ ctx.log.log('info', `Set origin='api' on ${result.modifiedCount} migrated route(s)`);
73
+ // 3. Drop routeoverridedoc collection
74
+ const overrideCollections = await db.listCollections({ name: 'routeoverridedoc' }).toArray();
75
+ if (overrideCollections.length > 0) {
76
+ await db.collection('routeoverridedoc').drop();
77
+ ctx.log.log('info', 'Dropped routeoverridedoc collection');
78
+ }
57
79
  });
58
80
  return migration;
59
81
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19taWdyYXRpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QjtBQXVCOUI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxFQUFXLEVBQ1gsYUFBcUI7SUFFckIsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUM7UUFDdEMsYUFBYTtRQUNiLEVBQUUsRUFBRSxFQUFTO1FBQ2Isb0ZBQW9GO1FBQ3BGLG1CQUFtQixFQUFFLGFBQWE7S0FDbkMsQ0FBQyxDQUFDO0lBRUgsd0VBQXdFO0lBQ3hFLG9EQUFvRDtJQUNwRCxTQUFTO1NBQ04sSUFBSSxDQUFDLGtDQUFrQyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQzVCLFdBQVcsQ0FBQyw4REFBOEQsQ0FBQztTQUMzRSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sT0FBTyxHQUFHLENBQUUsR0FBVyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM5RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUM1QixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUMvQixDQUFDO2dCQUNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUcsR0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLFFBQVEsRUFBRSxDQUFDO1FBQ2IsQ0FBQztRQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSw4Q0FBOEMsUUFBUSxhQUFhLENBQUMsQ0FBQztJQUMzRixDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMseUNBQXlDLENBQUM7U0FDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDM0IsV0FBVyxDQUFDLDJEQUEyRCxDQUFDO1NBQ3hFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDaEIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsVUFBVSxDQUN4QyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFDcEIsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FDakMsQ0FBQztRQUNGLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUNULE1BQU0sRUFDTixxREFBcUQsTUFBTSxDQUFDLGFBQWEsWUFBWSxDQUN0RixDQUFDO0lBQ0osQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLHNDQUFzQyxDQUFDO1NBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQzNCLFdBQVcsQ0FBQywyREFBMkQsQ0FBQztTQUN4RSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFNLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLFVBQVUsQ0FDeEMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQ3BCLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQzlCLENBQUM7UUFDRixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FDVCxNQUFNLEVBQ04sa0RBQWtELE1BQU0sQ0FBQyxhQUFhLFlBQVksQ0FDbkYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyJ9
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19taWdyYXRpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QjtBQXVCOUI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxFQUFXLEVBQ1gsYUFBcUI7SUFFckIsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUM7UUFDdEMsYUFBYTtRQUNiLEVBQUUsRUFBRSxFQUFTO1FBQ2Isb0ZBQW9GO1FBQ3BGLG1CQUFtQixFQUFFLGFBQWE7S0FDbkMsQ0FBQyxDQUFDO0lBRUgsd0VBQXdFO0lBQ3hFLG9EQUFvRDtJQUNwRCxTQUFTO1NBQ04sSUFBSSxDQUFDLGtDQUFrQyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO1NBQzVCLFdBQVcsQ0FBQyw4REFBOEQsQ0FBQztTQUMzRSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sT0FBTyxHQUFHLENBQUUsR0FBVyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFD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
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '13.15.0',
6
+ version: '13.16.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
@@ -437,11 +437,6 @@ export declare const toggleRouteAction: plugins.deesElement.domtools.plugins.sma
437
437
  id: string;
438
438
  enabled: boolean;
439
439
  }>;
440
- export declare const setRouteOverrideAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IRouteManagementState, {
441
- routeName: string;
442
- enabled: boolean;
443
- }>;
444
- export declare const removeRouteOverrideAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IRouteManagementState, string>;
445
440
  export declare const fetchApiTokensAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IRouteManagementState, unknown>;
446
441
  export declare const fetchUsersAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IUsersState, unknown>;
447
442
  export declare function createApiToken(name: string, scopes: interfaces.data.TApiTokenScope[], expiresInDays?: number | null): Promise<{