Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

msa-engine

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

msa-engine

MSA Engine ===========

latest
npmnpm
Version
0.1.0-beta-8
Version published
Maintainers
1
Created
Source

MSA Engine

Usage

import Engine from "msa-engine";
import { components } from "msa-spec";

const engine = new Engine();

const Global = {};
const Parameters = {};

engine.parse(yamlText, {
  Global,
  Parameters,
}, { components }).then((parsedEngine) => {
  console.log(parsedEngine.create());
  console.log(parsedEngine.getOperation());
});

Parser

渲染基础数据

{{name}}

渲染 True/False

{{&true}}
True
{{/}}
{{^true}}
False
{{/}}
{{!true}}
False
{{/}}

渲染列表

{{#list}}
Index: {{$index}}
Item: {{$item}}
{{/}}

渲染嵌套列表

{{#list}}
Index: {{$index}}
Item: {{$item}}
{{#$item.children}}
  ChildIndex: {{$index}}
  Item: {{$item}}
  ParentIndex: {{$parent.$index}}
  ParentItem: {{$parent.$item}}
{{/}}
{{/}}

Testing

npm run dev

内置 Helper

comparison

{{and}}

逻辑与 参数...args

  • ...args {unknown[]}
  • returns {boolean}: 返回值,如果所有参数都为 true,则返回 true,否则返回 false

Example

{{&and(eq(Parameters.Cpu, 1), eq(Parameters.Memory, 1024))}}
HttpTrigger:
  Type: ALIYUN::FC3::Trigger
{{/}}

{{or}}

逻辑或 参数...args

  • ...args {unknown[]}
  • returns {boolean}: 返回值,如果任意一个参数为 true,则返回 true,否则返回 false

Example

{{&or(eq(Parameters.Cpu, 1), eq(Parameters.Memory, 1024))}}
HttpTrigger:
  Type: ALIYUN::FC3::Trigger
{{/}}

{{not}}

逻辑非 参数a

  • a {unknown}
  • returns {boolean}: 返回值,如果 a 为 false,则返回 true,否则返回 false

Example

{{&not(eq(Parameters.Cpu, 1))}}
HttpTrigger:
  Type: ALIYUN::FC3::Trigger
{{/}}

{{eq}}

逻辑判断,如果 a 等于 b,则返回 true, 否则返回 false :如果参数为非原始类型,则会进行序列化后以字符串形式进行比较 参数ab

  • a {unknown}
  • b {unknown}
  • returns {boolean}: 返回值,如果 a 等于 b,则返回 true,否则返回 false

Example

{{&eq(Parameters.Cpu, 1)}}
HttpTrigger:
  Type: ALIYUN::FC3::Trigger
{{/}}

{{gt}}

逻辑判断,如果 a 大于 b,则返回 true, 否则返回 false :如果参数为非原始类型,则会进行序列化后以字符串形式进行比较 参数ab

  • a {unknown}
  • b {unknown}
  • returns {boolean}: 返回值,如果 a 大于 b,则返回 true,否则返回 false

{{gte}}

逻辑判断,如果 a 大于等于 b,则返回 true, 否则返回 false :如果参数为非原始类型,则会进行序列化后以字符串形式进行比较 参数ab

  • a {unknown}
  • b {unknown}
  • returns {boolean}: 返回值,如果 a 大于等于 b,则返回 true,否则返回 false

{{lt}}

逻辑判断,如果 a 小于 b,则返回 true, 否则返回 false :如果参数为非原始类型,则会进行序列化后以字符串形式进行比较 参数ab

  • a {unknown}
  • b {unknown}
  • returns {boolean}: 返回值,如果 a 小于 b,则返回 true,否则返回 false

{{lte}}

逻辑判断,如果 a 小于等于 b,则返回 true, 否则返回 false :如果参数为非原始类型,则会进行序列化后以字符串形式进行比较 参数ab

  • a {unknown}
  • b {unknown}
  • returns {boolean}: 返回值,如果 a 小于等于 b,则返回 true,否则返回 false

utils

{{Get}}

获取对象的属性, 参考 lodash.get 参数datakeydefaultValue

  • data {unknown}
  • key {string}
  • defaultValue {unknown}

{{IsTls}}

判断是否为 Https, 参数有可能为 Object :如果参数为 Object,则需要将 Object 转换为 JSON 字符串后判断是否包含 :443:80 参数url

  • url {unknown}
  • returns {boolean}: 返回值,如果 url 为 Https,则返回 true,否则返回 false

Example

{{&IsTls(Parameters.Url)}}
HttpTrigger:
  Type: ALIYUN::FC3::Trigger
{{/}}

{{Join}}

合并两个字符串 参数ab

  • a {string}
  • b {string}
  • c {string} 默认值为 -
  • returns {string}: 返回值,返回合并后的字符串

Example

{{Join(Parameters.Name, "zxc")}}
{{Join(Parameters.Name, "zxc", "&")}}

{{SubfixRandom}}

在字符串后面添加随机后缀 参数ab, c

  • a {string}
  • b {string} 随机串长度 默认值为 4
  • c {string} 链接符 默认值为 -
  • returns {string}: 返回值,返回添加后缀后的字符串

Example

{{SubfixRandom(Parameters.Name)}}
{{SubfixRandom(Parameters.Name, 8, "_")}}

{{Subfix}}

在字符串后面添加随机后缀,并且只生成一次 参数...params

  • ...params {unknown[]}
  • returns {string}: 返回值,返回添加后缀后的字符串

Example

{{Subfix(Parameters.Name)}}

{{Default}}

获取默认值 参数ab

  • a {unknown}
  • b {unknown}
  • returns {unknown}: 返回值,如果 a 被隐式转换为 false,则返回 b,否则返回 a

{{OSSAddress}}

获取 OSS 地址 参数ossNameregiontype

  • ossName {string}
  • region {string}
  • type {string} 默认值为 internal
  • returns {string}: 返回值,返回 OSS 地址

{{IsOSSWebsite}}

判断是否为 OSS 网站 参数address

  • address {string}
  • returns {boolean}: 返回值,返回是否为 OSS 网站

ros

{{RosOutput}}

将参数转为 Ros 的 Fn::GetAtt 格式, 如果有 value , 则直接返回 value 参数resourceNamefieldvalue

  • resourceName {string}
  • field {string}
  • value {any} 默认值为 undefined
  • returns {string}: 返回值,返回 JSON 字符串

Example

{{RosOutput(ChatgptWeb.HttpTrigger, "UrlIntranet")}}

输出

Fn::GetAtt:
  - ChatgptWebHttpTrigger
  - UrlIntranet

{{RosRouterServices}}

将路由场景和路由服务转换为 Ros 的 Fn::Sub 格式 参数servicesscene

  • 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

{{RosArray}}

将数组转换为 Ros 的 Fn::Sub 格式 参数arr

  • arr {unknown[]}
  • returns {string}: 返回值,返回 JSON 字符串

Example

{{RosArray(["test1", "test2"])}}

输出

Fn::Sub:
  - '["${item1}","${item2}"]'
  - item1: test1
    item2: test2

{{RosEnvs}}

将环境变量对象转换成 SAE 的 Evns 对象数组的形式 参数obj

  • obj {Record<string, string>}
  • returns {Array<{name: string, value: string}>}: 返回值,返回 对象数组

Example

{{RosEnvs({env1: value1, env2: value2})}}

输出

Fn::Sub:
  - "${res}",
  - res:
    - name: env1
      value: value1
    - name: env2
      value: value2

FAQs

Package last updated on 30 Mar 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts