@canton-network/core-rpc-transport 0.9.2 → 0.10.0
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 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -23,12 +23,14 @@ var jsonRpcResponse = (id, payload) => {
|
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
25
|
var WindowTransport = class {
|
|
26
|
-
constructor(win) {
|
|
26
|
+
constructor(win, options = {}) {
|
|
27
27
|
this.win = win;
|
|
28
|
+
this.options = options;
|
|
28
29
|
__publicField(this, "submit", async (payload) => {
|
|
29
30
|
const message = {
|
|
30
31
|
request: jsonRpcRequest(uuid.v4(), payload),
|
|
31
|
-
type: coreTypes.WalletEvent.SPLICE_WALLET_REQUEST
|
|
32
|
+
type: coreTypes.WalletEvent.SPLICE_WALLET_REQUEST,
|
|
33
|
+
target: this.options.target
|
|
32
34
|
};
|
|
33
35
|
this.win.postMessage(message, "*");
|
|
34
36
|
return new Promise((resolve, reject) => {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["uuidv4","WalletEvent","isSpliceMessageEvent","ErrorResponse","ResponsePayload"],"mappings":";;;;;;;;AAgBO,IAAM,cAAA,GAAiB,CAC1B,EAAA,EACA,OAAA,KACiB;AACjB,EAAA,OAAO;AAAA,IACH,OAAA,EAAS,KAAA;AAAA,IACT,EAAA;AAAA;AAAA,IACA,GAAG;AAAA,GACP;AACJ;AAEO,IAAM,eAAA,GAAkB,CAC3B,EAAA,EACA,OAAA,KACkB;AAClB,EAAA,OAAO;AAAA,IACH,OAAA,EAAS,KAAA;AAAA,IACT,EAAA;AAAA;AAAA,IACA,GAAG;AAAA,GACP;AACJ;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["uuidv4","WalletEvent","isSpliceMessageEvent","ErrorResponse","ResponsePayload"],"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 { v4 as uuidv4 } from 'uuid'\nimport {\n RequestPayload,\n ResponsePayload,\n JsonRpcRequest,\n SpliceMessage,\n WalletEvent,\n isSpliceMessageEvent,\n SuccessResponse,\n ErrorResponse,\n JsonRpcResponse,\n} from '@canton-network/core-types'\n\nexport const jsonRpcRequest = (\n id: string | number | null,\n payload: RequestPayload\n): JsonRpcRequest => {\n return {\n jsonrpc: '2.0',\n id, // id should be set based on the request context\n ...payload,\n }\n}\n\nexport const jsonRpcResponse = (\n id: string | number | null,\n payload: ResponsePayload\n): JsonRpcResponse => {\n return {\n jsonrpc: '2.0',\n id, // id should be set based on the request context\n ...payload,\n }\n}\n\nexport interface RpcTransport {\n submit: (payload: RequestPayload) => Promise<ResponsePayload>\n}\n\nexport type WindowTransportOptions = {\n /**\n * Optional routing key for browser-extension messaging. When set, extensions\n * should ignore messages that do not match their own identifier.\n */\n target?: string | undefined\n}\n\nexport class WindowTransport implements RpcTransport {\n constructor(\n private win: Window,\n private options: WindowTransportOptions = {}\n ) {}\n\n submit = async (payload: RequestPayload) => {\n const message: SpliceMessage = {\n request: jsonRpcRequest(uuidv4(), payload),\n type: WalletEvent.SPLICE_WALLET_REQUEST,\n target: this.options.target,\n }\n\n this.win.postMessage(message, '*')\n\n return new Promise<SuccessResponse>((resolve, reject) => {\n const listener = (event: MessageEvent) => {\n if (\n !isSpliceMessageEvent(event) ||\n event.data.type !== WalletEvent.SPLICE_WALLET_RESPONSE ||\n event.data.response.id !== message.request.id\n ) {\n return\n }\n\n window.removeEventListener('message', listener)\n if ('error' in event.data.response) {\n reject(event.data.response.error)\n } else {\n resolve(event.data.response)\n }\n }\n\n window.addEventListener('message', listener)\n })\n }\n\n submitResponse = (id: string | number | null, payload: ResponsePayload) => {\n const message: SpliceMessage = {\n response: jsonRpcResponse(id, payload),\n type: WalletEvent.SPLICE_WALLET_RESPONSE,\n }\n this.win.postMessage(message, '*')\n }\n}\n\nexport class HttpTransport implements RpcTransport {\n constructor(\n private url: URL,\n private accessToken?: string\n ) {}\n\n protected async handleErrorResponse(response: Response): Promise<never> {\n const body = await response.text()\n\n // if the response uses the RPC error format, throw it as is\n try {\n if (ErrorResponse.safeParse(JSON.parse(body)).success) {\n throw JSON.parse(body)\n }\n } catch {\n // ignore JSON parse errors\n }\n\n throw {\n error: {\n code: response.status,\n message: response.statusText,\n data: body,\n },\n }\n }\n\n async submit(payload: RequestPayload): Promise<ResponsePayload> {\n const request: JsonRpcRequest = {\n jsonrpc: '2.0',\n method: payload.method,\n params: payload.params,\n id: uuidv4(),\n }\n\n const header = this.accessToken\n ? { Authorization: `Bearer ${this.accessToken}` }\n : undefined\n\n const response = await fetch(this.url.href, {\n method: 'POST',\n headers: {\n ...header,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(request),\n })\n\n if (!response.ok) {\n return this.handleErrorResponse(response)\n }\n\n const json = await response.json()\n const parsed = ResponsePayload.parse(json)\n\n if ('error' in parsed) {\n throw parsed\n }\n\n return parsed\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,17 @@ export declare const jsonRpcResponse: (id: string | number | null, payload: Resp
|
|
|
4
4
|
export interface RpcTransport {
|
|
5
5
|
submit: (payload: RequestPayload) => Promise<ResponsePayload>;
|
|
6
6
|
}
|
|
7
|
+
export type WindowTransportOptions = {
|
|
8
|
+
/**
|
|
9
|
+
* Optional routing key for browser-extension messaging. When set, extensions
|
|
10
|
+
* should ignore messages that do not match their own identifier.
|
|
11
|
+
*/
|
|
12
|
+
target?: string | undefined;
|
|
13
|
+
};
|
|
7
14
|
export declare class WindowTransport implements RpcTransport {
|
|
8
15
|
private win;
|
|
9
|
-
|
|
16
|
+
private options;
|
|
17
|
+
constructor(win: Window, options?: WindowTransportOptions);
|
|
10
18
|
submit: (payload: RequestPayload) => Promise<{
|
|
11
19
|
result?: unknown;
|
|
12
20
|
}>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,cAAc,EACd,eAAe,EACf,cAAc,EAMd,eAAe,EAClB,MAAM,4BAA4B,CAAA;AAEnC,eAAO,MAAM,cAAc,GACvB,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,SAAS,cAAc,KACxB,cAMF,CAAA;AAED,eAAO,MAAM,eAAe,GACxB,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,SAAS,eAAe,KACzB,eAMF,CAAA;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;CAChE;AAED,qBAAa,eAAgB,YAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,cAAc,EACd,eAAe,EACf,cAAc,EAMd,eAAe,EAClB,MAAM,4BAA4B,CAAA;AAEnC,eAAO,MAAM,cAAc,GACvB,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,SAAS,cAAc,KACxB,cAMF,CAAA;AAED,eAAO,MAAM,eAAe,GACxB,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,EAC1B,SAAS,eAAe,KACzB,eAMF,CAAA;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;CAChE;AAED,MAAM,MAAM,sBAAsB,GAAG;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC9B,CAAA;AAED,qBAAa,eAAgB,YAAW,YAAY;IAE5C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;gBADP,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,sBAA2B;IAGhD,MAAM,GAAU,SAAS,cAAc;;OA6BtC;IAED,cAAc,GAAI,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,SAAS,eAAe,UAMrE;CACJ;AAED,qBAAa,aAAc,YAAW,YAAY;IAE1C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,WAAW,CAAC;gBADZ,GAAG,EAAE,GAAG,EACR,WAAW,CAAC,EAAE,MAAM,YAAA;cAGhB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAqBjE,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;CAkClE"}
|
package/dist/index.js
CHANGED
|
@@ -21,12 +21,14 @@ var jsonRpcResponse = (id, payload) => {
|
|
|
21
21
|
};
|
|
22
22
|
};
|
|
23
23
|
var WindowTransport = class {
|
|
24
|
-
constructor(win) {
|
|
24
|
+
constructor(win, options = {}) {
|
|
25
25
|
this.win = win;
|
|
26
|
+
this.options = options;
|
|
26
27
|
__publicField(this, "submit", async (payload) => {
|
|
27
28
|
const message = {
|
|
28
29
|
request: jsonRpcRequest(v4(), payload),
|
|
29
|
-
type: WalletEvent.SPLICE_WALLET_REQUEST
|
|
30
|
+
type: WalletEvent.SPLICE_WALLET_REQUEST,
|
|
31
|
+
target: this.options.target
|
|
30
32
|
};
|
|
31
33
|
this.win.postMessage(message, "*");
|
|
32
34
|
return new Promise((resolve, reject) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["uuidv4"],"mappings":";;;;;;AAgBO,IAAM,cAAA,GAAiB,CAC1B,EAAA,EACA,OAAA,KACiB;AACjB,EAAA,OAAO;AAAA,IACH,OAAA,EAAS,KAAA;AAAA,IACT,EAAA;AAAA;AAAA,IACA,GAAG;AAAA,GACP;AACJ;AAEO,IAAM,eAAA,GAAkB,CAC3B,EAAA,EACA,OAAA,KACkB;AAClB,EAAA,OAAO;AAAA,IACH,OAAA,EAAS,KAAA;AAAA,IACT,EAAA;AAAA;AAAA,IACA,GAAG;AAAA,GACP;AACJ;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["uuidv4"],"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 { v4 as uuidv4 } from 'uuid'\nimport {\n RequestPayload,\n ResponsePayload,\n JsonRpcRequest,\n SpliceMessage,\n WalletEvent,\n isSpliceMessageEvent,\n SuccessResponse,\n ErrorResponse,\n JsonRpcResponse,\n} from '@canton-network/core-types'\n\nexport const jsonRpcRequest = (\n id: string | number | null,\n payload: RequestPayload\n): JsonRpcRequest => {\n return {\n jsonrpc: '2.0',\n id, // id should be set based on the request context\n ...payload,\n }\n}\n\nexport const jsonRpcResponse = (\n id: string | number | null,\n payload: ResponsePayload\n): JsonRpcResponse => {\n return {\n jsonrpc: '2.0',\n id, // id should be set based on the request context\n ...payload,\n }\n}\n\nexport interface RpcTransport {\n submit: (payload: RequestPayload) => Promise<ResponsePayload>\n}\n\nexport type WindowTransportOptions = {\n /**\n * Optional routing key for browser-extension messaging. When set, extensions\n * should ignore messages that do not match their own identifier.\n */\n target?: string | undefined\n}\n\nexport class WindowTransport implements RpcTransport {\n constructor(\n private win: Window,\n private options: WindowTransportOptions = {}\n ) {}\n\n submit = async (payload: RequestPayload) => {\n const message: SpliceMessage = {\n request: jsonRpcRequest(uuidv4(), payload),\n type: WalletEvent.SPLICE_WALLET_REQUEST,\n target: this.options.target,\n }\n\n this.win.postMessage(message, '*')\n\n return new Promise<SuccessResponse>((resolve, reject) => {\n const listener = (event: MessageEvent) => {\n if (\n !isSpliceMessageEvent(event) ||\n event.data.type !== WalletEvent.SPLICE_WALLET_RESPONSE ||\n event.data.response.id !== message.request.id\n ) {\n return\n }\n\n window.removeEventListener('message', listener)\n if ('error' in event.data.response) {\n reject(event.data.response.error)\n } else {\n resolve(event.data.response)\n }\n }\n\n window.addEventListener('message', listener)\n })\n }\n\n submitResponse = (id: string | number | null, payload: ResponsePayload) => {\n const message: SpliceMessage = {\n response: jsonRpcResponse(id, payload),\n type: WalletEvent.SPLICE_WALLET_RESPONSE,\n }\n this.win.postMessage(message, '*')\n }\n}\n\nexport class HttpTransport implements RpcTransport {\n constructor(\n private url: URL,\n private accessToken?: string\n ) {}\n\n protected async handleErrorResponse(response: Response): Promise<never> {\n const body = await response.text()\n\n // if the response uses the RPC error format, throw it as is\n try {\n if (ErrorResponse.safeParse(JSON.parse(body)).success) {\n throw JSON.parse(body)\n }\n } catch {\n // ignore JSON parse errors\n }\n\n throw {\n error: {\n code: response.status,\n message: response.statusText,\n data: body,\n },\n }\n }\n\n async submit(payload: RequestPayload): Promise<ResponsePayload> {\n const request: JsonRpcRequest = {\n jsonrpc: '2.0',\n method: payload.method,\n params: payload.params,\n id: uuidv4(),\n }\n\n const header = this.accessToken\n ? { Authorization: `Bearer ${this.accessToken}` }\n : undefined\n\n const response = await fetch(this.url.href, {\n method: 'POST',\n headers: {\n ...header,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(request),\n })\n\n if (!response.ok) {\n return this.handleErrorResponse(response)\n }\n\n const json = await response.json()\n const parsed = ResponsePayload.parse(json)\n\n if ('error' in parsed) {\n throw parsed\n }\n\n return parsed\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canton-network/core-rpc-transport",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "RPC transport implementations",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"clean": "tsc -b --clean; rm -rf dist"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@canton-network/core-types": "^0.
|
|
27
|
+
"@canton-network/core-types": "^0.24.0",
|
|
28
28
|
"uuid": "^11.1.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|