@rspress/shared 0.0.0-nightly-20230922160325 → 0.0.0-nightly-20230924160319

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/index.d.ts CHANGED
@@ -339,6 +339,7 @@ interface RouteMeta {
339
339
  relativePath: string;
340
340
  pageName: string;
341
341
  lang: string;
342
+ version: string;
342
343
  }
343
344
  interface ReplaceRule {
344
345
  search: string | RegExp;
@@ -455,12 +456,29 @@ interface UserConfig<ThemeConfig = Config$1> {
455
456
  * Add some extra builder plugins
456
457
  */
457
458
  builderPlugins?: BuilderPlugin[];
459
+ /**
460
+ * Multi version config
461
+ */
462
+ multiVersion?: {
463
+ /**
464
+ * The default version
465
+ */
466
+ default?: string;
467
+ /**
468
+ * The version list, such as ['v1', 'v2']
469
+ */
470
+ versions: string[];
471
+ };
458
472
  }
459
473
  type BaseRuntimePageInfo = Omit<PageIndexInfo, 'id' | 'content' | 'domain'>;
460
474
  interface SiteData<ThemeConfig = NormalizedConfig> {
461
475
  root: string;
462
476
  base: string;
463
477
  lang: string;
478
+ locales: {
479
+ lang: string;
480
+ label: string;
481
+ }[];
464
482
  title: string;
465
483
  description: string;
466
484
  icon: string;
@@ -474,6 +492,10 @@ interface SiteData<ThemeConfig = NormalizedConfig> {
474
492
  markdown: {
475
493
  showLineNumbers: boolean;
476
494
  };
495
+ multiVersion: {
496
+ default: string;
497
+ versions: string[];
498
+ };
477
499
  }
478
500
  type PageIndexInfo = {
479
501
  id: number;
@@ -483,6 +505,7 @@ type PageIndexInfo = {
483
505
  content: string;
484
506
  frontmatter: Record<string, unknown>;
485
507
  lang: string;
508
+ version: string;
486
509
  domain: string;
487
510
  _filepath: string;
488
511
  _relativePath: string;
@@ -616,7 +639,14 @@ declare function removeLeadingSlash(url: string): string;
616
639
  declare function removeTrailingSlash(url: string): string;
617
640
  declare function normalizeSlash(url: string): string;
618
641
  declare function isExternalUrl(url: string): boolean;
619
- declare function replaceLang(rawUrl: string, targetLang: string, defaultLang: string, langs: string[], base?: string): string;
642
+ declare function replaceLang(rawUrl: string, lang: {
643
+ current: string;
644
+ target: string;
645
+ default: string;
646
+ }, version: {
647
+ current: string;
648
+ default: string;
649
+ }, base?: string): string;
620
650
  declare const omit: (obj: Record<string, unknown>, keys: string[]) => {
621
651
  [x: string]: unknown;
622
652
  };
package/dist/index.js CHANGED
@@ -1159,26 +1159,36 @@ function normalizeSlash(url) {
1159
1159
  function isExternalUrl(url) {
1160
1160
  return url.startsWith("http://") || url.startsWith("https://") || url.startsWith("mailto:") || url.startsWith("tel:");
1161
1161
  }
1162
- function replaceLang(rawUrl, targetLang, defaultLang, langs, base = "") {
1162
+ function replaceLang(rawUrl, lang, version, base = "") {
1163
1163
  let url = removeBase(rawUrl, base);
1164
1164
  if (!url) {
1165
1165
  url = "/index.html";
1166
1166
  }
1167
- const originalLang = url.split("/")[1];
1168
- const inDefaultLang = !langs.includes(originalLang);
1169
- let result;
1170
- if (inDefaultLang) {
1171
- if (targetLang === defaultLang) {
1172
- result = url;
1173
- } else {
1174
- result = addLeadingSlash(`${targetLang}${url}`);
1167
+ let versionPart = "";
1168
+ let langPart = "";
1169
+ let purePathPart = "";
1170
+ const parts = url.split("/").filter(Boolean);
1171
+ if (version.current && version.current !== version.default) {
1172
+ versionPart = parts.shift() || "";
1173
+ }
1174
+ if (lang.target !== lang.default) {
1175
+ langPart = lang.target;
1176
+ if (lang.current !== lang.default) {
1177
+ parts.shift();
1175
1178
  }
1176
- } else if (targetLang === defaultLang) {
1177
- result = url.replace(`/${originalLang}`, "");
1178
1179
  } else {
1179
- result = url.replace(originalLang, targetLang);
1180
+ parts.shift();
1181
+ }
1182
+ purePathPart = parts.join("/") || "";
1183
+ if ((versionPart || langPart) && !purePathPart) {
1184
+ purePathPart = "index.html";
1180
1185
  }
1181
- return withBase(result, base);
1186
+ return withBase(
1187
+ addLeadingSlash(
1188
+ [versionPart, langPart, purePathPart].filter(Boolean).join("/")
1189
+ ),
1190
+ base
1191
+ );
1182
1192
  }
1183
1193
  var omit = (obj, keys) => {
1184
1194
  const ret = { ...obj };
package/dist/index.mjs CHANGED
@@ -1113,26 +1113,35 @@ function normalizeSlash(url) {
1113
1113
  function isExternalUrl(url) {
1114
1114
  return url.startsWith("http://") || url.startsWith("https://") || url.startsWith("mailto:") || url.startsWith("tel:");
1115
1115
  }
1116
- function replaceLang(rawUrl, targetLang, defaultLang, langs, base = "") {
1116
+ function replaceLang(rawUrl, lang, version, base = "") {
1117
1117
  let url = removeBase(rawUrl, base);
1118
1118
  if (!url) {
1119
1119
  url = "/index.html";
1120
1120
  }
1121
- const originalLang = url.split("/")[1];
1122
- const inDefaultLang = !langs.includes(originalLang);
1123
- let result;
1124
- if (inDefaultLang) {
1125
- if (targetLang === defaultLang) {
1126
- result = url;
1127
- } else {
1128
- result = addLeadingSlash(`${targetLang}${url}`);
1121
+ let versionPart = "";
1122
+ let langPart = "";
1123
+ let purePathPart = "";
1124
+ const parts = url.split("/").filter(Boolean);
1125
+ if (version.current && version.current !== version.default) {
1126
+ versionPart = parts.shift() || "";
1127
+ }
1128
+ if (lang.target !== lang.default) {
1129
+ langPart = lang.target;
1130
+ if (lang.current !== lang.default) {
1131
+ parts.shift();
1129
1132
  }
1130
- } else if (targetLang === defaultLang) {
1131
- result = url.replace(`/${originalLang}`, "");
1132
1133
  } else {
1133
- result = url.replace(originalLang, targetLang);
1134
+ parts.shift();
1135
+ }
1136
+ purePathPart = parts.join("/") || "";
1137
+ if ((versionPart || langPart) && !purePathPart) {
1138
+ purePathPart = "index.html";
1134
1139
  }
1135
- return withBase(result, base);
1140
+ return withBase(addLeadingSlash([
1141
+ versionPart,
1142
+ langPart,
1143
+ purePathPart
1144
+ ].filter(Boolean).join("/")), base);
1136
1145
  }
1137
1146
  var omit = (obj, keys) => {
1138
1147
  const ret = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rspress/shared",
3
- "version": "0.0.0-nightly-20230922160325",
3
+ "version": "0.0.0-nightly-20230924160319",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",