@fairmint/canton-node-sdk 0.0.114 → 0.0.116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/build/src/clients/ledger-json-api/operations/v2/state/get-active-contracts.js +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/state/get-active-contracts.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.d.ts +27 -0
- package/build/src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.js +32 -3
- package/build/src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.js.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/utils/event-format-builder.d.ts +22 -19
- package/build/src/clients/ledger-json-api/operations/v2/utils/event-format-builder.d.ts.map +1 -1
- package/build/src/clients/ledger-json-api/operations/v2/utils/event-format-builder.js +34 -24
- package/build/src/clients/ledger-json-api/operations/v2/utils/event-format-builder.js.map +1 -1
- package/build/src/core/http/HttpClient.d.ts +13 -5
- package/build/src/core/http/HttpClient.d.ts.map +1 -1
- package/build/src/core/http/HttpClient.js +50 -20
- package/build/src/core/http/HttpClient.js.map +1 -1
- package/example.env.localnet +103 -0
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -24,3 +24,48 @@ const version = await client.getVersion();
|
|
|
24
24
|
|
|
25
25
|
See [CONTRIBUTING.md](./CONTRIBUTING.md) for information about setting up the development
|
|
26
26
|
environment.
|
|
27
|
+
|
|
28
|
+
## Testing with LocalNet
|
|
29
|
+
|
|
30
|
+
The SDK includes comprehensive integration testing against a local Splice network (LocalNet). See
|
|
31
|
+
the [LocalNet Testing Guide](./docs/LOCALNET_TESTING.md) for detailed instructions.
|
|
32
|
+
|
|
33
|
+
### Quick Start
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Setup LocalNet
|
|
37
|
+
npm run localnet:setup
|
|
38
|
+
|
|
39
|
+
# Set environment variables (shown by setup script)
|
|
40
|
+
export LOCALNET_DIR="/tmp/splice-localnet/splice-node/docker-compose/localnet"
|
|
41
|
+
export IMAGE_TAG="0.4.22"
|
|
42
|
+
|
|
43
|
+
# Start LocalNet
|
|
44
|
+
npm run localnet:start
|
|
45
|
+
|
|
46
|
+
# Run regression tests
|
|
47
|
+
npm run test:regression
|
|
48
|
+
|
|
49
|
+
# Stop LocalNet
|
|
50
|
+
npm run localnet:stop
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Available Commands
|
|
54
|
+
|
|
55
|
+
- `npm run localnet:setup` - Download and setup LocalNet
|
|
56
|
+
- `npm run localnet:start` - Start LocalNet services
|
|
57
|
+
- `npm run localnet:stop` - Stop LocalNet services
|
|
58
|
+
- `npm run localnet:status` - Check LocalNet status
|
|
59
|
+
- `npm run test:localnet` - Run tests against LocalNet
|
|
60
|
+
- `npm run test:regression` - Alias for test:localnet
|
|
61
|
+
|
|
62
|
+
## CI/CD
|
|
63
|
+
|
|
64
|
+
The project uses CircleCI for continuous integration:
|
|
65
|
+
|
|
66
|
+
- **Unit Tests**: Run on every commit
|
|
67
|
+
- **Linting**: Code quality checks on every commit
|
|
68
|
+
- **Integration Tests**: LocalNet regression tests on every commit
|
|
69
|
+
- **Nightly Regression**: Scheduled daily tests at 2 AM UTC
|
|
70
|
+
|
|
71
|
+
See [.circleci/config.yml](./.circleci/config.yml) for the complete CI configuration.
|
|
@@ -33,7 +33,7 @@ class GetActiveContracts {
|
|
|
33
33
|
const ledgerEnd = await this.client.getLedgerEnd({});
|
|
34
34
|
activeAtOffset = ledgerEnd.offset;
|
|
35
35
|
}
|
|
36
|
-
// Build party list
|
|
36
|
+
// Build party list - default to client's party list if not provided
|
|
37
37
|
const partyList = validated.parties && validated.parties.length > 0 ? validated.parties : this.client.buildPartyList();
|
|
38
38
|
// Build event format
|
|
39
39
|
const eventFormat = (0, event_format_builder_1.buildEventFormat)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-active-contracts.js","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/state/get-active-contracts.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4EAAyE;AAIzE,wEAAiE;AAEjE,MAAM,IAAI,GAAG,4BAAqC,CAAC;AAEnD;;;;;GAKG;AAEH,MAAM,2BAA2B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,oDAAoD;IACpD,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,qDAAqD;IACrD,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,4EAA4E;IAC5E,uBAAuB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/C,uEAAuE;IACvE,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAOH,MAAa,kBAAkB;IAC7B,YAA6B,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;IAAG,CAAC;IAErD,KAAK,CAAC,OAAO,CAAC,MAAgC;QACnD,MAAM,SAAS,GAAG,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5D,oEAAoE;QACpE,IAAI,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;QACnC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrD,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;QACpC,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"get-active-contracts.js","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/state/get-active-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,32 @@ import { z } from 'zod';
|
|
|
2
2
|
import type { LedgerJsonApiClient } from '../../../LedgerJsonApiClient.generated';
|
|
3
3
|
import { type JsCantonErrorSchema, type WsCantonErrorSchema } from '../../../schemas/api/errors';
|
|
4
4
|
import { type JsUpdateSchema, type WsUpdateSchema } from '../../../schemas/api/updates';
|
|
5
|
+
/**
|
|
6
|
+
* The `TransactionShape` enum defines the event shape for `Transaction`s and can have two different flavors AcsDelta
|
|
7
|
+
* and LedgerEffects.
|
|
8
|
+
*
|
|
9
|
+
* ```protobuf
|
|
10
|
+
* enum TransactionShape {
|
|
11
|
+
* TRANSACTION_SHAPE_ACS_DELTA = 1;
|
|
12
|
+
* TRANSACTION_SHAPE_LEDGER_EFFECTS = 2;
|
|
13
|
+
* }
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* - AcsDelta
|
|
17
|
+
*
|
|
18
|
+
* The transaction shape that is sufficient to maintain an accurate ACS view. This translates to create and archive
|
|
19
|
+
* events. The field witness_parties in events are populated as stakeholders, transaction filter will apply
|
|
20
|
+
* accordingly.
|
|
21
|
+
* - LedgerEffects
|
|
22
|
+
*
|
|
23
|
+
* The transaction shape that allows maintaining an ACS and also conveys detailed information about all exercises. This
|
|
24
|
+
* translates to create, consuming exercise and non-consuming exercise. The field witness_parties in events are
|
|
25
|
+
* populated as cumulative informees, transaction filter will apply accordingly.
|
|
26
|
+
*/
|
|
27
|
+
export declare enum TransactionShape {
|
|
28
|
+
TRANSACTION_SHAPE_ACS_DELTA = "TRANSACTION_SHAPE_ACS_DELTA",
|
|
29
|
+
TRANSACTION_SHAPE_LEDGER_EFFECTS = "TRANSACTION_SHAPE_LEDGER_EFFECTS"
|
|
30
|
+
}
|
|
5
31
|
declare const SubscribeToUpdatesParamsSchema: z.ZodObject<{
|
|
6
32
|
parties: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
7
33
|
templateIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -10,6 +36,7 @@ declare const SubscribeToUpdatesParamsSchema: z.ZodObject<{
|
|
|
10
36
|
endInclusive: z.ZodOptional<z.ZodNumber>;
|
|
11
37
|
includeReassignments: z.ZodOptional<z.ZodBoolean>;
|
|
12
38
|
includeTopologyEvents: z.ZodOptional<z.ZodBoolean>;
|
|
39
|
+
transactionShape: z.ZodOptional<z.ZodEnum<typeof TransactionShape>>;
|
|
13
40
|
}, z.core.$strip>;
|
|
14
41
|
export type SubscribeToUpdatesParams = z.infer<typeof SubscribeToUpdatesParamsSchema> & {
|
|
15
42
|
/** Optional per-message callback to consume updates as they arrive. */
|
package/build/src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe-to-updates.d.ts","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACjG,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKxF,QAAA,MAAM,8BAA8B
|
|
1
|
+
{"version":3,"file":"subscribe-to-updates.d.ts","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACjG,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKxF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,oBAAY,gBAAgB;IAC1B,2BAA2B,gCAAgC;IAC3D,gCAAgC,qCAAqC;CACtE;AAED,QAAA,MAAM,8BAA8B;;;;;;;;;iBAiBlC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,GAAG;IACtF,uEAAuE;IACvE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB;IAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;CAAE,GAC1C,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GACnC,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAExC,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,mBAAmB;IAE3C,OAAO,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;CA2HtE"}
|
|
@@ -1,10 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SubscribeToUpdates = void 0;
|
|
3
|
+
exports.SubscribeToUpdates = exports.TransactionShape = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const WebSocketClient_1 = require("../../../../../core/ws/WebSocketClient");
|
|
6
6
|
const event_format_builder_1 = require("../utils/event-format-builder");
|
|
7
7
|
const path = '/v2/updates';
|
|
8
|
+
/**
|
|
9
|
+
* The `TransactionShape` enum defines the event shape for `Transaction`s and can have two different flavors AcsDelta
|
|
10
|
+
* and LedgerEffects.
|
|
11
|
+
*
|
|
12
|
+
* ```protobuf
|
|
13
|
+
* enum TransactionShape {
|
|
14
|
+
* TRANSACTION_SHAPE_ACS_DELTA = 1;
|
|
15
|
+
* TRANSACTION_SHAPE_LEDGER_EFFECTS = 2;
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* - AcsDelta
|
|
20
|
+
*
|
|
21
|
+
* The transaction shape that is sufficient to maintain an accurate ACS view. This translates to create and archive
|
|
22
|
+
* events. The field witness_parties in events are populated as stakeholders, transaction filter will apply
|
|
23
|
+
* accordingly.
|
|
24
|
+
* - LedgerEffects
|
|
25
|
+
*
|
|
26
|
+
* The transaction shape that allows maintaining an ACS and also conveys detailed information about all exercises. This
|
|
27
|
+
* translates to create, consuming exercise and non-consuming exercise. The field witness_parties in events are
|
|
28
|
+
* populated as cumulative informees, transaction filter will apply accordingly.
|
|
29
|
+
*/
|
|
30
|
+
var TransactionShape;
|
|
31
|
+
(function (TransactionShape) {
|
|
32
|
+
TransactionShape["TRANSACTION_SHAPE_ACS_DELTA"] = "TRANSACTION_SHAPE_ACS_DELTA";
|
|
33
|
+
TransactionShape["TRANSACTION_SHAPE_LEDGER_EFFECTS"] = "TRANSACTION_SHAPE_LEDGER_EFFECTS";
|
|
34
|
+
})(TransactionShape || (exports.TransactionShape = TransactionShape = {}));
|
|
8
35
|
const SubscribeToUpdatesParamsSchema = zod_1.z.object({
|
|
9
36
|
/** Optional list of parties to scope the filter. */
|
|
10
37
|
parties: zod_1.z.array(zod_1.z.string()).optional(),
|
|
@@ -20,6 +47,8 @@ const SubscribeToUpdatesParamsSchema = zod_1.z.object({
|
|
|
20
47
|
includeReassignments: zod_1.z.boolean().optional(),
|
|
21
48
|
/** Include topology events in the stream (default false). */
|
|
22
49
|
includeTopologyEvents: zod_1.z.boolean().optional(),
|
|
50
|
+
/** Transaction shape (default TRANSACTION_SHAPE_LEDGER_EFFECTS). */
|
|
51
|
+
transactionShape: zod_1.z.nativeEnum(TransactionShape).optional(),
|
|
23
52
|
});
|
|
24
53
|
class SubscribeToUpdates {
|
|
25
54
|
constructor(client) {
|
|
@@ -33,7 +62,7 @@ class SubscribeToUpdates {
|
|
|
33
62
|
const ledgerEnd = await this.client.getLedgerEnd({});
|
|
34
63
|
beginExclusive = ledgerEnd.offset;
|
|
35
64
|
}
|
|
36
|
-
// Build party list
|
|
65
|
+
// Build party list - default to client's party list if not provided
|
|
37
66
|
const partyList = validated.parties && validated.parties.length > 0 ? validated.parties : this.client.buildPartyList();
|
|
38
67
|
// Build event format
|
|
39
68
|
const eventFormat = (0, event_format_builder_1.buildEventFormat)({
|
|
@@ -47,7 +76,7 @@ class SubscribeToUpdates {
|
|
|
47
76
|
const updateFormat = {
|
|
48
77
|
includeTransactions: {
|
|
49
78
|
eventFormat,
|
|
50
|
-
transactionShape:
|
|
79
|
+
transactionShape: validated.transactionShape ?? TransactionShape.TRANSACTION_SHAPE_LEDGER_EFFECTS,
|
|
51
80
|
},
|
|
52
81
|
};
|
|
53
82
|
// Add reassignments if enabled (default true)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe-to-updates.js","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,4EAAyE;AAIzE,wEAAiE;AAEjE,MAAM,IAAI,GAAG,aAAsB,CAAC;AAEpC,MAAM,8BAA8B,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,oDAAoD;IACpD,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,qDAAqD;IACrD,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,4EAA4E;IAC5E,uBAAuB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/C,yFAAyF;IACzF,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,sDAAsD;IACtD,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,0DAA0D;IAC1D,oBAAoB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5C,6DAA6D;IAC7D,qBAAqB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"subscribe-to-updates.js","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/updates/subscribe-to-updates.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,41 +3,44 @@
|
|
|
3
3
|
* provides a consistent way to construct the complex eventFormat structure from simple parameters.
|
|
4
4
|
*/
|
|
5
5
|
export interface EventFormatBuilderParams {
|
|
6
|
-
/** List of parties to scope the filter. */
|
|
6
|
+
/** List of parties to scope the filter. At least one party is required. */
|
|
7
7
|
parties: string[];
|
|
8
8
|
/** Optional template filters applied server-side. */
|
|
9
9
|
templateIds?: string[] | undefined;
|
|
10
10
|
/** Include created event blob in TemplateFilter results (default false). */
|
|
11
11
|
includeCreatedEventBlob?: boolean | undefined;
|
|
12
12
|
}
|
|
13
|
+
type FilterCumulative = Array<{
|
|
14
|
+
identifierFilter: {
|
|
15
|
+
TemplateFilter: {
|
|
16
|
+
value: {
|
|
17
|
+
templateId: string;
|
|
18
|
+
includeCreatedEventBlob: boolean;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
} | {
|
|
23
|
+
identifierFilter: {
|
|
24
|
+
WildcardFilter: {
|
|
25
|
+
value: {
|
|
26
|
+
includeCreatedEventBlob: boolean;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
13
31
|
/**
|
|
14
32
|
* Builds the eventFormat object structure used in various Ledger JSON API operations. This centralizes the logic for
|
|
15
33
|
* creating filtersByParty configurations from simple parameters.
|
|
16
34
|
*
|
|
17
35
|
* @param params - Configuration parameters for building the event format
|
|
18
36
|
* @returns An eventFormat object ready to be used in API requests
|
|
37
|
+
* @throws Error if no parties are provided
|
|
19
38
|
*/
|
|
20
39
|
export declare function buildEventFormat(params: EventFormatBuilderParams): {
|
|
21
40
|
verbose: boolean;
|
|
22
41
|
filtersByParty: Record<string, {
|
|
23
|
-
cumulative:
|
|
24
|
-
identifierFilter: {
|
|
25
|
-
TemplateFilter: {
|
|
26
|
-
value: {
|
|
27
|
-
templateId: string;
|
|
28
|
-
includeCreatedEventBlob: boolean;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
} | {
|
|
33
|
-
identifierFilter: {
|
|
34
|
-
WildcardFilter: {
|
|
35
|
-
value: {
|
|
36
|
-
includeCreatedEventBlob: boolean;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
}>;
|
|
42
|
+
cumulative: FilterCumulative;
|
|
41
43
|
}>;
|
|
42
44
|
};
|
|
45
|
+
export {};
|
|
43
46
|
//# sourceMappingURL=event-format-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-format-builder.d.ts","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/utils/event-format-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,wBAAwB;IACvC,
|
|
1
|
+
{"version":3,"file":"event-format-builder.d.ts","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/utils/event-format-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,4EAA4E;IAC5E,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/C;AAED,KAAK,gBAAgB,GAAG,KAAK,CACzB;IACE,gBAAgB,EAAE;QAChB,cAAc,EAAE;YACd,KAAK,EAAE;gBACL,UAAU,EAAE,MAAM,CAAC;gBACnB,uBAAuB,EAAE,OAAO,CAAC;aAClC,CAAC;SACH,CAAC;KACH,CAAC;CACH,GACD;IACE,gBAAgB,EAAE;QAChB,cAAc,EAAE;YACd,KAAK,EAAE;gBACL,uBAAuB,EAAE,OAAO,CAAC;aAClC,CAAC;SACH,CAAC;KACH,CAAC;CACH,CACJ,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,wBAAwB,GAAG;IAClE,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;CAClE,CA8CA"}
|
|
@@ -11,37 +11,47 @@ exports.buildEventFormat = buildEventFormat;
|
|
|
11
11
|
*
|
|
12
12
|
* @param params - Configuration parameters for building the event format
|
|
13
13
|
* @returns An eventFormat object ready to be used in API requests
|
|
14
|
+
* @throws Error if no parties are provided
|
|
14
15
|
*/
|
|
15
16
|
function buildEventFormat(params) {
|
|
17
|
+
if (params.parties.length === 0) {
|
|
18
|
+
throw new Error('At least one party is required for event format filters');
|
|
19
|
+
}
|
|
20
|
+
// Build the cumulative filter array
|
|
21
|
+
const buildCumulative = () => {
|
|
22
|
+
if (params.templateIds && params.templateIds.length > 0) {
|
|
23
|
+
return params.templateIds.map((templateId) => ({
|
|
24
|
+
identifierFilter: {
|
|
25
|
+
TemplateFilter: {
|
|
26
|
+
value: {
|
|
27
|
+
templateId,
|
|
28
|
+
includeCreatedEventBlob: params.includeCreatedEventBlob ?? false,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
if (params.includeCreatedEventBlob) {
|
|
35
|
+
return [
|
|
36
|
+
{
|
|
37
|
+
identifierFilter: {
|
|
38
|
+
WildcardFilter: {
|
|
39
|
+
value: {
|
|
40
|
+
includeCreatedEventBlob: true,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
return [];
|
|
48
|
+
};
|
|
16
49
|
return {
|
|
17
50
|
verbose: false,
|
|
18
51
|
filtersByParty: Object.fromEntries(params.parties.map((p) => [
|
|
19
52
|
p,
|
|
20
53
|
{
|
|
21
|
-
cumulative:
|
|
22
|
-
? params.templateIds.map((templateId) => ({
|
|
23
|
-
identifierFilter: {
|
|
24
|
-
TemplateFilter: {
|
|
25
|
-
value: {
|
|
26
|
-
templateId,
|
|
27
|
-
includeCreatedEventBlob: params.includeCreatedEventBlob ?? false,
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
}))
|
|
32
|
-
: params.includeCreatedEventBlob
|
|
33
|
-
? [
|
|
34
|
-
{
|
|
35
|
-
identifierFilter: {
|
|
36
|
-
WildcardFilter: {
|
|
37
|
-
value: {
|
|
38
|
-
includeCreatedEventBlob: true,
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
]
|
|
44
|
-
: [],
|
|
54
|
+
cumulative: buildCumulative(),
|
|
45
55
|
},
|
|
46
56
|
])),
|
|
47
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-format-builder.js","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/utils/event-format-builder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"event-format-builder.js","sourceRoot":"","sources":["../../../../../../../src/clients/ledger-json-api/operations/v2/utils/event-format-builder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAyCH,4CAiDC;AAzDD;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,MAAgC;IAI/D,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,oCAAoC;IACpC,MAAM,eAAe,GAAG,GAAqB,EAAE;QAC7C,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC7C,gBAAgB,EAAE;oBAChB,cAAc,EAAE;wBACd,KAAK,EAAE;4BACL,UAAU;4BACV,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,KAAK;yBACjE;qBACF;iBACF;aACF,CAAC,CAAC,CAAC;QACN,CAAC;QACD,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACnC,OAAO;gBACL;oBACE,gBAAgB,EAAE;wBAChB,cAAc,EAAE;4BACd,KAAK,EAAE;gCACL,uBAAuB,EAAE,IAAI;6BAC9B;yBACF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,KAAK;QACd,cAAc,EAAE,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACxB,CAAC;YACD;gBACE,UAAU,EAAE,eAAe,EAAE;aAC9B;SACF,CAAC,CACH;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -5,17 +5,25 @@ export declare class HttpClient {
|
|
|
5
5
|
private readonly axiosInstance;
|
|
6
6
|
private readonly logger;
|
|
7
7
|
constructor(logger?: Logger);
|
|
8
|
-
makeGetRequest<T>(url: string, config?: RequestConfig,
|
|
9
|
-
makePostRequest<T>(url: string, data: unknown, config?: RequestConfig,
|
|
10
|
-
makeDeleteRequest<T>(url: string, config?: RequestConfig,
|
|
11
|
-
makePatchRequest<T>(url: string, data: unknown, config?: RequestConfig,
|
|
8
|
+
makeGetRequest<T>(url: string, config?: RequestConfig, _retryCount?: number): Promise<T>;
|
|
9
|
+
makePostRequest<T>(url: string, data: unknown, config?: RequestConfig, _retryCount?: number): Promise<T>;
|
|
10
|
+
makeDeleteRequest<T>(url: string, config?: RequestConfig, _retryCount?: number): Promise<T>;
|
|
11
|
+
makePatchRequest<T>(url: string, data: unknown, config?: RequestConfig, _retryCount?: number): Promise<T>;
|
|
12
12
|
private buildHeaders;
|
|
13
13
|
setBearerToken(token: string): void;
|
|
14
14
|
clearBearerToken(): void;
|
|
15
15
|
private logRequestResponse;
|
|
16
16
|
private handleRequestError;
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Determines whether a request error is retryable. Retries on:
|
|
19
|
+
*
|
|
20
|
+
* - HTTP 5xx server errors
|
|
21
|
+
* - Network errors
|
|
22
|
+
* - Canton-specific transient errors: UNKNOWN_CONTRACT_SYNCHRONIZERS (400), SEQUENCER_BACKPRESSURE (409), HTTP 503
|
|
23
|
+
*/
|
|
18
24
|
private isRetryableError;
|
|
25
|
+
/** Sleep for the specified number of milliseconds */
|
|
26
|
+
private sleep;
|
|
19
27
|
/**
|
|
20
28
|
* Prepares request data for retry by updating commandId fields to avoid duplicate command rejection. If the data
|
|
21
29
|
* contains a commandId field, appends a retry suffix with timestamp to make it unique.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClient.d.ts","sourceRoot":"","sources":["../../../../src/core/http/HttpClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,6EAA6E;AAC7E,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,MAAM,CAAC,EAAE,MAAM;IAKd,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"HttpClient.d.ts","sourceRoot":"","sources":["../../../../src/core/http/HttpClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,6EAA6E;AAC7E,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,MAAM,CAAC,EAAE,MAAM;IAKd,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,EAAE,WAAW,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvF,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAE,aAAkB,EAAE,WAAW,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC;IA2BvG,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,EAAE,WAAW,SAAI,GAAG,OAAO,CAAC,CAAC,CAAC;IA0B1F,gBAAgB,CAAC,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,aAAkB,EAC1B,WAAW,SAAI,GACd,OAAO,CAAC,CAAC,CAAC;IA2Bb,OAAO,CAAC,YAAY;IAiBb,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,gBAAgB,IAAI,IAAI;YAIjB,kBAAkB;IAMhC,OAAO,CAAC,kBAAkB;IAa1B;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IA+BxB,qDAAqD;YACvC,KAAK;IAInB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
|
|
@@ -12,7 +12,7 @@ class HttpClient {
|
|
|
12
12
|
this.axiosInstance = axios_1.default.create();
|
|
13
13
|
this.logger = logger;
|
|
14
14
|
}
|
|
15
|
-
async makeGetRequest(url, config = {},
|
|
15
|
+
async makeGetRequest(url, config = {}, _retryCount = 0) {
|
|
16
16
|
try {
|
|
17
17
|
const headers = this.buildHeaders(config);
|
|
18
18
|
const response = await this.axiosInstance.get(url, { headers });
|
|
@@ -20,10 +20,11 @@ class HttpClient {
|
|
|
20
20
|
return response.data;
|
|
21
21
|
}
|
|
22
22
|
catch (error) {
|
|
23
|
-
// Attempt
|
|
24
|
-
if (
|
|
25
|
-
await this.logRequestResponse(url, { method: 'GET', retry:
|
|
26
|
-
|
|
23
|
+
// Attempt up to 3 retries for transient errors
|
|
24
|
+
if (_retryCount < 3 && this.isRetryableError(error)) {
|
|
25
|
+
await this.logRequestResponse(url, { method: 'GET', retry: _retryCount + 1 }, `Retrying after error (attempt ${_retryCount + 1}/3): ${axios_1.default.isAxiosError(error) ? (error.response?.status ?? 'network error') : String(error)}`);
|
|
26
|
+
await this.sleep(6000);
|
|
27
|
+
return this.makeGetRequest(url, config, _retryCount + 1);
|
|
27
28
|
}
|
|
28
29
|
// Log the error response before throwing
|
|
29
30
|
if (axios_1.default.isAxiosError(error)) {
|
|
@@ -32,7 +33,7 @@ class HttpClient {
|
|
|
32
33
|
throw this.handleRequestError(error);
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
async makePostRequest(url, data, config = {},
|
|
36
|
+
async makePostRequest(url, data, config = {}, _retryCount = 0) {
|
|
36
37
|
try {
|
|
37
38
|
const headers = this.buildHeaders(config);
|
|
38
39
|
const response = await this.axiosInstance.post(url, data, { headers });
|
|
@@ -40,10 +41,11 @@ class HttpClient {
|
|
|
40
41
|
return response.data;
|
|
41
42
|
}
|
|
42
43
|
catch (error) {
|
|
43
|
-
if (
|
|
44
|
-
await this.logRequestResponse(url, { method: 'POST', retry:
|
|
44
|
+
if (_retryCount < 3 && this.isRetryableError(error)) {
|
|
45
|
+
await this.logRequestResponse(url, { method: 'POST', retry: _retryCount + 1, data }, `Retrying after error (attempt ${_retryCount + 1}/3): ${axios_1.default.isAxiosError(error) ? (error.response?.status ?? 'network error') : String(error)}`);
|
|
46
|
+
await this.sleep(6000);
|
|
45
47
|
const retryData = this.prepareDataForRetry(data);
|
|
46
|
-
return this.makePostRequest(url, retryData, config,
|
|
48
|
+
return this.makePostRequest(url, retryData, config, _retryCount + 1);
|
|
47
49
|
}
|
|
48
50
|
// Log the error response before throwing
|
|
49
51
|
if (axios_1.default.isAxiosError(error)) {
|
|
@@ -52,7 +54,7 @@ class HttpClient {
|
|
|
52
54
|
throw this.handleRequestError(error);
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
|
-
async makeDeleteRequest(url, config = {},
|
|
57
|
+
async makeDeleteRequest(url, config = {}, _retryCount = 0) {
|
|
56
58
|
try {
|
|
57
59
|
const headers = this.buildHeaders(config);
|
|
58
60
|
const response = await this.axiosInstance.delete(url, { headers });
|
|
@@ -60,9 +62,10 @@ class HttpClient {
|
|
|
60
62
|
return response.data;
|
|
61
63
|
}
|
|
62
64
|
catch (error) {
|
|
63
|
-
if (
|
|
64
|
-
await this.logRequestResponse(url, { method: 'DELETE', retry:
|
|
65
|
-
|
|
65
|
+
if (_retryCount < 3 && this.isRetryableError(error)) {
|
|
66
|
+
await this.logRequestResponse(url, { method: 'DELETE', retry: _retryCount + 1 }, `Retrying after error (attempt ${_retryCount + 1}/3): ${axios_1.default.isAxiosError(error) ? (error.response?.status ?? 'network error') : String(error)}`);
|
|
67
|
+
await this.sleep(6000);
|
|
68
|
+
return this.makeDeleteRequest(url, config, _retryCount + 1);
|
|
66
69
|
}
|
|
67
70
|
// Log the error response before throwing
|
|
68
71
|
if (axios_1.default.isAxiosError(error)) {
|
|
@@ -71,7 +74,7 @@ class HttpClient {
|
|
|
71
74
|
throw this.handleRequestError(error);
|
|
72
75
|
}
|
|
73
76
|
}
|
|
74
|
-
async makePatchRequest(url, data, config = {},
|
|
77
|
+
async makePatchRequest(url, data, config = {}, _retryCount = 0) {
|
|
75
78
|
try {
|
|
76
79
|
const headers = this.buildHeaders(config);
|
|
77
80
|
const response = await this.axiosInstance.patch(url, data, { headers });
|
|
@@ -79,10 +82,11 @@ class HttpClient {
|
|
|
79
82
|
return response.data;
|
|
80
83
|
}
|
|
81
84
|
catch (error) {
|
|
82
|
-
if (
|
|
83
|
-
await this.logRequestResponse(url, { method: 'PATCH', retry:
|
|
85
|
+
if (_retryCount < 3 && this.isRetryableError(error)) {
|
|
86
|
+
await this.logRequestResponse(url, { method: 'PATCH', retry: _retryCount + 1, data }, `Retrying after error (attempt ${_retryCount + 1}/3): ${axios_1.default.isAxiosError(error) ? (error.response?.status ?? 'network error') : String(error)}`);
|
|
87
|
+
await this.sleep(6000);
|
|
84
88
|
const retryData = this.prepareDataForRetry(data);
|
|
85
|
-
return this.makePatchRequest(url, retryData, config,
|
|
89
|
+
return this.makePatchRequest(url, retryData, config, _retryCount + 1);
|
|
86
90
|
}
|
|
87
91
|
// Log the error response before throwing
|
|
88
92
|
if (axios_1.default.isAxiosError(error)) {
|
|
@@ -128,16 +132,42 @@ class HttpClient {
|
|
|
128
132
|
}
|
|
129
133
|
return new errors_1.NetworkError(`Request failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
130
134
|
}
|
|
131
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Determines whether a request error is retryable. Retries on:
|
|
137
|
+
*
|
|
138
|
+
* - HTTP 5xx server errors
|
|
139
|
+
* - Network errors
|
|
140
|
+
* - Canton-specific transient errors: UNKNOWN_CONTRACT_SYNCHRONIZERS (400), SEQUENCER_BACKPRESSURE (409), HTTP 503
|
|
141
|
+
*/
|
|
132
142
|
isRetryableError(error) {
|
|
133
143
|
if (axios_1.default.isAxiosError(error)) {
|
|
134
144
|
const status = error.response?.status;
|
|
135
|
-
|
|
136
|
-
|
|
145
|
+
const data = error.response?.data ?? {};
|
|
146
|
+
const { code } = data;
|
|
147
|
+
// Retry on undefined status (network error)
|
|
148
|
+
if (status === undefined) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
// Retry on 5xx server errors
|
|
152
|
+
if (status >= 500 && status < 600) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
// Retry on Canton-specific transient errors
|
|
156
|
+
if (status === 400 && code === 'UNKNOWN_CONTRACT_SYNCHRONIZERS') {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
if (status === 409 && code === 'SEQUENCER_BACKPRESSURE') {
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
137
163
|
}
|
|
138
164
|
// Only retry non-Axios errors that are instances of NetworkError
|
|
139
165
|
return error instanceof errors_1.NetworkError;
|
|
140
166
|
}
|
|
167
|
+
/** Sleep for the specified number of milliseconds */
|
|
168
|
+
async sleep(ms) {
|
|
169
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
170
|
+
}
|
|
141
171
|
/**
|
|
142
172
|
* Prepares request data for retry by updating commandId fields to avoid duplicate command rejection. If the data
|
|
143
173
|
* contains a commandId field, appends a retry suffix with timestamp to make it unique.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../../../../src/core/http/HttpClient.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD;AAClD,sCAAmD;AAInD,6EAA6E;AAC7E,MAAa,UAAU;IAIrB,YAAY,MAAe;QACzB,IAAI,CAAC,aAAa,GAAG,eAAK,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAI,GAAW,EAAE,SAAwB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../../../../src/core/http/HttpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
DOTENV_CONFIG_QUIET=true
|
|
2
|
+
|
|
3
|
+
# ============================================================================
|
|
4
|
+
# Canton Node SDK LocalNet Configuration
|
|
5
|
+
# ============================================================================
|
|
6
|
+
# This configuration is used for testing against a local Splice network
|
|
7
|
+
# Copy this file to .env when running tests locally against LocalNet
|
|
8
|
+
|
|
9
|
+
# =============================================================================
|
|
10
|
+
# CURRENT SELECTION
|
|
11
|
+
# =============================================================================
|
|
12
|
+
CANTON_CURRENT_NETWORK=localnet
|
|
13
|
+
CANTON_CURRENT_PROVIDER=app-provider
|
|
14
|
+
|
|
15
|
+
# =============================================================================
|
|
16
|
+
# LOCALNET - APP-PROVIDER CONFIGURATION
|
|
17
|
+
# =============================================================================
|
|
18
|
+
# LocalNet uses predictable ports based on the pattern: {validator_prefix}${port_suffix}
|
|
19
|
+
# App Provider uses prefix "3", so:
|
|
20
|
+
# - JSON API: 39750 (3 + 9750)
|
|
21
|
+
# - Validator API: 39030 (3 + 9030)
|
|
22
|
+
# - Admin API: 39020 (3 + 9020)
|
|
23
|
+
# - Ledger API: 39010 (3 + 9010)
|
|
24
|
+
# - Healthcheck: 39000 (3 + 9000)
|
|
25
|
+
|
|
26
|
+
# Ledger JSON API Configuration
|
|
27
|
+
CANTON_LOCALNET_APP_PROVIDER_LEDGER_JSON_API_URI=http://localhost:39750
|
|
28
|
+
CANTON_LOCALNET_APP_PROVIDER_LEDGER_JSON_API_CLIENT_ID=admin
|
|
29
|
+
CANTON_LOCALNET_APP_PROVIDER_LEDGER_JSON_API_CLIENT_SECRET=admin
|
|
30
|
+
|
|
31
|
+
# Validator API Configuration
|
|
32
|
+
CANTON_LOCALNET_APP_PROVIDER_VALIDATOR_API_URI=http://localhost:39030
|
|
33
|
+
CANTON_LOCALNET_APP_PROVIDER_VALIDATOR_API_CLIENT_ID=admin
|
|
34
|
+
CANTON_LOCALNET_APP_PROVIDER_VALIDATOR_API_CLIENT_SECRET=admin
|
|
35
|
+
|
|
36
|
+
# Scan API Configuration
|
|
37
|
+
CANTON_LOCALNET_APP_PROVIDER_SCAN_API_URI=http://localhost:4000/api/scan
|
|
38
|
+
CANTON_LOCALNET_APP_PROVIDER_SCAN_API_CLIENT_ID=admin
|
|
39
|
+
CANTON_LOCALNET_APP_PROVIDER_SCAN_API_CLIENT_SECRET=admin
|
|
40
|
+
|
|
41
|
+
# Auth URL (LocalNet uses simple auth, not OAuth)
|
|
42
|
+
CANTON_LOCALNET_APP_PROVIDER_AUTH_URL=http://localhost:3000/auth
|
|
43
|
+
|
|
44
|
+
# Party and User IDs
|
|
45
|
+
# Note: These need to be discovered from your LocalNet instance
|
|
46
|
+
# You can find them by accessing the Canton Console or wallet UI
|
|
47
|
+
CANTON_LOCALNET_APP_PROVIDER_PARTY_ID=
|
|
48
|
+
CANTON_LOCALNET_APP_PROVIDER_USER_ID=app-provider
|
|
49
|
+
|
|
50
|
+
# =============================================================================
|
|
51
|
+
# LOCALNET - APP-USER CONFIGURATION (Optional)
|
|
52
|
+
# =============================================================================
|
|
53
|
+
# App User uses prefix "2", so:
|
|
54
|
+
# - JSON API: 29750 (2 + 9750)
|
|
55
|
+
# - Validator API: 29030 (2 + 9030)
|
|
56
|
+
|
|
57
|
+
CANTON_LOCALNET_APP_USER_LEDGER_JSON_API_URI=http://localhost:29750
|
|
58
|
+
CANTON_LOCALNET_APP_USER_LEDGER_JSON_API_CLIENT_ID=admin
|
|
59
|
+
CANTON_LOCALNET_APP_USER_LEDGER_JSON_API_CLIENT_SECRET=admin
|
|
60
|
+
|
|
61
|
+
CANTON_LOCALNET_APP_USER_VALIDATOR_API_URI=http://localhost:29030
|
|
62
|
+
CANTON_LOCALNET_APP_USER_VALIDATOR_API_CLIENT_ID=admin
|
|
63
|
+
CANTON_LOCALNET_APP_USER_VALIDATOR_API_CLIENT_SECRET=admin
|
|
64
|
+
|
|
65
|
+
CANTON_LOCALNET_APP_USER_AUTH_URL=http://localhost:2000/auth
|
|
66
|
+
CANTON_LOCALNET_APP_USER_PARTY_ID=
|
|
67
|
+
CANTON_LOCALNET_APP_USER_USER_ID=app-user
|
|
68
|
+
|
|
69
|
+
# =============================================================================
|
|
70
|
+
# LOCALNET - SUPER VALIDATOR CONFIGURATION (Optional)
|
|
71
|
+
# =============================================================================
|
|
72
|
+
# Super Validator uses prefix "4", so:
|
|
73
|
+
# - JSON API: 49750 (4 + 9750)
|
|
74
|
+
# - Validator API: 49030 (4 + 9030)
|
|
75
|
+
|
|
76
|
+
CANTON_LOCALNET_SV_LEDGER_JSON_API_URI=http://localhost:49750
|
|
77
|
+
CANTON_LOCALNET_SV_LEDGER_JSON_API_CLIENT_ID=admin
|
|
78
|
+
CANTON_LOCALNET_SV_LEDGER_JSON_API_CLIENT_SECRET=admin
|
|
79
|
+
|
|
80
|
+
CANTON_LOCALNET_SV_VALIDATOR_API_URI=http://localhost:49030
|
|
81
|
+
CANTON_LOCALNET_SV_VALIDATOR_API_CLIENT_ID=admin
|
|
82
|
+
CANTON_LOCALNET_SV_VALIDATOR_API_CLIENT_SECRET=admin
|
|
83
|
+
|
|
84
|
+
CANTON_LOCALNET_SV_AUTH_URL=http://localhost:4000/auth
|
|
85
|
+
CANTON_LOCALNET_SV_PARTY_ID=
|
|
86
|
+
CANTON_LOCALNET_SV_USER_ID=sv
|
|
87
|
+
|
|
88
|
+
# =============================================================================
|
|
89
|
+
# LIGHTHOUSE API CONFIGURATION
|
|
90
|
+
# =============================================================================
|
|
91
|
+
# Lighthouse API is typically not available in LocalNet
|
|
92
|
+
# CANTON_LOCALNET_LIGHTHOUSE_API_URI=http://localhost:8080/api
|
|
93
|
+
|
|
94
|
+
# =============================================================================
|
|
95
|
+
# Contract IDs
|
|
96
|
+
# =============================================================================
|
|
97
|
+
# These contract IDs need to be discovered from your LocalNet instance
|
|
98
|
+
# You can find them through the Scan UI or by querying the ledger
|
|
99
|
+
CANTON_VALIDATOR_WALLET_APP_INSTALL_CONTRACT_ID_LOCALNET=
|
|
100
|
+
CANTON_AMULET_RULES_CONTRACT_ID_LOCALNET=
|
|
101
|
+
CANTON_WALLET_TEMPLATE_ID_LOCALNET=
|
|
102
|
+
CANTON_PREAPPROVAL_TEMPLATE_ID_LOCALNET=
|
|
103
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fairmint/canton-node-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.116",
|
|
4
4
|
"description": "Canton Node SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"canton",
|
|
@@ -36,16 +36,22 @@
|
|
|
36
36
|
"format": "prettier --check .",
|
|
37
37
|
"format:fix": "prettier --write .",
|
|
38
38
|
"generate:openapi-types": "tsx scripts/generate-openapi-types.ts",
|
|
39
|
-
"lint": "eslint .
|
|
40
|
-
"lint:fix": "eslint . --fix
|
|
39
|
+
"lint": "eslint .",
|
|
40
|
+
"lint:fix": "eslint . --fix",
|
|
41
41
|
"lint:npm": "npmPkgJsonLint . --fix",
|
|
42
42
|
"lint:npm:check": "npmPkgJsonLint .",
|
|
43
|
+
"localnet:setup": "./scripts/setup-localnet.sh",
|
|
44
|
+
"localnet:start": "./scripts/start-localnet.sh",
|
|
45
|
+
"localnet:status": "./scripts/localnet-status.sh",
|
|
46
|
+
"localnet:stop": "./scripts/stop-localnet.sh",
|
|
43
47
|
"prepack": "npm run clean && npm run build:core",
|
|
44
48
|
"prepare-release": "tsx scripts/prepare-release.ts",
|
|
45
49
|
"prepublishOnly": "npm run prepack",
|
|
46
50
|
"simulate": "tsx --tsconfig tsconfig.lint.json scripts/run-simulations.ts",
|
|
47
51
|
"simulate:events": "tsx --tsconfig tsconfig.lint.json scripts/run-events-simulation.ts",
|
|
48
52
|
"test": "jest",
|
|
53
|
+
"test:localnet": "npm run build:core && npm run simulate",
|
|
54
|
+
"test:regression": "npm run test:localnet",
|
|
49
55
|
"test:watch": "jest --watch"
|
|
50
56
|
},
|
|
51
57
|
"dependencies": {
|