@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 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"]}
@@ -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
- type TestExecutorConfig = {
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
- environment?: string;
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 | undefined;
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: (literal: string) => EnvironmentReader;
38
- byFactory: (literal: () => string) => EnvironmentReader;
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.0.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.5.1",
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": "^6.7.0",
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.0.0",
32
- "@autometa/asserters": "^0.0.0",
33
- "@autometa/errors": "^0.0.0",
34
- "@autometa/types": "^0.3.1",
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: false, // generate sourcemaps
7
+ sourcemap:true, // generate sourcemaps
8
8
  skipNodeModulesBundle: true,
9
9
  entryPoints: ["src/index.ts"],
10
10
  target: "es2020",