import Engine from "msa-engine";
const engine = new Engine();
engine.parse(yamlText).then((parsedEngine) => {
console.log(parsedEngine.create());
console.log(parsedEngine.getOperation());
});
npm run dev
逻辑与
参数:...args
...args
{unknown[]}returns
{boolean}: 返回值,如果所有参数都为 true,则返回true
,否则返回false
Example
{{#if and(eq(Parameters.Cpu, 1), eq(Parameters.Memory, 1024))}}
HttpTrigger:
Type: ALIYUN::FC3::Trigger
{{/if}}
逻辑或
参数:...args
...args
{unknown[]}returns
{boolean}: 返回值,如果任意一个参数为 true,则返回true
,否则返回false
Example
{{#if or(eq(Parameters.Cpu, 1), eq(Parameters.Memory, 1024))}}
HttpTrigger:
Type: ALIYUN::FC3::Trigger
{{/if}}
逻辑非
参数:a
a
{unknown}returns
{boolean}: 返回值,如果a
为 false,则返回true
,否则返回false
Example
{{#if not(eq(Parameters.Cpu, 1))}}
HttpTrigger:
Type: ALIYUN::FC3::Trigger
{{/if}}
逻辑判断,如果 a
等于 b
,则返回 true, 否则返回 false
注:如果参数为非原始类型,则会进行序列化后以字符串形式进行比较
参数:a
、b
a
{unknown}b
{unknown}returns
{boolean}: 返回值,如果a
等于b
,则返回true
,否则返回false
Example
{{#if eq(Parameters.Cpu, 1)}}
HttpTrigger:
Type: ALIYUN::FC3::Trigger
{{/if}}
逻辑判断,如果 a
大于 b
,则返回 true, 否则返回 false
注:如果参数为非原始类型,则会进行序列化后以字符串形式进行比较
参数:a
、b
a
{unknown}b
{unknown}returns
{boolean}: 返回值,如果a
大于b
,则返回true
,否则返回false
逻辑判断,如果 a
大于等于 b
,则返回 true, 否则返回 false
注:如果参数为非原始类型,则会进行序列化后以字符串形式进行比较
参数:a
、b
a
{unknown}b
{unknown}returns
{boolean}: 返回值,如果a
大于等于b
,则返回true
,否则返回false
逻辑判断,如果 a
小于 b
,则返回 true, 否则返回 false
注:如果参数为非原始类型,则会进行序列化后以字符串形式进行比较
参数:a
、b
a
{unknown}b
{unknown}returns
{boolean}: 返回值,如果a
小于b
,则返回true
,否则返回false
逻辑判断,如果 a
小于等于 b
,则返回 true, 否则返回 false
注:如果参数为非原始类型,则会进行序列化后以字符串形式进行比较
参数:a
、b
a
{unknown}b
{unknown}returns
{boolean}: 返回值,如果a
小于等于b
,则返回true
,否则返回false
获取对象的属性, 参考 lodash.get
参数:data
、key
、defaultValue
data
{unknown}key
{string}defaultValue
{unknown}
判断是否为 Https, 参数有可能为 Object
注:如果参数为 Object,则需要将 Object 转换为 JSON 字符串后判断是否包含 :443
或 :80
参数:url
url
{unknown}returns
{boolean}: 返回值,如果url
为 Https,则返回true
,否则返回false
Example
{{#if IsTls(Parameters.Url)}}
HttpTrigger:
Type: ALIYUN::FC3::Trigger
{{/if}}
合并两个字符串
参数:a
、b
a
{string}b
{string}c
{string} 默认值为-
returns
{string}: 返回值,返回合并后的字符串
Example
{{Join(Parameters.Name, "zxc")}}
{{Join(Parameters.Name, "zxc", "&")}}
在字符串后面添加随机后缀
参数:a
、b
, c
a
{string}b
{string} 随机串长度 默认值为4
c
{string} 链接符 默认值为-
returns
{string}: 返回值,返回添加后缀后的字符串
Example
{{SubfixRandom(Parameters.Name)}}
{{SubfixRandom(Parameters.Name, 8, "_")}}
在字符串后面添加随机后缀,并且只生成一次
参数:...params
...params
{unknown[]}returns
{string}: 返回值,返回添加后缀后的字符串
Example
{{Subfix(Parameters.Name)}}
获取默认值
参数:a
、b
a
{unknown}b
{unknown}returns
{unknown}: 返回值,如果a
被隐式转换为 false,则返回b
,否则返回a
获取 OSS 地址
参数:ossName
、region
、type
ossName
{string}region
{string}type
{string} 默认值为internal
returns
{string}: 返回值,返回 OSS 地址
判断是否为 OSS 网站
参数:address
address
{string}returns
{boolean}: 返回值,返回是否为 OSS 网站
将参数转为 Ros 的 Fn::GetAtt 格式
参数:...params
...params
{unknown[]}returns
{string}: 返回值,返回 JSON 字符串
Example
{{RosOutput(ChatgptWeb.HttpTrigger, "UrlIntranet")}}
输出
Fn::GetAtt:
- ChatgptWebHttpTrigger
- UrlIntranet
将路由场景和路由服务转换为 Ros 的 Fn::Sub 格式
参数:services
、scene
services
{unknown[]}scene
{string}returns
{string}: 返回值,返回 JSON 字符串
Example
{{RosRouterServices(Operation.Services, Operation.Scene)}}
输出
Fn::Sub:
- '{"Services":[{"ServiceId":"${ServiceId1}","Protocol":"HTTP","Weight":"50%"},{"ServiceId":"${ServiceId2}","Protocol":"HTTP","Weight":"50%"}],"Scene":"SingleService"}'
- ServiceId1:
ServiceId:
Fn::GetAtt:
- ChatgptWebRouteRouteApi
- ServiceId
- ServiceId2:
ServiceId:
Fn::GetAtt:
- ChatgptWebRouteRouteApi
- ServiceId
将数组转换为 Ros 的 Fn::Sub 格式
参数:arr
arr
{unknown[]}returns
{string}: 返回值,返回 JSON 字符串
Example
{{RosArray(["test1", "test2"])}}
输出
Fn::Sub:
- '["${item1}","${item2}"]'
- item1: test1
item2: test2