@otonoma/paranet-client 2.14.1-rc.8 → 2.14.2-rc.6
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/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +25 -3
- package/package.json +3 -2
- package/src/client.ts +29 -3
package/dist/client.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { HealthClient } from "./proto/grpc/health/v1/health.client";
|
|
|
9
9
|
export interface ParanetClientInit {
|
|
10
10
|
endpoint: string;
|
|
11
11
|
actorId?: string;
|
|
12
|
+
insecure?: boolean;
|
|
12
13
|
}
|
|
13
14
|
export interface PncpClientInit {
|
|
14
15
|
endpoint: string;
|
|
@@ -16,6 +17,7 @@ export interface PncpClientInit {
|
|
|
16
17
|
actorVersion?: string;
|
|
17
18
|
token?: string;
|
|
18
19
|
refreshToken?: string;
|
|
20
|
+
insecure?: boolean;
|
|
19
21
|
fetch?: any;
|
|
20
22
|
}
|
|
21
23
|
export declare class PncpClient {
|
|
@@ -104,6 +106,7 @@ export declare abstract class BaseClient {
|
|
|
104
106
|
protected refreshToken?: string;
|
|
105
107
|
protected tokenExp?: Date;
|
|
106
108
|
protected tokenCb?: (token: string, refresh: string) => void;
|
|
109
|
+
protected insecure: boolean;
|
|
107
110
|
constructor(init: ParanetClientInit);
|
|
108
111
|
getEndpoint(): string;
|
|
109
112
|
login(secret: LoginCredentials): Promise<TokenResponse>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EAGb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,eAAe,EAAE,mBAAmB,EAAuB,MAAM,oBAAoB,CAAC;AAE7G,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAY,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG7G,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,qBAAa,UAAU;IACrB,SAAS,EAAE,qBAAqB,CAAC;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;gBAEvC,IAAI,EAAE,cAAc;IAuBnB,WAAW,CAAC,OAAO,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnD,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BxD,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAK7D,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ3D,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IAkCpE,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAMpE,YAAY,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,YAAY;IAKhF,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,uBAAuB;IAI7D,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IA2BtD,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;IAe3C,MAAM;IAIN,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAY1C,UAAU,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI;IAIvD,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAIjD,YAAY,IAAI,OAAO;IAW9B,WAAW,IAAI,WAAW;IAOpB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAU9I;AAED,8BAAsB,eAAe,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,GAAG,IAAI;IAC1G,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAQ;IAEpC,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,EAAE,eAAe,CAAC;KACxB,CAAC;IAEF,SAAS,aAAa,MAAM,EAAE,UAAU;IAIxC,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAE1C,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAK3D,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI;IAK9C,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAKzD,YAAY,CAAC,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAKjC,WAAW,CAAC,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAKhC,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAM/B,OAAO;IAIP,UAAU;IAOjB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,SAAM;CAqExD;AAED,qBAAa,YAAa,SAAQ,eAAe,CAAC,mBAAmB,EAAE,YAAY,CAAC;IAClF,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;gBACV,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;IAMxE,SAAS,CAAC,UAAU,IAAI,gBAAgB,CAAC,mBAAmB,EAAE,YAAY,CAAC;IAW3E,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI;CAIvD;AAED,UAAU,gBAAgB,CAAC,IAAI,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM;IACjE,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,KAAK,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9F,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,qBAAa,uBAAwB,SAAQ,eAAe,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,yBAAyB,CAAC;IAC9H,IAAI,EAAE,kBAAkB,CAAC;gBACb,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB;IAKxD,SAAS,CAAC,UAAU,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;IAOvF,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,yBAAyB,GAAG,mBAAmB,GAAG,IAAI;CAI3E;AAED,8BAAsB,UAAU;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC1B,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAEhB,IAAI,EAAE,iBAAiB;IAM5B,WAAW,IAAI,MAAM;IAKf,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBvD,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC;IAY3C,MAAM;IAIN,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAY1C,UAAU,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI;IAIvD,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAIjD,YAAY,IAAI,OAAO;cAWd,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;cAKhD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;cAKnF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;cAKhC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqCpH,UAAU,IAAI,GAAG;CAMlB;AAED,qBAAa,oBAAqB,SAAQ,UAAU;gBACtC,IAAI,EAAE,iBAAiB;IAI5B,eAAe,IAAI,MAAM;IAOnB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIvC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAY5D,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB5E,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAWhF;AAED,qBAAa,SAAU,SAAQ,UAAU;gBAC3B,IAAI,EAAE,iBAAiB;IAItB,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;CAG3C;AAED,MAAM,WAAW,gBAAgB;IAE/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;CACpC;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAUF,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;QAC1B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAA;CACF"}
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Wrapper client around the paranet broker and data service.
|
|
2
|
+
import * as undici from 'undici';
|
|
2
3
|
import { BrokerClient } from "./proto/broker.grpc.client";
|
|
3
4
|
import { ConversationMembership } from "./proto/identifiers";
|
|
4
5
|
import { SkillMatchStrategy, PncpMessageKind, } from "./proto/pncp";
|
|
@@ -13,11 +14,19 @@ export class PncpClient {
|
|
|
13
14
|
this.actorId = init.actorId;
|
|
14
15
|
this.endpoint = init.endpoint;
|
|
15
16
|
this.actorVersion = init.actorVersion;
|
|
17
|
+
var fetchFn = init.fetch;
|
|
18
|
+
if (!fetchFn && init.insecure && init.endpoint.startsWith("https")) {
|
|
19
|
+
fetchFn = (request, options) => {
|
|
20
|
+
var fetchOptions = options || {};
|
|
21
|
+
fetchOptions.dispatcher = new undici.Agent({ connect: { rejectUnauthorized: false } });
|
|
22
|
+
return undici.fetch(request, fetchOptions);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
16
25
|
// TODO: Consider passing in transport config.
|
|
17
26
|
this.transport = new GrpcWebFetchTransport({
|
|
18
27
|
baseUrl: init.endpoint,
|
|
19
28
|
format: "binary",
|
|
20
|
-
fetch:
|
|
29
|
+
fetch: fetchFn,
|
|
21
30
|
// TODO: Consider other methods here.
|
|
22
31
|
});
|
|
23
32
|
this.inner = new BrokerClient(this.transport);
|
|
@@ -125,6 +134,9 @@ export class PncpClient {
|
|
|
125
134
|
case "password":
|
|
126
135
|
secret = { oneofKind: "password", password: creds.secret };
|
|
127
136
|
break;
|
|
137
|
+
case "jwt":
|
|
138
|
+
secret = { oneofKind: "jwt", jwt: creds.secret };
|
|
139
|
+
break;
|
|
128
140
|
default:
|
|
129
141
|
throw new Error("Invalid creds type");
|
|
130
142
|
}
|
|
@@ -349,6 +361,7 @@ export class BaseClient {
|
|
|
349
361
|
constructor(init) {
|
|
350
362
|
this.endpoint = cleanUrl(init.endpoint);
|
|
351
363
|
this.actorId = init.actorId;
|
|
364
|
+
this.insecure = init.insecure ?? false;
|
|
352
365
|
}
|
|
353
366
|
getEndpoint() {
|
|
354
367
|
return this.endpoint;
|
|
@@ -422,14 +435,23 @@ export class BaseClient {
|
|
|
422
435
|
}
|
|
423
436
|
async fetch(path, method, body, headers) {
|
|
424
437
|
let url = `${this.endpoint}/${path}`;
|
|
425
|
-
|
|
438
|
+
// Build fetch options, with optional TLS bypass for Node.js
|
|
439
|
+
let fetchOptions = {
|
|
426
440
|
method,
|
|
427
441
|
body,
|
|
428
442
|
headers: {
|
|
429
443
|
...(headers || {}),
|
|
430
444
|
...this.getHeaders(),
|
|
431
445
|
},
|
|
432
|
-
}
|
|
446
|
+
};
|
|
447
|
+
// For Node.js: bypass certificate verification if insecure mode is enabled
|
|
448
|
+
// Must use undici.fetch (not global fetch) for dispatcher option to work
|
|
449
|
+
let fetchFn = fetch;
|
|
450
|
+
if (this.insecure && typeof globalThis.process !== 'undefined' && globalThis.process?.versions?.node) {
|
|
451
|
+
fetchOptions.dispatcher = new undici.Agent({ connect: { rejectUnauthorized: false } });
|
|
452
|
+
fetchFn = undici.fetch;
|
|
453
|
+
}
|
|
454
|
+
const mkFetch = () => fetchFn(url, fetchOptions);
|
|
433
455
|
let response = await mkFetch();
|
|
434
456
|
if (response.status == 401) {
|
|
435
457
|
await this.refreshAuth();
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "git",
|
|
5
5
|
"url": "git+https://github.com/otonoma/paranet-broker.git"
|
|
6
6
|
},
|
|
7
|
-
"version": "2.14.
|
|
7
|
+
"version": "2.14.2-rc.6",
|
|
8
8
|
"description": "",
|
|
9
9
|
"license": "SEE LICENSE IN LICENSE",
|
|
10
10
|
"author": "otonoma",
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
"@protobuf-ts/grpcweb-transport": "^2.11.1",
|
|
23
23
|
"@protobuf-ts/runtime": "^2.11.1",
|
|
24
24
|
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
|
25
|
-
"jwt-decode": "^4.0.0"
|
|
25
|
+
"jwt-decode": "^4.0.0",
|
|
26
|
+
"undici": "^6.27.0"
|
|
26
27
|
},
|
|
27
28
|
"devDependencies": {
|
|
28
29
|
"@protobuf-ts/plugin": "^2.9.4",
|
package/src/client.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Wrapper client around the paranet broker and data service.
|
|
2
2
|
|
|
3
|
+
import * as undici from 'undici';
|
|
3
4
|
import { BrokerClient } from "./proto/broker.grpc.client";
|
|
4
5
|
import { ConversationId, ConversationMembership } from "./proto/identifiers";
|
|
5
6
|
import {
|
|
@@ -24,6 +25,7 @@ import { HealthCheckRequest, HealthCheckResponse_ServingStatus } from "./proto/g
|
|
|
24
25
|
export interface ParanetClientInit {
|
|
25
26
|
endpoint: string;
|
|
26
27
|
actorId?: string;
|
|
28
|
+
insecure?: boolean;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
export interface PncpClientInit {
|
|
@@ -32,6 +34,7 @@ export interface PncpClientInit {
|
|
|
32
34
|
actorVersion?: string;
|
|
33
35
|
token?: string;
|
|
34
36
|
refreshToken?: string;
|
|
37
|
+
insecure?: boolean;
|
|
35
38
|
// Allows overriding the fetch implementation, needed for non-web UIs that don't provide
|
|
36
39
|
// a complete fetch implementation by default (e.g. react-native).
|
|
37
40
|
fetch?: any;
|
|
@@ -53,11 +56,19 @@ export class PncpClient {
|
|
|
53
56
|
this.actorId = init.actorId;
|
|
54
57
|
this.endpoint = init.endpoint;
|
|
55
58
|
this.actorVersion = init.actorVersion;
|
|
59
|
+
var fetchFn = init.fetch;
|
|
60
|
+
if (!fetchFn && init.insecure && init.endpoint.startsWith("https")) {
|
|
61
|
+
fetchFn = (request: any, options?: object) => {
|
|
62
|
+
var fetchOptions: undici.RequestInit = options||{};
|
|
63
|
+
fetchOptions.dispatcher = new undici.Agent({ connect: { rejectUnauthorized: false } });
|
|
64
|
+
return undici.fetch(request, fetchOptions);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
56
67
|
// TODO: Consider passing in transport config.
|
|
57
68
|
this.transport = new GrpcWebFetchTransport({
|
|
58
69
|
baseUrl: init.endpoint,
|
|
59
70
|
format: "binary",
|
|
60
|
-
fetch:
|
|
71
|
+
fetch: fetchFn,
|
|
61
72
|
// TODO: Consider other methods here.
|
|
62
73
|
});
|
|
63
74
|
this.inner = new BrokerClient(this.transport);
|
|
@@ -174,6 +185,7 @@ export class PncpClient {
|
|
|
174
185
|
case "token":
|
|
175
186
|
secret = { oneofKind: "token", token: creds.secret }; break;
|
|
176
187
|
case "password": secret = { oneofKind: "password", password: creds.secret }; break;
|
|
188
|
+
case "jwt": secret = { oneofKind: "jwt", jwt: creds.secret }; break;
|
|
177
189
|
default:
|
|
178
190
|
throw new Error("Invalid creds type");
|
|
179
191
|
}
|
|
@@ -455,10 +467,12 @@ export abstract class BaseClient {
|
|
|
455
467
|
protected refreshToken?: string;
|
|
456
468
|
protected tokenExp?: Date;
|
|
457
469
|
protected tokenCb?: (token: string, refresh: string) => void;
|
|
470
|
+
protected insecure: boolean;
|
|
458
471
|
|
|
459
472
|
constructor(init: ParanetClientInit) {
|
|
460
473
|
this.endpoint = cleanUrl(init.endpoint);
|
|
461
474
|
this.actorId = init.actorId;
|
|
475
|
+
this.insecure = init.insecure ?? false;
|
|
462
476
|
}
|
|
463
477
|
|
|
464
478
|
public getEndpoint(): string {
|
|
@@ -552,14 +566,26 @@ export abstract class BaseClient {
|
|
|
552
566
|
|
|
553
567
|
protected async fetch(path: string, method: string, body?: any, headers?: Record<string, string>): Promise<Response> {
|
|
554
568
|
let url = `${this.endpoint}/${path}`;
|
|
555
|
-
|
|
569
|
+
|
|
570
|
+
// Build fetch options, with optional TLS bypass for Node.js
|
|
571
|
+
let fetchOptions: RequestInit & { dispatcher?: any } = {
|
|
556
572
|
method,
|
|
557
573
|
body,
|
|
558
574
|
headers: {
|
|
559
575
|
...(headers || {}),
|
|
560
576
|
...this.getHeaders(),
|
|
561
577
|
},
|
|
562
|
-
}
|
|
578
|
+
};
|
|
579
|
+
|
|
580
|
+
// For Node.js: bypass certificate verification if insecure mode is enabled
|
|
581
|
+
// Must use undici.fetch (not global fetch) for dispatcher option to work
|
|
582
|
+
let fetchFn: any = fetch;
|
|
583
|
+
if (this.insecure && typeof globalThis.process !== 'undefined' && globalThis.process?.versions?.node) {
|
|
584
|
+
fetchOptions.dispatcher = new undici.Agent({ connect: { rejectUnauthorized: false } });
|
|
585
|
+
fetchFn = undici.fetch;
|
|
586
|
+
}
|
|
587
|
+
const mkFetch = () => fetchFn(url, fetchOptions);
|
|
588
|
+
|
|
563
589
|
let response = await mkFetch();
|
|
564
590
|
if (response.status == 401) {
|
|
565
591
|
await this.refreshAuth();
|