Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
f2411d8
📝 add parsing theory design spec
cowboyd May 4, 2026
5b30369
📝 add parsing theory implementation plan
cowboyd May 4, 2026
8723dbc
♻️ phase 1: introduce Token, Prefix, AvailableInput, new ParseContext
cowboyd May 4, 2026
4be73ad
✨ phase 2: option, argument, constant, many, passthrough leaves
cowboyd May 4, 2026
8c97300
♻️ phase 3: rewrite object() over strict-sequential claim protocol
cowboyd May 4, 2026
76253f2
♻️ phase 4: rewrite commands() with tuple-array API and dispatch prot…
cowboyd May 5, 2026
d472c26
♻️ phase 5: rewrite program() with wrapping pattern
cowboyd May 5, 2026
8db6494
♻️ phase 6: adapt inject() to new ParseContext
cowboyd May 5, 2026
5f9c083
✨ phase 7: add parse-chart renderer
cowboyd May 5, 2026
77927cb
♻️ phase 8: delete old files, update barrel and tests
cowboyd May 5, 2026
a02570f
🐛 fix CLI value coercion and commands help propagation
cowboyd May 5, 2026
2373891
🔒 strict conservation: subtract value/env claims from available
cowboyd May 5, 2026
4bd97c9
📝 spec: switch to aggregate claims model
cowboyd May 6, 2026
bbbda1c
✨ defineParser helper, ctx.read, Parser.claim
cowboyd May 6, 2026
598375e
♻️ refactor all parsers to defineParser, aggregate claims model
cowboyd May 7, 2026
1673782
📝 spec: help command + ParseScope + new commands API
cowboyd May 8, 2026
e116118
begin project Tom Hagen by clearing out all the dead wood.
cowboyd Aug 12, 2026
e7e888c
Add a very simple DSL, and basic parse tests
cowboyd Aug 17, 2026
64fd34f
setup types for child routes
cowboyd Aug 18, 2026
a0d935b
Support methods at the type level
cowboyd Aug 18, 2026
0877da7
Implement recursive route matching
cowboyd Aug 18, 2026
82b9aae
Add command and child routes
cowboyd Aug 19, 2026
9b2e057
implement matchable route ids for recursive routes
cowboyd Aug 19, 2026
f4425e6
Make params composable
cowboyd Aug 20, 2026
8115799
add models to routes
cowboyd Aug 21, 2026
6bd4698
implement binding tests
cowboyd Aug 21, 2026
8717bfe
impplement read tests, define namespace tests in their own place
cowboyd Aug 21, 2026
2e1793b
implement binding tests
cowboyd Aug 21, 2026
7b29cb4
implement toggle
cowboyd Aug 21, 2026
52bb350
add printHelp() and printVersion()
cowboyd Aug 21, 2026
65123a7
update exports
cowboyd Aug 21, 2026
d4df642
🔀 Merge main into Project Tom Hagen
cowboyd Aug 21, 2026
80f8454
fix formatting and linting
cowboyd Aug 21, 2026
3094d22
add README
cowboyd Aug 21, 2026
52c9705
increase the number of overloads to 30
cowboyd Aug 23, 2026
a33942e
Parse<T> -> Outcome<T>
cowboyd Aug 26, 2026
40ced06
Revamp vocabulary to be Intentful
cowboyd Aug 26, 2026
78c54a9
make AddModel private. Move private types to the bottom
cowboyd Aug 27, 2026
4736b80
finish rename
cowboyd Aug 28, 2026
11b186e
✨ expose route identifiers on failures
cowboyd Aug 28, 2026
1e65207
📦 Include library modules in JSR package
cowboyd Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/verify.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,8 @@ jobs:
- name: lint
run: deno lint

- name: check
run: deno check mod.ts

- name: test
run: deno test
run: deno task test
30 changes: 9 additions & 21 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
# Configliere

Functional configuration parser that validates all program inputs (config files,
environment variables, CLI options) ahead of time using a single schema based on
the [Standard Schema](https://standardschema.dev) spec.
Configuration for programs.

## Architecture
## Current state

Configliere is a parser-combinator library. Small parsers compose into larger
ones. Every parser implements the `Parser` interface from `lib/types.ts` and
returns an `Increment` — either `Done|Fail` for single-step parsers or
`Next|Fail` for multi-step (phased) parsers.

### Key design concepts

- **Source tracking**: Every parsed value carries metadata about where it came
Configliere is undergoing a ground-up rebuild. No implementation architecture is
established yet. Design from the bottom up with small API sketches, exact type
expectations, and tests before implementation. Do not carry architectural
assumptions forward from pre-rebuild history.

## Conventions

Expand All @@ -30,20 +24,14 @@ Strongly prefer one-word variable and function names (e.g. `dir` not `tmpDir`,
### Testing

- Framework: `@std/testing/bdd` (`describe`/`it`) with `@std/expect`
- Schema library in tests: `arktype` (via `type()`)
- Test helpers in `test/test-helpers.ts`: `parseOk()` and `parseNotOk()` wrap
`parseSync` with assertions
- Tests live in `test/` and mirror `lib/` module names (e.g.
`test/field.test.ts`)
- Tests live in `test/` and mirror the source layout.

### Runtime and tooling

- **Runtime**: Deno
- **Registry**: JSR (`@frontside/configliere`)
- **Linting**: `deno lint` (excludes `prefer-const` and `require-yield`)
- **Testing**: `deno test`
- **Examples**: Files in `examples/` must compile (`deno check`) and run
(`deno run`) without errors
- **Linting**: `deno lint` (excludes `prefer-const`)
- **Testing**: `deno task test`
- **Build**: `deno task build:npm` (dnt) and `deno task build:jsr`

### Dependencies
Expand Down
Loading
Loading