@jskit-ai/console-web 0.1.115 → 0.1.118
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/package.json
CHANGED
|
@@ -1,13 +1,224 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/console-web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.118",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@jskit-ai/auth-web": "0.1.
|
|
10
|
-
"@jskit-ai/console-core": "0.1.
|
|
11
|
-
"@jskit-ai/shell-web": "0.1.
|
|
9
|
+
"@jskit-ai/auth-web": "0.1.150",
|
|
10
|
+
"@jskit-ai/console-core": "0.1.113",
|
|
11
|
+
"@jskit-ai/shell-web": "0.1.154"
|
|
12
|
+
},
|
|
13
|
+
"description": "Authenticated console surface scaffold and surface policy wiring.",
|
|
14
|
+
"jskit": {
|
|
15
|
+
"kind": "runtime",
|
|
16
|
+
"capabilities": {
|
|
17
|
+
"provides": [
|
|
18
|
+
"console.web"
|
|
19
|
+
],
|
|
20
|
+
"requires": [
|
|
21
|
+
"console.core"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"runtime": {
|
|
25
|
+
"server": {
|
|
26
|
+
"providers": []
|
|
27
|
+
},
|
|
28
|
+
"client": {
|
|
29
|
+
"providers": []
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"metadata": {
|
|
33
|
+
"apiSummary": {
|
|
34
|
+
"surfaces": [
|
|
35
|
+
{
|
|
36
|
+
"subpath": "./client",
|
|
37
|
+
"summary": "Exports no runtime API today (reserved console surface package entrypoint)."
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"containerTokens": {
|
|
41
|
+
"server": [],
|
|
42
|
+
"client": []
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"ui": {
|
|
46
|
+
"placements": {
|
|
47
|
+
"outlets": [
|
|
48
|
+
{
|
|
49
|
+
"target": "console-settings:primary-menu",
|
|
50
|
+
"surfaces": [
|
|
51
|
+
"console"
|
|
52
|
+
],
|
|
53
|
+
"source": "templates/src/pages/console/settings.vue"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"topology": {
|
|
57
|
+
"placements": [
|
|
58
|
+
{
|
|
59
|
+
"id": "page.section-nav",
|
|
60
|
+
"owner": "console-settings",
|
|
61
|
+
"description": "Navigation between console settings child pages.",
|
|
62
|
+
"surfaces": [
|
|
63
|
+
"console"
|
|
64
|
+
],
|
|
65
|
+
"variants": {
|
|
66
|
+
"compact": {
|
|
67
|
+
"outlet": "console-settings:primary-menu",
|
|
68
|
+
"renderers": {
|
|
69
|
+
"link": "local.main.ui.surface-aware-menu-link-item"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"medium": {
|
|
73
|
+
"outlet": "console-settings:primary-menu",
|
|
74
|
+
"renderers": {
|
|
75
|
+
"link": "local.main.ui.surface-aware-menu-link-item"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"expanded": {
|
|
79
|
+
"outlet": "console-settings:primary-menu",
|
|
80
|
+
"renderers": {
|
|
81
|
+
"link": "local.main.ui.surface-aware-menu-link-item"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"contributions": [
|
|
89
|
+
{
|
|
90
|
+
"id": "console.web.profile.menu.console",
|
|
91
|
+
"target": "auth.profile-menu",
|
|
92
|
+
"kind": "link",
|
|
93
|
+
"surfaces": [
|
|
94
|
+
"*"
|
|
95
|
+
],
|
|
96
|
+
"order": 600,
|
|
97
|
+
"when": "auth.authenticated === true && surfaceAccess.consoleowner === true && surface !== \"console\"",
|
|
98
|
+
"source": "mutations.text#console-web-profile-menu-console-placement"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "console.web.menu.settings",
|
|
102
|
+
"target": "shell.primary-nav",
|
|
103
|
+
"kind": "link",
|
|
104
|
+
"surfaces": [
|
|
105
|
+
"console"
|
|
106
|
+
],
|
|
107
|
+
"order": 100,
|
|
108
|
+
"when": "auth.authenticated === true",
|
|
109
|
+
"source": "mutations.text#console-web-console-settings-placement"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"mutations": {
|
|
116
|
+
"dependencies": {
|
|
117
|
+
"runtime": {
|
|
118
|
+
"@jskit-ai/auth-web": "0.1.150",
|
|
119
|
+
"@jskit-ai/console-core": "0.1.113",
|
|
120
|
+
"@jskit-ai/shell-web": "0.1.154"
|
|
121
|
+
},
|
|
122
|
+
"dev": {}
|
|
123
|
+
},
|
|
124
|
+
"packageJson": {
|
|
125
|
+
"scripts": {
|
|
126
|
+
"server:console": "SERVER_SURFACE=console node ./bin/server.js",
|
|
127
|
+
"dev:console": "VITE_SURFACE=console vite",
|
|
128
|
+
"build:console": "VITE_SURFACE=console vite build"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"procfile": {},
|
|
132
|
+
"files": [
|
|
133
|
+
{
|
|
134
|
+
"from": "templates/src/pages/console.vue",
|
|
135
|
+
"toSurface": "console",
|
|
136
|
+
"toSurfaceRoot": true,
|
|
137
|
+
"ownership": "app",
|
|
138
|
+
"reason": "Install shell-driven console wrapper page.",
|
|
139
|
+
"category": "console-web",
|
|
140
|
+
"id": "console-web-page-console-wrapper"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"from": "templates/src/pages/console/index.vue",
|
|
144
|
+
"toSurface": "console",
|
|
145
|
+
"toSurfacePath": "index.vue",
|
|
146
|
+
"ownership": "app",
|
|
147
|
+
"reason": "Install shell-driven console page starter.",
|
|
148
|
+
"category": "console-web",
|
|
149
|
+
"id": "console-web-page-console"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"from": "templates/src/pages/console/settings.vue",
|
|
153
|
+
"toSurface": "console",
|
|
154
|
+
"toSurfacePath": "settings.vue",
|
|
155
|
+
"ownership": "app",
|
|
156
|
+
"reason": "Install console settings shell route scaffold for console-web.",
|
|
157
|
+
"category": "console-web",
|
|
158
|
+
"id": "console-web-page-console-settings-shell"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"from": "templates/src/pages/console/settings/index.vue",
|
|
162
|
+
"toSurface": "console",
|
|
163
|
+
"toSurfacePath": "settings/index.vue",
|
|
164
|
+
"ownership": "app",
|
|
165
|
+
"reason": "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
166
|
+
"category": "console-web",
|
|
167
|
+
"id": "console-web-page-console-settings"
|
|
168
|
+
}
|
|
169
|
+
],
|
|
170
|
+
"text": [
|
|
171
|
+
{
|
|
172
|
+
"op": "append-text",
|
|
173
|
+
"file": "config/surfaceAccessPolicies.js",
|
|
174
|
+
"position": "bottom",
|
|
175
|
+
"skipIfContains": "surfaceAccessPolicies.console_owner = {",
|
|
176
|
+
"value": "\nsurfaceAccessPolicies.console_owner = {\n requireAuth: true,\n requireFlagsAll: [\"console_owner\"]\n};\n",
|
|
177
|
+
"reason": "Register console-owner surface access policy for the console surface.",
|
|
178
|
+
"category": "console-web",
|
|
179
|
+
"id": "console-web-surface-access-policies-console-owner"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"op": "append-text",
|
|
183
|
+
"file": "config/public.js",
|
|
184
|
+
"position": "bottom",
|
|
185
|
+
"skipIfContains": "config.surfaceDefinitions.console = {",
|
|
186
|
+
"value": "\nconfig.surfaceDefinitions.console = {\n id: \"console\",\n label: \"Console\",\n pagesRoot: \"console\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n accessPolicyId: \"console_owner\",\n icon: \"mdi-console-network-outline\",\n showInSurfaceSwitchMenu: false,\n origin: \"\"\n};\n",
|
|
187
|
+
"reason": "Register console surface definition once console-web is installed.",
|
|
188
|
+
"category": "console-web",
|
|
189
|
+
"id": "console-web-surface-config-console"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"op": "append-text",
|
|
193
|
+
"file": "src/placement.js",
|
|
194
|
+
"position": "bottom",
|
|
195
|
+
"skipIfContains": "id: \"console.web.profile.menu.console\"",
|
|
196
|
+
"value": "\naddPlacement({\n id: \"console.web.profile.menu.console\",\n target: \"auth.profile-menu\",\n kind: \"link\",\n surfaces: [\"*\"],\n order: 600,\n props: {\n label: \"Go to console\",\n to: \"/console\",\n icon: \"mdi-console-network-outline\"\n },\n when: ({ auth, surfaceAccess, surface }) => {\n return auth?.authenticated === true && surfaceAccess?.consoleowner === true && surface !== \"console\";\n }\n});\n",
|
|
197
|
+
"reason": "Append owner-only console navigation entry into the authenticated profile menu outside the console surface.",
|
|
198
|
+
"category": "console-web",
|
|
199
|
+
"id": "console-web-profile-menu-console-placement"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"op": "append-text",
|
|
203
|
+
"file": "src/placement.js",
|
|
204
|
+
"position": "bottom",
|
|
205
|
+
"skipIfContains": "id: \"console.web.menu.settings\"",
|
|
206
|
+
"value": "\naddPlacement({\n id: \"console.web.menu.settings\",\n target: \"shell.primary-nav\",\n kind: \"link\",\n surfaces: [\"console\"],\n order: 100,\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => auth?.authenticated === true\n});\n",
|
|
207
|
+
"reason": "Append console-web settings menu placement into app-owned placement registry.",
|
|
208
|
+
"category": "console-web",
|
|
209
|
+
"id": "console-web-console-settings-placement"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"op": "append-text",
|
|
213
|
+
"file": "src/placementTopology.js",
|
|
214
|
+
"position": "bottom",
|
|
215
|
+
"skipIfContains": "owner: \"console-settings\"",
|
|
216
|
+
"value": "\naddPlacementTopology({\n id: \"page.section-nav\",\n owner: \"console-settings\",\n description: \"Navigation between console settings child pages.\",\n surfaces: [\"console\"],\n variants: {\n compact: {\n outlet: \"console-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n medium: {\n outlet: \"console-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n expanded: {\n outlet: \"console-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n }\n }\n});\n",
|
|
217
|
+
"reason": "Append console settings semantic topology into app-owned placement topology.",
|
|
218
|
+
"category": "console-web",
|
|
219
|
+
"id": "console-web-settings-placement-topology"
|
|
220
|
+
}
|
|
221
|
+
]
|
|
222
|
+
}
|
|
12
223
|
}
|
|
13
224
|
}
|
|
@@ -3,27 +3,29 @@ import path from "node:path";
|
|
|
3
3
|
import test from "node:test";
|
|
4
4
|
import { readFile } from "node:fs/promises";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
-
import
|
|
6
|
+
import packageJson from "../package.json" with { type: "json" };
|
|
7
|
+
|
|
8
|
+
const packageMetadata = packageJson.jskit;
|
|
7
9
|
|
|
8
10
|
const TEST_DIRECTORY = path.dirname(fileURLToPath(import.meta.url));
|
|
9
11
|
const PACKAGE_DIR = path.resolve(TEST_DIRECTORY, "..");
|
|
10
12
|
|
|
11
13
|
function findFileMutation(id) {
|
|
12
|
-
const files =
|
|
14
|
+
const files = packageMetadata?.mutations?.files;
|
|
13
15
|
return Array.isArray(files)
|
|
14
16
|
? files.find((entry) => String(entry?.id || "").trim() === id) || null
|
|
15
17
|
: null;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
function findTextMutation(id) {
|
|
19
|
-
const text =
|
|
21
|
+
const text = packageMetadata?.mutations?.text;
|
|
20
22
|
return Array.isArray(text)
|
|
21
23
|
? text.find((entry) => String(entry?.id || "").trim() === id) || null
|
|
22
24
|
: null;
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
function readOutlets(target = "") {
|
|
26
|
-
const outlets =
|
|
28
|
+
const outlets = packageMetadata?.metadata?.ui?.placements?.outlets;
|
|
27
29
|
const normalizedTarget = String(target || "").trim();
|
|
28
30
|
return Array.isArray(outlets)
|
|
29
31
|
? outlets.filter((entry) => String(entry?.target || "").trim() === normalizedTarget)
|
|
@@ -31,7 +33,7 @@ function readOutlets(target = "") {
|
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
function findTopology(id, owner = "") {
|
|
34
|
-
const placements =
|
|
36
|
+
const placements = packageMetadata?.metadata?.ui?.placements?.topology?.placements;
|
|
35
37
|
const normalizedId = String(id || "").trim();
|
|
36
38
|
const normalizedOwner = String(owner || "").trim();
|
|
37
39
|
return Array.isArray(placements)
|
|
@@ -44,14 +46,14 @@ function findTopology(id, owner = "") {
|
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
function findContribution(id) {
|
|
47
|
-
const contributions =
|
|
49
|
+
const contributions = packageMetadata?.metadata?.ui?.placements?.contributions;
|
|
48
50
|
return Array.isArray(contributions)
|
|
49
51
|
? contributions.find((entry) => String(entry?.id || "").trim() === id) || null
|
|
50
52
|
: null;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
test("console-web installs console surface scripts and files", () => {
|
|
54
|
-
assert.deepEqual(
|
|
56
|
+
assert.deepEqual(packageMetadata?.mutations?.packageJson?.scripts, {
|
|
55
57
|
"server:console": "SERVER_SURFACE=console node ./bin/server.js",
|
|
56
58
|
"dev:console": "VITE_SURFACE=console vite",
|
|
57
59
|
"build:console": "VITE_SURFACE=console vite build"
|
package/package.descriptor.mjs
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
export default Object.freeze({
|
|
2
|
-
packageVersion: 1,
|
|
3
|
-
packageId: "@jskit-ai/console-web",
|
|
4
|
-
version: "0.1.115",
|
|
5
|
-
kind: "runtime",
|
|
6
|
-
description: "Authenticated console surface scaffold and surface policy wiring.",
|
|
7
|
-
dependsOn: [
|
|
8
|
-
"@jskit-ai/auth-web",
|
|
9
|
-
"@jskit-ai/console-core",
|
|
10
|
-
"@jskit-ai/shell-web",
|
|
11
|
-
],
|
|
12
|
-
capabilities: {
|
|
13
|
-
provides: [
|
|
14
|
-
"console.web"
|
|
15
|
-
],
|
|
16
|
-
requires: [
|
|
17
|
-
"console.core"
|
|
18
|
-
]
|
|
19
|
-
},
|
|
20
|
-
runtime: {
|
|
21
|
-
server: {
|
|
22
|
-
providers: []
|
|
23
|
-
},
|
|
24
|
-
client: {
|
|
25
|
-
providers: []
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
metadata: {
|
|
29
|
-
apiSummary: {
|
|
30
|
-
surfaces: [
|
|
31
|
-
{
|
|
32
|
-
subpath: "./client",
|
|
33
|
-
summary: "Exports no runtime API today (reserved console surface package entrypoint)."
|
|
34
|
-
}
|
|
35
|
-
],
|
|
36
|
-
containerTokens: {
|
|
37
|
-
server: [],
|
|
38
|
-
client: []
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
ui: {
|
|
42
|
-
placements: {
|
|
43
|
-
outlets: [
|
|
44
|
-
{
|
|
45
|
-
target: "console-settings:primary-menu",
|
|
46
|
-
surfaces: ["console"],
|
|
47
|
-
source: "templates/src/pages/console/settings.vue"
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
topology: {
|
|
51
|
-
placements: [
|
|
52
|
-
{
|
|
53
|
-
id: "page.section-nav",
|
|
54
|
-
owner: "console-settings",
|
|
55
|
-
description: "Navigation between console settings child pages.",
|
|
56
|
-
surfaces: ["console"],
|
|
57
|
-
variants: {
|
|
58
|
-
compact: {
|
|
59
|
-
outlet: "console-settings:primary-menu",
|
|
60
|
-
renderers: {
|
|
61
|
-
link: "local.main.ui.surface-aware-menu-link-item"
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
medium: {
|
|
65
|
-
outlet: "console-settings:primary-menu",
|
|
66
|
-
renderers: {
|
|
67
|
-
link: "local.main.ui.surface-aware-menu-link-item"
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
expanded: {
|
|
71
|
-
outlet: "console-settings:primary-menu",
|
|
72
|
-
renderers: {
|
|
73
|
-
link: "local.main.ui.surface-aware-menu-link-item"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
contributions: [
|
|
81
|
-
{
|
|
82
|
-
id: "console.web.profile.menu.console",
|
|
83
|
-
target: "auth.profile-menu",
|
|
84
|
-
kind: "link",
|
|
85
|
-
surfaces: ["*"],
|
|
86
|
-
order: 600,
|
|
87
|
-
when: "auth.authenticated === true && surfaceAccess.consoleowner === true && surface !== \"console\"",
|
|
88
|
-
source: "mutations.text#console-web-profile-menu-console-placement"
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
id: "console.web.menu.settings",
|
|
92
|
-
target: "shell.primary-nav",
|
|
93
|
-
kind: "link",
|
|
94
|
-
surfaces: ["console"],
|
|
95
|
-
order: 100,
|
|
96
|
-
when: "auth.authenticated === true",
|
|
97
|
-
source: "mutations.text#console-web-console-settings-placement"
|
|
98
|
-
}
|
|
99
|
-
]
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
mutations: {
|
|
104
|
-
dependencies: {
|
|
105
|
-
runtime: {
|
|
106
|
-
"@jskit-ai/auth-web": "0.1.147",
|
|
107
|
-
"@jskit-ai/console-core": "0.1.110",
|
|
108
|
-
"@jskit-ai/shell-web": "0.1.147",
|
|
109
|
-
},
|
|
110
|
-
dev: {}
|
|
111
|
-
},
|
|
112
|
-
packageJson: {
|
|
113
|
-
scripts: {
|
|
114
|
-
"server:console": "SERVER_SURFACE=console node ./bin/server.js",
|
|
115
|
-
"dev:console": "VITE_SURFACE=console vite",
|
|
116
|
-
"build:console": "VITE_SURFACE=console vite build"
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
procfile: {},
|
|
120
|
-
files: [
|
|
121
|
-
{
|
|
122
|
-
from: "templates/src/pages/console.vue",
|
|
123
|
-
toSurface: "console",
|
|
124
|
-
toSurfaceRoot: true,
|
|
125
|
-
ownership: "app",
|
|
126
|
-
reason: "Install shell-driven console wrapper page.",
|
|
127
|
-
category: "console-web",
|
|
128
|
-
id: "console-web-page-console-wrapper"
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
from: "templates/src/pages/console/index.vue",
|
|
132
|
-
toSurface: "console",
|
|
133
|
-
toSurfacePath: "index.vue",
|
|
134
|
-
ownership: "app",
|
|
135
|
-
reason: "Install shell-driven console page starter.",
|
|
136
|
-
category: "console-web",
|
|
137
|
-
id: "console-web-page-console"
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
from: "templates/src/pages/console/settings.vue",
|
|
141
|
-
toSurface: "console",
|
|
142
|
-
toSurfacePath: "settings.vue",
|
|
143
|
-
ownership: "app",
|
|
144
|
-
reason: "Install console settings shell route scaffold for console-web.",
|
|
145
|
-
category: "console-web",
|
|
146
|
-
id: "console-web-page-console-settings-shell"
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
from: "templates/src/pages/console/settings/index.vue",
|
|
150
|
-
toSurface: "console",
|
|
151
|
-
toSurfacePath: "settings/index.vue",
|
|
152
|
-
ownership: "app",
|
|
153
|
-
reason: "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
154
|
-
category: "console-web",
|
|
155
|
-
id: "console-web-page-console-settings"
|
|
156
|
-
}
|
|
157
|
-
],
|
|
158
|
-
text: [
|
|
159
|
-
{
|
|
160
|
-
op: "append-text",
|
|
161
|
-
file: "config/surfaceAccessPolicies.js",
|
|
162
|
-
position: "bottom",
|
|
163
|
-
skipIfContains: "surfaceAccessPolicies.console_owner = {",
|
|
164
|
-
value: "\nsurfaceAccessPolicies.console_owner = {\n requireAuth: true,\n requireFlagsAll: [\"console_owner\"]\n};\n",
|
|
165
|
-
reason: "Register console-owner surface access policy for the console surface.",
|
|
166
|
-
category: "console-web",
|
|
167
|
-
id: "console-web-surface-access-policies-console-owner"
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
op: "append-text",
|
|
171
|
-
file: "config/public.js",
|
|
172
|
-
position: "bottom",
|
|
173
|
-
skipIfContains: "config.surfaceDefinitions.console = {",
|
|
174
|
-
value:
|
|
175
|
-
"\nconfig.surfaceDefinitions.console = {\n id: \"console\",\n label: \"Console\",\n pagesRoot: \"console\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n accessPolicyId: \"console_owner\",\n icon: \"mdi-console-network-outline\",\n showInSurfaceSwitchMenu: false,\n origin: \"\"\n};\n",
|
|
176
|
-
reason: "Register console surface definition once console-web is installed.",
|
|
177
|
-
category: "console-web",
|
|
178
|
-
id: "console-web-surface-config-console"
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
op: "append-text",
|
|
182
|
-
file: "src/placement.js",
|
|
183
|
-
position: "bottom",
|
|
184
|
-
skipIfContains: "id: \"console.web.profile.menu.console\"",
|
|
185
|
-
value:
|
|
186
|
-
"\naddPlacement({\n id: \"console.web.profile.menu.console\",\n target: \"auth.profile-menu\",\n kind: \"link\",\n surfaces: [\"*\"],\n order: 600,\n props: {\n label: \"Go to console\",\n to: \"/console\",\n icon: \"mdi-console-network-outline\"\n },\n when: ({ auth, surfaceAccess, surface }) => {\n return auth?.authenticated === true && surfaceAccess?.consoleowner === true && surface !== \"console\";\n }\n});\n",
|
|
187
|
-
reason: "Append owner-only console navigation entry into the authenticated profile menu outside the console surface.",
|
|
188
|
-
category: "console-web",
|
|
189
|
-
id: "console-web-profile-menu-console-placement"
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
op: "append-text",
|
|
193
|
-
file: "src/placement.js",
|
|
194
|
-
position: "bottom",
|
|
195
|
-
skipIfContains: "id: \"console.web.menu.settings\"",
|
|
196
|
-
value:
|
|
197
|
-
"\naddPlacement({\n id: \"console.web.menu.settings\",\n target: \"shell.primary-nav\",\n kind: \"link\",\n surfaces: [\"console\"],\n order: 100,\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => auth?.authenticated === true\n});\n",
|
|
198
|
-
reason: "Append console-web settings menu placement into app-owned placement registry.",
|
|
199
|
-
category: "console-web",
|
|
200
|
-
id: "console-web-console-settings-placement"
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
op: "append-text",
|
|
204
|
-
file: "src/placementTopology.js",
|
|
205
|
-
position: "bottom",
|
|
206
|
-
skipIfContains: "owner: \"console-settings\"",
|
|
207
|
-
value:
|
|
208
|
-
"\naddPlacementTopology({\n id: \"page.section-nav\",\n owner: \"console-settings\",\n description: \"Navigation between console settings child pages.\",\n surfaces: [\"console\"],\n variants: {\n compact: {\n outlet: \"console-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n medium: {\n outlet: \"console-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n },\n expanded: {\n outlet: \"console-settings:primary-menu\",\n renderers: {\n link: \"local.main.ui.surface-aware-menu-link-item\"\n }\n }\n }\n});\n",
|
|
209
|
-
reason: "Append console settings semantic topology into app-owned placement topology.",
|
|
210
|
-
category: "console-web",
|
|
211
|
-
id: "console-web-settings-placement-topology"
|
|
212
|
-
}
|
|
213
|
-
]
|
|
214
|
-
}
|
|
215
|
-
});
|