@canton-network/core-splice-client 0.24.0 → 0.25.1
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/dist/index.cjs +4 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -8
- package/dist/index.js.map +1 -1
- package/dist/scan-proxy-client.d.ts +1 -1
- package/dist/scan-proxy-client.d.ts.map +1 -1
- package/dist/validator-internal-client.d.ts +1 -1
- package/dist/validator-internal-client.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -72,7 +72,7 @@ var ScanClient = class {
|
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
var _ScanProxyClient = class _ScanProxyClient {
|
|
75
|
-
constructor(baseUrl, logger,
|
|
75
|
+
constructor(baseUrl, logger, accessTokenProvider) {
|
|
76
76
|
__publicField(this, "client");
|
|
77
77
|
__publicField(this, "logger");
|
|
78
78
|
__publicField(this, "accessTokenProvider");
|
|
@@ -84,9 +84,7 @@ var _ScanProxyClient = class _ScanProxyClient {
|
|
|
84
84
|
this.client = createClient__default.default({
|
|
85
85
|
baseUrl: baseUrl.href,
|
|
86
86
|
fetch: async (url, options = {}) => {
|
|
87
|
-
|
|
88
|
-
accessToken = isAdmin ? await this.accessTokenProvider.getAdminAccessToken() : await this.accessTokenProvider.getUserAccessToken();
|
|
89
|
-
}
|
|
87
|
+
const accessToken = await this.accessTokenProvider.getAccessToken();
|
|
90
88
|
return fetch(url, {
|
|
91
89
|
...options,
|
|
92
90
|
headers: {
|
|
@@ -251,7 +249,7 @@ __publicField(_ScanProxyClient, "roundsInflight", /* @__PURE__ */ new Map());
|
|
|
251
249
|
__publicField(_ScanProxyClient, "roundsNextChangeAt", /* @__PURE__ */ new Map());
|
|
252
250
|
var ScanProxyClient = _ScanProxyClient;
|
|
253
251
|
var ValidatorInternalClient = class {
|
|
254
|
-
constructor(baseUrl, logger,
|
|
252
|
+
constructor(baseUrl, logger, accessTokenProvider) {
|
|
255
253
|
__publicField(this, "client");
|
|
256
254
|
__publicField(this, "logger");
|
|
257
255
|
__publicField(this, "accessTokenProvider");
|
|
@@ -261,9 +259,7 @@ var ValidatorInternalClient = class {
|
|
|
261
259
|
this.client = createClient__default.default({
|
|
262
260
|
baseUrl: baseUrl.href,
|
|
263
261
|
fetch: async (url, options = {}) => {
|
|
264
|
-
|
|
265
|
-
accessToken = isAdmin ? await this.accessTokenProvider.getAdminAccessToken() : await this.accessTokenProvider.getUserAccessToken();
|
|
266
|
-
}
|
|
262
|
+
const accessToken = await this.accessTokenProvider.getAccessToken();
|
|
267
263
|
return fetch(url, {
|
|
268
264
|
...options,
|
|
269
265
|
headers: {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scan-client.ts","../src/scan-proxy-client.ts","../src/validator-internal-client.ts"],"names":["createClient","rounds"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\n\nexport type ScanTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n\n constructor(baseUrl: string, logger: Logger, token?: string) {\n this.logger = logger\n this.logger.debug({ baseUrl, token }, 'TokenStandardClient initialized')\n this.client = createClient<paths>({\n baseUrl,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n const dsoInfo = await this.get('/v0/dso')\n\n const payloadObj = JSON.parse(\n JSON.stringify(dsoInfo.amulet_rules.contract.payload)\n )\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues as []\n\n if (futureValues.length > 0) {\n let updatedValue = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan-proxy'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\nexport type ScanProxyTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanProxyClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private readonly accessTokenProvider: AccessTokenProvider | undefined\n private readonly baseUrlHref: string\n // shared caches for all instances of ScanProxyClient\n private static amuletRulesCache = new Map<\n string,\n ScanProxyTypes['Contract']\n >()\n private static roundsCache = new Map<string, ScanProxyTypes['Contract'][]>()\n // one in-flight fetch per baseUrl for rules/rounds\n private static amuletRulesInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract']>\n >()\n private static roundsInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract'][]>\n >()\n // time after surpassing which mining rounds should be refreshed\n private static roundsNextChangeAt = new Map<string, number>()\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n isAdmin: boolean,\n accessToken?: string,\n accessTokenProvider?: AccessTokenProvider\n ) {\n this.baseUrlHref = baseUrl.href\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ScanProxyClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n if (this.accessTokenProvider) {\n accessToken = isAdmin\n ? await this.accessTokenProvider.getAdminAccessToken()\n : await this.accessTokenProvider.getUserAccessToken()\n }\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n private async fetchAmuletRulesOnce(): Promise<ScanProxyTypes['Contract']> {\n const resp = await this.get('/v0/scan-proxy/amulet-rules')\n const contract = resp?.amulet_rules?.contract\n if (!contract?.contract_id || !contract?.template_id) {\n throw new Error('Malformed AmuletRules response')\n }\n ScanProxyClient.amuletRulesCache.set(this.baseUrlHref, contract)\n return contract\n }\n\n public async getAmuletRules(): Promise<ScanProxyTypes['Contract']> {\n const key = this.baseUrlHref\n\n const cached = ScanProxyClient.amuletRulesCache.get(key)\n // clone to prevent external mutation of cache by object reference\n if (cached) return structuredClone(cached)\n\n let inflight = ScanProxyClient.amuletRulesInflight.get(key)\n if (!inflight) {\n inflight = this.fetchAmuletRulesOnce().finally(() => {\n ScanProxyClient.amuletRulesInflight.delete(key)\n })\n ScanProxyClient.amuletRulesInflight.set(key, inflight)\n }\n\n const contract = await inflight\n return structuredClone(contract)\n }\n\n public static invalidateAmuletRulesCache(baseUrl: URL) {\n const key = baseUrl.href\n this.amuletRulesCache.delete(key)\n this.amuletRulesInflight.delete(key)\n }\n\n private computeNextChangeAt(rounds: ScanProxyTypes['Contract'][]): number {\n const now = Date.now()\n let next = Number.POSITIVE_INFINITY\n\n for (const round of rounds) {\n const { opensAt, targetClosesAt } = round.payload ?? {}\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n\n if (Number.isFinite(openMs) && openMs > now && openMs < next) {\n next = openMs\n }\n if (Number.isFinite(closeMs) && closeMs > now && closeMs < next) {\n next = closeMs\n }\n }\n\n // If we couldn't parse anything sensible, force an immediate refresh.\n return Number.isFinite(next) ? next : now\n }\n\n private async fetchOpenMiningRoundsOnce(): Promise<\n ScanProxyTypes['Contract'][]\n > {\n const resp = await this.get(\n '/v0/scan-proxy/open-and-issuing-mining-rounds'\n )\n const rounds = (resp.open_mining_rounds ?? []).map(\n (x) => x.contract\n ) as ScanProxyTypes['Contract'][]\n\n const key = this.baseUrlHref\n ScanProxyClient.roundsCache.set(key, rounds)\n ScanProxyClient.roundsNextChangeAt.set(\n key,\n this.computeNextChangeAt(rounds)\n )\n return rounds\n }\n\n private async refreshRounds(\n key: string\n ): Promise<ScanProxyTypes['Contract'][]> {\n let inflight = ScanProxyClient.roundsInflight.get(key)\n if (!inflight) {\n inflight = this.fetchOpenMiningRoundsOnce().finally(() => {\n ScanProxyClient.roundsInflight.delete(key)\n })\n ScanProxyClient.roundsInflight.set(key, inflight)\n }\n return inflight\n }\n\n public async getOpenMiningRounds(): Promise<ScanProxyTypes['Contract'][]> {\n const key = this.baseUrlHref\n const now = Date.now()\n const cached = ScanProxyClient.roundsCache.get(key)\n const next = ScanProxyClient.roundsNextChangeAt.get(key)\n\n if (cached && next !== undefined && now < next) {\n return structuredClone(cached)\n }\n const fresh = await this.refreshRounds(key)\n return structuredClone(fresh)\n }\n\n public async getActiveOpenMiningRound(): Promise<\n ScanProxyTypes['Contract'] | null\n > {\n const pickActive = (\n rounds: ScanProxyTypes['Contract'][],\n timestamp: number\n ) =>\n rounds\n .filter((round) => {\n const { opensAt, targetClosesAt } = round.payload\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n return (\n Number.isFinite(openMs) &&\n Number.isFinite(closeMs) &&\n openMs <= timestamp &&\n timestamp < closeMs\n )\n })\n .sort((a, b) => a.payload.opensAt - b.payload.opensAt)\n .at(-1) ?? null\n\n const now = Date.now()\n const rounds = await this.getOpenMiningRounds()\n const active = pickActive(rounds, now)\n return active ? structuredClone(active) : null\n }\n\n public static invalidateOpenMiningRoundsCache(baseUrl: URL) {\n const key = baseUrl.href\n this.roundsCache.delete(key)\n this.roundsInflight.delete(key)\n this.roundsNextChangeAt.delete(key)\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n type FutureValue = {\n decentralizedSynchronizer?: {\n activeSynchronizer?: string\n }\n }\n\n type Payload = {\n configSchedule?: {\n initialValue?: FutureValue\n futureValues?: FutureValue[]\n }\n }\n\n const amuletRules = await this.getAmuletRules()\n const payloadObj = amuletRules.payload as Payload\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues\n\n if (Array.isArray(futureValues) && futureValues.length > 0) {\n let updatedValue: string | undefined = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n\n public async isDevNet(): Promise<boolean> {\n const amuletRules = await this.getAmuletRules()\n const payload = amuletRules.payload as { isDevNet?: boolean }\n return payload?.isDevNet ?? false\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { paths } from './generated-clients/validator-internal'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ValidatorInternalClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private accessTokenProvider: AccessTokenProvider | undefined\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n isAdmin: boolean,\n accessToken?: string,\n accessTokenProvider?: AccessTokenProvider\n ) {\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ValidatorInternalClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n if (this.accessTokenProvider) {\n accessToken = isAdmin\n ? await this.accessTokenProvider.getAdminAccessToken()\n : await this.accessTokenProvider.getUserAccessToken()\n }\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scan-client.ts","../src/scan-proxy-client.ts","../src/validator-internal-client.ts"],"names":["createClient","rounds"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\n\nexport type ScanTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n\n constructor(baseUrl: string, logger: Logger, token?: string) {\n this.logger = logger\n this.logger.debug({ baseUrl, token }, 'TokenStandardClient initialized')\n this.client = createClient<paths>({\n baseUrl,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n const dsoInfo = await this.get('/v0/dso')\n\n const payloadObj = JSON.parse(\n JSON.stringify(dsoInfo.amulet_rules.contract.payload)\n )\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues as []\n\n if (futureValues.length > 0) {\n let updatedValue = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan-proxy'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\nexport type ScanProxyTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanProxyClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private readonly accessTokenProvider: AccessTokenProvider\n private readonly baseUrlHref: string\n // shared caches for all instances of ScanProxyClient\n private static amuletRulesCache = new Map<\n string,\n ScanProxyTypes['Contract']\n >()\n private static roundsCache = new Map<string, ScanProxyTypes['Contract'][]>()\n // one in-flight fetch per baseUrl for rules/rounds\n private static amuletRulesInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract']>\n >()\n private static roundsInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract'][]>\n >()\n // time after surpassing which mining rounds should be refreshed\n private static roundsNextChangeAt = new Map<string, number>()\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n accessTokenProvider: AccessTokenProvider\n ) {\n this.baseUrlHref = baseUrl.href\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ScanProxyClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n const accessToken =\n await this.accessTokenProvider.getAccessToken()\n\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n private async fetchAmuletRulesOnce(): Promise<ScanProxyTypes['Contract']> {\n const resp = await this.get('/v0/scan-proxy/amulet-rules')\n const contract = resp?.amulet_rules?.contract\n if (!contract?.contract_id || !contract?.template_id) {\n throw new Error('Malformed AmuletRules response')\n }\n ScanProxyClient.amuletRulesCache.set(this.baseUrlHref, contract)\n return contract\n }\n\n public async getAmuletRules(): Promise<ScanProxyTypes['Contract']> {\n const key = this.baseUrlHref\n\n const cached = ScanProxyClient.amuletRulesCache.get(key)\n // clone to prevent external mutation of cache by object reference\n if (cached) return structuredClone(cached)\n\n let inflight = ScanProxyClient.amuletRulesInflight.get(key)\n if (!inflight) {\n inflight = this.fetchAmuletRulesOnce().finally(() => {\n ScanProxyClient.amuletRulesInflight.delete(key)\n })\n ScanProxyClient.amuletRulesInflight.set(key, inflight)\n }\n\n const contract = await inflight\n return structuredClone(contract)\n }\n\n public static invalidateAmuletRulesCache(baseUrl: URL) {\n const key = baseUrl.href\n this.amuletRulesCache.delete(key)\n this.amuletRulesInflight.delete(key)\n }\n\n private computeNextChangeAt(rounds: ScanProxyTypes['Contract'][]): number {\n const now = Date.now()\n let next = Number.POSITIVE_INFINITY\n\n for (const round of rounds) {\n const { opensAt, targetClosesAt } = round.payload ?? {}\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n\n if (Number.isFinite(openMs) && openMs > now && openMs < next) {\n next = openMs\n }\n if (Number.isFinite(closeMs) && closeMs > now && closeMs < next) {\n next = closeMs\n }\n }\n\n // If we couldn't parse anything sensible, force an immediate refresh.\n return Number.isFinite(next) ? next : now\n }\n\n private async fetchOpenMiningRoundsOnce(): Promise<\n ScanProxyTypes['Contract'][]\n > {\n const resp = await this.get(\n '/v0/scan-proxy/open-and-issuing-mining-rounds'\n )\n const rounds = (resp.open_mining_rounds ?? []).map(\n (x) => x.contract\n ) as ScanProxyTypes['Contract'][]\n\n const key = this.baseUrlHref\n ScanProxyClient.roundsCache.set(key, rounds)\n ScanProxyClient.roundsNextChangeAt.set(\n key,\n this.computeNextChangeAt(rounds)\n )\n return rounds\n }\n\n private async refreshRounds(\n key: string\n ): Promise<ScanProxyTypes['Contract'][]> {\n let inflight = ScanProxyClient.roundsInflight.get(key)\n if (!inflight) {\n inflight = this.fetchOpenMiningRoundsOnce().finally(() => {\n ScanProxyClient.roundsInflight.delete(key)\n })\n ScanProxyClient.roundsInflight.set(key, inflight)\n }\n return inflight\n }\n\n public async getOpenMiningRounds(): Promise<ScanProxyTypes['Contract'][]> {\n const key = this.baseUrlHref\n const now = Date.now()\n const cached = ScanProxyClient.roundsCache.get(key)\n const next = ScanProxyClient.roundsNextChangeAt.get(key)\n\n if (cached && next !== undefined && now < next) {\n return structuredClone(cached)\n }\n const fresh = await this.refreshRounds(key)\n return structuredClone(fresh)\n }\n\n public async getActiveOpenMiningRound(): Promise<\n ScanProxyTypes['Contract'] | null\n > {\n const pickActive = (\n rounds: ScanProxyTypes['Contract'][],\n timestamp: number\n ) =>\n rounds\n .filter((round) => {\n const { opensAt, targetClosesAt } = round.payload\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n return (\n Number.isFinite(openMs) &&\n Number.isFinite(closeMs) &&\n openMs <= timestamp &&\n timestamp < closeMs\n )\n })\n .sort((a, b) => a.payload.opensAt - b.payload.opensAt)\n .at(-1) ?? null\n\n const now = Date.now()\n const rounds = await this.getOpenMiningRounds()\n const active = pickActive(rounds, now)\n return active ? structuredClone(active) : null\n }\n\n public static invalidateOpenMiningRoundsCache(baseUrl: URL) {\n const key = baseUrl.href\n this.roundsCache.delete(key)\n this.roundsInflight.delete(key)\n this.roundsNextChangeAt.delete(key)\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n type FutureValue = {\n decentralizedSynchronizer?: {\n activeSynchronizer?: string\n }\n }\n\n type Payload = {\n configSchedule?: {\n initialValue?: FutureValue\n futureValues?: FutureValue[]\n }\n }\n\n const amuletRules = await this.getAmuletRules()\n const payloadObj = amuletRules.payload as Payload\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues\n\n if (Array.isArray(futureValues) && futureValues.length > 0) {\n let updatedValue: string | undefined = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n\n public async isDevNet(): Promise<boolean> {\n const amuletRules = await this.getAmuletRules()\n const payload = amuletRules.payload as { isDevNet?: boolean }\n return payload?.isDevNet ?? false\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { paths } from './generated-clients/validator-internal'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ValidatorInternalClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private accessTokenProvider: AccessTokenProvider\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n accessTokenProvider: AccessTokenProvider\n ) {\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ValidatorInternalClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n const accessToken =\n await this.accessTokenProvider.getAccessToken()\n\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -66,7 +66,7 @@ var ScanClient = class {
|
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
68
|
var _ScanProxyClient = class _ScanProxyClient {
|
|
69
|
-
constructor(baseUrl, logger,
|
|
69
|
+
constructor(baseUrl, logger, accessTokenProvider) {
|
|
70
70
|
__publicField(this, "client");
|
|
71
71
|
__publicField(this, "logger");
|
|
72
72
|
__publicField(this, "accessTokenProvider");
|
|
@@ -78,9 +78,7 @@ var _ScanProxyClient = class _ScanProxyClient {
|
|
|
78
78
|
this.client = createClient({
|
|
79
79
|
baseUrl: baseUrl.href,
|
|
80
80
|
fetch: async (url, options = {}) => {
|
|
81
|
-
|
|
82
|
-
accessToken = isAdmin ? await this.accessTokenProvider.getAdminAccessToken() : await this.accessTokenProvider.getUserAccessToken();
|
|
83
|
-
}
|
|
81
|
+
const accessToken = await this.accessTokenProvider.getAccessToken();
|
|
84
82
|
return fetch(url, {
|
|
85
83
|
...options,
|
|
86
84
|
headers: {
|
|
@@ -245,7 +243,7 @@ __publicField(_ScanProxyClient, "roundsInflight", /* @__PURE__ */ new Map());
|
|
|
245
243
|
__publicField(_ScanProxyClient, "roundsNextChangeAt", /* @__PURE__ */ new Map());
|
|
246
244
|
var ScanProxyClient = _ScanProxyClient;
|
|
247
245
|
var ValidatorInternalClient = class {
|
|
248
|
-
constructor(baseUrl, logger,
|
|
246
|
+
constructor(baseUrl, logger, accessTokenProvider) {
|
|
249
247
|
__publicField(this, "client");
|
|
250
248
|
__publicField(this, "logger");
|
|
251
249
|
__publicField(this, "accessTokenProvider");
|
|
@@ -255,9 +253,7 @@ var ValidatorInternalClient = class {
|
|
|
255
253
|
this.client = createClient({
|
|
256
254
|
baseUrl: baseUrl.href,
|
|
257
255
|
fetch: async (url, options = {}) => {
|
|
258
|
-
|
|
259
|
-
accessToken = isAdmin ? await this.accessTokenProvider.getAdminAccessToken() : await this.accessTokenProvider.getUserAccessToken();
|
|
260
|
-
}
|
|
256
|
+
const accessToken = await this.accessTokenProvider.getAccessToken();
|
|
261
257
|
return fetch(url, {
|
|
262
258
|
...options,
|
|
263
259
|
headers: {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scan-client.ts","../src/scan-proxy-client.ts","../src/validator-internal-client.ts"],"names":["createClient","rounds"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\n\nexport type ScanTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n\n constructor(baseUrl: string, logger: Logger, token?: string) {\n this.logger = logger\n this.logger.debug({ baseUrl, token }, 'TokenStandardClient initialized')\n this.client = createClient<paths>({\n baseUrl,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n const dsoInfo = await this.get('/v0/dso')\n\n const payloadObj = JSON.parse(\n JSON.stringify(dsoInfo.amulet_rules.contract.payload)\n )\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues as []\n\n if (futureValues.length > 0) {\n let updatedValue = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan-proxy'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\nexport type ScanProxyTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanProxyClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private readonly accessTokenProvider: AccessTokenProvider | undefined\n private readonly baseUrlHref: string\n // shared caches for all instances of ScanProxyClient\n private static amuletRulesCache = new Map<\n string,\n ScanProxyTypes['Contract']\n >()\n private static roundsCache = new Map<string, ScanProxyTypes['Contract'][]>()\n // one in-flight fetch per baseUrl for rules/rounds\n private static amuletRulesInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract']>\n >()\n private static roundsInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract'][]>\n >()\n // time after surpassing which mining rounds should be refreshed\n private static roundsNextChangeAt = new Map<string, number>()\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n isAdmin: boolean,\n accessToken?: string,\n accessTokenProvider?: AccessTokenProvider\n ) {\n this.baseUrlHref = baseUrl.href\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ScanProxyClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n if (this.accessTokenProvider) {\n accessToken = isAdmin\n ? await this.accessTokenProvider.getAdminAccessToken()\n : await this.accessTokenProvider.getUserAccessToken()\n }\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n private async fetchAmuletRulesOnce(): Promise<ScanProxyTypes['Contract']> {\n const resp = await this.get('/v0/scan-proxy/amulet-rules')\n const contract = resp?.amulet_rules?.contract\n if (!contract?.contract_id || !contract?.template_id) {\n throw new Error('Malformed AmuletRules response')\n }\n ScanProxyClient.amuletRulesCache.set(this.baseUrlHref, contract)\n return contract\n }\n\n public async getAmuletRules(): Promise<ScanProxyTypes['Contract']> {\n const key = this.baseUrlHref\n\n const cached = ScanProxyClient.amuletRulesCache.get(key)\n // clone to prevent external mutation of cache by object reference\n if (cached) return structuredClone(cached)\n\n let inflight = ScanProxyClient.amuletRulesInflight.get(key)\n if (!inflight) {\n inflight = this.fetchAmuletRulesOnce().finally(() => {\n ScanProxyClient.amuletRulesInflight.delete(key)\n })\n ScanProxyClient.amuletRulesInflight.set(key, inflight)\n }\n\n const contract = await inflight\n return structuredClone(contract)\n }\n\n public static invalidateAmuletRulesCache(baseUrl: URL) {\n const key = baseUrl.href\n this.amuletRulesCache.delete(key)\n this.amuletRulesInflight.delete(key)\n }\n\n private computeNextChangeAt(rounds: ScanProxyTypes['Contract'][]): number {\n const now = Date.now()\n let next = Number.POSITIVE_INFINITY\n\n for (const round of rounds) {\n const { opensAt, targetClosesAt } = round.payload ?? {}\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n\n if (Number.isFinite(openMs) && openMs > now && openMs < next) {\n next = openMs\n }\n if (Number.isFinite(closeMs) && closeMs > now && closeMs < next) {\n next = closeMs\n }\n }\n\n // If we couldn't parse anything sensible, force an immediate refresh.\n return Number.isFinite(next) ? next : now\n }\n\n private async fetchOpenMiningRoundsOnce(): Promise<\n ScanProxyTypes['Contract'][]\n > {\n const resp = await this.get(\n '/v0/scan-proxy/open-and-issuing-mining-rounds'\n )\n const rounds = (resp.open_mining_rounds ?? []).map(\n (x) => x.contract\n ) as ScanProxyTypes['Contract'][]\n\n const key = this.baseUrlHref\n ScanProxyClient.roundsCache.set(key, rounds)\n ScanProxyClient.roundsNextChangeAt.set(\n key,\n this.computeNextChangeAt(rounds)\n )\n return rounds\n }\n\n private async refreshRounds(\n key: string\n ): Promise<ScanProxyTypes['Contract'][]> {\n let inflight = ScanProxyClient.roundsInflight.get(key)\n if (!inflight) {\n inflight = this.fetchOpenMiningRoundsOnce().finally(() => {\n ScanProxyClient.roundsInflight.delete(key)\n })\n ScanProxyClient.roundsInflight.set(key, inflight)\n }\n return inflight\n }\n\n public async getOpenMiningRounds(): Promise<ScanProxyTypes['Contract'][]> {\n const key = this.baseUrlHref\n const now = Date.now()\n const cached = ScanProxyClient.roundsCache.get(key)\n const next = ScanProxyClient.roundsNextChangeAt.get(key)\n\n if (cached && next !== undefined && now < next) {\n return structuredClone(cached)\n }\n const fresh = await this.refreshRounds(key)\n return structuredClone(fresh)\n }\n\n public async getActiveOpenMiningRound(): Promise<\n ScanProxyTypes['Contract'] | null\n > {\n const pickActive = (\n rounds: ScanProxyTypes['Contract'][],\n timestamp: number\n ) =>\n rounds\n .filter((round) => {\n const { opensAt, targetClosesAt } = round.payload\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n return (\n Number.isFinite(openMs) &&\n Number.isFinite(closeMs) &&\n openMs <= timestamp &&\n timestamp < closeMs\n )\n })\n .sort((a, b) => a.payload.opensAt - b.payload.opensAt)\n .at(-1) ?? null\n\n const now = Date.now()\n const rounds = await this.getOpenMiningRounds()\n const active = pickActive(rounds, now)\n return active ? structuredClone(active) : null\n }\n\n public static invalidateOpenMiningRoundsCache(baseUrl: URL) {\n const key = baseUrl.href\n this.roundsCache.delete(key)\n this.roundsInflight.delete(key)\n this.roundsNextChangeAt.delete(key)\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n type FutureValue = {\n decentralizedSynchronizer?: {\n activeSynchronizer?: string\n }\n }\n\n type Payload = {\n configSchedule?: {\n initialValue?: FutureValue\n futureValues?: FutureValue[]\n }\n }\n\n const amuletRules = await this.getAmuletRules()\n const payloadObj = amuletRules.payload as Payload\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues\n\n if (Array.isArray(futureValues) && futureValues.length > 0) {\n let updatedValue: string | undefined = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n\n public async isDevNet(): Promise<boolean> {\n const amuletRules = await this.getAmuletRules()\n const payload = amuletRules.payload as { isDevNet?: boolean }\n return payload?.isDevNet ?? false\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { paths } from './generated-clients/validator-internal'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ValidatorInternalClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private accessTokenProvider: AccessTokenProvider | undefined\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n isAdmin: boolean,\n accessToken?: string,\n accessTokenProvider?: AccessTokenProvider\n ) {\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ValidatorInternalClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n if (this.accessTokenProvider) {\n accessToken = isAdmin\n ? await this.accessTokenProvider.getAdminAccessToken()\n : await this.accessTokenProvider.getUserAccessToken()\n }\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scan-client.ts","../src/scan-proxy-client.ts","../src/validator-internal-client.ts"],"names":["createClient","rounds"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\n\nexport type ScanTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n\n constructor(baseUrl: string, logger: Logger, token?: string) {\n this.logger = logger\n this.logger.debug({ baseUrl, token }, 'TokenStandardClient initialized')\n this.client = createClient<paths>({\n baseUrl,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(token ? { Authorization: `Bearer ${token}` } : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n const dsoInfo = await this.get('/v0/dso')\n\n const payloadObj = JSON.parse(\n JSON.stringify(dsoInfo.amulet_rules.contract.payload)\n )\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues as []\n\n if (futureValues.length > 0) {\n let updatedValue = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { components, paths } from './generated-clients/scan-proxy'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\nexport type ScanProxyTypes = components['schemas']\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ScanProxyClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private readonly accessTokenProvider: AccessTokenProvider\n private readonly baseUrlHref: string\n // shared caches for all instances of ScanProxyClient\n private static amuletRulesCache = new Map<\n string,\n ScanProxyTypes['Contract']\n >()\n private static roundsCache = new Map<string, ScanProxyTypes['Contract'][]>()\n // one in-flight fetch per baseUrl for rules/rounds\n private static amuletRulesInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract']>\n >()\n private static roundsInflight = new Map<\n string,\n Promise<ScanProxyTypes['Contract'][]>\n >()\n // time after surpassing which mining rounds should be refreshed\n private static roundsNextChangeAt = new Map<string, number>()\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n accessTokenProvider: AccessTokenProvider\n ) {\n this.baseUrlHref = baseUrl.href\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ScanProxyClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n const accessToken =\n await this.accessTokenProvider.getAccessToken()\n\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n\n private async fetchAmuletRulesOnce(): Promise<ScanProxyTypes['Contract']> {\n const resp = await this.get('/v0/scan-proxy/amulet-rules')\n const contract = resp?.amulet_rules?.contract\n if (!contract?.contract_id || !contract?.template_id) {\n throw new Error('Malformed AmuletRules response')\n }\n ScanProxyClient.amuletRulesCache.set(this.baseUrlHref, contract)\n return contract\n }\n\n public async getAmuletRules(): Promise<ScanProxyTypes['Contract']> {\n const key = this.baseUrlHref\n\n const cached = ScanProxyClient.amuletRulesCache.get(key)\n // clone to prevent external mutation of cache by object reference\n if (cached) return structuredClone(cached)\n\n let inflight = ScanProxyClient.amuletRulesInflight.get(key)\n if (!inflight) {\n inflight = this.fetchAmuletRulesOnce().finally(() => {\n ScanProxyClient.amuletRulesInflight.delete(key)\n })\n ScanProxyClient.amuletRulesInflight.set(key, inflight)\n }\n\n const contract = await inflight\n return structuredClone(contract)\n }\n\n public static invalidateAmuletRulesCache(baseUrl: URL) {\n const key = baseUrl.href\n this.amuletRulesCache.delete(key)\n this.amuletRulesInflight.delete(key)\n }\n\n private computeNextChangeAt(rounds: ScanProxyTypes['Contract'][]): number {\n const now = Date.now()\n let next = Number.POSITIVE_INFINITY\n\n for (const round of rounds) {\n const { opensAt, targetClosesAt } = round.payload ?? {}\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n\n if (Number.isFinite(openMs) && openMs > now && openMs < next) {\n next = openMs\n }\n if (Number.isFinite(closeMs) && closeMs > now && closeMs < next) {\n next = closeMs\n }\n }\n\n // If we couldn't parse anything sensible, force an immediate refresh.\n return Number.isFinite(next) ? next : now\n }\n\n private async fetchOpenMiningRoundsOnce(): Promise<\n ScanProxyTypes['Contract'][]\n > {\n const resp = await this.get(\n '/v0/scan-proxy/open-and-issuing-mining-rounds'\n )\n const rounds = (resp.open_mining_rounds ?? []).map(\n (x) => x.contract\n ) as ScanProxyTypes['Contract'][]\n\n const key = this.baseUrlHref\n ScanProxyClient.roundsCache.set(key, rounds)\n ScanProxyClient.roundsNextChangeAt.set(\n key,\n this.computeNextChangeAt(rounds)\n )\n return rounds\n }\n\n private async refreshRounds(\n key: string\n ): Promise<ScanProxyTypes['Contract'][]> {\n let inflight = ScanProxyClient.roundsInflight.get(key)\n if (!inflight) {\n inflight = this.fetchOpenMiningRoundsOnce().finally(() => {\n ScanProxyClient.roundsInflight.delete(key)\n })\n ScanProxyClient.roundsInflight.set(key, inflight)\n }\n return inflight\n }\n\n public async getOpenMiningRounds(): Promise<ScanProxyTypes['Contract'][]> {\n const key = this.baseUrlHref\n const now = Date.now()\n const cached = ScanProxyClient.roundsCache.get(key)\n const next = ScanProxyClient.roundsNextChangeAt.get(key)\n\n if (cached && next !== undefined && now < next) {\n return structuredClone(cached)\n }\n const fresh = await this.refreshRounds(key)\n return structuredClone(fresh)\n }\n\n public async getActiveOpenMiningRound(): Promise<\n ScanProxyTypes['Contract'] | null\n > {\n const pickActive = (\n rounds: ScanProxyTypes['Contract'][],\n timestamp: number\n ) =>\n rounds\n .filter((round) => {\n const { opensAt, targetClosesAt } = round.payload\n const openMs = opensAt ? Number(new Date(opensAt)) : NaN\n const closeMs = targetClosesAt\n ? Number(new Date(targetClosesAt))\n : NaN\n return (\n Number.isFinite(openMs) &&\n Number.isFinite(closeMs) &&\n openMs <= timestamp &&\n timestamp < closeMs\n )\n })\n .sort((a, b) => a.payload.opensAt - b.payload.opensAt)\n .at(-1) ?? null\n\n const now = Date.now()\n const rounds = await this.getOpenMiningRounds()\n const active = pickActive(rounds, now)\n return active ? structuredClone(active) : null\n }\n\n public static invalidateOpenMiningRoundsCache(baseUrl: URL) {\n const key = baseUrl.href\n this.roundsCache.delete(key)\n this.roundsInflight.delete(key)\n this.roundsNextChangeAt.delete(key)\n }\n\n public async getAmuletSynchronizerId(): Promise<string | undefined> {\n type FutureValue = {\n decentralizedSynchronizer?: {\n activeSynchronizer?: string\n }\n }\n\n type Payload = {\n configSchedule?: {\n initialValue?: FutureValue\n futureValues?: FutureValue[]\n }\n }\n\n const amuletRules = await this.getAmuletRules()\n const payloadObj = amuletRules.payload as Payload\n\n const initActiveSynchronizer =\n payloadObj?.configSchedule?.initialValue?.decentralizedSynchronizer\n ?.activeSynchronizer\n const futureValues = payloadObj?.configSchedule?.futureValues\n\n if (Array.isArray(futureValues) && futureValues.length > 0) {\n let updatedValue: string | undefined = undefined\n for (const value of futureValues) {\n const parsed = JSON.parse(JSON.stringify(value))\n if (parsed?.decentralizedSynchronizer?.activeSynchronizer) {\n updatedValue =\n parsed.decentralizedSynchronizer.activeSynchronizer\n }\n }\n return updatedValue ?? initActiveSynchronizer\n } else return initActiveSynchronizer\n }\n\n public async isDevNet(): Promise<boolean> {\n const amuletRules = await this.getAmuletRules()\n const payload = amuletRules.payload as { isDevNet?: boolean }\n return payload?.isDevNet ?? false\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { paths } from './generated-clients/validator-internal'\nimport createClient, { Client } from 'openapi-fetch'\nimport { Logger } from '@canton-network/core-types'\nimport { AccessTokenProvider } from '@canton-network/core-wallet-auth'\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class ValidatorInternalClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private accessTokenProvider: AccessTokenProvider\n\n constructor(\n baseUrl: URL,\n logger: Logger,\n accessTokenProvider: AccessTokenProvider\n ) {\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'ValidatorInternalClient initialized')\n this.client = createClient<paths>({\n baseUrl: baseUrl.href,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n const accessToken =\n await this.accessTokenProvider.getAccessToken()\n\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n}\n"]}
|
|
@@ -53,7 +53,7 @@ export declare class ScanProxyClient {
|
|
|
53
53
|
private static amuletRulesInflight;
|
|
54
54
|
private static roundsInflight;
|
|
55
55
|
private static roundsNextChangeAt;
|
|
56
|
-
constructor(baseUrl: URL, logger: Logger,
|
|
56
|
+
constructor(baseUrl: URL, logger: Logger, accessTokenProvider: AccessTokenProvider);
|
|
57
57
|
post<Path extends PostEndpoint>(path: Path, body: PostRequest<Path>, params?: {
|
|
58
58
|
path?: Record<string, string>;
|
|
59
59
|
query?: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-proxy-client.d.ts","sourceRoot":"","sources":["../src/scan-proxy-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;AAIlD,KAAK,YAAY,GAAG;KACf,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,IAAI,EAAE,OAAO,CAAA;KAChB,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACrE,IAAI,EAAE;QAAE,WAAW,EAAE;YAAE,OAAO,EAAE;gBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CACxE,GACK,GAAG,GACH,KAAK,CAAA;AAGX,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACtE,IAAI,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC/E,GACK,GAAG,GACH,KAAK,CAAA;AAGX,KAAK,WAAW,GAAG;KACd,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,GAAG,EAAE,OAAO,CAAA;KACf,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACpE,GAAG,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC9E,GACK,GAAG,GACH,KAAK,CAAA;AAEX,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"scan-proxy-client.d.ts","sourceRoot":"","sources":["../src/scan-proxy-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAEtE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;AAIlD,KAAK,YAAY,GAAG;KACf,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,IAAI,EAAE,OAAO,CAAA;KAChB,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACrE,IAAI,EAAE;QAAE,WAAW,EAAE;YAAE,OAAO,EAAE;gBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CACxE,GACK,GAAG,GACH,KAAK,CAAA;AAGX,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACtE,IAAI,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC/E,GACK,GAAG,GACH,KAAK,CAAA;AAGX,KAAK,WAAW,GAAG;KACd,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,GAAG,EAAE,OAAO,CAAA;KACf,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACpE,GAAG,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC9E,GACK,GAAG,GACH,KAAK,CAAA;AAEX,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAEpC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAG5B;IACH,OAAO,CAAC,MAAM,CAAC,WAAW,CAAkD;IAE5E,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAG/B;IACH,OAAO,CAAC,MAAM,CAAC,cAAc,CAG1B;IAEH,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA4B;gBAGzD,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,mBAAmB;IA0B/B,IAAI,CAAC,IAAI,SAAS,YAAY,EACvC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,EACvB,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,GACF,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IASjB,GAAG,CAAC,IAAI,SAAS,WAAW,EACrC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,GACF,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAYf,YAAY;YAWZ,oBAAoB;IAUrB,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;WAmBpD,0BAA0B,CAAC,OAAO,EAAE,GAAG;IAMrD,OAAO,CAAC,mBAAmB;YAuBb,yBAAyB;YAmBzB,aAAa;IAad,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;IAa5D,wBAAwB,IAAI,OAAO,CAC5C,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CACpC;WA4Ba,+BAA+B,CAAC,OAAO,EAAE,GAAG;IAO7C,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmCtD,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;CAK5C"}
|
|
@@ -46,7 +46,7 @@ export declare class ValidatorInternalClient {
|
|
|
46
46
|
private readonly client;
|
|
47
47
|
private readonly logger;
|
|
48
48
|
private accessTokenProvider;
|
|
49
|
-
constructor(baseUrl: URL, logger: Logger,
|
|
49
|
+
constructor(baseUrl: URL, logger: Logger, accessTokenProvider: AccessTokenProvider);
|
|
50
50
|
post<Path extends PostEndpoint>(path: Path, body: PostRequest<Path>, params?: {
|
|
51
51
|
path?: Record<string, string>;
|
|
52
52
|
query?: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator-internal-client.d.ts","sourceRoot":"","sources":["../src/validator-internal-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAItE,KAAK,YAAY,GAAG;KACf,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,IAAI,EAAE,OAAO,CAAA;KAChB,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACrE,IAAI,EAAE;QAAE,WAAW,EAAE;YAAE,OAAO,EAAE;gBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CACxE,GACK,GAAG,GACH,KAAK,CAAA;AAGX,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACtE,IAAI,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC/E,GACK,GAAG,GACH,KAAK,CAAA;AAGX,KAAK,WAAW,GAAG;KACd,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,GAAG,EAAE,OAAO,CAAA;KACf,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACpE,GAAG,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC9E,GACK,GAAG,GACH,KAAK,CAAA;AAEX,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"validator-internal-client.d.ts","sourceRoot":"","sources":["../src/validator-internal-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAItE,KAAK,YAAY,GAAG;KACf,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,IAAI,EAAE,OAAO,CAAA;KAChB,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACrE,IAAI,EAAE;QAAE,WAAW,EAAE;YAAE,OAAO,EAAE;gBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CACxE,GACK,GAAG,GACH,KAAK,CAAA;AAGX,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACtE,IAAI,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC/E,GACK,GAAG,GACH,KAAK,CAAA;AAGX,KAAK,WAAW,GAAG;KACd,QAAQ,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS;QAC/C,GAAG,EAAE,OAAO,CAAA;KACf,GACK,QAAQ,GACR,KAAK;CACd,CAAC,MAAM,KAAK,CAAC,CAAA;AAGd,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;IACpE,GAAG,EAAE;QAAE,SAAS,EAAE;YAAE,GAAG,EAAE;gBAAE,OAAO,EAAE;oBAAE,kBAAkB,EAAE,MAAM,GAAG,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;CAC9E,GACK,GAAG,GACH,KAAK,CAAA;AAEX,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,mBAAmB,CAAqB;gBAG5C,OAAO,EAAE,GAAG,EACZ,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,mBAAmB;IAyB/B,IAAI,CAAC,IAAI,SAAS,YAAY,EACvC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,EACvB,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,GACF,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IASjB,GAAG,CAAC,IAAI,SAAS,WAAW,EACrC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,GACF,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAYf,YAAY;CAU7B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canton-network/core-splice-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Typescript Client for the multiple Canton Network APIs",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"clean": "tsc -b --clean; rm -rf dist"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@canton-network/core-types": "^0.
|
|
27
|
-
"@canton-network/core-wallet-auth": "^0.
|
|
26
|
+
"@canton-network/core-types": "^0.22.1",
|
|
27
|
+
"@canton-network/core-wallet-auth": "^0.23.1",
|
|
28
28
|
"openapi-fetch": "^0.17.0",
|
|
29
29
|
"uuid": "^11.1.0",
|
|
30
30
|
"zod": "^4.3.6"
|