@sebspark/environment 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -4,6 +4,9 @@ declare const initEnvironment: <T extends Record<string, string>>() => T & {
4
4
  } & {
5
5
  [key: string]: string;
6
6
  };
7
+ declare const initSecretStore: <T extends Record<string, string>>() => T & {
8
+ [key: string]: string;
9
+ };
7
10
  //#endregion
8
- export { initEnvironment };
11
+ export { initEnvironment, initSecretStore };
9
12
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";cAEa,eAAA,aAA6B,MAAA,uBAiCnC,CAAA;EAAM,QAAA,EAAU,OAAA,CAAQ,CAAA;AAAA;EAAA,CAAU,GAAA;AAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";cAGa,eAAA,aAA6B,MAAA,uBAiCnC,CAAA;EAAM,QAAA,EAAU,OAAA,CAAQ,CAAA;AAAA;EAAA,CAAU,GAAA;AAAA;AAAA,cAG5B,eAAA,aAA6B,MAAA,uBAoBnC,CAAA;EAAA,CAAO,GAAA;AAAA"}
package/dist/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import assert from "node:assert";
2
+ import { readFileSync } from "node:fs";
2
3
  //#region src/index.ts
3
4
  const initEnvironment = () => {
4
5
  const environmentCache = {};
@@ -18,7 +19,20 @@ const initEnvironment = () => {
18
19
  return environmentCache[key];
19
20
  } });
20
21
  };
22
+ const initSecretStore = () => {
23
+ const secretCache = {};
24
+ return new Proxy({}, { get(_, k) {
25
+ const key = k;
26
+ if (key in secretCache) return secretCache[key];
27
+ try {
28
+ secretCache[key] = readFileSync(key, "utf-8").trim();
29
+ return secretCache[key];
30
+ } catch (err) {
31
+ throw new Error(`Secret ${key} is required`);
32
+ }
33
+ } });
34
+ };
21
35
  //#endregion
22
- export { initEnvironment };
36
+ export { initEnvironment, initSecretStore };
23
37
 
24
38
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import assert from 'node:assert'\n\nexport const initEnvironment = <T extends Record<string, string>>() => {\n const environmentCache: Record<string, string | undefined> = {}\n\n return new Proxy(\n {},\n {\n get(_, k: keyof T | 'optional' | string | symbol) {\n const key = k as string\n if (key === 'optional') {\n return new Proxy(\n {},\n {\n get(_, k: keyof T | string | symbol) {\n const key = k as string\n if (key in environmentCache) {\n return environmentCache[key]\n }\n const { [key]: value } = process.env\n environmentCache[key] = value\n return environmentCache[key]\n },\n }\n ) as T\n }\n if (key in environmentCache) {\n return environmentCache[key]\n }\n const { [key]: value } = process.env\n assert(value, `${key} is required`)\n environmentCache[key] = value\n return environmentCache[key]\n },\n }\n ) as T & { optional: Partial<T> } & { [key: string]: string }\n}\n"],"mappings":";;AAEA,MAAa,wBAA0D;CACrE,MAAM,mBAAuD,EAAE;AAE/D,QAAO,IAAI,MACT,EAAE,EACF,EACE,IAAI,GAAG,GAA2C;EAChD,MAAM,MAAM;AACZ,MAAI,QAAQ,WACV,QAAO,IAAI,MACT,EAAE,EACF,EACE,IAAI,GAAG,GAA8B;GACnC,MAAM,MAAM;AACZ,OAAI,OAAO,iBACT,QAAO,iBAAiB;GAE1B,MAAM,GAAG,MAAM,UAAU,QAAQ;AACjC,oBAAiB,OAAO;AACxB,UAAO,iBAAiB;KAE3B,CACF;AAEH,MAAI,OAAO,iBACT,QAAO,iBAAiB;EAE1B,MAAM,GAAG,MAAM,UAAU,QAAQ;AACjC,SAAO,OAAO,GAAG,IAAI,cAAc;AACnC,mBAAiB,OAAO;AACxB,SAAO,iBAAiB;IAE3B,CACF"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["import assert from 'node:assert'\nimport { readFileSync } from 'node:fs'\n\nexport const initEnvironment = <T extends Record<string, string>>() => {\n const environmentCache: Record<string, string | undefined> = {}\n\n return new Proxy(\n {},\n {\n get(_, k: keyof T | 'optional' | string | symbol) {\n const key = k as string\n if (key === 'optional') {\n return new Proxy(\n {},\n {\n get(_, k: keyof T | string | symbol) {\n const key = k as string\n if (key in environmentCache) {\n return environmentCache[key]\n }\n const { [key]: value } = process.env\n environmentCache[key] = value\n return environmentCache[key]\n },\n }\n ) as T\n }\n if (key in environmentCache) {\n return environmentCache[key]\n }\n const { [key]: value } = process.env\n assert(value, `${key} is required`)\n environmentCache[key] = value\n return environmentCache[key]\n },\n }\n ) as T & { optional: Partial<T> } & { [key: string]: string }\n}\n\nexport const initSecretStore = <T extends Record<string, string>>() => {\n const secretCache: Record<string, string | undefined> = {}\n\n return new Proxy(\n {},\n {\n get(_, k: keyof T | string | symbol) {\n const key = k as string\n if (key in secretCache) {\n return secretCache[key]\n }\n try {\n const value = readFileSync(key, 'utf-8').trim()\n secretCache[key] = value\n return secretCache[key]\n } catch (err) {\n throw new Error(`Secret ${key} is required`)\n }\n },\n }\n ) as T & { [key: string]: string }\n}\n"],"mappings":";;;AAGA,MAAa,wBAA0D;CACrE,MAAM,mBAAuD,EAAE;CAE/D,OAAO,IAAI,MACT,EAAE,EACF,EACE,IAAI,GAAG,GAA2C;EAChD,MAAM,MAAM;EACZ,IAAI,QAAQ,YACV,OAAO,IAAI,MACT,EAAE,EACF,EACE,IAAI,GAAG,GAA8B;GACnC,MAAM,MAAM;GACZ,IAAI,OAAO,kBACT,OAAO,iBAAiB;GAE1B,MAAM,GAAG,MAAM,UAAU,QAAQ;GACjC,iBAAiB,OAAO;GACxB,OAAO,iBAAiB;KAE3B,CACF;EAEH,IAAI,OAAO,kBACT,OAAO,iBAAiB;EAE1B,MAAM,GAAG,MAAM,UAAU,QAAQ;EACjC,OAAO,OAAO,GAAG,IAAI,cAAc;EACnC,iBAAiB,OAAO;EACxB,OAAO,iBAAiB;IAE3B,CACF;;AAGH,MAAa,wBAA0D;CACrE,MAAM,cAAkD,EAAE;CAE1D,OAAO,IAAI,MACT,EAAE,EACF,EACE,IAAI,GAAG,GAA8B;EACnC,MAAM,MAAM;EACZ,IAAI,OAAO,aACT,OAAO,YAAY;EAErB,IAAI;GAEF,YAAY,OADE,aAAa,KAAK,QAAQ,CAAC,MACjB;GACxB,OAAO,YAAY;WACZ,KAAK;GACZ,MAAM,IAAI,MAAM,UAAU,IAAI,cAAc;;IAGjD,CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sebspark/environment",
3
- "version": "0.0.3",
3
+ "version": "0.1.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",