dxcomplete 0.2.1 → 0.3.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/.env.example +0 -7
- package/README.md +68 -103
- package/dist/cli.js +2 -24
- package/dist/validate.js +10 -26
- package/docs/cost-model.md +2 -2
- package/docs/decision-basis.md +5 -11
- package/docs/diagrams.md +3 -3
- package/docs/index.md +25 -39
- package/docs/model.md +15 -23
- package/docs/open-questions.md +1 -1
- package/docs/taxonomy.md +7 -8
- package/docs/workflows.md +3 -3
- package/package.json +24 -24
- package/templates/process/README.md +11 -11
- package/templates/process/controls.yml +19 -19
- package/templates/process/cost-model.yml +3 -3
- package/templates/process/decision-basis.yml +4 -4
- package/templates/process/diagrams/00-decision-basis.mmd +1 -1
- package/templates/process/diagrams/00-overview.mmd +1 -1
- package/templates/process/diagrams/01-intake-triage.mmd +4 -4
- package/templates/process/diagrams/02-product-definition.mmd +3 -3
- package/templates/process/diagrams/03-engineering-execution.mmd +1 -1
- package/templates/process/diagrams/04-qa-verification.mmd +1 -1
- package/templates/process/diagrams/05-product-validation.mmd +1 -1
- package/templates/process/diagrams/06-change-release-control.mmd +1 -1
- package/templates/process/diagrams/07-deployment-operations.mmd +1 -1
- package/templates/process/diagrams/08-support-incident-management.mmd +1 -1
- package/templates/process/diagrams/09-problem-improvement.mmd +1 -1
- package/templates/process/diagrams/10-risk-control-management.mmd +1 -1
- package/templates/process/diagrams/11-audit-evidence-capture.mmd +1 -1
- package/templates/process/roles.yml +6 -6
- package/templates/process/taxonomy.yml +46 -46
- package/templates/process/workflows.yml +29 -29
- package/website/account.html +57 -0
- package/website/app.js +177 -0
- package/website/flow.html +4 -0
- package/website/glossary.html +4 -0
- package/website/index.html +4 -0
- package/website/objects.html +4 -0
- package/website/operating-guide.html +4 -0
- package/website/outcomes.html +4 -0
- package/website/phase-build.html +4 -0
- package/website/phase-elicit.html +4 -0
- package/website/phase-go-live.html +4 -0
- package/website/phase-measure.html +4 -0
- package/website/phase-operate.html +4 -0
- package/website/phase-orient.html +4 -0
- package/website/phase-weigh.html +4 -0
- package/website/roles.html +4 -0
- package/website/styles.css +217 -1
- package/dist/http/service.d.ts +0 -7
- package/dist/http/service.js +0 -725
- package/dist/mcp/docs.d.ts +0 -114
- package/dist/mcp/docs.js +0 -626
- package/dist/mcp/server.d.ts +0 -20
- package/dist/mcp/server.js +0 -3059
- package/dist/runtime/auth.d.ts +0 -162
- package/dist/runtime/auth.js +0 -394
- package/dist/runtime/check.d.ts +0 -7
- package/dist/runtime/check.js +0 -16
- package/dist/runtime/config.d.ts +0 -17
- package/dist/runtime/config.js +0 -93
- package/dist/runtime/mongo.d.ts +0 -9
- package/dist/runtime/mongo.js +0 -56
- package/dist/runtime/records.d.ts +0 -427
- package/dist/runtime/records.js +0 -2092
- package/scripts/check-env-surface.mjs +0 -136
- package/scripts/check-public-copy.mjs +0 -263
- package/scripts/check-service-boundary.mjs +0 -63
- package/scripts/runtime-work-order.mjs +0 -506
- package/scripts/smoke-mcp-http.mjs +0 -4026
- package/src/cli.ts +0 -268
- package/src/http/server.ts +0 -314
- package/src/http/service.ts +0 -934
- package/src/init.ts +0 -262
- package/src/install-manifest.ts +0 -144
- package/src/mcp/docs.ts +0 -777
- package/src/mcp/server.ts +0 -4580
- package/src/package-root.ts +0 -31
- package/src/runtime/actor.ts +0 -61
- package/src/runtime/auth.ts +0 -673
- package/src/runtime/check.ts +0 -18
- package/src/runtime/config.ts +0 -128
- package/src/runtime/mongo.ts +0 -89
- package/src/runtime/records.ts +0 -3205
- package/src/runtime/workspace.ts +0 -155
- package/src/upgrade.ts +0 -356
- package/src/validate.ts +0 -141
- package/src/version.ts +0 -16
package/website/app.js
CHANGED
|
@@ -34,3 +34,180 @@ roleButtons.forEach((button, index) => {
|
|
|
34
34
|
detailPanel.textContent = detail;
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
|
+
|
|
38
|
+
const accountPanel = document.querySelector("[data-account]");
|
|
39
|
+
let accountState;
|
|
40
|
+
|
|
41
|
+
if (accountPanel) {
|
|
42
|
+
loadAccount();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function loadAccount() {
|
|
46
|
+
accountPanel.innerHTML = `<p>Loading account state...</p>`;
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
const response = await fetch("/api/dxcomplete/web/session", {
|
|
50
|
+
credentials: "same-origin"
|
|
51
|
+
});
|
|
52
|
+
accountState = await response.json();
|
|
53
|
+
renderAccount();
|
|
54
|
+
} catch {
|
|
55
|
+
accountPanel.innerHTML = `
|
|
56
|
+
<div class="account-message account-message--error">
|
|
57
|
+
Account state could not be loaded. Try again in a moment.
|
|
58
|
+
</div>
|
|
59
|
+
`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function renderAccount(created) {
|
|
64
|
+
const error = new URLSearchParams(window.location.search).get("error");
|
|
65
|
+
|
|
66
|
+
if (!accountState?.authenticated) {
|
|
67
|
+
accountPanel.innerHTML = `
|
|
68
|
+
${error ? `<div class="account-message account-message--error">Sign in could not be completed.</div>` : ""}
|
|
69
|
+
<div class="account-intro">
|
|
70
|
+
<p>Use Google sign in to create and view your DX Complete workspaces.</p>
|
|
71
|
+
<a class="account-primary" href="${escapeHtml(accountState?.signInUrl || "/api/dxcomplete/web/auth/google/start?returnTo=/account.html")}">Sign in with Google</a>
|
|
72
|
+
</div>
|
|
73
|
+
`;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const workspaces = Array.isArray(accountState.workspaces) ? accountState.workspaces : [];
|
|
78
|
+
accountPanel.innerHTML = `
|
|
79
|
+
<div class="account-bar">
|
|
80
|
+
<div>
|
|
81
|
+
<span>Signed in</span>
|
|
82
|
+
<strong>${escapeHtml(accountState.actor?.email || accountState.actor?.displayName || "Google account")}</strong>
|
|
83
|
+
</div>
|
|
84
|
+
<button class="account-secondary" type="button" data-account-logout>Sign out</button>
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<form class="account-form" data-account-form>
|
|
88
|
+
<label for="workspace-name">Workspace name</label>
|
|
89
|
+
<div class="account-form__row">
|
|
90
|
+
<input id="workspace-name" name="name" type="text" minlength="2" maxlength="120" required autocomplete="organization" />
|
|
91
|
+
<button class="account-primary" type="submit">Create workspace</button>
|
|
92
|
+
</div>
|
|
93
|
+
<p>Use a service or project name that your team will recognize later.</p>
|
|
94
|
+
</form>
|
|
95
|
+
|
|
96
|
+
<div data-account-result>
|
|
97
|
+
${created ? renderCreatedWorkspace(created) : ""}
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<div class="account-list">
|
|
101
|
+
<h2>Your Workspaces</h2>
|
|
102
|
+
${workspaces.length ? workspaces.map(renderWorkspaceSummary).join("") : "<p>No workspaces yet.</p>"}
|
|
103
|
+
</div>
|
|
104
|
+
`;
|
|
105
|
+
|
|
106
|
+
accountPanel.querySelector("[data-account-logout]")?.addEventListener("click", logoutAccount);
|
|
107
|
+
accountPanel.querySelector("[data-account-form]")?.addEventListener("submit", createWorkspace);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async function createWorkspace(event) {
|
|
111
|
+
event.preventDefault();
|
|
112
|
+
const form = event.currentTarget;
|
|
113
|
+
const result = accountPanel.querySelector("[data-account-result]");
|
|
114
|
+
const button = form.querySelector("button[type='submit']");
|
|
115
|
+
const formData = new FormData(form);
|
|
116
|
+
const name = String(formData.get("name") || "");
|
|
117
|
+
|
|
118
|
+
button.disabled = true;
|
|
119
|
+
result.innerHTML = `<div class="account-message">Creating workspace...</div>`;
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
const response = await fetch("/api/dxcomplete/web/workspaces", {
|
|
123
|
+
method: "POST",
|
|
124
|
+
credentials: "same-origin",
|
|
125
|
+
headers: {
|
|
126
|
+
"content-type": "application/json",
|
|
127
|
+
"x-dxc-csrf-token": accountState.csrfToken
|
|
128
|
+
},
|
|
129
|
+
body: JSON.stringify({ name })
|
|
130
|
+
});
|
|
131
|
+
const body = await response.json();
|
|
132
|
+
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
throw new Error(body.error_description || "Workspace could not be created.");
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
form.reset();
|
|
138
|
+
await refreshAccountState();
|
|
139
|
+
renderAccount(body);
|
|
140
|
+
} catch (error) {
|
|
141
|
+
result.innerHTML = `
|
|
142
|
+
<div class="account-message account-message--error">
|
|
143
|
+
${escapeHtml(error instanceof Error ? error.message : "Workspace could not be created.")}
|
|
144
|
+
</div>
|
|
145
|
+
`;
|
|
146
|
+
} finally {
|
|
147
|
+
button.disabled = false;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
async function logoutAccount() {
|
|
152
|
+
await fetch("/api/dxcomplete/web/logout", {
|
|
153
|
+
method: "POST",
|
|
154
|
+
credentials: "same-origin",
|
|
155
|
+
headers: {
|
|
156
|
+
"x-dxc-csrf-token": accountState.csrfToken
|
|
157
|
+
}
|
|
158
|
+
}).catch(() => undefined);
|
|
159
|
+
|
|
160
|
+
await loadAccount();
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
async function refreshAccountState() {
|
|
164
|
+
const response = await fetch("/api/dxcomplete/web/session", {
|
|
165
|
+
credentials: "same-origin"
|
|
166
|
+
});
|
|
167
|
+
accountState = await response.json();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function renderCreatedWorkspace(created) {
|
|
171
|
+
const env = created.install?.env || {};
|
|
172
|
+
const workspace = created.install?.workspaceConfig || {};
|
|
173
|
+
const envBlock = [
|
|
174
|
+
`DXC_SERVICE_URL=${env.DXC_SERVICE_URL || ""}`,
|
|
175
|
+
`DXC_SERVICE_CLIENT_ID=${env.DXC_SERVICE_CLIENT_ID || ""}`,
|
|
176
|
+
`DXC_SERVICE_CLIENT_SECRET=${env.DXC_SERVICE_CLIENT_SECRET || ""}`
|
|
177
|
+
].join("\n");
|
|
178
|
+
const workspaceBlock = JSON.stringify(workspace, null, 2);
|
|
179
|
+
|
|
180
|
+
return `
|
|
181
|
+
<div class="account-result">
|
|
182
|
+
<h2>Workspace Created</h2>
|
|
183
|
+
<p>Save these values now. The secret is shown only once.</p>
|
|
184
|
+
<h3>Service Values</h3>
|
|
185
|
+
<pre><code>${escapeHtml(envBlock)}</code></pre>
|
|
186
|
+
<h3>Workspace JSON</h3>
|
|
187
|
+
<pre><code>${escapeHtml(workspaceBlock)}</code></pre>
|
|
188
|
+
</div>
|
|
189
|
+
`;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function renderWorkspaceSummary(workspace) {
|
|
193
|
+
const clients = Array.isArray(workspace.serviceClients) ? workspace.serviceClients : [];
|
|
194
|
+
return `
|
|
195
|
+
<article class="account-workspace">
|
|
196
|
+
<h3>${escapeHtml(workspace.name || workspace.workspaceId)}</h3>
|
|
197
|
+
<p>${escapeHtml(workspace.workspaceId || "")}</p>
|
|
198
|
+
<dl>
|
|
199
|
+
<div><dt>Roles</dt><dd>${escapeHtml((workspace.roles || []).join(", ") || "member")}</dd></div>
|
|
200
|
+
<div><dt>Service clients</dt><dd>${clients.length}</dd></div>
|
|
201
|
+
</dl>
|
|
202
|
+
</article>
|
|
203
|
+
`;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
function escapeHtml(value) {
|
|
207
|
+
return String(value)
|
|
208
|
+
.replace(/&/g, "&")
|
|
209
|
+
.replace(/</g, "<")
|
|
210
|
+
.replace(/>/g, ">")
|
|
211
|
+
.replace(/"/g, """)
|
|
212
|
+
.replace(/'/g, "'");
|
|
213
|
+
}
|
package/website/flow.html
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
package/website/glossary.html
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
package/website/index.html
CHANGED
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
<small>Plan, deliver, run, measure</small>
|
|
18
18
|
</span>
|
|
19
19
|
</div>
|
|
20
|
+
<div class="topbar__actions">
|
|
21
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
22
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
23
|
+
</div>
|
|
20
24
|
</header>
|
|
21
25
|
|
|
22
26
|
<div class="layout">
|
package/website/objects.html
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
package/website/outcomes.html
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
package/website/phase-build.html
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
package/website/phase-weigh.html
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
package/website/roles.html
CHANGED
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
<span class="brand-mark" aria-hidden="true">DX</span>
|
|
14
14
|
<span><strong>DX Complete</strong><small>Plan, deliver, run, measure</small></span>
|
|
15
15
|
</div>
|
|
16
|
+
<div class="topbar__actions">
|
|
17
|
+
<a class="topbar__link" href="https://www.npmjs.com/package/dxcomplete" target="_blank" rel="noreferrer">npm</a>
|
|
18
|
+
<a class="topbar__link" href="./account.html">Sign in</a>
|
|
19
|
+
</div>
|
|
16
20
|
</header>
|
|
17
21
|
<div class="layout">
|
|
18
22
|
<aside class="sidebar" aria-label="Documentation pages">
|
package/website/styles.css
CHANGED
|
@@ -59,7 +59,7 @@ a {
|
|
|
59
59
|
display: flex;
|
|
60
60
|
min-height: 72px;
|
|
61
61
|
align-items: center;
|
|
62
|
-
justify-content:
|
|
62
|
+
justify-content: space-between;
|
|
63
63
|
gap: 1.5rem;
|
|
64
64
|
border-bottom: 1px solid rgb(215 220 226 / 84%);
|
|
65
65
|
background: rgb(246 247 249 / 92%);
|
|
@@ -100,6 +100,211 @@ a {
|
|
|
100
100
|
box-shadow: 0 8px 22px rgb(25 32 44 / 7%);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
.topbar__actions {
|
|
104
|
+
display: flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
gap: 0.65rem;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.topbar__link {
|
|
110
|
+
border: 1px solid var(--line);
|
|
111
|
+
border-radius: 6px;
|
|
112
|
+
background: var(--surface);
|
|
113
|
+
color: var(--accent-strong);
|
|
114
|
+
font-size: 0.84rem;
|
|
115
|
+
font-weight: 800;
|
|
116
|
+
line-height: 1;
|
|
117
|
+
padding: 0.62rem 0.78rem;
|
|
118
|
+
text-decoration: none;
|
|
119
|
+
text-transform: uppercase;
|
|
120
|
+
transition:
|
|
121
|
+
border-color 160ms ease,
|
|
122
|
+
color 160ms ease,
|
|
123
|
+
transform 160ms ease;
|
|
124
|
+
white-space: nowrap;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.topbar__link:hover,
|
|
128
|
+
.topbar__link:focus {
|
|
129
|
+
border-color: var(--accent);
|
|
130
|
+
color: var(--ink);
|
|
131
|
+
transform: translateY(-1px);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.account-panel {
|
|
135
|
+
display: grid;
|
|
136
|
+
gap: 1.25rem;
|
|
137
|
+
margin-top: 2rem;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.account-intro,
|
|
141
|
+
.account-bar,
|
|
142
|
+
.account-form,
|
|
143
|
+
.account-result,
|
|
144
|
+
.account-workspace,
|
|
145
|
+
.account-message {
|
|
146
|
+
border: 1px solid var(--line);
|
|
147
|
+
border-radius: var(--radius);
|
|
148
|
+
background: var(--surface);
|
|
149
|
+
box-shadow: 0 12px 34px rgb(25 32 44 / 6%);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.account-intro,
|
|
153
|
+
.account-form,
|
|
154
|
+
.account-result,
|
|
155
|
+
.account-workspace,
|
|
156
|
+
.account-message {
|
|
157
|
+
padding: 1.25rem;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.account-bar {
|
|
161
|
+
display: flex;
|
|
162
|
+
align-items: center;
|
|
163
|
+
justify-content: space-between;
|
|
164
|
+
gap: 1rem;
|
|
165
|
+
padding: 1rem 1.25rem;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.account-bar span,
|
|
169
|
+
.account-form label {
|
|
170
|
+
display: block;
|
|
171
|
+
color: var(--muted);
|
|
172
|
+
font-size: 0.78rem;
|
|
173
|
+
font-weight: 800;
|
|
174
|
+
text-transform: uppercase;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.account-bar strong {
|
|
178
|
+
display: block;
|
|
179
|
+
margin-top: 0.1rem;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.account-primary,
|
|
183
|
+
.account-secondary {
|
|
184
|
+
border: 1px solid transparent;
|
|
185
|
+
border-radius: 6px;
|
|
186
|
+
cursor: pointer;
|
|
187
|
+
display: inline-flex;
|
|
188
|
+
align-items: center;
|
|
189
|
+
justify-content: center;
|
|
190
|
+
font: inherit;
|
|
191
|
+
font-weight: 800;
|
|
192
|
+
line-height: 1;
|
|
193
|
+
min-height: 42px;
|
|
194
|
+
padding: 0.75rem 0.95rem;
|
|
195
|
+
text-decoration: none;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.account-primary {
|
|
199
|
+
background: var(--accent);
|
|
200
|
+
color: #ffffff;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.account-primary:hover,
|
|
204
|
+
.account-primary:focus {
|
|
205
|
+
background: var(--accent-strong);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.account-primary:disabled {
|
|
209
|
+
cursor: progress;
|
|
210
|
+
opacity: 0.72;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.account-secondary {
|
|
214
|
+
border-color: var(--line);
|
|
215
|
+
background: var(--surface);
|
|
216
|
+
color: var(--accent-strong);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.account-secondary:hover,
|
|
220
|
+
.account-secondary:focus {
|
|
221
|
+
border-color: var(--accent);
|
|
222
|
+
color: var(--ink);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.account-form__row {
|
|
226
|
+
display: grid;
|
|
227
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
228
|
+
gap: 0.75rem;
|
|
229
|
+
margin-top: 0.5rem;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.account-form input {
|
|
233
|
+
width: 100%;
|
|
234
|
+
border: 1px solid var(--line);
|
|
235
|
+
border-radius: 6px;
|
|
236
|
+
color: var(--ink);
|
|
237
|
+
font: inherit;
|
|
238
|
+
min-height: 42px;
|
|
239
|
+
padding: 0.65rem 0.75rem;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.account-form p,
|
|
243
|
+
.account-intro p,
|
|
244
|
+
.account-workspace p,
|
|
245
|
+
.account-message {
|
|
246
|
+
color: var(--muted);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.account-result {
|
|
250
|
+
border-color: rgb(30 127 117 / 32%);
|
|
251
|
+
background: #f7fbfa;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.account-result h2,
|
|
255
|
+
.account-result h3,
|
|
256
|
+
.account-list h2,
|
|
257
|
+
.account-workspace h3 {
|
|
258
|
+
margin: 0;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.account-result h3 {
|
|
262
|
+
margin-top: 1.2rem;
|
|
263
|
+
font-size: 0.95rem;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.account-result pre {
|
|
267
|
+
overflow: auto;
|
|
268
|
+
border: 1px solid var(--line);
|
|
269
|
+
border-radius: 6px;
|
|
270
|
+
background: #20242b;
|
|
271
|
+
color: #ffffff;
|
|
272
|
+
margin: 0.5rem 0 0;
|
|
273
|
+
padding: 1rem;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.account-list {
|
|
277
|
+
display: grid;
|
|
278
|
+
gap: 0.85rem;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.account-workspace dl {
|
|
282
|
+
display: grid;
|
|
283
|
+
gap: 0.45rem;
|
|
284
|
+
margin: 1rem 0 0;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.account-workspace dl div {
|
|
288
|
+
display: grid;
|
|
289
|
+
grid-template-columns: 150px minmax(0, 1fr);
|
|
290
|
+
gap: 0.75rem;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.account-workspace dt {
|
|
294
|
+
color: var(--muted);
|
|
295
|
+
font-weight: 800;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.account-workspace dd {
|
|
299
|
+
margin: 0;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.account-message--error {
|
|
303
|
+
border-color: rgb(180 98 18 / 34%);
|
|
304
|
+
background: #fff8ef;
|
|
305
|
+
color: #6d3a08;
|
|
306
|
+
}
|
|
307
|
+
|
|
103
308
|
.layout {
|
|
104
309
|
display: grid;
|
|
105
310
|
grid-template-columns: 290px minmax(0, 1fr);
|
|
@@ -1099,6 +1304,10 @@ p {
|
|
|
1099
1304
|
padding: 18px 20px;
|
|
1100
1305
|
}
|
|
1101
1306
|
|
|
1307
|
+
.topbar__actions {
|
|
1308
|
+
flex-wrap: wrap;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1102
1311
|
.layout {
|
|
1103
1312
|
display: block;
|
|
1104
1313
|
}
|
|
@@ -1148,10 +1357,17 @@ p {
|
|
|
1148
1357
|
.record-groups dl div,
|
|
1149
1358
|
.record-item summary,
|
|
1150
1359
|
.record-fields div,
|
|
1360
|
+
.account-form__row,
|
|
1361
|
+
.account-workspace dl div,
|
|
1151
1362
|
.glossary-list div {
|
|
1152
1363
|
grid-template-columns: 1fr;
|
|
1153
1364
|
}
|
|
1154
1365
|
|
|
1366
|
+
.account-bar {
|
|
1367
|
+
align-items: flex-start;
|
|
1368
|
+
flex-direction: column;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1155
1371
|
}
|
|
1156
1372
|
|
|
1157
1373
|
@media (max-width: 520px) {
|
package/dist/http/service.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
-
export declare function closeDxcompleteServiceRuntime(): Promise<void>;
|
|
3
|
-
export declare function closeDxcompleteHttpRuntime(): Promise<void>;
|
|
4
|
-
export default function handleDxcompleteServiceRequest(req: IncomingMessage & {
|
|
5
|
-
body?: unknown;
|
|
6
|
-
query?: Record<string, unknown>;
|
|
7
|
-
}, res: ServerResponse): Promise<void>;
|