@capybara-hq/kernel 0.1.0-rc.13 → 0.1.0-rc.14
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/catalog/admin-catalog.controller.d.ts +13 -2
- package/dist/catalog/admin-catalog.controller.js +24 -3
- package/dist/catalog/admin-catalog.schemas.d.ts +10 -0
- package/dist/catalog/admin-catalog.schemas.js +7 -0
- package/dist/catalog/catalog-content.d.ts +9 -1
- package/dist/catalog/catalog-content.js +2 -1
- package/dist/catalog/catalog-files.d.ts +3 -2
- package/dist/catalog/catalog-files.js +8 -5
- package/dist/catalog/component-scope.service.d.ts +14 -1
- package/dist/catalog/component-scope.service.js +12 -2
- package/dist/catalog/marketplaces.service.d.ts +1 -1
- package/dist/catalog/org-catalog.controller.d.ts +5 -4
- package/dist/catalog/org-catalog.controller.js +5 -4
- package/dist/catalog/org-catalog.schemas.d.ts +18 -2
- package/dist/catalog/org-catalog.schemas.js +16 -2
- package/dist/catalog/org-catalog.service.js +8 -2
- package/dist/catalog/plugin-import.js +1 -1
- package/dist/catalog/plugin-package.js +37 -9
- package/dist/catalog/plugin-upgrade.d.ts +15 -1
- package/dist/catalog/plugin-upgrade.js +18 -5
- package/dist/channels/connections.controller.d.ts +1 -1
- package/dist/channels/connections.controller.js +1 -1
- package/dist/channels/connections.service.d.ts +22 -5
- package/dist/channels/connections.service.js +56 -10
- package/dist/channels/webhook.d.ts +21 -1
- package/dist/channels/webhook.js +39 -4
- package/dist/ctx/create-ctx.d.ts +17 -3
- package/dist/ctx/create-ctx.js +49 -2
- package/dist/db/kernel-schema.d.ts +11 -2
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +4 -0
- package/dist/extensions/guide-places.d.ts +66 -0
- package/dist/extensions/guide-places.js +152 -0
- package/dist/extensions/host.js +3 -3
- package/dist/extensions/instance.d.ts +5 -1
- package/dist/extensions/instance.js +8 -0
- package/dist/extensions/ledger.d.ts +1 -1
- package/dist/extensions/permission-set.d.ts +16 -2
- package/dist/extensions/permission-set.js +17 -3
- package/dist/extensions/plugin-guides.d.ts +207 -54
- package/dist/extensions/plugin-guides.js +436 -165
- package/dist/http/api.module.js +6 -0
- package/dist/infra/lock/lock.service.d.ts +8 -0
- package/dist/infra/lock/lock.service.js +27 -0
- package/dist/infra/throttler/named-throttlers.d.ts +4 -1
- package/dist/infra/throttler/named-throttlers.js +16 -1
- package/dist/infra/throttler/throttler.guard.js +1 -1
- package/dist/overrides.d.ts +3 -1
- package/dist/overrides.js +2 -0
- package/dist/platform/exclusions.js +10 -5
- package/dist/platform/operation.js +4 -0
- package/dist/platform/ops/connectors.ops.js +2 -0
- package/dist/platform/ops/setup.ops.d.ts +24 -0
- package/dist/platform/ops/setup.ops.js +212 -0
- package/dist/platform/platform-ops.module.d.ts +2 -1
- package/dist/platform/platform-ops.module.js +5 -0
- package/dist/platform/route-schemas.js +5 -0
- package/dist/setup/kernel-checks.d.ts +91 -0
- package/dist/setup/kernel-checks.js +295 -0
- package/dist/setup/oauth-token-probe.d.ts +47 -0
- package/dist/setup/oauth-token-probe.js +108 -0
- package/dist/setup/redact-check.d.ts +18 -0
- package/dist/setup/redact-check.js +46 -0
- package/dist/setup/setup-check-registry.d.ts +86 -0
- package/dist/setup/setup-check-registry.js +75 -0
- package/dist/setup/setup-checks.controller.d.ts +28 -0
- package/dist/setup/setup-checks.controller.js +78 -0
- package/dist/setup/setup-checks.schemas.d.ts +38 -0
- package/dist/setup/setup-checks.schemas.js +43 -0
- package/dist/setup/setup-checks.service.d.ts +144 -0
- package/dist/setup/setup-checks.service.js +683 -0
- package/dist/setup/setup-guides.controller.d.ts +18 -0
- package/dist/setup/setup-guides.controller.js +48 -0
- package/dist/setup/setup-guides.schemas.d.ts +10 -0
- package/dist/setup/setup-guides.schemas.js +6 -0
- package/dist/setup/setup-guides.service.d.ts +126 -0
- package/dist/setup/setup-guides.service.js +315 -0
- package/dist/setup/setup.module.d.ts +8 -0
- package/dist/setup/setup.module.js +31 -0
- package/dist/tools/connectors.controller.d.ts +28 -11
- package/dist/tools/connectors.controller.js +49 -14
- package/dist/tools/connectors.schemas.d.ts +4 -0
- package/dist/tools/connectors.schemas.js +4 -0
- package/dist/tools/connectors.service.d.ts +30 -2
- package/dist/tools/connectors.service.js +98 -3
- package/dist/tools/credentials.d.ts +20 -0
- package/dist/tools/credentials.js +90 -1
- package/dist/tools/oauth/tokens.d.ts +20 -0
- package/dist/tools/oauth/tokens.js +49 -24
- package/package.json +3 -3
- package/src/migrations/0106_setup_guides_v2.sql +10 -0
|
@@ -1,92 +1,225 @@
|
|
|
1
|
-
import { type PluginSetupGuide, type
|
|
1
|
+
import { type PluginSetupGuide, type SetupGuideAudience, type SetupGuideBlock, type SetupGuidePlace } from "@capybara-hq/plugin-sdk";
|
|
2
2
|
import type { GuideAckJson } from "../db/kernel-schema.js";
|
|
3
3
|
import { KernelConfigService } from "../infra/config/kernel-config.service.js";
|
|
4
4
|
import { KernelDb } from "../infra/database/kernel-db.js";
|
|
5
|
+
import type { KernelLogger } from "../log.js";
|
|
5
6
|
import { type OrgRole } from "../orgs/roles.js";
|
|
6
|
-
|
|
7
|
+
import { type GuideTarget, type GuideTargetQuery, type UnresolvedReason } from "./guide-places.js";
|
|
8
|
+
export { PLACE_ACTIONS, type UnresolvedReason } from "./guide-places.js";
|
|
9
|
+
/**
|
|
10
|
+
* The setup guide a target was set up with (`channel_connections.guide_ack`,
|
|
11
|
+
* `connectors.guide_ack`): the guide, the plugin version, the drift hash of the admin audience and
|
|
12
|
+
* the mode (null for a place without modes).
|
|
13
|
+
*/
|
|
7
14
|
export type GuideAck = GuideAckJson;
|
|
8
|
-
/** Where a
|
|
15
|
+
/** Where a page finds its plugin's guide (`GET /orgs/:orgId/catalog/:itemId/guides/:guideId`). */
|
|
9
16
|
export interface SetupGuideRef {
|
|
10
17
|
itemId: string;
|
|
11
18
|
guideId: string;
|
|
12
19
|
/** The item's latest version (the guide's). */
|
|
13
20
|
version: string;
|
|
14
21
|
}
|
|
15
|
-
/** The guide fields of a channel connection page. */
|
|
22
|
+
/** The guide fields of a channel connection or connector page. */
|
|
16
23
|
export interface ConnectionGuideState {
|
|
17
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* The plugin's channel-connection guide (or the connector's template guide) the org may see,
|
|
26
|
+
* null without one.
|
|
27
|
+
*/
|
|
18
28
|
setupGuide: SetupGuideRef | null;
|
|
19
29
|
/**
|
|
20
|
-
* The plugin changed the guide's
|
|
21
|
-
* version acked and the current one; null otherwise (or without an
|
|
30
|
+
* The plugin changed the guide's code blocks or checks for the ack's mode since the connection
|
|
31
|
+
* was set up (its ack): the version acked and the current one; null otherwise (or without an
|
|
32
|
+
* ack).
|
|
22
33
|
*/
|
|
23
34
|
guideDrift: {
|
|
24
35
|
from: string;
|
|
25
36
|
to: string;
|
|
26
37
|
} | null;
|
|
27
38
|
}
|
|
28
|
-
/**
|
|
39
|
+
/** Where a connector template's page finds its guide (`guide` of the template entries). */
|
|
40
|
+
export interface TemplateGuideRef {
|
|
41
|
+
itemId: string;
|
|
42
|
+
guideId: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A template whose guide an update changes (the platform update preview, spec §11): the admin
|
|
46
|
+
* hash differs between the platform's current version and the target. `orgs` counts the orgs with
|
|
47
|
+
* a connector set up with that guide (an ack of it) whose ack the target leaves behind: org admins
|
|
48
|
+
* asked to update their app. Counts only, never org names.
|
|
49
|
+
*/
|
|
50
|
+
export interface TemplateGuideChange {
|
|
51
|
+
templateId: string;
|
|
52
|
+
guideId: string;
|
|
53
|
+
/** The platform's current version (null: never synced). */
|
|
54
|
+
from: string | null;
|
|
55
|
+
to: string;
|
|
56
|
+
orgs: number;
|
|
57
|
+
}
|
|
58
|
+
/** A guide rendered for an org or the platform (spec 2026-11-09-setup-guides-v2-design.md §7.2). */
|
|
29
59
|
export interface RenderedSetupGuide {
|
|
30
60
|
itemId: string;
|
|
31
61
|
plugin: string;
|
|
32
62
|
version: string;
|
|
33
63
|
id: string;
|
|
34
64
|
place: SetupGuidePlace;
|
|
35
|
-
|
|
36
|
-
|
|
65
|
+
/** The connector template a `connector-template` guide is for; null for other places. */
|
|
66
|
+
template: string | null;
|
|
67
|
+
/** The document rendered (zh falls back to en). */
|
|
68
|
+
locale: "en" | "zh";
|
|
69
|
+
title: string;
|
|
70
|
+
/** The modes the document's sections use; empty = no mode switch. */
|
|
37
71
|
modes: string[];
|
|
38
|
-
/** The mode rendered
|
|
72
|
+
/** The mode rendered; null for a place without modes. */
|
|
39
73
|
mode: string | null;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
74
|
+
/** The audiences the document has sections for. */
|
|
75
|
+
audiences: SetupGuideAudience[];
|
|
76
|
+
audience: SetupGuideAudience;
|
|
77
|
+
blocks: SetupGuideBlock[];
|
|
78
|
+
/** The check rows, in document order. */
|
|
79
|
+
checks: {
|
|
80
|
+
id: string;
|
|
81
|
+
label: string;
|
|
82
|
+
source: "plugin" | "kernel";
|
|
83
|
+
}[];
|
|
84
|
+
/** Known variables the rendered text uses without a value (left as written), with why. */
|
|
85
|
+
unresolved: {
|
|
86
|
+
name: string;
|
|
87
|
+
reason: UnresolvedReason;
|
|
46
88
|
}[];
|
|
47
|
-
/**
|
|
48
|
-
unresolved: string[];
|
|
49
|
-
/** The template hash of this mode (what an ack records). */
|
|
89
|
+
/** The drift hash of this mode and audience (what an ack records). */
|
|
50
90
|
hash: string;
|
|
91
|
+
target: GuideTarget | null;
|
|
92
|
+
}
|
|
93
|
+
/** The query of the guide route. */
|
|
94
|
+
export interface GuideQuery extends GuideTargetQuery {
|
|
95
|
+
mode?: string | undefined;
|
|
96
|
+
audience?: SetupGuideAudience | undefined;
|
|
97
|
+
locale?: "en" | "zh" | undefined;
|
|
51
98
|
}
|
|
52
99
|
type VersionFile = {
|
|
53
100
|
path: string;
|
|
54
101
|
size: number;
|
|
55
102
|
sha256: string;
|
|
56
103
|
};
|
|
104
|
+
/** The live items (with their latest version) by name or id. */
|
|
105
|
+
declare function latestItems(db: KernelDb, by: "name" | "id", keys: string[]): Promise<{
|
|
106
|
+
awaiting_confirmation: boolean;
|
|
107
|
+
builtin: boolean;
|
|
108
|
+
disabled: boolean;
|
|
109
|
+
files: {
|
|
110
|
+
path: string;
|
|
111
|
+
size: number;
|
|
112
|
+
sha256: string;
|
|
113
|
+
}[];
|
|
114
|
+
id: string;
|
|
115
|
+
latest_version: string;
|
|
116
|
+
manifest: unknown;
|
|
117
|
+
name: string;
|
|
118
|
+
owner_org_id: string | null;
|
|
119
|
+
scope: "all" | "named" | "optional";
|
|
120
|
+
shareable: boolean;
|
|
121
|
+
shown_to_others: boolean;
|
|
122
|
+
}[]>;
|
|
123
|
+
/** A live item with its latest version, as {@link PluginGuides} reads it. */
|
|
124
|
+
export type ItemRow = Awaited<ReturnType<typeof latestItems>>[number];
|
|
57
125
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* rendered files for the same variables.
|
|
126
|
+
* A connector template's guide in a version's manifest (v2 entries only), for callers that already
|
|
127
|
+
* hold the manifest (the org catalog detail).
|
|
61
128
|
*/
|
|
62
|
-
export declare
|
|
129
|
+
export declare const templateGuideOf: (manifest: unknown, templateId: string) => PluginSetupGuide | undefined;
|
|
63
130
|
/**
|
|
64
|
-
* Plugin setup guides (spec `2026-11-
|
|
65
|
-
* catalog item (the item of the same name, its latest version), renders a guide
|
|
66
|
-
*
|
|
67
|
-
* secret), and computes the
|
|
68
|
-
*
|
|
69
|
-
* Stateless: everything comes from PG (version rows,
|
|
70
|
-
* `catalog_files`).
|
|
131
|
+
* Plugin setup guides v2 (spec `2026-11-09-setup-guides-v2-design.md`): resolves an extension's
|
|
132
|
+
* catalog item (the item of the same name, its latest version), renders a guide document for a
|
|
133
|
+
* place, audience, mode and target with the place's safe variables (`guide-places.ts`; never a
|
|
134
|
+
* secret), and computes the drift hashes targets record to tell when an upgrade changed their
|
|
135
|
+
* setup. Org reads follow the catalog icon's visibility ({@link orgVisibleItems}), the platform
|
|
136
|
+
* preview any live item. Stateless: everything comes from PG (version rows, target rows, the
|
|
137
|
+
* documents in `catalog_files`).
|
|
71
138
|
*/
|
|
72
139
|
export declare class PluginGuides {
|
|
73
140
|
private readonly db;
|
|
74
141
|
private readonly config;
|
|
75
|
-
|
|
76
|
-
|
|
142
|
+
private readonly log;
|
|
143
|
+
constructor(db: KernelDb, config: Pick<KernelConfigService, "get">, log: Pick<KernelLogger, "warn">);
|
|
77
144
|
private latest;
|
|
145
|
+
/** The rows the org's catalog shows ({@link orgVisibleItems}); all of them without an org. */
|
|
146
|
+
private visibleTo;
|
|
147
|
+
/** The English documents of guides, by `<itemId>/<guideId>` (one PG read); absent when not stored. */
|
|
148
|
+
private englishSources;
|
|
149
|
+
/** The admin drift hash of a guide for a mode. */
|
|
150
|
+
private static hashOf;
|
|
78
151
|
/**
|
|
79
|
-
* The ack of a plugin's current
|
|
80
|
-
* when it is created or switches mode
|
|
81
|
-
*
|
|
152
|
+
* The ack of a plugin's current guide for a place (and template) and mode, admin audience:
|
|
153
|
+
* recorded on a target when it is created or switches mode. Null when the plugin has no catalog
|
|
154
|
+
* item, no such guide or no stored document. Without `org` kernel-internal (no org visibility:
|
|
155
|
+
* the target belongs to the plugin either way); with `org` (a person acking the guide) null
|
|
156
|
+
* also when the org's catalog does not show the item, the guide read's rule.
|
|
82
157
|
*/
|
|
83
|
-
currentAck(plugin: string,
|
|
158
|
+
currentAck(plugin: string, place: SetupGuidePlace, o: {
|
|
159
|
+
mode: string | null;
|
|
160
|
+
templateId?: string;
|
|
161
|
+
org?: {
|
|
162
|
+
orgId: string;
|
|
163
|
+
role: OrgRole;
|
|
164
|
+
};
|
|
165
|
+
}): Promise<GuideAck | null>;
|
|
84
166
|
/**
|
|
85
|
-
* Whether an ack is behind the plugin's current guide (
|
|
86
|
-
*
|
|
87
|
-
*
|
|
167
|
+
* Whether an ack is behind the plugin's current guide (spec §11): the same guide whose hash for
|
|
168
|
+
* the ack's mode changed. False without an ack, a catalog item or the guide. Kernel-internal: no
|
|
169
|
+
* org visibility.
|
|
88
170
|
*/
|
|
89
|
-
ackDrifted(plugin: string, ack: GuideAck | null
|
|
171
|
+
ackDrifted(plugin: string, place: SetupGuidePlace, ack: GuideAck | null, o?: {
|
|
172
|
+
templateId?: string;
|
|
173
|
+
}): Promise<boolean>;
|
|
174
|
+
/**
|
|
175
|
+
* The ack of a connector template's current guide (admin audience, no mode): recorded on a
|
|
176
|
+
* connector when it is created from the template. Null when the item has no guide for the
|
|
177
|
+
* template or no stored document. Without `org` kernel-internal (no org visibility: the caller is
|
|
178
|
+
* creating or reading the org's own connector of that template); with `org` (a person acking the
|
|
179
|
+
* guide) null also when the org's catalog does not show the item.
|
|
180
|
+
*/
|
|
181
|
+
templateAck(itemId: string, templateId: string, org?: {
|
|
182
|
+
orgId: string;
|
|
183
|
+
role: OrgRole;
|
|
184
|
+
}): Promise<GuideAck | null>;
|
|
185
|
+
/**
|
|
186
|
+
* `<itemId>/<templateId>` -> the template's guide in the item's latest version, for the template
|
|
187
|
+
* entries of the catalog detail and the components list; templates without one are absent.
|
|
188
|
+
* Kernel-internal: callers list only items and templates the org already sees.
|
|
189
|
+
*/
|
|
190
|
+
templateGuides(pairs: {
|
|
191
|
+
itemId: string;
|
|
192
|
+
templateId: string;
|
|
193
|
+
}[]): Promise<Map<string, TemplateGuideRef>>;
|
|
194
|
+
/**
|
|
195
|
+
* The guide fields of connectors (spec §9.3, §11): a connector made from a template
|
|
196
|
+
* (`itemId` / `templateId` of its platform template) whose item the org's catalog shows gets the
|
|
197
|
+
* template's guide; drift = an ack of the same guide whose admin hash changed. Custom connectors
|
|
198
|
+
* (no template) get nulls. One query each for items and documents.
|
|
199
|
+
*/
|
|
200
|
+
connectorStates(connectors: {
|
|
201
|
+
id: string;
|
|
202
|
+
itemId: string | null;
|
|
203
|
+
templateId: string | null;
|
|
204
|
+
guideAck: GuideAck | null;
|
|
205
|
+
}[], org: {
|
|
206
|
+
orgId: string;
|
|
207
|
+
role: OrgRole;
|
|
208
|
+
}): Promise<Map<string, ConnectionGuideState>>;
|
|
209
|
+
/**
|
|
210
|
+
* The connector template guides an update of an item changes (the platform update preview,
|
|
211
|
+
* {@link TemplateGuideChange}): per template guide of the target whose admin hash differs from
|
|
212
|
+
* the platform's current version's (a guide new in the target counts only when connectors hold
|
|
213
|
+
* an ack of it). Documents a version does not store are skipped. Kernel-internal (the super
|
|
214
|
+
* admin's or the owner's preview).
|
|
215
|
+
*/
|
|
216
|
+
templateGuideChanges(itemId: string, from: string | null, to: {
|
|
217
|
+
version: string;
|
|
218
|
+
manifest: unknown;
|
|
219
|
+
files: VersionFile[];
|
|
220
|
+
}): Promise<TemplateGuideChange[]>;
|
|
221
|
+
/** The admin drift hash of a guide in a version (no mode), or undefined when not stored. */
|
|
222
|
+
private storedHash;
|
|
90
223
|
/**
|
|
91
224
|
* Plugin name -> its channel-connection guide, for plugins whose item the org's catalog shows
|
|
92
225
|
* (`GET channels/schema/:plugin` and the connection pages); others are absent.
|
|
@@ -96,9 +229,9 @@ export declare class PluginGuides {
|
|
|
96
229
|
role: OrgRole;
|
|
97
230
|
}): Promise<Map<string, SetupGuideRef & {
|
|
98
231
|
guide: PluginSetupGuide;
|
|
99
|
-
|
|
232
|
+
row: ItemRow;
|
|
100
233
|
}>>;
|
|
101
|
-
/** The guide fields of channel connections (one query for
|
|
234
|
+
/** The guide fields of channel connections (one query each for guides and documents; spec §11). */
|
|
102
235
|
connectionStates(connections: {
|
|
103
236
|
id: string;
|
|
104
237
|
plugin: string;
|
|
@@ -107,23 +240,43 @@ export declare class PluginGuides {
|
|
|
107
240
|
orgId: string;
|
|
108
241
|
role: OrgRole;
|
|
109
242
|
}): Promise<Map<string, ConnectionGuideState>>;
|
|
243
|
+
/**
|
|
244
|
+
* The documents of a guide of an item's latest version (no visibility check: callers check it):
|
|
245
|
+
* the source in `locale` (falling back to English), the English source (hashes, check lookup) and
|
|
246
|
+
* the locale actually read. 404 `catalog.item_not_found` / `catalog.guide_not_found`.
|
|
247
|
+
*/
|
|
248
|
+
loadDocument(itemId: string, guideId: string, locale: "en" | "zh"): Promise<{
|
|
249
|
+
row: ItemRow;
|
|
250
|
+
guide: PluginSetupGuide;
|
|
251
|
+
source: string;
|
|
252
|
+
enSource: string;
|
|
253
|
+
locale: "en" | "zh";
|
|
254
|
+
}>;
|
|
255
|
+
/** Reads and checks a guide's stored documents (one PG read). */
|
|
256
|
+
private documents;
|
|
257
|
+
/** Logs the stored guide entries a version skips (once per render). */
|
|
258
|
+
private warnSkipped;
|
|
110
259
|
/**
|
|
111
260
|
* Renders a guide for an org (`GET /orgs/:orgId/catalog/:itemId/guides/:guideId`): the item must
|
|
112
261
|
* be one the org's catalog shows (else `catalog.item_not_found`), the guide one its latest
|
|
113
|
-
* version has (else `catalog.guide_not_found`), and
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
262
|
+
* version has (else `catalog.guide_not_found`), `mode` and `audience` the place's (else
|
|
263
|
+
* `validation_failed`), and the caller must hold the place and audience's action
|
|
264
|
+
* ({@link PLACE_ACTIONS}, else `forbidden`). The target parameters are the place's
|
|
265
|
+
* (`guide-places.ts`): a target must be a live object of the org on the plugin, else 404.
|
|
117
266
|
*/
|
|
118
267
|
render(org: {
|
|
119
268
|
orgId: string;
|
|
120
269
|
role: OrgRole;
|
|
121
|
-
}, itemId: string, guideId: string, q:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
270
|
+
}, itemId: string, guideId: string, q: GuideQuery): Promise<RenderedSetupGuide>;
|
|
271
|
+
/**
|
|
272
|
+
* Renders a guide for the platform (the super admin's preview, `GET /admin/catalog/:itemId/guides/
|
|
273
|
+
* :guideId`): any live item, the admin audience, no org (`orgName` unresolved) and no target.
|
|
274
|
+
*/
|
|
275
|
+
renderForPlatform(itemId: string, guideId: string, q: {
|
|
276
|
+
locale?: "en" | "zh" | undefined;
|
|
125
277
|
}): Promise<RenderedSetupGuide>;
|
|
126
|
-
/**
|
|
127
|
-
private
|
|
278
|
+
/** The audience asked for, after checking `mode` and `audience` against the place. */
|
|
279
|
+
private checkQuery;
|
|
280
|
+
/** The rendered guide: the mode picked, the document rendered, the hash and the reasons. */
|
|
281
|
+
private renderDoc;
|
|
128
282
|
}
|
|
129
|
-
export {};
|