From bcaeedc2ac17997d4513de1b6e44dac23750bb3d Mon Sep 17 00:00:00 2001 From: Anders Bech Mellson <mellson@icloud.com> Date: Tue, 14 Nov 2023 16:28:01 +0100 Subject: [PATCH] Fix getting env variables from import.meta.env.SOME_KEY (#400) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix getting env variables from import.meta.env.SOME_KEY * remove double comment * tighten the check using AST tests --------- Co-authored-by: Mateusz BurzyĆski <mateuszburzynski@gmail.com> --- .changeset/nervous-vans-appear.md | 5 +++++ packages/machine-extractor/src/sky/skyConfigNode.ts | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .changeset/nervous-vans-appear.md diff --git a/.changeset/nervous-vans-appear.md b/.changeset/nervous-vans-appear.md new file mode 100644 index 00000000..6f5cd697 --- /dev/null +++ b/.changeset/nervous-vans-appear.md @@ -0,0 +1,5 @@ +--- +'@xstate/cli': patch +--- + +Fix getting env variables from import.meta.env.SOME_KEY diff --git a/packages/machine-extractor/src/sky/skyConfigNode.ts b/packages/machine-extractor/src/sky/skyConfigNode.ts index 3d24dde3..4f9e0b16 100644 --- a/packages/machine-extractor/src/sky/skyConfigNode.ts +++ b/packages/machine-extractor/src/sky/skyConfigNode.ts @@ -33,10 +33,13 @@ const StringLiteralOrEnvKey = unionType([ throw new Error("Couldn't find API key in any of the env files"); } - // Let's find the last part of the expression (identifier), e.g. `API_KEY` in `process.env.API_KEY` + // Let's find the env key, e.g. `API_KEY` in `process.env.API_KEY` or in `import.meta.env.API_KEY` const envVariableName = - (t.isMetaProperty(node.object) || - t.buildMatchMemberExpression('process.env')(node.object)) && + (t.buildMatchMemberExpression('process.env')(node.object) || + (t.isMemberExpression(node.object) && + t.isMetaProperty(node.object.object) && + t.isIdentifier(node.object.property) && + node.object.property.name === 'env')) && t.isIdentifier(node.property) ? node.property.name : null;