Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
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
30 changes: 30 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,29 @@ jobs:
max_attempts: 2
command: yarn

- name: Cache Homebrew
id: cache-homebrew
uses: actions/cache@v4
with:
path: |
/home/linuxbrew/.linuxbrew
~/.cache/Homebrew
key: ${{ runner.os }}-homebrew-fragment-cli
restore-keys: |
${{ runner.os }}-homebrew-

- name: Install Fragment CLI
run: |
if [ ! -d "/home/linuxbrew/.linuxbrew" ]; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
echo "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" >> $GITHUB_ENV
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
/home/linuxbrew/.linuxbrew/bin/brew tap fragment-dev/tap || true
if ! /home/linuxbrew/.linuxbrew/bin/brew list fragment-dev/tap/fragment-cli &>/dev/null; then
/home/linuxbrew/.linuxbrew/bin/brew install fragment-dev/tap/fragment-cli
fi

- name: Typecheck
run: yarn typecheck

Expand All @@ -56,3 +79,10 @@ jobs:
yarn build
git diff --exit-code
exit $?

- name: Verify test schema generated files are up-to-date
run: |
/home/linuxbrew/.linuxbrew/bin/fragment gen-graphql --path tests/fixtures/test-schema.json --output tests/fixtures/test-schema-queries.graphql
yarn fragment-node-client-codegen -i tests/fixtures/test-schema-queries.graphql -o tests/fixtures/generated-test-client.ts
git diff --exit-code tests/fixtures/test-schema-queries.graphql tests/fixtures/generated-test-client.ts
exit $?
46 changes: 46 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,52 @@ await fragment.addLedgerEntryRuntime({
});
```

### Post a Ledger Entry using type-specific methods

When your Schema defines Ledger Entry types with lines, the SDK generates type-specific methods for posting those entries. These methods follow the naming convention `Post<EntryType>` where the entry type name is converted to PascalCase.

For example, an entry type `user-funds-account` generates a method `PostUserFundsAccount`:

```typescript
await fragment.PostUserFundsAccount({
ik: "some-ik",
ledgerIk: "your-ledger-ik",
amount: "200",
});
```

The SDK handles different naming conventions:
- Hyphenated: `user-funds-account` → `PostUserFundsAccount`
- CamelCase: `fundingSettlement` → `PostFundingSettlement`
- Underscore: `payment_processing` → `PostPaymentProcessing`

#### Entry Type Versions

When your schema defines multiple versions of the same entry type using `typeVersion`, the SDK generates separate methods for each version. Version 1 uses the base method name, and subsequent versions append `_v2`, `_v3`, etc.

For example, an entry type `user-funds-account` with `typeVersion: 1` and `typeVersion: 2` generates:
- `PostUserFundsAccount` for version 1
- `PostUserFundsAccount_v2` for version 2

```typescript
// Post version 1 entry
await fragment.PostUserFundsAccount({
ik: "entry-ik-1",
ledgerIk: "your-ledger-ik",
amount: "200",
});

// Post version 2 entry (with additional feeAmount parameter)
await fragment.PostUserFundsAccount_v2({
ik: "entry-ik-2",
ledgerIk: "your-ledger-ik",
amount: "200",
feeAmount: "10",
});
```

Each version can have different parameters and line structures, and the generated methods will reflect those differences.

### Sync transactions

To sync transaction using a [Custom Link](https://fragment.dev/docs#reconcile-transactions-link-any-system):
Expand Down
12 changes: 10 additions & 2 deletions dist/cjs/generated/generated.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

48 changes: 35 additions & 13 deletions dist/cjs/types/generated/generated.d.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/cjs/types/generated/generated.d.ts.map

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions dist/esm/generated/generated.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading