@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 +5 -4
- package/dist/index.js +37 -38
- package/package.json +1 -1
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
|
|
156
|
-
stringify<T = any>(data: T): 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
|
|
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 |
|
|
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
|
-
|
|
650
|
+
let extensions;
|
|
651
651
|
if ("__element" /* ELEMENT */ in value) {
|
|
652
|
-
|
|
653
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
685
|
-
|
|
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
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
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
|
-
|
|
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
|
|
705
|
-
|
|
705
|
+
this.logger.trace("No extension for environment variable: %s -> %s", clone.key.join("."), clone.env);
|
|
706
|
+
return;
|
|
706
707
|
}
|
|
707
|
-
|
|
708
|
-
|
|
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
|
-
|
|
713
|
-
|
|
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,
|
|
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) {
|