Skip to content

feat(routes-f): add relative-date parser endpoint (#880)#940

Open
utahkanz-ops wants to merge 1 commit into
StreamFi-x:devfrom
utahkanz-ops:feat/relative-date-parser-880-v2
Open

feat(routes-f): add relative-date parser endpoint (#880)#940
utahkanz-ops wants to merge 1 commit into
StreamFi-x:devfrom
utahkanz-ops:feat/relative-date-parser-880-v2

Conversation

@utahkanz-ops
Copy link
Copy Markdown

Summary

Closes #880

Parses natural relative date expressions into absolute ISO 8601 timestamps.

Endpoint

POST /api/routes-f/relative-date

Request:

{ "text": "tomorrow", "now": "2026-05-28T12:00:00.000Z" }

Response (200):

{ "resolved": "2026-05-29T12:00:00.000Z", "matched": "tomorrow" }

Error (400): returned for unparseable input or invalid now value.

Supported Phrases

Phrase Behavior
tomorrow baseDate + 1 day
yesterday baseDate − 1 day
next monday Next calendar Monday
in N days baseDate + N days
in N weeks baseDate + N×7 days
N days ago baseDate − N days
N weeks ago baseDate − N×7 days

Files Changed

All files scoped exclusively to app/api/routes-f/ — no modifications outside this directory.

  • app/api/routes-f/relative-date/route.ts — route handler
  • app/api/routes-f/__tests__/relative-date.test.ts — 9 Jest unit tests

Test Results

PASS app/api/routes-f/__tests__/relative-date.test.ts
  ✓ parses tomorrow relative to now
  ✓ parses yesterday relative to now
  ✓ parses next monday relative to now (which is a Thursday)
  ✓ parses in 3 days relative to now
  ✓ parses 2 weeks ago relative to now
  ✓ rejects unparseable input with 400
  ✓ rejects invalid now ISO string with 400
  ✓ rejects non-string text with 400
  ✓ uses the current system time if now is not provided

Tests: 9 passed, 9 total

- POST /api/routes-f/relative-date accepts { text, now? }
- Supports: tomorrow, yesterday, next monday, in N days/weeks, N days/weeks ago
- Returns { resolved: ISO, matched } on success
- Returns 400 for unparseable input or invalid now string
- 9 Jest tests covering all supported phrases and error cases
- All files scoped entirely within app/api/routes-f/
@vercel
Copy link
Copy Markdown

vercel Bot commented May 28, 2026

@utahkanz-ops is attempting to deploy a commit to the david's projects Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(routes-f): relative date parser

1 participant