create-thally-docs 0.10.59 → 0.10.61
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/{chunk-HCLGCJOH.js → chunk-I6IIZGQY.js} +27 -7
- package/dist/{chunk-JBOFGGFQ.js → chunk-ND33X4NN.js} +1 -1
- package/dist/{chunk-GAO436L2.js → chunk-NNT7JTC2.js} +43 -8
- package/dist/{chunk-THI3OQRL.js → chunk-SLDENDOT.js} +1 -1
- package/dist/{chunk-YGOSZNE7.js → chunk-UX57AKM4.js} +2 -2
- package/dist/index.js +5 -5
- package/dist/migrate/index.js +5 -5
- package/dist/release.js +1 -1
- package/dist/scaffold.js +4 -4
- package/dist/starter-sync.js +2 -2
- package/dist/starter-update.js +3 -3
- package/package.json +2 -2
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
// src/stable-scaffold-release.json
|
|
4
4
|
var stable_scaffold_release_default = {
|
|
5
5
|
schemaVersion: 1,
|
|
6
|
-
id: "2026-09-
|
|
6
|
+
id: "2026-09-29.5b063972.7f16574b",
|
|
7
7
|
source: {
|
|
8
8
|
repository: "thallylabs/starter",
|
|
9
|
-
commitSha: "
|
|
10
|
-
treeSha: "
|
|
11
|
-
archiveUrl: "https://codeload.github.com/thallylabs/starter/tar.gz/
|
|
9
|
+
commitSha: "5b0639728efe2b6a16ac93d3166e499c959e976b",
|
|
10
|
+
treeSha: "251a4f91ad6deda5a4c3e257b067c3b7f74a5c00",
|
|
11
|
+
archiveUrl: "https://codeload.github.com/thallylabs/starter/tar.gz/5b0639728efe2b6a16ac93d3166e499c959e976b",
|
|
12
12
|
manifestPath: "starter-release.json",
|
|
13
|
-
manifestSha256: "
|
|
13
|
+
manifestSha256: "ad9eafe8a243eb23670ca39a314cda7843b3e6da809f9a3cd1c49bd80f44848d"
|
|
14
14
|
},
|
|
15
15
|
runtime: {
|
|
16
16
|
repository: "thallylabs/thally",
|
|
17
|
-
commitSha: "
|
|
18
|
-
treeSha: "
|
|
17
|
+
commitSha: "7f16574beefb0fdd91bc5bdaa322d3e7dc527c61",
|
|
18
|
+
treeSha: "e046affbd74d72e7a6c041361ec3418d4fd95120",
|
|
19
19
|
contentSource: "assets",
|
|
20
20
|
identityContractVersion: 1
|
|
21
21
|
},
|
|
@@ -24,6 +24,26 @@ var stable_scaffold_release_default = {
|
|
|
24
24
|
|
|
25
25
|
// src/previous-scaffold-releases.json
|
|
26
26
|
var previous_scaffold_releases_default = [
|
|
27
|
+
{
|
|
28
|
+
schemaVersion: 1,
|
|
29
|
+
id: "2026-09-28.b0612637.c9291377",
|
|
30
|
+
source: {
|
|
31
|
+
repository: "thallylabs/starter",
|
|
32
|
+
commitSha: "b0612637313a7e032742f9be2a6fae2c886420bf",
|
|
33
|
+
treeSha: "a241556c50f660d6e3c7c864886b645c480d2044",
|
|
34
|
+
archiveUrl: "https://codeload.github.com/thallylabs/starter/tar.gz/b0612637313a7e032742f9be2a6fae2c886420bf",
|
|
35
|
+
manifestPath: "starter-release.json",
|
|
36
|
+
manifestSha256: "41ec28a22acb6ec724af665a8db7879ea03ea2b4aa7d74828d7ad7afb9f41c06"
|
|
37
|
+
},
|
|
38
|
+
runtime: {
|
|
39
|
+
repository: "thallylabs/thally",
|
|
40
|
+
commitSha: "c929137720df1226134f560773a43accbbcdb742",
|
|
41
|
+
treeSha: "e2958e51167e6cbf2873658ddd50f776cf2c4ab1",
|
|
42
|
+
contentSource: "assets",
|
|
43
|
+
identityContractVersion: 1
|
|
44
|
+
},
|
|
45
|
+
starterVersion: 2
|
|
46
|
+
},
|
|
27
47
|
{
|
|
28
48
|
schemaVersion: 1,
|
|
29
49
|
id: "2026-09-28.9729212c.c28e9504",
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
readDocsJson,
|
|
6
6
|
scaffold,
|
|
7
7
|
writeDocsJson
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SLDENDOT.js";
|
|
9
9
|
|
|
10
10
|
// src/migrate/index.ts
|
|
11
11
|
import { existsSync as existsSync3, mkdirSync, mkdtempSync, readFileSync as readFileSync3, rmSync, writeFileSync } from "fs";
|
|
@@ -246,7 +246,33 @@ function pageIdToPath(pageId, secondaryLocales) {
|
|
|
246
246
|
const basePath = navPageId === "introduction" ? "/" : `/${navPageId}`;
|
|
247
247
|
return locale ? `/${locale}${basePath === "/" ? "" : basePath}` : basePath;
|
|
248
248
|
}
|
|
249
|
-
function
|
|
249
|
+
function compileDynamicRedirectSource(source, destination) {
|
|
250
|
+
if (!source.includes(":")) return null;
|
|
251
|
+
const paramNames = [];
|
|
252
|
+
let pattern = "";
|
|
253
|
+
source.split("/").forEach((segment, index) => {
|
|
254
|
+
const match = segment.match(/^:([A-Za-z_][A-Za-z0-9_]*)([*+?]?)$/);
|
|
255
|
+
const separator = index === 0 ? "" : "/";
|
|
256
|
+
if (!match) {
|
|
257
|
+
pattern += separator + segment.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
const [, name, quantifier] = match;
|
|
261
|
+
paramNames.push(name);
|
|
262
|
+
if (quantifier === "*") pattern += `(?:${separator}(.*))?`;
|
|
263
|
+
else if (quantifier === "?") pattern += `(?:${separator}([^/]+))?`;
|
|
264
|
+
else pattern += `${separator}(${quantifier === "+" ? ".+" : "[^/]+"})`;
|
|
265
|
+
});
|
|
266
|
+
return { regex: new RegExp(`^${pattern}$`), paramNames, destination };
|
|
267
|
+
}
|
|
268
|
+
function resolveDynamicRedirectDestination(redirect, match) {
|
|
269
|
+
return redirect.destination.replace(/:([A-Za-z_][A-Za-z0-9_]*)[*+?]?/g, (whole, name) => {
|
|
270
|
+
const index = redirect.paramNames.indexOf(name);
|
|
271
|
+
return index === -1 ? whole : match[index + 1] ?? "";
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
var MAX_REDIRECT_HOPS = 20;
|
|
275
|
+
function resolveLink(target, redirects, dynamicRedirects = []) {
|
|
250
276
|
let current = target;
|
|
251
277
|
let anchor;
|
|
252
278
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -256,11 +282,16 @@ function resolveLink(target, redirects) {
|
|
|
256
282
|
if (hash >= 0) anchor = current.slice(hash + 1);
|
|
257
283
|
const beforeHash = hash >= 0 ? current.slice(0, hash) : current;
|
|
258
284
|
const path = beforeHash.split("?", 1)[0].replace(/\/$/, "") || "/";
|
|
259
|
-
if (seen.has(path)) return { path, anchor, cycle: true };
|
|
285
|
+
if (seen.has(path) || seen.size >= MAX_REDIRECT_HOPS) return { path, anchor, cycle: true };
|
|
260
286
|
seen.add(path);
|
|
261
|
-
const
|
|
262
|
-
if (
|
|
263
|
-
|
|
287
|
+
const literalRedirect = redirects.get(path);
|
|
288
|
+
if (literalRedirect) {
|
|
289
|
+
current = literalRedirect;
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
const dynamicMatch = dynamicRedirects.map((redirect) => ({ redirect, match: path.match(redirect.regex) })).find((candidate) => candidate.match !== null);
|
|
293
|
+
if (!dynamicMatch) return { path, anchor };
|
|
294
|
+
current = resolveDynamicRedirectDestination(dynamicMatch.redirect, dynamicMatch.match);
|
|
264
295
|
}
|
|
265
296
|
}
|
|
266
297
|
function validateOpenApi(projectDir, source, issues) {
|
|
@@ -320,11 +351,15 @@ async function runCheck(projectDir, options) {
|
|
|
320
351
|
...Array.from(secondaryLocales, (locale) => `/${locale}/api`)
|
|
321
352
|
]);
|
|
322
353
|
const redirectDestinations = new Map(
|
|
323
|
-
(config.redirects ?? []).map((redirect) => [
|
|
354
|
+
(config.redirects ?? []).filter((redirect) => !redirect.source.includes(":")).map((redirect) => [
|
|
324
355
|
redirect.source.replace(/\/$/, "") || "/",
|
|
325
356
|
redirect.destination
|
|
326
357
|
])
|
|
327
358
|
);
|
|
359
|
+
const dynamicRedirects = (config.redirects ?? []).flatMap((redirect) => {
|
|
360
|
+
const compiled = compileDynamicRedirectSource(redirect.source, redirect.destination);
|
|
361
|
+
return compiled ? [compiled] : [];
|
|
362
|
+
});
|
|
328
363
|
const navigation = projectNavigationContract(config);
|
|
329
364
|
const navPageIds = new Set(navigation.authoredPageIds);
|
|
330
365
|
for (const tab of navigation.emptyTabs) {
|
|
@@ -406,7 +441,7 @@ async function runCheck(projectDir, options) {
|
|
|
406
441
|
continue;
|
|
407
442
|
}
|
|
408
443
|
if (!target.startsWith("/")) continue;
|
|
409
|
-
const { path, anchor, cycle, external } = resolveLink(target, redirectDestinations);
|
|
444
|
+
const { path, anchor, cycle, external } = resolveLink(target, redirectDestinations, dynamicRedirects);
|
|
410
445
|
if (external) continue;
|
|
411
446
|
const isGeneratedApiPath = Array.from(generatedApiPaths).some(
|
|
412
447
|
(prefix) => path === prefix || path.startsWith(`${prefix}/`)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readStarterReleaseManifest
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ND33X4NN.js";
|
|
5
5
|
import {
|
|
6
6
|
STABLE_SCAFFOLD_RELEASE
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-I6IIZGQY.js";
|
|
8
8
|
|
|
9
9
|
// src/download.ts
|
|
10
10
|
import { Readable, Transform, pipeline } from "stream";
|
package/dist/index.js
CHANGED
|
@@ -3,17 +3,17 @@ import {
|
|
|
3
3
|
migrateDocs,
|
|
4
4
|
parseFrontmatter,
|
|
5
5
|
runCheck
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NNT7JTC2.js";
|
|
7
7
|
import {
|
|
8
8
|
logo,
|
|
9
9
|
scaffold,
|
|
10
10
|
slugify,
|
|
11
11
|
success
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SLDENDOT.js";
|
|
13
13
|
import "./chunk-XYRM4GAT.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-UX57AKM4.js";
|
|
15
|
+
import "./chunk-ND33X4NN.js";
|
|
16
|
+
import "./chunk-I6IIZGQY.js";
|
|
17
17
|
|
|
18
18
|
// src/index.ts
|
|
19
19
|
import { existsSync as existsSync2, readdirSync } from "fs";
|
package/dist/migrate/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
migrateDocs
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-NNT7JTC2.js";
|
|
5
|
+
import "../chunk-SLDENDOT.js";
|
|
6
6
|
import "../chunk-XYRM4GAT.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-UX57AKM4.js";
|
|
8
|
+
import "../chunk-ND33X4NN.js";
|
|
9
|
+
import "../chunk-I6IIZGQY.js";
|
|
10
10
|
export {
|
|
11
11
|
migrateDocs
|
|
12
12
|
};
|
package/dist/release.js
CHANGED
package/dist/scaffold.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
scaffold
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SLDENDOT.js";
|
|
5
5
|
import "./chunk-XYRM4GAT.js";
|
|
6
6
|
import {
|
|
7
7
|
STARTER_ARCHIVE_ROOT,
|
|
8
8
|
STARTER_COMMIT_SHA,
|
|
9
9
|
STARTER_REPOSITORY,
|
|
10
10
|
validateStarterArchiveEntry
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-UX57AKM4.js";
|
|
12
|
+
import "./chunk-ND33X4NN.js";
|
|
13
13
|
import {
|
|
14
14
|
STABLE_SCAFFOLD_RELEASE
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-I6IIZGQY.js";
|
|
16
16
|
export {
|
|
17
17
|
STABLE_SCAFFOLD_RELEASE,
|
|
18
18
|
STARTER_ARCHIVE_ROOT,
|
package/dist/starter-sync.js
CHANGED
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
planStarterRuntimeSync,
|
|
9
9
|
readStarterReleaseManifest,
|
|
10
10
|
starterManifestSha256
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-ND33X4NN.js";
|
|
12
|
+
import "./chunk-I6IIZGQY.js";
|
|
13
13
|
export {
|
|
14
14
|
applyStarterRuntimeSyncPlan,
|
|
15
15
|
classifyStarterPath,
|
package/dist/starter-update.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
downloadStarter
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UX57AKM4.js";
|
|
5
5
|
import {
|
|
6
6
|
applyStarterRuntimeSyncPlan,
|
|
7
7
|
mergeStarterOwnershipContracts,
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
planStarterRuntimeSync,
|
|
10
10
|
readStarterReleaseManifest,
|
|
11
11
|
starterManifestSha256
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ND33X4NN.js";
|
|
13
13
|
import {
|
|
14
14
|
STABLE_SCAFFOLD_RELEASE,
|
|
15
15
|
SUPPORTED_SCAFFOLD_RELEASES
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-I6IIZGQY.js";
|
|
17
17
|
|
|
18
18
|
// src/starter-update.ts
|
|
19
19
|
import {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-thally-docs",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.61",
|
|
4
4
|
"description": "Scaffold an open-source Thally docs site for people, search engines, and AI tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@anthropic-ai/sdk": "^0.36.0",
|
|
46
46
|
"@inquirer/prompts": "^7.0.0",
|
|
47
47
|
"@thallylabs/core": "0.2.9",
|
|
48
|
-
"@thallylabs/migrate": "0.2.
|
|
48
|
+
"@thallylabs/migrate": "0.2.11",
|
|
49
49
|
"p-limit": "^6.1.0",
|
|
50
50
|
"tar": "^7.5.22",
|
|
51
51
|
"yaml": "^2.6.0"
|