@konker.dev/config-o-tron 0.0.1
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/LICENSE +15 -0
- package/README.md +131 -0
- package/dist/api.d.ts +24 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +44 -0
- package/dist/api.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +267 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/delete.d.ts +22 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +105 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/delete.test.d.ts +2 -0
- package/dist/commands/delete.test.d.ts.map +1 -0
- package/dist/commands/delete.test.js +165 -0
- package/dist/commands/delete.test.js.map +1 -0
- package/dist/commands/export.d.ts +31 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +117 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/export.test.d.ts +2 -0
- package/dist/commands/export.test.d.ts.map +1 -0
- package/dist/commands/export.test.js +173 -0
- package/dist/commands/export.test.js.map +1 -0
- package/dist/commands/index.d.ts +10 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +10 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/list.d.ts +37 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +107 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/list.test.d.ts +2 -0
- package/dist/commands/list.test.d.ts.map +1 -0
- package/dist/commands/list.test.js +275 -0
- package/dist/commands/list.test.js.map +1 -0
- package/dist/commands/snapshot.d.ts +67 -0
- package/dist/commands/snapshot.d.ts.map +1 -0
- package/dist/commands/snapshot.js +261 -0
- package/dist/commands/snapshot.js.map +1 -0
- package/dist/commands/snapshot.test.d.ts +2 -0
- package/dist/commands/snapshot.test.d.ts.map +1 -0
- package/dist/commands/snapshot.test.js +527 -0
- package/dist/commands/snapshot.test.js.map +1 -0
- package/dist/commands/upsert.d.ts +33 -0
- package/dist/commands/upsert.d.ts.map +1 -0
- package/dist/commands/upsert.js +98 -0
- package/dist/commands/upsert.js.map +1 -0
- package/dist/commands/upsert.test.d.ts +2 -0
- package/dist/commands/upsert.test.d.ts.map +1 -0
- package/dist/commands/upsert.test.js +184 -0
- package/dist/commands/upsert.test.js.map +1 -0
- package/dist/commands/validate.d.ts +23 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +138 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/validate.test.d.ts +2 -0
- package/dist/commands/validate.test.d.ts.map +1 -0
- package/dist/commands/validate.test.js +210 -0
- package/dist/commands/validate.test.js.map +1 -0
- package/dist/config.d.ts +75 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +212 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +107 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +362 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/flatten.d.ts +84 -0
- package/dist/lib/flatten.d.ts.map +1 -0
- package/dist/lib/flatten.js +158 -0
- package/dist/lib/flatten.js.map +1 -0
- package/dist/lib/flatten.test.d.ts +2 -0
- package/dist/lib/flatten.test.d.ts.map +1 -0
- package/dist/lib/flatten.test.js +230 -0
- package/dist/lib/flatten.test.js.map +1 -0
- package/dist/lib/format.d.ts +41 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +182 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/format.test.d.ts +2 -0
- package/dist/lib/format.test.d.ts.map +1 -0
- package/dist/lib/format.test.js +317 -0
- package/dist/lib/format.test.js.map +1 -0
- package/dist/lib/index.d.ts +8 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +8 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/merge.d.ts +42 -0
- package/dist/lib/merge.d.ts.map +1 -0
- package/dist/lib/merge.js +167 -0
- package/dist/lib/merge.js.map +1 -0
- package/dist/lib/merge.test.d.ts +2 -0
- package/dist/lib/merge.test.d.ts.map +1 -0
- package/dist/lib/merge.test.js +218 -0
- package/dist/lib/merge.test.js.map +1 -0
- package/dist/lib/redact.d.ts +29 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +77 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/redact.test.d.ts +2 -0
- package/dist/lib/redact.test.d.ts.map +1 -0
- package/dist/lib/redact.test.js +192 -0
- package/dist/lib/redact.test.js.map +1 -0
- package/dist/providers/AwsSsmProvider.d.ts +3 -0
- package/dist/providers/AwsSsmProvider.d.ts.map +1 -0
- package/dist/providers/AwsSsmProvider.js +230 -0
- package/dist/providers/AwsSsmProvider.js.map +1 -0
- package/dist/providers/AwsSsmProvider.test.d.ts +5 -0
- package/dist/providers/AwsSsmProvider.test.d.ts.map +1 -0
- package/dist/providers/AwsSsmProvider.test.js +200 -0
- package/dist/providers/AwsSsmProvider.test.js.map +1 -0
- package/dist/providers/MockProvider.d.ts +21 -0
- package/dist/providers/MockProvider.d.ts.map +1 -0
- package/dist/providers/MockProvider.js +118 -0
- package/dist/providers/MockProvider.js.map +1 -0
- package/dist/providers/MockProvider.test.d.ts +2 -0
- package/dist/providers/MockProvider.test.d.ts.map +1 -0
- package/dist/providers/MockProvider.test.js +166 -0
- package/dist/providers/MockProvider.test.js.map +1 -0
- package/dist/providers/Provider.d.ts +95 -0
- package/dist/providers/Provider.d.ts.map +1 -0
- package/dist/providers/Provider.js +49 -0
- package/dist/providers/Provider.js.map +1 -0
- package/dist/providers/Provider.test.d.ts +2 -0
- package/dist/providers/Provider.test.d.ts.map +1 -0
- package/dist/providers/Provider.test.js +136 -0
- package/dist/providers/Provider.test.js.map +1 -0
- package/dist/providers/guards.d.ts +13 -0
- package/dist/providers/guards.d.ts.map +1 -0
- package/dist/providers/guards.js +60 -0
- package/dist/providers/guards.js.map +1 -0
- package/dist/providers/guards.test.d.ts +2 -0
- package/dist/providers/guards.test.d.ts.map +1 -0
- package/dist/providers/guards.test.js +84 -0
- package/dist/providers/guards.test.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +8 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/registry.d.ts +27 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +50 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/registry.test.d.ts +5 -0
- package/dist/providers/registry.test.d.ts.map +1 -0
- package/dist/providers/registry.test.js +89 -0
- package/dist/providers/registry.test.js.map +1 -0
- package/dist/schema/index.d.ts +8 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +8 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/loader.d.ts +21 -0
- package/dist/schema/loader.d.ts.map +1 -0
- package/dist/schema/loader.js +68 -0
- package/dist/schema/loader.js.map +1 -0
- package/dist/schema/loader.test.d.ts +2 -0
- package/dist/schema/loader.test.d.ts.map +1 -0
- package/dist/schema/loader.test.js +111 -0
- package/dist/schema/loader.test.js.map +1 -0
- package/dist/schema/parser.d.ts +17 -0
- package/dist/schema/parser.d.ts.map +1 -0
- package/dist/schema/parser.js +55 -0
- package/dist/schema/parser.js.map +1 -0
- package/dist/schema/parser.test.d.ts +2 -0
- package/dist/schema/parser.test.d.ts.map +1 -0
- package/dist/schema/parser.test.js +62 -0
- package/dist/schema/parser.test.js.map +1 -0
- package/dist/schema/resolver.d.ts +16 -0
- package/dist/schema/resolver.d.ts.map +1 -0
- package/dist/schema/resolver.js +41 -0
- package/dist/schema/resolver.js.map +1 -0
- package/dist/schema/resolver.test.d.ts +2 -0
- package/dist/schema/resolver.test.d.ts.map +1 -0
- package/dist/schema/resolver.test.js +77 -0
- package/dist/schema/resolver.test.js.map +1 -0
- package/dist/schema/validator.d.ts +16 -0
- package/dist/schema/validator.d.ts.map +1 -0
- package/dist/schema/validator.js +21 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/schema/validator.test.d.ts +2 -0
- package/dist/schema/validator.test.d.ts.map +1 -0
- package/dist/schema/validator.test.js +40 -0
- package/dist/schema/validator.test.js.map +1 -0
- package/dist/test/fixtures/index.d.ts +39 -0
- package/dist/test/fixtures/index.d.ts.map +1 -0
- package/dist/test/fixtures/index.js +85 -0
- package/dist/test/fixtures/index.js.map +1 -0
- package/dist/test/fixtures/schema.basic.d.ts +16 -0
- package/dist/test/fixtures/schema.basic.d.ts.map +1 -0
- package/dist/test/fixtures/schema.basic.js +16 -0
- package/dist/test/fixtures/schema.basic.js.map +1 -0
- package/dist/test/fixtures/schema.basic.zod.d.ts +58 -0
- package/dist/test/fixtures/schema.basic.zod.d.ts.map +1 -0
- package/dist/test/fixtures/schema.basic.zod.js +16 -0
- package/dist/test/fixtures/schema.basic.zod.js.map +1 -0
- package/dist/validation/effect.d.ts +3 -0
- package/dist/validation/effect.d.ts.map +1 -0
- package/dist/validation/effect.js +368 -0
- package/dist/validation/effect.js.map +1 -0
- package/dist/validation/effect.test.d.ts +2 -0
- package/dist/validation/effect.test.d.ts.map +1 -0
- package/dist/validation/effect.test.js +137 -0
- package/dist/validation/effect.test.js.map +1 -0
- package/dist/validation/hash.d.ts +2 -0
- package/dist/validation/hash.d.ts.map +1 -0
- package/dist/validation/hash.js +27 -0
- package/dist/validation/hash.js.map +1 -0
- package/dist/validation/hash.test.d.ts +2 -0
- package/dist/validation/hash.test.d.ts.map +1 -0
- package/dist/validation/hash.test.js +25 -0
- package/dist/validation/hash.test.js.map +1 -0
- package/dist/validation/index.d.ts +7 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +11 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/parse.d.ts +7 -0
- package/dist/validation/parse.d.ts.map +1 -0
- package/dist/validation/parse.js +44 -0
- package/dist/validation/parse.js.map +1 -0
- package/dist/validation/parse.test.d.ts +2 -0
- package/dist/validation/parse.test.d.ts.map +1 -0
- package/dist/validation/parse.test.js +47 -0
- package/dist/validation/parse.test.js.map +1 -0
- package/dist/validation/types.d.ts +33 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +2 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/zod.d.ts +3 -0
- package/dist/validation/zod.d.ts.map +1 -0
- package/dist/validation/zod.js +326 -0
- package/dist/validation/zod.js.map +1 -0
- package/dist/validation/zod.test.d.ts +2 -0
- package/dist/validation/zod.test.d.ts.map +1 -0
- package/dist/validation/zod.test.js +161 -0
- package/dist/validation/zod.test.js.map +1 -0
- package/package.json +242 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate Command Tests
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
8
|
+
import {} from '../config.js';
|
|
9
|
+
import { ErrorCode } from '../errors.js';
|
|
10
|
+
import { basicEnvContent, basicParsedConfig, createTempDir, createTestConfig, removeDir, schemaBasicPath, writeFile, writeJson, } from '../test/fixtures/index.js';
|
|
11
|
+
import { executeValidate, runValidate } from './validate.js';
|
|
12
|
+
describe('Validate Command', () => {
|
|
13
|
+
let tempDir;
|
|
14
|
+
let consoleSpy;
|
|
15
|
+
let consoleErrorSpy;
|
|
16
|
+
const baseConfig = createTestConfig({ schema: schemaBasicPath });
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
tempDir = createTempDir('config-o-tron-validate-test-');
|
|
19
|
+
consoleSpy = vi.spyOn(console, 'log').mockImplementation(vi.fn());
|
|
20
|
+
consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(vi.fn());
|
|
21
|
+
});
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
vi.restoreAllMocks();
|
|
24
|
+
removeDir(tempDir);
|
|
25
|
+
});
|
|
26
|
+
describe('executeValidate', () => {
|
|
27
|
+
it('should fail when file does not exist', async () => {
|
|
28
|
+
const exit = await Effect.runPromiseExit(executeValidate({
|
|
29
|
+
file: '/nonexistent/file.json',
|
|
30
|
+
config: baseConfig,
|
|
31
|
+
}));
|
|
32
|
+
expect(exit._tag).toBe('Failure');
|
|
33
|
+
if (exit._tag === 'Failure' && exit.cause._tag === 'Fail') {
|
|
34
|
+
expect(exit.cause.error.context.code).toBe(ErrorCode.SYS001);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
it('should validate valid JSON file', async () => {
|
|
38
|
+
const jsonPath = path.join(tempDir, 'valid.json');
|
|
39
|
+
writeJson(jsonPath, basicParsedConfig);
|
|
40
|
+
const result = await Effect.runPromise(executeValidate({
|
|
41
|
+
file: jsonPath,
|
|
42
|
+
format: 'json',
|
|
43
|
+
config: baseConfig,
|
|
44
|
+
}));
|
|
45
|
+
expect(result.valid).toBe(true);
|
|
46
|
+
expect(result.errors).toEqual([]);
|
|
47
|
+
expect(result.warnings).toEqual([]);
|
|
48
|
+
});
|
|
49
|
+
it('should detect validation errors', async () => {
|
|
50
|
+
const jsonPath = path.join(tempDir, 'invalid.json');
|
|
51
|
+
writeJson(jsonPath, {
|
|
52
|
+
...basicParsedConfig,
|
|
53
|
+
database: { ...basicParsedConfig.database, port: 'not-a-number' },
|
|
54
|
+
});
|
|
55
|
+
const result = await Effect.runPromise(executeValidate({
|
|
56
|
+
file: jsonPath,
|
|
57
|
+
format: 'json',
|
|
58
|
+
config: baseConfig,
|
|
59
|
+
}));
|
|
60
|
+
expect(result.valid).toBe(false);
|
|
61
|
+
expect(result.errors.length).toBeGreaterThan(0);
|
|
62
|
+
expect(result.warnings).toEqual([]);
|
|
63
|
+
});
|
|
64
|
+
it('should validate ENV file format', async () => {
|
|
65
|
+
const envPath = path.join(tempDir, 'config.env');
|
|
66
|
+
writeFile(envPath, `${basicEnvContent}\n`);
|
|
67
|
+
const result = await Effect.runPromise(executeValidate({
|
|
68
|
+
file: envPath,
|
|
69
|
+
format: 'env',
|
|
70
|
+
config: baseConfig,
|
|
71
|
+
}));
|
|
72
|
+
expect(result.valid).toBe(true);
|
|
73
|
+
expect(result.warnings).toEqual([]);
|
|
74
|
+
});
|
|
75
|
+
it('should warn on unknown env keys when not strict', async () => {
|
|
76
|
+
const envPath = path.join(tempDir, 'config-unknown.env');
|
|
77
|
+
writeFile(envPath, `${basicEnvContent}\nEXTRA_KEY=oops\n`);
|
|
78
|
+
const result = await Effect.runPromise(executeValidate({
|
|
79
|
+
file: envPath,
|
|
80
|
+
format: 'env',
|
|
81
|
+
config: baseConfig,
|
|
82
|
+
}));
|
|
83
|
+
expect(result.warnings.length).toBeGreaterThan(0);
|
|
84
|
+
});
|
|
85
|
+
it('should fail on unknown env keys in strict mode', async () => {
|
|
86
|
+
const envPath = path.join(tempDir, 'config-unknown-strict.env');
|
|
87
|
+
writeFile(envPath, `${basicEnvContent}\nEXTRA_KEY=oops\n`);
|
|
88
|
+
const strictConfig = { ...baseConfig, strict: true };
|
|
89
|
+
const exit = await Effect.runPromiseExit(executeValidate({
|
|
90
|
+
file: envPath,
|
|
91
|
+
format: 'env',
|
|
92
|
+
config: strictConfig,
|
|
93
|
+
}));
|
|
94
|
+
expect(exit._tag).toBe('Failure');
|
|
95
|
+
if (exit._tag === 'Failure' && exit.cause._tag === 'Fail') {
|
|
96
|
+
expect(exit.cause.error.context.code).toBe(ErrorCode.VAL004);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
it('should fail for invalid JSON', async () => {
|
|
100
|
+
const jsonPath = path.join(tempDir, 'invalid-json.json');
|
|
101
|
+
writeFile(jsonPath, 'not valid json {{{');
|
|
102
|
+
const exit = await Effect.runPromiseExit(executeValidate({
|
|
103
|
+
file: jsonPath,
|
|
104
|
+
format: 'json',
|
|
105
|
+
config: baseConfig,
|
|
106
|
+
}));
|
|
107
|
+
expect(exit._tag).toBe('Failure');
|
|
108
|
+
});
|
|
109
|
+
it('should auto-detect format', async () => {
|
|
110
|
+
const jsonPath = path.join(tempDir, 'config.json');
|
|
111
|
+
writeJson(jsonPath, basicParsedConfig);
|
|
112
|
+
const result = await Effect.runPromise(executeValidate({
|
|
113
|
+
file: jsonPath,
|
|
114
|
+
config: baseConfig,
|
|
115
|
+
}));
|
|
116
|
+
expect(result.valid).toBe(true);
|
|
117
|
+
expect(result.warnings).toEqual([]);
|
|
118
|
+
});
|
|
119
|
+
it('should fail on unknown keys in strict mode', async () => {
|
|
120
|
+
const jsonPath = path.join(tempDir, 'unknown-keys.json');
|
|
121
|
+
writeJson(jsonPath, { ...basicParsedConfig, extra: 'nope' });
|
|
122
|
+
const strictConfig = { ...baseConfig, strict: true };
|
|
123
|
+
const exit = await Effect.runPromiseExit(executeValidate({
|
|
124
|
+
file: jsonPath,
|
|
125
|
+
format: 'json',
|
|
126
|
+
config: strictConfig,
|
|
127
|
+
}));
|
|
128
|
+
expect(exit._tag).toBe('Failure');
|
|
129
|
+
if (exit._tag === 'Failure' && exit.cause._tag === 'Fail') {
|
|
130
|
+
expect(exit.cause.error.context.code).toBe(ErrorCode.VAL004);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
it('should allow non-object JSON to skip unknown key checks', async () => {
|
|
134
|
+
const jsonPath = path.join(tempDir, 'array.json');
|
|
135
|
+
writeJson(jsonPath, ['value']);
|
|
136
|
+
const result = await Effect.runPromise(executeValidate({
|
|
137
|
+
file: jsonPath,
|
|
138
|
+
format: 'json',
|
|
139
|
+
config: baseConfig,
|
|
140
|
+
}));
|
|
141
|
+
expect(result.valid).toBe(false);
|
|
142
|
+
});
|
|
143
|
+
it('should fail when format cannot be detected', async () => {
|
|
144
|
+
const textPath = path.join(tempDir, 'config.txt');
|
|
145
|
+
writeFile(textPath, 'foo=bar\n');
|
|
146
|
+
const exit = await Effect.runPromiseExit(executeValidate({
|
|
147
|
+
file: textPath,
|
|
148
|
+
config: baseConfig,
|
|
149
|
+
}));
|
|
150
|
+
expect(exit._tag).toBe('Failure');
|
|
151
|
+
if (exit._tag === 'Failure' && exit.cause._tag === 'Fail') {
|
|
152
|
+
expect(exit.cause.error.context.code).toBe(ErrorCode.SYS001);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
it('should fail when file cannot be read', async () => {
|
|
156
|
+
const jsonPath = path.join(tempDir, 'unreadable.json');
|
|
157
|
+
writeJson(jsonPath, basicParsedConfig);
|
|
158
|
+
fs.chmodSync(jsonPath, 0o000);
|
|
159
|
+
try {
|
|
160
|
+
const exit = await Effect.runPromiseExit(executeValidate({
|
|
161
|
+
file: jsonPath,
|
|
162
|
+
format: 'json',
|
|
163
|
+
config: baseConfig,
|
|
164
|
+
}));
|
|
165
|
+
expect(exit._tag).toBe('Failure');
|
|
166
|
+
if (exit._tag === 'Failure' && exit.cause._tag === 'Fail') {
|
|
167
|
+
expect(exit.cause.error.context.code).toBe(ErrorCode.SYS001);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
finally {
|
|
171
|
+
fs.chmodSync(jsonPath, 0o600);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe('runValidate', () => {
|
|
176
|
+
it('should print success message for valid file', async () => {
|
|
177
|
+
const jsonPath = path.join(tempDir, 'valid.json');
|
|
178
|
+
writeJson(jsonPath, basicParsedConfig);
|
|
179
|
+
const result = await Effect.runPromise(runValidate({
|
|
180
|
+
file: jsonPath,
|
|
181
|
+
format: 'json',
|
|
182
|
+
config: baseConfig,
|
|
183
|
+
}));
|
|
184
|
+
expect(result).toBe(true);
|
|
185
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Validation passed'));
|
|
186
|
+
});
|
|
187
|
+
it('should print error message for invalid file', async () => {
|
|
188
|
+
const jsonPath = path.join(tempDir, 'invalid.json');
|
|
189
|
+
writeJson(jsonPath, {});
|
|
190
|
+
const result = await Effect.runPromise(runValidate({
|
|
191
|
+
file: jsonPath,
|
|
192
|
+
format: 'json',
|
|
193
|
+
config: baseConfig,
|
|
194
|
+
}));
|
|
195
|
+
expect(result).toBe(false);
|
|
196
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Validation failed'));
|
|
197
|
+
});
|
|
198
|
+
it('should print warnings when unknown keys are present', async () => {
|
|
199
|
+
const envPath = path.join(tempDir, 'warn.env');
|
|
200
|
+
writeFile(envPath, `${basicEnvContent}\nEXTRA_KEY=oops\n`);
|
|
201
|
+
await Effect.runPromise(runValidate({
|
|
202
|
+
file: envPath,
|
|
203
|
+
format: 'env',
|
|
204
|
+
config: baseConfig,
|
|
205
|
+
}));
|
|
206
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Warning'));
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
//# sourceMappingURL=validate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.test.js","sourceRoot":"","sources":["../../src/commands/validate.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import * as Schema from 'effect/Schema';
|
|
3
|
+
/**
|
|
4
|
+
* ConfigOTron configuration from config-o-tronrc.json/config-o-tronrc.json5
|
|
5
|
+
*/
|
|
6
|
+
export declare const ProviderGuardsSchema: Schema.Record$<typeof Schema.String, typeof Schema.Unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* Provider guard configuration mapping
|
|
9
|
+
*/
|
|
10
|
+
export type ProviderGuardsConfig = Schema.Schema.Type<typeof ProviderGuardsSchema>;
|
|
11
|
+
export declare const ConfigOTronRcSchema: Schema.Struct<{
|
|
12
|
+
env: Schema.optional<typeof Schema.String>;
|
|
13
|
+
provider: Schema.optional<typeof Schema.String>;
|
|
14
|
+
ssmPrefix: Schema.optional<typeof Schema.String>;
|
|
15
|
+
schema: Schema.optional<typeof Schema.String>;
|
|
16
|
+
validation: Schema.optional<Schema.Union<[Schema.Literal<["effect"]>, Schema.Literal<["zod"]>]>>;
|
|
17
|
+
sources: Schema.optional<Schema.Array$<typeof Schema.String>>;
|
|
18
|
+
format: Schema.optional<Schema.Union<[Schema.Literal<["env"]>, Schema.Literal<["json"]>]>>;
|
|
19
|
+
separator: Schema.optional<typeof Schema.String>;
|
|
20
|
+
cache: Schema.optional<typeof Schema.String>;
|
|
21
|
+
providerGuards: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.Unknown>>;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* ConfigOTron configuration from config-o-tronrc.json/config-o-tronrc.json5
|
|
25
|
+
*/
|
|
26
|
+
export type ConfigOTronRcConfig = Schema.Schema.Type<typeof ConfigOTronRcSchema>;
|
|
27
|
+
export declare const ResolvedConfigSchema: Schema.Struct<{
|
|
28
|
+
env: typeof Schema.String;
|
|
29
|
+
provider: typeof Schema.String;
|
|
30
|
+
ssmPrefix: typeof Schema.String;
|
|
31
|
+
schema: typeof Schema.String;
|
|
32
|
+
validation: Schema.Union<[Schema.Literal<["effect"]>, Schema.Literal<["zod"]>]>;
|
|
33
|
+
sources: Schema.Array$<typeof Schema.String>;
|
|
34
|
+
format: Schema.Union<[Schema.Literal<["env"]>, Schema.Literal<["json"]>]>;
|
|
35
|
+
separator: typeof Schema.String;
|
|
36
|
+
cache: Schema.optional<typeof Schema.String>;
|
|
37
|
+
ci: typeof Schema.Boolean;
|
|
38
|
+
strict: typeof Schema.Boolean;
|
|
39
|
+
providerGuards: Schema.Record$<typeof Schema.String, typeof Schema.Unknown>;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Resolved configuration with all values
|
|
43
|
+
*/
|
|
44
|
+
export type ResolvedConfig = Schema.Schema.Type<typeof ResolvedConfigSchema>;
|
|
45
|
+
export declare const CLIOptionsSchema: Schema.Struct<{
|
|
46
|
+
env: Schema.optional<typeof Schema.String>;
|
|
47
|
+
provider: Schema.optional<typeof Schema.String>;
|
|
48
|
+
ssmPrefix: Schema.optional<typeof Schema.String>;
|
|
49
|
+
schema: Schema.optional<typeof Schema.String>;
|
|
50
|
+
validation: Schema.optional<Schema.Union<[Schema.Literal<["effect"]>, Schema.Literal<["zod"]>]>>;
|
|
51
|
+
source: Schema.optional<Schema.Array$<typeof Schema.String>>;
|
|
52
|
+
format: Schema.optional<Schema.Union<[Schema.Literal<["env"]>, Schema.Literal<["json"]>]>>;
|
|
53
|
+
separator: Schema.optional<typeof Schema.String>;
|
|
54
|
+
cache: Schema.optional<typeof Schema.String>;
|
|
55
|
+
noCache: Schema.optional<typeof Schema.Boolean>;
|
|
56
|
+
ci: Schema.optional<typeof Schema.Boolean>;
|
|
57
|
+
strict: Schema.optional<typeof Schema.Boolean>;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* CLI options that override config
|
|
61
|
+
*/
|
|
62
|
+
export type CLIOptions = Schema.Schema.Type<typeof CLIOptionsSchema>;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve configuration with precedence:
|
|
65
|
+
* 1. CLI flags (highest)
|
|
66
|
+
* 2. Environment variables
|
|
67
|
+
* 3. config-o-tronrc.json/config-o-tronrc.json5
|
|
68
|
+
* 4. Defaults (lowest)
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveConfig(cliOptions?: CLIOptions): Effect.Effect<ResolvedConfig, never>;
|
|
71
|
+
/**
|
|
72
|
+
* Merge CLI options into resolved config
|
|
73
|
+
*/
|
|
74
|
+
export declare function mergeCliOptions(config: ResolvedConfig, cliOptions: CLIOptions): ResolvedConfig;
|
|
75
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAOxC;;GAEG;AACH,eAAO,MAAM,oBAAoB,6DAA+D,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEnF,eAAO,MAAM,mBAAmB;;;;;;;;;;;EAW9B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEjF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;EAa/B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;EAa3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAsFrE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,UAAU,GAAE,UAAe,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAkE/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,cAAc,CAgB9F"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Loading
|
|
3
|
+
*
|
|
4
|
+
* Handles config-o-tronrc.json/config-o-tronrc.json5 loading and environment variable precedence
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'node:fs';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import * as Effect from 'effect/Effect';
|
|
9
|
+
import * as Either from 'effect/Either';
|
|
10
|
+
import { pipe } from 'effect/Function';
|
|
11
|
+
import * as Schema from 'effect/Schema';
|
|
12
|
+
import JSON5 from 'json5';
|
|
13
|
+
// --------------------------------------------------------------------------
|
|
14
|
+
// Types
|
|
15
|
+
// --------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* ConfigOTron configuration from config-o-tronrc.json/config-o-tronrc.json5
|
|
18
|
+
*/
|
|
19
|
+
export const ProviderGuardsSchema = Schema.Record({ key: Schema.String, value: Schema.Unknown });
|
|
20
|
+
export const ConfigOTronRcSchema = Schema.Struct({
|
|
21
|
+
env: Schema.optional(Schema.String),
|
|
22
|
+
provider: Schema.optional(Schema.String),
|
|
23
|
+
ssmPrefix: Schema.optional(Schema.String),
|
|
24
|
+
schema: Schema.optional(Schema.String),
|
|
25
|
+
validation: Schema.optional(Schema.Union(Schema.Literal('effect'), Schema.Literal('zod'))),
|
|
26
|
+
sources: Schema.optional(Schema.Array(Schema.String)),
|
|
27
|
+
format: Schema.optional(Schema.Union(Schema.Literal('env'), Schema.Literal('json'))),
|
|
28
|
+
separator: Schema.optional(Schema.String),
|
|
29
|
+
cache: Schema.optional(Schema.String),
|
|
30
|
+
providerGuards: Schema.optional(ProviderGuardsSchema),
|
|
31
|
+
});
|
|
32
|
+
export const ResolvedConfigSchema = Schema.Struct({
|
|
33
|
+
env: Schema.String,
|
|
34
|
+
provider: Schema.String,
|
|
35
|
+
ssmPrefix: Schema.String,
|
|
36
|
+
schema: Schema.String,
|
|
37
|
+
validation: Schema.Union(Schema.Literal('effect'), Schema.Literal('zod')),
|
|
38
|
+
sources: Schema.Array(Schema.String),
|
|
39
|
+
format: Schema.Union(Schema.Literal('env'), Schema.Literal('json')),
|
|
40
|
+
separator: Schema.String,
|
|
41
|
+
cache: Schema.optional(Schema.String),
|
|
42
|
+
ci: Schema.Boolean,
|
|
43
|
+
strict: Schema.Boolean,
|
|
44
|
+
providerGuards: ProviderGuardsSchema,
|
|
45
|
+
});
|
|
46
|
+
export const CLIOptionsSchema = Schema.Struct({
|
|
47
|
+
env: Schema.optional(Schema.String),
|
|
48
|
+
provider: Schema.optional(Schema.String),
|
|
49
|
+
ssmPrefix: Schema.optional(Schema.String),
|
|
50
|
+
schema: Schema.optional(Schema.String),
|
|
51
|
+
validation: Schema.optional(Schema.Union(Schema.Literal('effect'), Schema.Literal('zod'))),
|
|
52
|
+
source: Schema.optional(Schema.Array(Schema.String)),
|
|
53
|
+
format: Schema.optional(Schema.Union(Schema.Literal('env'), Schema.Literal('json'))),
|
|
54
|
+
separator: Schema.optional(Schema.String),
|
|
55
|
+
cache: Schema.optional(Schema.String),
|
|
56
|
+
noCache: Schema.optional(Schema.Boolean),
|
|
57
|
+
ci: Schema.optional(Schema.Boolean),
|
|
58
|
+
strict: Schema.optional(Schema.Boolean),
|
|
59
|
+
});
|
|
60
|
+
// --------------------------------------------------------------------------
|
|
61
|
+
// Defaults
|
|
62
|
+
// --------------------------------------------------------------------------
|
|
63
|
+
const DEFAULT_CONFIG = {
|
|
64
|
+
env: 'dev',
|
|
65
|
+
provider: 'aws-ssm',
|
|
66
|
+
ssmPrefix: '/config-o-tron',
|
|
67
|
+
schema: 'src/schema.ts',
|
|
68
|
+
validation: 'effect',
|
|
69
|
+
sources: [],
|
|
70
|
+
format: 'env',
|
|
71
|
+
separator: '_',
|
|
72
|
+
cache: undefined,
|
|
73
|
+
ci: false,
|
|
74
|
+
strict: false,
|
|
75
|
+
providerGuards: {},
|
|
76
|
+
};
|
|
77
|
+
// --------------------------------------------------------------------------
|
|
78
|
+
// Environment Variables
|
|
79
|
+
// --------------------------------------------------------------------------
|
|
80
|
+
function getEnvVar(name) {
|
|
81
|
+
return process.env[name];
|
|
82
|
+
}
|
|
83
|
+
function getEnvBool(name) {
|
|
84
|
+
const value = getEnvVar(name);
|
|
85
|
+
if (value === undefined)
|
|
86
|
+
return undefined;
|
|
87
|
+
return value === '1' || value.toLowerCase() === 'true';
|
|
88
|
+
}
|
|
89
|
+
// --------------------------------------------------------------------------
|
|
90
|
+
// Config File Loading
|
|
91
|
+
// --------------------------------------------------------------------------
|
|
92
|
+
const RC_FILENAMES = ['config-o-tronrc.json5', 'config-o-tronrc.json'];
|
|
93
|
+
/**
|
|
94
|
+
* Load config-o-tronrc.json/config-o-tronrc.json5 from the current directory or parent directories
|
|
95
|
+
*/
|
|
96
|
+
function loadRcFile(startDir) {
|
|
97
|
+
return Effect.sync(() => {
|
|
98
|
+
let currentDir = startDir;
|
|
99
|
+
const root = path.parse(currentDir).root;
|
|
100
|
+
while (currentDir !== root) {
|
|
101
|
+
for (const fileName of RC_FILENAMES) {
|
|
102
|
+
const rcPath = path.join(currentDir, fileName);
|
|
103
|
+
try {
|
|
104
|
+
if (fs.existsSync(rcPath)) {
|
|
105
|
+
const content = fs.readFileSync(rcPath, 'utf-8');
|
|
106
|
+
const parsed = JSON5.parse(content);
|
|
107
|
+
const decoded = Schema.decodeUnknownEither(ConfigOTronRcSchema)(parsed);
|
|
108
|
+
if (Either.isRight(decoded)) {
|
|
109
|
+
return decoded.right;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// Ignore parse errors, continue searching
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
currentDir = path.dirname(currentDir);
|
|
118
|
+
}
|
|
119
|
+
return undefined;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// --------------------------------------------------------------------------
|
|
123
|
+
// Config Resolution
|
|
124
|
+
// --------------------------------------------------------------------------
|
|
125
|
+
/**
|
|
126
|
+
* Check if running in CI mode
|
|
127
|
+
*/
|
|
128
|
+
function isCIMode(cliCi) {
|
|
129
|
+
if (cliCi !== undefined)
|
|
130
|
+
return cliCi;
|
|
131
|
+
if (getEnvBool('CONFIG_O_TRON_CI'))
|
|
132
|
+
return true;
|
|
133
|
+
if (!process.stdin.isTTY)
|
|
134
|
+
return true;
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Resolve configuration with precedence:
|
|
139
|
+
* 1. CLI flags (highest)
|
|
140
|
+
* 2. Environment variables
|
|
141
|
+
* 3. config-o-tronrc.json/config-o-tronrc.json5
|
|
142
|
+
* 4. Defaults (lowest)
|
|
143
|
+
*/
|
|
144
|
+
export function resolveConfig(cliOptions = {}) {
|
|
145
|
+
return pipe(loadRcFile(process.cwd()), Effect.map((rcConfig) => {
|
|
146
|
+
// Resolve env (special: also check NODE_ENV)
|
|
147
|
+
const env = cliOptions.env ??
|
|
148
|
+
getEnvVar('CONFIG_O_TRON_ENV') ??
|
|
149
|
+
rcConfig?.env ??
|
|
150
|
+
getEnvVar('NODE_ENV') ??
|
|
151
|
+
DEFAULT_CONFIG.env;
|
|
152
|
+
// Resolve other values
|
|
153
|
+
const provider = cliOptions.provider ?? getEnvVar('CONFIG_O_TRON_PROVIDER') ?? rcConfig?.provider ?? DEFAULT_CONFIG.provider;
|
|
154
|
+
const ssmPrefix = cliOptions.ssmPrefix ??
|
|
155
|
+
getEnvVar('CONFIG_O_TRON_SSM_PREFIX') ??
|
|
156
|
+
rcConfig?.ssmPrefix ??
|
|
157
|
+
DEFAULT_CONFIG.ssmPrefix;
|
|
158
|
+
const schema = cliOptions.schema ?? getEnvVar('CONFIG_O_TRON_SCHEMA') ?? rcConfig?.schema ?? DEFAULT_CONFIG.schema;
|
|
159
|
+
const validation = cliOptions.validation ??
|
|
160
|
+
getEnvVar('CONFIG_O_TRON_VALIDATION') ??
|
|
161
|
+
rcConfig?.validation ??
|
|
162
|
+
DEFAULT_CONFIG.validation;
|
|
163
|
+
const sources = cliOptions.source ?? rcConfig?.sources ?? DEFAULT_CONFIG.sources;
|
|
164
|
+
const format = cliOptions.format ??
|
|
165
|
+
getEnvVar('CONFIG_O_TRON_FORMAT') ??
|
|
166
|
+
rcConfig?.format ??
|
|
167
|
+
DEFAULT_CONFIG.format;
|
|
168
|
+
const separator = cliOptions.separator ?? rcConfig?.separator ?? DEFAULT_CONFIG.separator;
|
|
169
|
+
// Cache handling: --no-cache disables, otherwise use env or rc
|
|
170
|
+
const cache = cliOptions.noCache
|
|
171
|
+
? undefined
|
|
172
|
+
: (cliOptions.cache ?? getEnvVar('CONFIG_O_TRON_CACHE') ?? rcConfig?.cache ?? DEFAULT_CONFIG.cache);
|
|
173
|
+
const ci = isCIMode(cliOptions.ci);
|
|
174
|
+
const strict = cliOptions.strict ?? false;
|
|
175
|
+
const providerGuards = rcConfig?.providerGuards ?? DEFAULT_CONFIG.providerGuards;
|
|
176
|
+
return {
|
|
177
|
+
env,
|
|
178
|
+
provider,
|
|
179
|
+
ssmPrefix,
|
|
180
|
+
schema,
|
|
181
|
+
validation,
|
|
182
|
+
sources,
|
|
183
|
+
format,
|
|
184
|
+
separator,
|
|
185
|
+
cache,
|
|
186
|
+
ci,
|
|
187
|
+
strict,
|
|
188
|
+
providerGuards,
|
|
189
|
+
};
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Merge CLI options into resolved config
|
|
194
|
+
*/
|
|
195
|
+
export function mergeCliOptions(config, cliOptions) {
|
|
196
|
+
return {
|
|
197
|
+
...config,
|
|
198
|
+
env: cliOptions.env ?? config.env,
|
|
199
|
+
provider: cliOptions.provider ?? config.provider,
|
|
200
|
+
ssmPrefix: cliOptions.ssmPrefix ?? config.ssmPrefix,
|
|
201
|
+
schema: cliOptions.schema ?? config.schema,
|
|
202
|
+
validation: cliOptions.validation ?? config.validation,
|
|
203
|
+
sources: cliOptions.source ?? config.sources,
|
|
204
|
+
format: cliOptions.format ?? config.format,
|
|
205
|
+
separator: cliOptions.separator ?? config.separator,
|
|
206
|
+
cache: cliOptions.noCache ? undefined : (cliOptions.cache ?? config.cache),
|
|
207
|
+
ci: cliOptions.ci ?? config.ci,
|
|
208
|
+
strict: cliOptions.strict ?? config.strict,
|
|
209
|
+
providerGuards: config.providerGuards,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
export declare const EXIT_SUCCESS = 0;
|
|
2
|
+
export declare const EXIT_VALIDATION_ERROR = 1;
|
|
3
|
+
export declare const EXIT_CONFIG_ERROR = 2;
|
|
4
|
+
export declare const EXIT_FILE_ERROR = 3;
|
|
5
|
+
export declare const EXIT_AUTH_ERROR = 4;
|
|
6
|
+
export declare const EXIT_SCHEMA_MISMATCH = 5;
|
|
7
|
+
export type ExitCode = typeof EXIT_SUCCESS | typeof EXIT_VALIDATION_ERROR | typeof EXIT_CONFIG_ERROR | typeof EXIT_FILE_ERROR | typeof EXIT_AUTH_ERROR | typeof EXIT_SCHEMA_MISMATCH;
|
|
8
|
+
export declare const ErrorCode: {
|
|
9
|
+
readonly VAL001: "VAL001";
|
|
10
|
+
readonly VAL002: "VAL002";
|
|
11
|
+
readonly VAL003: "VAL003";
|
|
12
|
+
readonly VAL004: "VAL004";
|
|
13
|
+
readonly VAL005: "VAL005";
|
|
14
|
+
readonly PROV001: "PROV001";
|
|
15
|
+
readonly PROV002: "PROV002";
|
|
16
|
+
readonly PROV003: "PROV003";
|
|
17
|
+
readonly PROV004: "PROV004";
|
|
18
|
+
readonly PROV005: "PROV005";
|
|
19
|
+
readonly PROV006: "PROV006";
|
|
20
|
+
readonly CLI001: "CLI001";
|
|
21
|
+
readonly CLI002: "CLI002";
|
|
22
|
+
readonly CLI003: "CLI003";
|
|
23
|
+
readonly SYS001: "SYS001";
|
|
24
|
+
readonly SYS002: "SYS002";
|
|
25
|
+
readonly SYS003: "SYS003";
|
|
26
|
+
};
|
|
27
|
+
export type ErrorCodeType = (typeof ErrorCode)[keyof typeof ErrorCode];
|
|
28
|
+
export declare function errorCodeToExitCode(code: ErrorCodeType): ExitCode;
|
|
29
|
+
export type ConfigOTronErrorContext = {
|
|
30
|
+
readonly code: ErrorCodeType;
|
|
31
|
+
readonly path?: string | undefined;
|
|
32
|
+
readonly expected?: string | undefined;
|
|
33
|
+
readonly received?: string | undefined;
|
|
34
|
+
readonly problem?: string | undefined;
|
|
35
|
+
readonly remediation?: string | undefined;
|
|
36
|
+
readonly example?: string | undefined;
|
|
37
|
+
readonly location?: string | undefined;
|
|
38
|
+
readonly availableKeys?: ReadonlyArray<string> | undefined;
|
|
39
|
+
};
|
|
40
|
+
declare const ConfigOTronError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
41
|
+
readonly _tag: "ConfigOTronError";
|
|
42
|
+
} & Readonly<A>;
|
|
43
|
+
export declare class ConfigOTronError extends ConfigOTronError_base<{
|
|
44
|
+
readonly message: string;
|
|
45
|
+
readonly context: ConfigOTronErrorContext;
|
|
46
|
+
}> {
|
|
47
|
+
get exitCode(): ExitCode;
|
|
48
|
+
}
|
|
49
|
+
declare const ValidationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
50
|
+
readonly _tag: "ValidationError";
|
|
51
|
+
} & Readonly<A>;
|
|
52
|
+
export declare class ValidationError extends ValidationError_base<{
|
|
53
|
+
readonly message: string;
|
|
54
|
+
readonly context: ConfigOTronErrorContext;
|
|
55
|
+
}> {
|
|
56
|
+
get exitCode(): ExitCode;
|
|
57
|
+
}
|
|
58
|
+
declare const ProviderError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
59
|
+
readonly _tag: "ProviderError";
|
|
60
|
+
} & Readonly<A>;
|
|
61
|
+
export declare class ProviderError extends ProviderError_base<{
|
|
62
|
+
readonly message: string;
|
|
63
|
+
readonly context: ConfigOTronErrorContext;
|
|
64
|
+
}> {
|
|
65
|
+
get exitCode(): ExitCode;
|
|
66
|
+
}
|
|
67
|
+
declare const CLIError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
68
|
+
readonly _tag: "CLIError";
|
|
69
|
+
} & Readonly<A>;
|
|
70
|
+
export declare class CLIError extends CLIError_base<{
|
|
71
|
+
readonly message: string;
|
|
72
|
+
readonly context: ConfigOTronErrorContext;
|
|
73
|
+
}> {
|
|
74
|
+
get exitCode(): ExitCode;
|
|
75
|
+
}
|
|
76
|
+
declare const SystemError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
77
|
+
readonly _tag: "SystemError";
|
|
78
|
+
} & Readonly<A>;
|
|
79
|
+
export declare class SystemError extends SystemError_base<{
|
|
80
|
+
readonly message: string;
|
|
81
|
+
readonly context: ConfigOTronErrorContext;
|
|
82
|
+
}> {
|
|
83
|
+
get exitCode(): ExitCode;
|
|
84
|
+
}
|
|
85
|
+
export declare function invalidTypeError(path: string, expected: string, received: string): ValidationError;
|
|
86
|
+
export declare function formatViolationError(path: string, expected: string, received: string, example?: string): ValidationError;
|
|
87
|
+
export declare function constraintViolationError(path: string, expected: string, received: string, problem: string): ValidationError;
|
|
88
|
+
export declare function keyNotFoundError(path: string, availableKeys?: ReadonlyArray<string>): ValidationError;
|
|
89
|
+
export declare function invalidKeyPathError(path: string, problem: string): ValidationError;
|
|
90
|
+
export declare function unknownKeysError(keys: ReadonlyArray<string>): ValidationError;
|
|
91
|
+
export declare function nullNotAllowedError(path: string, expected: string): ValidationError;
|
|
92
|
+
export declare function connectionFailedError(provider: string, details?: string): ProviderError;
|
|
93
|
+
export declare function authenticationFailedError(provider: string, details?: string): ProviderError;
|
|
94
|
+
export declare function parameterNotFoundError(path: string, fullPath: string): ProviderError;
|
|
95
|
+
export declare function encryptionVerificationFailedError(path: string): ProviderError;
|
|
96
|
+
export declare function writePermissionDeniedError(path: string, details?: string): ProviderError;
|
|
97
|
+
export declare function providerGuardMismatchError(provider: string, details: string): ProviderError;
|
|
98
|
+
export declare function invalidFlagError(flag: string): CLIError;
|
|
99
|
+
export declare function missingRequiredArgumentError(argument: string, command: string): CLIError;
|
|
100
|
+
export declare function conflictingFlagsError(flags: ReadonlyArray<string>): CLIError;
|
|
101
|
+
export declare function fileNotFoundError(path: string): SystemError;
|
|
102
|
+
export declare function permissionDeniedError(path: string, operation: string): SystemError;
|
|
103
|
+
export declare function snapshotSchemaMismatchError(expectedHash: string, actualHash: string): SystemError;
|
|
104
|
+
export type ConfigOTronErrorLike = ConfigOTronError | ValidationError | ProviderError | CLIError | SystemError;
|
|
105
|
+
export declare function formatError(error: ConfigOTronErrorLike): string;
|
|
106
|
+
export {};
|
|
107
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|