@layr8/sdk 0.1.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/README.md +582 -0
- package/dist/backoff.d.ts +10 -0
- package/dist/backoff.d.ts.map +1 -0
- package/dist/backoff.js +20 -0
- package/dist/backoff.js.map +1 -0
- package/dist/channel.d.ts +88 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +522 -0
- package/dist/channel.js.map +1 -0
- package/dist/client.d.ts +119 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +509 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +49 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +42 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.d.ts +55 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +5 -0
- package/dist/credentials.js.map +1 -0
- package/dist/errors.d.ts +91 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +132 -0
- package/dist/errors.js.map +1 -0
- package/dist/handler.d.ts +28 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +51 -0
- package/dist/handler.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/message.d.ts +67 -0
- package/dist/message.d.ts.map +1 -0
- package/dist/message.js +77 -0
- package/dist/message.js.map +1 -0
- package/dist/presentations.d.ts +24 -0
- package/dist/presentations.d.ts.map +1 -0
- package/dist/presentations.js +5 -0
- package/dist/presentations.js.map +1 -0
- package/dist/rest.d.ts +33 -0
- package/dist/rest.d.ts.map +1 -0
- package/dist/rest.js +150 -0
- package/dist/rest.js.map +1 -0
- package/package.json +38 -0
package/dist/rest.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal REST client for the Layr8 cloud-node HTTP API.
|
|
3
|
+
*
|
|
4
|
+
* Handles JSON serialization, API key authentication, and localhost resolution.
|
|
5
|
+
*
|
|
6
|
+
* Uses Node's http/https modules instead of fetch because fetch (undici) does
|
|
7
|
+
* not honor custom Host headers — required for *.localhost resolution (RFC 6761).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Derive the HTTP base URL from a WebSocket URL.
|
|
11
|
+
*
|
|
12
|
+
* ws://alice-test.localhost:4000/plugin_socket/websocket -> http://alice-test.localhost:4000
|
|
13
|
+
* wss://alice-test.localhost/plugin_socket/websocket -> https://alice-test.localhost
|
|
14
|
+
*/
|
|
15
|
+
export declare function restUrlFromWebSocket(wsUrl: string): string;
|
|
16
|
+
/** RESTError represents an error response from the cloud-node REST API. */
|
|
17
|
+
export declare class RESTError extends Error {
|
|
18
|
+
readonly statusCode: number;
|
|
19
|
+
constructor(statusCode: number, message: string);
|
|
20
|
+
}
|
|
21
|
+
/** Internal REST client for the cloud-node HTTP API. */
|
|
22
|
+
export declare class RestClient {
|
|
23
|
+
private readonly baseUrl;
|
|
24
|
+
private readonly apiKey;
|
|
25
|
+
constructor(baseUrl: string, apiKey: string);
|
|
26
|
+
/** Send a JSON POST request and return the decoded response. */
|
|
27
|
+
post<T>(path: string, body: unknown): Promise<T>;
|
|
28
|
+
/** Send a GET request and return the decoded response. */
|
|
29
|
+
get<T>(path: string): Promise<T>;
|
|
30
|
+
/** Execute an HTTP request using node:http with localhost resolution (RFC 6761). */
|
|
31
|
+
private request;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=rest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA6B1D;AAED,2EAA2E;AAC3E,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAKhD;AAED,wDAAwD;AACxD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK3C,gEAAgE;IAC1D,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAYtD,0DAA0D;IACpD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAQtC,oFAAoF;IACpF,OAAO,CAAC,OAAO;CA2DhB"}
|
package/dist/rest.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal REST client for the Layr8 cloud-node HTTP API.
|
|
3
|
+
*
|
|
4
|
+
* Handles JSON serialization, API key authentication, and localhost resolution.
|
|
5
|
+
*
|
|
6
|
+
* Uses Node's http/https modules instead of fetch because fetch (undici) does
|
|
7
|
+
* not honor custom Host headers — required for *.localhost resolution (RFC 6761).
|
|
8
|
+
*/
|
|
9
|
+
import http from "node:http";
|
|
10
|
+
import https from "node:https";
|
|
11
|
+
/** Check whether a hostname is localhost or a subdomain of it (RFC 6761). */
|
|
12
|
+
function isLocalhost(hostname) {
|
|
13
|
+
return hostname === "localhost" || hostname.endsWith(".localhost");
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Derive the HTTP base URL from a WebSocket URL.
|
|
17
|
+
*
|
|
18
|
+
* ws://alice-test.localhost:4000/plugin_socket/websocket -> http://alice-test.localhost:4000
|
|
19
|
+
* wss://alice-test.localhost/plugin_socket/websocket -> https://alice-test.localhost
|
|
20
|
+
*/
|
|
21
|
+
export function restUrlFromWebSocket(wsUrl) {
|
|
22
|
+
let u;
|
|
23
|
+
try {
|
|
24
|
+
u = new URL(wsUrl);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Fallback: simple scheme replacement, strip path
|
|
28
|
+
let s = wsUrl.replace("wss://", "https://").replace("ws://", "http://");
|
|
29
|
+
const schemeEnd = s.indexOf("://");
|
|
30
|
+
if (schemeEnd !== -1) {
|
|
31
|
+
const pathStart = s.indexOf("/", schemeEnd + 3);
|
|
32
|
+
if (pathStart !== -1) {
|
|
33
|
+
s = s.slice(0, pathStart);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return s;
|
|
37
|
+
}
|
|
38
|
+
switch (u.protocol) {
|
|
39
|
+
case "wss:":
|
|
40
|
+
u.protocol = "https:";
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
u.protocol = "http:";
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
u.pathname = "";
|
|
47
|
+
u.search = "";
|
|
48
|
+
u.hash = "";
|
|
49
|
+
return u.toString().replace(/\/$/, "");
|
|
50
|
+
}
|
|
51
|
+
/** RESTError represents an error response from the cloud-node REST API. */
|
|
52
|
+
export class RESTError extends Error {
|
|
53
|
+
statusCode;
|
|
54
|
+
constructor(statusCode, message) {
|
|
55
|
+
super(`REST API error ${statusCode}: ${message}`);
|
|
56
|
+
this.name = "RESTError";
|
|
57
|
+
this.statusCode = statusCode;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** Internal REST client for the cloud-node HTTP API. */
|
|
61
|
+
export class RestClient {
|
|
62
|
+
baseUrl;
|
|
63
|
+
apiKey;
|
|
64
|
+
constructor(baseUrl, apiKey) {
|
|
65
|
+
this.baseUrl = baseUrl;
|
|
66
|
+
this.apiKey = apiKey;
|
|
67
|
+
}
|
|
68
|
+
/** Send a JSON POST request and return the decoded response. */
|
|
69
|
+
async post(path, body) {
|
|
70
|
+
const data = JSON.stringify(body);
|
|
71
|
+
const headers = {
|
|
72
|
+
"Content-Type": "application/json",
|
|
73
|
+
"Content-Length": String(Buffer.byteLength(data)),
|
|
74
|
+
};
|
|
75
|
+
if (this.apiKey) {
|
|
76
|
+
headers["x-api-key"] = this.apiKey;
|
|
77
|
+
}
|
|
78
|
+
return this.request("POST", path, headers, data);
|
|
79
|
+
}
|
|
80
|
+
/** Send a GET request and return the decoded response. */
|
|
81
|
+
async get(path) {
|
|
82
|
+
const headers = {};
|
|
83
|
+
if (this.apiKey) {
|
|
84
|
+
headers["x-api-key"] = this.apiKey;
|
|
85
|
+
}
|
|
86
|
+
return this.request("GET", path, headers);
|
|
87
|
+
}
|
|
88
|
+
/** Execute an HTTP request using node:http with localhost resolution (RFC 6761). */
|
|
89
|
+
request(method, path, headers, body) {
|
|
90
|
+
const parsed = new URL(this.baseUrl + path);
|
|
91
|
+
const isHttps = parsed.protocol === "https:";
|
|
92
|
+
const mod = isHttps ? https : http;
|
|
93
|
+
// Resolve *.localhost to 127.0.0.1, preserving the original Host header.
|
|
94
|
+
let hostname = parsed.hostname;
|
|
95
|
+
if (isLocalhost(hostname)) {
|
|
96
|
+
headers["Host"] = parsed.host;
|
|
97
|
+
hostname = "127.0.0.1";
|
|
98
|
+
}
|
|
99
|
+
return new Promise((resolve, reject) => {
|
|
100
|
+
const req = mod.request({
|
|
101
|
+
hostname,
|
|
102
|
+
port: parsed.port || (isHttps ? 443 : 80),
|
|
103
|
+
path: parsed.pathname + parsed.search,
|
|
104
|
+
method,
|
|
105
|
+
headers,
|
|
106
|
+
}, (res) => {
|
|
107
|
+
const chunks = [];
|
|
108
|
+
res.on("data", (chunk) => chunks.push(chunk));
|
|
109
|
+
res.on("end", () => {
|
|
110
|
+
const respBody = Buffer.concat(chunks).toString("utf-8");
|
|
111
|
+
const status = res.statusCode ?? 0;
|
|
112
|
+
if (status >= 400) {
|
|
113
|
+
reject(parseRESTError(status, respBody));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (respBody.length > 0) {
|
|
117
|
+
try {
|
|
118
|
+
resolve(JSON.parse(respBody));
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
reject(new Error(`Invalid JSON response: ${respBody}`));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
resolve(undefined);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
req.on("error", reject);
|
|
130
|
+
if (body) {
|
|
131
|
+
req.write(body);
|
|
132
|
+
}
|
|
133
|
+
req.end();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Parse an error response body into a RESTError. */
|
|
138
|
+
function parseRESTError(statusCode, body) {
|
|
139
|
+
try {
|
|
140
|
+
const parsed = JSON.parse(body);
|
|
141
|
+
if (parsed.error) {
|
|
142
|
+
return new RESTError(statusCode, parsed.error);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Not JSON; use raw body as message
|
|
147
|
+
}
|
|
148
|
+
return new RESTError(statusCode, body);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=rest.js.map
|
package/dist/rest.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@layr8/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Layr8 DIDComm Agent SDK for Node.js",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": ["dist"],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"test": "vitest run",
|
|
19
|
+
"test:watch": "vitest",
|
|
20
|
+
"lint": "tsc --noEmit",
|
|
21
|
+
"test:integration": "tsx tests/integration-test.ts"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=20"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"ws": "^8.18.0",
|
|
28
|
+
"uuid": "^11.1.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^22.0.0",
|
|
32
|
+
"@types/ws": "^8.5.0",
|
|
33
|
+
"@types/uuid": "^10.0.0",
|
|
34
|
+
"typescript": "^5.7.0",
|
|
35
|
+
"vitest": "^3.0.0"
|
|
36
|
+
},
|
|
37
|
+
"license": "MIT"
|
|
38
|
+
}
|