Skip to content

HolliShake/envx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DTO-ENVX

A dynamic environment variable evaluator that compiles to bytecode (simple array of bytes or not 😄) with a custom language and vm.

Support

  • Vite support
  • Webpack support

Modes

  • production
  • staging
  • preview
  • development

File format

mode + .envx = mode.envx

example:

development.envx

Libraries tested

  • vue 3+ JS/TS (vite)
  • React JS/TS (vite)
  • Svelte JS/TS (vite)

Features

  • if/else statement
  • switch statement and expression
  • class declairation
  • function declairation
  • number
  • string
  • boolean
  • null
  • ternary
  • undefined
  • array
  • method call
  • function call
  • attribute access
  • index
  • object/hashmap
  • while loop
  • do-while loop
  • for loop
  • type prototypes for method
  • JS interoperability

How to use

/**** vite.config.js **/
// ...other imports
import envxPluginVite from 'dto-envx/vite'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    envxPluginVite()
  ]
});

/**** page.(vue | jsx | tsx) **/
import { envx, envxCall } from 'env:dto-envx'; // import 'env:dto-envx' instead of 'dto-envx'

// Get variable defined inside env file
envx("SOME_VARIABLE_DEFINED_INSIDE_ENV_FILE");

// Call function inside env file
envxCall("functionDefined", "arg0", "arg1");

Example code:

file: development.envx

var REACT_APP_API_URL="https://public-domain.com/api";

fn fact(n) {
    if (n <= 1) 
        return 1;
    return n * fact(n - 1);
}

fn add(a, b) {
    return a + b;
}

const PRIVATE_HASH = "qsdad123q3";

fn getHash() {
    return PRIVATE_HASH;
}

fn printArray(arr) {
    println(arr);
    return arr.toString();
}

Example code: Javascript interoperability

const { envx, envxCall } = require('dto-envx');

console.log("JS:>>", envx    ('REACT_APP_API_URL'));
console.log("JS:>>", envxCall("fact", 5));
console.log("JS:>>", envxCall("add" , 69, 420));
console.log("JS:>>", envx    ('PRIVATE_HASH')); // hidden private variable basta nag start sa 'PRIVATE_'
console.log("JS:>>", envxCall("getHash")); // Need ug getter para ma access ang private variable
console.log("JS:>>", envxCall("println", "From dto-envx :>>", 1, 2, 4, 5, 6, "Hello!"));
console.log("JS:>>", envxCall("printArray", [6,9,4,2,0]));

About

A dynamic environment variable evaluator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published