@serve.zone/dcrouter 13.4.2 → 13.7.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 (148) hide show
  1. package/dist_serve/bundle.js +1779 -1375
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/classes.dcrouter.d.ts +2 -5
  4. package/dist_ts/classes.dcrouter.js +41 -10
  5. package/dist_ts/db/documents/classes.dns-provider.doc.d.ts +22 -0
  6. package/dist_ts/db/documents/classes.dns-provider.doc.js +134 -0
  7. package/dist_ts/db/documents/classes.dns-record.doc.d.ts +21 -0
  8. package/dist_ts/db/documents/classes.dns-record.doc.js +143 -0
  9. package/dist_ts/db/documents/classes.domain.doc.d.ts +22 -0
  10. package/dist_ts/db/documents/classes.domain.doc.js +146 -0
  11. package/dist_ts/db/documents/index.d.ts +3 -0
  12. package/dist_ts/db/documents/index.js +5 -1
  13. package/dist_ts/dns/index.d.ts +2 -0
  14. package/dist_ts/dns/index.js +3 -0
  15. package/dist_ts/dns/manager.dns.d.ts +227 -0
  16. package/dist_ts/dns/manager.dns.js +747 -0
  17. package/dist_ts/dns/providers/cloudflare.provider.d.ts +21 -0
  18. package/dist_ts/dns/providers/cloudflare.provider.js +106 -0
  19. package/dist_ts/dns/providers/factory.d.ts +23 -0
  20. package/dist_ts/dns/providers/factory.js +38 -0
  21. package/dist_ts/dns/providers/index.d.ts +3 -0
  22. package/dist_ts/dns/providers/index.js +4 -0
  23. package/dist_ts/dns/providers/interfaces.d.ts +54 -0
  24. package/dist_ts/dns/providers/interfaces.js +2 -0
  25. package/dist_ts/opsserver/classes.opsserver.d.ts +4 -0
  26. package/dist_ts/opsserver/classes.opsserver.js +9 -1
  27. package/dist_ts/opsserver/handlers/admin.handler.d.ts +9 -0
  28. package/dist_ts/opsserver/handlers/admin.handler.js +12 -1
  29. package/dist_ts/opsserver/handlers/config.handler.js +11 -2
  30. package/dist_ts/opsserver/handlers/dns-provider.handler.d.ts +16 -0
  31. package/dist_ts/opsserver/handlers/dns-provider.handler.js +119 -0
  32. package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +13 -0
  33. package/dist_ts/opsserver/handlers/dns-record.handler.js +98 -0
  34. package/dist_ts/opsserver/handlers/domain.handler.d.ts +13 -0
  35. package/dist_ts/opsserver/handlers/domain.handler.js +124 -0
  36. package/dist_ts/opsserver/handlers/index.d.ts +4 -0
  37. package/dist_ts/opsserver/handlers/index.js +5 -1
  38. package/dist_ts/opsserver/handlers/users.handler.d.ts +12 -0
  39. package/dist_ts/opsserver/handlers/users.handler.js +24 -0
  40. package/dist_ts_interfaces/data/dns-provider.d.ts +112 -0
  41. package/dist_ts_interfaces/data/dns-provider.js +27 -0
  42. package/dist_ts_interfaces/data/dns-record.d.ts +40 -0
  43. package/dist_ts_interfaces/data/dns-record.js +2 -0
  44. package/dist_ts_interfaces/data/domain.d.ts +34 -0
  45. package/dist_ts_interfaces/data/domain.js +2 -0
  46. package/dist_ts_interfaces/data/index.d.ts +3 -0
  47. package/dist_ts_interfaces/data/index.js +4 -1
  48. package/dist_ts_interfaces/data/route-management.d.ts +1 -1
  49. package/dist_ts_interfaces/requests/dns-providers.d.ts +117 -0
  50. package/dist_ts_interfaces/requests/dns-providers.js +2 -0
  51. package/dist_ts_interfaces/requests/dns-records.d.ts +89 -0
  52. package/dist_ts_interfaces/requests/dns-records.js +2 -0
  53. package/dist_ts_interfaces/requests/domains.d.ts +118 -0
  54. package/dist_ts_interfaces/requests/domains.js +2 -0
  55. package/dist_ts_interfaces/requests/index.d.ts +4 -0
  56. package/dist_ts_interfaces/requests/index.js +5 -1
  57. package/dist_ts_interfaces/requests/users.d.ts +19 -0
  58. package/dist_ts_interfaces/requests/users.js +3 -0
  59. package/dist_ts_web/00_commitinfo_data.js +1 -1
  60. package/dist_ts_web/appstate.d.ts +85 -0
  61. package/dist_ts_web/appstate.js +339 -6
  62. package/dist_ts_web/elements/access/index.d.ts +1 -0
  63. package/dist_ts_web/elements/access/index.js +2 -1
  64. package/dist_ts_web/elements/access/ops-view-apitokens.js +1 -1
  65. package/dist_ts_web/elements/access/ops-view-users.d.ts +11 -0
  66. package/dist_ts_web/elements/access/ops-view-users.js +190 -0
  67. package/dist_ts_web/elements/domains/dns-provider-form.d.ts +58 -0
  68. package/dist_ts_web/elements/domains/dns-provider-form.js +268 -0
  69. package/dist_ts_web/elements/domains/index.d.ts +5 -0
  70. package/dist_ts_web/elements/domains/index.js +6 -0
  71. package/dist_ts_web/elements/{ops-view-certificates.d.ts → domains/ops-view-certificates.d.ts} +1 -1
  72. package/dist_ts_web/elements/{ops-view-certificates.js → domains/ops-view-certificates.js} +5 -5
  73. package/dist_ts_web/elements/domains/ops-view-dns.d.ts +17 -0
  74. package/dist_ts_web/elements/domains/ops-view-dns.js +304 -0
  75. package/dist_ts_web/elements/domains/ops-view-domains.d.ts +18 -0
  76. package/dist_ts_web/elements/domains/ops-view-domains.js +361 -0
  77. package/dist_ts_web/elements/domains/ops-view-providers.d.ts +21 -0
  78. package/dist_ts_web/elements/domains/ops-view-providers.js +316 -0
  79. package/dist_ts_web/elements/email/ops-view-email-security.js +1 -1
  80. package/dist_ts_web/elements/email/ops-view-emails.js +1 -1
  81. package/dist_ts_web/elements/index.d.ts +1 -1
  82. package/dist_ts_web/elements/index.js +2 -2
  83. package/dist_ts_web/elements/network/ops-view-network-activity.js +6 -2
  84. package/dist_ts_web/elements/network/ops-view-networktargets.js +1 -1
  85. package/dist_ts_web/elements/network/ops-view-remoteingress.js +1 -1
  86. package/dist_ts_web/elements/network/ops-view-routes.js +1 -1
  87. package/dist_ts_web/elements/network/ops-view-sourceprofiles.js +1 -1
  88. package/dist_ts_web/elements/network/ops-view-targetprofiles.js +1 -1
  89. package/dist_ts_web/elements/network/ops-view-vpn.js +1 -1
  90. package/dist_ts_web/elements/ops-dashboard.js +16 -5
  91. package/dist_ts_web/elements/ops-view-logs.js +1 -1
  92. package/dist_ts_web/elements/overview/ops-view-config.js +3 -3
  93. package/dist_ts_web/elements/overview/ops-view-overview.js +1 -1
  94. package/dist_ts_web/elements/security/ops-view-security-authentication.js +1 -1
  95. package/dist_ts_web/elements/security/ops-view-security-blocked.js +1 -1
  96. package/dist_ts_web/elements/security/ops-view-security-overview.js +1 -1
  97. package/dist_ts_web/router.d.ts +1 -1
  98. package/dist_ts_web/router.js +5 -3
  99. package/package.json +2 -2
  100. package/ts/00_commitinfo_data.ts +1 -1
  101. package/ts/classes.dcrouter.ts +46 -17
  102. package/ts/db/documents/classes.dns-provider.doc.ts +63 -0
  103. package/ts/db/documents/classes.dns-record.doc.ts +62 -0
  104. package/ts/db/documents/classes.domain.doc.ts +66 -0
  105. package/ts/db/documents/index.ts +5 -0
  106. package/ts/dns/index.ts +2 -0
  107. package/ts/dns/manager.dns.ts +869 -0
  108. package/ts/dns/providers/cloudflare.provider.ts +131 -0
  109. package/ts/dns/providers/factory.ts +48 -0
  110. package/ts/dns/providers/index.ts +3 -0
  111. package/ts/dns/providers/interfaces.ts +67 -0
  112. package/ts/opsserver/classes.opsserver.ts +8 -0
  113. package/ts/opsserver/handlers/admin.handler.ts +12 -0
  114. package/ts/opsserver/handlers/config.handler.ts +10 -1
  115. package/ts/opsserver/handlers/dns-provider.handler.ts +159 -0
  116. package/ts/opsserver/handlers/dns-record.handler.ts +127 -0
  117. package/ts/opsserver/handlers/domain.handler.ts +161 -0
  118. package/ts/opsserver/handlers/index.ts +5 -1
  119. package/ts/opsserver/handlers/users.handler.ts +30 -0
  120. package/ts_web/00_commitinfo_data.ts +1 -1
  121. package/ts_web/appstate.ts +460 -5
  122. package/ts_web/elements/access/index.ts +1 -0
  123. package/ts_web/elements/access/ops-view-apitokens.ts +1 -1
  124. package/ts_web/elements/access/ops-view-users.ts +140 -0
  125. package/ts_web/elements/domains/dns-provider-form.ts +216 -0
  126. package/ts_web/elements/domains/index.ts +5 -0
  127. package/ts_web/elements/{ops-view-certificates.ts → domains/ops-view-certificates.ts} +4 -4
  128. package/ts_web/elements/domains/ops-view-dns.ts +273 -0
  129. package/ts_web/elements/domains/ops-view-domains.ts +335 -0
  130. package/ts_web/elements/domains/ops-view-providers.ts +284 -0
  131. package/ts_web/elements/email/ops-view-email-security.ts +1 -1
  132. package/ts_web/elements/email/ops-view-emails.ts +1 -1
  133. package/ts_web/elements/index.ts +1 -1
  134. package/ts_web/elements/network/ops-view-network-activity.ts +5 -1
  135. package/ts_web/elements/network/ops-view-networktargets.ts +1 -1
  136. package/ts_web/elements/network/ops-view-remoteingress.ts +1 -1
  137. package/ts_web/elements/network/ops-view-routes.ts +1 -1
  138. package/ts_web/elements/network/ops-view-sourceprofiles.ts +1 -1
  139. package/ts_web/elements/network/ops-view-targetprofiles.ts +1 -1
  140. package/ts_web/elements/network/ops-view-vpn.ts +1 -1
  141. package/ts_web/elements/ops-dashboard.ts +16 -4
  142. package/ts_web/elements/ops-view-logs.ts +1 -1
  143. package/ts_web/elements/overview/ops-view-config.ts +2 -2
  144. package/ts_web/elements/overview/ops-view-overview.ts +1 -1
  145. package/ts_web/elements/security/ops-view-security-authentication.ts +1 -1
  146. package/ts_web/elements/security/ops-view-security-blocked.ts +1 -1
  147. package/ts_web/elements/security/ops-view-security-overview.ts +1 -1
  148. package/ts_web/router.ts +4 -2
@@ -1 +1,2 @@
1
1
  export * from './ops-view-apitokens.js';
2
+ export * from './ops-view-users.js';
@@ -1,2 +1,3 @@
1
1
  export * from './ops-view-apitokens.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvYWNjZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMifQ==
2
+ export * from './ops-view-users.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvYWNjZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQyJ9
@@ -137,7 +137,7 @@ let OpsViewApiTokens = (() => {
137
137
  render() {
138
138
  const { apiTokens } = this.routeState;
139
139
  return html `
140
- <dees-heading level="2">API Tokens</dees-heading>
140
+ <dees-heading level="3">API Tokens</dees-heading>
141
141
 
142
142
  <div class="apiTokensContainer">
143
143
  <dees-table
@@ -0,0 +1,11 @@
1
+ import * as appstate from '../../appstate.js';
2
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
3
+ export declare class OpsViewUsers extends DeesElement {
4
+ accessor usersState: appstate.IUsersState;
5
+ accessor loginState: appstate.ILoginState;
6
+ constructor();
7
+ static styles: import("@design.estate/dees-element").CSSResult[];
8
+ render(): TemplateResult;
9
+ private renderRoleBadge;
10
+ firstUpdated(): Promise<void>;
11
+ }
@@ -0,0 +1,190 @@
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 appstate from '../../appstate.js';
36
+ import { viewHostCss } from '../shared/css.js';
37
+ import { DeesElement, css, cssManager, customElement, html, state, } from '@design.estate/dees-element';
38
+ let OpsViewUsers = (() => {
39
+ let _classDecorators = [customElement('ops-view-users')];
40
+ let _classDescriptor;
41
+ let _classExtraInitializers = [];
42
+ let _classThis;
43
+ let _classSuper = DeesElement;
44
+ let _usersState_decorators;
45
+ let _usersState_initializers = [];
46
+ let _usersState_extraInitializers = [];
47
+ let _loginState_decorators;
48
+ let _loginState_initializers = [];
49
+ let _loginState_extraInitializers = [];
50
+ var OpsViewUsers = class extends _classSuper {
51
+ static { _classThis = this; }
52
+ static {
53
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
54
+ _usersState_decorators = [state()];
55
+ _loginState_decorators = [state()];
56
+ __esDecorate(this, null, _usersState_decorators, { kind: "accessor", name: "usersState", static: false, private: false, access: { has: obj => "usersState" in obj, get: obj => obj.usersState, set: (obj, value) => { obj.usersState = value; } }, metadata: _metadata }, _usersState_initializers, _usersState_extraInitializers);
57
+ __esDecorate(this, null, _loginState_decorators, { kind: "accessor", name: "loginState", static: false, private: false, access: { has: obj => "loginState" in obj, get: obj => obj.loginState, set: (obj, value) => { obj.loginState = value; } }, metadata: _metadata }, _loginState_initializers, _loginState_extraInitializers);
58
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
59
+ OpsViewUsers = _classThis = _classDescriptor.value;
60
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
61
+ }
62
+ #usersState_accessor_storage = __runInitializers(this, _usersState_initializers, {
63
+ users: [],
64
+ isLoading: false,
65
+ error: null,
66
+ lastUpdated: 0,
67
+ });
68
+ get usersState() { return this.#usersState_accessor_storage; }
69
+ set usersState(value) { this.#usersState_accessor_storage = value; }
70
+ #loginState_accessor_storage = (__runInitializers(this, _usersState_extraInitializers), __runInitializers(this, _loginState_initializers, {
71
+ identity: null,
72
+ isLoggedIn: false,
73
+ }));
74
+ get loginState() { return this.#loginState_accessor_storage; }
75
+ set loginState(value) { this.#loginState_accessor_storage = value; }
76
+ constructor() {
77
+ super();
78
+ __runInitializers(this, _loginState_extraInitializers);
79
+ const usersSub = appstate.usersStatePart
80
+ .select((s) => s)
81
+ .subscribe((usersState) => {
82
+ this.usersState = usersState;
83
+ });
84
+ this.rxSubscriptions.push(usersSub);
85
+ const loginSub = appstate.loginStatePart
86
+ .select((s) => s)
87
+ .subscribe((loginState) => {
88
+ this.loginState = loginState;
89
+ // Re-fetch users when user logs in (fixes race condition where
90
+ // the view is created before authentication completes)
91
+ if (loginState.isLoggedIn) {
92
+ appstate.usersStatePart.dispatchAction(appstate.fetchUsersAction, null);
93
+ }
94
+ });
95
+ this.rxSubscriptions.push(loginSub);
96
+ }
97
+ static styles = [
98
+ cssManager.defaultStyles,
99
+ viewHostCss,
100
+ css `
101
+ .usersContainer {
102
+ display: flex;
103
+ flex-direction: column;
104
+ gap: 24px;
105
+ }
106
+
107
+ .roleBadge {
108
+ display: inline-flex;
109
+ align-items: center;
110
+ padding: 3px 10px;
111
+ border-radius: 12px;
112
+ font-size: 12px;
113
+ font-weight: 600;
114
+ letter-spacing: 0.02em;
115
+ text-transform: uppercase;
116
+ }
117
+
118
+ .roleBadge.admin {
119
+ background: ${cssManager.bdTheme('#fef3c7', '#451a03')};
120
+ color: ${cssManager.bdTheme('#92400e', '#fbbf24')};
121
+ }
122
+
123
+ .roleBadge.user {
124
+ background: ${cssManager.bdTheme('#e0f2fe', '#0c4a6e')};
125
+ color: ${cssManager.bdTheme('#075985', '#7dd3fc')};
126
+ }
127
+
128
+ .sessionBadge {
129
+ display: inline-flex;
130
+ align-items: center;
131
+ padding: 3px 10px;
132
+ border-radius: 12px;
133
+ font-size: 12px;
134
+ font-weight: 600;
135
+ letter-spacing: 0.02em;
136
+ text-transform: uppercase;
137
+ background: ${cssManager.bdTheme('#dcfce7', '#14532d')};
138
+ color: ${cssManager.bdTheme('#166534', '#4ade80')};
139
+ }
140
+
141
+ .userIdCell {
142
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace;
143
+ font-size: 11px;
144
+ color: ${cssManager.bdTheme('#6b7280', '#9ca3af')};
145
+ }
146
+ `,
147
+ ];
148
+ render() {
149
+ const { users } = this.usersState;
150
+ const currentUserId = this.loginState.identity?.userId;
151
+ return html `
152
+ <dees-heading level="3">Users</dees-heading>
153
+
154
+ <div class="usersContainer">
155
+ <dees-table
156
+ .heading1=${'Users'}
157
+ .heading2=${'OpsServer user accounts'}
158
+ .data=${users}
159
+ .dataName=${'user'}
160
+ .searchable=${true}
161
+ .showColumnFilters=${true}
162
+ .displayFunction=${(user) => ({
163
+ ID: html `<span class="userIdCell">${user.id}</span>`,
164
+ Username: user.username,
165
+ Role: this.renderRoleBadge(user.role),
166
+ Session: user.id === currentUserId
167
+ ? html `<span class="sessionBadge">current</span>`
168
+ : '',
169
+ })}
170
+ ></dees-table>
171
+ </div>
172
+ `;
173
+ }
174
+ renderRoleBadge(role) {
175
+ const cls = role === 'admin' ? 'admin' : 'user';
176
+ return html `<span class="roleBadge ${cls}">${role}</span>`;
177
+ }
178
+ async firstUpdated() {
179
+ if (this.loginState.isLoggedIn) {
180
+ await appstate.usersStatePart.dispatchAction(appstate.fetchUsersAction, null);
181
+ }
182
+ }
183
+ static {
184
+ __runInitializers(_classThis, _classExtraInitializers);
185
+ }
186
+ };
187
+ return OpsViewUsers = _classThis;
188
+ })();
189
+ export { OpsViewUsers };
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BzLXZpZXctdXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvYWNjZXNzL29wcy12aWV3LXVzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLEdBQUcsRUFDSCxVQUFVLEVBQ1YsYUFBYSxFQUNiLElBQUksRUFDSixLQUFLLEdBRU4sTUFBTSw2QkFBNkIsQ0FBQztJQUd4QixZQUFZOzRCQUR4QixhQUFhLENBQUMsZ0JBQWdCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs0QkFBbkIsU0FBUSxXQUFXOzs7O3NDQUMxQyxLQUFLLEVBQUU7c0NBT1AsS0FBSyxFQUFFO1lBUEMsbUxBQVMsVUFBVSw2QkFBVixVQUFVLCtGQUsxQjtZQUVPLG1MQUFTLFVBQVUsNkJBQVYsVUFBVSwrRkFHMUI7WUFYSiw2S0E2SEM7Ozs7UUE1SFUsaUZBQTRDO1lBQ25ELEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsQ0FBQztTQUNmLEVBQUM7UUFMTyxJQUFTLFVBQVUsZ0RBSzFCO1FBTE8sSUFBUyxVQUFVLHNEQUsxQjtRQUVPLDBJQUE0QztZQUNuRCxRQUFRLEVBQUUsSUFBSTtZQUNkLFVBQVUsRUFBRSxLQUFLO1NBQ2xCLEdBQUM7UUFITyxJQUFTLFVBQVUsZ0RBRzFCO1FBSE8sSUFBUyxVQUFVLHNEQUcxQjtRQUVGO1lBQ0UsS0FBSyxFQUFFLENBQUM7O1lBQ1IsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWM7aUJBQ3JDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxF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
@@ -0,0 +1,58 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ 'dns-provider-form': DnsProviderForm;
6
+ }
7
+ }
8
+ /**
9
+ * Reactive credential form for a DNS provider. Renders the type picker
10
+ * and the credential fields for the currently-selected type.
11
+ *
12
+ * Provider-agnostic — driven entirely by `dnsProviderTypeDescriptors` from
13
+ * `ts_interfaces/data/dns-provider.ts`. Adding a new provider type means
14
+ * appending one entry to the descriptors array; this form picks it up
15
+ * automatically.
16
+ *
17
+ * Usage:
18
+ *
19
+ * const formEl = document.createElement('dns-provider-form');
20
+ * formEl.providerName = 'My provider';
21
+ * // ... pass element into a DeesModal as content ...
22
+ * // on submit:
23
+ * const data = formEl.collectData();
24
+ * // → { name, type, credentials }
25
+ *
26
+ * In edit mode, set `lockType = true` so the user cannot change provider
27
+ * type after creation (credentials shapes don't transfer between types).
28
+ */
29
+ export declare class DnsProviderForm extends DeesElement {
30
+ /** Pre-populated provider name. */
31
+ accessor providerName: string;
32
+ /**
33
+ * Currently selected provider type. Initialized to the first descriptor;
34
+ * caller can override before mounting (e.g. for edit dialogs).
35
+ */
36
+ accessor selectedType: interfaces.data.TDnsProviderType;
37
+ /** When true, hide the type picker — used in edit dialogs. */
38
+ accessor lockType: boolean;
39
+ /**
40
+ * Help text shown above credentials. Useful for edit dialogs to indicate
41
+ * that fields can be left blank to keep current values.
42
+ */
43
+ accessor credentialsHint: string;
44
+ /** Internal map of credential field values, keyed by the descriptor's `key`. */
45
+ accessor credentialValues: Record<string, string>;
46
+ static styles: import("@design.estate/dees-element").CSSResult[];
47
+ render(): TemplateResult;
48
+ /**
49
+ * Read the form values and assemble the create/update payload.
50
+ * Returns the typed credentials object built from the descriptor's keys.
51
+ */
52
+ collectData(): Promise<{
53
+ name: string;
54
+ type: interfaces.data.TDnsProviderType;
55
+ credentials: interfaces.data.TDnsProviderCredentials;
56
+ credentialsTouched: boolean;
57
+ } | null>;
58
+ }
@@ -0,0 +1,268 @@
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 { DeesElement, html, customElement, css, state, property, cssManager, } from '@design.estate/dees-element';
36
+ import * as interfaces from '../../../dist_ts_interfaces/index.js';
37
+ /**
38
+ * Reactive credential form for a DNS provider. Renders the type picker
39
+ * and the credential fields for the currently-selected type.
40
+ *
41
+ * Provider-agnostic — driven entirely by `dnsProviderTypeDescriptors` from
42
+ * `ts_interfaces/data/dns-provider.ts`. Adding a new provider type means
43
+ * appending one entry to the descriptors array; this form picks it up
44
+ * automatically.
45
+ *
46
+ * Usage:
47
+ *
48
+ * const formEl = document.createElement('dns-provider-form');
49
+ * formEl.providerName = 'My provider';
50
+ * // ... pass element into a DeesModal as content ...
51
+ * // on submit:
52
+ * const data = formEl.collectData();
53
+ * // → { name, type, credentials }
54
+ *
55
+ * In edit mode, set `lockType = true` so the user cannot change provider
56
+ * type after creation (credentials shapes don't transfer between types).
57
+ */
58
+ let DnsProviderForm = (() => {
59
+ let _classDecorators = [customElement('dns-provider-form')];
60
+ let _classDescriptor;
61
+ let _classExtraInitializers = [];
62
+ let _classThis;
63
+ let _classSuper = DeesElement;
64
+ let _providerName_decorators;
65
+ let _providerName_initializers = [];
66
+ let _providerName_extraInitializers = [];
67
+ let _selectedType_decorators;
68
+ let _selectedType_initializers = [];
69
+ let _selectedType_extraInitializers = [];
70
+ let _lockType_decorators;
71
+ let _lockType_initializers = [];
72
+ let _lockType_extraInitializers = [];
73
+ let _credentialsHint_decorators;
74
+ let _credentialsHint_initializers = [];
75
+ let _credentialsHint_extraInitializers = [];
76
+ let _credentialValues_decorators;
77
+ let _credentialValues_initializers = [];
78
+ let _credentialValues_extraInitializers = [];
79
+ var DnsProviderForm = class extends _classSuper {
80
+ static { _classThis = this; }
81
+ static {
82
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
83
+ _providerName_decorators = [property({ type: String })];
84
+ _selectedType_decorators = [state()];
85
+ _lockType_decorators = [property({ type: Boolean })];
86
+ _credentialsHint_decorators = [property({ type: String })];
87
+ _credentialValues_decorators = [state()];
88
+ __esDecorate(this, null, _providerName_decorators, { kind: "accessor", name: "providerName", static: false, private: false, access: { has: obj => "providerName" in obj, get: obj => obj.providerName, set: (obj, value) => { obj.providerName = value; } }, metadata: _metadata }, _providerName_initializers, _providerName_extraInitializers);
89
+ __esDecorate(this, null, _selectedType_decorators, { kind: "accessor", name: "selectedType", static: false, private: false, access: { has: obj => "selectedType" in obj, get: obj => obj.selectedType, set: (obj, value) => { obj.selectedType = value; } }, metadata: _metadata }, _selectedType_initializers, _selectedType_extraInitializers);
90
+ __esDecorate(this, null, _lockType_decorators, { kind: "accessor", name: "lockType", static: false, private: false, access: { has: obj => "lockType" in obj, get: obj => obj.lockType, set: (obj, value) => { obj.lockType = value; } }, metadata: _metadata }, _lockType_initializers, _lockType_extraInitializers);
91
+ __esDecorate(this, null, _credentialsHint_decorators, { kind: "accessor", name: "credentialsHint", static: false, private: false, access: { has: obj => "credentialsHint" in obj, get: obj => obj.credentialsHint, set: (obj, value) => { obj.credentialsHint = value; } }, metadata: _metadata }, _credentialsHint_initializers, _credentialsHint_extraInitializers);
92
+ __esDecorate(this, null, _credentialValues_decorators, { kind: "accessor", name: "credentialValues", static: false, private: false, access: { has: obj => "credentialValues" in obj, get: obj => obj.credentialValues, set: (obj, value) => { obj.credentialValues = value; } }, metadata: _metadata }, _credentialValues_initializers, _credentialValues_extraInitializers);
93
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
94
+ DnsProviderForm = _classThis = _classDescriptor.value;
95
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
96
+ }
97
+ #providerName_accessor_storage = __runInitializers(this, _providerName_initializers, '');
98
+ /** Pre-populated provider name. */
99
+ get providerName() { return this.#providerName_accessor_storage; }
100
+ set providerName(value) { this.#providerName_accessor_storage = value; }
101
+ #selectedType_accessor_storage = (__runInitializers(this, _providerName_extraInitializers), __runInitializers(this, _selectedType_initializers, interfaces.data.dnsProviderTypeDescriptors[0]?.type ?? 'cloudflare'));
102
+ /**
103
+ * Currently selected provider type. Initialized to the first descriptor;
104
+ * caller can override before mounting (e.g. for edit dialogs).
105
+ */
106
+ get selectedType() { return this.#selectedType_accessor_storage; }
107
+ set selectedType(value) { this.#selectedType_accessor_storage = value; }
108
+ #lockType_accessor_storage = (__runInitializers(this, _selectedType_extraInitializers), __runInitializers(this, _lockType_initializers, false));
109
+ /** When true, hide the type picker — used in edit dialogs. */
110
+ get lockType() { return this.#lockType_accessor_storage; }
111
+ set lockType(value) { this.#lockType_accessor_storage = value; }
112
+ #credentialsHint_accessor_storage = (__runInitializers(this, _lockType_extraInitializers), __runInitializers(this, _credentialsHint_initializers, ''));
113
+ /**
114
+ * Help text shown above credentials. Useful for edit dialogs to indicate
115
+ * that fields can be left blank to keep current values.
116
+ */
117
+ get credentialsHint() { return this.#credentialsHint_accessor_storage; }
118
+ set credentialsHint(value) { this.#credentialsHint_accessor_storage = value; }
119
+ #credentialValues_accessor_storage = (__runInitializers(this, _credentialsHint_extraInitializers), __runInitializers(this, _credentialValues_initializers, {}));
120
+ /** Internal map of credential field values, keyed by the descriptor's `key`. */
121
+ get credentialValues() { return this.#credentialValues_accessor_storage; }
122
+ set credentialValues(value) { this.#credentialValues_accessor_storage = value; }
123
+ static styles = [
124
+ cssManager.defaultStyles,
125
+ css `
126
+ :host {
127
+ display: block;
128
+ }
129
+
130
+ .field {
131
+ margin-bottom: 12px;
132
+ }
133
+
134
+ .helpText {
135
+ font-size: 12px;
136
+ opacity: 0.7;
137
+ margin-top: -6px;
138
+ margin-bottom: 8px;
139
+ }
140
+
141
+ .typeDescription {
142
+ font-size: 12px;
143
+ opacity: 0.8;
144
+ margin: 4px 0 16px;
145
+ padding: 8px 12px;
146
+ background: ${cssManager.bdTheme('#f3f4f6', '#1f2937')};
147
+ border-radius: 6px;
148
+ }
149
+
150
+ .credentialsHint {
151
+ font-size: 12px;
152
+ opacity: 0.7;
153
+ margin-bottom: 12px;
154
+ }
155
+ `,
156
+ ];
157
+ render() {
158
+ const descriptors = interfaces.data.dnsProviderTypeDescriptors;
159
+ const descriptor = interfaces.data.getDnsProviderTypeDescriptor(this.selectedType);
160
+ return html `
161
+ <dees-form>
162
+ <div class="field">
163
+ <dees-input-text
164
+ .key=${'name'}
165
+ .label=${'Provider name'}
166
+ .value=${this.providerName}
167
+ .required=${true}
168
+ ></dees-input-text>
169
+ </div>
170
+
171
+ ${this.lockType
172
+ ? html `
173
+ <div class="field">
174
+ <dees-input-text
175
+ .key=${'__type_display'}
176
+ .label=${'Type'}
177
+ .value=${descriptor?.displayName ?? this.selectedType}
178
+ .disabled=${true}
179
+ ></dees-input-text>
180
+ </div>
181
+ `
182
+ : html `
183
+ <div class="field">
184
+ <dees-input-dropdown
185
+ .key=${'__type'}
186
+ .label=${'Provider type'}
187
+ .options=${descriptors.map((d) => ({ option: d.displayName, key: d.type }))}
188
+ .selectedOption=${descriptor
189
+ ? { option: descriptor.displayName, key: descriptor.type }
190
+ : undefined}
191
+ @selectedOption=${(e) => {
192
+ const newType = e.detail?.key;
193
+ if (newType && newType !== this.selectedType) {
194
+ this.selectedType = newType;
195
+ this.credentialValues = {};
196
+ }
197
+ }}
198
+ ></dees-input-dropdown>
199
+ </div>
200
+ `}
201
+ ${descriptor
202
+ ? html `
203
+ <div class="typeDescription">${descriptor.description}</div>
204
+ ${this.credentialsHint
205
+ ? html `<div class="credentialsHint">${this.credentialsHint}</div>`
206
+ : ''}
207
+ ${descriptor.credentialFields.map((f) => html `
208
+ <div class="field">
209
+ <dees-input-text
210
+ .key=${f.key}
211
+ .label=${f.label}
212
+ .required=${f.required && !this.lockType}
213
+ ></dees-input-text>
214
+ ${f.helpText ? html `<div class="helpText">${f.helpText}</div>` : ''}
215
+ </div>
216
+ `)}
217
+ `
218
+ : html `<p>No provider types registered.</p>`}
219
+ </dees-form>
220
+ `;
221
+ }
222
+ /**
223
+ * Read the form values and assemble the create/update payload.
224
+ * Returns the typed credentials object built from the descriptor's keys.
225
+ */
226
+ async collectData() {
227
+ const form = this.shadowRoot?.querySelector('dees-form');
228
+ if (!form)
229
+ return null;
230
+ const data = await form.collectFormData();
231
+ const descriptor = interfaces.data.getDnsProviderTypeDescriptor(this.selectedType);
232
+ if (!descriptor)
233
+ return null;
234
+ // Build the credentials object from the descriptor's field keys.
235
+ const credsBody = {};
236
+ let credentialsTouched = false;
237
+ for (const f of descriptor.credentialFields) {
238
+ const value = data[f.key];
239
+ if (value !== undefined && value !== null && String(value).length > 0) {
240
+ credsBody[f.key] = String(value);
241
+ credentialsTouched = true;
242
+ }
243
+ }
244
+ // The discriminator goes on the credentials object so the backend
245
+ // factory and the discriminated union both stay happy.
246
+ const credentials = {
247
+ type: this.selectedType,
248
+ ...credsBody,
249
+ };
250
+ return {
251
+ name: String(data.name ?? ''),
252
+ type: this.selectedType,
253
+ credentials,
254
+ credentialsTouched,
255
+ };
256
+ }
257
+ constructor() {
258
+ super(...arguments);
259
+ __runInitializers(this, _credentialValues_extraInitializers);
260
+ }
261
+ static {
262
+ __runInitializers(_classThis, _classExtraInitializers);
263
+ }
264
+ };
265
+ return DnsProviderForm = _classThis;
266
+ })();
267
+ export { DnsProviderForm };
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXByb3ZpZGVyLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvZG9tYWlucy9kbnMtcHJvdmlkZXItZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osYUFBYSxFQUViLEdBQUcsRUFDSCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0NBQXNDLENBQUM7QUFRbkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0lBRVUsZUFBZTs0QkFEM0IsYUFBYSxDQUFDLG1CQUFtQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7K0JBQW5CLFNBQVEsV0FBVzs7Ozt3Q0FFN0MsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO3dDQU8xQixLQUFLLEVBQUU7b0NBS1AsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDOzJDQU8zQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7NENBSTFCLEtBQUssRUFBRTtZQXRCUix5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQWM7WUFPbkMseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUNpRDtZQUl0RSw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWtCO1lBT25DLGtNQUFTLGVBQWUsNkJBQWYsZUFBZSx5R0FBYztZQUl0QyxxTUFBUyxnQkFBZ0IsNkJBQWhCLGdCQUFnQiwyR0FBOEI7WUExQnpELDZLQStLQzs7OztRQTVLQyxxRkFBZ0MsRUFBRSxFQUFDO1FBRm5DLG1DQUFtQztRQUVuQyxJQUFTLFlBQVksa0RBQWM7UUFBbkMsSUFBUyxZQUFZLHdEQUFjO1FBT25D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
@@ -0,0 +1,5 @@
1
+ export * from './dns-provider-form.js';
2
+ export * from './ops-view-providers.js';
3
+ export * from './ops-view-domains.js';
4
+ export * from './ops-view-dns.js';
5
+ export * from './ops-view-certificates.js';
@@ -0,0 +1,6 @@
1
+ export * from './dns-provider-form.js';
2
+ export * from './ops-view-providers.js';
3
+ export * from './ops-view-domains.js';
4
+ export * from './ops-view-dns.js';
5
+ export * from './ops-view-certificates.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvZG9tYWlucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNEJBQTRCLENBQUMifQ==
@@ -1,5 +1,5 @@
1
1
  import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
- import * as appstate from '../appstate.js';
2
+ import * as appstate from '../../appstate.js';
3
3
  declare global {
4
4
  interface HTMLElementTagNameMap {
5
5
  'ops-view-certificates': OpsViewCertificates;