@oddessentials/odd-ai-reviewers 1.0.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/README.md +190 -0
- package/dist/__tests__/hermetic-setup.d.ts +55 -0
- package/dist/__tests__/hermetic-setup.d.ts.map +1 -0
- package/dist/__tests__/hermetic-setup.js +62 -0
- package/dist/__tests__/hermetic-setup.js.map +1 -0
- package/dist/__tests__/test-utils/hermetic.d.ts +84 -0
- package/dist/__tests__/test-utils/hermetic.d.ts.map +1 -0
- package/dist/__tests__/test-utils/hermetic.js +147 -0
- package/dist/__tests__/test-utils/hermetic.js.map +1 -0
- package/dist/agents/ai_semantic_review.d.ts +12 -0
- package/dist/agents/ai_semantic_review.d.ts.map +1 -0
- package/dist/agents/ai_semantic_review.js +317 -0
- package/dist/agents/ai_semantic_review.js.map +1 -0
- package/dist/agents/control_flow/budget.d.ts +162 -0
- package/dist/agents/control_flow/budget.d.ts.map +1 -0
- package/dist/agents/control_flow/budget.js +331 -0
- package/dist/agents/control_flow/budget.js.map +1 -0
- package/dist/agents/control_flow/cfg-builder.d.ts +26 -0
- package/dist/agents/control_flow/cfg-builder.d.ts.map +1 -0
- package/dist/agents/control_flow/cfg-builder.js +776 -0
- package/dist/agents/control_flow/cfg-builder.js.map +1 -0
- package/dist/agents/control_flow/cfg-types.d.ts +186 -0
- package/dist/agents/control_flow/cfg-types.d.ts.map +1 -0
- package/dist/agents/control_flow/cfg-types.js +114 -0
- package/dist/agents/control_flow/cfg-types.js.map +1 -0
- package/dist/agents/control_flow/finding-generator.d.ts +118 -0
- package/dist/agents/control_flow/finding-generator.d.ts.map +1 -0
- package/dist/agents/control_flow/finding-generator.js +354 -0
- package/dist/agents/control_flow/finding-generator.js.map +1 -0
- package/dist/agents/control_flow/index.d.ts +39 -0
- package/dist/agents/control_flow/index.d.ts.map +1 -0
- package/dist/agents/control_flow/index.js +270 -0
- package/dist/agents/control_flow/index.js.map +1 -0
- package/dist/agents/control_flow/logger.d.ts +333 -0
- package/dist/agents/control_flow/logger.d.ts.map +1 -0
- package/dist/agents/control_flow/logger.js +607 -0
- package/dist/agents/control_flow/logger.js.map +1 -0
- package/dist/agents/control_flow/mitigation-detector.d.ts +207 -0
- package/dist/agents/control_flow/mitigation-detector.d.ts.map +1 -0
- package/dist/agents/control_flow/mitigation-detector.js +625 -0
- package/dist/agents/control_flow/mitigation-detector.js.map +1 -0
- package/dist/agents/control_flow/mitigation-patterns.d.ts +53 -0
- package/dist/agents/control_flow/mitigation-patterns.d.ts.map +1 -0
- package/dist/agents/control_flow/mitigation-patterns.js +620 -0
- package/dist/agents/control_flow/mitigation-patterns.js.map +1 -0
- package/dist/agents/control_flow/path-analyzer.d.ts +287 -0
- package/dist/agents/control_flow/path-analyzer.d.ts.map +1 -0
- package/dist/agents/control_flow/path-analyzer.js +695 -0
- package/dist/agents/control_flow/path-analyzer.js.map +1 -0
- package/dist/agents/control_flow/pattern-validator.d.ts +132 -0
- package/dist/agents/control_flow/pattern-validator.d.ts.map +1 -0
- package/dist/agents/control_flow/pattern-validator.js +420 -0
- package/dist/agents/control_flow/pattern-validator.js.map +1 -0
- package/dist/agents/control_flow/timeout-regex.d.ts +144 -0
- package/dist/agents/control_flow/timeout-regex.d.ts.map +1 -0
- package/dist/agents/control_flow/timeout-regex.js +339 -0
- package/dist/agents/control_flow/timeout-regex.js.map +1 -0
- package/dist/agents/control_flow/types.d.ts +782 -0
- package/dist/agents/control_flow/types.d.ts.map +1 -0
- package/dist/agents/control_flow/types.js +428 -0
- package/dist/agents/control_flow/types.js.map +1 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts +85 -0
- package/dist/agents/control_flow/vulnerability-detector.d.ts.map +1 -0
- package/dist/agents/control_flow/vulnerability-detector.js +493 -0
- package/dist/agents/control_flow/vulnerability-detector.js.map +1 -0
- package/dist/agents/date-utils.d.ts +19 -0
- package/dist/agents/date-utils.d.ts.map +1 -0
- package/dist/agents/date-utils.js +29 -0
- package/dist/agents/date-utils.js.map +1 -0
- package/dist/agents/index.d.ts +25 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +50 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/json-utils.d.ts +34 -0
- package/dist/agents/json-utils.d.ts.map +1 -0
- package/dist/agents/json-utils.js +62 -0
- package/dist/agents/json-utils.js.map +1 -0
- package/dist/agents/local_llm.d.ts +24 -0
- package/dist/agents/local_llm.d.ts.map +1 -0
- package/dist/agents/local_llm.js +566 -0
- package/dist/agents/local_llm.js.map +1 -0
- package/dist/agents/metadata.d.ts +57 -0
- package/dist/agents/metadata.d.ts.map +1 -0
- package/dist/agents/metadata.js +45 -0
- package/dist/agents/metadata.js.map +1 -0
- package/dist/agents/opencode.d.ts +18 -0
- package/dist/agents/opencode.d.ts.map +1 -0
- package/dist/agents/opencode.js +364 -0
- package/dist/agents/opencode.js.map +1 -0
- package/dist/agents/path-filter.d.ts +25 -0
- package/dist/agents/path-filter.d.ts.map +1 -0
- package/dist/agents/path-filter.js +43 -0
- package/dist/agents/path-filter.js.map +1 -0
- package/dist/agents/pr_agent.d.ts +3 -0
- package/dist/agents/pr_agent.d.ts.map +1 -0
- package/dist/agents/pr_agent.js +312 -0
- package/dist/agents/pr_agent.js.map +1 -0
- package/dist/agents/retry.d.ts +12 -0
- package/dist/agents/retry.d.ts.map +1 -0
- package/dist/agents/retry.js +65 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/agents/reviewdog.d.ts +24 -0
- package/dist/agents/reviewdog.d.ts.map +1 -0
- package/dist/agents/reviewdog.js +259 -0
- package/dist/agents/reviewdog.js.map +1 -0
- package/dist/agents/security.d.ts +49 -0
- package/dist/agents/security.d.ts.map +1 -0
- package/dist/agents/security.js +302 -0
- package/dist/agents/security.js.map +1 -0
- package/dist/agents/semgrep.d.ts +8 -0
- package/dist/agents/semgrep.d.ts.map +1 -0
- package/dist/agents/semgrep.js +157 -0
- package/dist/agents/semgrep.js.map +1 -0
- package/dist/agents/types.d.ts +450 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +127 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/budget.d.ts +59 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +82 -0
- package/dist/budget.js.map +1 -0
- package/dist/cache/key.d.ts +49 -0
- package/dist/cache/key.d.ts.map +1 -0
- package/dist/cache/key.js +71 -0
- package/dist/cache/key.js.map +1 -0
- package/dist/cache/store.d.ts +47 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +328 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cli/commands/check.d.ts +60 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +163 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/index.d.ts +12 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +12 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/local-review.d.ts +149 -0
- package/dist/cli/commands/local-review.d.ts.map +1 -0
- package/dist/cli/commands/local-review.js +755 -0
- package/dist/cli/commands/local-review.js.map +1 -0
- package/dist/cli/config-wizard.d.ts +87 -0
- package/dist/cli/config-wizard.d.ts.map +1 -0
- package/dist/cli/config-wizard.js +240 -0
- package/dist/cli/config-wizard.js.map +1 -0
- package/dist/cli/dependencies/catalog.d.ts +44 -0
- package/dist/cli/dependencies/catalog.d.ts.map +1 -0
- package/dist/cli/dependencies/catalog.js +89 -0
- package/dist/cli/dependencies/catalog.js.map +1 -0
- package/dist/cli/dependencies/checker.d.ts +42 -0
- package/dist/cli/dependencies/checker.d.ts.map +1 -0
- package/dist/cli/dependencies/checker.js +240 -0
- package/dist/cli/dependencies/checker.js.map +1 -0
- package/dist/cli/dependencies/index.d.ts +16 -0
- package/dist/cli/dependencies/index.d.ts.map +1 -0
- package/dist/cli/dependencies/index.js +16 -0
- package/dist/cli/dependencies/index.js.map +1 -0
- package/dist/cli/dependencies/messages.d.ts +58 -0
- package/dist/cli/dependencies/messages.d.ts.map +1 -0
- package/dist/cli/dependencies/messages.js +183 -0
- package/dist/cli/dependencies/messages.js.map +1 -0
- package/dist/cli/dependencies/platform.d.ts +25 -0
- package/dist/cli/dependencies/platform.d.ts.map +1 -0
- package/dist/cli/dependencies/platform.js +42 -0
- package/dist/cli/dependencies/platform.js.map +1 -0
- package/dist/cli/dependencies/schemas.d.ts +65 -0
- package/dist/cli/dependencies/schemas.d.ts.map +1 -0
- package/dist/cli/dependencies/schemas.js +42 -0
- package/dist/cli/dependencies/schemas.js.map +1 -0
- package/dist/cli/dependencies/types.d.ts +112 -0
- package/dist/cli/dependencies/types.d.ts.map +1 -0
- package/dist/cli/dependencies/types.js +6 -0
- package/dist/cli/dependencies/types.js.map +1 -0
- package/dist/cli/dependencies/version.d.ts +67 -0
- package/dist/cli/dependencies/version.d.ts.map +1 -0
- package/dist/cli/dependencies/version.js +125 -0
- package/dist/cli/dependencies/version.js.map +1 -0
- package/dist/cli/git-context.d.ts +105 -0
- package/dist/cli/git-context.d.ts.map +1 -0
- package/dist/cli/git-context.js +313 -0
- package/dist/cli/git-context.js.map +1 -0
- package/dist/cli/interactive-prompts.d.ts +126 -0
- package/dist/cli/interactive-prompts.d.ts.map +1 -0
- package/dist/cli/interactive-prompts.js +128 -0
- package/dist/cli/interactive-prompts.js.map +1 -0
- package/dist/cli/options/index.d.ts +7 -0
- package/dist/cli/options/index.d.ts.map +1 -0
- package/dist/cli/options/index.js +11 -0
- package/dist/cli/options/index.js.map +1 -0
- package/dist/cli/options/local-review-options.d.ts +221 -0
- package/dist/cli/options/local-review-options.d.ts.map +1 -0
- package/dist/cli/options/local-review-options.js +332 -0
- package/dist/cli/options/local-review-options.js.map +1 -0
- package/dist/cli/output/colors.d.ts +154 -0
- package/dist/cli/output/colors.d.ts.map +1 -0
- package/dist/cli/output/colors.js +255 -0
- package/dist/cli/output/colors.js.map +1 -0
- package/dist/cli/output/errors.d.ts +157 -0
- package/dist/cli/output/errors.d.ts.map +1 -0
- package/dist/cli/output/errors.js +266 -0
- package/dist/cli/output/errors.js.map +1 -0
- package/dist/cli/output/index.d.ts +12 -0
- package/dist/cli/output/index.d.ts.map +1 -0
- package/dist/cli/output/index.js +15 -0
- package/dist/cli/output/index.js.map +1 -0
- package/dist/cli/output/progress.d.ts +237 -0
- package/dist/cli/output/progress.d.ts.map +1 -0
- package/dist/cli/output/progress.js +405 -0
- package/dist/cli/output/progress.js.map +1 -0
- package/dist/cli/signals.d.ts +145 -0
- package/dist/cli/signals.d.ts.map +1 -0
- package/dist/cli/signals.js +223 -0
- package/dist/cli/signals.js.map +1 -0
- package/dist/cli/validation-report.d.ts +106 -0
- package/dist/cli/validation-report.d.ts.map +1 -0
- package/dist/cli/validation-report.js +108 -0
- package/dist/cli/validation-report.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +12 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/mitigation-config.d.ts +94 -0
- package/dist/config/mitigation-config.d.ts.map +1 -0
- package/dist/config/mitigation-config.js +430 -0
- package/dist/config/mitigation-config.js.map +1 -0
- package/dist/config/providers.d.ts +118 -0
- package/dist/config/providers.d.ts.map +1 -0
- package/dist/config/providers.js +229 -0
- package/dist/config/providers.js.map +1 -0
- package/dist/config/schemas.d.ts +278 -0
- package/dist/config/schemas.d.ts.map +1 -0
- package/dist/config/schemas.js +111 -0
- package/dist/config/schemas.js.map +1 -0
- package/dist/config/zero-config.d.ts +126 -0
- package/dist/config/zero-config.d.ts.map +1 -0
- package/dist/config/zero-config.js +243 -0
- package/dist/config/zero-config.js.map +1 -0
- package/dist/config.d.ts +110 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +302 -0
- package/dist/config.js.map +1 -0
- package/dist/diff.d.ts +224 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +832 -0
- package/dist/diff.js.map +1 -0
- package/dist/git-validators.d.ts +106 -0
- package/dist/git-validators.d.ts.map +1 -0
- package/dist/git-validators.js +224 -0
- package/dist/git-validators.js.map +1 -0
- package/dist/main.d.ts +61 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +704 -0
- package/dist/main.js.map +1 -0
- package/dist/phases/execute.d.ts +60 -0
- package/dist/phases/execute.d.ts.map +1 -0
- package/dist/phases/execute.js +168 -0
- package/dist/phases/execute.js.map +1 -0
- package/dist/phases/index.d.ts +9 -0
- package/dist/phases/index.d.ts.map +1 -0
- package/dist/phases/index.js +9 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/phases/preflight.d.ts +40 -0
- package/dist/phases/preflight.d.ts.map +1 -0
- package/dist/phases/preflight.js +122 -0
- package/dist/phases/preflight.js.map +1 -0
- package/dist/phases/report.d.ts +51 -0
- package/dist/phases/report.d.ts.map +1 -0
- package/dist/phases/report.js +152 -0
- package/dist/phases/report.js.map +1 -0
- package/dist/policy.d.ts +33 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +34 -0
- package/dist/policy.js.map +1 -0
- package/dist/preflight.d.ts +181 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +627 -0
- package/dist/preflight.js.map +1 -0
- package/dist/report/ado.d.ts +53 -0
- package/dist/report/ado.d.ts.map +1 -0
- package/dist/report/ado.js +411 -0
- package/dist/report/ado.js.map +1 -0
- package/dist/report/agent-icons.d.ts +36 -0
- package/dist/report/agent-icons.d.ts.map +1 -0
- package/dist/report/agent-icons.js +46 -0
- package/dist/report/agent-icons.js.map +1 -0
- package/dist/report/base.d.ts +30 -0
- package/dist/report/base.d.ts.map +1 -0
- package/dist/report/base.js +64 -0
- package/dist/report/base.js.map +1 -0
- package/dist/report/formats.d.ts +206 -0
- package/dist/report/formats.d.ts.map +1 -0
- package/dist/report/formats.js +481 -0
- package/dist/report/formats.js.map +1 -0
- package/dist/report/github.d.ts +44 -0
- package/dist/report/github.d.ts.map +1 -0
- package/dist/report/github.js +409 -0
- package/dist/report/github.js.map +1 -0
- package/dist/report/line-resolver.d.ts +208 -0
- package/dist/report/line-resolver.d.ts.map +1 -0
- package/dist/report/line-resolver.js +578 -0
- package/dist/report/line-resolver.js.map +1 -0
- package/dist/report/resolution.d.ts +158 -0
- package/dist/report/resolution.d.ts.map +1 -0
- package/dist/report/resolution.js +272 -0
- package/dist/report/resolution.js.map +1 -0
- package/dist/report/sanitize.d.ts +32 -0
- package/dist/report/sanitize.d.ts.map +1 -0
- package/dist/report/sanitize.js +84 -0
- package/dist/report/sanitize.js.map +1 -0
- package/dist/report/terminal.d.ts +440 -0
- package/dist/report/terminal.d.ts.map +1 -0
- package/dist/report/terminal.js +840 -0
- package/dist/report/terminal.js.map +1 -0
- package/dist/reviewignore.d.ts +125 -0
- package/dist/reviewignore.d.ts.map +1 -0
- package/dist/reviewignore.js +335 -0
- package/dist/reviewignore.js.map +1 -0
- package/dist/security-logger.d.ts +178 -0
- package/dist/security-logger.d.ts.map +1 -0
- package/dist/security-logger.js +256 -0
- package/dist/security-logger.js.map +1 -0
- package/dist/telemetry/backends/console.d.ts +24 -0
- package/dist/telemetry/backends/console.d.ts.map +1 -0
- package/dist/telemetry/backends/console.js +54 -0
- package/dist/telemetry/backends/console.js.map +1 -0
- package/dist/telemetry/backends/jsonl.d.ts +31 -0
- package/dist/telemetry/backends/jsonl.d.ts.map +1 -0
- package/dist/telemetry/backends/jsonl.js +121 -0
- package/dist/telemetry/backends/jsonl.js.map +1 -0
- package/dist/telemetry/emitter.d.ts +43 -0
- package/dist/telemetry/emitter.d.ts.map +1 -0
- package/dist/telemetry/emitter.js +83 -0
- package/dist/telemetry/emitter.js.map +1 -0
- package/dist/telemetry/hook.d.ts +53 -0
- package/dist/telemetry/hook.d.ts.map +1 -0
- package/dist/telemetry/hook.js +118 -0
- package/dist/telemetry/hook.js.map +1 -0
- package/dist/telemetry/index.d.ts +58 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +143 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/types.d.ts +139 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +133 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/trust.d.ts +65 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +78 -0
- package/dist/trust.js.map +1 -0
- package/dist/types/assert-never.d.ts +30 -0
- package/dist/types/assert-never.d.ts.map +1 -0
- package/dist/types/assert-never.js +32 -0
- package/dist/types/assert-never.js.map +1 -0
- package/dist/types/branded.d.ts +172 -0
- package/dist/types/branded.d.ts.map +1 -0
- package/dist/types/branded.js +262 -0
- package/dist/types/branded.js.map +1 -0
- package/dist/types/errors.d.ts +320 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +551 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +37 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +77 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/result.d.ts +323 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +423 -0
- package/dist/types/result.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result Type for Type-Safe Error Handling
|
|
3
|
+
*
|
|
4
|
+
* This module provides:
|
|
5
|
+
* - Result<T, E>: Discriminated union for success/failure
|
|
6
|
+
* - Ok/Err constructors
|
|
7
|
+
* - Type guards (isOk, isErr)
|
|
8
|
+
* - Utility functions (map, flatMap, match, collect, partition)
|
|
9
|
+
* - wrapThrowing/wrapThrowingAsync for backward compatibility
|
|
10
|
+
*
|
|
11
|
+
* Use Result for internal operations to enforce compile-time error handling.
|
|
12
|
+
* Use wrapThrowing for public APIs that need to maintain backward compatibility.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// Result Constructors
|
|
17
|
+
// =============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* Create a success result
|
|
20
|
+
*
|
|
21
|
+
* Uses `const` type parameter (TypeScript 5.0+) to preserve literal types.
|
|
22
|
+
*
|
|
23
|
+
* @param value - The success value
|
|
24
|
+
* @returns A Result with ok: true and the value
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const result = Ok(42);
|
|
29
|
+
* // result: Result<42, never> (literal type preserved)
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function Ok(value) {
|
|
33
|
+
return { ok: true, value };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a failure result
|
|
37
|
+
*
|
|
38
|
+
* Uses `const` type parameter (TypeScript 5.0+) to preserve literal types.
|
|
39
|
+
*
|
|
40
|
+
* @param error - The error value
|
|
41
|
+
* @returns A Result with ok: false and the error
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const result = Err(new ValidationError('invalid', ...));
|
|
46
|
+
* // result: Result<never, ValidationError>
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export function Err(error) {
|
|
50
|
+
return { ok: false, error };
|
|
51
|
+
}
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// Type Guards
|
|
54
|
+
// =============================================================================
|
|
55
|
+
/**
|
|
56
|
+
* Type guard for success results
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const result = loadConfig(path);
|
|
61
|
+
* if (isOk(result)) {
|
|
62
|
+
* // TypeScript knows result.value exists here
|
|
63
|
+
* console.log(result.value);
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export function isOk(result) {
|
|
68
|
+
return result.ok === true;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Type guard for failure results
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const result = loadConfig(path);
|
|
76
|
+
* if (isErr(result)) {
|
|
77
|
+
* // TypeScript knows result.error exists here
|
|
78
|
+
* console.error(result.error);
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export function isErr(result) {
|
|
83
|
+
return result.ok === false;
|
|
84
|
+
}
|
|
85
|
+
// =============================================================================
|
|
86
|
+
// Result Utilities
|
|
87
|
+
// =============================================================================
|
|
88
|
+
/**
|
|
89
|
+
* Unwrap a result, throwing if it's an error
|
|
90
|
+
*
|
|
91
|
+
* @param result - The result to unwrap
|
|
92
|
+
* @returns The success value
|
|
93
|
+
* @throws The error value if result is Err
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const config = unwrap(loadConfig(path)); // throws if Err
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export function unwrap(result) {
|
|
101
|
+
if (isOk(result)) {
|
|
102
|
+
return result.value;
|
|
103
|
+
}
|
|
104
|
+
throw result.error;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Unwrap a result with a default value for errors
|
|
108
|
+
*
|
|
109
|
+
* @param result - The result to unwrap
|
|
110
|
+
* @param defaultValue - Value to return if result is Err
|
|
111
|
+
* @returns The success value or default value
|
|
112
|
+
*/
|
|
113
|
+
export function unwrapOr(result, defaultValue) {
|
|
114
|
+
return isOk(result) ? result.value : defaultValue;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Unwrap a result with a lazy default for errors
|
|
118
|
+
*
|
|
119
|
+
* @param result - The result to unwrap
|
|
120
|
+
* @param defaultFn - Function to compute default value from error
|
|
121
|
+
* @returns The success value or computed default
|
|
122
|
+
*/
|
|
123
|
+
export function unwrapOrElse(result, defaultFn) {
|
|
124
|
+
return isOk(result) ? result.value : defaultFn(result.error);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Map the success value
|
|
128
|
+
*
|
|
129
|
+
* @param result - The result to map
|
|
130
|
+
* @param fn - Function to apply to success value
|
|
131
|
+
* @returns New Result with mapped value
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* const result = map(Ok(5), x => x * 2); // Ok(10)
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
export function map(result, fn) {
|
|
139
|
+
return isOk(result) ? Ok(fn(result.value)) : result;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Map the error value
|
|
143
|
+
*
|
|
144
|
+
* @param result - The result to map
|
|
145
|
+
* @param fn - Function to apply to error value
|
|
146
|
+
* @returns New Result with mapped error
|
|
147
|
+
*/
|
|
148
|
+
export function mapErr(result, fn) {
|
|
149
|
+
return isErr(result) ? Err(fn(result.error)) : result;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* FlatMap (chain) the success value
|
|
153
|
+
*
|
|
154
|
+
* @param result - The result to flatMap
|
|
155
|
+
* @param fn - Function that returns a new Result
|
|
156
|
+
* @returns The new Result from fn, or the original error
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* const result = flatMap(loadConfig(path), config =>
|
|
161
|
+
* validateConfig(config)
|
|
162
|
+
* );
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
export function flatMap(result, fn) {
|
|
166
|
+
return isOk(result) ? fn(result.value) : result;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Pattern match on result variants
|
|
170
|
+
*
|
|
171
|
+
* @param result - The result to match
|
|
172
|
+
* @param handlers - Object with ok and err handler functions
|
|
173
|
+
* @returns The result of the matching handler
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const message = match(result, {
|
|
178
|
+
* ok: value => `Success: ${value}`,
|
|
179
|
+
* err: error => `Error: ${error.message}`,
|
|
180
|
+
* });
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
export function match(result, handlers) {
|
|
184
|
+
return isOk(result) ? handlers.ok(result.value) : handlers.err(result.error);
|
|
185
|
+
}
|
|
186
|
+
// =============================================================================
|
|
187
|
+
// Async Result Utilities
|
|
188
|
+
// =============================================================================
|
|
189
|
+
/**
|
|
190
|
+
* Wrap a promise that may throw into a Result
|
|
191
|
+
*
|
|
192
|
+
* @param promise - The promise to wrap
|
|
193
|
+
* @param mapError - Optional function to map caught errors
|
|
194
|
+
* @returns Promise of Result
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```typescript
|
|
198
|
+
* const result = await fromPromise(
|
|
199
|
+
* fetch('/api/data'),
|
|
200
|
+
* err => new NetworkError('fetch failed', NetworkErrorCode.CONNECTION_FAILED, {}, { cause: err })
|
|
201
|
+
* );
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
export async function fromPromise(promise, mapError) {
|
|
205
|
+
try {
|
|
206
|
+
const value = await promise;
|
|
207
|
+
return Ok(value);
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
return Err(mapError ? mapError(error) : error);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Convert a Result to a Promise
|
|
215
|
+
*
|
|
216
|
+
* @param result - The result to convert
|
|
217
|
+
* @returns Promise that resolves with value or rejects with error
|
|
218
|
+
*/
|
|
219
|
+
export function toPromise(result) {
|
|
220
|
+
return isOk(result) ? Promise.resolve(result.value) : Promise.reject(result.error);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Async version of map
|
|
224
|
+
*/
|
|
225
|
+
export async function mapAsync(result, fn) {
|
|
226
|
+
if (isOk(result)) {
|
|
227
|
+
try {
|
|
228
|
+
const value = await fn(result.value);
|
|
229
|
+
return Ok(value);
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// If fn throws, we can't convert to E, so we return the original result
|
|
233
|
+
// This should be used with fromPromise instead for proper error handling
|
|
234
|
+
throw new Error('mapAsync fn threw - use fromPromise for proper error handling');
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Async version of flatMap
|
|
241
|
+
*/
|
|
242
|
+
export async function flatMapAsync(result, fn) {
|
|
243
|
+
return isOk(result) ? fn(result.value) : result;
|
|
244
|
+
}
|
|
245
|
+
// =============================================================================
|
|
246
|
+
// Collection Utilities
|
|
247
|
+
// =============================================================================
|
|
248
|
+
/**
|
|
249
|
+
* Collect an array of Results into a Result of array
|
|
250
|
+
*
|
|
251
|
+
* Returns Err with first error if any result is Err.
|
|
252
|
+
* Use partition() if you want to collect all successes and failures.
|
|
253
|
+
*
|
|
254
|
+
* @param results - Array of Results to collect
|
|
255
|
+
* @returns Result containing all values or first error
|
|
256
|
+
*
|
|
257
|
+
* @example
|
|
258
|
+
* ```typescript
|
|
259
|
+
* const results = files.map(f => validateFile(f));
|
|
260
|
+
* const allOrNone = collect(results);
|
|
261
|
+
* if (isOk(allOrNone)) {
|
|
262
|
+
* // allOrNone.value is all validated files
|
|
263
|
+
* }
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export function collect(results) {
|
|
267
|
+
const values = [];
|
|
268
|
+
for (const result of results) {
|
|
269
|
+
if (isErr(result)) {
|
|
270
|
+
return result;
|
|
271
|
+
}
|
|
272
|
+
values.push(result.value);
|
|
273
|
+
}
|
|
274
|
+
return Ok(values);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Partition an array of Results into successes and failures
|
|
278
|
+
*
|
|
279
|
+
* Unlike collect(), this continues processing all results.
|
|
280
|
+
*
|
|
281
|
+
* @param results - Array of Results to partition
|
|
282
|
+
* @returns Object with ok array (values) and err array (errors)
|
|
283
|
+
*
|
|
284
|
+
* @example
|
|
285
|
+
* ```typescript
|
|
286
|
+
* const { ok: successes, err: failures } = partition(results);
|
|
287
|
+
* console.log(`${successes.length} succeeded, ${failures.length} failed`);
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
export function partition(results) {
|
|
291
|
+
const ok = [];
|
|
292
|
+
const err = [];
|
|
293
|
+
for (const result of results) {
|
|
294
|
+
if (isOk(result)) {
|
|
295
|
+
ok.push(result.value);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
err.push(result.error);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return { ok, err };
|
|
302
|
+
}
|
|
303
|
+
// =============================================================================
|
|
304
|
+
// Zod Schema Factory
|
|
305
|
+
// =============================================================================
|
|
306
|
+
/**
|
|
307
|
+
* Create a Zod schema for Result<T, E>
|
|
308
|
+
*
|
|
309
|
+
* @param successSchema - Zod schema for success value
|
|
310
|
+
* @param errorSchema - Zod schema for error value
|
|
311
|
+
* @returns Zod schema for Result type
|
|
312
|
+
*/
|
|
313
|
+
export function ResultSchema(successSchema, errorSchema) {
|
|
314
|
+
return z.discriminatedUnion('ok', [
|
|
315
|
+
z.object({
|
|
316
|
+
ok: z.literal(true),
|
|
317
|
+
value: successSchema,
|
|
318
|
+
}),
|
|
319
|
+
z.object({
|
|
320
|
+
ok: z.literal(false),
|
|
321
|
+
error: errorSchema,
|
|
322
|
+
}),
|
|
323
|
+
]);
|
|
324
|
+
}
|
|
325
|
+
// =============================================================================
|
|
326
|
+
// Backward Compatibility Wrapper Factory
|
|
327
|
+
// =============================================================================
|
|
328
|
+
/**
|
|
329
|
+
* Create a throwing wrapper for a function that returns Result
|
|
330
|
+
*
|
|
331
|
+
* Use this to maintain backward compatibility for public APIs that
|
|
332
|
+
* previously threw errors but now use Result internally.
|
|
333
|
+
*
|
|
334
|
+
* @param fn - Function that returns Result
|
|
335
|
+
* @returns Function that throws on error, returns value on success
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* ```typescript
|
|
339
|
+
* // Internal function uses Result
|
|
340
|
+
* function loadConfigInternal(path: string): Result<Config, ConfigError> {
|
|
341
|
+
* // ... returns Ok(config) or Err(error)
|
|
342
|
+
* }
|
|
343
|
+
*
|
|
344
|
+
* // Public API throws (backward compatible)
|
|
345
|
+
* export const loadConfig = wrapThrowing(loadConfigInternal);
|
|
346
|
+
* // loadConfig throws ConfigError on failure
|
|
347
|
+
* ```
|
|
348
|
+
*/
|
|
349
|
+
export function wrapThrowing(fn) {
|
|
350
|
+
return (...args) => {
|
|
351
|
+
const result = fn(...args);
|
|
352
|
+
if (isOk(result)) {
|
|
353
|
+
return result.value;
|
|
354
|
+
}
|
|
355
|
+
throw result.error;
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Async version of wrapThrowing
|
|
360
|
+
*
|
|
361
|
+
* @param fn - Async function that returns Promise<Result>
|
|
362
|
+
* @returns Async function that throws on error, returns value on success
|
|
363
|
+
*
|
|
364
|
+
* @example
|
|
365
|
+
* ```typescript
|
|
366
|
+
* // Internal function uses Result
|
|
367
|
+
* async function fetchDataInternal(url: string): Promise<Result<Data, NetworkError>> {
|
|
368
|
+
* // ... returns Ok(data) or Err(error)
|
|
369
|
+
* }
|
|
370
|
+
*
|
|
371
|
+
* // Public API throws (backward compatible)
|
|
372
|
+
* export const fetchData = wrapThrowingAsync(fetchDataInternal);
|
|
373
|
+
* ```
|
|
374
|
+
*/
|
|
375
|
+
export function wrapThrowingAsync(fn) {
|
|
376
|
+
return async (...args) => {
|
|
377
|
+
const result = await fn(...args);
|
|
378
|
+
if (isOk(result)) {
|
|
379
|
+
return result.value;
|
|
380
|
+
}
|
|
381
|
+
throw result.error;
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Convert a throwing function to one that returns Result
|
|
386
|
+
*
|
|
387
|
+
* @param fn - Function that may throw
|
|
388
|
+
* @param mapError - Function to convert caught errors
|
|
389
|
+
* @returns Function that returns Result
|
|
390
|
+
*
|
|
391
|
+
* @example
|
|
392
|
+
* ```typescript
|
|
393
|
+
* const safeParseJSON = tryCatch(
|
|
394
|
+
* JSON.parse,
|
|
395
|
+
* err => new ValidationError('Invalid JSON', ...)
|
|
396
|
+
* );
|
|
397
|
+
* const result = safeParseJSON(input); // Result<unknown, ValidationError>
|
|
398
|
+
* ```
|
|
399
|
+
*/
|
|
400
|
+
export function tryCatch(fn, mapError) {
|
|
401
|
+
return (...args) => {
|
|
402
|
+
try {
|
|
403
|
+
return Ok(fn(...args));
|
|
404
|
+
}
|
|
405
|
+
catch (error) {
|
|
406
|
+
return Err(mapError(error));
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Async version of tryCatch
|
|
412
|
+
*/
|
|
413
|
+
export function tryCatchAsync(fn, mapError) {
|
|
414
|
+
return async (...args) => {
|
|
415
|
+
try {
|
|
416
|
+
return Ok(await fn(...args));
|
|
417
|
+
}
|
|
418
|
+
catch (error) {
|
|
419
|
+
return Err(mapError(error));
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/types/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,EAAE,CAAU,KAAQ;IAClC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAW,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,GAAG,CAAU,KAAQ;IACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAW,CAAC;AACvC,CAAC;AAED,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,IAAI,CAAO,MAAoB;IAC7C,OAAO,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAO,MAAoB;IAC9C,OAAO,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,MAAM,CAAO,MAAoB;IAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAO,MAAoB,EAAE,YAAe;IAClE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAO,MAAoB,EAAE,SAA0B;IACjF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,GAAG,CAAU,MAAoB,EAAE,EAAmB;IACpE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAU,MAAoB,EAAE,EAAmB;IACvE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO,CACrB,MAAoB,EACpB,EAA8B;IAE9B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK,CACnB,MAAoB,EACpB,QAGC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,QAAgC;IAEhC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;QAC5B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAW,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAO,MAAoB;IAClD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAoB,EACpB,EAA4B;IAE5B,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,EAAuC;IAEvC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,OAAO,CAAO,OAAuB;IACnD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CAAO,OAAuB;IACrD,MAAM,EAAE,GAAQ,EAAE,CAAC;IACnB,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,aAAgB,EAChB,WAAc;IAEd,OAAO,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE;QAChC,CAAC,CAAC,MAAM,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,aAAa;SACrB,CAAC;QACF,CAAC,CAAC,MAAM,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,EAAE,WAAW;SACnB,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,yCAAyC;AACzC,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAmC;IAEnC,OAAO,CAAC,GAAG,IAAU,EAAK,EAAE;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAA4C;IAE5C,OAAO,KAAK,EAAE,GAAG,IAAU,EAAc,EAAE;QACzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAwB,EACxB,QAA+B;IAE/B,OAAO,CAAC,GAAG,IAAU,EAAgB,EAAE;QACrC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAiC,EACjC,QAA+B;IAE/B,OAAO,KAAK,EAAE,GAAG,IAAU,EAAyB,EAAE;QACpD,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@oddessentials/odd-ai-reviewers",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "AI-powered code review CLI - run locally or in CI/CD pipelines",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/main.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"ai-review": "dist/main.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/oddessentials/odd-ai-reviewers.git"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"ai",
|
|
20
|
+
"code-review",
|
|
21
|
+
"cli",
|
|
22
|
+
"llm",
|
|
23
|
+
"openai",
|
|
24
|
+
"anthropic",
|
|
25
|
+
"developer-tools"
|
|
26
|
+
],
|
|
27
|
+
"author": "ODD Essentials",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/oddessentials/odd-ai-reviewers/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/oddessentials/odd-ai-reviewers#readme",
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc",
|
|
35
|
+
"dev": "tsc --watch",
|
|
36
|
+
"start": "node dist/main.js",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"test:coverage": "vitest run --coverage",
|
|
40
|
+
"test:ci": "vitest run --reporter=json --outputFile=test-results.json",
|
|
41
|
+
"test:ci:coverage": "vitest run --coverage --reporter=json --reporter=dot --outputFile=test-results.json",
|
|
42
|
+
"typecheck": "tsc --noEmit"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@actions/cache": "5.0.5",
|
|
46
|
+
"@anthropic-ai/sdk": "0.71.2",
|
|
47
|
+
"@octokit/rest": "^22.0.1",
|
|
48
|
+
"commander": "^14.0.2",
|
|
49
|
+
"minimatch": "^10.1.1",
|
|
50
|
+
"openai": "^6.17.0",
|
|
51
|
+
"typescript": "5.9.3",
|
|
52
|
+
"yaml": "^2.8.2",
|
|
53
|
+
"zod": "^4.3.6"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@types/node": "25.1.0",
|
|
57
|
+
"@vitest/coverage-v8": "4.0.18",
|
|
58
|
+
"vitest": "^4.0.18"
|
|
59
|
+
},
|
|
60
|
+
"engines": {
|
|
61
|
+
"node": ">=22.0.0"
|
|
62
|
+
}
|
|
63
|
+
}
|