全局函数
set(nameOrObject, value)
设置数据存储中的值。可以接受一个对象来设置多个键值对,或者接受键和值来设置单个键值对。
参数:
nameOrObject
:string
|Object
— 如果是字符串,表示要设置的键名;如果是对象,则包含要设置的多个键值对。value
:any
(可选) — 如果nameOrObject
是字符串,则此参数表示要设置的值。
返回:
- 无
示例:
set("myKey", "myValue"); set({ key1: "value1", key2: 123 });
get(name, defaultValue)
从数据存储中获取指定键的值。如果键不存在,则返回可选的默认值。
参数:
name
:string
— 要获取的键名。defaultValue
:any
(可选) — 如果键不存在时返回的默认值。
返回:
any
— 键对应的值或默认值。
示例:
const value = get("myKey", "defaultValue");
push(name, value)
将一个值追加到数据存储中指定键的数组中。如果指定键的值不是数组,则会抛出错误。
参数:
name
:string
— 要操作的数组的键名。value
:any
— 要追加到数组中的值。
返回:
Array<any>
— 追加后的数组。
示例:
set("myArray", [1, 2]); push("myArray", 3); // myArray 现在是 [1, 2, 3]
setContext(nameOrObject, value)
设置上下文数据中的值。可以接受一个对象来设置多个键值对,或者接受键和值来设置单个键值对。上下文数据通常用于在不同的脚本执行之间共享数据。
参数:
nameOrObject
:string
|Object
— 如果是字符串,表示要设置的键名;如果是对象,则包含要设置的多个键值对。value
:any
(可选) — 如果nameOrObject
是字符串,则此参数表示要设置的值。
返回:
- 无
示例:
setContext("user", { id: 1, name: "Alice" }); setContext({ theme: "dark", lang: "en" });
getContext(name, defaultValue)
从上下文数据中获取指定键的值。如果键不存在,则返回可选的默认值。
参数:
name
:string
— 要获取的键名。defaultValue
:any
(可选) — 如果键不存在时返回的默认值。
返回:
any
— 键对应的值或默认值。
示例:
const user = getContext("user", null);
getContexts()
返回所有上下文数据。
参数:
- 无
返回:
Object
— 包含所有上下文数据的对象。
示例:
const allContexts = getContexts(); console.log(allContexts.theme);
runActions(actionNames)
运行一个或多个自定义的动作。
参数:
actionNames
:string
|Array<string>
— 要运行的动作的名称或名称数组。
返回:
- 无
示例:
runActions("action1"); runActions(["action2", "action3"]);
String (字符串)
string.trim(s)
移除字符串两端的空白字符 (包括空格、制表符、换行符等)。
参数:
s
:string
— 输入字符串。
返回:
string
— 去除空白字符后的字符串。
示例:
string.trim(" hello world \n"); // 返回: "hello world"
string.trimCustom(s, cutset)
移除字符串两端指定字符集中的字符。
参数:
s
:string
— 输入字符串。cutset
:string
— 包含要移除的字符的字符串。
返回:
string
— 去除指定字符后的字符串。
示例:
string.trimCustom("---hello---", "-"); // 返回: "hello" string.trimCustom("abcxyzcba", "abc"); // 返回: "xyz"
string.trimPrefix(s, prefix)
如果字符串以指定前缀开头,则移除该前缀。
参数:
s
:string
— 输入字符串。prefix
:string
— 要移除的前缀。
返回:
string
— 移除前缀后的字符串。
示例:
string.trimPrefix("hello world", "hello "); // 返回: "world" string.trimPrefix("foo bar", "baz "); // 返回: "foo bar" (前缀不匹配,不移除)
string.trimSuffix(s, suffix)
如果字符串以指定后缀结尾,则移除该后缀。
参数:
s
:string
— 输入字符串。suffix
:string
— 要移除的后缀。
返回:
string
— 移除后缀后的字符串。
示例:
string.trimSuffix("hello world", " world"); // 返回: "hello" string.trimSuffix("foo bar", "baz"); // 返回: "foo bar" (后缀不匹配,不移除)
string.trimLeft(s, cutset)
移除字符串左侧指定字符集中的字符。
参数:
s
:string
— 输入字符串。cutset
:string
— 包含要移除的字符的字符串。
返回:
string
— 移除左侧指定字符后的字符串。
示例:
string.trimLeft("---hello", "-"); // 返回: "hello" string.trimLeft("abchello", "abc"); // 返回: "hello"
string.trimRight(s, cutset)
移除字符串右侧指定字符集中的字符。
参数:
s
:string
— 输入字符串。cutset
:string
— 包含要移除的字符的字符串。
返回:
string
— 移除右侧指定字符后的字符串。
示例:
string.trimRight("hello---", "-"); // 返回: "hello" string.trimRight("helloabc", "abc"); // 返回: "hello"
string.random(length, charset)
生成指定长度的随机字符串。
参数:
length
:number
— 字符串的长度 (整数)。charset
:string
(可选) — 用于生成字符串的字符集。如果为空,则使用默认字符集 (字母和数字)。
返回:
string
— 生成的随机字符串。
示例:
string.random(10); // 返回: "aBcD1eFgH2" (示例) string.random(5, "abc"); // 返回: "bacac" (示例)
string.fields(s)
将字符串按空白字符分割成字段数组。
参数:
s
:string
— 输入字符串。
返回:
Array<string>
— 字段数组。
示例:
string.fields("hello world "); // 返回: ["hello", "world"]
string.builder()
创建并返回一个 strings.Builder
对象的 JavaScript 绑定,用于高效地构建字符串。
参数:
- 无
返回:
Object
—strings.Builder
的 JavaScript 绑定对象,包含以下方法:WriteString(s: string)
: 写入字符串。String()
: 返回当前构建器中的字符串。Len()
: 返回当前构建器中字节的长度。Cap()
: 返回当前构建器中底层字节切片的容量。Reset()
: 重置构建器为空。
示例:
const builder = string.builder(); builder.WriteString("Hello"); builder.WriteString(" World"); console.log(builder.String()); // 输出: "Hello World" builder.Reset(); console.log(builder.Len()); // 输出: 0
Number (数字)
number.rand(min, max)
生成一个指定范围内的随机整数 (包含 min
和 max
)。
参数:
min
:number
— 随机数的最小值 (整数)。max
:number
— 随机数的最大值 (整数)。
返回:
number
— 随机整数。
示例:
number.rand(1, 10); // 返回 1 到 10 之间的一个随机整数
Array (数组)
array.uniq(array)
去重一个数组中的元素。
参数:
array
:Array<any>
— 输入数组
返回:
Array<any>
— 去重后的数组
示例:
array.uniq([1, 2, 2, 3, 1]); // 返回: [1, 2, 3]
array.mergeBy(callback, ...arrays)
合并多个数组,并根据回调函数生成的键进行去重和覆盖。如果多个数组中存在相同键的元素,则后面的数组中的元素会覆盖前面的。
参数:
callback
:Function
— 一个回调函数,接受一个数组项并返回一个用于合并的键。...arrays
:Array<Object>
— 一个或多个要合并的数组,每个数组应包含对象。
返回:
Array<Object>
— 合并后的数组。
示例:
const arr1 = [{ id: 1, name: "A", value: 10 }, { id: 2, name: "B", value: 20 }]; const arr2 = [{ id: 2, name: "C", value: 30 }, { id: 3, name: "D", value: 40 }]; const merged = array.mergeBy(item => item.id, arr1, arr2); console.log(merged); /* **返回**: [ { id: 1, name: "A", value: 10 }, { id: 2, name: "C", value: 30 }, // id=2 的元素被 arr2 覆盖 { id: 3, name: "D", value: 40 } ] */
array.keyBy(array, callback)
将数组转换为一个对象,其中对象的键由回调函数生成。如果多个元素生成相同的键,则最后一个元素将覆盖前面的。
参数:
array
:Array<any>
— 输入数组 (可以是对象数组或原始值数组)。callback
:Function
— 一个回调函数,接受一个数组项并返回一个用于作为对象键的字符串。
返回:
Object
— 键控后的对象。
示例:
const users = [ { id: 1, name: "Alice", age: 30 }, { id: 2, name: "Bob", age: 25 }, { id: 3, name: "Charlie", age: 30 } ]; const usersById = array.keyBy(users, user => user.id); console.log(usersById); /* **返回**: { "1": { id: 1, name: "Alice", age: 30 }, "2": { id: 2, name: "Bob", age: 25 }, "3": { id: 3, name: "Charlie", age: 30 } } */
array.groupBy(array, callback)
根据回调函数生成的键将数组中的元素分组。
参数:
array
:Array<any>
— 输入数组 (可以是对象数组或原始值数组)。callback
:Function
— 一个回调函数,接受一个数组项并返回一个用于分组的键。
返回:
Object
— 分组后的对象,其中键是分组的键,值是包含对应元素的数组。
示例:
const users = [ { name: "Alice", age: 30 }, { name: "Bob", age: 25 }, { name: "Charlie", age: 30 } ]; const groupedByAge = array.groupBy(users, user => user.age); console.log(groupedByAge); /* **返回**: { "30": [ { name: "Alice", age: 30 }, { name: "Charlie", age: 30 } ], "25": [ { name: "Bob", age: 25 } ] } */
array.omit(obj, keys)
从对象中排除指定的键。返回一个新对象,不修改原对象。
参数:
obj
:Object
— 输入对象。keys
:Array<string>
— 要排除的键的字符串数组。
返回:
Object
— 排除键后的新对象。
示例:
const data = { name: "Alice", age: 30, city: "New York" }; array.omit(data, ["age", "city"]); // 返回: { name: "Alice" }
array.omitBy(obj, callback)
根据回调函数的结果从对象中排除键值对。返回一个新对象,不修改原对象。
参数:
obj
:Object
— 输入对象。callback
:Function
— 一个回调函数,接受(key, value)
作为参数并返回一个布尔值。如果回调函数返回true
,则该键值对将被排除。
返回:
Object
— 排除键值对后的新对象。
示例:
const data = { a: 1, b: 2, c: 3, d: 4 }; const filteredData = array.omitBy(data, (key, value) => value % 2 === 0); console.log(filteredData); // 返回: { a: 1, c: 3 }
Object (对象)
obj.get(data, path, defaultValue)
根据点分隔的路径从嵌套对象中获取值。
参数:
data
:Object
— 输入对象。path
:string
— 路径字符串 (例如 "a.b.c" 或 "items[0].name")。defaultValue
:any
(可选) — 如果路径不存在时返回的默认值。
返回:
any
— 路径对应的值或默认值。
示例:
const obj = { user: { profile: { name: "Alice", age: 30 } }, items: [{ id: 1, value: "A" }, { id: 2, value: "B" }] }; obj.get(obj, "user.profile.name"); // 返回: "Alice" obj.get(obj, "user.profile.gender", "未知"); // 返回: "未知" obj.get(obj, "items[0].value"); // 返回: "A"
Time (时间)
time.sleep(seconds)
暂停当前脚本的执行指定秒数。
参数:
seconds
:number
— 暂停的秒数 (整数)。
返回:
- 无
示例:
console.log("开始睡眠..."); time.sleep(2); // 暂停 2 秒 console.log("睡眠结束。");
time.unix()
返回当前时间的 Unix 时间戳 (自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数)。
参数:
- 无
返回:
number
— Unix 时间戳 (秒)。
示例:
time.unix(); // 返回: 1678886400 (示例)
time.nanosecond
表示一个纳秒的时间单位常量。
类型:
number
示例:
const oneNanosecond = time.nanosecond; // 值为 1
time.microsecond
表示一个微秒的时间单位常量。
类型:
number
示例:
const oneMicrosecond = time.microsecond; // 值为 1000 (纳秒)
time.millisecond
表示一个毫秒的时间单位常量。
类型:
number
示例:
const oneMillisecond = time.millisecond; // 值为 1000000 (纳秒)
time.second
表示一个秒的时间单位常量。
类型:
number
示例:
const oneSecond = time.second; // 值为 1000000000 (纳秒)
time.minute
表示一个分钟的时间单位常量。
类型:
number
示例:
const oneMinute = time.minute; // 值为 60000000000 (纳秒)
time.hour
表示一个小时的时间单位常量。
类型:
number
示例:
const oneHour = time.hour; // 值为 3600000000000 (纳秒)
time.now()
返回当前的本地时间对象。
参数:
- 无
返回:
Date
— JavaScriptDate
对象。
示例:
const now = time.now(); console.log(now.getFullYear());
Date (日期)
date.parse(dateString)
解析日期时间字符串并返回 JavaScript Date
对象。
参数:
dateString
:string
— 要解析的日期时间字符串 (例如 "2023-01-01 10:30:00", "yesterday", "next monday")。
返回:
Date
— 解析后的 JavaScriptDate
对象。
示例:
date.parse("2023-01-01 10:30:00"); date.parse("now"); date.parse("tomorrow");
Hash (哈希)
hash.password(password, cost)
使用 bcrypt 算法对密码进行哈希。
参数:
password
:string
— 要哈希的密码。cost
:number
(可选) — bcrypt 的成本参数,影响哈希计算的强度和时间。默认值为bcrypt.DefaultCost
(通常为 10)。
返回:
string
— 哈希后的密码字符串。
示例:
hash.password("mysecretpassword"); // 返回: "$2a$10$..." (bcrypt 哈希字符串) hash.password("anotherpassword", 12); // 使用更高的成本
hash.md5(value)
计算字符串的 MD5 哈希值。
参数:
value
:string
— 输入字符串。
返回:
string
— MD5 哈希值的十六进制字符串表示。
示例:
hash.md5("hello world"); // 返回: "5d41402abc4b2a76b9719d911017c592"
hash.sha1(value)
计算字符串的 SHA-1 哈希值。
参数:
value
:string
— 输入字符串。
返回:
string
— SHA-1 哈希值的十六进制字符串表示。
示例:
hash.sha1("hello world"); // 返回: "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
hash.sha256(value)
计算字符串的 SHA-256 哈希值。
参数:
value
:string
— 输入字符串。
返回:
string
— SHA-256 哈希值的十六进制字符串表示。
示例:
hash.sha256("hello world"); // 返回: "b94d27b9934d03342ad57fe74e89f50dce26bc8e630800b65320f2f50aeed351"
hash.sha512(value)
计算字符串的 SHA-512 哈希值。
参数:
value
:string
— 输入字符串。
返回:
string
— SHA-512 哈希值的十六进制字符串表示。
示例:
hash.sha512("hello world"); // 返回: "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605bc69e4f01ad28c7f103b3"
Network (网络)
tld.parse(url)
解析 URL 并返回其顶级域名 (TLD) 信息。
参数:
url
:string
— 要解析的 URL 字符串。
返回:
Object
— 包含 TLD 信息的对象,例如:Host
:string
— 完整的主机名。Subdomain
:string
— 子域名部分。Domain
:string
— 域名部分。TLD
:string
— 顶级域名部分。
示例:
const parsed = tld.parse("https://www.example.com/path"); console.log(parsed.Host); // "www.example.com" console.log(parsed.Domain); // "example" console.log(parsed.TLD); // "com"
Utility (实用工具)
util.validate(field, tag)
使用验证库验证字段。
参数:
field
:any
— 要验证的字段值。tag
:string
— 验证标签字符串 (例如 "required,email", "min=10,max=100")。
返回:
Error
|null
— 如果验证失败返回一个错误对象,否则返回null
。
示例:
util.validate("test@example.com", "email"); // 返回: null (如果有效) util.validate("", "required"); // 返回: Error (如果无效)
JSON (JSON 处理)
json.encode(value)
将 JavaScript 值编码为 JSON 字符串。
参数:
value
:any
— 要编码的 JavaScript 值 (对象、数组、字符串、数字、布尔值等)。
返回:
string
— JSON 字符串。
示例:
json.encode({ name: "Alice", age: 30, isActive: true }); // 返回: '{"name":"Alice","age":30,"isActive":true}'
json.decode(jsonString)
将 JSON 字符串解码为 JavaScript 对象。
参数:
jsonString
:string
— 要解码的 JSON 字符串。
返回:
Object
— 解码后的 JavaScript 对象。
示例:
json.decode('{"name": "Bob", "age": 25}'); // 返回: { name: "Bob", age: 25 }
Base64 (Base64 编码/解码)
base64.encode(value)
对字符串进行 Base64 编码。
参数:
value
:string
— 输入字符串。
返回:
string
— Base64 编码后的字符串。
示例:
base64.encode("hello world"); // 返回: "aGVsbG8gd29ybGQ="
base64.decode(value)
对 Base64 编码的字符串进行解码。
参数:
value
:string
— Base64 编码的字符串。
返回:
string
— 解码后的字符串。
示例:
base64.decode("aGVsbG8gd29ybGQ="); // 返回: "hello world"
UUID (通用唯一标识符)
uuid.new()
生成一个新的 UUID。
参数:
- 无
返回:
string
— 新生成的 UUID 字符串
示例:
uuid.new(); // 返回: "a1b2c3d4-e5f6-7890-1234-567890abcdef" (示例 UUID)
uuid.validate(value)
检查给定的字符串是否是有效的 UUID。
参数:
value
:string
— 要验证的字符串
返回:
boolean
— 如果是有效的 UUID 则返回true
,否则返回false
示例:
uuid.validate("a1b2c3d4-e5f6-7890-1234-567890abcdef"); // 返回: true uuid.validate("invalid-uuid"); // 返回: false
Core (核心)
core.getPlugins()
获取所有注册的插件信息。
参数:
- 无
返回:
Object
— 包含插件列表和逻辑属性的对象。items
:Array<Object>
— 插件列表,每个对象包含:id
:string
title
:string
description
:string
withChildren
:boolean
childrenTags
:Array<string>
controls
:Array<Object>
— 插件的控制选项
logicProperties
:Object
— 逻辑属性。
示例:
const plugins = core.getPlugins(); console.log(plugins.items[0].title);
Crypto (加密)
crypto.executeX25519()
执行 X25519 密钥交换算法,生成一对新的私钥和公钥。
参数:
- 无
返回:
Object
— 包含生成的密钥对的对象:privateKey
:string
— 私钥的 Base64 编码字符串。publicKey
:string
— 公钥的 Base64 编码字符串。
示例:
const keys = crypto.executeX25519(); console.log("私钥:", keys.privateKey); console.log("公钥:", keys.publicKey);
crypto.obscure(value)
使用 obscureutil
库对字符串进行混淆。这通常用于简单的数据保护,而不是强加密。
参数:
value
:string
— 要混淆的字符串。
返回:
string
— 混淆后的字符串。
示例:
crypto.obscure("my_secret_data"); // 返回: "some_obscured_string_representation" (示例)
crypto.reveal(value)
使用 obscureutil
库对混淆后的字符串进行解密。
参数:
value
:string
— 要解密的混淆字符串。
返回:
string
— 解密后的原始字符串。
示例:
const obscured = crypto.obscure("my_secret_data"); crypto.reveal(obscured); // 返回: "my_secret_data"
OS (操作系统)
os.name()
返回当前操作系统的名称。
参数:
- 无
返回:
string
— 操作系统的名称 (例如 "linux", "darwin", "windows")。
示例:
os.name(); // 返回: "darwin" (macOS 示例)
os.arch()
返回当前操作系统的架构。
参数:
- 无
返回:
string
— 操作系统架构 (例如 "amd64", "arm64")。
示例:
os.arch(); // 返回: "arm64" (示例)
os.version()
返回编译器运行时版本。
参数:
- 无
返回:
string
— 编译器运行时版本 (例如 "go1.21.0")。
示例:
os.version(); // 返回: "go1.21.0" (示例)
os.hostname()
返回当前主机的标准主机名。
参数:
- 无
返回:
string
— 主机名。
示例:
os.hostname(); // 返回: "My-MacBook-Pro.local" (示例)
os.getUid()
返回调用者的用户 ID。
参数:
- 无
返回:
number
— 用户 ID。
示例:
os.getUid(); // 返回: 501 (示例)
os.getPid()
返回调用者的进程 ID。
参数:
- 无
返回:
number
— 进程 ID。
示例:
os.getPid(); // 返回: 12345 (示例)
os.tempDir()
返回系统临时目录的路径。
参数:
- 无
返回:
string
— 临时目录路径
示例:
os.tempDir(); // 返回: "/var/folders/..." (macOS 示例)
os.numCPU()
返回当前系统可用的 CPU 核心数。
参数:
- 无
返回:
number
— CPU 核心数。
示例:
os.numCPU(); // 返回: 8 (示例)
os.executablePath()
返回当前可执行文件的完整路径。
参数:
- 无
返回:
string
— 可执行文件的完整路径。
示例:
os.executablePath(); // 返回: "/usr/local/bin/my_app" (示例)
os.executableDir()
返回当前可执行文件所在的目录路径。
参数:
- 无
返回:
string
— 可执行文件所在的目录路径。
示例:
os.executableDir(); // 返回: "/usr/local/bin" (示例)
目录