🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@elementor/env

Package Overview
Dependencies
Maintainers
7
Versions
891
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@elementor/env - npm Package Compare versions

Comparing version
0.2.0
to
0.3.0
+20
CHANGELOG.md
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# 0.3.0 (2023-09-11)
### Features
* **env:** mark experimental functions [ED-12072] ([#115](https://github.com/elementor/elementor-packages/issues/115)) ([e5b1b4a](https://github.com/elementor/elementor-packages/commit/e5b1b4ab2c5c14fc77fc25d9fe86108756e26441))
# 0.2.0 (2023-05-09)
### Features
* **env:** support consuming environment variables in packages [ED-10161] ([#26](https://github.com/elementor/elementor-packages/issues/26)) ([dd811ff](https://github.com/elementor/elementor-packages/commit/dd811ff71e43bf998ee07c6e1f380a379874a7fd))
declare function initEnv(env: Record<string, object>): void;
declare function __resetEnv(): void;
declare function parseEnv<TEnv extends object = object>(key: string, parseFn?: (envData: object) => TEnv): {
validateEnv: () => void;
env: TEnv;
};
declare class InvalidEnvError extends Error {
}
export { InvalidEnvError, __resetEnv, initEnv, parseEnv };
+2
-2
declare function initEnv(env: Record<string, object>): void;
declare function resetEnv(): void;
declare function __resetEnv(): void;
declare function parseEnv<TEnv extends object = object>(key: string, parseFn?: (envData: object) => TEnv): {

@@ -10,2 +10,2 @@ validateEnv: () => void;

export { InvalidEnvError, initEnv, parseEnv, resetEnv };
export { InvalidEnvError, __resetEnv, initEnv, parseEnv };

@@ -24,5 +24,5 @@ "use strict";

InvalidEnvError: () => InvalidEnvError,
__resetEnv: () => __resetEnv,
initEnv: () => initEnv,
parseEnv: () => parseEnv,
resetEnv: () => resetEnv
parseEnv: () => parseEnv
});

@@ -34,3 +34,3 @@ module.exports = __toCommonJS(src_exports);

}
function resetEnv() {
function __resetEnv() {
globalEnv = null;

@@ -92,6 +92,6 @@ }

InvalidEnvError,
__resetEnv,
initEnv,
parseEnv,
resetEnv
parseEnv
});
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/index.ts"],"sourcesContent":["let globalEnv: Record<string, object> | null = null;\n\nexport function initEnv( env: Record<string, object> ) {\n\tglobalEnv = env;\n}\n\nexport function resetEnv() {\n\tglobalEnv = null;\n}\n\nexport function parseEnv<TEnv extends object = object>(\n\tkey: string,\n\tparseFn: ( envData: object ) => TEnv = ( rawSettings: object ) => rawSettings as TEnv,\n) {\n\tlet parsedEnv: TEnv = {} as TEnv;\n\tlet isParsed = false;\n\n\t// Proxy the exposed object so users will be able to access the properties\n\t// as if it was a plain object, while still having automatic parsing.\n\tconst proxiedEnv = new Proxy( parsedEnv, {\n\t\tget( target, property ) {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn parsedEnv[ property as keyof TEnv ];\n\t\t},\n\t\townKeys() {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn Reflect.ownKeys( parsedEnv );\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t};\n\t\t},\n\t} );\n\n\tconst parse = () => {\n\t\ttry {\n\t\t\tconst env = globalEnv?.[ key ];\n\n\t\t\tif ( ! env ) {\n\t\t\t\tthrow new InvalidEnvError( `Settings object not found` );\n\t\t\t}\n\n\t\t\tif ( typeof env !== 'object' ) {\n\t\t\t\tthrow new InvalidEnvError( `Expected settings to be \\`object\\`, but got \\`${ typeof env }\\`` );\n\t\t\t}\n\n\t\t\tparsedEnv = parseFn( env );\n\t\t} catch ( e ) {\n\t\t\t// If something in the validation goes wrong, we return an empty object instead of throwing,\n\t\t\t// so it'll fail in the component level rather than the module level.\n\t\t\tif ( e instanceof InvalidEnvError ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn( `${ key } - ${ e.message }` );\n\n\t\t\t\tparsedEnv = {} as TEnv;\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t} finally {\n\t\t\tisParsed = true;\n\t\t}\n\t};\n\n\treturn {\n\t\tvalidateEnv: parse,\n\t\tenv: proxiedEnv,\n\t};\n}\n\nexport class InvalidEnvError extends Error {}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAI,YAA2C;AAExC,SAAS,QAAS,KAA8B;AACtD,cAAY;AACb;AAEO,SAAS,WAAW;AAC1B,cAAY;AACb;AAEO,SAAS,SACf,KACA,UAAuC,CAAE,gBAAyB,aACjE;AACD,MAAI,YAAkB,CAAC;AACvB,MAAI,WAAW;AAIf,QAAM,aAAa,IAAI,MAAO,WAAW;AAAA,IACxC,IAAK,QAAQ,UAAW;AACvB,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,UAAW,QAAuB;AAAA,IAC1C;AAAA,IACA,UAAU;AACT,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,QAAQ,QAAS,SAAU;AAAA,IACnC;AAAA,IACA,2BAA2B;AAC1B,aAAO;AAAA,QACN,cAAc;AAAA,QACd,YAAY;AAAA,MACb;AAAA,IACD;AAAA,EACD,CAAE;AAEF,QAAM,QAAQ,MAAM;AACnB,QAAI;AACH,YAAM,MAAM,YAAa,GAAI;AAE7B,UAAK,CAAE,KAAM;AACZ,cAAM,IAAI,gBAAiB,2BAA4B;AAAA,MACxD;AAEA,UAAK,OAAO,QAAQ,UAAW;AAC9B,cAAM,IAAI,gBAAiB,iDAAkD,OAAO,OAAS;AAAA,MAC9F;AAEA,kBAAY,QAAS,GAAI;AAAA,IAC1B,SAAU,GAAR;AAGD,UAAK,aAAa,iBAAkB;AAEnC,gBAAQ,KAAM,GAAI,SAAW,EAAE,SAAW;AAE1C,oBAAY,CAAC;AAAA,MACd,OAAO;AACN,cAAM;AAAA,MACP;AAAA,IACD,UAAE;AACD,iBAAW;AAAA,IACZ;AAAA,EACD;AAEA,SAAO;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EACN;AACD;AAEO,IAAM,kBAAN,cAA8B,MAAM;AAAC;","names":[]}
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["let globalEnv: Record<string, object> | null = null;\n\nexport function initEnv( env: Record<string, object> ) {\n\tglobalEnv = env;\n}\n\nexport function __resetEnv() {\n\tglobalEnv = null;\n}\n\nexport function parseEnv<TEnv extends object = object>(\n\tkey: string,\n\tparseFn: ( envData: object ) => TEnv = ( rawSettings: object ) => rawSettings as TEnv,\n) {\n\tlet parsedEnv: TEnv = {} as TEnv;\n\tlet isParsed = false;\n\n\t// Proxy the exposed object so users will be able to access the properties\n\t// as if it was a plain object, while still having automatic parsing.\n\tconst proxiedEnv = new Proxy( parsedEnv, {\n\t\tget( target, property ) {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn parsedEnv[ property as keyof TEnv ];\n\t\t},\n\t\townKeys() {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn Reflect.ownKeys( parsedEnv );\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t};\n\t\t},\n\t} );\n\n\tconst parse = () => {\n\t\ttry {\n\t\t\tconst env = globalEnv?.[ key ];\n\n\t\t\tif ( ! env ) {\n\t\t\t\tthrow new InvalidEnvError( `Settings object not found` );\n\t\t\t}\n\n\t\t\tif ( typeof env !== 'object' ) {\n\t\t\t\tthrow new InvalidEnvError( `Expected settings to be \\`object\\`, but got \\`${ typeof env }\\`` );\n\t\t\t}\n\n\t\t\tparsedEnv = parseFn( env );\n\t\t} catch ( e ) {\n\t\t\t// If something in the validation goes wrong, we return an empty object instead of throwing,\n\t\t\t// so it'll fail in the component level rather than the module level.\n\t\t\tif ( e instanceof InvalidEnvError ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn( `${ key } - ${ e.message }` );\n\n\t\t\t\tparsedEnv = {} as TEnv;\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t} finally {\n\t\t\tisParsed = true;\n\t\t}\n\t};\n\n\treturn {\n\t\tvalidateEnv: parse,\n\t\tenv: proxiedEnv,\n\t};\n}\n\nexport class InvalidEnvError extends Error {}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAI,YAA2C;AAExC,SAAS,QAAS,KAA8B;AACtD,cAAY;AACb;AAEO,SAAS,aAAa;AAC5B,cAAY;AACb;AAEO,SAAS,SACf,KACA,UAAuC,CAAE,gBAAyB,aACjE;AACD,MAAI,YAAkB,CAAC;AACvB,MAAI,WAAW;AAIf,QAAM,aAAa,IAAI,MAAO,WAAW;AAAA,IACxC,IAAK,QAAQ,UAAW;AACvB,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,UAAW,QAAuB;AAAA,IAC1C;AAAA,IACA,UAAU;AACT,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,QAAQ,QAAS,SAAU;AAAA,IACnC;AAAA,IACA,2BAA2B;AAC1B,aAAO;AAAA,QACN,cAAc;AAAA,QACd,YAAY;AAAA,MACb;AAAA,IACD;AAAA,EACD,CAAE;AAEF,QAAM,QAAQ,MAAM;AACnB,QAAI;AACH,YAAM,MAAM,YAAa,GAAI;AAE7B,UAAK,CAAE,KAAM;AACZ,cAAM,IAAI,gBAAiB,2BAA4B;AAAA,MACxD;AAEA,UAAK,OAAO,QAAQ,UAAW;AAC9B,cAAM,IAAI,gBAAiB,iDAAkD,OAAO,GAAI,IAAK;AAAA,MAC9F;AAEA,kBAAY,QAAS,GAAI;AAAA,IAC1B,SAAU,GAAI;AAGb,UAAK,aAAa,iBAAkB;AAEnC,gBAAQ,KAAM,GAAI,GAAI,MAAO,EAAE,OAAQ,EAAG;AAE1C,oBAAY,CAAC;AAAA,MACd,OAAO;AACN,cAAM;AAAA,MACP;AAAA,IACD,UAAE;AACD,iBAAW;AAAA,IACZ;AAAA,EACD;AAEA,SAAO;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EACN;AACD;AAEO,IAAM,kBAAN,cAA8B,MAAM;AAAC;","names":[]}

@@ -6,3 +6,3 @@ // src/index.ts

}
function resetEnv() {
function __resetEnv() {
globalEnv = null;

@@ -63,6 +63,6 @@ }

InvalidEnvError,
__resetEnv,
initEnv,
parseEnv,
resetEnv
parseEnv
};
//# sourceMappingURL=index.mjs.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/index.ts"],"sourcesContent":["let globalEnv: Record<string, object> | null = null;\n\nexport function initEnv( env: Record<string, object> ) {\n\tglobalEnv = env;\n}\n\nexport function resetEnv() {\n\tglobalEnv = null;\n}\n\nexport function parseEnv<TEnv extends object = object>(\n\tkey: string,\n\tparseFn: ( envData: object ) => TEnv = ( rawSettings: object ) => rawSettings as TEnv,\n) {\n\tlet parsedEnv: TEnv = {} as TEnv;\n\tlet isParsed = false;\n\n\t// Proxy the exposed object so users will be able to access the properties\n\t// as if it was a plain object, while still having automatic parsing.\n\tconst proxiedEnv = new Proxy( parsedEnv, {\n\t\tget( target, property ) {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn parsedEnv[ property as keyof TEnv ];\n\t\t},\n\t\townKeys() {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn Reflect.ownKeys( parsedEnv );\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t};\n\t\t},\n\t} );\n\n\tconst parse = () => {\n\t\ttry {\n\t\t\tconst env = globalEnv?.[ key ];\n\n\t\t\tif ( ! env ) {\n\t\t\t\tthrow new InvalidEnvError( `Settings object not found` );\n\t\t\t}\n\n\t\t\tif ( typeof env !== 'object' ) {\n\t\t\t\tthrow new InvalidEnvError( `Expected settings to be \\`object\\`, but got \\`${ typeof env }\\`` );\n\t\t\t}\n\n\t\t\tparsedEnv = parseFn( env );\n\t\t} catch ( e ) {\n\t\t\t// If something in the validation goes wrong, we return an empty object instead of throwing,\n\t\t\t// so it'll fail in the component level rather than the module level.\n\t\t\tif ( e instanceof InvalidEnvError ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn( `${ key } - ${ e.message }` );\n\n\t\t\t\tparsedEnv = {} as TEnv;\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t} finally {\n\t\t\tisParsed = true;\n\t\t}\n\t};\n\n\treturn {\n\t\tvalidateEnv: parse,\n\t\tenv: proxiedEnv,\n\t};\n}\n\nexport class InvalidEnvError extends Error {}\n"],"mappings":";AAAA,IAAI,YAA2C;AAExC,SAAS,QAAS,KAA8B;AACtD,cAAY;AACb;AAEO,SAAS,WAAW;AAC1B,cAAY;AACb;AAEO,SAAS,SACf,KACA,UAAuC,CAAE,gBAAyB,aACjE;AACD,MAAI,YAAkB,CAAC;AACvB,MAAI,WAAW;AAIf,QAAM,aAAa,IAAI,MAAO,WAAW;AAAA,IACxC,IAAK,QAAQ,UAAW;AACvB,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,UAAW,QAAuB;AAAA,IAC1C;AAAA,IACA,UAAU;AACT,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,QAAQ,QAAS,SAAU;AAAA,IACnC;AAAA,IACA,2BAA2B;AAC1B,aAAO;AAAA,QACN,cAAc;AAAA,QACd,YAAY;AAAA,MACb;AAAA,IACD;AAAA,EACD,CAAE;AAEF,QAAM,QAAQ,MAAM;AACnB,QAAI;AACH,YAAM,MAAM,YAAa,GAAI;AAE7B,UAAK,CAAE,KAAM;AACZ,cAAM,IAAI,gBAAiB,2BAA4B;AAAA,MACxD;AAEA,UAAK,OAAO,QAAQ,UAAW;AAC9B,cAAM,IAAI,gBAAiB,iDAAkD,OAAO,OAAS;AAAA,MAC9F;AAEA,kBAAY,QAAS,GAAI;AAAA,IAC1B,SAAU,GAAR;AAGD,UAAK,aAAa,iBAAkB;AAEnC,gBAAQ,KAAM,GAAI,SAAW,EAAE,SAAW;AAE1C,oBAAY,CAAC;AAAA,MACd,OAAO;AACN,cAAM;AAAA,MACP;AAAA,IACD,UAAE;AACD,iBAAW;AAAA,IACZ;AAAA,EACD;AAEA,SAAO;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EACN;AACD;AAEO,IAAM,kBAAN,cAA8B,MAAM;AAAC;","names":[]}
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["let globalEnv: Record<string, object> | null = null;\n\nexport function initEnv( env: Record<string, object> ) {\n\tglobalEnv = env;\n}\n\nexport function __resetEnv() {\n\tglobalEnv = null;\n}\n\nexport function parseEnv<TEnv extends object = object>(\n\tkey: string,\n\tparseFn: ( envData: object ) => TEnv = ( rawSettings: object ) => rawSettings as TEnv,\n) {\n\tlet parsedEnv: TEnv = {} as TEnv;\n\tlet isParsed = false;\n\n\t// Proxy the exposed object so users will be able to access the properties\n\t// as if it was a plain object, while still having automatic parsing.\n\tconst proxiedEnv = new Proxy( parsedEnv, {\n\t\tget( target, property ) {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn parsedEnv[ property as keyof TEnv ];\n\t\t},\n\t\townKeys() {\n\t\t\tif ( ! isParsed ) {\n\t\t\t\tparse();\n\t\t\t}\n\n\t\t\treturn Reflect.ownKeys( parsedEnv );\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t};\n\t\t},\n\t} );\n\n\tconst parse = () => {\n\t\ttry {\n\t\t\tconst env = globalEnv?.[ key ];\n\n\t\t\tif ( ! env ) {\n\t\t\t\tthrow new InvalidEnvError( `Settings object not found` );\n\t\t\t}\n\n\t\t\tif ( typeof env !== 'object' ) {\n\t\t\t\tthrow new InvalidEnvError( `Expected settings to be \\`object\\`, but got \\`${ typeof env }\\`` );\n\t\t\t}\n\n\t\t\tparsedEnv = parseFn( env );\n\t\t} catch ( e ) {\n\t\t\t// If something in the validation goes wrong, we return an empty object instead of throwing,\n\t\t\t// so it'll fail in the component level rather than the module level.\n\t\t\tif ( e instanceof InvalidEnvError ) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn( `${ key } - ${ e.message }` );\n\n\t\t\t\tparsedEnv = {} as TEnv;\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t} finally {\n\t\t\tisParsed = true;\n\t\t}\n\t};\n\n\treturn {\n\t\tvalidateEnv: parse,\n\t\tenv: proxiedEnv,\n\t};\n}\n\nexport class InvalidEnvError extends Error {}\n"],"mappings":";AAAA,IAAI,YAA2C;AAExC,SAAS,QAAS,KAA8B;AACtD,cAAY;AACb;AAEO,SAAS,aAAa;AAC5B,cAAY;AACb;AAEO,SAAS,SACf,KACA,UAAuC,CAAE,gBAAyB,aACjE;AACD,MAAI,YAAkB,CAAC;AACvB,MAAI,WAAW;AAIf,QAAM,aAAa,IAAI,MAAO,WAAW;AAAA,IACxC,IAAK,QAAQ,UAAW;AACvB,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,UAAW,QAAuB;AAAA,IAC1C;AAAA,IACA,UAAU;AACT,UAAK,CAAE,UAAW;AACjB,cAAM;AAAA,MACP;AAEA,aAAO,QAAQ,QAAS,SAAU;AAAA,IACnC;AAAA,IACA,2BAA2B;AAC1B,aAAO;AAAA,QACN,cAAc;AAAA,QACd,YAAY;AAAA,MACb;AAAA,IACD;AAAA,EACD,CAAE;AAEF,QAAM,QAAQ,MAAM;AACnB,QAAI;AACH,YAAM,MAAM,YAAa,GAAI;AAE7B,UAAK,CAAE,KAAM;AACZ,cAAM,IAAI,gBAAiB,2BAA4B;AAAA,MACxD;AAEA,UAAK,OAAO,QAAQ,UAAW;AAC9B,cAAM,IAAI,gBAAiB,iDAAkD,OAAO,GAAI,IAAK;AAAA,MAC9F;AAEA,kBAAY,QAAS,GAAI;AAAA,IAC1B,SAAU,GAAI;AAGb,UAAK,aAAa,iBAAkB;AAEnC,gBAAQ,KAAM,GAAI,GAAI,MAAO,EAAE,OAAQ,EAAG;AAE1C,oBAAY,CAAC;AAAA,MACd,OAAO;AACN,cAAM;AAAA,MACP;AAAA,IACD,UAAE;AACD,iBAAW;AAAA,IACZ;AAAA,EACD;AAEA,SAAO;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EACN;AACD;AAEO,IAAM,kBAAN,cAA8B,MAAM;AAAC;","names":[]}
{
"name": "@elementor/env",
"version": "0.2.0",
"version": "0.3.0",
"private": false,

@@ -34,3 +34,3 @@ "author": "Elementor Team",

},
"gitHead": "f93a1ed5350b151f17d65b21b0b43398774dccc5"
"gitHead": "7dc3971d2dd061848d6547aa2caed8332e7b9167"
}
# Env
> **Warning**
>
> [!WARNING]
> This package is under development and not ready for production use.

@@ -1,2 +0,2 @@

import { initEnv, InvalidEnvError, parseEnv, resetEnv } from '../index';
import { initEnv, InvalidEnvError, parseEnv, __resetEnv } from '../index';

@@ -6,3 +6,3 @@ describe( '@elementor/env', () => {

// Arrange.
resetEnv();
__resetEnv();

@@ -9,0 +9,0 @@ // Act.

@@ -7,3 +7,3 @@ let globalEnv: Record<string, object> | null = null;

export function resetEnv() {
export function __resetEnv() {
globalEnv = null;

@@ -10,0 +10,0 @@ }