{"_id":"@aircall/expression-parser","_rev":"12-b244d71cd96c4bf2bf9dc79bdc4ca83c","name":"@aircall/expression-parser","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@aircall/expression-parser","version":"1.0.0","author":{"name":"Aircall"},"license":"MIT","_id":"@aircall/expression-parser@1.0.0","maintainers":[{"name":"kamalbennani","email":"kamal.bennani@aircall.io"},{"name":"xdurand","email":"xavier@xdurand.com"},{"name":"eulbat","email":"acca.baptiste@gmail.com"},{"name":"aircall-ci","email":"dev@aircall.io"}],"dist":{"shasum":"2a1024e8f6f1779f500566aee5657f2f33d174f0","tarball":"https://registry.npmjs.org/@aircall/expression-parser/-/expression-parser-1.0.0.tgz","fileCount":37,"integrity":"sha512-c4c8E5OOIuhl9s3iKTDm58lv8Ql6Qm5TCtJNRLJ+iWL+zfVRGwavZDa+FNNVR4IIYA35dIX8KOBwgz3+LUC+SQ==","signatures":[{"sig":"MEUCIQD4qx+9s3CBkb8X/fn8u53ICIblegqhAdOnOiwm0esrQQIgHRwnbyV6T8Tfq+hS17KSMxLBieZ79R7iCLtNIPr3lNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3ETkCRA9TVsSAnZWagAAKm8P/2bMnI0DKODA+xUuEni2\nxz44O2/5+SsD1Ul6LrR9yFys65K77VyaNdiGAq/mjT3vOpe2VD9IkCnUj+nH\nJsTDEZJMHLPtm8t2SK6BZM0zCMlYWa1i0zNJcJvs12oFAbfn30aO1RsS1Z1V\nPjLU3glEmbwlNXGYaV9/uhzqXsSEYcUJgyXhEr3pVRFMxewD75XGl+12gJkz\n96BqQm8pPtW9fGDEo9LlBIjsLAkE85gj1BLBr4PVCR6JyMoMAyCMZAddpzEV\nIG9dmGStQHTxeRKw9jg230w9eVtz30pMHK2E2xH2IWsHeVW7W7Jq4tQjCXjh\nX8FcXS3xF5GJHUu+Dk8EunF8U29MOfij2WrlVLAqlOOvrKC+SyGHfXIsZaGA\nwKFBCuJuEcSHPW2jtlV7x3ED/5AFlJjSFGtw5UmxUOUZ+3oaGS2fBYcke9i1\nwP3SYyEEasFj2j1YZS1WnZHj2gjnYTCSJNyej9s7whTgYJfYNRMp0OgLfyqh\nkbyiWk3NO3Qz0QCn8U0GlOeQ7fgHTXB/1dgblsqxsLvxKRnHNtp2fwxSZSaI\ndyCNCtMfaI6MwOUVboDEitergYc0ZcAda2TT//TcSX90l4A8+xXFEAb2wHDQ\nvBT/ku6Gjv1dVMtRYJq8Af81tQgNKNk1r77yIyMxuJHERS+0PYdw9m7Xgjxs\nRIqK\r\n=FAAd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"26a9ae5e3c3d8e94b06f1f2c794ce3a0f728bcae","private":false,"scripts":{"test":"jest","build":"tsc --project tsconfig.local.json","linter":"eslint --fix src __mocks__","prepare":"bash ./.huskyrc.sh && husky install","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand"},"_npmUser":{"name":"aircall-ci","email":"dev@aircall.io"},"_npmVersion":"7.10.0","description":"Transforms strings with escaping expression templates, evaluating the expressions and returning a new string or the value evaluated from the expression","directories":{},"_nodeVersion":"14.16.0","dependencies":{"js-x-ray":"^3.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","faker":"^5.5.3","husky":"^6.0.0","eslint":"^7.28.0","ts-jest":"^27.0.3","prettier":"^2.3.1","typescript":"^4.3.4","@types/jest":"^26.0.23","lint-staged":"^11.0.0","@types/faker":"^5.5.6","@commitlint/cli":"^12.1.4","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@typescript-eslint/parser":"^4.27.0","@commitlint/config-angular":"^12.1.4","@typescript-eslint/eslint-plugin":"^4.27.0","eslint-plugin-simple-import-sort":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expression-parser_1.0.0_1625048292484_0.4306973876208535","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@aircall/expression-parser","version":"1.0.1","author":{"name":"Aircall"},"license":"MIT","_id":"@aircall/expression-parser@1.0.1","maintainers":[{"name":"kamalbennani","email":"kamal.bennani@aircall.io"},{"name":"xdurand","email":"xavier@xdurand.com"},{"name":"eulbat","email":"acca.baptiste@gmail.com"},{"name":"aircall-ci","email":"dev@aircall.io"}],"homepage":"https://github.com/aircall/aircall-expression-parser#readme","bugs":{"url":"https://github.com/aircall/aircall-expression-parser/issues"},"dist":{"shasum":"963bfd79ad2eebca578c8cb4c1d0c67fc23e9cf4","tarball":"https://registry.npmjs.org/@aircall/expression-parser/-/expression-parser-1.0.1.tgz","fileCount":37,"integrity":"sha512-/mjOWC2M0EvOwtiv9YrJIyca6x0FVyig6q0GcXhikNkOZlnFKIJE/FU2XUnwtztIICujMX0DoPM0zDwMyUDPBg==","signatures":[{"sig":"MEUCIQCy0IXCTc675veAIt/Kw3keUPl6MetKQg/aNgvmxVTF+QIgd6iZdEuQBCE1Lvt3KA0eylqdTab+Uyr8fBV1Q05zUHA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3EbBCRA9TVsSAnZWagAAOggP+QGvSeX26evyMtoYr4SB\niC6Ve1fcV5hryCrpIp48rSy0N8/9hJnhAocVgyqthmmu7FgH5rfgWgvCA/px\nKn/H4SDbQla5oRVLUAD/6A22KvFSYT1YMNuMyJJrRwmWPbreFiefVPFhLyH4\nltP0Tso07Rtw3ijQ+Htq06hw8h6o4jtNwyNXB5B+0S9VaeVswKpszL4wETHh\nKINhNVQ4+GYgmPlDUOTrJvSEhXJK1diGDLV+SyG8m07DkDvg3JDvvu/bWoGP\nttfjPxXD9eKwZ4zT2I2rQt7Gp2u5iFzbiVeymQJBnPPlZQZirVICJRfpwe4+\n4n/IO9nqaWDGSzcMLHLcCDOtsbuEBjve+7pTcWRtYHxLLtpEH2pB3YIOnC/D\noqdSSojf+E6GI+mVCtkV2pvG1NBNRqsqLsEeEws5MqCQtDSnjt3SSCfPkafa\niVIij8rsjBXl47QE86xnQPOlTnGfwrU3pXp1wMLks3VgrDhXyP3woC3sGMlY\nwFcb2sh/aCYBwfgwXwrQkZIQobFhLiOuvwfwm1lh9PvtajZP6WWIL93Imzgu\nAkK2z/3VLZSMZMGZRplnnMtZKXwXFdSDaaShgZy9uMdbsaMShMUAQONOOK2p\nXAM3xAw1D7nEIqs6rruDLeRZfijafFlqGvx322wNzRpBQ51soNv6OVo5KsHL\n2EMn\r\n=qfth\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0b742d20b75e71c65034667cd48a7d52fd65163d","private":false,"scripts":{"test":"jest","build":"tsc --project tsconfig.local.json","linter":"eslint --fix src __mocks__","prepare":"bash ./.huskyrc.sh && husky install","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand"},"_npmUser":{"name":"aircall-ci","email":"dev@aircall.io"},"repository":{"url":"git+https://github.com/aircall/aircall-expression-parser.git","type":"git"},"_npmVersion":"7.10.0","description":"Transforms strings with escaping expression templates, evaluating the expressions and returning a new string or the value evaluated from the expression","directories":{},"_nodeVersion":"14.16.0","dependencies":{"js-x-ray":"^3.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","faker":"^5.5.3","husky":"^6.0.0","eslint":"^7.28.0","ts-jest":"^27.0.3","prettier":"^2.3.1","typescript":"^4.3.4","@types/jest":"^26.0.23","lint-staged":"^11.0.0","@types/faker":"^5.5.6","@commitlint/cli":"^12.1.4","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@typescript-eslint/parser":"^4.27.0","@commitlint/config-angular":"^12.1.4","@typescript-eslint/eslint-plugin":"^4.27.0","eslint-plugin-simple-import-sort":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expression-parser_1.0.1_1625048768658_0.7937947023180272","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@aircall/expression-parser","version":"1.0.2","author":{"name":"Aircall"},"license":"MIT","_id":"@aircall/expression-parser@1.0.2","maintainers":[{"name":"kamalbennani","email":"kamal.bennani@aircall.io"},{"name":"xdurand","email":"xavier@xdurand.com"},{"name":"eulbat","email":"acca.baptiste@gmail.com"},{"name":"aircall-ci","email":"dev@aircall.io"}],"homepage":"https://github.com/aircall/aircall-expression-parser#readme","bugs":{"url":"https://github.com/aircall/aircall-expression-parser/issues"},"dist":{"shasum":"2969aaef5b919949d2f2cd6425b9f9c4be8575df","tarball":"https://registry.npmjs.org/@aircall/expression-parser/-/expression-parser-1.0.2.tgz","fileCount":10,"integrity":"sha512-AKtBRnGs/Li/6SSzuFY65LnhYlcz8l+20dwdTe7RwCDbAlb4kar25dzOpMoYhVe8xI38+kmFe5BDJzEuk8zDIA==","signatures":[{"sig":"MEQCIE6OuH2UK/l+gAeJFh7mPYh422lJKaLYM4226Sp6ZjvsAiAHCRe5qvROyrsPcusm6RUtFyUKxFRyn6pUywtE544HPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3EtdCRA9TVsSAnZWagAAN0wP/RoVFD2z8sHFajtFPV8c\nv0rsX0UpnBoKpdMEt/Kfzc3TcQ5Zp957lrhQX4ju3VimhIcO0xoV/LKof3st\npzLr0oMCbzN1nBLqXMqHPcrcXbIHfOZfSk+08h1c7gSffM6VmJiPDo42BZb4\nQP/6hwyhMqIM3wac6JRK0AZN0gJyPnRapicE/9vNjw0Wl1gvilH6IMDn+a0E\n929ZZ+Gx4fntWWvaPF9sKEcVLUyp/6VB7LAH2qT1sLfN6vpEmYlz6Gu6EdjG\nRvX6YI1VA3506IoQwJXYa3WPf9McMKoT3NSI0a+0g5WDpSOocBLeD78a0BI1\n5Aucd/5U2i3UrlMX2rJ6hhn3zpDdS96BW8sHmRb/SjSRABZOuQ1Miy8p7w7H\nCfcmIOT6e6zahCttqOJDtiKanoS0z6PrSm1utf7sX8+Qonl8J4s1Q9vJlHIs\nkQBfd2VP1FEbyYJvgGd5nXBfOIb9QoFcmtW/xGQRG5E1kjt0XVlV4zNFglqN\nutd+z56k9pAJ5jNOQw9u98Ui8oFSCd3En5eWjnoaFRs4dKFX76AQlBeaBRUd\nSqpdEAM3EjN0kXseFbV0E4gQzy5GcJUAV830MXZ8kzKwA5cQx33vXlIx/nm4\ni/rLf4F7GdPzgiP2uxxZSnr/3yc7JOoF+rGUfLLg9YCxp6QyY05VHtE80uZb\nuegB\r\n=N7Su\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0b5ef2b3434cd0502e8311639b9ef7142a8d121a","private":false,"scripts":{"test":"jest","build":"tsc --project tsconfig.local.json","linter":"eslint --fix src __mocks__","prepare":"bash ./.huskyrc.sh && husky install","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand"},"_npmUser":{"name":"aircall-ci","email":"dev@aircall.io"},"repository":{"url":"git+https://github.com/aircall/aircall-expression-parser.git","type":"git"},"_npmVersion":"7.10.0","description":"Transforms strings with escaping expression templates, evaluating the expressions and returning a new string or the value evaluated from the expression","directories":{},"_nodeVersion":"14.16.0","dependencies":{"js-x-ray":"^3.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","faker":"^5.5.3","husky":"^6.0.0","eslint":"^7.28.0","ts-jest":"^27.0.3","prettier":"^2.3.1","typescript":"^4.3.4","@types/jest":"^26.0.23","lint-staged":"^11.0.0","@types/faker":"^5.5.6","@commitlint/cli":"^12.1.4","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@typescript-eslint/parser":"^4.27.0","@commitlint/config-angular":"^12.1.4","@typescript-eslint/eslint-plugin":"^4.27.0","eslint-plugin-simple-import-sort":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expression-parser_1.0.2_1625049949414_0.13404491552421494","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@aircall/expression-parser","version":"1.0.4","author":{"name":"Aircall"},"license":"MIT","_id":"@aircall/expression-parser@1.0.4","maintainers":[{"name":"xdurand","email":"xavier@xdurand.com"},{"name":"eulbat","email":"acca.baptiste@gmail.com"},{"name":"aircall-ci","email":"dev@aircall.io"},{"name":"kamalbennani","email":"kamal.bennani@aircall.io"},{"name":"paulsouche","email":"paul.souche@gmail.com"}],"homepage":"https://github.com/aircall/aircall-expression-parser#readme","bugs":{"url":"https://github.com/aircall/aircall-expression-parser/issues"},"dist":{"shasum":"aadc44de04ac6af6eb7420d0b568ffe97e23b6bb","tarball":"https://registry.npmjs.org/@aircall/expression-parser/-/expression-parser-1.0.4.tgz","fileCount":10,"integrity":"sha512-V+Mw2IXRufC0jvjdRZ64rwv3VLWUux10PZXa1OCdtRC41zozAo3qcQW6d/zrv+ZKvWF7ImBMLEmyYEEz/YNmSQ==","signatures":[{"sig":"MEQCIAyyy9w/KqVVRCDh/kX3/YXuMuWI7c7IjWz25l/QtHKCAiBmiysrIuqpStgygAOj7/KZTquQFDGC5qndHICQtvvfZA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiA5ZcCRA9TVsSAnZWagAAr1QQAKIW1usj2QEfdDVVO72P\n56I5RhRZcimnKBJeRT/TeGyOxyKlX570CAL2wf2CedaSsZ6zu014L8surrTw\nASC4l3lMNtPMQQOp3xN1gOH5ufXEgJgdgdQBs6f9zdQ9GSyvbwsAVzyabUsK\n/qLfwdTJoFI5gddyPx2OKOaiCFVEUpsm+lnF3hDUsdijM6iGpV7bFohY1xqd\nxJNoN8I5Q3TJoBzUg5OQr49SVS7drx51Ggdz+/+/NmkIDCgYnN4GVOv7VVOp\nW/HIt37vOCzumMWRPQG/sedzLhSIR8yUQNbrhDqnj0EI0tPEw6p0bfd2Y3Ma\nKGIWadi/2/XjavgcL9pfotL/POslMaNtupJsQ0XrRhKpZSvXsMiq5mxOwXPF\nv2SQgKiALHIWCef8i6dHCdOQd2jKSr9XzZ/0Qov0X58AKP5YfFfS2fejY42z\nItZPerHgo/cuL0S24FlxExSf79xXxVuo/TDRtdDC7dtboU3+WxQzZPi2z1o8\ng/5tAdKweBF2WrXwft1mpOYGBkKu1buOkSUYJ97suDzb3pu/xHAz660FBWKc\nWLuILnxKQWIQv+bpN6DzJdhgaM8U2FEvCNEzc3liK4lFvwQaT4o9uGYPCP1K\nhdIsrJXbGQbdOsNuTEZYyuAAfwPQOZgd36s7JvDfxA9fNP+F99/I7kczLIHh\n0omV\r\n=/pZK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"dff86dfc651ea5951da7b64cf39263a6f0c30577","private":false,"scripts":{"test":"jest","build":"tsc --project tsconfig.local.json","linter":"eslint --fix src __mocks__","prepare":"bash ./.huskyrc.sh && husky install","prepublish":"npm run-script build","test:debug":"node --inspect-brk node_modules/.bin/jest --runInBand"},"_npmUser":{"name":"aircall-ci","email":"dev@aircall.io"},"repository":{"url":"git+https://github.com/aircall/aircall-expression-parser.git","type":"git"},"_npmVersion":"7.10.0","description":"Transforms strings with escaping expression templates, evaluating the expressions and returning a new string or the value evaluated from the expression","directories":{},"_nodeVersion":"14.16.0","dependencies":{"js-x-ray":"^3.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","faker":"^5.5.3","husky":"^6.0.0","eslint":"^7.28.0","ts-jest":"^27.0.3","prettier":"^2.3.1","typescript":"^4.3.4","@types/jest":"^26.0.23","lint-staged":"^11.0.0","@types/faker":"^5.5.6","@commitlint/cli":"^12.1.4","eslint-plugin-tsdoc":"^0.2.14","eslint-plugin-import":"^2.23.4","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@typescript-eslint/parser":"^4.27.0","@commitlint/config-angular":"^12.1.4","@typescript-eslint/eslint-plugin":"^4.27.0","eslint-plugin-simple-import-sort":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/expression-parser_1.0.4_1644402268532_0.7642216114710745","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-06-30T10:18:12.200Z","modified":"2025-11-25T15:18:28.526Z","1.0.0":"2021-06-30T10:18:12.623Z","1.0.1":"2021-06-30T10:26:08.824Z","1.0.2":"2021-06-30T10:45:49.582Z","1.0.3":"2022-02-09T09:49:55.386Z","1.0.4":"2022-02-09T10:24:28.662Z"},"bugs":{"url":"https://github.com/aircall/aircall-expression-parser/issues"},"author":{"name":"Aircall"},"license":"MIT","homepage":"https://github.com/aircall/aircall-expression-parser#readme","repository":{"url":"git+https://github.com/aircall/aircall-expression-parser.git","type":"git"},"description":"Transforms strings with escaping expression templates, evaluating the expressions and returning a new string or the value evaluated from the expression","maintainers":[{"email":"dev@aircall.io","name":"aircall-ci"}],"readme":"# expression-parser\n\nResolves templated expressions in a secure local scope.\n\n## `resolveExpression` function\n\nArguments:\n\n- `expression`: expression templated string\n- `context` (optional): context from where to resolve expressions\n- `options` (optional): parser options:\n  - `passContextToEmptyFunctions?: boolean` (default `true`): Allow to pass the context object into\n    empty functions calls in single expression strings. Anonymous functions are not supported\n  - `transformArrayNegativeIndex?: boolean` (default `true`): Allow and parse negative indexes\n    correctly\n\nExample:\n\n```TypeScript\nimport { resolveExpression } from '@aircall/expression-parser'\n\nconst template = 'Start: ${variable.start}, End ${variable.end}'\nconst context = {\n  start: '09:00',\n  end: '12:00',\n}\n\nresolveExpression(template, context);\n// returns 'Start: 09:00, End 12:00'\n```\n\nThere are some use cases in the [E2E tests](src/__tests__/e2e/parser.e2e.ts)\n\n### Default expression handling\n\nDefault expressions come in the form of `${<JavaScript code to evaluate>}`. The templates are\ndelimited with `${` and `}` strings and all the JavaScript code inside will be evaluated. If there\nis more than one expression or there is some text around the template, it will return a string\nevaluating all of them.\n\nFor example, with this context:\n\n```JavaScript\n{\n  content: {\n    input: 2,\n    id: 'operation',\n    executionId: 1234,\n  },\n  environment: {\n    variables: {\n      input: 1,\n      inputArray: [1, 2, 3],\n      inputObject: {\n        'spaced name': 'name'\n      },\n      getInput: (context) => {\n        return context.environment.variables.input;\n      },\n      isBelow: (a, b) => a < b,\n    commonVariablePrefix: \"a\",\n    current: 2,\n  },\n}\n```\n\nThe following expressions are supported:\n\n| Template                                                   | Result                                 | More information                                                                |\n| ---------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------- |\n| `${environment.variables.input}`                           | `1`                                    |                                                                                 |\n| `${environment.variables.inputArray[0]}`                   | `1`                                    | resolves to first item of the variable input array                              |\n| `${environment.variables.inputArray[-1]}`                  | `3`                                    | resolves to last item of the variable input array                               |\n| `${environment.variables.inputObject['spaced name']}`      | `'name'`                               | resolves to the variable input object property `spaced name`                    |\n| `${environment.services.getInput()}`                       | `1`                                    | executes the service function `getInput` with the context passed as an argument |\n| `${environment.services.getInput}`                         | `Function getInput()`                  | returns the service function                                                    |\n| `${environment.services.isBelow(content.input,2)}`         | `false`                                | executes the service function `isBelow` with `content.input` value and 2        |\n| `I, ${content.id}, execute with id ${content.executionId}` | `'I, operation, execute with id 1234'` | formats a string getting content object values                                  |\n| `${true}`                                                  | `true`                                 |                                                                                 |\n| `${false}`                                                 | `false`                                |                                                                                 |\n| `${null}`                                                  | `null`                                 |                                                                                 |\n| `${undefined}`                                             | `undefined`                            |                                                                                 |\n| `${<number>}`                                              | `<number>`                             | returns the number passed                                                       |\n| `${() => {}}`                                              | `() => {}`                             | returns the lambda function                                                     |\n\n> It is possible to nest multiple expressions if you write them in proper JavaScript code. For\n> example:\n>\n> Given this context:\n>\n> ```JavaScript\n> {\n>   environment: {\n>     variables: {\n>       a1: (v) => `method a1: ${v}`,\n>       a2: (v) => `method a2: ${v}`,\n>       a3: (v) => `method a3: ${v}`,\n>     },\n>     commonVariablePrefix: \"a\",\n>     current: 2,\n>   },\n> };\n> ```\n>\n> The expression\n>\n> ```JavaScript\n>  ${environment.variables[`${environment.commonVariablePrefix}${environment.current}`]}\n> ```\n>\n> returns the function:\n>\n> ```JavaScript\n> (v) => `method a2: ${v}`\n> ```\n","readmeFilename":"README.md"}