@gachlab/devup 0.2.0 → 0.3.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 +33 -3
- package/README.md +98 -2
- package/dist/config/cli.d.ts +3 -2
- package/dist/config/cli.d.ts.map +1 -1
- package/dist/config/types.d.ts +27 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/index.js +357 -15
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/dry-run.d.ts.map +1 -1
- package/dist/orchestrator/once.d.ts.map +1 -1
- package/dist/process/external.d.ts +30 -0
- package/dist/process/external.d.ts.map +1 -0
- package/dist/process/manager.d.ts +7 -0
- package/dist/process/manager.d.ts.map +1 -1
- package/dist/process/types.d.ts +2 -0
- package/dist/process/types.d.ts.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/hooks/useProcessManager.d.ts +1 -0
- package/dist/tui/hooks/useProcessManager.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,35 @@ All notable changes to `@gachlab/devup` are documented here.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.0] — 2026-05-21
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Profiles / scenarios** (#4). New `profiles: Record<string, string[]>` field on `DevStackConfig` plus a `--profile <name>` CLI flag. Lets you save common service-subset combinations under a name (e.g. `'check-in'`, `'pickup'`) and boot them with one short command instead of typing `--services` every time. Composable with `--skip`. Unknown profile names produce a friendly error listing what's available.
|
|
12
|
+
- **`readyPattern` for instant up detection** (#13). New per-service field accepting a plain string or vim-style `/pattern/flags` regex. On the first matching stdout/stderr line devup flips the service to `up` immediately, short-circuiting the next 3-second health-check poll. Speeds up phase transitions when frameworks print recognisable boot lines (Vite's `ready in 423 ms`, Angular's `Compiled successfully`, Fastify's `server listening`). The periodic health-check still runs as a fallback.
|
|
13
|
+
- **`preBuild` and `watchBuild` hooks** (#12). The fields existed in the type but were ignored. Now implemented properly:
|
|
14
|
+
- `preBuild` runs synchronously before the spawn through the platform shell (`sh -c` / `cmd /c`); non-zero exit marks the service `crashed` and skips the spawn.
|
|
15
|
+
- `watchBuild` is spawned as a sibling process and killed (kill-tree) on stop/restart/cleanup.
|
|
16
|
+
- Output is tagged `[build]` / `[watch]` in the logs panel and flows through the same line buffer + log sink pipeline.
|
|
17
|
+
- Replaces the awkward `sh -c 'npm run build && (npx tsup --watch &) && node ...'` workaround in projects with TypeScript services.
|
|
18
|
+
- **`external` / pre hooks for external dependencies** (#14). New top-level `external: ExternalService[]` field for databases, queues, etc. Externals run **before phase 0** through the platform shell with optional `healthCheck` gating and `stopCmd` on shutdown. devup aborts the boot (and runs every `stopCmd`) if any external fails its healthCheck within `startTimeout` (default 60 s). Closes the "do `docker compose up -d` then run devup" loop. Logs are tagged `ext:<name>` and persisted to `~/.devup/logs/<proj>/ext_<name>.log`.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- `filterServices()` now accepts an optional `config` arg to resolve `--profile`. Calls from `index.ts` updated.
|
|
22
|
+
- `--dry-run` header now shows the active profile and a new `Externals (N):` section with each entry's healthCheck tag.
|
|
23
|
+
- `ProcessState` gains an optional `watchProc` field tracking the `watchBuild` side-car.
|
|
24
|
+
- `useProcessManager` exposes `pushLog()` so non-service log lines (externals, future side-cars) flow through the same pause buffer and log sink as regular service lines.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
- Validator catches profile entries that reference unknown services or are empty arrays.
|
|
28
|
+
- Validator catches invalid `readyPattern` regex and empty strings.
|
|
29
|
+
- Validator catches empty `preBuild` / `watchBuild` strings.
|
|
30
|
+
- Validator catches external dependencies with missing `cmd`, duplicate names, missing `port` when a healthCheck is set, or `http` healthCheck paths without a leading `/`.
|
|
31
|
+
|
|
32
|
+
### Internals
|
|
33
|
+
- New module `src/process/external.ts` (`startExternals` / `stopExternals`).
|
|
34
|
+
- Test suite grown from 200 to ~237 — new suites: `ready-pattern`, `external` (Unix-only, follows the existing skip-on-Windows convention used by integration tests), validator coverage for every new field.
|
|
35
|
+
- Shell-dependent `preBuild`/`watchBuild` integration tests skipped on Windows. The feature itself works on both platforms because the runtime code path already routes through `sh -c` / `cmd /c`; only writing a single test command that exercises spawn behaviour across both shells without per-platform branching is awkward.
|
|
36
|
+
|
|
8
37
|
## [0.2.0] — 2026-05-21
|
|
9
38
|
|
|
10
39
|
### Added
|
|
@@ -77,6 +106,7 @@ Initial release.
|
|
|
77
106
|
- Config file resolution order: `devup.config.ts` → `.js` → `.json`, with `--config <path>` override. TypeScript loaded via the `tsx` import hook.
|
|
78
107
|
- CLI flags: `--only`, `--services`, `--skip`, `--lazy`/`--no-lazy`, `--timeout`, `--proxy`, `--proxy-host`, `--proxy-conf`, `--proxy-tls`/`--no-proxy-tls`, `--proxy-entrypoint`, `--config`.
|
|
79
108
|
|
|
80
|
-
[0.
|
|
81
|
-
[0.
|
|
82
|
-
[0.1.
|
|
109
|
+
[0.3.0]: https://github.com/gachlab/devup/releases/tag/0.3.0
|
|
110
|
+
[0.2.0]: https://github.com/gachlab/devup/releases/tag/0.2.0
|
|
111
|
+
[0.1.1]: https://github.com/gachlab/devup/releases/tag/0.1.1
|
|
112
|
+
[0.1.0]: https://github.com/gachlab/devup/releases/tag/0.1.0
|
package/README.md
CHANGED
|
@@ -85,6 +85,25 @@ npx devup
|
|
|
85
85
|
| `services` | `ServiceConfig[]` | ✅ | List of services to manage |
|
|
86
86
|
| `lazy` | `LazyConfig` | | Lazy mode configuration |
|
|
87
87
|
| `proxy` | `ProxyConfig` | | Reverse proxy config generation |
|
|
88
|
+
| `profiles` | `Record<string, string[]>` | | Named lists of services to boot. Select with `--profile <name>` |
|
|
89
|
+
| `external` | `ExternalService[]` | | Dependencies started **before** phase 0 (databases, queues, etc.) |
|
|
90
|
+
|
|
91
|
+
#### Profiles
|
|
92
|
+
|
|
93
|
+
A profile is a named subset of `services`. Instead of memorising service names for `--services`, you give your common workflows a name:
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
export default defineConfig({
|
|
97
|
+
// ...
|
|
98
|
+
profiles: {
|
|
99
|
+
'check-in': ['configurations-api', 'authorization-api', 'app-api', 'check-in-api', 'app-web'],
|
|
100
|
+
'pickup': ['configurations-api', 'pickup-api', 'pickup-drivers-web'],
|
|
101
|
+
'frontends': ['app-web', 'admin-web', 'staff-web'],
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Then `devup --profile check-in` boots that subset. Composable with `--skip`. The validator catches typos at config-load time. Unknown profile names produce a friendly error listing what's available.
|
|
88
107
|
|
|
89
108
|
### `ServiceConfig`
|
|
90
109
|
|
|
@@ -98,11 +117,12 @@ npx devup
|
|
|
98
117
|
| `port` | `number` | ✅ | Port the service listens on. Must be unique |
|
|
99
118
|
| `phase` | `number` | ✅ | Startup phase (0 = first). Services in the same phase start together; devup waits for all APIs in a phase to be ready before starting the next phase |
|
|
100
119
|
| `maxMem` | `number` | | Max memory in MB. Injects `--max-old-space-size` for `node` commands, or `NODE_OPTIONS` for `npx` |
|
|
101
|
-
| `preBuild` | `string` | |
|
|
102
|
-
| `watchBuild` | `string` | |
|
|
120
|
+
| `preBuild` | `string` | | Shell command run **before** the service starts. If it exits non-zero the service is marked `crashed` and skipped. Output is tagged `[build]` in the logs panel |
|
|
121
|
+
| `watchBuild` | `string` | | Shell command spawned **alongside** the service (e.g. `npx tsup --watch`). Killed automatically when the service stops/restarts. Output is tagged `[watch]` in the logs panel |
|
|
103
122
|
| `nodeArgs` | `string[]` | | Extra Node.js arguments |
|
|
104
123
|
| `extraEnv` | `Record<string, string>` | | Extra environment variables for this service |
|
|
105
124
|
| `healthCheck` | `HealthCheckConfig` | | Override the readiness check for this service. Default: TCP probe on `port` |
|
|
125
|
+
| `readyPattern` | `string` | | Regex matched against stdout/stderr lines. On match, service is marked `up` immediately, short-circuiting the next health-check poll. Plain string or vim-style `/pattern/flags`. Case-insensitive by default |
|
|
106
126
|
|
|
107
127
|
### `HealthCheckConfig`
|
|
108
128
|
|
|
@@ -122,6 +142,81 @@ npx devup
|
|
|
122
142
|
{ name: 'api', /* ... */, healthCheck: { type: 'http', path: '/health', expect: [200, 204] } }
|
|
123
143
|
```
|
|
124
144
|
|
|
145
|
+
#### readyPattern
|
|
146
|
+
|
|
147
|
+
A regex matched against each line of the service's stdout/stderr. The first matching line flips the service to `up` immediately, without waiting for the next 3-second health-check poll. The periodic health-check still runs as a fallback. Useful for tools that print recognisable boot lines:
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
// Vite: "ready in 423 ms"
|
|
151
|
+
{ name: 'web', cmd: 'npx', args: ['vite'], readyPattern: 'ready in' }
|
|
152
|
+
|
|
153
|
+
// Angular: "Compiled successfully"
|
|
154
|
+
{ name: 'app', cmd: 'npx', args: ['ng', 'serve'], readyPattern: '/compiled successfully/i' }
|
|
155
|
+
|
|
156
|
+
// Fastify: "Server listening at"
|
|
157
|
+
{ name: 'api', cmd: 'node', args: ['index.js'], readyPattern: 'server listening' }
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Both plain strings and vim-style `/pattern/flags` are accepted. Strings are case-insensitive by default.
|
|
161
|
+
|
|
162
|
+
#### Build hooks: `preBuild` and `watchBuild`
|
|
163
|
+
|
|
164
|
+
For TypeScript services or anything that needs a compile step, two hooks remove the usual `sh -c 'npm run build && (npx tsup --watch &) && node ...'` workaround:
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
{
|
|
168
|
+
name: 'orders-api',
|
|
169
|
+
cwd: 'orders/api',
|
|
170
|
+
cmd: 'node', args: ['dist/index.js'],
|
|
171
|
+
type: 'api', port: 3031, phase: 1,
|
|
172
|
+
preBuild: 'npm run build', // runs once, must succeed before the service starts
|
|
173
|
+
watchBuild: 'npx tsup --watch', // runs in parallel; killed when the service stops
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- **`preBuild`** runs synchronously before the spawn. Non-zero exit marks the service as `crashed` (the spawn is skipped). Output is tagged `[build]` in the logs panel.
|
|
178
|
+
- **`watchBuild`** runs as a sibling process. devup kills it when the service stops, restarts, or the TUI exits. Output is tagged `[watch]`.
|
|
179
|
+
|
|
180
|
+
Both are passed through the platform shell (`sh -c` on Unix, `cmd /c` on Windows), so pipes and `&&` work.
|
|
181
|
+
|
|
182
|
+
### `ExternalService`
|
|
183
|
+
|
|
184
|
+
External dependencies (databases, message queues, etc.) launched **before** phase 0. devup waits for each `healthCheck` (when set) to pass before starting any service. Typical use: `docker compose up -d`.
|
|
185
|
+
|
|
186
|
+
| Field | Type | Required | Description |
|
|
187
|
+
|---|---|---|---|
|
|
188
|
+
| `name` | `string` | ✅ | Friendly name shown in logs (logs use the prefix `ext:<name>`) |
|
|
189
|
+
| `cmd` | `string` | ✅ | Shell command (passed through `sh -c` / `cmd /c`). Pipes and `&&` work |
|
|
190
|
+
| `cwd` | `string` | | Working directory relative to the project root |
|
|
191
|
+
| `extraEnv` | `Record<string, string>` | | Extra env vars merged on top of the project env |
|
|
192
|
+
| `healthCheck` | `HealthCheckConfig` | | Readiness probe. devup waits for `up` before starting phase 0 |
|
|
193
|
+
| `port` | `number` | when `healthCheck` is set | Port to probe |
|
|
194
|
+
| `startTimeout` | `number` | | Max seconds to wait for healthCheck. Default: `60` |
|
|
195
|
+
| `stopCmd` | `string` | | Shell command run on shutdown (e.g. `docker compose down`) |
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
export default defineConfig({
|
|
199
|
+
// ...
|
|
200
|
+
external: [
|
|
201
|
+
{
|
|
202
|
+
name: 'mongo',
|
|
203
|
+
cmd: 'docker compose -f docker-compose.dev.yml up -d mongo',
|
|
204
|
+
port: 27017,
|
|
205
|
+
healthCheck: { type: 'tcp' },
|
|
206
|
+
stopCmd: 'docker compose -f docker-compose.dev.yml stop mongo',
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'redis',
|
|
210
|
+
cmd: 'docker compose -f docker-compose.dev.yml up -d redis',
|
|
211
|
+
port: 6379,
|
|
212
|
+
healthCheck: { type: 'tcp' },
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
});
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
If any external fails its healthCheck within `startTimeout` seconds, devup aborts the boot, runs each external's `stopCmd` (best-effort), and exits.
|
|
219
|
+
|
|
125
220
|
### `LazyConfig`
|
|
126
221
|
|
|
127
222
|
| Field | Type | Required | Description |
|
|
@@ -157,6 +252,7 @@ devup [options]
|
|
|
157
252
|
| `--only apis` | Only start API services |
|
|
158
253
|
| `--only webs` | Only start web services |
|
|
159
254
|
| `--services api,web,auth` | Start only the named services |
|
|
255
|
+
| `--profile <name>` | Start the services in the named profile (see `profiles` in the config) |
|
|
160
256
|
| `--skip tasks-api,pickup-api` | Start everything except these |
|
|
161
257
|
| `--config path/to/config.ts` | Use a custom config file |
|
|
162
258
|
|
package/dist/config/cli.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { ServiceConfig } from './types.js';
|
|
1
|
+
import type { DevStackConfig, ServiceConfig } from './types.js';
|
|
2
2
|
export interface CliArgs {
|
|
3
3
|
configPath?: string;
|
|
4
4
|
only?: string;
|
|
5
5
|
skip: string[];
|
|
6
6
|
services?: string[];
|
|
7
|
+
profile?: string;
|
|
7
8
|
lazy: boolean;
|
|
8
9
|
lazyTimeout: number;
|
|
9
10
|
proxy: boolean;
|
|
@@ -18,5 +19,5 @@ export interface CliArgs {
|
|
|
18
19
|
logDir?: string;
|
|
19
20
|
}
|
|
20
21
|
export declare function parseCliArgs(argv: string[]): CliArgs;
|
|
21
|
-
export declare function filterServices(services: ServiceConfig[], args: CliArgs): ServiceConfig[];
|
|
22
|
+
export declare function filterServices(services: ServiceConfig[], args: CliArgs, config?: Pick<DevStackConfig, 'profiles'>): ServiceConfig[];
|
|
22
23
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/config/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/config/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/config/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,OAAO;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA0CpD;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GACxC,aAAa,EAAE,CA6BjB"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -12,6 +12,11 @@ export interface ServiceConfig {
|
|
|
12
12
|
nodeArgs?: string[];
|
|
13
13
|
extraEnv?: Record<string, string>;
|
|
14
14
|
healthCheck?: HealthCheckConfig;
|
|
15
|
+
/** Case-insensitive regex. When a line of the service's stdout/stderr matches,
|
|
16
|
+
* the service is immediately marked as `up` without waiting for the next
|
|
17
|
+
* health-check poll. Speeds up phase transitions on cold boots.
|
|
18
|
+
* Examples: '/ready in \\d+ ms/' (Vite), '/compiled successfully/' (Angular). */
|
|
19
|
+
readyPattern?: string;
|
|
15
20
|
}
|
|
16
21
|
export interface HealthCheckConfig {
|
|
17
22
|
/** 'tcp' (default) checks that the port accepts connections. 'http' makes an HTTP GET. */
|
|
@@ -37,6 +42,24 @@ export interface ProxyConfig {
|
|
|
37
42
|
tls?: boolean;
|
|
38
43
|
entrypoint?: string;
|
|
39
44
|
}
|
|
45
|
+
export interface ExternalService {
|
|
46
|
+
/** Friendly name (used in logs and the stats panel). Must be unique within `external`. */
|
|
47
|
+
name: string;
|
|
48
|
+
/** Shell command to start. Will be passed through `sh -c` / `cmd /c`. */
|
|
49
|
+
cmd: string;
|
|
50
|
+
/** Optional working directory (relative to the project root). */
|
|
51
|
+
cwd?: string;
|
|
52
|
+
/** Extra env vars merged on top of the project env. */
|
|
53
|
+
extraEnv?: Record<string, string>;
|
|
54
|
+
/** Optional readiness probe. devup waits for this to return `up` before starting phase 0. */
|
|
55
|
+
healthCheck?: HealthCheckConfig;
|
|
56
|
+
/** Port to probe when `healthCheck` is set. Required for tcp checks. */
|
|
57
|
+
port?: number;
|
|
58
|
+
/** Max seconds to wait for healthCheck to pass before giving up. Default: 60. */
|
|
59
|
+
startTimeout?: number;
|
|
60
|
+
/** Optional shell command run on shutdown (e.g. `docker compose down`). */
|
|
61
|
+
stopCmd?: string;
|
|
62
|
+
}
|
|
40
63
|
export interface DevStackConfig {
|
|
41
64
|
name: string;
|
|
42
65
|
icon?: string;
|
|
@@ -45,6 +68,10 @@ export interface DevStackConfig {
|
|
|
45
68
|
services: ServiceConfig[];
|
|
46
69
|
lazy?: LazyConfig;
|
|
47
70
|
proxy?: ProxyConfig;
|
|
71
|
+
/** Named lists of service names — selectable with --profile <name>. */
|
|
72
|
+
profiles?: Record<string, string[]>;
|
|
73
|
+
/** Optional external dependencies (DBs, queues) started before phase 0. */
|
|
74
|
+
external?: ExternalService[];
|
|
48
75
|
}
|
|
49
76
|
export declare function defineConfig(config: DevStackConfig): DevStackConfig;
|
|
50
77
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;sFAGkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,0FAA0F;IAC1F,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,0FAA0F;IAC1F,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,6FAA6F;IAC7F,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAEnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/config/validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/config/validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAwKrF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAExE"}
|