brass-runtime 1.16.0 → 1.16.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/CHANGELOG.md +17 -0
- package/README.md +283 -18
- package/dist/agent/cli/main.cjs +38 -38
- package/dist/agent/cli/main.js +6 -6
- package/dist/agent/cli/main.mjs +6 -6
- package/dist/agent/index.cjs +7 -7
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.js +6 -6
- package/dist/agent/index.mjs +6 -6
- package/dist/chunk-2HQTDLHF.mjs +683 -0
- package/dist/chunk-36I3M4UC.mjs +370 -0
- package/dist/{chunk-QY5FKYEQ.js → chunk-3AYM6WPJ.js} +570 -51
- package/dist/chunk-3LOYJFRR.cjs +300 -0
- package/dist/chunk-3Y2RIUMM.js +300 -0
- package/dist/{chunk-N6VHMOWB.cjs → chunk-4ROBZFL6.cjs} +128 -128
- package/dist/{chunk-NC5SDRYE.js → chunk-52OB2ROS.js} +4 -4
- package/dist/{chunk-JX3LZQJH.cjs → chunk-52PPNNI4.cjs} +82 -20
- package/dist/{chunk-5YOQOXEQ.cjs → chunk-5EC274J5.cjs} +676 -293
- package/dist/chunk-5QC7LRZ3.js +229 -0
- package/dist/{chunk-7TL2LHQJ.js → chunk-5VRJNBLZ.mjs} +524 -141
- package/dist/chunk-62AZW6UT.cjs +313 -0
- package/dist/chunk-6IXXWIUM.js +683 -0
- package/dist/chunk-74ZTY6CP.js +2871 -0
- package/dist/chunk-76YMRMH2.cjs +777 -0
- package/dist/chunk-7CMJS3QE.mjs +2871 -0
- package/dist/{chunk-2WC63LJK.mjs → chunk-7JIJOVCT.js} +20 -10
- package/dist/{chunk-FM4W4QPL.js → chunk-A2OM6NEH.mjs} +5 -4
- package/dist/chunk-AGR5B2BC.cjs +683 -0
- package/dist/chunk-AVNQLJ5V.js +777 -0
- package/dist/chunk-B33ICAKP.js +313 -0
- package/dist/{chunk-J3H54ZRV.mjs → chunk-B5JD23U7.mjs} +1 -1
- package/dist/chunk-BABBZK4Y.js +2024 -0
- package/dist/{chunk-U5KWK3PX.mjs → chunk-C3MDXTRZ.js} +11 -0
- package/dist/{chunk-F5EUMJL7.mjs → chunk-CIZFIMK5.js} +55 -5
- package/dist/{chunk-SPUEME2B.cjs → chunk-CZIVE6NT.cjs} +12 -1
- package/dist/{chunk-TDVMADDN.js → chunk-DNFJLJMW.mjs} +11 -0
- package/dist/chunk-DNFO2EIZ.mjs +777 -0
- package/dist/{chunk-XDZOO4L5.js → chunk-EJ6BPYVR.mjs} +79 -17
- package/dist/{chunk-JNFRRJYH.cjs → chunk-ENKODRU3.cjs} +242 -192
- package/dist/chunk-EOC4UHBS.mjs +229 -0
- package/dist/{chunk-7LVI2GIN.js → chunk-FH2X7BVP.js} +507 -72
- package/dist/{chunk-OOGJ73B6.js → chunk-FHQGHPMO.mjs} +20 -10
- package/dist/{chunk-WQ5QNU5R.cjs → chunk-GLE2WY7Z.cjs} +652 -217
- package/dist/{chunk-G6IQOE4P.mjs → chunk-GYM3LLGS.mjs} +507 -72
- package/dist/chunk-HLWLMW2F.mjs +2024 -0
- package/dist/{chunk-TVN5I4U6.cjs → chunk-JF5WGYJJ.cjs} +25 -24
- package/dist/{chunk-CY33PGEX.mjs → chunk-KH4SYAOS.mjs} +570 -51
- package/dist/chunk-KN32XNTH.mjs +313 -0
- package/dist/chunk-KQLYONSE.cjs +2871 -0
- package/dist/{chunk-7HUOJA4W.cjs → chunk-KZJQ723N.cjs} +90 -80
- package/dist/{chunk-CCKHV5BT.mjs → chunk-L2SYFEBS.js} +5 -4
- package/dist/{chunk-IJT6RRQ5.cjs → chunk-L6VB5N7Q.cjs} +20 -9
- package/dist/{chunk-ZGLD4TVZ.mjs → chunk-MBEJI5HF.mjs} +4 -4
- package/dist/{chunk-PRWCB3QL.mjs → chunk-MIIYDLGM.js} +524 -141
- package/dist/{chunk-H55LI6WY.js → chunk-MOO4L7F4.mjs} +15 -4
- package/dist/{chunk-7XOPAB5Q.js → chunk-MT3OWDPC.mjs} +55 -5
- package/dist/chunk-MVGUEJ5Z.cjs +370 -0
- package/dist/chunk-PD4EJTQC.cjs +229 -0
- package/dist/chunk-PWC3RBQE.mjs +300 -0
- package/dist/{chunk-MWXMNYJS.cjs → chunk-Q2I37RP3.cjs} +643 -124
- package/dist/{chunk-VFIUZG7J.mjs → chunk-RKGKFN2A.js} +79 -17
- package/dist/{chunk-NYL4D7SK.cjs → chunk-SA6HUJVI.cjs} +5 -5
- package/dist/{chunk-K2T3DV26.mjs → chunk-TRM4JUZQ.js} +15 -4
- package/dist/chunk-UB4B6OFY.js +370 -0
- package/dist/{chunk-G3XGCZDQ.js → chunk-UCUBNWM2.js} +1 -1
- package/dist/chunk-VN44DYYT.cjs +2024 -0
- package/dist/{client-CtFmoDvM.d.ts → client-CZHU674n.d.ts} +211 -36
- package/dist/core/index.cjs +135 -9
- package/dist/core/index.d.ts +238 -33
- package/dist/core/index.js +155 -29
- package/dist/core/index.mjs +155 -29
- package/dist/{effect-CGNl5Rqp.d.ts → effect-DIUHZ9IN.d.ts} +89 -1
- package/dist/effectRunner-CFLC32IK.cjs +8 -0
- package/dist/{effectRunner-A4CHJXJI.js → effectRunner-L4S7IPT3.js} +2 -2
- package/dist/{effectRunner-OPUF6QRN.mjs → effectRunner-NNGG75QA.mjs} +2 -2
- package/dist/http/index.cjs +324 -2986
- package/dist/http/index.d.ts +54 -68
- package/dist/http/index.js +238 -2900
- package/dist/http/index.mjs +238 -2900
- package/dist/http/testing.cjs +14 -12
- package/dist/http/testing.d.ts +5 -4
- package/dist/http/testing.js +10 -8
- package/dist/http/testing.mjs +10 -8
- package/dist/index.cjs +423 -255
- package/dist/index.d.ts +87 -69
- package/dist/index.js +301 -133
- package/dist/index.mjs +301 -133
- package/dist/observability/index.cjs +16 -531
- package/dist/observability/index.d.ts +81 -8
- package/dist/observability/index.js +23 -538
- package/dist/observability/index.mjs +23 -538
- package/dist/perf/cli.cjs +401 -0
- package/dist/perf/cli.d.ts +1 -0
- package/dist/perf/cli.js +401 -0
- package/dist/perf/cli.mjs +401 -0
- package/dist/perf/index.cjs +141 -0
- package/dist/perf/index.d.ts +483 -0
- package/dist/perf/index.js +141 -0
- package/dist/perf/index.mjs +141 -0
- package/dist/schedule-CK3Ml_7p.d.ts +259 -0
- package/dist/schema/index.cjs +6 -2
- package/dist/schema/index.d.ts +3 -1
- package/dist/schema/index.js +5 -1
- package/dist/schema/index.mjs +5 -1
- package/dist/{server-C8hDXA74.d.ts → server-GJPg8ZSG.d.ts} +4 -3
- package/dist/{stream-dvSs0QS5.d.ts → stream-B4oK9JFP.d.ts} +1 -1
- package/dist/{tracer-B5tRH9H7.d.ts → tracer-Hwt1cl7h.d.ts} +13 -54
- package/dist/{tracing-Dt9S_6V8.d.ts → tracing-DqbTKGcf.d.ts} +1 -1
- package/docs/ARCHITECTURE.md +292 -0
- package/docs/README.md +63 -0
- package/docs/adr/0001-ai-context-pack.md +32 -0
- package/docs/agent-apply-mode.md +104 -0
- package/docs/agent-approvals.md +110 -0
- package/docs/agent-batch.md +185 -0
- package/docs/agent-boundaries.md +112 -0
- package/docs/agent-chat-sessions.md +160 -0
- package/docs/agent-ci.md +17 -0
- package/docs/agent-cli.md +405 -0
- package/docs/agent-config.md +480 -0
- package/docs/agent-context-discovery.md +159 -0
- package/docs/agent-copilot-like-dx.md +126 -0
- package/docs/agent-declarative-optimized-planning.md +138 -0
- package/docs/agent-dx.md +224 -0
- package/docs/agent-env-files.md +126 -0
- package/docs/agent-follow-up-context.md +43 -0
- package/docs/agent-global-usage.md +180 -0
- package/docs/agent-init.md +109 -0
- package/docs/agent-install-and-configure.md +516 -0
- package/docs/agent-language-workspace-ux.md +99 -0
- package/docs/agent-llm-adapters.md +123 -0
- package/docs/agent-local-install.md +190 -0
- package/docs/agent-local-tests.md +51 -0
- package/docs/agent-observability.md +155 -0
- package/docs/agent-patch-quality-loop.md +162 -0
- package/docs/agent-presets.md +22 -0
- package/docs/agent-project-commands.md +237 -0
- package/docs/agent-project-intelligence.md +156 -0
- package/docs/agent-redaction.md +18 -0
- package/docs/agent-release-readiness.md +76 -0
- package/docs/agent-rollback-safety.md +162 -0
- package/docs/agent-rollback.md +23 -0
- package/docs/agent-run-artifacts.md +16 -0
- package/docs/agent-vscode-auto-discovery.md +137 -0
- package/docs/agent-vscode-batch-runner.md +100 -0
- package/docs/agent-vscode-chat-layout.md +90 -0
- package/docs/agent-vscode-clean-install.md +147 -0
- package/docs/agent-vscode-code-actions.md +70 -0
- package/docs/agent-vscode-diff-preview.md +45 -0
- package/docs/agent-vscode-inline-assist.md +56 -0
- package/docs/agent-vscode-install.md +186 -0
- package/docs/agent-vscode-model-setup.md +97 -0
- package/docs/agent-vscode-patch-preview.md +92 -0
- package/docs/agent-vscode-problems.md +79 -0
- package/docs/agent-vscode-project-dashboard.md +106 -0
- package/docs/agent-vscode-run-history.md +92 -0
- package/docs/agent-vscode-ux.md +73 -0
- package/docs/ai/INVARIANTS.md +84 -0
- package/docs/ai/PROJECT_MAP.md +338 -0
- package/docs/ai/PUBLIC_API.md +336 -0
- package/docs/ai/VALIDATION_MATRIX.md +67 -0
- package/docs/api-polish.md +37 -0
- package/docs/cancellation.md +162 -0
- package/docs/coverage.md +46 -0
- package/docs/getting-started.md +159 -0
- package/docs/guides/README.md +40 -0
- package/docs/guides/circuit-breaker.md +89 -0
- package/docs/guides/error-handling.md +91 -0
- package/docs/guides/getting-started.md +107 -0
- package/docs/guides/layers.md +189 -0
- package/docs/guides/metrics.md +101 -0
- package/docs/guides/resource-management.md +141 -0
- package/docs/guides/retry.md +215 -0
- package/docs/guides/semaphore.md +66 -0
- package/docs/guides/streams.md +117 -0
- package/docs/guides/supervisors.md +98 -0
- package/docs/guides/testing.md +162 -0
- package/docs/guides/tracing.md +71 -0
- package/docs/http-recipes.md +399 -0
- package/docs/http.md +749 -0
- package/docs/modules.md +285 -0
- package/docs/observability-collector-smoke.md +31 -0
- package/docs/observability-framework-examples.md +98 -0
- package/docs/observability.md +542 -0
- package/docs/otel-collector-smoke.yaml +27 -0
- package/docs/performance-profiler.md +199 -0
- package/docs/production-readiness.md +73 -0
- package/docs/recipes/README.md +12 -0
- package/docs/recipes/http-server.md +45 -0
- package/docs/recipes/layers.md +44 -0
- package/docs/recipes/performance.md +47 -0
- package/docs/recipes/runtime.md +41 -0
- package/docs/recipes/testing.md +41 -0
- package/docs/release.md +53 -0
- package/docs/wasm-bounded-queues.md +44 -0
- package/docs/wasm-engine-observability-benchmarks.md +85 -0
- package/docs/wasm-fiber-engine.md +117 -0
- package/docs/wasm-scheduler-state-machine.md +122 -0
- package/docs/wasm-stream-chunks.md +54 -0
- package/package.json +22 -2
- package/dist/chunk-45F7OKGT.cjs +0 -104
- package/dist/chunk-7V4KY4RL.mjs +0 -104
- package/dist/chunk-DJQ7OMMB.cjs +0 -144
- package/dist/chunk-GOV47PPB.mjs +0 -552
- package/dist/chunk-JF4XXPZ5.cjs +0 -552
- package/dist/chunk-KCPT2D6G.js +0 -552
- package/dist/chunk-NOYZIMUJ.mjs +0 -144
- package/dist/chunk-PNVFW245.js +0 -144
- package/dist/chunk-ROJC3NBJ.js +0 -104
- package/dist/effectRunner-3ZHAD3LE.cjs +0 -8
- package/dist/schedule-Fque9Abz.d.ts +0 -70
|
@@ -18,6 +18,15 @@ var ConfigValidationError = class extends Error {
|
|
|
18
18
|
this.issues = issues;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
+
function isConfigValidationError(error) {
|
|
22
|
+
return error instanceof ConfigValidationError || typeof error === "object" && error !== null && error._tag === "ConfigValidationError" && typeof error.configName === "string" && Array.isArray(error.issues);
|
|
23
|
+
}
|
|
24
|
+
function formatConfigError(error) {
|
|
25
|
+
if (!isConfigValidationError(error)) {
|
|
26
|
+
return error instanceof Error ? error.message : String(error);
|
|
27
|
+
}
|
|
28
|
+
return `${error.configName} failed validation: ${formatIssues(error.issues)}`;
|
|
29
|
+
}
|
|
21
30
|
var ok = (data) => ({ success: true, data });
|
|
22
31
|
var fail = (issues) => ({ success: false, issues });
|
|
23
32
|
var receivedKind = (value) => {
|
|
@@ -332,6 +341,8 @@ function parseConfig(configName, validator, value) {
|
|
|
332
341
|
export {
|
|
333
342
|
SchemaValidationException,
|
|
334
343
|
ConfigValidationError,
|
|
344
|
+
isConfigValidationError,
|
|
345
|
+
formatConfigError,
|
|
335
346
|
makeSchemaIssue,
|
|
336
347
|
formatIssues,
|
|
337
348
|
schema,
|
|
@@ -2,25 +2,25 @@ import {
|
|
|
2
2
|
EventBus,
|
|
3
3
|
InMemoryTracer,
|
|
4
4
|
makeMetrics
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RKGKFN2A.js";
|
|
6
6
|
import {
|
|
7
7
|
Runtime,
|
|
8
8
|
ctxExtend,
|
|
9
9
|
ctxToObject,
|
|
10
10
|
emptyContext,
|
|
11
11
|
getCurrentFiber
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-FH2X7BVP.js";
|
|
13
13
|
import {
|
|
14
14
|
asyncFail,
|
|
15
15
|
asyncFlatMap,
|
|
16
16
|
asyncFold,
|
|
17
17
|
asyncSucceed,
|
|
18
18
|
asyncSync
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-UB4B6OFY.js";
|
|
20
20
|
import {
|
|
21
21
|
Schema,
|
|
22
22
|
parseConfig
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-C3MDXTRZ.js";
|
|
24
24
|
|
|
25
25
|
// src/observability/health.ts
|
|
26
26
|
function snapshotRuntimeHealth(options = {}) {
|
|
@@ -1462,6 +1462,7 @@ var object = Schema.custom(
|
|
|
1462
1462
|
);
|
|
1463
1463
|
var falseOrObject = Schema.union([Schema.literal(false), object]);
|
|
1464
1464
|
var ratio = Schema.number({ min: 0, max: 1 });
|
|
1465
|
+
var logLevel = Schema.enum(["debug", "info", "warn", "error"]);
|
|
1465
1466
|
var retryOptions = Schema.object({
|
|
1466
1467
|
attempts: Schema.number({ min: 0, int: true }).optional(),
|
|
1467
1468
|
initialDelayMs: Schema.number({ min: 0, int: true }).optional(),
|
|
@@ -1523,9 +1524,49 @@ var observabilityOptions = Schema.object({
|
|
|
1523
1524
|
childName: fn.optional(),
|
|
1524
1525
|
onFlushError: fn.optional()
|
|
1525
1526
|
}, { unknownKeys: "passthrough" });
|
|
1527
|
+
var httpObservabilityOptions = Schema.object({
|
|
1528
|
+
metrics: falseOrObject.optional(),
|
|
1529
|
+
logs: Schema.union([
|
|
1530
|
+
Schema.literal(false),
|
|
1531
|
+
Schema.object({
|
|
1532
|
+
requestLevel: Schema.union([logLevel, Schema.literal(false)]).optional(),
|
|
1533
|
+
responseLevel: Schema.union([logLevel, Schema.literal(false)]).optional(),
|
|
1534
|
+
errorLevel: Schema.union([logLevel, Schema.literal(false)]).optional()
|
|
1535
|
+
}, { unknownKeys: "passthrough" })
|
|
1536
|
+
]).optional(),
|
|
1537
|
+
spans: Schema.union([
|
|
1538
|
+
Schema.literal(false),
|
|
1539
|
+
Schema.object({
|
|
1540
|
+
name: Schema.union([Schema.string({ minLength: 1 }), fn]).optional(),
|
|
1541
|
+
attributes: Schema.union([object, fn]).optional()
|
|
1542
|
+
}, { unknownKeys: "passthrough" })
|
|
1543
|
+
]).optional(),
|
|
1544
|
+
adaptiveLimiter: Schema.union([
|
|
1545
|
+
Schema.boolean(),
|
|
1546
|
+
Schema.object({
|
|
1547
|
+
enabled: Schema.boolean().optional(),
|
|
1548
|
+
includeKeyLabel: Schema.boolean().optional()
|
|
1549
|
+
}, { unknownKeys: "passthrough" })
|
|
1550
|
+
]).optional(),
|
|
1551
|
+
policy: Schema.union([
|
|
1552
|
+
Schema.boolean(),
|
|
1553
|
+
Schema.object({
|
|
1554
|
+
enabled: Schema.boolean().optional(),
|
|
1555
|
+
labelKeys: Schema.array(Schema.enum(["preset", "lane", "poolKey", "dedupKey", "priority", "retry"])).optional()
|
|
1556
|
+
}, { unknownKeys: "passthrough" })
|
|
1557
|
+
]).optional(),
|
|
1558
|
+
injectTraceHeaders: Schema.boolean().optional(),
|
|
1559
|
+
includeHostLabel: Schema.boolean().optional(),
|
|
1560
|
+
route: Schema.union([Schema.string({ minLength: 1 }), fn]).optional(),
|
|
1561
|
+
clock: fn.optional(),
|
|
1562
|
+
durationBuckets: Schema.array(Schema.number({ min: 0 }).refine((n) => n > 0, "duration bucket must be > 0")).optional()
|
|
1563
|
+
}, { unknownKeys: "passthrough" });
|
|
1526
1564
|
function validateObservabilityOptions(options) {
|
|
1527
1565
|
parseConfig("ObservabilityOptions", observabilityOptions, options);
|
|
1528
1566
|
}
|
|
1567
|
+
function validateHttpObservabilityOptions(options) {
|
|
1568
|
+
parseConfig("HttpObservabilityOptions", httpObservabilityOptions, options);
|
|
1569
|
+
}
|
|
1529
1570
|
|
|
1530
1571
|
// src/observability/setup.ts
|
|
1531
1572
|
function makeObservability(options = {}) {
|
|
@@ -1861,12 +1902,13 @@ function makeRuntimeTraceIdGenerator() {
|
|
|
1861
1902
|
newSpanId: () => randomHexId(16)
|
|
1862
1903
|
};
|
|
1863
1904
|
}
|
|
1905
|
+
var HEX_BYTE = Array.from({ length: 256 }, (_, byte) => byte.toString(16).padStart(2, "0"));
|
|
1864
1906
|
function randomHexId(length) {
|
|
1865
1907
|
const cryptoLike = globalThis.crypto;
|
|
1866
1908
|
if (typeof cryptoLike?.getRandomValues === "function") {
|
|
1867
1909
|
const bytes = new Uint8Array(Math.ceil(length / 2));
|
|
1868
1910
|
cryptoLike.getRandomValues(bytes);
|
|
1869
|
-
return
|
|
1911
|
+
return bytesToHex(bytes, length);
|
|
1870
1912
|
}
|
|
1871
1913
|
if (typeof cryptoLike?.randomUUID === "function") {
|
|
1872
1914
|
const hex = cryptoLike.randomUUID().replace(/-/g, "");
|
|
@@ -1878,6 +1920,13 @@ function randomHexId(length) {
|
|
|
1878
1920
|
}
|
|
1879
1921
|
return out.slice(0, length);
|
|
1880
1922
|
}
|
|
1923
|
+
function bytesToHex(bytes, length) {
|
|
1924
|
+
let out = "";
|
|
1925
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
1926
|
+
out += HEX_BYTE[bytes[i]];
|
|
1927
|
+
}
|
|
1928
|
+
return out.length === length ? out : out.slice(0, length);
|
|
1929
|
+
}
|
|
1881
1930
|
|
|
1882
1931
|
// src/observability/request.ts
|
|
1883
1932
|
function makeRequestObservabilityContext(observability, input = {}) {
|
|
@@ -2134,6 +2183,7 @@ export {
|
|
|
2134
2183
|
makeCardinalityLimitedMetrics,
|
|
2135
2184
|
normalizeHttpRoute,
|
|
2136
2185
|
sanitizeHttpTarget,
|
|
2186
|
+
validateHttpObservabilityOptions,
|
|
2137
2187
|
makeObservability,
|
|
2138
2188
|
resolveRequestTraceSeed,
|
|
2139
2189
|
resolveRequestBaggage,
|
|
@@ -18,6 +18,15 @@ var ConfigValidationError = (_class = class extends Error {
|
|
|
18
18
|
this.issues = issues;
|
|
19
19
|
}
|
|
20
20
|
}, _class);
|
|
21
|
+
function isConfigValidationError(error) {
|
|
22
|
+
return error instanceof ConfigValidationError || typeof error === "object" && error !== null && error._tag === "ConfigValidationError" && typeof error.configName === "string" && Array.isArray(error.issues);
|
|
23
|
+
}
|
|
24
|
+
function formatConfigError(error) {
|
|
25
|
+
if (!isConfigValidationError(error)) {
|
|
26
|
+
return error instanceof Error ? error.message : String(error);
|
|
27
|
+
}
|
|
28
|
+
return `${error.configName} failed validation: ${formatIssues(error.issues)}`;
|
|
29
|
+
}
|
|
21
30
|
var ok = (data) => ({ success: true, data });
|
|
22
31
|
var fail = (issues) => ({ success: false, issues });
|
|
23
32
|
var receivedKind = (value) => {
|
|
@@ -340,4 +349,6 @@ function parseConfig(configName, validator, value) {
|
|
|
340
349
|
|
|
341
350
|
|
|
342
351
|
|
|
343
|
-
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
exports.SchemaValidationException = SchemaValidationException; exports.ConfigValidationError = ConfigValidationError; exports.isConfigValidationError = isConfigValidationError; exports.formatConfigError = formatConfigError; exports.makeSchemaIssue = makeSchemaIssue; exports.formatIssues = formatIssues; exports.schema = schema; exports.s = s; exports.Schema = Schema; exports.isSchema = isSchema; exports.validateValue = validateValue; exports.parseConfig = parseConfig;
|
|
@@ -18,6 +18,15 @@ var ConfigValidationError = class extends Error {
|
|
|
18
18
|
this.issues = issues;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
+
function isConfigValidationError(error) {
|
|
22
|
+
return error instanceof ConfigValidationError || typeof error === "object" && error !== null && error._tag === "ConfigValidationError" && typeof error.configName === "string" && Array.isArray(error.issues);
|
|
23
|
+
}
|
|
24
|
+
function formatConfigError(error) {
|
|
25
|
+
if (!isConfigValidationError(error)) {
|
|
26
|
+
return error instanceof Error ? error.message : String(error);
|
|
27
|
+
}
|
|
28
|
+
return `${error.configName} failed validation: ${formatIssues(error.issues)}`;
|
|
29
|
+
}
|
|
21
30
|
var ok = (data) => ({ success: true, data });
|
|
22
31
|
var fail = (issues) => ({ success: false, issues });
|
|
23
32
|
var receivedKind = (value) => {
|
|
@@ -332,6 +341,8 @@ function parseConfig(configName, validator, value) {
|
|
|
332
341
|
export {
|
|
333
342
|
SchemaValidationException,
|
|
334
343
|
ConfigValidationError,
|
|
344
|
+
isConfigValidationError,
|
|
345
|
+
formatConfigError,
|
|
335
346
|
makeSchemaIssue,
|
|
336
347
|
formatIssues,
|
|
337
348
|
schema,
|