@cenk1cenk2/oclif-common 3.1.0-beta.5 → 3.1.0-beta.8

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.ts CHANGED
@@ -112,6 +112,7 @@ interface ConfigIterator {
112
112
  key: (string | number)[];
113
113
  env: string;
114
114
  parser?: string;
115
+ extensions?: ConfigIterator[];
115
116
  }
116
117
 
117
118
  declare const color: colorette.Colorette;
package/dist/index.js CHANGED
@@ -647,19 +647,19 @@ var ConfigService = class {
647
647
  if (typeof value === "string") {
648
648
  return [{ key: location, env: value }];
649
649
  } else if (typeof value === "object") {
650
- const extras = [];
650
+ let extensions;
651
651
  if ("__element" /* ELEMENT */ in value) {
652
652
  this.logger.trace("Expanding location to elements: %s", location);
653
- extras.push(await iter(value["__element" /* ELEMENT */], [...location, "__element" /* ELEMENT */]));
653
+ extensions = await iter(value["__element" /* ELEMENT */], [...location, "__element" /* ELEMENT */]);
654
654
  }
655
655
  if ("__name" /* NAME */ in value && "__format" /* PARSER */ in value) {
656
656
  const variable = [
657
657
  {
658
658
  key: location,
659
659
  env: value["__name" /* NAME */],
660
- parser: value["__format" /* PARSER */]
661
- },
662
- ...extras
660
+ parser: value["__format" /* PARSER */],
661
+ extensions
662
+ }
663
663
  ];
664
664
  return variable;
665
665
  } else {
@@ -668,10 +668,11 @@ var ConfigService = class {
668
668
  }
669
669
  })
670
670
  );
671
- return data.flatMap((d) => d);
671
+ return data.flatMap((d) => d).filter(Boolean);
672
672
  }, "iter");
673
673
  const parsed = await iter(env);
674
- const cb = /* @__PURE__ */ __name(async (variable, data) => {
674
+ this.logger.trace("Environment variable injection: %o", parsed);
675
+ const cb = /* @__PURE__ */ __name(async (config2, variable, data) => {
675
676
  if (variable.parser) {
676
677
  try {
677
678
  variable = await this.parser.parse(variable.parser, data);
@@ -680,39 +681,43 @@ var ConfigService = class {
680
681
  throw e;
681
682
  }
682
683
  }
683
- return import_object_path_immutable.default.update(config, variable.key, () => {
684
- this.logger.trace("Overwriting config with environment variable: %s -> %s", variable.key.join("."), variable.env);
685
- return variable;
686
- });
684
+ this.logger.trace("Overwriting config with environment variable: %s -> %s", variable.key.join("."), variable.env);
685
+ return import_object_path_immutable.default.set(config2, variable.key, variable);
687
686
  }, "cb");
688
687
  await Promise.all(
689
688
  parsed.map(async (variable) => {
690
689
  let data;
691
- if (variable.key.length && variable.key.includes("__element" /* ELEMENT */)) {
690
+ data = process.env[variable.env];
691
+ if (data) {
692
+ config = await cb(config, variable, data);
693
+ }
694
+ if (variable.extensions) {
692
695
  const timeout = 6e4;
693
696
  const startedAt = Date.now();
694
697
  for (let i = 0; i < Infinity; i++) {
695
698
  if (Date.now() - startedAt > timeout) {
696
699
  throw new Error(`Timed-out in ${timeout}ms while looking for element environment variables.`);
697
700
  }
698
- const clone = JSON.parse(JSON.stringify(variable));
699
- clone.env = clone.env.replace("${i}" /* ELEMENT_REPLACER */, i.toString());
700
- this.logger.trace("Looking for environment variable element: %o", clone);
701
- data = process.env[clone.env];
702
- if (!data) {
703
- this.logger.trace("No more variable available: %s -> %d", variable.env, i);
701
+ const extensions = (await Promise.all(
702
+ variable.extensions.map(async (extension) => {
703
+ const clone = JSON.parse(JSON.stringify(extension));
704
+ clone.env = clone.env.replace("${i}" /* ELEMENT_REPLACER */, i.toString());
705
+ data = process.env[clone.env];
706
+ if (!data) {
707
+ this.logger.trace("No extension for environment variable: %s -> %d", clone.env, i);
708
+ return;
709
+ }
710
+ clone.key[clone.key.findIndex((value) => value === "__element" /* ELEMENT */)] = i;
711
+ return cb({}, clone, data);
712
+ })
713
+ )).filter(Boolean);
714
+ if (extensions.length === 0) {
715
+ this.logger.trace("No more extensions for environment variables: %s -> %d", variable.key.join("."), i);
704
716
  break;
705
717
  }
706
- clone.key[clone.key.findIndex((value) => value === "__element" /* ELEMENT */)] = i;
707
- config = await cb(clone, data);
718
+ config = this.merge([config, ...extensions]);
708
719
  }
709
- return;
710
- }
711
- data = process.env[variable.env];
712
- if (!data) {
713
- return;
714
720
  }
715
- config = await cb(variable, data);
716
721
  })
717
722
  );
718
723
  return config;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cenk1cenk2/oclif-common",
3
- "version": "3.1.0-beta.5",
3
+ "version": "3.1.0-beta.8",
4
4
  "description": "Oclif common package for oclif2 projects.",
5
5
  "repository": "https://gitlab.kilic.dev/libraries/oclif-tools",
6
6
  "author": {