@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
@@ -140,9 +140,9 @@ export class OpsViewRoutes extends DeesElement {
140
140
  public render(): TemplateResult {
141
141
  const { mergedRoutes, warnings } = this.routeState;
142
142
 
143
- const hardcodedCount = mergedRoutes.filter((mr) => mr.source === 'hardcoded').length;
144
- const programmaticCount = mergedRoutes.filter((mr) => mr.source === 'programmatic').length;
145
143
  const disabledCount = mergedRoutes.filter((mr) => !mr.enabled).length;
144
+ const configCount = mergedRoutes.filter((mr) => mr.origin !== 'api').length;
145
+ const apiCount = mergedRoutes.filter((mr) => mr.origin === 'api').length;
146
146
 
147
147
  const statsTiles: IStatsTile[] = [
148
148
  {
@@ -155,19 +155,19 @@ export class OpsViewRoutes extends DeesElement {
155
155
  color: '#3b82f6',
156
156
  },
157
157
  {
158
- id: 'hardcoded',
159
- title: 'Hardcoded',
158
+ id: 'configRoutes',
159
+ title: 'From Config',
160
160
  type: 'number',
161
- value: hardcodedCount,
162
- icon: 'lucide:lock',
163
- description: 'Routes from constructor config',
161
+ value: configCount,
162
+ icon: 'lucide:settings',
163
+ description: 'Seeded from config/email/DNS',
164
164
  color: '#8b5cf6',
165
165
  },
166
166
  {
167
- id: 'programmatic',
168
- title: 'Programmatic',
167
+ id: 'apiRoutes',
168
+ title: 'API Created',
169
169
  type: 'number',
170
- value: programmaticCount,
170
+ value: apiCount,
171
171
  icon: 'lucide:code',
172
172
  description: 'Routes added via API',
173
173
  color: '#0ea5e9',
@@ -186,15 +186,14 @@ export class OpsViewRoutes extends DeesElement {
186
186
  // Map merged routes to sz-route-list-view format
187
187
  const szRoutes = mergedRoutes.map((mr) => {
188
188
  const tags = [...(mr.route.tags || [])];
189
- tags.push(mr.source);
189
+ tags.push(mr.origin);
190
190
  if (!mr.enabled) tags.push('disabled');
191
- if (mr.overridden) tags.push('overridden');
192
191
 
193
192
  return {
194
193
  ...mr.route,
195
194
  enabled: mr.enabled,
196
195
  tags,
197
- id: mr.storedRouteId || mr.route.name || undefined,
196
+ id: mr.id || mr.route.name || undefined,
198
197
  metadata: mr.metadata,
199
198
  };
200
199
  });
@@ -238,7 +237,6 @@ export class OpsViewRoutes extends DeesElement {
238
237
  ? html`
239
238
  <sz-route-list-view
240
239
  .routes=${szRoutes}
241
- .showActionsFilter=${(route: any) => route.tags?.includes('programmatic') ?? false}
242
240
  @route-click=${(e: CustomEvent) => this.handleRouteClick(e)}
243
241
  @route-edit=${(e: CustomEvent) => this.handleRouteEdit(e)}
244
242
  @route-delete=${(e: CustomEvent) => this.handleRouteDelete(e)}
@@ -247,7 +245,7 @@ export class OpsViewRoutes extends DeesElement {
247
245
  : html`
248
246
  <div class="empty-state">
249
247
  <p>No routes configured</p>
250
- <p>Add a programmatic route or check your constructor configuration.</p>
248
+ <p>Add a route to get started.</p>
251
249
  </div>
252
250
  `}
253
251
  </div>
@@ -266,112 +264,56 @@ export class OpsViewRoutes extends DeesElement {
266
264
 
267
265
  const { DeesModal } = await import('@design.estate/dees-catalog');
268
266
 
269
- if (merged.source === 'hardcoded') {
270
- const menuOptions = merged.enabled
271
- ? [
272
- {
273
- name: 'Disable Route',
274
- iconName: 'lucide:pause',
275
- action: async (modalArg: any) => {
276
- await appstate.routeManagementStatePart.dispatchAction(
277
- appstate.setRouteOverrideAction,
278
- { routeName: merged.route.name!, enabled: false },
279
- );
280
- await modalArg.destroy();
281
- },
282
- },
283
- {
284
- name: 'Close',
285
- iconName: 'lucide:x',
286
- action: async (modalArg: any) => await modalArg.destroy(),
287
- },
288
- ]
289
- : [
290
- {
291
- name: 'Enable Route',
292
- iconName: 'lucide:play',
293
- action: async (modalArg: any) => {
294
- await appstate.routeManagementStatePart.dispatchAction(
295
- appstate.setRouteOverrideAction,
296
- { routeName: merged.route.name!, enabled: true },
297
- );
298
- await modalArg.destroy();
299
- },
300
- },
301
- {
302
- name: 'Remove Override',
303
- iconName: 'lucide:undo',
304
- action: async (modalArg: any) => {
305
- await appstate.routeManagementStatePart.dispatchAction(
306
- appstate.removeRouteOverrideAction,
307
- merged.route.name!,
308
- );
309
- await modalArg.destroy();
310
- },
311
- },
312
- {
313
- name: 'Close',
314
- iconName: 'lucide:x',
315
- action: async (modalArg: any) => await modalArg.destroy(),
316
- },
317
- ];
318
-
319
- await DeesModal.createAndShow({
320
- heading: `Route: ${merged.route.name}`,
321
- content: html`
322
- <div style="color: #ccc; padding: 8px 0;">
323
- <p>Source: <strong style="color: #88f;">hardcoded</strong></p>
324
- <p>Status: <strong>${merged.enabled ? 'Enabled' : 'Disabled (overridden)'}</strong></p>
325
- <p style="color: #888; font-size: 13px;">Hardcoded routes cannot be edited or deleted, but they can be disabled via an override.</p>
326
- </div>
327
- `,
328
- menuOptions,
329
- });
330
- } else {
331
- // Programmatic route
332
- const meta = merged.metadata;
333
- await DeesModal.createAndShow({
334
- heading: `Route: ${merged.route.name}`,
335
- content: html`
336
- <div style="color: #ccc; padding: 8px 0;">
337
- <p>Source: <strong style="color: #0af;">programmatic</strong></p>
338
- <p>Status: <strong>${merged.enabled ? 'Enabled' : 'Disabled'}</strong></p>
339
- <p>ID: <code style="color: #888;">${merged.storedRouteId}</code></p>
340
- ${meta?.sourceProfileName ? html`<p>Source Profile: <strong style="color: #a78bfa;">${meta.sourceProfileName}</strong></p>` : ''}
341
- ${meta?.networkTargetName ? html`<p>Network Target: <strong style="color: #a78bfa;">${meta.networkTargetName}</strong></p>` : ''}
342
- </div>
343
- `,
344
- menuOptions: [
345
- {
346
- name: merged.enabled ? 'Disable' : 'Enable',
347
- iconName: merged.enabled ? 'lucide:pause' : 'lucide:play',
348
- action: async (modalArg: any) => {
349
- await appstate.routeManagementStatePart.dispatchAction(
350
- appstate.toggleRouteAction,
351
- { id: merged.storedRouteId!, enabled: !merged.enabled },
352
- );
353
- await modalArg.destroy();
354
- },
267
+ const meta = merged.metadata;
268
+ await DeesModal.createAndShow({
269
+ heading: `Route: ${merged.route.name}`,
270
+ content: html`
271
+ <div style="color: #ccc; padding: 8px 0;">
272
+ <p>Origin: <strong style="color: #0af;">${merged.origin}</strong></p>
273
+ <p>Status: <strong>${merged.enabled ? 'Enabled' : 'Disabled'}</strong></p>
274
+ <p>ID: <code style="color: #888;">${merged.id}</code></p>
275
+ ${meta?.sourceProfileName ? html`<p>Source Profile: <strong style="color: #a78bfa;">${meta.sourceProfileName}</strong></p>` : ''}
276
+ ${meta?.networkTargetName ? html`<p>Network Target: <strong style="color: #a78bfa;">${meta.networkTargetName}</strong></p>` : ''}
277
+ </div>
278
+ `,
279
+ menuOptions: [
280
+ {
281
+ name: merged.enabled ? 'Disable' : 'Enable',
282
+ iconName: merged.enabled ? 'lucide:pause' : 'lucide:play',
283
+ action: async (modalArg: any) => {
284
+ await appstate.routeManagementStatePart.dispatchAction(
285
+ appstate.toggleRouteAction,
286
+ { id: merged.id, enabled: !merged.enabled },
287
+ );
288
+ await modalArg.destroy();
355
289
  },
356
- {
357
- name: 'Delete',
358
- iconName: 'lucide:trash-2',
359
- action: async (modalArg: any) => {
360
- await appstate.routeManagementStatePart.dispatchAction(
361
- appstate.deleteRouteAction,
362
- merged.storedRouteId!,
363
- );
364
- await modalArg.destroy();
365
- },
290
+ },
291
+ {
292
+ name: 'Edit',
293
+ iconName: 'lucide:pencil',
294
+ action: async (modalArg: any) => {
295
+ await modalArg.destroy();
296
+ this.showEditRouteDialog(merged);
366
297
  },
367
- {
368
- name: 'Close',
369
- iconName: 'lucide:x',
370
- action: async (modalArg: any) => await modalArg.destroy(),
298
+ },
299
+ {
300
+ name: 'Delete',
301
+ iconName: 'lucide:trash-2',
302
+ action: async (modalArg: any) => {
303
+ await appstate.routeManagementStatePart.dispatchAction(
304
+ appstate.deleteRouteAction,
305
+ merged.id,
306
+ );
307
+ await modalArg.destroy();
371
308
  },
372
- ],
373
- });
374
- }
309
+ },
310
+ {
311
+ name: 'Close',
312
+ iconName: 'lucide:x',
313
+ action: async (modalArg: any) => await modalArg.destroy(),
314
+ },
315
+ ],
316
+ });
375
317
  }
376
318
 
377
319
  private async handleRouteEdit(e: CustomEvent) {
@@ -381,7 +323,7 @@ export class OpsViewRoutes extends DeesElement {
381
323
  const merged = this.routeState.mergedRoutes.find(
382
324
  (mr) => mr.route.name === clickedRoute.name,
383
325
  );
384
- if (!merged || !merged.storedRouteId) return;
326
+ if (!merged) return;
385
327
 
386
328
  this.showEditRouteDialog(merged);
387
329
  }
@@ -393,7 +335,7 @@ export class OpsViewRoutes extends DeesElement {
393
335
  const merged = this.routeState.mergedRoutes.find(
394
336
  (mr) => mr.route.name === clickedRoute.name,
395
337
  );
396
- if (!merged || !merged.storedRouteId) return;
338
+ if (!merged) return;
397
339
 
398
340
  const { DeesModal } = await import('@design.estate/dees-catalog');
399
341
  await DeesModal.createAndShow({
@@ -415,7 +357,7 @@ export class OpsViewRoutes extends DeesElement {
415
357
  action: async (modalArg: any) => {
416
358
  await appstate.routeManagementStatePart.dispatchAction(
417
359
  appstate.deleteRouteAction,
418
- merged.storedRouteId!,
360
+ merged.id,
419
361
  );
420
362
  await modalArg.destroy();
421
363
  },
@@ -563,7 +505,7 @@ export class OpsViewRoutes extends DeesElement {
563
505
  await appstate.routeManagementStatePart.dispatchAction(
564
506
  appstate.updateRouteAction,
565
507
  {
566
- id: merged.storedRouteId!,
508
+ id: merged.id,
567
509
  route: updatedRoute,
568
510
  metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
569
511
  },
@@ -603,7 +545,7 @@ export class OpsViewRoutes extends DeesElement {
603
545
  ];
604
546
 
605
547
  const createModal = await DeesModal.createAndShow({
606
- heading: 'Add Programmatic Route',
548
+ heading: 'Add Route',
607
549
  content: html`
608
550
  <dees-form>
609
551
  <dees-input-text .key=${'name'} .label=${'Route Name'} .required=${true}></dees-input-text>
@@ -1,10 +0,0 @@
1
- import * as plugins from '../../plugins.js';
2
- export declare class RouteOverrideDoc extends plugins.smartdata.SmartDataDbDoc<RouteOverrideDoc, RouteOverrideDoc> {
3
- routeName: string;
4
- enabled: boolean;
5
- updatedAt: number;
6
- updatedBy: string;
7
- constructor();
8
- static findByRouteName(routeName: string): Promise<RouteOverrideDoc | null>;
9
- static findAll(): Promise<RouteOverrideDoc[]>;
10
- }
@@ -1,91 +0,0 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- import * as plugins from '../../plugins.js';
36
- import { DcRouterDb } from '../classes.dcrouter-db.js';
37
- const getDb = () => DcRouterDb.getInstance().getDb();
38
- let RouteOverrideDoc = (() => {
39
- let _classDecorators = [plugins.smartdata.Collection(() => getDb())];
40
- let _classDescriptor;
41
- let _classExtraInitializers = [];
42
- let _classThis;
43
- let _classSuper = plugins.smartdata.SmartDataDbDoc;
44
- let _routeName_decorators;
45
- let _routeName_initializers = [];
46
- let _routeName_extraInitializers = [];
47
- let _enabled_decorators;
48
- let _enabled_initializers = [];
49
- let _enabled_extraInitializers = [];
50
- let _updatedAt_decorators;
51
- let _updatedAt_initializers = [];
52
- let _updatedAt_extraInitializers = [];
53
- let _updatedBy_decorators;
54
- let _updatedBy_initializers = [];
55
- let _updatedBy_extraInitializers = [];
56
- var RouteOverrideDoc = class extends _classSuper {
57
- static { _classThis = this; }
58
- static {
59
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
60
- _routeName_decorators = [plugins.smartdata.unI(), plugins.smartdata.svDb()];
61
- _enabled_decorators = [plugins.smartdata.svDb()];
62
- _updatedAt_decorators = [plugins.smartdata.svDb()];
63
- _updatedBy_decorators = [plugins.smartdata.svDb()];
64
- __esDecorate(null, null, _routeName_decorators, { kind: "field", name: "routeName", static: false, private: false, access: { has: obj => "routeName" in obj, get: obj => obj.routeName, set: (obj, value) => { obj.routeName = value; } }, metadata: _metadata }, _routeName_initializers, _routeName_extraInitializers);
65
- __esDecorate(null, null, _enabled_decorators, { kind: "field", name: "enabled", static: false, private: false, access: { has: obj => "enabled" in obj, get: obj => obj.enabled, set: (obj, value) => { obj.enabled = value; } }, metadata: _metadata }, _enabled_initializers, _enabled_extraInitializers);
66
- __esDecorate(null, null, _updatedAt_decorators, { kind: "field", name: "updatedAt", static: false, private: false, access: { has: obj => "updatedAt" in obj, get: obj => obj.updatedAt, set: (obj, value) => { obj.updatedAt = value; } }, metadata: _metadata }, _updatedAt_initializers, _updatedAt_extraInitializers);
67
- __esDecorate(null, null, _updatedBy_decorators, { kind: "field", name: "updatedBy", static: false, private: false, access: { has: obj => "updatedBy" in obj, get: obj => obj.updatedBy, set: (obj, value) => { obj.updatedBy = value; } }, metadata: _metadata }, _updatedBy_initializers, _updatedBy_extraInitializers);
68
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
69
- RouteOverrideDoc = _classThis = _classDescriptor.value;
70
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
71
- __runInitializers(_classThis, _classExtraInitializers);
72
- }
73
- routeName = __runInitializers(this, _routeName_initializers, void 0);
74
- enabled = (__runInitializers(this, _routeName_extraInitializers), __runInitializers(this, _enabled_initializers, void 0));
75
- updatedAt = (__runInitializers(this, _enabled_extraInitializers), __runInitializers(this, _updatedAt_initializers, void 0));
76
- updatedBy = (__runInitializers(this, _updatedAt_extraInitializers), __runInitializers(this, _updatedBy_initializers, void 0));
77
- constructor() {
78
- super();
79
- __runInitializers(this, _updatedBy_extraInitializers);
80
- }
81
- static async findByRouteName(routeName) {
82
- return await RouteOverrideDoc.getInstance({ routeName });
83
- }
84
- static async findAll() {
85
- return await RouteOverrideDoc.getInstances({});
86
- }
87
- };
88
- return RouteOverrideDoc = _classThis;
89
- })();
90
- export { RouteOverrideDoc };
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5yb3V0ZS1vdmVycmlkZS5kb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9kYi9kb2N1bWVudHMvY2xhc3Nlcy5yb3V0ZS1vdmVycmlkZS5kb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUd4QyxnQkFBZ0I7NEJBRDVCLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDOzs7O3NCQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYzs7Ozs7Ozs7Ozs7OztnQ0FBeEMsU0FBUSxXQUFvRTs7OztxQ0FDdkcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFDdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7bUNBR3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO3FDQUd4QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRTtxQ0FHeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFSekIsNktBQU8sU0FBUyw2QkFBVCxTQUFTLDZGQUFVO1lBRzFCLHVLQUFPLE9BQU8sNkJBQVAsT0FBTyx5RkFBVztZQUd6Qiw2S0FBTyxTQUFTLDZCQUFULFNBQVMsNkZBQVU7WUFHMUIsNktBQU8sU0FBUyw2QkFBVCxTQUFTLDZGQUFVO1lBWjVCLDZLQXlCQzs7O1lBekJZLHVEQUFnQjs7UUFHcEIsU0FBUyw0REFBVTtRQUduQixPQUFPLG1IQUFXO1FBR2xCLFNBQVMsbUhBQVU7UUFHbkIsU0FBUyxxSEFBVTtRQUUxQjtZQUNFLEtBQUssRUFBRSxDQUFDOztTQUNUO1FBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBaUI7WUFDbkQsT0FBTyxNQUFNLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTztZQUN6QixPQUFPLE1BQU0sZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7Ozs7U0F4QlUsZ0JBQWdCIn0=
@@ -1,32 +0,0 @@
1
- import * as plugins from '../../plugins.js';
2
- import { DcRouterDb } from '../classes.dcrouter-db.js';
3
-
4
- const getDb = () => DcRouterDb.getInstance().getDb();
5
-
6
- @plugins.smartdata.Collection(() => getDb())
7
- export class RouteOverrideDoc extends plugins.smartdata.SmartDataDbDoc<RouteOverrideDoc, RouteOverrideDoc> {
8
- @plugins.smartdata.unI()
9
- @plugins.smartdata.svDb()
10
- public routeName!: string;
11
-
12
- @plugins.smartdata.svDb()
13
- public enabled!: boolean;
14
-
15
- @plugins.smartdata.svDb()
16
- public updatedAt!: number;
17
-
18
- @plugins.smartdata.svDb()
19
- public updatedBy!: string;
20
-
21
- constructor() {
22
- super();
23
- }
24
-
25
- public static async findByRouteName(routeName: string): Promise<RouteOverrideDoc | null> {
26
- return await RouteOverrideDoc.getInstance({ routeName });
27
- }
28
-
29
- public static async findAll(): Promise<RouteOverrideDoc[]> {
30
- return await RouteOverrideDoc.getInstances({});
31
- }
32
- }