@autometa/config 0.0.0 → 0.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/CHANGELOG.md +15 -0
- package/dist/esm/index.js +21 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/index.d.cts +117 -0
- package/dist/index.d.ts +83 -8
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/package.json +10 -7
- package/tsup.config.ts +1 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @autometa/config
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 554b77e: Releasing packages
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [554b77e]
|
|
12
|
+
- @autometa/app@0.1.0
|
|
13
|
+
- @autometa/asserters@0.1.0
|
|
14
|
+
- @autometa/errors@0.1.0
|
|
15
|
+
- @autometa/types@0.4.0
|
package/dist/esm/index.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined")
|
|
5
|
+
return require.apply(this, arguments);
|
|
6
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
|
+
});
|
|
1
8
|
var __accessCheck = (obj, member, msg) => {
|
|
2
9
|
if (!member.has(obj))
|
|
3
10
|
throw TypeError("Cannot " + msg);
|
|
@@ -94,6 +101,9 @@ var Config = class {
|
|
|
94
101
|
}
|
|
95
102
|
return this.envMap.get(key) ?? raise(`Environment ${key} is not defined`);
|
|
96
103
|
}
|
|
104
|
+
get currentEnvironment() {
|
|
105
|
+
return this.environments.value;
|
|
106
|
+
}
|
|
97
107
|
};
|
|
98
108
|
|
|
99
109
|
// src/define-config.ts
|
|
@@ -117,6 +127,16 @@ function defineConfig(config, ...configs) {
|
|
|
117
127
|
envs.push("default");
|
|
118
128
|
config2.environment = "default";
|
|
119
129
|
}
|
|
130
|
+
if (config2.shim) {
|
|
131
|
+
if ("error-cause" in config2.shim && config2.shim["error-cause"] === true) {
|
|
132
|
+
__require("error-cause/auto");
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (envs.length > 1 && !envs.includes("default")) {
|
|
137
|
+
throw new AutomationError2(
|
|
138
|
+
`A default environment must be defined first. At one config must not have an environment defined or define a default environment explicitly with 'environement="default"`
|
|
139
|
+
);
|
|
120
140
|
}
|
|
121
141
|
const setters = config.environments;
|
|
122
142
|
return {
|
|
@@ -128,3 +148,4 @@ export {
|
|
|
128
148
|
EnvironmentReader,
|
|
129
149
|
defineConfig
|
|
130
150
|
};
|
|
151
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/config-object.ts","../../src/environment-reader.ts","../../src/define-config.ts"],"sourcesContent":["import { AutomationError, raise } from \"@autometa/errors\";\nimport { EnvironmentReader } from \"./environment-reader\";\nimport { TestExecutorConfig } from \"./types\";\nexport class Config {\n readonly environments: EnvironmentReader = new EnvironmentReader();\n constructor(public envMap: Map<string, TestExecutorConfig>) {}\n get current(): TestExecutorConfig {\n const key = this.environments.value;\n if (!key) {\n if (!this.envMap.has(\"default\")) {\n throw new AutomationError(\n `No environment is defined. Define an environment with 'env.byLiteral(\"my-environment\")' or 'env.byEnvironmentVariable(\"MY_ENVIRONMENT\")' or 'env.byFactory(() => \"my-environment\")' or 'env.byLiteral(\"default\")'`\n );\n }\n return this.envMap.get(\"default\") as TestExecutorConfig;\n }\n if (!this.envMap.has(key)) {\n throw new AutomationError(\n `Environment ${key} is not defined. Options are: \\n ${Object.keys(\n this.envMap\n ).join(\"\\n\")}`\n );\n }\n return this.envMap.get(key) ?? raise(`Environment ${key} is not defined`);\n }\n get currentEnvironment() {\n return this.environments.value;\n }\n}\n","export class EnvironmentReader {\n #envVar?: string;\n #factory?: () => string;\n #literal?: string;\n /**\n * Returns the configuration object for the selected\n * environment by weighting.\n * \n * By priority the environment is selected by:\n * 1. Literal\n * 2. Environment Variable\n * 3. Factory\n */\n get value() {\n if (this.#literal) {\n return this.#literal;\n }\n if (this.#envVar) {\n const value = process.env[this.#envVar];\n if (value) {\n return value;\n }\n }\n if (this.#factory) {\n return this.#factory();\n }\n }\n \n byEnvironmentVariable(envVar: string) {\n this.#envVar = envVar;\n return this;\n }\n byFactory(factory: () => string) {\n this.#factory = factory;\n return this;\n }\n byLiteral(literal: string) {\n this.#literal = literal;\n return this;\n }\n}\n","import { Config } from \"./config-object\";\nimport { EnvironmentReader } from \"./environment-reader\";\nimport { TestExecutorConfig } from \"./types\";\nimport { AutomationError } from \"@autometa/errors\";\nexport function defineConfig(config: Config, ...configs: TestExecutorConfig[]) {\n const envs: string[] = [];\n const envMap = config.envMap;\n for (const config of configs) {\n if (config.environment) {\n if (envs.includes(config.environment)) {\n throw new AutomationError(\n `Environment ${config.environment} is defined more than once`\n );\n }\n envMap.set(config.environment, config);\n envs.push(config.environment);\n } else if (!config.environment && envs.includes(\"default\")) {\n throw new AutomationError(`Only one default environment can be defined`);\n } else {\n envMap.set(\"default\", config);\n envs.push(\"default\");\n config.environment = \"default\";\n }\n if (config.shim) {\n if (\"error-cause\" in config.shim && config.shim[\"error-cause\"] === true) {\n require(\"error-cause/auto\");\n }\n }\n }\n if (envs.length > 1 && !envs.includes(\"default\")) {\n throw new AutomationError(\n `A default environment must be defined first. At one config must not have an environment defined or define a default environment explicitly with 'environement=\"default\"`\n );\n }\n const setters = config.environments as {\n byLiteral: (literal: string) => EnvironmentReader;\n byEnvironmentVariable: (name: string) => EnvironmentReader;\n byFactory: (action: () => string) => EnvironmentReader;\n };\n return {\n env: setters\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,iBAAiB,aAAa;;;ACAvC;AAAO,IAAM,oBAAN,MAAwB;AAAA,EAAxB;AACL;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAI,QAAQ;AACV,QAAI,mBAAK,WAAU;AACjB,aAAO,mBAAK;AAAA,IACd;AACA,QAAI,mBAAK,UAAS;AAChB,YAAM,QAAQ,QAAQ,IAAI,mBAAK,QAAO;AACtC,UAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,mBAAK,WAAU;AACjB,aAAO,mBAAK,UAAL;AAAA,IACT;AAAA,EACF;AAAA,EAEA,sBAAsB,QAAgB;AACpC,uBAAK,SAAU;AACf,WAAO;AAAA,EACT;AAAA,EACA,UAAU,SAAuB;AAC/B,uBAAK,UAAW;AAChB,WAAO;AAAA,EACT;AAAA,EACA,UAAU,SAAiB;AACzB,uBAAK,UAAW;AAChB,WAAO;AAAA,EACT;AACF;AAvCE;AACA;AACA;;;ADAK,IAAM,SAAN,MAAa;AAAA,EAElB,YAAmB,QAAyC;AAAzC;AADnB,SAAS,eAAkC,IAAI,kBAAkB;AAAA,EACJ;AAAA,EAC7D,IAAI,UAA8B;AAChC,UAAM,MAAM,KAAK,aAAa;AAC9B,QAAI,CAAC,KAAK;AACR,UAAI,CAAC,KAAK,OAAO,IAAI,SAAS,GAAG;AAC/B,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,aAAO,KAAK,OAAO,IAAI,SAAS;AAAA,IAClC;AACA,QAAI,CAAC,KAAK,OAAO,IAAI,GAAG,GAAG;AACzB,YAAM,IAAI;AAAA,QACR,eAAe,GAAG;AAAA,GAAoC,OAAO;AAAA,UAC3D,KAAK;AAAA,QACP,EAAE,KAAK,IAAI,CAAC;AAAA,MACd;AAAA,IACF;AACA,WAAO,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,eAAe,GAAG,iBAAiB;AAAA,EAC1E;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,KAAK,aAAa;AAAA,EAC3B;AACF;;;AEzBA,SAAS,mBAAAA,wBAAuB;AACzB,SAAS,aAAa,WAAmB,SAA+B;AAC7E,QAAM,OAAiB,CAAC;AACxB,QAAM,SAAS,OAAO;AACtB,aAAWC,WAAU,SAAS;AAC5B,QAAIA,QAAO,aAAa;AACtB,UAAI,KAAK,SAASA,QAAO,WAAW,GAAG;AACrC,cAAM,IAAID;AAAA,UACR,eAAeC,QAAO,WAAW;AAAA,QACnC;AAAA,MACF;AACA,aAAO,IAAIA,QAAO,aAAaA,OAAM;AACrC,WAAK,KAAKA,QAAO,WAAW;AAAA,IAC9B,WAAW,CAACA,QAAO,eAAe,KAAK,SAAS,SAAS,GAAG;AAC1D,YAAM,IAAID,iBAAgB,6CAA6C;AAAA,IACzE,OAAO;AACL,aAAO,IAAI,WAAWC,OAAM;AAC5B,WAAK,KAAK,SAAS;AACnB,MAAAA,QAAO,cAAc;AAAA,IACvB;AACA,QAAIA,QAAO,MAAM;AACf,UAAI,iBAAiBA,QAAO,QAAQA,QAAO,KAAK,aAAa,MAAM,MAAM;AACvE,kBAAQ,kBAAkB;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AACA,MAAI,KAAK,SAAS,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG;AAChD,UAAM,IAAID;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,OAAO;AAKvB,SAAO;AAAA,IACL,KAAK;AAAA,EACP;AACF;","names":["AutomationError","config"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as zod from 'zod';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
declare class EnvironmentReader {
|
|
5
|
+
#private;
|
|
6
|
+
/**
|
|
7
|
+
* Returns the configuration object for the selected
|
|
8
|
+
* environment by weighting.
|
|
9
|
+
*
|
|
10
|
+
* By priority the environment is selected by:
|
|
11
|
+
* 1. Literal
|
|
12
|
+
* 2. Environment Variable
|
|
13
|
+
* 3. Factory
|
|
14
|
+
*/
|
|
15
|
+
get value(): string | undefined;
|
|
16
|
+
byEnvironmentVariable(envVar: string): this;
|
|
17
|
+
byFactory(factory: () => string): this;
|
|
18
|
+
byLiteral(literal: string): this;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare const TestExecutorConfigSchema: zod.ZodObject<{
|
|
22
|
+
runner: zod.ZodUnion<[zod.ZodLiteral<"jest">, zod.ZodLiteral<"vitest">]>;
|
|
23
|
+
environment: zod.ZodOptional<zod.ZodString>;
|
|
24
|
+
test: zod.ZodOptional<zod.ZodObject<{
|
|
25
|
+
timeout: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodTuple<[zod.ZodNumber, zod.ZodUnion<[zod.ZodUnion<[zod.ZodUnion<[zod.ZodLiteral<"ms">, zod.ZodLiteral<"s">]>, zod.ZodLiteral<"m">]>, zod.ZodLiteral<"h">]>], null>]>>;
|
|
26
|
+
tagFilter: zod.ZodOptional<zod.ZodEffects<zod.ZodString, string, string>>;
|
|
27
|
+
groupLogging: zod.ZodOptional<zod.ZodBoolean>;
|
|
28
|
+
}, "strip", zod.ZodTypeAny, {
|
|
29
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
30
|
+
tagFilter?: string | undefined;
|
|
31
|
+
groupLogging?: boolean | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
34
|
+
tagFilter?: string | undefined;
|
|
35
|
+
groupLogging?: boolean | undefined;
|
|
36
|
+
}>>;
|
|
37
|
+
roots: zod.ZodObject<{
|
|
38
|
+
features: zod.ZodArray<zod.ZodString, "many">;
|
|
39
|
+
steps: zod.ZodArray<zod.ZodString, "many">;
|
|
40
|
+
app: zod.ZodArray<zod.ZodString, "many">;
|
|
41
|
+
parameterTypes: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
|
|
42
|
+
}, "strip", zod.ZodTypeAny, {
|
|
43
|
+
features: string[];
|
|
44
|
+
steps: string[];
|
|
45
|
+
app: string[];
|
|
46
|
+
parameterTypes?: string[] | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
features: string[];
|
|
49
|
+
steps: string[];
|
|
50
|
+
app: string[];
|
|
51
|
+
parameterTypes?: string[] | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
shim: zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{
|
|
54
|
+
errorCause: zod.ZodOptional<zod.ZodBoolean>;
|
|
55
|
+
}, "strip", zod.ZodTypeAny, {
|
|
56
|
+
errorCause?: boolean | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
errorCause?: boolean | undefined;
|
|
59
|
+
}>>>;
|
|
60
|
+
events: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
|
|
61
|
+
}, "strip", zod.ZodTypeAny, {
|
|
62
|
+
runner: "jest" | "vitest";
|
|
63
|
+
roots: {
|
|
64
|
+
features: string[];
|
|
65
|
+
steps: string[];
|
|
66
|
+
app: string[];
|
|
67
|
+
parameterTypes?: string[] | undefined;
|
|
68
|
+
};
|
|
69
|
+
environment?: string | undefined;
|
|
70
|
+
test?: {
|
|
71
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
72
|
+
tagFilter?: string | undefined;
|
|
73
|
+
groupLogging?: boolean | undefined;
|
|
74
|
+
} | undefined;
|
|
75
|
+
shim?: {
|
|
76
|
+
errorCause?: boolean | undefined;
|
|
77
|
+
} | undefined;
|
|
78
|
+
events?: string[] | undefined;
|
|
79
|
+
}, {
|
|
80
|
+
runner: "jest" | "vitest";
|
|
81
|
+
roots: {
|
|
82
|
+
features: string[];
|
|
83
|
+
steps: string[];
|
|
84
|
+
app: string[];
|
|
85
|
+
parameterTypes?: string[] | undefined;
|
|
86
|
+
};
|
|
87
|
+
environment?: string | undefined;
|
|
88
|
+
test?: {
|
|
89
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
90
|
+
tagFilter?: string | undefined;
|
|
91
|
+
groupLogging?: boolean | undefined;
|
|
92
|
+
} | undefined;
|
|
93
|
+
shim?: {
|
|
94
|
+
errorCause?: boolean | undefined;
|
|
95
|
+
} | undefined;
|
|
96
|
+
events?: string[] | undefined;
|
|
97
|
+
}>;
|
|
98
|
+
|
|
99
|
+
type TestExecutorConfig = z.infer<typeof TestExecutorConfigSchema>;
|
|
100
|
+
|
|
101
|
+
declare class Config {
|
|
102
|
+
envMap: Map<string, TestExecutorConfig>;
|
|
103
|
+
readonly environments: EnvironmentReader;
|
|
104
|
+
constructor(envMap: Map<string, TestExecutorConfig>);
|
|
105
|
+
get current(): TestExecutorConfig;
|
|
106
|
+
get currentEnvironment(): string | undefined;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
declare function defineConfig(config: Config, ...configs: TestExecutorConfig[]): {
|
|
110
|
+
env: {
|
|
111
|
+
byLiteral: (literal: string) => EnvironmentReader;
|
|
112
|
+
byEnvironmentVariable: (name: string) => EnvironmentReader;
|
|
113
|
+
byFactory: (action: () => string) => EnvironmentReader;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export { Config, EnvironmentReader, TestExecutorConfig, defineConfig };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import * as zod from 'zod';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
1
4
|
declare class EnvironmentReader {
|
|
2
5
|
#private;
|
|
3
6
|
/**
|
|
@@ -15,27 +18,99 @@ declare class EnvironmentReader {
|
|
|
15
18
|
byLiteral(literal: string): this;
|
|
16
19
|
}
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
declare const TestExecutorConfigSchema: zod.ZodObject<{
|
|
22
|
+
runner: zod.ZodUnion<[zod.ZodLiteral<"jest">, zod.ZodLiteral<"vitest">]>;
|
|
23
|
+
environment: zod.ZodOptional<zod.ZodString>;
|
|
24
|
+
test: zod.ZodOptional<zod.ZodObject<{
|
|
25
|
+
timeout: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodTuple<[zod.ZodNumber, zod.ZodUnion<[zod.ZodUnion<[zod.ZodUnion<[zod.ZodLiteral<"ms">, zod.ZodLiteral<"s">]>, zod.ZodLiteral<"m">]>, zod.ZodLiteral<"h">]>], null>]>>;
|
|
26
|
+
tagFilter: zod.ZodOptional<zod.ZodEffects<zod.ZodString, string, string>>;
|
|
27
|
+
groupLogging: zod.ZodOptional<zod.ZodBoolean>;
|
|
28
|
+
}, "strip", zod.ZodTypeAny, {
|
|
29
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
30
|
+
tagFilter?: string | undefined;
|
|
31
|
+
groupLogging?: boolean | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
34
|
+
tagFilter?: string | undefined;
|
|
35
|
+
groupLogging?: boolean | undefined;
|
|
36
|
+
}>>;
|
|
37
|
+
roots: zod.ZodObject<{
|
|
38
|
+
features: zod.ZodArray<zod.ZodString, "many">;
|
|
39
|
+
steps: zod.ZodArray<zod.ZodString, "many">;
|
|
40
|
+
app: zod.ZodArray<zod.ZodString, "many">;
|
|
41
|
+
parameterTypes: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
|
|
42
|
+
}, "strip", zod.ZodTypeAny, {
|
|
43
|
+
features: string[];
|
|
44
|
+
steps: string[];
|
|
45
|
+
app: string[];
|
|
46
|
+
parameterTypes?: string[] | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
features: string[];
|
|
49
|
+
steps: string[];
|
|
50
|
+
app: string[];
|
|
51
|
+
parameterTypes?: string[] | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
shim: zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{
|
|
54
|
+
errorCause: zod.ZodOptional<zod.ZodBoolean>;
|
|
55
|
+
}, "strip", zod.ZodTypeAny, {
|
|
56
|
+
errorCause?: boolean | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
errorCause?: boolean | undefined;
|
|
59
|
+
}>>>;
|
|
60
|
+
events: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
|
|
61
|
+
}, "strip", zod.ZodTypeAny, {
|
|
19
62
|
runner: "jest" | "vitest";
|
|
20
|
-
|
|
63
|
+
roots: {
|
|
64
|
+
features: string[];
|
|
65
|
+
steps: string[];
|
|
66
|
+
app: string[];
|
|
67
|
+
parameterTypes?: string[] | undefined;
|
|
68
|
+
};
|
|
69
|
+
environment?: string | undefined;
|
|
21
70
|
test?: {
|
|
22
|
-
timeout?: number;
|
|
23
|
-
tagFilter?: string;
|
|
71
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
72
|
+
tagFilter?: string | undefined;
|
|
73
|
+
groupLogging?: boolean | undefined;
|
|
74
|
+
} | undefined;
|
|
75
|
+
shim?: {
|
|
76
|
+
errorCause?: boolean | undefined;
|
|
77
|
+
} | undefined;
|
|
78
|
+
events?: string[] | undefined;
|
|
79
|
+
}, {
|
|
80
|
+
runner: "jest" | "vitest";
|
|
81
|
+
roots: {
|
|
82
|
+
features: string[];
|
|
83
|
+
steps: string[];
|
|
84
|
+
app: string[];
|
|
85
|
+
parameterTypes?: string[] | undefined;
|
|
24
86
|
};
|
|
25
|
-
|
|
87
|
+
environment?: string | undefined;
|
|
88
|
+
test?: {
|
|
89
|
+
timeout?: number | [number, "ms" | "s" | "m" | "h"] | undefined;
|
|
90
|
+
tagFilter?: string | undefined;
|
|
91
|
+
groupLogging?: boolean | undefined;
|
|
92
|
+
} | undefined;
|
|
93
|
+
shim?: {
|
|
94
|
+
errorCause?: boolean | undefined;
|
|
95
|
+
} | undefined;
|
|
96
|
+
events?: string[] | undefined;
|
|
97
|
+
}>;
|
|
98
|
+
|
|
99
|
+
type TestExecutorConfig = z.infer<typeof TestExecutorConfigSchema>;
|
|
26
100
|
|
|
27
101
|
declare class Config {
|
|
28
102
|
envMap: Map<string, TestExecutorConfig>;
|
|
29
103
|
readonly environments: EnvironmentReader;
|
|
30
104
|
constructor(envMap: Map<string, TestExecutorConfig>);
|
|
31
|
-
get current(): TestExecutorConfig
|
|
105
|
+
get current(): TestExecutorConfig;
|
|
106
|
+
get currentEnvironment(): string | undefined;
|
|
32
107
|
}
|
|
33
108
|
|
|
34
109
|
declare function defineConfig(config: Config, ...configs: TestExecutorConfig[]): {
|
|
35
110
|
env: {
|
|
36
111
|
byLiteral: (literal: string) => EnvironmentReader;
|
|
37
|
-
byEnvironmentVariable: (
|
|
38
|
-
byFactory: (
|
|
112
|
+
byEnvironmentVariable: (name: string) => EnvironmentReader;
|
|
113
|
+
byFactory: (action: () => string) => EnvironmentReader;
|
|
39
114
|
};
|
|
40
115
|
};
|
|
41
116
|
|
package/dist/index.js
CHANGED
|
@@ -121,6 +121,9 @@ var Config = class {
|
|
|
121
121
|
}
|
|
122
122
|
return this.envMap.get(key) ?? (0, import_errors.raise)(`Environment ${key} is not defined`);
|
|
123
123
|
}
|
|
124
|
+
get currentEnvironment() {
|
|
125
|
+
return this.environments.value;
|
|
126
|
+
}
|
|
124
127
|
};
|
|
125
128
|
|
|
126
129
|
// src/define-config.ts
|
|
@@ -144,6 +147,16 @@ function defineConfig(config, ...configs) {
|
|
|
144
147
|
envs.push("default");
|
|
145
148
|
config2.environment = "default";
|
|
146
149
|
}
|
|
150
|
+
if (config2.shim) {
|
|
151
|
+
if ("error-cause" in config2.shim && config2.shim["error-cause"] === true) {
|
|
152
|
+
require("error-cause/auto");
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (envs.length > 1 && !envs.includes("default")) {
|
|
157
|
+
throw new import_errors2.AutomationError(
|
|
158
|
+
`A default environment must be defined first. At one config must not have an environment defined or define a default environment explicitly with 'environement="default"`
|
|
159
|
+
);
|
|
147
160
|
}
|
|
148
161
|
const setters = config.environments;
|
|
149
162
|
return {
|
|
@@ -156,3 +169,4 @@ function defineConfig(config, ...configs) {
|
|
|
156
169
|
EnvironmentReader,
|
|
157
170
|
defineConfig
|
|
158
171
|
});
|
|
172
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/config-object.ts","../src/environment-reader.ts","../src/define-config.ts"],"sourcesContent":["export * from './config-object'\nexport * from './environment-reader'\nexport * from './types'\nexport * from './define-config'","import { AutomationError, raise } from \"@autometa/errors\";\nimport { EnvironmentReader } from \"./environment-reader\";\nimport { TestExecutorConfig } from \"./types\";\nexport class Config {\n readonly environments: EnvironmentReader = new EnvironmentReader();\n constructor(public envMap: Map<string, TestExecutorConfig>) {}\n get current(): TestExecutorConfig {\n const key = this.environments.value;\n if (!key) {\n if (!this.envMap.has(\"default\")) {\n throw new AutomationError(\n `No environment is defined. Define an environment with 'env.byLiteral(\"my-environment\")' or 'env.byEnvironmentVariable(\"MY_ENVIRONMENT\")' or 'env.byFactory(() => \"my-environment\")' or 'env.byLiteral(\"default\")'`\n );\n }\n return this.envMap.get(\"default\") as TestExecutorConfig;\n }\n if (!this.envMap.has(key)) {\n throw new AutomationError(\n `Environment ${key} is not defined. Options are: \\n ${Object.keys(\n this.envMap\n ).join(\"\\n\")}`\n );\n }\n return this.envMap.get(key) ?? raise(`Environment ${key} is not defined`);\n }\n get currentEnvironment() {\n return this.environments.value;\n }\n}\n","export class EnvironmentReader {\n #envVar?: string;\n #factory?: () => string;\n #literal?: string;\n /**\n * Returns the configuration object for the selected\n * environment by weighting.\n * \n * By priority the environment is selected by:\n * 1. Literal\n * 2. Environment Variable\n * 3. Factory\n */\n get value() {\n if (this.#literal) {\n return this.#literal;\n }\n if (this.#envVar) {\n const value = process.env[this.#envVar];\n if (value) {\n return value;\n }\n }\n if (this.#factory) {\n return this.#factory();\n }\n }\n \n byEnvironmentVariable(envVar: string) {\n this.#envVar = envVar;\n return this;\n }\n byFactory(factory: () => string) {\n this.#factory = factory;\n return this;\n }\n byLiteral(literal: string) {\n this.#literal = literal;\n return this;\n }\n}\n","import { Config } from \"./config-object\";\nimport { EnvironmentReader } from \"./environment-reader\";\nimport { TestExecutorConfig } from \"./types\";\nimport { AutomationError } from \"@autometa/errors\";\nexport function defineConfig(config: Config, ...configs: TestExecutorConfig[]) {\n const envs: string[] = [];\n const envMap = config.envMap;\n for (const config of configs) {\n if (config.environment) {\n if (envs.includes(config.environment)) {\n throw new AutomationError(\n `Environment ${config.environment} is defined more than once`\n );\n }\n envMap.set(config.environment, config);\n envs.push(config.environment);\n } else if (!config.environment && envs.includes(\"default\")) {\n throw new AutomationError(`Only one default environment can be defined`);\n } else {\n envMap.set(\"default\", config);\n envs.push(\"default\");\n config.environment = \"default\";\n }\n if (config.shim) {\n if (\"error-cause\" in config.shim && config.shim[\"error-cause\"] === true) {\n require(\"error-cause/auto\");\n }\n }\n }\n if (envs.length > 1 && !envs.includes(\"default\")) {\n throw new AutomationError(\n `A default environment must be defined first. At one config must not have an environment defined or define a default environment explicitly with 'environement=\"default\"`\n );\n }\n const setters = config.environments as {\n byLiteral: (literal: string) => EnvironmentReader;\n byEnvironmentVariable: (name: string) => EnvironmentReader;\n byFactory: (action: () => string) => EnvironmentReader;\n };\n return {\n env: setters\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAuC;;;ACAvC;AAAO,IAAM,oBAAN,MAAwB;AAAA,EAAxB;AACL;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAI,QAAQ;AACV,QAAI,mBAAK,WAAU;AACjB,aAAO,mBAAK;AAAA,IACd;AACA,QAAI,mBAAK,UAAS;AAChB,YAAM,QAAQ,QAAQ,IAAI,mBAAK,QAAO;AACtC,UAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,mBAAK,WAAU;AACjB,aAAO,mBAAK,UAAL;AAAA,IACT;AAAA,EACF;AAAA,EAEA,sBAAsB,QAAgB;AACpC,uBAAK,SAAU;AACf,WAAO;AAAA,EACT;AAAA,EACA,UAAU,SAAuB;AAC/B,uBAAK,UAAW;AAChB,WAAO;AAAA,EACT;AAAA,EACA,UAAU,SAAiB;AACzB,uBAAK,UAAW;AAChB,WAAO;AAAA,EACT;AACF;AAvCE;AACA;AACA;;;ADAK,IAAM,SAAN,MAAa;AAAA,EAElB,YAAmB,QAAyC;AAAzC;AADnB,SAAS,eAAkC,IAAI,kBAAkB;AAAA,EACJ;AAAA,EAC7D,IAAI,UAA8B;AAChC,UAAM,MAAM,KAAK,aAAa;AAC9B,QAAI,CAAC,KAAK;AACR,UAAI,CAAC,KAAK,OAAO,IAAI,SAAS,GAAG;AAC/B,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,aAAO,KAAK,OAAO,IAAI,SAAS;AAAA,IAClC;AACA,QAAI,CAAC,KAAK,OAAO,IAAI,GAAG,GAAG;AACzB,YAAM,IAAI;AAAA,QACR,eAAe,GAAG;AAAA,GAAoC,OAAO;AAAA,UAC3D,KAAK;AAAA,QACP,EAAE,KAAK,IAAI,CAAC;AAAA,MACd;AAAA,IACF;AACA,WAAO,KAAK,OAAO,IAAI,GAAG,SAAK,qBAAM,eAAe,GAAG,iBAAiB;AAAA,EAC1E;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,KAAK,aAAa;AAAA,EAC3B;AACF;;;AEzBA,IAAAA,iBAAgC;AACzB,SAAS,aAAa,WAAmB,SAA+B;AAC7E,QAAM,OAAiB,CAAC;AACxB,QAAM,SAAS,OAAO;AACtB,aAAWC,WAAU,SAAS;AAC5B,QAAIA,QAAO,aAAa;AACtB,UAAI,KAAK,SAASA,QAAO,WAAW,GAAG;AACrC,cAAM,IAAI;AAAA,UACR,eAAeA,QAAO,WAAW;AAAA,QACnC;AAAA,MACF;AACA,aAAO,IAAIA,QAAO,aAAaA,OAAM;AACrC,WAAK,KAAKA,QAAO,WAAW;AAAA,IAC9B,WAAW,CAACA,QAAO,eAAe,KAAK,SAAS,SAAS,GAAG;AAC1D,YAAM,IAAI,+BAAgB,6CAA6C;AAAA,IACzE,OAAO;AACL,aAAO,IAAI,WAAWA,OAAM;AAC5B,WAAK,KAAK,SAAS;AACnB,MAAAA,QAAO,cAAc;AAAA,IACvB;AACA,QAAIA,QAAO,MAAM;AACf,UAAI,iBAAiBA,QAAO,QAAQA,QAAO,KAAK,aAAa,MAAM,MAAM;AACvE,gBAAQ,kBAAkB;AAAA,MAC5B;AAAA,IACF;AAAA,EACF;AACA,MAAI,KAAK,SAAS,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG;AAChD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,OAAO;AAKvB,SAAO;AAAA,IACL,KAAK;AAAA,EACP;AACF;","names":["import_errors","config"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autometa/config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,24 +18,27 @@
|
|
|
18
18
|
"@types/uuid": "^9.0.1",
|
|
19
19
|
"@typescript-eslint/eslint-plugin": "^5.54.1",
|
|
20
20
|
"@typescript-eslint/parser": "^5.54.1",
|
|
21
|
+
"@vitest/coverage-istanbul": "^0.31.0",
|
|
21
22
|
"eslint": "^8.37.0",
|
|
22
|
-
"eslint-config-custom": "0.
|
|
23
|
+
"eslint-config-custom": "0.6.0",
|
|
23
24
|
"eslint-config-prettier": "^8.3.0",
|
|
24
25
|
"rimraf": "^4.1.2",
|
|
25
26
|
"tsconfig": " *",
|
|
26
|
-
"tsup": "^
|
|
27
|
+
"tsup": "^7.2.0",
|
|
27
28
|
"typescript": "^4.9.5",
|
|
28
29
|
"vitest": "^0.29.8"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@autometa/app": "^0.
|
|
32
|
-
"@autometa/asserters": "^0.
|
|
33
|
-
"@autometa/errors": "^0.
|
|
34
|
-
"@autometa/types": "^0.
|
|
32
|
+
"@autometa/app": "^0.1.0",
|
|
33
|
+
"@autometa/asserters": "^0.1.0",
|
|
34
|
+
"@autometa/errors": "^0.1.0",
|
|
35
|
+
"@autometa/types": "^0.4.0",
|
|
36
|
+
"error-cause": "^1.0.5",
|
|
35
37
|
"zod": "^3.21.4"
|
|
36
38
|
},
|
|
37
39
|
"scripts": {
|
|
38
40
|
"test": "vitest run --passWithNoTests",
|
|
41
|
+
"coverage": "vitest run --coverage",
|
|
39
42
|
"prettify": "prettier --config .prettierrc 'src/**/*.ts' --write",
|
|
40
43
|
"lint": "eslint . --max-warnings 0",
|
|
41
44
|
"lint:fix": "eslint . --fix",
|
package/tsup.config.ts
CHANGED
|
@@ -4,7 +4,7 @@ export default defineConfig({
|
|
|
4
4
|
clean: true, // clean up the dist folder
|
|
5
5
|
format: ["cjs", "esm"], // generate cjs and esm files
|
|
6
6
|
dts: true,
|
|
7
|
-
sourcemap:
|
|
7
|
+
sourcemap:true, // generate sourcemaps
|
|
8
8
|
skipNodeModulesBundle: true,
|
|
9
9
|
entryPoints: ["src/index.ts"],
|
|
10
10
|
target: "es2020",
|