{
    "$string": {
        "args": "arg",
        "desc": "通过以下的类型转换规则将参数 *arg* 转换成字符串:\n\n - 字符串不转换。\n -函数转换成空的字符串。\n - JSON的值无法用数字表示所以用无限大或者NaN（非数）表示。\n - 用 `JSON.stringify` 函数将其他值转换成JSON字符串。"
    },
    "$length": {
        "args": "str",
        "desc": "输出字符串 `str` 的字数。如果 `str` 不是字符串，抛出错误。"
    },
    "$substring": {
        "args": "str, start[, length]",
        "desc": "输出 `start` 位置后的的首次出现的包括 `str` 的子字符串。 如果 `length` 被指定，那么的字符串中将只包括前 `length` 个文字。如果 `start` 是负数则输出从 `str` 末尾开始的 `length` 个文字"
    },
    "$substringBefore": {
        "args": "str, chars",
        "desc": "输出’str’中首次出现的’chars’之前的子字符串，如果’str’中不包括’chars’则输出’str’。"
    },
    "$substringAfter": {
        "args": "str, chars",
        "desc": "输出 `str` 中首次出现的 `chars` 之后的子字符串，如果 `str` 中不包括 `chars` 则输出 `str` 。"
    },
    "$uppercase": {
        "args": "str",
        "desc": "将 `str` 中的所有字母变为大写后输出。"
    },
    "$lowercase": {
        "args": "str",
        "desc": "将’str’中的所有字母变为小写后输出。"
    },
    "$trim": {
        "args": "str",
        "desc": "将以下步骤应用于 `str` 来去除所有空白文字并实现标准化。\n\n – 将全部tab制表符、回车键、换行字符用空白代替。\n- 将连续的空白文字变成一个空白文字。\n- 消除开头和末尾的空白文字。\n\n如果 `str` 没有被指定(即在无输入参数的情况下调用本函数)，将上下文的值作为 `str` 来使用。 如果 `str` 不是字符串则抛出错误。"
    },
    "$contains": {
        "args": "str, pattern",
        "desc": "字符串 `str` 和 `pattern` 匹配的话输出 `true` ，不匹配的情况下输出 `false` 。 不指定 `str` 的情况下(比如用一个参数调用本函数时)、将上下文的值作为 `str` 来使用。参数 `pattern` 可以为字符串或正则表达。"
    },
    "$split": {
        "args": "str[, separator][, limit]",
        "desc": "将参数 `str` 分解成由子字符串组成的数组。 如果 `str` 不是字符串抛出错误。可以省略的参数 `separator` 中指定字符串 `str` 的分隔符。分隔符可以是文字或正则表达式。在不指定 `separator` 的情况下、将分隔符看作空的字符串并把 `str` 拆分成由单个字母组成的数组。如果 `separator` 不是字符串则抛出错误。在可省略的参数 `limit` 中指定分割后的子字符串的最大个数。超出个数的子字符串将被舍弃。如果 `limit` 没有被指定，`str` 将不考虑子字符串的个数而将字符串完全分隔。如果 `limit` 是负数则抛出错误。"
    },
    "$join": {
        "args": "array[, separator]",
        "desc": "用可以省略的参数 `separator` 来把多个字符串连接。如果 `array` 不是字符串则抛出错误。 如果没有指定 `separator` ，则用空字符串来连接字符(即字符串之间没有 `separator` )。 如果 `separator` 不是字符则抛出错误。"
    },
    "$match": {
        "args": "str, pattern [, limit]",
        "desc": "对字符串 `str` 使用正则表达式 `pattern` 并输出与 `str` 相匹配的部分信息。"
    },
    "$replace": {
        "args": "str, pattern, replacement [, limit]",
        "desc": "在字符串 `str` 中搜索 `pattern` 并用 `replacement` 来替换。\n\n可选参数 `limit` 用来指定替换次数的上限。"
    },
    "$now": {
        "args": "",
        "desc": "生成ISO 8601互換格式的时刻，并作为字符串输出。"
    },
    "$base64encode": {
        "args": "string",
        "desc": "将ASCII格式的字符串转换为Base 64格式。将字符串中的文字视作二进制形式的数据处理。包含URI编码在内的字符串文字必须在0x00到0xFF的范围内，否则不会被支持。"
    },
    "$base64decode": {
        "args": "string",
        "desc": "用UTF-8代码页将Base 64形式二进制值转换为字符串。"
    },
    "$number": {
        "args": "arg",
        "desc": "用下述的规则将参数 `arg` 转换为数值。:\n\n – 数值不做转换。\n – 将字符串中合法的JSON数値表示转换成数値。\n – 其他形式的值则抛出错误。"
    },
    "$abs": {
        "args": "number",
        "desc": "输出参数 `number` 的绝对值。"
    },
    "$floor": {
        "args": "number",
        "desc": "输出比 `number` 的值小的最大整数。"
    },
    "$ceil": {
        "args": "number",
        "desc": "输出比 `number` 的值大的最小整数。"
    },
    "$round": {
        "args": "number [, precision]",
        "desc": "输出四舍五入后的参数 `number` 。可省略的参数 `precision` 指定四舍五入后小数点下的位数。"
    },
    "$power": {
        "args": "base, exponent",
        "desc": "输出底数 `base` 的 `exponent` 次幂。"
    },
    "$sqrt": {
        "args": "number",
        "desc": "输出参数 `number` 的平方根。"
    },
    "$random": {
        "args": "",
        "desc": "输出比0大，比1小的伪随机数。"
    },
    "$millis": {
        "args": "",
        "desc": "返回从UNIX时间 (1970年1月1日 UTC/GMT的午夜）开始到现在的毫秒数。在同一个表达式的测试中所有对 `$millis()` 的调用将会返回相同的值。"
    },
    "$sum": {
        "args": "array",
        "desc": "输出数组 `array` 的总和。如果 `array` 不是数值则抛出错误。"
    },
    "$max": {
        "args": "array",
        "desc": "输出数组 `array` 的最大值。如果 `array` 不是数值则抛出错误。"
    },
    "$min": {
        "args": "array",
        "desc": "输出数组 `array` 的最小值。如果 `array` 不是数值则抛出错误。。"
    },
    "$average": {
        "args": "array",
        "desc": "输出数组 `array` 的平均数。如果 `array` 不是数值则抛出错误。。"
    },
    "$boolean": {
        "args": "arg",
        "desc": "用下述规则将数据转换成布尔值。:\n\n - 不转换布尔值 `Boolean` 。\n – 将空的字符串 `string` 转换为 `false`\n – 将不为空的字符串 `string` 转换为 `true`\n – 将为0的数字 `number` 转换成 `false`\n –将不为0的数字 `number` 转换成 `true`\n –将 `null` 转换成 `false`\n –将空的数组 `array` 转换成 `false`\n –如果数组 `array` 中含有可以转换成 `true` 的要素则转换成 `true`\n –如果 `array` 中没有可转换成 `true` 的要素则转换成 `false`\n – 空的对象 `object` 转换成 `false`\n – 非空的对象 `object` 转换成 `true`\n –将函数 `function` 转换成 `false`"
    },
    "$not": {
        "args": "arg",
        "desc": "输出做取反运算后的布尔值。首先将 `arg` 转换为布尔值。"
    },
    "$exists": {
        "args": "arg",
        "desc": "如果算式 `arg` 的值存在则输出 `true` 。如果算式的值不存在(比如指向不存在区域的引用)则输出 `false` 。"
    },
    "$count": {
        "args": "array",
        "desc": "输出数组中的元素数。"
    },
    "$append": {
        "args": "array, array",
        "desc": "将两个数组连接。"
    },
    "$sort": {
        "args": "array [, function]",
        "desc": "输出排序后的数组 `array` 。\n\n如果使用了比较函数 `function` ，则下述两个参数需要被指定。\n\n `function(left, right)`\n\n该比较函数是为了比较`left`和`right`两个值而被排序算法调用的。如果用户希望`left`的值被置于`right`的值之后，那么该函数必须输出布尔值 `true` 来表示位置交换。而在不需要位置交换时函数必须输出 `false` 。"
    },
    "$reverse": {
        "args": "array",
        "desc": "输出倒序后的数组 `array` 。"
    },
    "$shuffle": {
        "args": "array",
        "desc": "输出随机排序后的数组 `array` 。"
    },
    "$zip": {
        "args": "array, ...",
        "desc": "将数组中的值按索引顺序打包后输出。"
    },
    "$keys": {
        "args": "object",
        "desc": "输出由对象内的键组成的数组。如果参数是对象的数组则输出由所有对象中的键去重后组成的队列。"
    },
    "$lookup": {
        "args": "object, key",
        "desc": "输出对象中与参数 `key` 对应的值。如果第一个参数 `object` 是数组，那么数组中所有的对象都将被搜索并输出这些对象中与参数 `key` 对应的值。"
    },
    "$spread": {
        "args": "object",
        "desc": "将对象中的键值对分隔成每个要素中只含有一个键值对的数组。如果参数 `object` 是数组，那么返回值的数组中包含所有对象中的键值对。"
    },
    "$merge": {
        "args": "array&lt;object&gt;",
        "desc": "将输入数组 `objects` 中所有的键值对合并到一个 `object` 中并返回。如果输入数组的要素中含有重复的键，则返回的 `object` 中将只包含数组中最后出现要素的值。如果输入数组中包括对象以外的元素，则抛出错误。"
    },
    "$sift": {
        "args": "object, function",
        "desc": "输出参数 `object` 中符合 `function` 的键值对。\n\n `function` 必须含有下述参数。\n\n `function(value [, key [, object]])`"
    },
    "$each": {
        "args": "object, function",
        "desc": "将函数 `function` 应用于 `object` 中的所有键值对并输出由所有返回值组成的数组。"
    },
    "$map": {
        "args": "array, function",
        "desc": "将函数 `function` 应用于数组 `array` 中所有的值并输出由返回值组成的数组。\n\n `function` 中必须含有下述参数。\n\n`function(value [, index [, array]])`"
    },
    "$filter": {
        "args": "array, function",
        "desc": "输出数组 `array` 中符合函数 `function` 条件的值组成的数组。\n\n `function` 必须包括下述参数。\n\n `function(value [, index [, array]])`"
    },
    "$reduce": {
        "args": "array, function [, init]",
        "desc": "将 `function` 依次应用于数组中的各要素值。 其中，前一个要素值的计算结果将参与到下一次的函数运算中。。\n\n函数 `function` 接受两个参数并作为中缀表示法中的操作符。\n\n可省略的参数 `init` 将作为运算的初始值。"
    },
    "$flowContext": {
        "args": "string",
        "desc": "获取流上下文(流等级的上下文，可以让所有节点共享)的属性。"
    },
    "$globalContext": {
        "args": "string",
        "desc": "获取全局上下文的属性。"
    },
    "$pad": {
        "args": "string, width [, char]",
        "desc": "根据需要，向字符串 `string` 的副本中填充文字使该字符串的字数达到 `width` 的绝对值并返回填充文字后的字符串。\n\n如果 `width` 的值为正，则向字符串 `string` 的右侧填充文字，如果 `width` 为负，则向字符串 `string` 的左侧填充文字。\n\n可选参数 `char` 用来指定填充的文字。如果未指定该参数，则填充空白文字。"
    },
    "$fromMillis": {
        "args": "number",
        "desc": "将表示从UNIX时间 (1970年1月1日 UTC/GMT的午夜）开始到现在的毫秒数的数值转换成ISO 8601形式时间戳的字符串。"
    },
    "$formatNumber": {
        "args": "number, picture [, options]",
        "desc": "将 `number` 转换成具有 `picture` 所指定的数值格式的字符串。\n\n此函数的功能与XPath F&O 3.1规格中定义的XPath/XQuery函数的fn:format-number功能相一致。参数 `picture` 用于指定数值的转换格式，其语法与fn:format-number中的定义一致。\n\n可选的第三参数 `options` 用来覆盖默认的局部环境格式，如小数点分隔符。如果指定该参数，那么该参数必须是包含name/value对的对象，并且name/value对必须符合XPath F&O 3.1规格中记述的数值格式。"
    },
    "$formatBase": {
        "args": "number [, radix]",
        "desc": "将 `number` 变换为以参数 `radix` 的值为基数形式的字符串。如果不指定 `radix` 的值，则默认基数为10。指定的 `radix` 值必须在2～36之间，否则抛出错误。"
    },
    "$toMillis": {
        "args": "timestamp",
        "desc": "将ISO 8601格式的字符串 `timestamp` 转换为从UNIX时间 (1970年1月1日 UTC/GMT的午夜）开始到现在的毫秒数。如果该字符串的格式不正确，则抛出错误。"
    },
    "$env": {
        "args": "arg",
        "desc": "返回环境变量的值。\n\n这是Node-RED定义的函数。"
    },
    "$eval": {
        "args": "expr [, context]",
        "desc": "使用当前上下文来作为评估依据，分析并评估字符串 `expr` ，其中包含文字JSON或JSONata表达式。"
    },
    "$formatInteger": {
        "args": "number, picture",
        "desc": "将“数字”转换为字符串，并将其格式化为“图片”字符串指定的整数表示形式。图片字符串参数定义了数字的格式，并具有与XPath F&O 3.1 规范中的fn：format-integer相同的语法。"
    },
    "$parseInteger": {
        "args": "string, picture",
        "desc": "使用“图片”字符串指定的格式将“字符串”参数的内容解析为整数（作为JSON数字）。图片字符串参数与$formatInteger格式相同。."
    },
    "$error": {
        "args": "[str]",
        "desc": "引发错误并显示一条消息。 可选的 `str` 将替代$error()函数评估的默认消息。"
    },
    "$assert": {
        "args": "arg, str",
        "desc": "如果 `arg` 为真，则该函数返回。 如果`arg`为假，则抛出带有`str`的异常作为异常消息。"
    },
    "$single": {
        "args": "array, function",
        "desc": "返回满足参数function谓语的array参数中的唯一值 (比如：传递值时，函数返回布尔值“true”)。如果匹配值的数量不唯一时，则抛出异常。\n\n应在以下签名中提供函数： `function（value [，index [，array []]]）` 其中value是数组的每个输入，index是该值的位置，整个数组作为第三个参数传递。"
    },
    "$encodeUrlComponent": {
        "args": "str",
        "desc": "通过用表示字符的UTF-8编码的一个，两个，三个或四个转义序列替换某些字符的每个实例，对统一资源定位符（URL）组件进行编码。\n\n示例： `$encodeUrlComponent(\"?x=test\")` => `\"%3Fx%3Dtest\"`"
    },
    "$encodeUrl": {
        "args": "str",
        "desc": "通过用表示字符的UTF-8编码的一个，两个，三个或四个转义序列替换某些字符的每个实例，对统一资源定位符（URL）进行编码。\n\n示例： `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\"`"
    },
    "$decodeUrlComponent": {
        "args": "str",
        "desc": "解码以前由encodeUrlComponent创建的统一资源定位器（URL）组件。\n\n示例： `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
    },
    "$decodeUrl": {
        "args": "str",
        "desc": "解码先前由encodeUrl创建的统一资源定位符（URL）。\n\n示例： `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
    },
    "$distinct": {
        "args": "array",
        "desc": "返回一个数组，其中重复的值已从 `数组` 中删除"
    },
    "$type": {
        "args": "value",
        "desc": "以字符串形式返回 `值` 的类型。 如果该 `值` 未定义，则将返回 `未定义`"
    },
    "$moment": {
        "args": "[str]",
        "desc": "使用Moment库获取日期对象。"
    },
    "$clone": {
        "args": "value",
        "desc": "安全克隆对象."
    }
}
