@windrun-huaiin/lib 3.1.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/LICENSE +21 -0
- package/README.md +80 -0
- package/dist/common-app-config.d.mts +126 -0
- package/dist/common-app-config.d.ts +126 -0
- package/dist/common-app-config.js +178 -0
- package/dist/common-app-config.js.map +1 -0
- package/dist/common-app-config.mjs +154 -0
- package/dist/common-app-config.mjs.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +445 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +407 -0
- package/dist/index.mjs.map +1 -0
- package/dist/limited-lucide-icons.d.mts +1 -0
- package/dist/limited-lucide-icons.d.ts +1 -0
- package/dist/limited-lucide-icons.js +185 -0
- package/dist/limited-lucide-icons.js.map +1 -0
- package/dist/limited-lucide-icons.mjs +162 -0
- package/dist/limited-lucide-icons.mjs.map +1 -0
- package/dist/llm-utils.d.mts +3 -0
- package/dist/llm-utils.d.ts +3 -0
- package/dist/llm-utils.js +100 -0
- package/dist/llm-utils.js.map +1 -0
- package/dist/llm-utils.mjs +66 -0
- package/dist/llm-utils.mjs.map +1 -0
- package/dist/utils.d.mts +6 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +58 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +32 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +85 -0
- package/src/common-app-config.ts +165 -0
- package/src/index.ts +11 -0
- package/src/limited-lucide-icons.ts +86 -0
- package/src/llm-utils.ts +50 -0
- package/src/utils.ts +37 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 D8ger
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# @windrun-huaiin/lib
|
|
2
|
+
|
|
3
|
+
通用工具库,包含配置、工具函数、图标和 LLM 相关功能。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @windrun-huaiin/lib
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 使用
|
|
12
|
+
|
|
13
|
+
### 配置
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { appConfig, iconColor, getValidLocale } from '@windrun-huaiin/lib/config';
|
|
17
|
+
|
|
18
|
+
// 使用应用配置
|
|
19
|
+
console.log(appConfig.baseUrl);
|
|
20
|
+
|
|
21
|
+
// 获取有效的语言设置
|
|
22
|
+
const locale = getValidLocale('zh');
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 工具函数
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { cn, formatTimestamp } from '@windrun-huaiin/lib/utils';
|
|
29
|
+
|
|
30
|
+
// 合并 CSS 类名
|
|
31
|
+
const className = cn('text-red-500', 'font-bold');
|
|
32
|
+
|
|
33
|
+
// 格式化时间戳
|
|
34
|
+
const formatted = formatTimestamp('1640995200000', 'yyyy-MM-dd HH:mm:ss');
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 图标
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { Search, Check, X } from '@windrun-huaiin/lib/icons';
|
|
41
|
+
|
|
42
|
+
// 在 React 组件中使用
|
|
43
|
+
function MyComponent() {
|
|
44
|
+
return (
|
|
45
|
+
<div>
|
|
46
|
+
<Search className="w-4 h-4" />
|
|
47
|
+
<Check className="w-4 h-4 text-green-500" />
|
|
48
|
+
<X className="w-4 h-4 text-red-500" />
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### LLM 功能
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { getLLMText } from '@windrun-huaiin/lib/llm';
|
|
58
|
+
|
|
59
|
+
// 处理 MDX 内容
|
|
60
|
+
const result = await getLLMText(mdxContent, 'Title', 'Description');
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 构建
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# 开发模式
|
|
67
|
+
pnpm dev
|
|
68
|
+
|
|
69
|
+
# 构建
|
|
70
|
+
pnpm build
|
|
71
|
+
|
|
72
|
+
# 类型检查
|
|
73
|
+
pnpm typecheck
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 发布
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pnpm publish
|
|
80
|
+
```
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
declare const ALL_LOCALE_LABELS: {
|
|
2
|
+
readonly en: "English";
|
|
3
|
+
readonly zh: "简体中文";
|
|
4
|
+
readonly ja: "日本語";
|
|
5
|
+
readonly ko: "한국어";
|
|
6
|
+
readonly fr: "Français";
|
|
7
|
+
readonly de: "Deutsch";
|
|
8
|
+
readonly es: "Español";
|
|
9
|
+
readonly it: "Italiano";
|
|
10
|
+
readonly pt: "Português";
|
|
11
|
+
readonly tr: "Türkçe";
|
|
12
|
+
readonly pl: "Polski";
|
|
13
|
+
readonly ru: "Русский";
|
|
14
|
+
readonly ar: "العربية";
|
|
15
|
+
readonly hi: "हिन्दी";
|
|
16
|
+
readonly th: "ไทย";
|
|
17
|
+
readonly vi: "Tiếng Việt";
|
|
18
|
+
};
|
|
19
|
+
type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;
|
|
20
|
+
declare function createCommonAppConfig(options?: {
|
|
21
|
+
locales?: string[];
|
|
22
|
+
defaultLocale?: string;
|
|
23
|
+
}): {
|
|
24
|
+
shortcuts: {
|
|
25
|
+
iconColor: string;
|
|
26
|
+
watermark: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
text: string;
|
|
29
|
+
};
|
|
30
|
+
showBanner: boolean;
|
|
31
|
+
clerkPageBanner: boolean;
|
|
32
|
+
clerkAuthInModal: boolean;
|
|
33
|
+
placeHolderImage: string;
|
|
34
|
+
clerk: {
|
|
35
|
+
signInUrl: string;
|
|
36
|
+
fallbackSignInUrl: string;
|
|
37
|
+
signUpUrl: string;
|
|
38
|
+
fallbackSignUpUrl: string;
|
|
39
|
+
waitlistUrl: string;
|
|
40
|
+
debug: boolean;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
baseUrl: string;
|
|
44
|
+
githubBaseUrl: string;
|
|
45
|
+
github: string;
|
|
46
|
+
githubInfoToken: string;
|
|
47
|
+
i18n: {
|
|
48
|
+
locales: readonly string[];
|
|
49
|
+
defaultLocale: string;
|
|
50
|
+
localeLabels: {
|
|
51
|
+
[k: string]: "English" | "简体中文" | "日本語" | "한국어" | "Français" | "Deutsch" | "Español" | "Italiano" | "Português" | "Türkçe" | "Polski" | "Русский" | "العربية" | "हिन्दी" | "ไทย" | "Tiếng Việt";
|
|
52
|
+
};
|
|
53
|
+
detector: {
|
|
54
|
+
storageKey: string;
|
|
55
|
+
autoCloseTimeout: number;
|
|
56
|
+
expirationDays: number;
|
|
57
|
+
storagePrefix: string;
|
|
58
|
+
};
|
|
59
|
+
messageRoot: string;
|
|
60
|
+
};
|
|
61
|
+
style: {
|
|
62
|
+
icon: {
|
|
63
|
+
uniformColor: string;
|
|
64
|
+
};
|
|
65
|
+
showBanner: boolean;
|
|
66
|
+
clerkAuthInModal: boolean;
|
|
67
|
+
clerkPageBanner: boolean;
|
|
68
|
+
watermark: {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
text: string;
|
|
71
|
+
};
|
|
72
|
+
cdnBaseUrl: string;
|
|
73
|
+
placeHolder: {
|
|
74
|
+
image: string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
clerk: {
|
|
78
|
+
signInUrl: string;
|
|
79
|
+
fallbackSignInUrl: string;
|
|
80
|
+
signUpUrl: string;
|
|
81
|
+
fallbackSignUpUrl: string;
|
|
82
|
+
waitlistUrl: string;
|
|
83
|
+
debug: boolean;
|
|
84
|
+
};
|
|
85
|
+
mdxSourceDir: {
|
|
86
|
+
docs: string;
|
|
87
|
+
blog: string;
|
|
88
|
+
legal: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
declare function createI18nHelpers(i18nConfig: ReturnType<typeof createCommonAppConfig>['i18n']): {
|
|
92
|
+
isSupportedLocale: (locale: string) => locale is (typeof i18nConfig.locales)[number];
|
|
93
|
+
getValidLocale: (locale: string) => (typeof i18nConfig.locales)[number];
|
|
94
|
+
generatedLocales: {
|
|
95
|
+
name: "English" | "简体中文" | "日本語" | "한국어" | "Français" | "Deutsch" | "Español" | "Italiano" | "Português" | "Türkçe" | "Polski" | "Русский" | "العربية" | "हिन्दी" | "ไทย" | "Tiếng Việt";
|
|
96
|
+
locale: string;
|
|
97
|
+
}[];
|
|
98
|
+
};
|
|
99
|
+
declare const LOCALE_PRESETS: {
|
|
100
|
+
EN_ONLY: {
|
|
101
|
+
locales: string[];
|
|
102
|
+
defaultLocale: string;
|
|
103
|
+
};
|
|
104
|
+
EN_ZH: {
|
|
105
|
+
locales: string[];
|
|
106
|
+
defaultLocale: string;
|
|
107
|
+
};
|
|
108
|
+
ASIA: {
|
|
109
|
+
locales: string[];
|
|
110
|
+
defaultLocale: string;
|
|
111
|
+
};
|
|
112
|
+
EUROPE: {
|
|
113
|
+
locales: string[];
|
|
114
|
+
defaultLocale: string;
|
|
115
|
+
};
|
|
116
|
+
GLOBAL: {
|
|
117
|
+
locales: string[];
|
|
118
|
+
defaultLocale: string;
|
|
119
|
+
};
|
|
120
|
+
NONE: {
|
|
121
|
+
locales: string[];
|
|
122
|
+
defaultLocale: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export { LOCALE_PRESETS, type SupportedLocale, createCommonAppConfig, createI18nHelpers };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
declare const ALL_LOCALE_LABELS: {
|
|
2
|
+
readonly en: "English";
|
|
3
|
+
readonly zh: "简体中文";
|
|
4
|
+
readonly ja: "日本語";
|
|
5
|
+
readonly ko: "한국어";
|
|
6
|
+
readonly fr: "Français";
|
|
7
|
+
readonly de: "Deutsch";
|
|
8
|
+
readonly es: "Español";
|
|
9
|
+
readonly it: "Italiano";
|
|
10
|
+
readonly pt: "Português";
|
|
11
|
+
readonly tr: "Türkçe";
|
|
12
|
+
readonly pl: "Polski";
|
|
13
|
+
readonly ru: "Русский";
|
|
14
|
+
readonly ar: "العربية";
|
|
15
|
+
readonly hi: "हिन्दी";
|
|
16
|
+
readonly th: "ไทย";
|
|
17
|
+
readonly vi: "Tiếng Việt";
|
|
18
|
+
};
|
|
19
|
+
type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;
|
|
20
|
+
declare function createCommonAppConfig(options?: {
|
|
21
|
+
locales?: string[];
|
|
22
|
+
defaultLocale?: string;
|
|
23
|
+
}): {
|
|
24
|
+
shortcuts: {
|
|
25
|
+
iconColor: string;
|
|
26
|
+
watermark: {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
text: string;
|
|
29
|
+
};
|
|
30
|
+
showBanner: boolean;
|
|
31
|
+
clerkPageBanner: boolean;
|
|
32
|
+
clerkAuthInModal: boolean;
|
|
33
|
+
placeHolderImage: string;
|
|
34
|
+
clerk: {
|
|
35
|
+
signInUrl: string;
|
|
36
|
+
fallbackSignInUrl: string;
|
|
37
|
+
signUpUrl: string;
|
|
38
|
+
fallbackSignUpUrl: string;
|
|
39
|
+
waitlistUrl: string;
|
|
40
|
+
debug: boolean;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
baseUrl: string;
|
|
44
|
+
githubBaseUrl: string;
|
|
45
|
+
github: string;
|
|
46
|
+
githubInfoToken: string;
|
|
47
|
+
i18n: {
|
|
48
|
+
locales: readonly string[];
|
|
49
|
+
defaultLocale: string;
|
|
50
|
+
localeLabels: {
|
|
51
|
+
[k: string]: "English" | "简体中文" | "日本語" | "한국어" | "Français" | "Deutsch" | "Español" | "Italiano" | "Português" | "Türkçe" | "Polski" | "Русский" | "العربية" | "हिन्दी" | "ไทย" | "Tiếng Việt";
|
|
52
|
+
};
|
|
53
|
+
detector: {
|
|
54
|
+
storageKey: string;
|
|
55
|
+
autoCloseTimeout: number;
|
|
56
|
+
expirationDays: number;
|
|
57
|
+
storagePrefix: string;
|
|
58
|
+
};
|
|
59
|
+
messageRoot: string;
|
|
60
|
+
};
|
|
61
|
+
style: {
|
|
62
|
+
icon: {
|
|
63
|
+
uniformColor: string;
|
|
64
|
+
};
|
|
65
|
+
showBanner: boolean;
|
|
66
|
+
clerkAuthInModal: boolean;
|
|
67
|
+
clerkPageBanner: boolean;
|
|
68
|
+
watermark: {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
text: string;
|
|
71
|
+
};
|
|
72
|
+
cdnBaseUrl: string;
|
|
73
|
+
placeHolder: {
|
|
74
|
+
image: string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
clerk: {
|
|
78
|
+
signInUrl: string;
|
|
79
|
+
fallbackSignInUrl: string;
|
|
80
|
+
signUpUrl: string;
|
|
81
|
+
fallbackSignUpUrl: string;
|
|
82
|
+
waitlistUrl: string;
|
|
83
|
+
debug: boolean;
|
|
84
|
+
};
|
|
85
|
+
mdxSourceDir: {
|
|
86
|
+
docs: string;
|
|
87
|
+
blog: string;
|
|
88
|
+
legal: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
declare function createI18nHelpers(i18nConfig: ReturnType<typeof createCommonAppConfig>['i18n']): {
|
|
92
|
+
isSupportedLocale: (locale: string) => locale is (typeof i18nConfig.locales)[number];
|
|
93
|
+
getValidLocale: (locale: string) => (typeof i18nConfig.locales)[number];
|
|
94
|
+
generatedLocales: {
|
|
95
|
+
name: "English" | "简体中文" | "日本語" | "한국어" | "Français" | "Deutsch" | "Español" | "Italiano" | "Português" | "Türkçe" | "Polski" | "Русский" | "العربية" | "हिन्दी" | "ไทย" | "Tiếng Việt";
|
|
96
|
+
locale: string;
|
|
97
|
+
}[];
|
|
98
|
+
};
|
|
99
|
+
declare const LOCALE_PRESETS: {
|
|
100
|
+
EN_ONLY: {
|
|
101
|
+
locales: string[];
|
|
102
|
+
defaultLocale: string;
|
|
103
|
+
};
|
|
104
|
+
EN_ZH: {
|
|
105
|
+
locales: string[];
|
|
106
|
+
defaultLocale: string;
|
|
107
|
+
};
|
|
108
|
+
ASIA: {
|
|
109
|
+
locales: string[];
|
|
110
|
+
defaultLocale: string;
|
|
111
|
+
};
|
|
112
|
+
EUROPE: {
|
|
113
|
+
locales: string[];
|
|
114
|
+
defaultLocale: string;
|
|
115
|
+
};
|
|
116
|
+
GLOBAL: {
|
|
117
|
+
locales: string[];
|
|
118
|
+
defaultLocale: string;
|
|
119
|
+
};
|
|
120
|
+
NONE: {
|
|
121
|
+
locales: string[];
|
|
122
|
+
defaultLocale: string;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export { LOCALE_PRESETS, type SupportedLocale, createCommonAppConfig, createI18nHelpers };
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
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
|
+
|
|
37
|
+
// 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
|
+
var ALL_LOCALE_LABELS = {
|
|
46
|
+
en: "English",
|
|
47
|
+
zh: "\u7B80\u4F53\u4E2D\u6587",
|
|
48
|
+
ja: "\u65E5\u672C\u8A9E",
|
|
49
|
+
ko: "\uD55C\uAD6D\uC5B4",
|
|
50
|
+
fr: "Fran\xE7ais",
|
|
51
|
+
de: "Deutsch",
|
|
52
|
+
es: "Espa\xF1ol",
|
|
53
|
+
it: "Italiano",
|
|
54
|
+
pt: "Portugu\xEAs",
|
|
55
|
+
tr: "T\xFCrk\xE7e",
|
|
56
|
+
pl: "Polski",
|
|
57
|
+
ru: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439",
|
|
58
|
+
ar: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629",
|
|
59
|
+
hi: "\u0939\u093F\u0928\u094D\u0926\u0940",
|
|
60
|
+
th: "\u0E44\u0E17\u0E22",
|
|
61
|
+
vi: "Ti\u1EBFng Vi\u1EC7t"
|
|
62
|
+
};
|
|
63
|
+
function getLocaleLabels(locales) {
|
|
64
|
+
return Object.fromEntries(
|
|
65
|
+
locales.map((locale) => [
|
|
66
|
+
locale,
|
|
67
|
+
ALL_LOCALE_LABELS[locale] || locale
|
|
68
|
+
])
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
function createCommonAppConfig(options) {
|
|
72
|
+
var _a, _b, _c, _d, _e;
|
|
73
|
+
const locales = (_c = (_b = options == null ? void 0 : options.locales) != null ? _b : (_a = process.env.NEXT_PUBLIC_I18N_LOCALES) == null ? void 0 : _a.split(",").map((s) => s.trim())) != null ? _c : ["en", "zh"];
|
|
74
|
+
const defaultLocale = (_e = (_d = options == null ? void 0 : options.defaultLocale) != null ? _d : process.env.NEXT_PUBLIC_I18N_DEFAULT_LOCALE) != null ? _e : "en";
|
|
75
|
+
const storagePrefix = process.env.NEXT_PUBLIC_I18N_STORAGE_PREFIX || "WINDRUN-HUAIIN";
|
|
76
|
+
const config = {
|
|
77
|
+
// Basic configuration
|
|
78
|
+
baseUrl: process.env.NEXT_PUBLIC_BASE_URL || "",
|
|
79
|
+
githubBaseUrl: process.env.NEXT_PUBLIC_GITHUB_BASE_URL || "",
|
|
80
|
+
github: process.env.NEXT_PUBLIC_GITHUB || "",
|
|
81
|
+
githubInfoToken: process.env.NEXT_PUBLIC_FUMA_GITHUB_TOKEN || "",
|
|
82
|
+
// Internationalization configuration
|
|
83
|
+
i18n: {
|
|
84
|
+
locales,
|
|
85
|
+
defaultLocale,
|
|
86
|
+
localeLabels: getLocaleLabels(locales),
|
|
87
|
+
detector: {
|
|
88
|
+
storageKey: process.env.NEXT_PUBLIC_I18N_STORAGE_KEY || "language-preference-status",
|
|
89
|
+
autoCloseTimeout: parseInt(process.env.NEXT_PUBLIC_I18N_AUTO_CLOSE_TIMEOUT || "10000"),
|
|
90
|
+
expirationDays: parseInt(process.env.NEXT_PUBLIC_I18N_EXPIRATION_DAYS || "30"),
|
|
91
|
+
storagePrefix
|
|
92
|
+
},
|
|
93
|
+
messageRoot: process.env.NEXT_PUBLIC_I18N_MESSAGE_ROOT || "messages"
|
|
94
|
+
},
|
|
95
|
+
// Style configuration
|
|
96
|
+
style: {
|
|
97
|
+
icon: {
|
|
98
|
+
uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "text-purple-500"
|
|
99
|
+
},
|
|
100
|
+
showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === "true",
|
|
101
|
+
clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === "true",
|
|
102
|
+
clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === "true",
|
|
103
|
+
watermark: {
|
|
104
|
+
enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === "true",
|
|
105
|
+
text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || "\u5DFD\u5DDD\xB7\u6000\u56E0"
|
|
106
|
+
},
|
|
107
|
+
cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || "https://raw.githubusercontent.com/caofanCPU/wind-run-1/main/public",
|
|
108
|
+
placeHolder: {
|
|
109
|
+
image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || "/default.webp"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
// Clerk configuration
|
|
113
|
+
clerk: {
|
|
114
|
+
signInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL || "/sign-in",
|
|
115
|
+
fallbackSignInUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL || "/",
|
|
116
|
+
signUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL || "/sign-up",
|
|
117
|
+
fallbackSignUpUrl: process.env.NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL || "/",
|
|
118
|
+
waitlistUrl: process.env.NEXT_PUBLIC_CLERK_WAITLIST_URL || "/waitlist",
|
|
119
|
+
debug: process.env.CLERK_DEBUG === "true"
|
|
120
|
+
},
|
|
121
|
+
// MDX source file directory configuration
|
|
122
|
+
mdxSourceDir: {
|
|
123
|
+
docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || "src/mdx/docs",
|
|
124
|
+
blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || "src/mdx/blog",
|
|
125
|
+
legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || "src/mdx/legal"
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const shortcuts = {
|
|
129
|
+
iconColor: config.style.icon.uniformColor,
|
|
130
|
+
watermark: config.style.watermark,
|
|
131
|
+
showBanner: config.style.showBanner,
|
|
132
|
+
clerkPageBanner: config.style.clerkPageBanner,
|
|
133
|
+
clerkAuthInModal: config.style.clerkAuthInModal,
|
|
134
|
+
placeHolderImage: config.style.placeHolder.image,
|
|
135
|
+
clerk: config.clerk
|
|
136
|
+
};
|
|
137
|
+
return __spreadProps(__spreadValues({}, config), {
|
|
138
|
+
shortcuts
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function createI18nHelpers(i18nConfig) {
|
|
142
|
+
function isSupportedLocale(locale) {
|
|
143
|
+
return i18nConfig.locales.includes(locale);
|
|
144
|
+
}
|
|
145
|
+
function getValidLocale(locale) {
|
|
146
|
+
return isSupportedLocale(locale) ? locale : i18nConfig.defaultLocale;
|
|
147
|
+
}
|
|
148
|
+
const generatedLocales = i18nConfig.locales.map((loc) => ({
|
|
149
|
+
name: i18nConfig.localeLabels[loc] || loc,
|
|
150
|
+
locale: loc
|
|
151
|
+
}));
|
|
152
|
+
return {
|
|
153
|
+
isSupportedLocale,
|
|
154
|
+
getValidLocale,
|
|
155
|
+
generatedLocales
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
var LOCALE_PRESETS = {
|
|
159
|
+
// Only support English
|
|
160
|
+
EN_ONLY: { locales: ["en"], defaultLocale: "en" },
|
|
161
|
+
// English and Chinese
|
|
162
|
+
EN_ZH: { locales: ["en", "zh"], defaultLocale: "en" },
|
|
163
|
+
// Main Asian languages
|
|
164
|
+
ASIA: { locales: ["en", "zh", "ja", "ko"], defaultLocale: "en" },
|
|
165
|
+
// Main European languages
|
|
166
|
+
EUROPE: { locales: ["en", "fr", "de", "es", "it"], defaultLocale: "en" },
|
|
167
|
+
// Globalization
|
|
168
|
+
GLOBAL: { locales: ["en", "zh", "ja", "ko", "fr", "de", "es", "it", "pt", "ru"], defaultLocale: "en" },
|
|
169
|
+
// No internationalization (only default language)
|
|
170
|
+
NONE: { locales: [], defaultLocale: "en" }
|
|
171
|
+
};
|
|
172
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
173
|
+
0 && (module.exports = {
|
|
174
|
+
LOCALE_PRESETS,
|
|
175
|
+
createCommonAppConfig,
|
|
176
|
+
createI18nHelpers
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=common-app-config.js.map
|
|
@@ -0,0 +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":[]}
|