@mesh-tech/mesh-cli 0.36.0 → 0.38.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/assets/docs-preview.css +1599 -0
- package/dist/bin/mesh.auth-preflight-AQJ5TQES.js +48 -0
- package/dist/bin/mesh.auth-preflight-AQJ5TQES.js.map +6 -0
- package/dist/bin/mesh.capture-history-A4IAVVIR.js +38 -0
- package/dist/bin/mesh.capture-history-A4IAVVIR.js.map +6 -0
- package/dist/bin/mesh.chunk-2QIVBQX5.js +647 -0
- package/dist/bin/mesh.chunk-2QIVBQX5.js.map +6 -0
- package/dist/bin/mesh.chunk-2YRWJH5X.js +1747 -0
- package/dist/bin/mesh.chunk-2YRWJH5X.js.map +6 -0
- package/dist/bin/mesh.chunk-BF2SH6XT.js +303 -0
- package/dist/bin/mesh.chunk-BF2SH6XT.js.map +6 -0
- package/dist/bin/mesh.chunk-F4654EPX.js +383 -0
- package/dist/bin/mesh.chunk-F4654EPX.js.map +6 -0
- package/dist/bin/mesh.chunk-HPYZWPRM.js +1146 -0
- package/dist/bin/mesh.chunk-HPYZWPRM.js.map +6 -0
- package/dist/bin/mesh.chunk-I6NXLXGC.js +7715 -0
- package/dist/bin/mesh.chunk-I6NXLXGC.js.map +6 -0
- package/dist/bin/mesh.chunk-IQOBTL42.js +60 -0
- package/dist/bin/mesh.chunk-IQOBTL42.js.map +6 -0
- package/dist/bin/mesh.chunk-IU2IWH6O.js +835 -0
- package/dist/bin/mesh.chunk-IU2IWH6O.js.map +6 -0
- package/dist/bin/mesh.chunk-KN4BZOYH.js +187 -0
- package/dist/bin/mesh.chunk-KN4BZOYH.js.map +6 -0
- package/dist/bin/mesh.chunk-LMYPTJ2F.js +10092 -0
- package/dist/bin/mesh.chunk-LMYPTJ2F.js.map +6 -0
- package/dist/bin/mesh.chunk-MCBMHWXP.js +837 -0
- package/dist/bin/mesh.chunk-MCBMHWXP.js.map +6 -0
- package/dist/bin/mesh.chunk-OW5EMVG5.js +507 -0
- package/dist/bin/mesh.chunk-OW5EMVG5.js.map +6 -0
- package/dist/bin/mesh.chunk-TZAGJTKU.js +217 -0
- package/dist/bin/mesh.chunk-TZAGJTKU.js.map +6 -0
- package/dist/bin/mesh.chunk-WFFDF346.js +59 -0
- package/dist/bin/mesh.chunk-WFFDF346.js.map +6 -0
- package/dist/bin/mesh.cli-reference-H3TOPIET.js +158 -0
- package/dist/bin/mesh.cli-reference-H3TOPIET.js.map +6 -0
- package/dist/bin/mesh.convert-7N2H2SVK.js +274 -0
- package/dist/bin/mesh.convert-7N2H2SVK.js.map +6 -0
- package/dist/bin/mesh.create-app-NGXACFAU.js +39 -0
- package/dist/bin/mesh.create-app-NGXACFAU.js.map +6 -0
- package/dist/bin/mesh.dev-token-server-YP2VBP2S.js +61 -0
- package/dist/bin/mesh.dev-token-server-YP2VBP2S.js.map +6 -0
- package/dist/bin/mesh.js +20 -26418
- package/dist/bin/mesh.js.map +3 -3
- package/dist/bin/mesh.login-7SIAKFXJ.js +91 -0
- package/dist/bin/mesh.login-7SIAKFXJ.js.map +6 -0
- package/dist/bin/mesh.platform-setup-CJXE3BCP.js +37 -0
- package/dist/bin/mesh.platform-setup-CJXE3BCP.js.map +6 -0
- package/dist/bin/mesh.preview-RJGTCTY3.js +2410 -0
- package/dist/bin/mesh.preview-RJGTCTY3.js.map +6 -0
- package/dist/bin/mesh.program-BIDQBSSI.js +23 -0
- package/dist/bin/mesh.program-BIDQBSSI.js.map +6 -0
- package/dist/bin/mesh.registry-7P4MGXEK.js +47 -0
- package/dist/bin/mesh.registry-7P4MGXEK.js.map +6 -0
- package/dist/bin/mesh.registry-identity-JW4KO7N7.js +42 -0
- package/dist/bin/mesh.registry-identity-JW4KO7N7.js.map +6 -0
- package/dist/bin/mesh.skills-MNDSMBIE.js +23 -0
- package/dist/bin/mesh.skills-MNDSMBIE.js.map +6 -0
- package/dist/bin/mesh.src-5D5DFSLX.js +1302 -0
- package/dist/bin/mesh.src-5D5DFSLX.js.map +6 -0
- package/dist/bin/mesh.src-G7TJBLNJ.js +40 -0
- package/dist/bin/mesh.src-G7TJBLNJ.js.map +6 -0
- package/dist/bin/mesh.stack-EFTFAOCV.js +64 -0
- package/dist/bin/mesh.stack-EFTFAOCV.js.map +6 -0
- package/dist/bin/mesh.start-MPQFIEMH.js +454 -0
- package/dist/bin/mesh.start-MPQFIEMH.js.map +6 -0
- package/dist/bin/mesh.wizard-ZJE4S6PC.js +500 -0
- package/dist/bin/mesh.wizard-ZJE4S6PC.js.map +6 -0
- package/dist/build-info.json +2 -2
- package/dist/src/commands/app-check.d.ts +2 -1
- package/dist/src/commands/app-check.js +32 -0
- package/dist/src/commands/create-app.d.ts +0 -1
- package/dist/src/commands/create-app.js +0 -4
- package/dist/src/commands/dev.d.ts +6 -0
- package/dist/src/commands/dev.js +152 -3
- package/dist/src/commands/docs.js +33 -0
- package/dist/src/commands/local/act-as-local.d.ts +5 -0
- package/dist/src/commands/local/act-as-local.js +41 -0
- package/dist/src/commands/local/auth-provision.d.ts +1 -0
- package/dist/src/commands/local/auth-provision.js +1 -0
- package/dist/src/commands/local/index.js +4 -0
- package/dist/src/commands/local/local-api-key.d.ts +44 -0
- package/dist/src/commands/local/local-api-key.js +115 -0
- package/dist/src/commands/local/local-spicedb.d.ts +95 -0
- package/dist/src/commands/local/local-spicedb.js +304 -0
- package/dist/src/commands/local/publish-docs.d.ts +81 -0
- package/dist/src/commands/local/publish-docs.js +328 -0
- package/dist/src/commands/local/seed-zitadel.js +2 -0
- package/dist/src/commands/temporal.js +191 -61
- package/dist/src/commands/temporal.js.map +3 -3
- package/dist/src/docs/convert.d.ts +35 -0
- package/dist/src/docs/convert.js +276 -0
- package/dist/src/docs/preview-source.d.ts +13 -0
- package/dist/src/docs/preview-source.js +58 -0
- package/dist/src/docs/preview.d.ts +32 -0
- package/dist/src/docs/preview.js +279 -0
- package/dist/src/utils/scaffold-versions.d.ts +0 -1
- package/dist/src/utils/scaffold-versions.js +0 -1
- package/fragments/agents/AGENTS.md.hbs +27 -27
- package/fragments/base/README.md.hbs +5 -2
- package/fragments/base/index.ts.hbs +19 -33
- package/fragments/base/package.json.hbs +4 -2
- package/fragments/service/api/openapi.json.hbs +1 -1
- package/fragments/service/docs/docs.yaml.hbs +10 -0
- package/fragments/service/docs/pages/getting-started.md.hbs +6 -9
- package/package.json +19 -3
- package/skills/mesh/SKILL.md +2 -2
- package/stack/docker-compose.hub.yml +6 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PAGE_ID_PATTERN,
|
|
3
|
+
buildDocsSource,
|
|
4
|
+
splitFrontMatter
|
|
5
|
+
} from "./mesh.chunk-2QIVBQX5.js";
|
|
6
|
+
import {
|
|
7
|
+
logInfo,
|
|
8
|
+
logSuccess,
|
|
9
|
+
logWarn
|
|
10
|
+
} from "./mesh.chunk-WFFDF346.js";
|
|
11
|
+
|
|
12
|
+
// packages/mesh-cli/src/docs/convert.ts
|
|
13
|
+
import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
14
|
+
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
15
|
+
import { stringify } from "yaml";
|
|
16
|
+
var SITE_FIELDS_TO_DROP = ["pages", "landingPage", "playground", "audience", "site", "split", "zudoku", "port"];
|
|
17
|
+
function posixRelative(from, to) {
|
|
18
|
+
return relative(from, to).split(sep).join("/");
|
|
19
|
+
}
|
|
20
|
+
function programPath(file, root = process.cwd()) {
|
|
21
|
+
const rel = relative(root, file);
|
|
22
|
+
if (!rel || isAbsolute(rel) || rel.startsWith("..")) return file;
|
|
23
|
+
return `./${rel.split(sep).join("/")}`;
|
|
24
|
+
}
|
|
25
|
+
function pageOrder(frontMatter) {
|
|
26
|
+
for (const key of ["order", "sidebar_position"]) {
|
|
27
|
+
const value = frontMatter[key];
|
|
28
|
+
const n = typeof value === "number" ? value : typeof value === "string" && value.trim() !== "" ? Number(value) : NaN;
|
|
29
|
+
if (Number.isFinite(n)) return n;
|
|
30
|
+
}
|
|
31
|
+
return void 0;
|
|
32
|
+
}
|
|
33
|
+
function navOrder(pages) {
|
|
34
|
+
return [...pages].sort((a, b) => {
|
|
35
|
+
if (a.order !== void 0 && b.order !== void 0 && a.order !== b.order) return a.order - b.order;
|
|
36
|
+
if (a.order !== void 0 && b.order === void 0) return -1;
|
|
37
|
+
if (a.order === void 0 && b.order !== void 0) return 1;
|
|
38
|
+
return a.id.localeCompare(b.id);
|
|
39
|
+
}).map((p) => p.id);
|
|
40
|
+
}
|
|
41
|
+
function moveLeadingHeading(original) {
|
|
42
|
+
const text = original.replace(/\r\n/g, "\n");
|
|
43
|
+
const fm = text.match(/^---\n([\s\S]*?)\n---\n?/);
|
|
44
|
+
const { frontMatter, body } = splitFrontMatter(text);
|
|
45
|
+
const lines = body.split("\n");
|
|
46
|
+
const at = lines.findIndex((line) => line.trim() !== "");
|
|
47
|
+
if (at === -1) return void 0;
|
|
48
|
+
const heading = /^#\s+(.*?)(?:\s+#+)?\s*$/.exec(lines[at])?.[1]?.replace(/\s*\{#[^}]*\}\s*$/, "").trim();
|
|
49
|
+
if (!heading) return void 0;
|
|
50
|
+
const title = typeof frontMatter.title === "string" ? frontMatter.title.trim() : "";
|
|
51
|
+
if (title && title !== heading) return void 0;
|
|
52
|
+
const rest = lines.slice(at + 1);
|
|
53
|
+
while (rest.length > 0 && rest[0].trim() === "") rest.shift();
|
|
54
|
+
const kept = fm?.[1]?.replace(/\s+$/, "") ?? "";
|
|
55
|
+
const titleLine = title ? "" : stringify({ title: heading }).trimEnd();
|
|
56
|
+
const frontMatterText = [titleLine, kept].filter((part) => part !== "").join("\n");
|
|
57
|
+
return `---
|
|
58
|
+
${frontMatterText}
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
${rest.join("\n")}`;
|
|
62
|
+
}
|
|
63
|
+
function listPageFiles(dir) {
|
|
64
|
+
const md = [];
|
|
65
|
+
const mdx = [];
|
|
66
|
+
const walk = (current) => {
|
|
67
|
+
for (const entry of readdirSync(current, { withFileTypes: true })) {
|
|
68
|
+
const full = join(current, entry.name);
|
|
69
|
+
if (lstatSync(full).isSymbolicLink()) continue;
|
|
70
|
+
if (entry.isDirectory()) walk(full);
|
|
71
|
+
else if (entry.isFile() && entry.name.endsWith(".md")) md.push(posixRelative(dir, full));
|
|
72
|
+
else if (entry.isFile() && entry.name.toLowerCase().endsWith(".mdx")) mdx.push(posixRelative(dir, full));
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
walk(dir);
|
|
76
|
+
return { md: md.sort(), mdx: mdx.sort() };
|
|
77
|
+
}
|
|
78
|
+
function renderStarterDocsYaml(config) {
|
|
79
|
+
return [
|
|
80
|
+
`# ${config.title}'s native docs source, written by \`mesh docs convert\` from the`,
|
|
81
|
+
"# ApiSurface's site-shaped docs block. The Hub renders it: the guides under",
|
|
82
|
+
"# pages/, the API reference from the spec. Check it with `mesh docs preview`.",
|
|
83
|
+
stringify(config).trimEnd(),
|
|
84
|
+
""
|
|
85
|
+
].join("\n");
|
|
86
|
+
}
|
|
87
|
+
function specTitle(specPath) {
|
|
88
|
+
try {
|
|
89
|
+
const spec = JSON.parse(readFileSync(specPath, "utf8"));
|
|
90
|
+
return typeof spec.info?.title === "string" && spec.info.title.trim() ? spec.info.title.trim() : void 0;
|
|
91
|
+
} catch {
|
|
92
|
+
return void 0;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function surfaceEditText(spec, config) {
|
|
96
|
+
return [
|
|
97
|
+
`docs: { spec: ${JSON.stringify(spec)}, config: ${JSON.stringify(config)} },`,
|
|
98
|
+
`Drop ${SITE_FIELDS_TO_DROP.join(", ")} from the block where set: with docs.config`,
|
|
99
|
+
"the Hub renders the source itself, so no docs site, container or door is built and those",
|
|
100
|
+
"fields stop applying (the deploy warns on any left; auth, ingress, basePath and hubDoor were",
|
|
101
|
+
"already ignored). Add docs.availability to publish each operation's availability."
|
|
102
|
+
].join("\n");
|
|
103
|
+
}
|
|
104
|
+
function convertDocsSite(opts) {
|
|
105
|
+
const specPath = resolve(opts.spec);
|
|
106
|
+
if (!existsSync(specPath) || !statSync(specPath).isFile()) throw new Error(`--spec ${opts.spec}: no such file`);
|
|
107
|
+
const pagesGiven = opts.pages !== void 0;
|
|
108
|
+
const pagesPath = pagesGiven ? resolve(opts.pages) : void 0;
|
|
109
|
+
if (pagesPath && (!existsSync(pagesPath) || !statSync(pagesPath).isDirectory())) {
|
|
110
|
+
throw new Error(`--pages ${opts.pages}: no such directory`);
|
|
111
|
+
}
|
|
112
|
+
const outDir = resolve(opts.out ?? (pagesPath ? dirname(pagesPath) : dirname(specPath)));
|
|
113
|
+
const configPath = join(outDir, "docs.yaml");
|
|
114
|
+
if (existsSync(configPath) && !opts.force) {
|
|
115
|
+
throw new Error(
|
|
116
|
+
`${programPath(configPath)} already exists \u2014 this surface may already have a native source. Check it with \`mesh docs preview ${programPath(outDir)}\`, or pass --force to replace it.`
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
const title = opts.title?.trim() || specTitle(specPath);
|
|
120
|
+
if (!title) throw new Error(`the spec ${opts.spec} has no info.title \u2014 pass --title`);
|
|
121
|
+
const pagesDir = pagesPath ?? join(outDir, "pages");
|
|
122
|
+
const problems = [];
|
|
123
|
+
const fixedPages = [];
|
|
124
|
+
const fixablePages = [];
|
|
125
|
+
const files = existsSync(pagesDir) && statSync(pagesDir).isDirectory() ? listPageFiles(pagesDir) : { md: [], mdx: [] };
|
|
126
|
+
for (const file of files.mdx) {
|
|
127
|
+
problems.push(
|
|
128
|
+
`page ${file} is MDX \u2014 a native page is Markdown data and is never executed, so it is not read; rewrite it as ${file.replace(/\.mdx$/i, ".md")} (the converter does not convert MDX)`
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
let landing;
|
|
132
|
+
let landingProblem = false;
|
|
133
|
+
let landingCopy;
|
|
134
|
+
if (opts.landing === void 0) {
|
|
135
|
+
if (files.md.includes("index.md")) landing = "index";
|
|
136
|
+
} else {
|
|
137
|
+
const asFile = resolve(opts.landing);
|
|
138
|
+
const asPage = join(pagesDir, `${opts.landing}.md`);
|
|
139
|
+
if (existsSync(asFile) && statSync(asFile).isFile()) {
|
|
140
|
+
const inPages = !relative(pagesDir, asFile).startsWith("..") && !isAbsolute(relative(pagesDir, asFile));
|
|
141
|
+
if (inPages) {
|
|
142
|
+
landing = posixRelative(pagesDir, asFile).replace(/\.mdx?$/i, "");
|
|
143
|
+
if (/\.mdx$/i.test(asFile)) landingProblem = true;
|
|
144
|
+
} else {
|
|
145
|
+
landing = "index";
|
|
146
|
+
const to = join(pagesDir, "index.md");
|
|
147
|
+
if (existsSync(to) && !opts.force) {
|
|
148
|
+
landingProblem = true;
|
|
149
|
+
problems.push(
|
|
150
|
+
`landing ${programPath(asFile)} is outside the pages directory, and ${programPath(to)} already exists \u2014 name that page with --landing, or pass --force to replace it with the landing file`
|
|
151
|
+
);
|
|
152
|
+
} else if (opts.fixPages) {
|
|
153
|
+
landingCopy = { from: asFile, to };
|
|
154
|
+
} else {
|
|
155
|
+
landingProblem = true;
|
|
156
|
+
problems.push(
|
|
157
|
+
`landing ${programPath(asFile)} is outside the pages directory \u2014 a native source opens on one of its own pages; --fix-pages copies it to ${programPath(to)}`
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
} else if (existsSync(asPage)) {
|
|
162
|
+
landing = opts.landing;
|
|
163
|
+
} else {
|
|
164
|
+
throw new Error(`--landing ${opts.landing}: neither a file nor a page under ${programPath(pagesDir)}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (landing !== void 0 && !PAGE_ID_PATTERN.test(landing)) {
|
|
168
|
+
problems.push(
|
|
169
|
+
`landing "${landing}" is not a valid page id (lower-case letters, digits, - and _ in each path segment) \u2014 rename the page`
|
|
170
|
+
);
|
|
171
|
+
landing = void 0;
|
|
172
|
+
landingProblem = true;
|
|
173
|
+
}
|
|
174
|
+
if (landingCopy) {
|
|
175
|
+
const text = readFileSync(landingCopy.from, "utf8");
|
|
176
|
+
mkdirSync(dirname(landingCopy.to), { recursive: true });
|
|
177
|
+
writeFileSync(landingCopy.to, moveLeadingHeading(text) ?? text);
|
|
178
|
+
if (!files.md.includes("index.md")) files.md.push("index.md");
|
|
179
|
+
}
|
|
180
|
+
const navPages = [];
|
|
181
|
+
for (const file of files.md) {
|
|
182
|
+
const full = join(pagesDir, file);
|
|
183
|
+
const id = file.slice(0, -".md".length);
|
|
184
|
+
const text = readFileSync(full, "utf8");
|
|
185
|
+
const fixed = full === landingCopy?.to ? void 0 : moveLeadingHeading(text);
|
|
186
|
+
if (fixed !== void 0) {
|
|
187
|
+
if (opts.fixPages) {
|
|
188
|
+
writeFileSync(full, fixed);
|
|
189
|
+
fixedPages.push(full);
|
|
190
|
+
} else {
|
|
191
|
+
fixablePages.push(full);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (id === landing || !PAGE_ID_PATTERN.test(id)) continue;
|
|
195
|
+
const order = pageOrder(splitFrontMatter(fixed ?? text).frontMatter);
|
|
196
|
+
navPages.push({ id, ...order !== void 0 ? { order } : {} });
|
|
197
|
+
}
|
|
198
|
+
const nav = navOrder(navPages);
|
|
199
|
+
const writesPages = pagesGiven || landingCopy !== void 0;
|
|
200
|
+
const config = {
|
|
201
|
+
title,
|
|
202
|
+
spec: posixRelative(outDir, specPath),
|
|
203
|
+
...writesPages ? { pages: posixRelative(outDir, pagesDir) || "." } : {},
|
|
204
|
+
...landing !== void 0 ? { landing } : {},
|
|
205
|
+
...nav.length > 0 ? { nav: [{ group: "Guides", pages: nav }] } : {},
|
|
206
|
+
reference: { label: "API Reference" }
|
|
207
|
+
};
|
|
208
|
+
mkdirSync(outDir, { recursive: true });
|
|
209
|
+
writeFileSync(configPath, renderStarterDocsYaml(config));
|
|
210
|
+
const built = buildDocsSource({ configPath, specPath });
|
|
211
|
+
for (const problem of built.problems) {
|
|
212
|
+
if (landingProblem && problem.startsWith(`landing "`)) continue;
|
|
213
|
+
problems.push(problem);
|
|
214
|
+
}
|
|
215
|
+
return {
|
|
216
|
+
configPath,
|
|
217
|
+
fixedPages,
|
|
218
|
+
...landingCopy ? { landingCopied: landingCopy } : {},
|
|
219
|
+
fixablePages,
|
|
220
|
+
problems,
|
|
221
|
+
// The program resolves these from its own directory, not from where the
|
|
222
|
+
// converter ran.
|
|
223
|
+
surfaceEdit: surfaceEditText(
|
|
224
|
+
programPath(specPath, resolve(opts.root ?? process.cwd())),
|
|
225
|
+
programPath(configPath, resolve(opts.root ?? process.cwd()))
|
|
226
|
+
),
|
|
227
|
+
// The landing page came from outside the prefixed source, so only the guides lose the prefix.
|
|
228
|
+
notes: prefixNotes(opts.prefix, nav)
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function prefixNotes(prefix, ids) {
|
|
232
|
+
const clean = prefix?.replace(/^\/+|\/+$/g, "");
|
|
233
|
+
if (!clean) return [];
|
|
234
|
+
const moved = ids.map((id) => `${clean}/${id} \u2192 ${id}`).join(", ");
|
|
235
|
+
return [
|
|
236
|
+
`the old site served these pages under /${clean}/ \u2014 a native source names each page by its path under the pages directory, with no prefix, so update links that name the prefixed path${moved ? `: ${moved}` : ""}`
|
|
237
|
+
];
|
|
238
|
+
}
|
|
239
|
+
async function runDocsConvert(opts) {
|
|
240
|
+
const result = convertDocsSite(opts);
|
|
241
|
+
logSuccess(`Wrote ${programPath(result.configPath)}`);
|
|
242
|
+
if (result.landingCopied) {
|
|
243
|
+
logSuccess(`Copied the landing page ${programPath(result.landingCopied.from)} \u2192 ${programPath(result.landingCopied.to)}`);
|
|
244
|
+
}
|
|
245
|
+
for (const page of result.fixedPages) logSuccess(`Fixed ${programPath(page)} \u2014 its leading # heading is its front-matter title`);
|
|
246
|
+
if (result.fixablePages.length > 0) {
|
|
247
|
+
logInfo(
|
|
248
|
+
`${result.fixablePages.length} page${result.fixablePages.length === 1 ? " opens" : "s open"} with a # heading that --fix-pages moves into its front-matter title: ${result.fixablePages.map((p) => basename(p)).join(", ")}`
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
if (result.problems.length === 0) {
|
|
252
|
+
logSuccess("The source is fit to publish \u2014 the deploy's builder reports no problems");
|
|
253
|
+
} else {
|
|
254
|
+
logWarn(
|
|
255
|
+
`${result.problems.length} problem${result.problems.length === 1 ? "" : "s"} left \u2014 the deploy refuses this source until ${result.problems.length === 1 ? "it is" : "they are"} fixed:`
|
|
256
|
+
);
|
|
257
|
+
for (const problem of result.problems) console.error(` - ${problem}`);
|
|
258
|
+
}
|
|
259
|
+
for (const note of result.notes) logWarn(note);
|
|
260
|
+
logInfo("The ApiSurface edit:");
|
|
261
|
+
for (const line of result.surfaceEdit.split("\n")) console.error(` ${line}`);
|
|
262
|
+
logInfo(`Then check it as the Hub renders it: mesh docs preview ${programPath(dirname(result.configPath))}`);
|
|
263
|
+
return result.problems.length === 0;
|
|
264
|
+
}
|
|
265
|
+
export {
|
|
266
|
+
convertDocsSite,
|
|
267
|
+
moveLeadingHeading,
|
|
268
|
+
navOrder,
|
|
269
|
+
pageOrder,
|
|
270
|
+
prefixNotes,
|
|
271
|
+
renderStarterDocsYaml,
|
|
272
|
+
runDocsConvert,
|
|
273
|
+
surfaceEditText
|
|
274
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/docs/convert.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NO_REGISTRY_ACCESS_MESSAGE,
|
|
3
|
+
PLATFORM_MONOREPO_NAME,
|
|
4
|
+
bootstrapAppsRepo,
|
|
5
|
+
composableNextSteps,
|
|
6
|
+
copyTemplate,
|
|
7
|
+
describeNoAppsHome,
|
|
8
|
+
ensureRegistryAccess,
|
|
9
|
+
ensureWorkspaceGlobs,
|
|
10
|
+
generateComposableApp,
|
|
11
|
+
isInsidePlatformMonorepo,
|
|
12
|
+
registerCreateAppCommand,
|
|
13
|
+
resolveAppDir,
|
|
14
|
+
shouldBootstrapAppsRepo,
|
|
15
|
+
workspaceGlobForApp
|
|
16
|
+
} from "./mesh.chunk-2YRWJH5X.js";
|
|
17
|
+
import "./mesh.chunk-F4654EPX.js";
|
|
18
|
+
import "./mesh.chunk-LMYPTJ2F.js";
|
|
19
|
+
import "./mesh.chunk-2QIVBQX5.js";
|
|
20
|
+
import "./mesh.chunk-MCBMHWXP.js";
|
|
21
|
+
import "./mesh.chunk-WFFDF346.js";
|
|
22
|
+
import "./mesh.chunk-IQOBTL42.js";
|
|
23
|
+
import "./mesh.chunk-KN4BZOYH.js";
|
|
24
|
+
export {
|
|
25
|
+
NO_REGISTRY_ACCESS_MESSAGE,
|
|
26
|
+
PLATFORM_MONOREPO_NAME,
|
|
27
|
+
bootstrapAppsRepo,
|
|
28
|
+
composableNextSteps,
|
|
29
|
+
copyTemplate,
|
|
30
|
+
describeNoAppsHome,
|
|
31
|
+
ensureRegistryAccess,
|
|
32
|
+
ensureWorkspaceGlobs,
|
|
33
|
+
generateComposableApp,
|
|
34
|
+
isInsidePlatformMonorepo,
|
|
35
|
+
registerCreateAppCommand,
|
|
36
|
+
resolveAppDir,
|
|
37
|
+
shouldBootstrapAppsRepo,
|
|
38
|
+
workspaceGlobForApp
|
|
39
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import {
|
|
2
|
+
decodeJwtPayload,
|
|
3
|
+
getValidToken,
|
|
4
|
+
readCredentials
|
|
5
|
+
} from "./mesh.chunk-LMYPTJ2F.js";
|
|
6
|
+
import "./mesh.chunk-2QIVBQX5.js";
|
|
7
|
+
import "./mesh.chunk-MCBMHWXP.js";
|
|
8
|
+
import {
|
|
9
|
+
logInfo,
|
|
10
|
+
logWarn
|
|
11
|
+
} from "./mesh.chunk-WFFDF346.js";
|
|
12
|
+
import "./mesh.chunk-IQOBTL42.js";
|
|
13
|
+
import "./mesh.chunk-KN4BZOYH.js";
|
|
14
|
+
|
|
15
|
+
// packages/mesh-cli/src/commands/dev-token-server.ts
|
|
16
|
+
import * as http from "node:http";
|
|
17
|
+
async function handleTokenRequest(context, deps) {
|
|
18
|
+
const idToken = await deps.getValidToken(context);
|
|
19
|
+
const creds = idToken ? deps.readCredentials(context) : null;
|
|
20
|
+
if (!idToken || !creds) return { status: 503, body: { error: "token-unavailable" } };
|
|
21
|
+
const payload = deps.decodeJwtPayload(idToken);
|
|
22
|
+
return {
|
|
23
|
+
status: 200,
|
|
24
|
+
body: {
|
|
25
|
+
idToken,
|
|
26
|
+
accessToken: creds.accessToken,
|
|
27
|
+
sub: payload.sub ?? void 0,
|
|
28
|
+
email: creds.email ?? payload.email ?? void 0,
|
|
29
|
+
expiresAt: creds.expiresAt
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
var REFRESH_MARGIN_MS = 12e4;
|
|
34
|
+
async function startTokenServer(port, context) {
|
|
35
|
+
const deps = {
|
|
36
|
+
getValidToken: (c) => getValidToken(c, { marginMs: REFRESH_MARGIN_MS }),
|
|
37
|
+
readCredentials,
|
|
38
|
+
decodeJwtPayload
|
|
39
|
+
};
|
|
40
|
+
const server = http.createServer((_req, res) => {
|
|
41
|
+
void (async () => {
|
|
42
|
+
try {
|
|
43
|
+
const { status, body } = await handleTokenRequest(context, deps);
|
|
44
|
+
res.writeHead(status, { "content-type": "application/json" });
|
|
45
|
+
res.end(JSON.stringify(body));
|
|
46
|
+
} catch (e) {
|
|
47
|
+
res.writeHead(500, { "content-type": "application/json" });
|
|
48
|
+
res.end(JSON.stringify({ error: e.message }));
|
|
49
|
+
}
|
|
50
|
+
})();
|
|
51
|
+
});
|
|
52
|
+
server.on("error", (e) => logWarn(`token-server error: ${e.message}`));
|
|
53
|
+
await new Promise((resolve) => server.listen(port, "127.0.0.1", resolve));
|
|
54
|
+
logInfo(`dev-user token-server on http://127.0.0.1:${port} (context ${context})`);
|
|
55
|
+
await new Promise(() => {
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
handleTokenRequest,
|
|
60
|
+
startTokenServer
|
|
61
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/commands/dev-token-server.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAYA,YAAY,UAAU;AAiBtB,eAAsB,mBACpB,SACA,MAC4C;AAC5C,QAAM,UAAU,MAAM,KAAK,cAAc,OAAO;AAChD,QAAM,QAAQ,UAAU,KAAK,gBAAgB,OAAO,IAAI;AACxD,MAAI,CAAC,WAAW,CAAC,MAAO,QAAO,EAAE,QAAQ,KAAK,MAAM,EAAE,OAAO,oBAAoB,EAAE;AACnF,QAAM,UAAU,KAAK,iBAAiB,OAAO;AAC7C,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,MACJ;AAAA,MACA,aAAa,MAAM;AAAA,MACnB,KAAM,QAAQ,OAAkB;AAAA,MAChC,OAAO,MAAM,SAAU,QAAQ,SAAoB;AAAA,MACnD,WAAW,MAAM;AAAA,IACnB;AAAA,EACF;AACF;AAOA,IAAM,oBAAoB;AAG1B,eAAsB,iBAAiB,MAAc,SAAgC;AACnF,QAAM,OAAwB;AAAA,IAC5B,eAAe,CAAC,MAAM,cAAc,GAAG,EAAE,UAAU,kBAAkB,CAAC;AAAA,IACtE;AAAA,IACA;AAAA,EACF;AACA,QAAM,SAAc,kBAAa,CAAC,MAAM,QAAQ;AAC9C,UAAM,YAAY;AAChB,UAAI;AACF,cAAM,EAAE,QAAQ,KAAK,IAAI,MAAM,mBAAmB,SAAS,IAAI;AAC/D,YAAI,UAAU,QAAQ,EAAE,gBAAgB,mBAAmB,CAAC;AAC5D,YAAI,IAAI,KAAK,UAAU,IAAI,CAAC;AAAA,MAC9B,SAAS,GAAG;AACV,YAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,YAAI,IAAI,KAAK,UAAU,EAAE,OAAQ,EAAY,QAAQ,CAAC,CAAC;AAAA,MACzD;AAAA,IACF,GAAG;AAAA,EACL,CAAC;AACD,SAAO,GAAG,SAAS,CAAC,MAAM,QAAQ,uBAAuB,EAAE,OAAO,EAAE,CAAC;AACrE,QAAM,IAAI,QAAc,CAAC,YAAY,OAAO,OAAO,MAAM,aAAa,OAAO,CAAC;AAC9E,UAAQ,6CAA6C,IAAI,aAAa,OAAO,GAAG;AAChF,QAAM,IAAI,QAAQ,MAAM;AAAA,EAAC,CAAC;AAC5B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|