diff --git a/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js b/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js index ba6b0e9e3..8c138c0af 100644 --- a/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js +++ b/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js @@ -26,7 +26,7 @@ const EnvironmentVariables = ({ environment, collection }) => { .required('Name cannot be empty') .matches( envVariableNameRegex, - 'Name contains invalid characters. Must only contain alphanumeric characters, "-" and "_"' + 'Name contains invalid characters. Must only contain alphanumeric characters, "-", "_", "." and cannot start with a digit.' ) .trim(), secret: Yup.boolean(), diff --git a/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js b/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js index 4f0177f75..dba6cf2a3 100644 --- a/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js +++ b/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js @@ -33,14 +33,9 @@ const VarsTable = ({ item, collection, vars, varType }) => { case 'name': { const value = e.target.value; - if (/^(?!\d).*$/.test(value) === false) { - toast.error('Variable names must not start with a number!'); - return; - } - if (envVariableNameRegex.test(value) === false) { toast.error( - 'Variable contains invalid character! Variables must only contain alpha-numeric characters, "-" and "_".' + 'Variable contains invalid characters! Variables must only contain alpha-numeric characters, "-", "_", "." and cannot start with a digit.' ); return; } diff --git a/packages/bruno-app/src/utils/common/regex.js b/packages/bruno-app/src/utils/common/regex.js index d55bb55b8..27838fa9f 100644 --- a/packages/bruno-app/src/utils/common/regex.js +++ b/packages/bruno-app/src/utils/common/regex.js @@ -1 +1 @@ -export const envVariableNameRegex = /^(?!\d)[\w-]*$/; +export const envVariableNameRegex = /^(?!\d)[\w-.]*$/; diff --git a/packages/bruno-electron/src/ipc/network/interpolate-vars.js b/packages/bruno-electron/src/ipc/network/interpolate-vars.js index 6df6a7c1a..4a709f5ae 100644 --- a/packages/bruno-electron/src/ipc/network/interpolate-vars.js +++ b/packages/bruno-electron/src/ipc/network/interpolate-vars.js @@ -43,7 +43,9 @@ const interpolateVars = (request, envVars = {}, collectionVariables = {}, proces return str; } - const template = Handlebars.compile(str, { noEscape: true }); + // Handlebars doesn't allow dots as identifiers, so we need to use literal segments + const strLiteralSegment = str.replace('{{', '{{[').replace('}}', ']}}'); + const template = Handlebars.compile(strLiteralSegment, { noEscape: true }); // collectionVariables take precedence over envVars const combinedVars = { diff --git a/packages/bruno-js/src/bru.js b/packages/bruno-js/src/bru.js index 4813a73db..367e1b42e 100644 --- a/packages/bruno-js/src/bru.js +++ b/packages/bruno-js/src/bru.js @@ -1,7 +1,7 @@ const Handlebars = require('handlebars'); const { cloneDeep } = require('lodash'); -const envVariableNameRegex = /^(?!\d)[\w-]*$/; +const envVariableNameRegex = /^(?!\d)[\w-.]*$/; class Bru { constructor(envVariables, collectionVariables, processEnvVars, collectionPath) { @@ -64,7 +64,7 @@ class Bru { if (envVariableNameRegex.test(key) === false) { throw new Error( `Variable name: "${key}" contains invalid characters!` + - ' Names must only contain alpha-numeric characters, "-", "_" and cannot start with a digit.' + ' Names must only contain alpha-numeric characters, "-", "_", "." and cannot start with a digit.' ); } @@ -75,7 +75,7 @@ class Bru { if (envVariableNameRegex.test(key) === false) { throw new Error( `Variable name: "${key}" contains invalid characters!` + - ' Names must only contain alpha-numeric characters and cannot start with a digit.' + ' Names must only contain alpha-numeric characters, "-", "_", "." and cannot start with a digit.' ); }