Skip to content

Feat/one off charge#12

Merged
BenKalsky merged 2 commits into
mainfrom
feat/one-off-charge
May 1, 2026
Merged

Feat/one off charge#12
BenKalsky merged 2 commits into
mainfrom
feat/one-off-charge

Conversation

@BenKalsky

Copy link
Copy Markdown
Member

No description provided.

BenKalsky and others added 2 commits May 2, 2026 01:09
`createSumitChargeRoute` previously hardcoded the recurring endpoint and
required `item.durationMonths`. It now accepts `mode: "recurring" |
"oneOff"` (default `"recurring"` for back-compat). One-off mode:

- Targets `POST /billing/payments/charge/` instead of `/billing/recurring/charge/`.
- Calls `buildOneOffChargePayload` from sumit-api — Items omit
  `Duration_Months` / `Recurrence`.
- Drops the `durationMonths` validation requirement.

Same `<SumitCheckout />`, same `SingleUseToken` — only the route's
`mode` changes.

Switches the response normalizer to the new `normalizeChargeResponse`
alias (was `normalizeRecurringChargeResponse`); behaviour is identical
since the underlying logic always handled both shapes.

3 new tests cover the oneOff happy path, the relaxed durationMonths
requirement, and the still-enforced recurring requirement.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Additive release: createSumitChargeRoute now accepts
mode: "recurring" | "oneOff" (default recurring). Bumps the sumit-api
peer dep to >=0.2.0 because one-off mode imports
buildOneOffChargePayload.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@BenKalsky BenKalsky merged commit 3ff11d5 into main May 1, 2026
1 check passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 55a9ef071b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/next/createChargeRoute.ts
Comment thread src/next/createChargeRoute.ts
@BenKalsky BenKalsky deleted the feat/one-off-charge branch June 3, 2026 21:05
BenKalsky added a commit that referenced this pull request Jul 2, 2026
* fix: export SumitChargeMode and validate mode at route creation

Codex findings on #12: the 0.2.0 changelog advertised the
SumitChargeMode type export but the ./next barrel never re-exported
it, and an unknown mode from an untyped consumer resolved
DEFAULT_PATHS[mode] to undefined, sending requests to
https://api.sumit.co.ilundefined. Export the type and fail fast with
a clear configuration error.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* ci: harden publish workflows

Codex findings on #4 and #7: workflow_dispatch could publish from any
ref (now main-only), the sumit-api sibling checkout was unpinned and
is now unnecessary (the dependency installs from npm), and the GitHub
Packages workflow pointed installs at npm.pkg.github.com where public
packages don't resolve — the publish step configures that registry
and its auth itself.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: reject prototype keys as charge modes

Codex follow-up on the new mode guard: `in` walks the prototype chain,
so mode: "toString" passed validation and resolved DEFAULT_PATHS to an
inherited function. Compare against the two known modes explicitly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

1 participant