@cenk1cenk2/oclif-common 3.1.0-beta.7 → 3.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.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;
@@ -152,8 +153,8 @@ interface UnlockData extends CommonLockerData {
152
153
 
153
154
  declare class GenericParser {
154
155
  static extensions: string[];
155
- parse<T = unknown>(data: string | Buffer): T | Promise<T>;
156
- stringify<T = any>(data: T): string | Promise<string>;
156
+ parse<T = unknown>(data: string | Buffer): T;
157
+ stringify<T = any>(data: T): string;
157
158
  }
158
159
 
159
160
  declare class LockerService<LockFile extends LockableData = LockableData> {
@@ -190,7 +191,7 @@ declare class ParserService {
190
191
  addParsers(...parsers: ClassType<GenericParser>[]): void;
191
192
  read<T = unknown>(file: string): Promise<T>;
192
193
  write<T = LockableData>(file: string, data: T): Promise<void>;
193
- parse<T = unknown>(file: string, data: string | Buffer): T | Promise<T>;
194
+ parse<T = unknown>(file: string, data: string | Buffer): T;
194
195
  stringify<T = any>(file: string, data: T): string | Promise<string>;
195
196
  }
196
197
 
@@ -212,7 +213,7 @@ declare class ConfigService implements GlobalConfig {
212
213
  read<T extends LockableData = LockableData>(path: string): Promise<T>;
213
214
  extend<T extends LockableData = LockableData>(paths: (string | Partial<T>)[], strategy?: MergeStrategy): Promise<T>;
214
215
  merge<T extends LockableData = LockableData>(configs: Partial<T>[], strategy?: MergeStrategy): T;
215
- env<T extends LockableData = LockableData>(definition: string | T, config: T): Promise<T>;
216
+ env<T extends LockableData = LockableData>(definition: string | Record<PropertyKey, any>, config: T): Promise<T>;
216
217
  write<T extends LockableData = LockableData>(path: string, data: T): Promise<void>;
217
218
  private recalculate;
218
219
  }
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
- this.logger.trace("Expanding location to elements: %s", location);
653
- extras.push(...await iter(value["__element" /* ELEMENT */], [...location, "__element" /* ELEMENT */]));
652
+ extensions = await iter(value["__element" /* ELEMENT */], [...location, "__element" /* ELEMENT */]);
653
+ this.logger.trace("Expanding location to elements: %s -> %s", location, extensions.map((extension) => extension.key.join(".")).join(", "));
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 {
@@ -671,51 +671,50 @@ var ConfigService = class {
671
671
  return data.flatMap((d) => d).filter(Boolean);
672
672
  }, "iter");
673
673
  const parsed = await iter(env);
674
- this.logger.trace("Environment variable injection: %o", parsed);
675
- const cb = /* @__PURE__ */ __name(async (variable, data) => {
674
+ const cb = /* @__PURE__ */ __name((config2, variable, data) => {
676
675
  if (variable.parser) {
677
676
  try {
678
- variable = await this.parser.parse(variable.parser, data);
677
+ data = this.parser.parse(variable.parser, data);
679
678
  } catch (e) {
680
679
  this.logger.trace("Can not parse environment environment variable for config: %s -> %s with %s", variable.key.join("."), variable.env, variable.parser);
681
680
  throw e;
682
681
  }
683
682
  }
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
- });
683
+ this.logger.trace("Overwriting config with environment variable: %s -> %s", variable.key.join("."), variable.env);
684
+ return import_object_path_immutable.default.set(config2, variable.key, data);
688
685
  }, "cb");
689
- await Promise.all(
690
- parsed.map(async (variable) => {
691
- let data;
692
- if (variable.key?.includes("__element" /* ELEMENT */)) {
693
- const timeout = 6e4;
694
- const startedAt = Date.now();
695
- for (let i = 0; i < Infinity; i++) {
696
- if (Date.now() - startedAt > timeout) {
697
- throw new Error(`Timed-out in ${timeout}ms while looking for element environment variables.`);
698
- }
699
- const clone = JSON.parse(JSON.stringify(variable));
686
+ parsed.forEach((variable) => {
687
+ let data;
688
+ data = process.env[variable.env];
689
+ if (data) {
690
+ config = cb(config, variable, data);
691
+ }
692
+ if (variable.extensions && variable.extensions.length > 0) {
693
+ const timeout = 6e4;
694
+ const startedAt = Date.now();
695
+ for (let i = 0; i < Infinity; i++) {
696
+ if (Date.now() - startedAt > timeout) {
697
+ throw new Error(`Timed-out in ${timeout}ms while looking for element environment variables.`);
698
+ }
699
+ const extensions = variable.extensions.map((extension) => {
700
+ const clone = JSON.parse(JSON.stringify(extension));
700
701
  clone.env = clone.env.replace("${i}" /* ELEMENT_REPLACER */, i.toString());
701
- this.logger.trace("Looking for environment variable element: %o", clone);
702
+ clone.key[clone.key.findIndex((value) => value === "__element" /* ELEMENT */)] = i.toString();
702
703
  data = process.env[clone.env];
703
704
  if (!data) {
704
- this.logger.trace("No more variable available: %s -> %d", variable.env, i);
705
- break;
705
+ this.logger.trace("No extension for environment variable: %s -> %s", clone.key.join("."), clone.env);
706
+ return;
706
707
  }
707
- clone.key[clone.key.findIndex((value) => value === "__element" /* ELEMENT */)] = i;
708
- config = await cb(clone, data);
708
+ config = cb(config, clone, data);
709
+ return true;
710
+ }).filter(Boolean);
711
+ if (extensions.length === 0) {
712
+ this.logger.trace("No more extensions for environment variables: %s -> %d", variable.key.join("."), i);
713
+ break;
709
714
  }
710
- return;
711
715
  }
712
- data = process.env[variable.env];
713
- if (!data) {
714
- return;
715
- }
716
- config = await cb(variable, data);
717
- })
718
- );
716
+ }
717
+ });
719
718
  return config;
720
719
  }
721
720
  async write(path, data) {
@@ -820,7 +819,7 @@ var LockerService = class {
820
819
  return this.parser.parse(await this.fs.read(this.file));
821
820
  }
822
821
  async write(data) {
823
- return this.fs.write(this.file, await this.parser.stringify(data));
822
+ return this.fs.write(this.file, this.parser.stringify(data));
824
823
  }
825
824
  buildPath(d) {
826
825
  if (d?.root !== true && this.root) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cenk1cenk2/oclif-common",
3
- "version": "3.1.0-beta.7",
3
+ "version": "3.1.0",
4
4
  "description": "Oclif common package for oclif2 projects.",
5
5
  "repository": "https://gitlab.kilic.dev/libraries/oclif-tools",
6
6
  "author": {