@shopify/cli
Version:
A CLI tool to build for the Shopify platform
9 lines (8 loc) • 7.18 kB
JavaScript
import{d as h}from"./chunk-M56NDIMD.js";import{Gb as V,Ib as T,Qb as $,Ta as N,ma as w}from"./chunk-N5PQPIBF.js";import{a as d,c as b,e as K,g as v}from"./chunk-VPRTJUIN.js";var O=b((H,L)=>{L.exports={name:"dotenv",version:"16.4.7",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var j=b((z,p)=>{v();var m=d("fs"),y=d("path"),Y=d("os"),R=d("crypto"),F=O(),_=F.version,P=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function S(e){let n={},r=e.toString();r=r.replace(/\r\n?/mg,`
`);let s;for(;(s=P.exec(r))!=null;){let a=s[1],t=s[2]||"";t=t.trim();let o=t[0];t=t.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),o==='"'&&(t=t.replace(/\\n/g,`
`),t=t.replace(/\\r/g,"\r")),n[a]=t}return n}function U(e){let n=A(e),r=c.configDotenv({path:n});if(!r.parsed){let o=new Error(`MISSING_DATA: Cannot parse ${n} for an unknown reason`);throw o.code="MISSING_DATA",o}let s=k(e).split(","),a=s.length,t;for(let o=0;o<a;o++)try{let i=s[o].trim(),l=q(r,i);t=c.decrypt(l.ciphertext,l.key);break}catch(i){if(o+1>=a)throw i}return c.parse(t)}function C(e){console.log(`[dotenv@${_}][INFO] ${e}`)}function M(e){console.log(`[dotenv@${_}][WARN] ${e}`)}function g(e){console.log(`[dotenv@${_}][DEBUG] ${e}`)}function k(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function q(e,n){let r;try{r=new URL(n)}catch(i){if(i.code==="ERR_INVALID_URL"){let l=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw l.code="INVALID_DOTENV_KEY",l}throw i}let s=r.password;if(!s){let i=new Error("INVALID_DOTENV_KEY: Missing key part");throw i.code="INVALID_DOTENV_KEY",i}let a=r.searchParams.get("environment");if(!a){let i=new Error("INVALID_DOTENV_KEY: Missing environment part");throw i.code="INVALID_DOTENV_KEY",i}let t=`DOTENV_VAULT_${a.toUpperCase()}`,o=e.parsed[t];if(!o){let i=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${t} in your .env.vault file.`);throw i.code="NOT_FOUND_DOTENV_ENVIRONMENT",i}return{ciphertext:o,key:s}}function A(e){let n=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(let r of e.path)m.existsSync(r)&&(n=r.endsWith(".vault")?r:`${r}.vault`);else n=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else n=y.resolve(process.cwd(),".env.vault");return m.existsSync(n)?n:null}function I(e){return e[0]==="~"?y.join(Y.homedir(),e.slice(1)):e}function B(e){C("Loading env from encrypted .env.vault");let n=c._parseVault(e),r=process.env;return e&&e.processEnv!=null&&(r=e.processEnv),c.populate(r,n,e),{parsed:n}}function W(e){let n=y.resolve(process.cwd(),".env"),r="utf8",s=!!(e&&e.debug);e&&e.encoding?r=e.encoding:s&&g("No encoding is specified. UTF-8 is used by default");let a=[n];if(e&&e.path)if(!Array.isArray(e.path))a=[I(e.path)];else{a=[];for(let l of e.path)a.push(I(l))}let t,o={};for(let l of a)try{let u=c.parse(m.readFileSync(l,{encoding:r}));c.populate(o,u,e)}catch(u){s&&g(`Failed to load ${l} ${u.message}`),t=u}let i=process.env;return e&&e.processEnv!=null&&(i=e.processEnv),c.populate(i,o,e),t?{parsed:o,error:t}:{parsed:o}}function G(e){if(k(e).length===0)return c.configDotenv(e);let n=A(e);return n?c._configVault(e):(M(`You set DOTENV_KEY but you are missing a .env.vault file at ${n}. Did you forget to build it?`),c.configDotenv(e))}function J(e,n){let r=Buffer.from(n.slice(-64),"hex"),s=Buffer.from(e,"base64"),a=s.subarray(0,12),t=s.subarray(-16);s=s.subarray(12,-16);try{let o=R.createDecipheriv("aes-256-gcm",r,a);return o.setAuthTag(t),`${o.update(s)}${o.final()}`}catch(o){let i=o instanceof RangeError,l=o.message==="Invalid key length",u=o.message==="Unsupported state or unable to authenticate data";if(i||l){let f=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw f.code="INVALID_DOTENV_KEY",f}else if(u){let f=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw f.code="DECRYPTION_FAILED",f}else throw o}}function Q(e,n,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof n!="object"){let t=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw t.code="OBJECT_REQUIRED",t}for(let t of Object.keys(n))Object.prototype.hasOwnProperty.call(e,t)?(a===!0&&(e[t]=n[t]),s&&g(a===!0?`"${t}" is already defined and WAS overwritten`:`"${t}" is already defined and was NOT overwritten`)):e[t]=n[t]}var c={configDotenv:W,_configVault:B,_parseVault:U,config:G,decrypt:J,parse:S,populate:Q};p.exports.configDotenv=c.configDotenv;p.exports._configVault=c._configVault;p.exports._parseVault=c._parseVault;p.exports.config=c.config;p.exports.decrypt=c.decrypt;p.exports.parse=c.parse;p.exports.populate=c.populate;p.exports=c});v();var x=K(j());async function re(e){if($(T`Reading the .env file at ${V.path(e)}`),!await N(e))throw new h(`The environment file at ${e} does not exist.`);let n=await w(e);return{path:e,variables:(0,x.parse)(n)}}function oe(e,n){let r=[],s=e===null?[]:e.split(`
`),a=[],t;for(let o of s){if(t){if(o.endsWith(t.quote)){let u=E(t.key,t.value+o.slice(0,-1),t.quote),f=n[t.key];f&&(a.push(t.key),u=E(t.key,f)),r.push(u),t=void 0}else t.value+=`${o}
`;continue}let i=o.match(/^([^=:#]+?)[=:](.*)/),l=o;if(i){let u=i[1].trim(),f=(i[2]??"").trim();if(/^["'`]/.test(f)&&!f.endsWith(f[0])){t={key:u,value:`${f.slice(1)}
`,quote:f[0]};continue}let D=n[u];D&&(a.push(u),l=E(u,D))}r.push(l)}if(t)throw new h(`Multi-line environment variable '${t.key}' is not properly enclosed.`);for(let[o,i]of Object.entries(n))a.includes(o)||r.push(E(o,i));return r.join(`
`)}function E(e,n,r){if(r)return`${e}=${r}${n}${r}`;if(n?.includes(`
`)){let s=['"',"'","`"].find(a=>!n.includes(a));if(!s)throw new h(`The environment file patch has an env value that can't be surrounded by quotes: ${n}`);return`${e}=${s}${n}${s}`}return`${e}=${n}`}export{re as a,oe as b,E as c};