@kedaruma/revlm-client 1.0.14 → 1.0.22
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.d.mts +3 -6
- package/dist/index.d.ts +3 -6
- package/dist/index.js +12 -48
- package/dist/index.mjs +12 -48
- package/package.json +1 -3
package/dist/index.d.mts
CHANGED
|
@@ -5,6 +5,9 @@ import { Timestamp, Long } from 'bson';
|
|
|
5
5
|
type RevlmErrorResponse = {
|
|
6
6
|
ok: false;
|
|
7
7
|
error: string;
|
|
8
|
+
code?: number;
|
|
9
|
+
status?: number;
|
|
10
|
+
reason?: string;
|
|
8
11
|
};
|
|
9
12
|
type LoginSuccess = {
|
|
10
13
|
ok: true;
|
|
@@ -174,11 +177,6 @@ type RevlmOptions = {
|
|
|
174
177
|
provisionalAuthDomain?: string;
|
|
175
178
|
autoSetToken?: boolean;
|
|
176
179
|
autoRefreshOn401?: boolean;
|
|
177
|
-
sigv4SecretKey?: string;
|
|
178
|
-
sigv4AccessKey?: string;
|
|
179
|
-
sigv4Region?: string;
|
|
180
|
-
sigv4Service?: string;
|
|
181
|
-
sigv4Enabled?: boolean;
|
|
182
180
|
};
|
|
183
181
|
type RevlmResponse<T = any> = {
|
|
184
182
|
ok: boolean;
|
|
@@ -198,7 +196,6 @@ declare class Revlm {
|
|
|
198
196
|
private provisionalAuthDomain;
|
|
199
197
|
private autoSetToken;
|
|
200
198
|
private autoRefreshOn401;
|
|
201
|
-
private sigv4Signer;
|
|
202
199
|
constructor(baseUrl: string, opts?: RevlmOptions);
|
|
203
200
|
setToken(token: string): void;
|
|
204
201
|
getToken(): string | undefined;
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ import { Timestamp, Long } from 'bson';
|
|
|
5
5
|
type RevlmErrorResponse = {
|
|
6
6
|
ok: false;
|
|
7
7
|
error: string;
|
|
8
|
+
code?: number;
|
|
9
|
+
status?: number;
|
|
10
|
+
reason?: string;
|
|
8
11
|
};
|
|
9
12
|
type LoginSuccess = {
|
|
10
13
|
ok: true;
|
|
@@ -174,11 +177,6 @@ type RevlmOptions = {
|
|
|
174
177
|
provisionalAuthDomain?: string;
|
|
175
178
|
autoSetToken?: boolean;
|
|
176
179
|
autoRefreshOn401?: boolean;
|
|
177
|
-
sigv4SecretKey?: string;
|
|
178
|
-
sigv4AccessKey?: string;
|
|
179
|
-
sigv4Region?: string;
|
|
180
|
-
sigv4Service?: string;
|
|
181
|
-
sigv4Enabled?: boolean;
|
|
182
180
|
};
|
|
183
181
|
type RevlmResponse<T = any> = {
|
|
184
182
|
ok: boolean;
|
|
@@ -198,7 +196,6 @@ declare class Revlm {
|
|
|
198
196
|
private provisionalAuthDomain;
|
|
199
197
|
private autoSetToken;
|
|
200
198
|
private autoRefreshOn401;
|
|
201
|
-
private sigv4Signer;
|
|
202
199
|
constructor(baseUrl: string, opts?: RevlmOptions);
|
|
203
200
|
setToken(token: string): void;
|
|
204
201
|
getToken(): string | undefined;
|
package/dist/index.js
CHANGED
|
@@ -46,8 +46,6 @@ module.exports = __toCommonJS(index_exports);
|
|
|
46
46
|
// src/Revlm.ts
|
|
47
47
|
var import_bson = require("bson");
|
|
48
48
|
var import_revlm_shared = require("@kedaruma/revlm-shared");
|
|
49
|
-
var import_signature_v4 = require("@aws-sdk/signature-v4");
|
|
50
|
-
var import_sha256_js = require("@aws-crypto/sha256-js");
|
|
51
49
|
|
|
52
50
|
// src/MdbCollection.ts
|
|
53
51
|
var MdbCollection = class {
|
|
@@ -158,7 +156,6 @@ var Revlm = class {
|
|
|
158
156
|
provisionalAuthDomain;
|
|
159
157
|
autoSetToken;
|
|
160
158
|
autoRefreshOn401;
|
|
161
|
-
sigv4Signer;
|
|
162
159
|
constructor(baseUrl, opts = {}) {
|
|
163
160
|
if (!baseUrl) throw new Error("baseUrl is required");
|
|
164
161
|
this.baseUrl = baseUrl.replace(/\/$/, "");
|
|
@@ -169,24 +166,6 @@ var Revlm = class {
|
|
|
169
166
|
this.provisionalAuthDomain = opts.provisionalAuthDomain || "";
|
|
170
167
|
this.autoSetToken = opts.autoSetToken ?? true;
|
|
171
168
|
this.autoRefreshOn401 = opts.autoRefreshOn401 || false;
|
|
172
|
-
const sigv4SecretKey = opts.sigv4SecretKey || process.env.REVLM_SIGV4_SECRET_KEY;
|
|
173
|
-
const sigv4AccessKey = opts.sigv4AccessKey || process.env.REVLM_SIGV4_ACCESS_KEY || "revlm-access";
|
|
174
|
-
const sigv4Region = opts.sigv4Region || process.env.REVLM_SIGV4_REGION || "revlm";
|
|
175
|
-
const sigv4Service = opts.sigv4Service || process.env.REVLM_SIGV4_SERVICE || "revlm";
|
|
176
|
-
const sigv4Enabled = opts.sigv4Enabled ?? true;
|
|
177
|
-
if (sigv4Enabled) {
|
|
178
|
-
if (!sigv4SecretKey) {
|
|
179
|
-
throw new Error("SigV4 is enabled but REVLM_SIGV4_SECRET_KEY or opts.sigv4SecretKey is not provided");
|
|
180
|
-
}
|
|
181
|
-
this.sigv4Signer = new import_signature_v4.SignatureV4({
|
|
182
|
-
credentials: { accessKeyId: sigv4AccessKey, secretAccessKey: sigv4SecretKey },
|
|
183
|
-
region: sigv4Region,
|
|
184
|
-
service: sigv4Service,
|
|
185
|
-
sha256: import_sha256_js.Sha256
|
|
186
|
-
});
|
|
187
|
-
} else {
|
|
188
|
-
this.sigv4Signer = null;
|
|
189
|
-
}
|
|
190
169
|
if (!this.fetchImpl) {
|
|
191
170
|
throw new Error("No fetch implementation available. Provide fetchImpl in options or run in Node 18+ with global fetch.");
|
|
192
171
|
}
|
|
@@ -259,32 +238,8 @@ var Revlm = class {
|
|
|
259
238
|
const pathname = path.startsWith("http") ? new URL(path).pathname : path;
|
|
260
239
|
return pathname.includes("/login") || pathname.includes("/provisional-login") || pathname.includes("/refresh-token") || pathname.includes("/verify-token");
|
|
261
240
|
}
|
|
262
|
-
async signIfNeeded(
|
|
263
|
-
|
|
264
|
-
return { signedUrl: url, signedHeaders: headers };
|
|
265
|
-
}
|
|
266
|
-
const u = new URL(url);
|
|
267
|
-
const signingHeaders = {
|
|
268
|
-
host: u.host,
|
|
269
|
-
...headers
|
|
270
|
-
};
|
|
271
|
-
const reqToSign = {
|
|
272
|
-
method,
|
|
273
|
-
protocol: u.protocol,
|
|
274
|
-
path: u.pathname + (u.search || ""),
|
|
275
|
-
hostname: u.hostname,
|
|
276
|
-
headers: signingHeaders,
|
|
277
|
-
body: body ?? ""
|
|
278
|
-
};
|
|
279
|
-
if (u.port) {
|
|
280
|
-
reqToSign.port = Number(u.port);
|
|
281
|
-
}
|
|
282
|
-
const signed = await this.sigv4Signer.sign(reqToSign);
|
|
283
|
-
const signedHeaders = {};
|
|
284
|
-
Object.entries(signed.headers || {}).forEach(([k, v]) => {
|
|
285
|
-
signedHeaders[k] = Array.isArray(v) ? v.join(",") : String(v);
|
|
286
|
-
});
|
|
287
|
-
return { signedUrl: url, signedHeaders };
|
|
241
|
+
async signIfNeeded(_url, _method, headers, _body) {
|
|
242
|
+
return { signedUrl: _url, signedHeaders: headers };
|
|
288
243
|
}
|
|
289
244
|
async requestWithRetry(path, method = "POST", body, opts = { allowAuthRetry: false, retrying: false }) {
|
|
290
245
|
const { allowAuthRetry, retrying } = opts;
|
|
@@ -431,9 +386,18 @@ var App = class {
|
|
|
431
386
|
throw new Error("Unsupported credentials type");
|
|
432
387
|
}
|
|
433
388
|
const res = await this.__revlm.login(cred.email, cred.password);
|
|
389
|
+
console.log("### App:login res:", res);
|
|
434
390
|
if (!res || !res.ok || !res.token) {
|
|
435
391
|
const errMsg = res && !res.ok ? res.error : "login failed";
|
|
436
|
-
|
|
392
|
+
const err = new Error(errMsg);
|
|
393
|
+
const anyRes = res;
|
|
394
|
+
if (anyRes && typeof anyRes === "object") {
|
|
395
|
+
if (anyRes.code !== void 0) err.code = anyRes.code;
|
|
396
|
+
if (anyRes.status !== void 0) err.status = anyRes.status;
|
|
397
|
+
if (anyRes.reason !== void 0) err.reason = anyRes.reason;
|
|
398
|
+
err.response = anyRes;
|
|
399
|
+
}
|
|
400
|
+
throw err;
|
|
437
401
|
}
|
|
438
402
|
this.__revlm.setToken(res.token);
|
|
439
403
|
const user = new User(this, res.token, res.user);
|
package/dist/index.mjs
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// src/Revlm.ts
|
|
2
2
|
import { EJSON } from "bson";
|
|
3
3
|
import { AuthClient } from "@kedaruma/revlm-shared";
|
|
4
|
-
import { SignatureV4 } from "@aws-sdk/signature-v4";
|
|
5
|
-
import { Sha256 } from "@aws-crypto/sha256-js";
|
|
6
4
|
|
|
7
5
|
// src/MdbCollection.ts
|
|
8
6
|
var MdbCollection = class {
|
|
@@ -113,7 +111,6 @@ var Revlm = class {
|
|
|
113
111
|
provisionalAuthDomain;
|
|
114
112
|
autoSetToken;
|
|
115
113
|
autoRefreshOn401;
|
|
116
|
-
sigv4Signer;
|
|
117
114
|
constructor(baseUrl, opts = {}) {
|
|
118
115
|
if (!baseUrl) throw new Error("baseUrl is required");
|
|
119
116
|
this.baseUrl = baseUrl.replace(/\/$/, "");
|
|
@@ -124,24 +121,6 @@ var Revlm = class {
|
|
|
124
121
|
this.provisionalAuthDomain = opts.provisionalAuthDomain || "";
|
|
125
122
|
this.autoSetToken = opts.autoSetToken ?? true;
|
|
126
123
|
this.autoRefreshOn401 = opts.autoRefreshOn401 || false;
|
|
127
|
-
const sigv4SecretKey = opts.sigv4SecretKey || process.env.REVLM_SIGV4_SECRET_KEY;
|
|
128
|
-
const sigv4AccessKey = opts.sigv4AccessKey || process.env.REVLM_SIGV4_ACCESS_KEY || "revlm-access";
|
|
129
|
-
const sigv4Region = opts.sigv4Region || process.env.REVLM_SIGV4_REGION || "revlm";
|
|
130
|
-
const sigv4Service = opts.sigv4Service || process.env.REVLM_SIGV4_SERVICE || "revlm";
|
|
131
|
-
const sigv4Enabled = opts.sigv4Enabled ?? true;
|
|
132
|
-
if (sigv4Enabled) {
|
|
133
|
-
if (!sigv4SecretKey) {
|
|
134
|
-
throw new Error("SigV4 is enabled but REVLM_SIGV4_SECRET_KEY or opts.sigv4SecretKey is not provided");
|
|
135
|
-
}
|
|
136
|
-
this.sigv4Signer = new SignatureV4({
|
|
137
|
-
credentials: { accessKeyId: sigv4AccessKey, secretAccessKey: sigv4SecretKey },
|
|
138
|
-
region: sigv4Region,
|
|
139
|
-
service: sigv4Service,
|
|
140
|
-
sha256: Sha256
|
|
141
|
-
});
|
|
142
|
-
} else {
|
|
143
|
-
this.sigv4Signer = null;
|
|
144
|
-
}
|
|
145
124
|
if (!this.fetchImpl) {
|
|
146
125
|
throw new Error("No fetch implementation available. Provide fetchImpl in options or run in Node 18+ with global fetch.");
|
|
147
126
|
}
|
|
@@ -214,32 +193,8 @@ var Revlm = class {
|
|
|
214
193
|
const pathname = path.startsWith("http") ? new URL(path).pathname : path;
|
|
215
194
|
return pathname.includes("/login") || pathname.includes("/provisional-login") || pathname.includes("/refresh-token") || pathname.includes("/verify-token");
|
|
216
195
|
}
|
|
217
|
-
async signIfNeeded(
|
|
218
|
-
|
|
219
|
-
return { signedUrl: url, signedHeaders: headers };
|
|
220
|
-
}
|
|
221
|
-
const u = new URL(url);
|
|
222
|
-
const signingHeaders = {
|
|
223
|
-
host: u.host,
|
|
224
|
-
...headers
|
|
225
|
-
};
|
|
226
|
-
const reqToSign = {
|
|
227
|
-
method,
|
|
228
|
-
protocol: u.protocol,
|
|
229
|
-
path: u.pathname + (u.search || ""),
|
|
230
|
-
hostname: u.hostname,
|
|
231
|
-
headers: signingHeaders,
|
|
232
|
-
body: body ?? ""
|
|
233
|
-
};
|
|
234
|
-
if (u.port) {
|
|
235
|
-
reqToSign.port = Number(u.port);
|
|
236
|
-
}
|
|
237
|
-
const signed = await this.sigv4Signer.sign(reqToSign);
|
|
238
|
-
const signedHeaders = {};
|
|
239
|
-
Object.entries(signed.headers || {}).forEach(([k, v]) => {
|
|
240
|
-
signedHeaders[k] = Array.isArray(v) ? v.join(",") : String(v);
|
|
241
|
-
});
|
|
242
|
-
return { signedUrl: url, signedHeaders };
|
|
196
|
+
async signIfNeeded(_url, _method, headers, _body) {
|
|
197
|
+
return { signedUrl: _url, signedHeaders: headers };
|
|
243
198
|
}
|
|
244
199
|
async requestWithRetry(path, method = "POST", body, opts = { allowAuthRetry: false, retrying: false }) {
|
|
245
200
|
const { allowAuthRetry, retrying } = opts;
|
|
@@ -386,9 +341,18 @@ var App = class {
|
|
|
386
341
|
throw new Error("Unsupported credentials type");
|
|
387
342
|
}
|
|
388
343
|
const res = await this.__revlm.login(cred.email, cred.password);
|
|
344
|
+
console.log("### App:login res:", res);
|
|
389
345
|
if (!res || !res.ok || !res.token) {
|
|
390
346
|
const errMsg = res && !res.ok ? res.error : "login failed";
|
|
391
|
-
|
|
347
|
+
const err = new Error(errMsg);
|
|
348
|
+
const anyRes = res;
|
|
349
|
+
if (anyRes && typeof anyRes === "object") {
|
|
350
|
+
if (anyRes.code !== void 0) err.code = anyRes.code;
|
|
351
|
+
if (anyRes.status !== void 0) err.status = anyRes.status;
|
|
352
|
+
if (anyRes.reason !== void 0) err.reason = anyRes.reason;
|
|
353
|
+
err.response = anyRes;
|
|
354
|
+
}
|
|
355
|
+
throw err;
|
|
392
356
|
}
|
|
393
357
|
this.__revlm.setToken(res.token);
|
|
394
358
|
const user = new User(this, res.token, res.user);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kedaruma/revlm-client",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.22",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "TypeScript client SDK for talking to the Revlm server replacement for MongoDB Realm.",
|
|
6
6
|
"keywords": [
|
|
@@ -36,8 +36,6 @@
|
|
|
36
36
|
"access": "public"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@aws-sdk/signature-v4": "^3.374.0",
|
|
40
|
-
"@aws-crypto/sha256-js": "^5.2.0",
|
|
41
39
|
"bson": "^6.10.4",
|
|
42
40
|
"dotenv": "^17.2.3",
|
|
43
41
|
"@kedaruma/revlm-shared": "1.0.5"
|