@fairmint/daml-js
v0.1.29
Published
Fairmint DAML packages with generated JavaScript bindings (CantonPayments, NFT, Reports, Equity, CouponMinter). OpenCapTable-v34 is published from open-captable-protocol-daml.
Downloads
16,247
Readme
daml
Closed-source Fairmint DAML monorepo: CantonPayments, CouponMinter, OpenCapTableReports-v01, NftApi-v01, NftReference-v01, EquityCertificate-v01 / EquityCertificateShared, plus Test.
OpenCapTable-v34 remains in
open-captable-protocol-daml and is
published as @fairmint/open-captable-protocol-daml-js.
NPM
This repo publishes @fairmint/daml-js (merged JS bindings for the packages above). Use
@fairmint/open-captable-protocol-daml-js for cap table / OCF templates and OCP_TEMPLATES.
Build
Requires dpm on PATH ($HOME/.dpm/bin). Splice DAR
dependencies are fetched from a pinned upstream Splice commit into ignored libs/ by the build
scripts. To fetch them explicitly, run npm run sync-splice-dars.
npm install
npm run build
npm run test
npm run codegenTyped CapTable batch errors
When OpenCapTable-v* generated bindings are bundled, scripts/bundle-dependencies.ts now adds
Fairmint.OpenCapTable.CapTableBatchError. If the bundled OpenCapTable namespace exports
CapTableBatch, the bundler patches CapTableBatch.execute() so raw ledger or contract errors are
rethrown as CapTableBatchExecutionError before they escape to consumers. Consumers can catch
CapTableBatchExecutionError (or use isCapTableBatchExecutionError) instead of casting thrown
values to Record<string, unknown>.
The typed error exposes:
creates,edits, anddeletes: the attempted batch operation payloads, always present as arrays.failingOperation: best-effort{ kind, item, index }context when the client can identify the failing item.failingItem: the failing payload directly, when available.diagnostics: best-effort raw diagnostics/cause for logging and support.
Manual handling is only needed when bypassing CapTableBatch.execute() and submitting a built batch
yourself:
import { CapTableBatchError } from '@fairmint/open-captable-protocol-daml-js/lib/Fairmint/OpenCapTable';
try {
await submitBuiltBatch();
} catch (error) {
throw CapTableBatchError.toCapTableBatchExecutionError(error, {
batchItems: { creates, edits, deletes },
});
}