@cenk1cenk2/oclif-common 3.1.0-beta.6 → 3.1.0-beta.9

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 {
@@ -672,48 +672,53 @@ var ConfigService = class {
672
672
  }, "iter");
673
673
  const parsed = await iter(env);
674
674
  this.logger.trace("Environment variable injection: %o", parsed);
675
- const cb = /* @__PURE__ */ __name(async (variable, data) => {
675
+ const cb = /* @__PURE__ */ __name(async (config2, variable, data) => {
676
676
  if (variable.parser) {
677
677
  try {
678
678
  variable = await this.parser.parse(variable.parser, data);
679
679
  } catch (e) {
680
- this.logger.trace("Can not parse environment environment variable for config: %s -> %s with %s", variable.key.join("."), variable.env, variable.parser);
680
+ this.logger.trace("Can not parse environment environment variable for config: %s -> %s with %s", variable.key?.join("."), variable.env, variable.parser);
681
681
  throw e;
682
682
  }
683
683
  }
684
- return import_object_path_immutable.default.update(config, variable.key, () => {
685
- this.logger.trace("Overwriting config with environment variable: %s -> %s", variable.key.join("."), variable.env);
686
- return variable;
687
- });
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);
688
686
  }, "cb");
689
687
  await Promise.all(
690
688
  parsed.map(async (variable) => {
691
689
  let data;
692
- if (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 && variable.extensions.length > 0) {
693
695
  const timeout = 6e4;
694
696
  const startedAt = Date.now();
695
697
  for (let i = 0; i < Infinity; i++) {
696
698
  if (Date.now() - startedAt > timeout) {
697
699
  throw new Error(`Timed-out in ${timeout}ms while looking for element environment variables.`);
698
700
  }
699
- const clone = JSON.parse(JSON.stringify(variable));
700
- clone.env = clone.env.replace("${i}" /* ELEMENT_REPLACER */, i.toString());
701
- this.logger.trace("Looking for environment variable element: %o", clone);
702
- data = process.env[clone.env];
703
- if (!data) {
704
- 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
+ clone.key[clone.key.findIndex((value) => value === "__element" /* ELEMENT */)] = i;
706
+ data = process.env[clone.env];
707
+ this.logger.trace("Extension: %o -> %s", clone, data);
708
+ if (!data) {
709
+ this.logger.trace("No extension for environment variable: %s -> %s", clone.key.join("."), clone.env);
710
+ return;
711
+ }
712
+ return cb({}, clone, data);
713
+ })
714
+ )).filter(Boolean);
715
+ if (extensions.length === 0) {
716
+ this.logger.trace("No more extensions for environment variables: %s -> %d", variable.key.join("."), i);
705
717
  break;
706
718
  }
707
- clone.key[clone.key.findIndex((value) => value === "__element" /* ELEMENT */)] = i;
708
- config = await cb(clone, data);
719
+ config = this.merge([config, ...extensions]);
709
720
  }
710
- return;
711
- }
712
- data = process.env[variable.env];
713
- if (!data) {
714
- return;
715
721
  }
716
- config = await cb(variable, data);
717
722
  })
718
723
  );
719
724
  return config;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cenk1cenk2/oclif-common",
3
- "version": "3.1.0-beta.6",
3
+ "version": "3.1.0-beta.9",
4
4
  "description": "Oclif common package for oclif2 projects.",
5
5
  "repository": "https://gitlab.kilic.dev/libraries/oclif-tools",
6
6
  "author": {