@taqueria/toolkit 0.28.0 → 0.28.1-beta

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/bin/run.js CHANGED
@@ -21,10 +21,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
 
22
22
  // bin/run.ts
23
23
  var import_cross_spawn = require("cross-spawn");
24
- var import_promises = __toESM(require("fs/promises"));
25
- var import_promises2 = require("fs/promises");
26
- var import_path = __toESM(require("path"));
27
24
  var import_yargs = __toESM(require("yargs"));
25
+
26
+ // lib/env.ts
27
+ var import_promises = require("fs/promises");
28
+ var import_path = __toESM(require("path"));
28
29
  var CustomErr = class extends Error {
29
30
  };
30
31
  var TaqNotFoundError = class extends CustomErr {
@@ -39,30 +40,12 @@ function isCustomError(err) {
39
40
  async function checkTaqProject(dir) {
40
41
  try {
41
42
  const searchPath = import_path.default.join(dir, ".taq");
42
- await (0, import_promises2.stat)(searchPath);
43
+ await (0, import_promises.stat)(searchPath);
43
44
  return searchPath;
44
45
  } catch {
45
46
  throw new TaqNotFoundError(`${dir} is not a valid Taqueria project.`);
46
47
  }
47
48
  }
48
- function withArguments(cliArgs, fn) {
49
- if (cliArgs[0].endsWith("node"))
50
- cliArgs.shift();
51
- const script = cliArgs.shift();
52
- const parsedArgs = (0, import_yargs.default)(cliArgs).option("projectDir", {
53
- alias: "p",
54
- type: "string",
55
- requiresArg: true
56
- }).option("prefix", {
57
- type: "string",
58
- requiresArg: true,
59
- default: ""
60
- }).global(["projectDir"]).parseSync();
61
- if (parsedArgs._.length > 0 && parsedArgs.projectDir) {
62
- fn(parsedArgs.projectDir, parsedArgs.prefix, parsedArgs._.join(" "));
63
- } else
64
- console.log(`Usage: ${script} --projectDir <projectDir> [--prefix <prefix>] <command>`);
65
- }
66
49
  function getEnvName(filename, prefix = "") {
67
50
  return `${prefix}TAQ_${filename}`.replace(".json", "").replace(/\./mg, "_").replace(/\-/mg, "_").toUpperCase();
68
51
  }
@@ -70,14 +53,14 @@ var TaqConfigError = class extends CustomErr {
70
53
  };
71
54
  async function getConfig(taqDir, prefix) {
72
55
  try {
73
- const files = await import_promises.default.readdir(taqDir);
56
+ const files = await (0, import_promises.readdir)(taqDir);
74
57
  return files.reduce(
75
58
  async (retval, file) => {
76
59
  if (!file.endsWith(".json"))
77
60
  return await retval;
78
61
  return {
79
62
  ...await retval,
80
- [getEnvName(file, prefix)]: await (0, import_promises2.readFile)(import_path.default.join(taqDir, file), "utf-8")
63
+ [getEnvName(file, prefix)]: await (0, import_promises.readFile)(import_path.default.join(taqDir, file), "utf-8")
81
64
  };
82
65
  },
83
66
  Promise.resolve({})
@@ -88,16 +71,52 @@ async function getConfig(taqDir, prefix) {
88
71
  );
89
72
  }
90
73
  }
74
+ async function getEncodedConfig(taqDir, prefix) {
75
+ const config = await getConfig(taqDir, prefix);
76
+ return Object.fromEntries(
77
+ Object.entries(config).map(
78
+ ([k, v]) => [k, btoa(v)]
79
+ )
80
+ );
81
+ }
82
+
83
+ // bin/run.ts
84
+ function withArguments(cliArgs, fn) {
85
+ if (cliArgs[0].endsWith("node"))
86
+ cliArgs.shift();
87
+ const script = cliArgs.shift();
88
+ const parsedArgs = (0, import_yargs.default)(cliArgs).option("projectDir", {
89
+ alias: "p",
90
+ type: "string",
91
+ requiresArg: true
92
+ }).option("prefix", {
93
+ type: "string",
94
+ requiresArg: true,
95
+ default: ""
96
+ }).global(["projectDir"]).parseSync();
97
+ if (parsedArgs._.length > 0 && parsedArgs.projectDir) {
98
+ fn(parsedArgs.projectDir, parsedArgs.prefix, parsedArgs._.join(" "));
99
+ } else
100
+ console.log(`Usage: ${script} --projectDir <projectDir> [--prefix <prefix>] <command>`);
101
+ }
91
102
  function toCommandWithEnvVars(cmd, config) {
92
103
  return Object.entries(config).reduce(
93
- (retval, [key, value]) => `${key}=${btoa(value)} ${retval}`,
104
+ (retval, [key, value]) => {
105
+ try {
106
+ return `${key}=${value} ${retval}`;
107
+ } catch (err) {
108
+ console.warn(`Could not set ${key}`);
109
+ console.warn("Check the contents of the associated file and ensure that it can be Base64 encoded.");
110
+ return retval;
111
+ }
112
+ },
94
113
  cmd
95
114
  );
96
115
  }
97
116
  async function run(projectDir, prefix, cmd) {
98
117
  try {
99
118
  const taqDir = await checkTaqProject(projectDir);
100
- const config = await getConfig(taqDir, prefix);
119
+ const config = await getEncodedConfig(taqDir, prefix);
101
120
  const cmdWithEnvVars = toCommandWithEnvVars(cmd, config);
102
121
  (0, import_cross_spawn.spawn)(cmdWithEnvVars, {
103
122
  shell: true,
package/bin/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["run.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { spawn } from 'cross-spawn';\nimport fs from 'fs/promises';\nimport { readFile, stat } from 'fs/promises';\nimport path from 'path';\nimport yargs from 'yargs';\n\nclass CustomErr extends Error {}\n\nclass TaqNotFoundError extends CustomErr {\n\tpublic isCustomErr = true;\n}\n\nfunction isCustomError(err: unknown): err is Error {\n\treturn typeof err === 'object' && (err as object).hasOwnProperty('isCustomErr');\n}\n\nasync function checkTaqProject(dir: string) {\n\ttry {\n\t\tconst searchPath = path.join(dir, '.taq');\n\t\tawait stat(searchPath);\n\t\treturn searchPath;\n\t} catch {\n\t\tthrow new TaqNotFoundError(`${dir} is not a valid Taqueria project.`);\n\t}\n}\n\nfunction withArguments(cliArgs: string[], fn: (projectDir: string, prefix: string, cmd: string) => Promise<void>) {\n\tif (cliArgs[0].endsWith('node')) cliArgs.shift();\n\n\tconst script = cliArgs.shift();\n\n\tconst parsedArgs = yargs(cliArgs)\n\t\t.option('projectDir', {\n\t\t\talias: 'p',\n\t\t\ttype: 'string',\n\t\t\trequiresArg: true,\n\t\t})\n\t\t.option('prefix', {\n\t\t\ttype: 'string',\n\t\t\trequiresArg: true,\n\t\t\tdefault: '',\n\t\t})\n\t\t.global(['projectDir'])\n\t\t.parseSync();\n\n\tif (parsedArgs._.length > 0 && parsedArgs.projectDir) {\n\t\tfn(parsedArgs.projectDir, parsedArgs.prefix, parsedArgs._.join(' '));\n\t} else console.log(`Usage: ${script} --projectDir <projectDir> [--prefix <prefix>] <command>`);\n}\n\nfunction getEnvName(filename: string, prefix = '') {\n\treturn `${prefix}TAQ_${filename}`\n\t\t.replace('.json', '')\n\t\t.replace(/\\./mg, '_')\n\t\t.replace(/\\-/mg, '_')\n\t\t.toUpperCase();\n}\n\nclass TaqConfigError extends CustomErr {}\nasync function getConfig(taqDir: string, prefix: string) {\n\ttry {\n\t\tconst files = await fs.readdir(taqDir);\n\t\treturn files.reduce(\n\t\t\tasync (retval, file) => {\n\t\t\t\tif (!file.endsWith('.json')) return (await retval);\n\t\t\t\treturn {\n\t\t\t\t\t...(await retval),\n\t\t\t\t\t[getEnvName(file, prefix)]: await readFile(path.join(taqDir, file), 'utf-8'),\n\t\t\t\t};\n\t\t\t},\n\t\t\tPromise.resolve({}),\n\t\t);\n\t} catch {\n\t\tthrow new TaqConfigError(\n\t\t\t`There was a problem reading the config files in ${taqDir}. Please check file permissions are try again.`,\n\t\t);\n\t}\n}\n\nfunction toCommandWithEnvVars(cmd: string, config: Record<string, string>) {\n\treturn Object.entries(config).reduce(\n\t\t(retval, [key, value]) => `${key}=${btoa(value)} ${retval}`,\n\t\tcmd,\n\t);\n}\n\nasync function run(projectDir: string, prefix: string, cmd: string) {\n\ttry {\n\t\tconst taqDir = await checkTaqProject(projectDir);\n\t\tconst config = await getConfig(taqDir, prefix);\n\t\tconst cmdWithEnvVars = toCommandWithEnvVars(cmd, config);\n\n\t\tspawn(cmdWithEnvVars, {\n\t\t\tshell: true,\n\t\t\tstdio: 'inherit',\n\t\t});\n\t} catch (err) {\n\t\tif (isCustomError(err)) {\n\t\t\tconsole.error(err.message);\n\t\t\treturn;\n\t\t}\n\t\tthrow err;\n\t}\n}\n\nwithArguments(process.argv, run);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,yBAAsB;AACtB,sBAAe;AACf,IAAAA,mBAA+B;AAC/B,kBAAiB;AACjB,mBAAkB;AAElB,IAAM,YAAN,cAAwB,MAAM;AAAC;AAE/B,IAAM,mBAAN,cAA+B,UAAU;AAAA,EAAzC;AAAA;AACC,SAAO,cAAc;AAAA;AACtB;AAEA,SAAS,cAAc,KAA4B;AAClD,SAAO,OAAO,QAAQ,YAAa,IAAe,eAAe,aAAa;AAC/E;AAEA,eAAe,gBAAgB,KAAa;AAC3C,MAAI;AACH,UAAM,aAAa,YAAAC,QAAK,KAAK,KAAK,MAAM;AACxC,cAAM,uBAAK,UAAU;AACrB,WAAO;AAAA,EACR,QAAE;AACD,UAAM,IAAI,iBAAiB,GAAG,sCAAsC;AAAA,EACrE;AACD;AAEA,SAAS,cAAc,SAAmB,IAAwE;AACjH,MAAI,QAAQ,GAAG,SAAS,MAAM;AAAG,YAAQ,MAAM;AAE/C,QAAM,SAAS,QAAQ,MAAM;AAE7B,QAAM,iBAAa,aAAAC,SAAM,OAAO,EAC9B,OAAO,cAAc;AAAA,IACrB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACd,CAAC,EACA,OAAO,UAAU;AAAA,IACjB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS;AAAA,EACV,CAAC,EACA,OAAO,CAAC,YAAY,CAAC,EACrB,UAAU;AAEZ,MAAI,WAAW,EAAE,SAAS,KAAK,WAAW,YAAY;AACrD,OAAG,WAAW,YAAY,WAAW,QAAQ,WAAW,EAAE,KAAK,GAAG,CAAC;AAAA,EACpE;AAAO,YAAQ,IAAI,UAAU,gEAAgE;AAC9F;AAEA,SAAS,WAAW,UAAkB,SAAS,IAAI;AAClD,SAAO,GAAG,aAAa,WACrB,QAAQ,SAAS,EAAE,EACnB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,QAAQ,GAAG,EACnB,YAAY;AACf;AAEA,IAAM,iBAAN,cAA6B,UAAU;AAAC;AACxC,eAAe,UAAU,QAAgB,QAAgB;AACxD,MAAI;AACH,UAAM,QAAQ,MAAM,gBAAAC,QAAG,QAAQ,MAAM;AACrC,WAAO,MAAM;AAAA,MACZ,OAAO,QAAQ,SAAS;AACvB,YAAI,CAAC,KAAK,SAAS,OAAO;AAAG,iBAAQ,MAAM;AAC3C,eAAO;AAAA,UACN,GAAI,MAAM;AAAA,UACV,CAAC,WAAW,MAAM,MAAM,IAAI,UAAM,2BAAS,YAAAF,QAAK,KAAK,QAAQ,IAAI,GAAG,OAAO;AAAA,QAC5E;AAAA,MACD;AAAA,MACA,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACnB;AAAA,EACD,QAAE;AACD,UAAM,IAAI;AAAA,MACT,mDAAmD;AAAA,IACpD;AAAA,EACD;AACD;AAEA,SAAS,qBAAqB,KAAa,QAAgC;AAC1E,SAAO,OAAO,QAAQ,MAAM,EAAE;AAAA,IAC7B,CAAC,QAAQ,CAAC,KAAK,KAAK,MAAM,GAAG,OAAO,KAAK,KAAK,KAAK;AAAA,IACnD;AAAA,EACD;AACD;AAEA,eAAe,IAAI,YAAoB,QAAgB,KAAa;AACnE,MAAI;AACH,UAAM,SAAS,MAAM,gBAAgB,UAAU;AAC/C,UAAM,SAAS,MAAM,UAAU,QAAQ,MAAM;AAC7C,UAAM,iBAAiB,qBAAqB,KAAK,MAAM;AAEvD,kCAAM,gBAAgB;AAAA,MACrB,OAAO;AAAA,MACP,OAAO;AAAA,IACR,CAAC;AAAA,EACF,SAAS,KAAP;AACD,QAAI,cAAc,GAAG,GAAG;AACvB,cAAQ,MAAM,IAAI,OAAO;AACzB;AAAA,IACD;AACA,UAAM;AAAA,EACP;AACD;AAEA,cAAc,QAAQ,MAAM,GAAG;","names":["import_promises","path","yargs","fs"]}
1
+ {"version":3,"sources":["run.ts","../lib/env.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { spawn } from 'cross-spawn';\nimport path from 'path';\nimport yargs from 'yargs';\nimport { checkTaqProject, getEncodedConfig, isCustomError } from '../lib/env';\n\nfunction withArguments(cliArgs: string[], fn: (projectDir: string, prefix: string, cmd: string) => Promise<void>) {\n\tif (cliArgs[0].endsWith('node')) cliArgs.shift();\n\n\tconst script = cliArgs.shift();\n\n\tconst parsedArgs = yargs(cliArgs)\n\t\t.option('projectDir', {\n\t\t\talias: 'p',\n\t\t\ttype: 'string',\n\t\t\trequiresArg: true,\n\t\t})\n\t\t.option('prefix', {\n\t\t\ttype: 'string',\n\t\t\trequiresArg: true,\n\t\t\tdefault: '',\n\t\t})\n\t\t.global(['projectDir'])\n\t\t.parseSync();\n\n\tif (parsedArgs._.length > 0 && parsedArgs.projectDir) {\n\t\tfn(parsedArgs.projectDir, parsedArgs.prefix, parsedArgs._.join(' '));\n\t} else console.log(`Usage: ${script} --projectDir <projectDir> [--prefix <prefix>] <command>`);\n}\n\nfunction toCommandWithEnvVars(cmd: string, config: Record<string, string>) {\n\treturn Object.entries(config).reduce(\n\t\t(retval, [key, value]) => {\n\t\t\ttry {\n\t\t\t\treturn `${key}=${value} ${retval}`;\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(`Could not set ${key}`);\n\t\t\t\tconsole.warn('Check the contents of the associated file and ensure that it can be Base64 encoded.');\n\t\t\t\treturn retval;\n\t\t\t}\n\t\t},\n\t\tcmd,\n\t);\n}\n\nasync function run(projectDir: string, prefix: string, cmd: string) {\n\ttry {\n\t\tconst taqDir = await checkTaqProject(projectDir);\n\t\tconst config = await getEncodedConfig(taqDir, prefix);\n\t\tconst cmdWithEnvVars = toCommandWithEnvVars(cmd, config);\n\n\t\tspawn(cmdWithEnvVars, {\n\t\t\tshell: true,\n\t\t\tstdio: 'inherit',\n\t\t});\n\t} catch (err) {\n\t\tif (isCustomError(err)) {\n\t\t\tconsole.error(err.message);\n\t\t\treturn;\n\t\t}\n\t\tthrow err;\n\t}\n}\n\nwithArguments(process.argv, run);\n","import { readdir, readFile, stat } from 'fs/promises';\nimport path from 'path';\n\nclass CustomErr extends Error {}\n\nexport class TaqNotFoundError extends CustomErr {\n\tpublic isCustomErr = true;\n}\n\nexport function isCustomError(err: unknown): err is Error {\n\treturn typeof err === 'object' && (err as object).hasOwnProperty('isCustomErr');\n}\n\nexport async function checkTaqProject(dir: string) {\n\ttry {\n\t\tconst searchPath = path.join(dir, '.taq');\n\t\tawait stat(searchPath);\n\t\treturn searchPath;\n\t} catch {\n\t\tthrow new TaqNotFoundError(`${dir} is not a valid Taqueria project.`);\n\t}\n}\n\nfunction getEnvName(filename: string, prefix = '') {\n\treturn `${prefix}TAQ_${filename}`\n\t\t.replace('.json', '')\n\t\t.replace(/\\./mg, '_')\n\t\t.replace(/\\-/mg, '_')\n\t\t.toUpperCase();\n}\n\nexport class TaqConfigError extends CustomErr {}\nexport async function getConfig(taqDir: string, prefix: string) {\n\ttry {\n\t\tconst files = await readdir(taqDir);\n\t\treturn files.reduce(\n\t\t\tasync (retval, file) => {\n\t\t\t\tif (!file.endsWith('.json')) return (await retval);\n\t\t\t\treturn {\n\t\t\t\t\t...(await retval),\n\t\t\t\t\t[getEnvName(file, prefix)]: await readFile(path.join(taqDir, file), 'utf-8'),\n\t\t\t\t};\n\t\t\t},\n\t\t\tPromise.resolve({}),\n\t\t);\n\t} catch {\n\t\tthrow new TaqConfigError(\n\t\t\t`There was a problem reading the config files in ${taqDir}. Please check file permissions are try again.`,\n\t\t);\n\t}\n}\n\nexport async function getEncodedConfig(taqDir: string, prefix: string) {\n\tconst config = await getConfig(taqDir, prefix);\n\treturn Object.fromEntries(\n\t\tObject.entries(config).map(\n\t\t\t([k, v]) => [k, btoa(v as string)],\n\t\t),\n\t);\n}\n\nexport async function getEnv(env: typeof process.env, taqDir: string, prefix: string = '') {\n\treturn Object.entries(getEncodedConfig(taqDir, prefix)).reduce(\n\t\t(retval, [k, v]) => ({ ...retval, [k]: v }),\n\t\tenv,\n\t);\n}\n"],"mappings":"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","names":["path","yargs"]}
package/bin/run.ts CHANGED
@@ -1,29 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { spawn } from 'cross-spawn';
3
- import fs from 'fs/promises';
4
- import { readFile, stat } from 'fs/promises';
5
3
  import path from 'path';
6
4
  import yargs from 'yargs';
7
-
8
- class CustomErr extends Error {}
9
-
10
- class TaqNotFoundError extends CustomErr {
11
- public isCustomErr = true;
12
- }
13
-
14
- function isCustomError(err: unknown): err is Error {
15
- return typeof err === 'object' && (err as object).hasOwnProperty('isCustomErr');
16
- }
17
-
18
- async function checkTaqProject(dir: string) {
19
- try {
20
- const searchPath = path.join(dir, '.taq');
21
- await stat(searchPath);
22
- return searchPath;
23
- } catch {
24
- throw new TaqNotFoundError(`${dir} is not a valid Taqueria project.`);
25
- }
26
- }
5
+ import { checkTaqProject, getEncodedConfig, isCustomError } from '../lib/env';
27
6
 
28
7
  function withArguments(cliArgs: string[], fn: (projectDir: string, prefix: string, cmd: string) => Promise<void>) {
29
8
  if (cliArgs[0].endsWith('node')) cliArgs.shift();
@@ -49,38 +28,17 @@ function withArguments(cliArgs: string[], fn: (projectDir: string, prefix: strin
49
28
  } else console.log(`Usage: ${script} --projectDir <projectDir> [--prefix <prefix>] <command>`);
50
29
  }
51
30
 
52
- function getEnvName(filename: string, prefix = '') {
53
- return `${prefix}TAQ_${filename}`
54
- .replace('.json', '')
55
- .replace(/\./mg, '_')
56
- .replace(/\-/mg, '_')
57
- .toUpperCase();
58
- }
59
-
60
- class TaqConfigError extends CustomErr {}
61
- async function getConfig(taqDir: string, prefix: string) {
62
- try {
63
- const files = await fs.readdir(taqDir);
64
- return files.reduce(
65
- async (retval, file) => {
66
- if (!file.endsWith('.json')) return (await retval);
67
- return {
68
- ...(await retval),
69
- [getEnvName(file, prefix)]: await readFile(path.join(taqDir, file), 'utf-8'),
70
- };
71
- },
72
- Promise.resolve({}),
73
- );
74
- } catch {
75
- throw new TaqConfigError(
76
- `There was a problem reading the config files in ${taqDir}. Please check file permissions are try again.`,
77
- );
78
- }
79
- }
80
-
81
31
  function toCommandWithEnvVars(cmd: string, config: Record<string, string>) {
82
32
  return Object.entries(config).reduce(
83
- (retval, [key, value]) => `${key}=${btoa(value)} ${retval}`,
33
+ (retval, [key, value]) => {
34
+ try {
35
+ return `${key}=${value} ${retval}`;
36
+ } catch (err) {
37
+ console.warn(`Could not set ${key}`);
38
+ console.warn('Check the contents of the associated file and ensure that it can be Base64 encoded.');
39
+ return retval;
40
+ }
41
+ },
84
42
  cmd,
85
43
  );
86
44
  }
@@ -88,7 +46,7 @@ function toCommandWithEnvVars(cmd: string, config: Record<string, string>) {
88
46
  async function run(projectDir: string, prefix: string, cmd: string) {
89
47
  try {
90
48
  const taqDir = await checkTaqProject(projectDir);
91
- const config = await getConfig(taqDir, prefix);
49
+ const config = await getEncodedConfig(taqDir, prefix);
92
50
  const cmdWithEnvVars = toCommandWithEnvVars(cmd, config);
93
51
 
94
52
  spawn(cmdWithEnvVars, {
package/env.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ declare class CustomErr extends Error {
3
+ }
4
+ export declare class TaqNotFoundError extends CustomErr {
5
+ isCustomErr: boolean;
6
+ }
7
+ export declare function isCustomError(err: unknown): err is Error;
8
+ export declare function checkTaqProject(dir: string): Promise<string>;
9
+ export declare class TaqConfigError extends CustomErr {
10
+ }
11
+ export declare function getConfig(taqDir: string, prefix: string): Promise<{}>;
12
+ export declare function getEncodedConfig(taqDir: string, prefix: string): Promise<{
13
+ [k: string]: string;
14
+ }>;
15
+ export declare function getEnv(taqDir: string, prefix: string, env: typeof process.env): Promise<NodeJS.ProcessEnv>;
16
+ export {};
package/lib/README.md ADDED
@@ -0,0 +1 @@
1
+ This directory contains packages that are NodeJS specific
package/lib/env.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ declare class CustomErr extends Error {
3
+ }
4
+ export declare class TaqNotFoundError extends CustomErr {
5
+ isCustomErr: boolean;
6
+ }
7
+ export declare function isCustomError(err: unknown): err is Error;
8
+ export declare function checkTaqProject(dir: string): Promise<string>;
9
+ export declare class TaqConfigError extends CustomErr {
10
+ }
11
+ export declare function getConfig(taqDir: string, prefix: string): Promise<{}>;
12
+ export declare function getEncodedConfig(taqDir: string, prefix: string): Promise<{
13
+ [k: string]: string;
14
+ }>;
15
+ export declare function getEnv(env: typeof process.env, taqDir: string, prefix?: string): Promise<NodeJS.ProcessEnv>;
16
+ export {};
package/lib/env.ts ADDED
@@ -0,0 +1,67 @@
1
+ import { readdir, readFile, stat } from 'fs/promises';
2
+ import path from 'path';
3
+
4
+ class CustomErr extends Error {}
5
+
6
+ export class TaqNotFoundError extends CustomErr {
7
+ public isCustomErr = true;
8
+ }
9
+
10
+ export function isCustomError(err: unknown): err is Error {
11
+ return typeof err === 'object' && (err as object).hasOwnProperty('isCustomErr');
12
+ }
13
+
14
+ export async function checkTaqProject(dir: string) {
15
+ try {
16
+ const searchPath = path.join(dir, '.taq');
17
+ await stat(searchPath);
18
+ return searchPath;
19
+ } catch {
20
+ throw new TaqNotFoundError(`${dir} is not a valid Taqueria project.`);
21
+ }
22
+ }
23
+
24
+ function getEnvName(filename: string, prefix = '') {
25
+ return `${prefix}TAQ_${filename}`
26
+ .replace('.json', '')
27
+ .replace(/\./mg, '_')
28
+ .replace(/\-/mg, '_')
29
+ .toUpperCase();
30
+ }
31
+
32
+ export class TaqConfigError extends CustomErr {}
33
+ export async function getConfig(taqDir: string, prefix: string) {
34
+ try {
35
+ const files = await readdir(taqDir);
36
+ return files.reduce(
37
+ async (retval, file) => {
38
+ if (!file.endsWith('.json')) return (await retval);
39
+ return {
40
+ ...(await retval),
41
+ [getEnvName(file, prefix)]: await readFile(path.join(taqDir, file), 'utf-8'),
42
+ };
43
+ },
44
+ Promise.resolve({}),
45
+ );
46
+ } catch {
47
+ throw new TaqConfigError(
48
+ `There was a problem reading the config files in ${taqDir}. Please check file permissions are try again.`,
49
+ );
50
+ }
51
+ }
52
+
53
+ export async function getEncodedConfig(taqDir: string, prefix: string) {
54
+ const config = await getConfig(taqDir, prefix);
55
+ return Object.fromEntries(
56
+ Object.entries(config).map(
57
+ ([k, v]) => [k, btoa(v as string)],
58
+ ),
59
+ );
60
+ }
61
+
62
+ export async function getEnv(env: typeof process.env, taqDir: string, prefix: string = '') {
63
+ return Object.entries(getEncodedConfig(taqDir, prefix)).reduce(
64
+ (retval, [k, v]) => ({ ...retval, [k]: v }),
65
+ env,
66
+ );
67
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taqueria/toolkit",
3
- "version": "0.28.0",
3
+ "version": "0.28.1-beta",
4
4
  "description": "A TypeScript library for NodeJS to work with Taqueria projects",
5
5
  "source": "./index.ts",
6
6
  "bin": {
@@ -66,5 +66,8 @@
66
66
  "skipNodeModulesBundle": true,
67
67
  "platform": "node"
68
68
  }
69
- ]
69
+ ],
70
+ "exports": {
71
+ "./lib/*": "./lib/*"
72
+ }
70
73
  }