@windrun-huaiin/lib 3.3.0 → 3.4.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.
@@ -1,9 +1,8 @@
1
- "use strict";
1
+ 'use strict';
2
+
2
3
  var __defProp = Object.defineProperty;
3
4
  var __defProps = Object.defineProperties;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
6
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
8
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -20,28 +19,8 @@ var __spreadValues = (a, b) => {
20
19
  return a;
21
20
  };
22
21
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
- var __export = (target, all) => {
24
- for (var name in all)
25
- __defProp(target, name, { get: all[name], enumerable: true });
26
- };
27
- var __copyProps = (to, from, except, desc) => {
28
- if (from && typeof from === "object" || typeof from === "function") {
29
- for (let key of __getOwnPropNames(from))
30
- if (!__hasOwnProp.call(to, key) && key !== except)
31
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
- }
33
- return to;
34
- };
35
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
22
 
37
23
  // src/common-app-config.ts
38
- var common_app_config_exports = {};
39
- __export(common_app_config_exports, {
40
- LOCALE_PRESETS: () => LOCALE_PRESETS,
41
- createCommonAppConfig: () => createCommonAppConfig,
42
- createI18nHelpers: () => createI18nHelpers
43
- });
44
- module.exports = __toCommonJS(common_app_config_exports);
45
24
  var ALL_LOCALE_LABELS = {
46
25
  en: "English",
47
26
  zh: "\u7B80\u4F53\u4E2D\u6587",
@@ -169,10 +148,9 @@ var LOCALE_PRESETS = {
169
148
  // No internationalization (only default language)
170
149
  NONE: { locales: [], defaultLocale: "en" }
171
150
  };
172
- // Annotate the CommonJS export names for ESM import in node:
173
- 0 && (module.exports = {
174
- LOCALE_PRESETS,
175
- createCommonAppConfig,
176
- createI18nHelpers
177
- });
151
+
152
+ exports.LOCALE_PRESETS = LOCALE_PRESETS;
153
+ exports.createCommonAppConfig = createCommonAppConfig;
154
+ exports.createI18nHelpers = createI18nHelpers;
155
+ //# sourceMappingURL=common-app-config.js.map
178
156
  //# sourceMappingURL=common-app-config.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common-app-config.ts"],"sourcesContent":["// Supported languages and their labels\nconst ALL_LOCALE_LABELS = {\n en: \"English\",\n zh: \"简体中文\",\n ja: \"日本語\", \n ko: \"한국어\",\n fr: \"Français\",\n de: \"Deutsch\",\n es: \"Español\",\n it: \"Italiano\",\n pt: \"Português\",\n tr: \"Türkçe\",\n pl: \"Polski\",\n ru: \"Русский\",\n ar: \"العربية\",\n hi: \"हिन्दी\",\n th: \"ไทย\",\n vi: \"Tiếng Việt\",\n} as const;\n\nexport type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;\n\n// Helper function to get language configuration from environment variables\nfunction getLocaleLabels(locales: string[]) {\n return Object.fromEntries(\n locales.map(locale => [\n locale, \n ALL_LOCALE_LABELS[locale as SupportedLocale] || locale\n ])\n );\n}\n\n// Common application configuration creation function\nexport function createCommonAppConfig(options?: {\n // Optional: manually specify supported languages, otherwise read from environment variables\n locales?: string[];\n defaultLocale?: string;\n}) {\n // Priority: manual configuration > environment variables > default values\n const locales = options?.locales ?? \n process.env.NEXT_PUBLIC_I18N_LOCALES?.split(',').map(s => s.trim()) ?? \n ['en', 'zh'];\n \n const defaultLocale = options?.defaultLocale ?? \n process.env.NEXT_PUBLIC_I18N_DEFAULT_LOCALE ?? \n 'en';\n \n const storagePrefix = process.env.NEXT_PUBLIC_I18N_STORAGE_PREFIX || 'WINDRUN-HUAIIN';\n\n const config = {\n // Basic configuration\n baseUrl: process.env.NEXT_PUBLIC_BASE_URL || '',\n githubBaseUrl: process.env.NEXT_PUBLIC_GITHUB_BASE_URL || '',\n github: process.env.NEXT_PUBLIC_GITHUB || '',\n githubInfoToken: process.env.NEXT_PUBLIC_FUMA_GITHUB_TOKEN || '',\n\n // Internationalization configuration\n i18n: {\n locales: locales as readonly string[],\n defaultLocale,\n localeLabels: getLocaleLabels(locales),\n detector: {\n storageKey: process.env.NEXT_PUBLIC_I18N_STORAGE_KEY || 'language-preference-status',\n autoCloseTimeout: parseInt(process.env.NEXT_PUBLIC_I18N_AUTO_CLOSE_TIMEOUT || '10000'),\n expirationDays: parseInt(process.env.NEXT_PUBLIC_I18N_EXPIRATION_DAYS || '30'),\n storagePrefix\n },\n messageRoot: process.env.NEXT_PUBLIC_I18N_MESSAGE_ROOT || 'messages',\n },\n\n // Style configuration\n style: {\n icon: {\n uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || \"text-purple-500\"\n },\n showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === 'true',\n clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === 'true',\n clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === 'true',\n watermark: {\n enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === 'true',\n text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || \"巽川·怀因\"\n },\n cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || \"https://raw.githubusercontent.com/caofanCPU/wind-run-1/main/public\",\n placeHolder: {\n image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || \"/default.webp\"\n }\n },\n\n // Clerk configuration\n clerk: {\n signInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || \"/sign-in\",\n fallbackSignInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL || \"/\",\n signUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || \"/sign-up\", \n fallbackSignUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL || \"/\",\n waitlistUrl: process.env.NEXT_PUBLIC_CLERK_WAITLIST_URL || \"/waitlist\",\n debug: process.env.CLERK_DEBUG === 'true',\n },\n\n // MDX source file directory configuration\n mdxSourceDir: {\n docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || \"src/mdx/docs\",\n blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || \"src/mdx/blog\", \n legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || \"src/mdx/legal\"\n },\n };\n\n // Convenient constants - avoid deep nested access\n const shortcuts = {\n iconColor: config.style.icon.uniformColor,\n watermark: config.style.watermark,\n showBanner: config.style.showBanner,\n clerkPageBanner: config.style.clerkPageBanner,\n clerkAuthInModal: config.style.clerkAuthInModal,\n placeHolderImage: config.style.placeHolder.image,\n clerk: config.clerk,\n };\n\n return {\n ...config,\n shortcuts\n };\n}\n\n// Create internationalization helper functions\nexport function createI18nHelpers(i18nConfig: ReturnType<typeof createCommonAppConfig>['i18n']) {\n function isSupportedLocale(locale: string): locale is typeof i18nConfig.locales[number] {\n return (i18nConfig.locales as readonly string[]).includes(locale);\n }\n\n function getValidLocale(locale: string): typeof i18nConfig.locales[number] {\n return isSupportedLocale(locale) ? locale : i18nConfig.defaultLocale;\n }\n\n const generatedLocales = i18nConfig.locales.map((loc) => ({\n name: i18nConfig.localeLabels[loc as keyof typeof i18nConfig.localeLabels] || loc,\n locale: loc,\n }));\n\n return {\n isSupportedLocale,\n getValidLocale,\n generatedLocales\n };\n}\n\n// Convenient configuration presets\nexport const LOCALE_PRESETS = {\n // Only support English\n EN_ONLY: { locales: ['en'] as string[], defaultLocale: 'en' as string },\n \n // English and Chinese\n EN_ZH: { locales: ['en', 'zh'] as string[], defaultLocale: 'en' as string },\n \n // Main Asian languages\n ASIA: { locales: ['en', 'zh', 'ja', 'ko'] as string[], defaultLocale: 'en' as string },\n \n // Main European languages\n EUROPE: { locales: ['en', 'fr', 'de', 'es', 'it'] as string[], defaultLocale: 'en' as string },\n \n // Globalization\n GLOBAL: { locales: ['en', 'zh', 'ja', 'ko', 'fr', 'de', 'es', 'it', 'pt', 'ru'] as string[], defaultLocale: 'en' as string },\n \n // No internationalization (only default language)\n NONE: { locales: [] as string[], defaultLocale: 'en' as string }\n}; "],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/common-app-config.ts"],"names":[],"mappings":"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","file":"common-app-config.js","sourcesContent":["// Supported languages and their labels\nconst ALL_LOCALE_LABELS = {\n en: \"English\",\n zh: \"简体中文\",\n ja: \"日本語\", \n ko: \"한국어\",\n fr: \"Français\",\n de: \"Deutsch\",\n es: \"Español\",\n it: \"Italiano\",\n pt: \"Português\",\n tr: \"Türkçe\",\n pl: \"Polski\",\n ru: \"Русский\",\n ar: \"العربية\",\n hi: \"हिन्दी\",\n th: \"ไทย\",\n vi: \"Tiếng Việt\",\n} as const;\n\nexport type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;\n\n// Helper function to get language configuration from environment variables\nfunction getLocaleLabels(locales: string[]) {\n return Object.fromEntries(\n locales.map(locale => [\n locale, \n ALL_LOCALE_LABELS[locale as SupportedLocale] || locale\n ])\n );\n}\n\n// Common application configuration creation function\nexport function createCommonAppConfig(options?: {\n // Optional: manually specify supported languages, otherwise read from environment variables\n locales?: string[];\n defaultLocale?: string;\n}) {\n // Priority: manual configuration > environment variables > default values\n const locales = options?.locales ?? \n process.env.NEXT_PUBLIC_I18N_LOCALES?.split(',').map(s => s.trim()) ?? \n ['en', 'zh'];\n \n const defaultLocale = options?.defaultLocale ?? \n process.env.NEXT_PUBLIC_I18N_DEFAULT_LOCALE ?? \n 'en';\n \n const storagePrefix = process.env.NEXT_PUBLIC_I18N_STORAGE_PREFIX || 'WINDRUN-HUAIIN';\n\n const config = {\n // Basic configuration\n baseUrl: process.env.NEXT_PUBLIC_BASE_URL || '',\n githubBaseUrl: process.env.NEXT_PUBLIC_GITHUB_BASE_URL || '',\n github: process.env.NEXT_PUBLIC_GITHUB || '',\n githubInfoToken: process.env.NEXT_PUBLIC_FUMA_GITHUB_TOKEN || '',\n\n // Internationalization configuration\n i18n: {\n locales: locales as readonly string[],\n defaultLocale,\n localeLabels: getLocaleLabels(locales),\n detector: {\n storageKey: process.env.NEXT_PUBLIC_I18N_STORAGE_KEY || 'language-preference-status',\n autoCloseTimeout: parseInt(process.env.NEXT_PUBLIC_I18N_AUTO_CLOSE_TIMEOUT || '10000'),\n expirationDays: parseInt(process.env.NEXT_PUBLIC_I18N_EXPIRATION_DAYS || '30'),\n storagePrefix\n },\n messageRoot: process.env.NEXT_PUBLIC_I18N_MESSAGE_ROOT || 'messages',\n },\n\n // Style configuration\n style: {\n icon: {\n uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || \"text-purple-500\"\n },\n showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === 'true',\n clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === 'true',\n clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === 'true',\n watermark: {\n enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === 'true',\n text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || \"巽川·怀因\"\n },\n cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || \"https://raw.githubusercontent.com/caofanCPU/wind-run-1/main/public\",\n placeHolder: {\n image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || \"/default.webp\"\n }\n },\n\n // Clerk configuration\n clerk: {\n signInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || \"/sign-in\",\n fallbackSignInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL || \"/\",\n signUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || \"/sign-up\", \n fallbackSignUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL || \"/\",\n waitlistUrl: process.env.NEXT_PUBLIC_CLERK_WAITLIST_URL || \"/waitlist\",\n debug: process.env.CLERK_DEBUG === 'true',\n },\n\n // MDX source file directory configuration\n mdxSourceDir: {\n docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || \"src/mdx/docs\",\n blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || \"src/mdx/blog\", \n legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || \"src/mdx/legal\"\n },\n };\n\n // Convenient constants - avoid deep nested access\n const shortcuts = {\n iconColor: config.style.icon.uniformColor,\n watermark: config.style.watermark,\n showBanner: config.style.showBanner,\n clerkPageBanner: config.style.clerkPageBanner,\n clerkAuthInModal: config.style.clerkAuthInModal,\n placeHolderImage: config.style.placeHolder.image,\n clerk: config.clerk,\n };\n\n return {\n ...config,\n shortcuts\n };\n}\n\n// Create internationalization helper functions\nexport function createI18nHelpers(i18nConfig: ReturnType<typeof createCommonAppConfig>['i18n']) {\n function isSupportedLocale(locale: string): locale is typeof i18nConfig.locales[number] {\n return (i18nConfig.locales as readonly string[]).includes(locale);\n }\n\n function getValidLocale(locale: string): typeof i18nConfig.locales[number] {\n return isSupportedLocale(locale) ? locale : i18nConfig.defaultLocale;\n }\n\n const generatedLocales = i18nConfig.locales.map((loc) => ({\n name: i18nConfig.localeLabels[loc as keyof typeof i18nConfig.localeLabels] || loc,\n locale: loc,\n }));\n\n return {\n isSupportedLocale,\n getValidLocale,\n generatedLocales\n };\n}\n\n// Convenient configuration presets\nexport const LOCALE_PRESETS = {\n // Only support English\n EN_ONLY: { locales: ['en'] as string[], defaultLocale: 'en' as string },\n \n // English and Chinese\n EN_ZH: { locales: ['en', 'zh'] as string[], defaultLocale: 'en' as string },\n \n // Main Asian languages\n ASIA: { locales: ['en', 'zh', 'ja', 'ko'] as string[], defaultLocale: 'en' as string },\n \n // Main European languages\n EUROPE: { locales: ['en', 'fr', 'de', 'es', 'it'] as string[], defaultLocale: 'en' as string },\n \n // Globalization\n GLOBAL: { locales: ['en', 'zh', 'ja', 'ko', 'fr', 'de', 'es', 'it', 'pt', 'ru'] as string[], defaultLocale: 'en' as string },\n \n // No internationalization (only default language)\n NONE: { locales: [] as string[], defaultLocale: 'en' as string }\n}; "]}
@@ -146,9 +146,7 @@ var LOCALE_PRESETS = {
146
146
  // No internationalization (only default language)
147
147
  NONE: { locales: [], defaultLocale: "en" }
148
148
  };
149
- export {
150
- LOCALE_PRESETS,
151
- createCommonAppConfig,
152
- createI18nHelpers
153
- };
149
+
150
+ export { LOCALE_PRESETS, createCommonAppConfig, createI18nHelpers };
151
+ //# sourceMappingURL=common-app-config.mjs.map
154
152
  //# sourceMappingURL=common-app-config.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common-app-config.ts"],"sourcesContent":["// Supported languages and their labels\nconst ALL_LOCALE_LABELS = {\n en: \"English\",\n zh: \"简体中文\",\n ja: \"日本語\", \n ko: \"한국어\",\n fr: \"Français\",\n de: \"Deutsch\",\n es: \"Español\",\n it: \"Italiano\",\n pt: \"Português\",\n tr: \"Türkçe\",\n pl: \"Polski\",\n ru: \"Русский\",\n ar: \"العربية\",\n hi: \"हिन्दी\",\n th: \"ไทย\",\n vi: \"Tiếng Việt\",\n} as const;\n\nexport type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;\n\n// Helper function to get language configuration from environment variables\nfunction getLocaleLabels(locales: string[]) {\n return Object.fromEntries(\n locales.map(locale => [\n locale, \n ALL_LOCALE_LABELS[locale as SupportedLocale] || locale\n ])\n );\n}\n\n// Common application configuration creation function\nexport function createCommonAppConfig(options?: {\n // Optional: manually specify supported languages, otherwise read from environment variables\n locales?: string[];\n defaultLocale?: string;\n}) {\n // Priority: manual configuration > environment variables > default values\n const locales = options?.locales ?? \n process.env.NEXT_PUBLIC_I18N_LOCALES?.split(',').map(s => s.trim()) ?? \n ['en', 'zh'];\n \n const defaultLocale = options?.defaultLocale ?? \n process.env.NEXT_PUBLIC_I18N_DEFAULT_LOCALE ?? \n 'en';\n \n const storagePrefix = process.env.NEXT_PUBLIC_I18N_STORAGE_PREFIX || 'WINDRUN-HUAIIN';\n\n const config = {\n // Basic configuration\n baseUrl: process.env.NEXT_PUBLIC_BASE_URL || '',\n githubBaseUrl: process.env.NEXT_PUBLIC_GITHUB_BASE_URL || '',\n github: process.env.NEXT_PUBLIC_GITHUB || '',\n githubInfoToken: process.env.NEXT_PUBLIC_FUMA_GITHUB_TOKEN || '',\n\n // Internationalization configuration\n i18n: {\n locales: locales as readonly string[],\n defaultLocale,\n localeLabels: getLocaleLabels(locales),\n detector: {\n storageKey: process.env.NEXT_PUBLIC_I18N_STORAGE_KEY || 'language-preference-status',\n autoCloseTimeout: parseInt(process.env.NEXT_PUBLIC_I18N_AUTO_CLOSE_TIMEOUT || '10000'),\n expirationDays: parseInt(process.env.NEXT_PUBLIC_I18N_EXPIRATION_DAYS || '30'),\n storagePrefix\n },\n messageRoot: process.env.NEXT_PUBLIC_I18N_MESSAGE_ROOT || 'messages',\n },\n\n // Style configuration\n style: {\n icon: {\n uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || \"text-purple-500\"\n },\n showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === 'true',\n clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === 'true',\n clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === 'true',\n watermark: {\n enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === 'true',\n text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || \"巽川·怀因\"\n },\n cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || \"https://raw.githubusercontent.com/caofanCPU/wind-run-1/main/public\",\n placeHolder: {\n image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || \"/default.webp\"\n }\n },\n\n // Clerk configuration\n clerk: {\n signInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || \"/sign-in\",\n fallbackSignInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL || \"/\",\n signUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || \"/sign-up\", \n fallbackSignUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL || \"/\",\n waitlistUrl: process.env.NEXT_PUBLIC_CLERK_WAITLIST_URL || \"/waitlist\",\n debug: process.env.CLERK_DEBUG === 'true',\n },\n\n // MDX source file directory configuration\n mdxSourceDir: {\n docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || \"src/mdx/docs\",\n blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || \"src/mdx/blog\", \n legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || \"src/mdx/legal\"\n },\n };\n\n // Convenient constants - avoid deep nested access\n const shortcuts = {\n iconColor: config.style.icon.uniformColor,\n watermark: config.style.watermark,\n showBanner: config.style.showBanner,\n clerkPageBanner: config.style.clerkPageBanner,\n clerkAuthInModal: config.style.clerkAuthInModal,\n placeHolderImage: config.style.placeHolder.image,\n clerk: config.clerk,\n };\n\n return {\n ...config,\n shortcuts\n };\n}\n\n// Create internationalization helper functions\nexport function createI18nHelpers(i18nConfig: ReturnType<typeof createCommonAppConfig>['i18n']) {\n function isSupportedLocale(locale: string): locale is typeof i18nConfig.locales[number] {\n return (i18nConfig.locales as readonly string[]).includes(locale);\n }\n\n function getValidLocale(locale: string): typeof i18nConfig.locales[number] {\n return isSupportedLocale(locale) ? locale : i18nConfig.defaultLocale;\n }\n\n const generatedLocales = i18nConfig.locales.map((loc) => ({\n name: i18nConfig.localeLabels[loc as keyof typeof i18nConfig.localeLabels] || loc,\n locale: loc,\n }));\n\n return {\n isSupportedLocale,\n getValidLocale,\n generatedLocales\n };\n}\n\n// Convenient configuration presets\nexport const LOCALE_PRESETS = {\n // Only support English\n EN_ONLY: { locales: ['en'] as string[], defaultLocale: 'en' as string },\n \n // English and Chinese\n EN_ZH: { locales: ['en', 'zh'] as string[], defaultLocale: 'en' as string },\n \n // Main Asian languages\n ASIA: { locales: ['en', 'zh', 'ja', 'ko'] as string[], defaultLocale: 'en' as string },\n \n // Main European languages\n EUROPE: { locales: ['en', 'fr', 'de', 'es', 'it'] as string[], defaultLocale: 'en' as string },\n \n // Globalization\n GLOBAL: { locales: ['en', 'zh', 'ja', 'ko', 'fr', 'de', 'es', 'it', 'pt', 'ru'] as string[], defaultLocale: 'en' as string },\n \n // No internationalization (only default language)\n NONE: { locales: [] as string[], defaultLocale: 'en' as string }\n}; "],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/common-app-config.ts"],"names":[],"mappings":"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","file":"common-app-config.mjs","sourcesContent":["// Supported languages and their labels\nconst ALL_LOCALE_LABELS = {\n en: \"English\",\n zh: \"简体中文\",\n ja: \"日本語\", \n ko: \"한국어\",\n fr: \"Français\",\n de: \"Deutsch\",\n es: \"Español\",\n it: \"Italiano\",\n pt: \"Português\",\n tr: \"Türkçe\",\n pl: \"Polski\",\n ru: \"Русский\",\n ar: \"العربية\",\n hi: \"हिन्दी\",\n th: \"ไทย\",\n vi: \"Tiếng Việt\",\n} as const;\n\nexport type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;\n\n// Helper function to get language configuration from environment variables\nfunction getLocaleLabels(locales: string[]) {\n return Object.fromEntries(\n locales.map(locale => [\n locale, \n ALL_LOCALE_LABELS[locale as SupportedLocale] || locale\n ])\n );\n}\n\n// Common application configuration creation function\nexport function createCommonAppConfig(options?: {\n // Optional: manually specify supported languages, otherwise read from environment variables\n locales?: string[];\n defaultLocale?: string;\n}) {\n // Priority: manual configuration > environment variables > default values\n const locales = options?.locales ?? \n process.env.NEXT_PUBLIC_I18N_LOCALES?.split(',').map(s => s.trim()) ?? \n ['en', 'zh'];\n \n const defaultLocale = options?.defaultLocale ?? \n process.env.NEXT_PUBLIC_I18N_DEFAULT_LOCALE ?? \n 'en';\n \n const storagePrefix = process.env.NEXT_PUBLIC_I18N_STORAGE_PREFIX || 'WINDRUN-HUAIIN';\n\n const config = {\n // Basic configuration\n baseUrl: process.env.NEXT_PUBLIC_BASE_URL || '',\n githubBaseUrl: process.env.NEXT_PUBLIC_GITHUB_BASE_URL || '',\n github: process.env.NEXT_PUBLIC_GITHUB || '',\n githubInfoToken: process.env.NEXT_PUBLIC_FUMA_GITHUB_TOKEN || '',\n\n // Internationalization configuration\n i18n: {\n locales: locales as readonly string[],\n defaultLocale,\n localeLabels: getLocaleLabels(locales),\n detector: {\n storageKey: process.env.NEXT_PUBLIC_I18N_STORAGE_KEY || 'language-preference-status',\n autoCloseTimeout: parseInt(process.env.NEXT_PUBLIC_I18N_AUTO_CLOSE_TIMEOUT || '10000'),\n expirationDays: parseInt(process.env.NEXT_PUBLIC_I18N_EXPIRATION_DAYS || '30'),\n storagePrefix\n },\n messageRoot: process.env.NEXT_PUBLIC_I18N_MESSAGE_ROOT || 'messages',\n },\n\n // Style configuration\n style: {\n icon: {\n uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || \"text-purple-500\"\n },\n showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === 'true',\n clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === 'true',\n clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === 'true',\n watermark: {\n enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === 'true',\n text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || \"巽川·怀因\"\n },\n cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || \"https://raw.githubusercontent.com/caofanCPU/wind-run-1/main/public\",\n placeHolder: {\n image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || \"/default.webp\"\n }\n },\n\n // Clerk configuration\n clerk: {\n signInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || \"/sign-in\",\n fallbackSignInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL || \"/\",\n signUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || \"/sign-up\", \n fallbackSignUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL || \"/\",\n waitlistUrl: process.env.NEXT_PUBLIC_CLERK_WAITLIST_URL || \"/waitlist\",\n debug: process.env.CLERK_DEBUG === 'true',\n },\n\n // MDX source file directory configuration\n mdxSourceDir: {\n docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || \"src/mdx/docs\",\n blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || \"src/mdx/blog\", \n legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || \"src/mdx/legal\"\n },\n };\n\n // Convenient constants - avoid deep nested access\n const shortcuts = {\n iconColor: config.style.icon.uniformColor,\n watermark: config.style.watermark,\n showBanner: config.style.showBanner,\n clerkPageBanner: config.style.clerkPageBanner,\n clerkAuthInModal: config.style.clerkAuthInModal,\n placeHolderImage: config.style.placeHolder.image,\n clerk: config.clerk,\n };\n\n return {\n ...config,\n shortcuts\n };\n}\n\n// Create internationalization helper functions\nexport function createI18nHelpers(i18nConfig: ReturnType<typeof createCommonAppConfig>['i18n']) {\n function isSupportedLocale(locale: string): locale is typeof i18nConfig.locales[number] {\n return (i18nConfig.locales as readonly string[]).includes(locale);\n }\n\n function getValidLocale(locale: string): typeof i18nConfig.locales[number] {\n return isSupportedLocale(locale) ? locale : i18nConfig.defaultLocale;\n }\n\n const generatedLocales = i18nConfig.locales.map((loc) => ({\n name: i18nConfig.localeLabels[loc as keyof typeof i18nConfig.localeLabels] || loc,\n locale: loc,\n }));\n\n return {\n isSupportedLocale,\n getValidLocale,\n generatedLocales\n };\n}\n\n// Convenient configuration presets\nexport const LOCALE_PRESETS = {\n // Only support English\n EN_ONLY: { locales: ['en'] as string[], defaultLocale: 'en' as string },\n \n // English and Chinese\n EN_ZH: { locales: ['en', 'zh'] as string[], defaultLocale: 'en' as string },\n \n // Main Asian languages\n ASIA: { locales: ['en', 'zh', 'ja', 'ko'] as string[], defaultLocale: 'en' as string },\n \n // Main European languages\n EUROPE: { locales: ['en', 'fr', 'de', 'es', 'it'] as string[], defaultLocale: 'en' as string },\n \n // Globalization\n GLOBAL: { locales: ['en', 'zh', 'ja', 'ko', 'fr', 'de', 'es', 'it', 'pt', 'ru'] as string[], defaultLocale: 'en' as string },\n \n // No internationalization (only default language)\n NONE: { locales: [] as string[], defaultLocale: 'en' as string }\n}; "]}