@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.
- package/dist_serve/bundle.js +1779 -1375
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.dcrouter.d.ts +2 -5
- package/dist_ts/classes.dcrouter.js +41 -10
- package/dist_ts/db/documents/classes.dns-provider.doc.d.ts +22 -0
- package/dist_ts/db/documents/classes.dns-provider.doc.js +134 -0
- package/dist_ts/db/documents/classes.dns-record.doc.d.ts +21 -0
- package/dist_ts/db/documents/classes.dns-record.doc.js +143 -0
- package/dist_ts/db/documents/classes.domain.doc.d.ts +22 -0
- package/dist_ts/db/documents/classes.domain.doc.js +146 -0
- package/dist_ts/db/documents/index.d.ts +3 -0
- package/dist_ts/db/documents/index.js +5 -1
- package/dist_ts/dns/index.d.ts +2 -0
- package/dist_ts/dns/index.js +3 -0
- package/dist_ts/dns/manager.dns.d.ts +227 -0
- package/dist_ts/dns/manager.dns.js +747 -0
- package/dist_ts/dns/providers/cloudflare.provider.d.ts +21 -0
- package/dist_ts/dns/providers/cloudflare.provider.js +106 -0
- package/dist_ts/dns/providers/factory.d.ts +23 -0
- package/dist_ts/dns/providers/factory.js +38 -0
- package/dist_ts/dns/providers/index.d.ts +3 -0
- package/dist_ts/dns/providers/index.js +4 -0
- package/dist_ts/dns/providers/interfaces.d.ts +54 -0
- package/dist_ts/dns/providers/interfaces.js +2 -0
- package/dist_ts/opsserver/classes.opsserver.d.ts +4 -0
- package/dist_ts/opsserver/classes.opsserver.js +9 -1
- package/dist_ts/opsserver/handlers/admin.handler.d.ts +9 -0
- package/dist_ts/opsserver/handlers/admin.handler.js +12 -1
- package/dist_ts/opsserver/handlers/config.handler.js +11 -2
- package/dist_ts/opsserver/handlers/dns-provider.handler.d.ts +16 -0
- package/dist_ts/opsserver/handlers/dns-provider.handler.js +119 -0
- package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +13 -0
- package/dist_ts/opsserver/handlers/dns-record.handler.js +98 -0
- package/dist_ts/opsserver/handlers/domain.handler.d.ts +13 -0
- package/dist_ts/opsserver/handlers/domain.handler.js +124 -0
- package/dist_ts/opsserver/handlers/index.d.ts +4 -0
- package/dist_ts/opsserver/handlers/index.js +5 -1
- package/dist_ts/opsserver/handlers/users.handler.d.ts +12 -0
- package/dist_ts/opsserver/handlers/users.handler.js +24 -0
- package/dist_ts_interfaces/data/dns-provider.d.ts +112 -0
- package/dist_ts_interfaces/data/dns-provider.js +27 -0
- package/dist_ts_interfaces/data/dns-record.d.ts +40 -0
- package/dist_ts_interfaces/data/dns-record.js +2 -0
- package/dist_ts_interfaces/data/domain.d.ts +34 -0
- package/dist_ts_interfaces/data/domain.js +2 -0
- package/dist_ts_interfaces/data/index.d.ts +3 -0
- package/dist_ts_interfaces/data/index.js +4 -1
- package/dist_ts_interfaces/data/route-management.d.ts +1 -1
- package/dist_ts_interfaces/requests/dns-providers.d.ts +117 -0
- package/dist_ts_interfaces/requests/dns-providers.js +2 -0
- package/dist_ts_interfaces/requests/dns-records.d.ts +89 -0
- package/dist_ts_interfaces/requests/dns-records.js +2 -0
- package/dist_ts_interfaces/requests/domains.d.ts +118 -0
- package/dist_ts_interfaces/requests/domains.js +2 -0
- package/dist_ts_interfaces/requests/index.d.ts +4 -0
- package/dist_ts_interfaces/requests/index.js +5 -1
- package/dist_ts_interfaces/requests/users.d.ts +19 -0
- package/dist_ts_interfaces/requests/users.js +3 -0
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/appstate.d.ts +85 -0
- package/dist_ts_web/appstate.js +339 -6
- package/dist_ts_web/elements/access/index.d.ts +1 -0
- package/dist_ts_web/elements/access/index.js +2 -1
- package/dist_ts_web/elements/access/ops-view-apitokens.js +1 -1
- package/dist_ts_web/elements/access/ops-view-users.d.ts +11 -0
- package/dist_ts_web/elements/access/ops-view-users.js +190 -0
- package/dist_ts_web/elements/domains/dns-provider-form.d.ts +58 -0
- package/dist_ts_web/elements/domains/dns-provider-form.js +268 -0
- package/dist_ts_web/elements/domains/index.d.ts +5 -0
- package/dist_ts_web/elements/domains/index.js +6 -0
- package/dist_ts_web/elements/{ops-view-certificates.d.ts → domains/ops-view-certificates.d.ts} +1 -1
- package/dist_ts_web/elements/{ops-view-certificates.js → domains/ops-view-certificates.js} +5 -5
- package/dist_ts_web/elements/domains/ops-view-dns.d.ts +17 -0
- package/dist_ts_web/elements/domains/ops-view-dns.js +304 -0
- package/dist_ts_web/elements/domains/ops-view-domains.d.ts +18 -0
- package/dist_ts_web/elements/domains/ops-view-domains.js +361 -0
- package/dist_ts_web/elements/domains/ops-view-providers.d.ts +21 -0
- package/dist_ts_web/elements/domains/ops-view-providers.js +316 -0
- package/dist_ts_web/elements/email/ops-view-email-security.js +1 -1
- package/dist_ts_web/elements/email/ops-view-emails.js +1 -1
- package/dist_ts_web/elements/index.d.ts +1 -1
- package/dist_ts_web/elements/index.js +2 -2
- package/dist_ts_web/elements/network/ops-view-network-activity.js +6 -2
- package/dist_ts_web/elements/network/ops-view-networktargets.js +1 -1
- package/dist_ts_web/elements/network/ops-view-remoteingress.js +1 -1
- package/dist_ts_web/elements/network/ops-view-routes.js +1 -1
- package/dist_ts_web/elements/network/ops-view-sourceprofiles.js +1 -1
- package/dist_ts_web/elements/network/ops-view-targetprofiles.js +1 -1
- package/dist_ts_web/elements/network/ops-view-vpn.js +1 -1
- package/dist_ts_web/elements/ops-dashboard.js +16 -5
- package/dist_ts_web/elements/ops-view-logs.js +1 -1
- package/dist_ts_web/elements/overview/ops-view-config.js +3 -3
- package/dist_ts_web/elements/overview/ops-view-overview.js +1 -1
- package/dist_ts_web/elements/security/ops-view-security-authentication.js +1 -1
- package/dist_ts_web/elements/security/ops-view-security-blocked.js +1 -1
- package/dist_ts_web/elements/security/ops-view-security-overview.js +1 -1
- package/dist_ts_web/router.d.ts +1 -1
- package/dist_ts_web/router.js +5 -3
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.dcrouter.ts +46 -17
- package/ts/db/documents/classes.dns-provider.doc.ts +63 -0
- package/ts/db/documents/classes.dns-record.doc.ts +62 -0
- package/ts/db/documents/classes.domain.doc.ts +66 -0
- package/ts/db/documents/index.ts +5 -0
- package/ts/dns/index.ts +2 -0
- package/ts/dns/manager.dns.ts +869 -0
- package/ts/dns/providers/cloudflare.provider.ts +131 -0
- package/ts/dns/providers/factory.ts +48 -0
- package/ts/dns/providers/index.ts +3 -0
- package/ts/dns/providers/interfaces.ts +67 -0
- package/ts/opsserver/classes.opsserver.ts +8 -0
- package/ts/opsserver/handlers/admin.handler.ts +12 -0
- package/ts/opsserver/handlers/config.handler.ts +10 -1
- package/ts/opsserver/handlers/dns-provider.handler.ts +159 -0
- package/ts/opsserver/handlers/dns-record.handler.ts +127 -0
- package/ts/opsserver/handlers/domain.handler.ts +161 -0
- package/ts/opsserver/handlers/index.ts +5 -1
- package/ts/opsserver/handlers/users.handler.ts +30 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/appstate.ts +460 -5
- package/ts_web/elements/access/index.ts +1 -0
- package/ts_web/elements/access/ops-view-apitokens.ts +1 -1
- package/ts_web/elements/access/ops-view-users.ts +140 -0
- package/ts_web/elements/domains/dns-provider-form.ts +216 -0
- package/ts_web/elements/domains/index.ts +5 -0
- package/ts_web/elements/{ops-view-certificates.ts → domains/ops-view-certificates.ts} +4 -4
- package/ts_web/elements/domains/ops-view-dns.ts +273 -0
- package/ts_web/elements/domains/ops-view-domains.ts +335 -0
- package/ts_web/elements/domains/ops-view-providers.ts +284 -0
- package/ts_web/elements/email/ops-view-email-security.ts +1 -1
- package/ts_web/elements/email/ops-view-emails.ts +1 -1
- package/ts_web/elements/index.ts +1 -1
- package/ts_web/elements/network/ops-view-network-activity.ts +5 -1
- package/ts_web/elements/network/ops-view-networktargets.ts +1 -1
- package/ts_web/elements/network/ops-view-remoteingress.ts +1 -1
- package/ts_web/elements/network/ops-view-routes.ts +1 -1
- package/ts_web/elements/network/ops-view-sourceprofiles.ts +1 -1
- package/ts_web/elements/network/ops-view-targetprofiles.ts +1 -1
- package/ts_web/elements/network/ops-view-vpn.ts +1 -1
- package/ts_web/elements/ops-dashboard.ts +16 -4
- package/ts_web/elements/ops-view-logs.ts +1 -1
- package/ts_web/elements/overview/ops-view-config.ts +2 -2
- package/ts_web/elements/overview/ops-view-overview.ts +1 -1
- package/ts_web/elements/security/ops-view-security-authentication.ts +1 -1
- package/ts_web/elements/security/ops-view-security-blocked.ts +1 -1
- package/ts_web/elements/security/ops-view-security-overview.ts +1 -1
- package/ts_web/router.ts +4 -2
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export * from './ops-view-apitokens.js';
|
|
2
|
-
|
|
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="
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXByb3ZpZGVyLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvZG9tYWlucy9kbnMtcHJvdmlkZXItZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osYUFBYSxFQUViLEdBQUcsRUFDSCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0NBQXNDLENBQUM7QUFRbkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0lBRVUsZUFBZTs0QkFEM0IsYUFBYSxDQUFDLG1CQUFtQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7K0JBQW5CLFNBQVEsV0FBVzs7Ozt3Q0FFN0MsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO3dDQU8xQixLQUFLLEVBQUU7b0NBS1AsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDOzJDQU8zQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7NENBSTFCLEtBQUssRUFBRTtZQXRCUix5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQWM7WUFPbkMseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUNpRDtZQUl0RSw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWtCO1lBT25DLGtNQUFTLGVBQWUsNkJBQWYsZUFBZSx5R0FBYztZQUl0QyxxTUFBUyxnQkFBZ0IsNkJBQWhCLGdCQUFnQiwyR0FBOEI7WUExQnpELDZLQStLQzs7OztRQTVLQyxxRkFBZ0MsRUFBRSxFQUFDO1FBRm5DLG1DQUFtQztRQUVuQyxJQUFTLFlBQVksa0RBQWM7UUFBbkMsSUFBUyxZQUFZLHdEQUFjO1FBT25DLGdKQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLFlBQVksR0FBQztRQU50RTs7O1dBR0c7UUFFSCxJQUFTLFlBQVksa0RBQ2lEO1FBRHRFLElBQVMsWUFBWSx3REFDaUQ7UUFJdEUsd0lBQTZCLEtBQUssR0FBQztRQUZuQyw4REFBOEQ7UUFFOUQsSUFBUyxRQUFRLDhDQUFrQjtRQUFuQyxJQUFTLFFBQVEsb0RBQWtCO1FBT25DLGtKQUFtQyxFQUFFLEdBQUM7UUFMdEM7OztXQUdHO1FBRUgsSUFBUyxlQUFlLHFEQUFjO1FBQXRDLElBQVMsZUFBZSwyREFBYztRQUl0QywySkFBb0QsRUFBRSxHQUFDO1FBRnZELGdGQUFnRjtRQUVoRixJQUFTLGdCQUFnQixzREFBOEI7UUFBdkQsSUFBUyxnQkFBZ0IsNERBQThCO1FBRWhELE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsVUFBVSxDQUFDLGFBQWE7WUFDeEIsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBcUJlLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7Ozs7O0tBU3pEO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQy9ELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRW5GLE9BQU8sSUFBSSxDQUFBOzs7O21CQUlJLE1BQU07cUJBQ0osZUFBZTtxQkFDZixJQUFJLENBQUMsWUFBWTt3QkFDZCxJQUFJOzs7O1VBSWxCLElBQUksQ0FBQyxRQUFRO2dCQUNiLENBQUMsQ0FBQyxJQUFJLENBQUE7Ozt5QkFHUyxnQkFBZ0I7MkJBQ2QsTUFBTTsyQkFDTixVQUFVLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZOzhCQUN6QyxJQUFJOzs7YUFHckI7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQTs7O3lCQUdTLFFBQVE7MkJBQ04sZUFBZTs2QkFDYixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29DQUN6RCxVQUFVO29CQUMxQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRTtvQkFDMUQsQ0FBQyxDQUFDLFNBQVM7b0NBQ0ssQ0FBQyxDQUFjLEVBQUUsRUFBRTtvQkFDbkMsTUFBTSxPQUFPLEdBQUksQ0FBQyxDQUFDLE1BQWMsRUFBRSxHQUV0QixDQUFDO29CQUNkLElBQUksT0FBTyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7d0JBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO3dCQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO29CQUM3QixDQUFDO2dCQUNILENBQUM7OzthQUdOO1VBQ0gsVUFBVTtnQkFDVixDQUFDLENBQUMsSUFBSSxDQUFBOzZDQUM2QixVQUFVLENBQUMsV0FBVztnQkFDbkQsSUFBSSxDQUFDLGVBQWU7b0JBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUEsZ0NBQWdDLElBQUksQ0FBQyxlQUFlLFFBQVE7b0JBQ2xFLENBQUMsQ0FBQyxFQUFFO2dCQUNKLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQy9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs2QkFHRSxDQUFDLENBQUMsR0FBRzsrQkFDSCxDQUFDLENBQUMsS0FBSztrQ0FDSixDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7O3NCQUV4QyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEseUJBQXlCLENBQUMsQ0FBQyxRQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTs7aUJBRXRFLENBQ0Y7YUFDRjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFBLHNDQUFzQzs7S0FFakQsQ0FBQztRQUNKLENBQUM7UUFFRDs7O1dBR0c7UUFDSSxLQUFLLENBQUMsV0FBVztZQU10QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQVEsQ0FBQztZQUNoRSxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN2QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUU3QixpRUFBaUU7WUFDakUsTUFBTSxTQUFTLEdBQTJCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUMvQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN0RSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDakMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixDQUFDO1lBQ0gsQ0FBQztZQUVELGtFQUFrRTtZQUNsRSx1REFBdUQ7WUFDdkQsTUFBTSxXQUFXLEdBQUc7Z0JBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDdkIsR0FBRyxTQUFTO2FBQ3lDLENBQUM7WUFFeEQsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3ZCLFdBQVc7Z0JBQ1gsa0JBQWtCO2FBQ25CLENBQUM7UUFDSixDQUFDOzs7Ozs7WUE5S1UsdURBQWU7Ozs7O1NBQWYsZUFBZSJ9
|
|
@@ -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==
|
package/dist_ts_web/elements/{ops-view-certificates.d.ts → domains/ops-view-certificates.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
-
import * as appstate from '
|
|
2
|
+
import * as appstate from '../../appstate.js';
|
|
3
3
|
declare global {
|
|
4
4
|
interface HTMLElementTagNameMap {
|
|
5
5
|
'ops-view-certificates': OpsViewCertificates;
|