@lightsparkdev/core 0.2.1 → 0.2.2
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/CHANGELOG.md +6 -0
- package/dist/chunk-23X5L5S3.js +604 -0
- package/dist/chunk-4OZ5E62P.js +608 -0
- package/dist/chunk-5FD46UVI.js +600 -0
- package/dist/chunk-BAQMCJ7C.js +630 -0
- package/dist/chunk-GFTKZSHK.js +627 -0
- package/dist/chunk-I3HKDOEE.js +627 -0
- package/dist/chunk-J6LSW6XO.js +601 -0
- package/dist/chunk-JUD4MOOQ.js +608 -0
- package/dist/chunk-KX6HH6CX.js +629 -0
- package/dist/chunk-MZCDWVLH.js +634 -0
- package/dist/chunk-NY3BK66J.js +624 -0
- package/dist/chunk-Q7UUXZNC.js +26 -0
- package/dist/chunk-WT2HYC6Q.js +601 -0
- package/dist/chunk-YYVOX4YM.js +600 -0
- package/dist/chunk-ZUIUADXH.js +616 -0
- package/dist/crypto-rn-2BYOHLMG.js +72 -0
- package/dist/crypto-rn-2YV53C3B.js +72 -0
- package/dist/crypto-rn-3HFXYG7I.js +75 -0
- package/dist/crypto-rn-3HLWLVZS.js +76 -0
- package/dist/crypto-rn-3N3JTBLE.js +83 -0
- package/dist/crypto-rn-3OEMMMOD.js +74 -0
- package/dist/crypto-rn-5EZSRY5Y.js +82 -0
- package/dist/crypto-rn-5KM2YVOI.js +82 -0
- package/dist/crypto-rn-6335R2CU.js +80 -0
- package/dist/crypto-rn-6ZHSL7CX.js +72 -0
- package/dist/crypto-rn-7DWXMO2Q.js +75 -0
- package/dist/crypto-rn-7GTI374I.js +81 -0
- package/dist/crypto-rn-AXDY3LDG.js +124 -0
- package/dist/crypto-rn-BZ2KZ2YR.js +68 -0
- package/dist/crypto-rn-CAPL7MYC.js +80 -0
- package/dist/crypto-rn-CBAKEB7C.js +68 -0
- package/dist/crypto-rn-CBWHV2F5.js +82 -0
- package/dist/crypto-rn-CS36MQ4X.js +77 -0
- package/dist/crypto-rn-E4RZNGIB.js +82 -0
- package/dist/crypto-rn-H4NIT5CT.js +70 -0
- package/dist/crypto-rn-IAC27WLZ.js +74 -0
- package/dist/crypto-rn-LLY6FCWE.js +82 -0
- package/dist/crypto-rn-MOWVVG3L.js +78 -0
- package/dist/crypto-rn-OAPLHNM5.js +73 -0
- package/dist/crypto-rn-PVAG5TVH.js +80 -0
- package/dist/crypto-rn-QLVBL5DI.js +75 -0
- package/dist/crypto-rn-TBKXR3SR.js +68 -0
- package/dist/crypto-rn-TSQJA6A3.js +81 -0
- package/dist/crypto-rn-U3XEJXIM.js +77 -0
- package/dist/crypto-rn-UHTZEVAR.js +74 -0
- package/dist/crypto-rn-V3ZNQSFI.js +79 -0
- package/dist/crypto-rn-VGNP6VZW.js +75 -0
- package/dist/crypto-rn-XMYCUEGV.js +72 -0
- package/dist/crypto-rn-YPOTC5RI.js +73 -0
- package/dist/index.cjs +91 -114
- package/dist/index.d.ts +30 -17
- package/dist/index.js +90 -104
- package/package.json +2 -1
- package/src/crypto/NodeKeyCache.ts +18 -15
- package/src/crypto/crypto.ts +72 -78
- package/src/requester/Requester.ts +9 -13
- package/src/utils/base64.ts +51 -2
package/dist/index.cjs
CHANGED
|
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
+
DefaultCrypto: () => DefaultCrypto,
|
|
33
34
|
LightsparkAuthException: () => LightsparkAuthException_default,
|
|
34
35
|
LightsparkException: () => LightsparkException_default,
|
|
35
36
|
LightsparkSigningException: () => LightsparkSigningException_default,
|
|
@@ -41,19 +42,9 @@ __export(src_exports, {
|
|
|
41
42
|
b64decode: () => b64decode,
|
|
42
43
|
b64encode: () => b64encode,
|
|
43
44
|
convertCurrencyAmount: () => convertCurrencyAmount,
|
|
44
|
-
decode: () => decode,
|
|
45
|
-
decrypt: () => decrypt,
|
|
46
|
-
decryptSecretWithNodePassword: () => decryptSecretWithNodePassword,
|
|
47
|
-
encrypt: () => encrypt,
|
|
48
|
-
encryptWithNodeKey: () => encryptWithNodeKey,
|
|
49
|
-
generateSigningKeyPair: () => generateSigningKeyPair,
|
|
50
|
-
getCrypto: () => getCrypto,
|
|
51
|
-
getNonce: () => getNonce,
|
|
52
45
|
isBrowser: () => isBrowser,
|
|
53
46
|
isNode: () => isNode,
|
|
54
47
|
isType: () => isType,
|
|
55
|
-
loadNodeEncryptionKey: () => loadNodeEncryptionKey,
|
|
56
|
-
serializeSigningKey: () => serializeSigningKey,
|
|
57
48
|
urlsafe_b64decode: () => urlsafe_b64decode
|
|
58
49
|
});
|
|
59
50
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -94,14 +85,44 @@ var StubAuthProvider = class {
|
|
|
94
85
|
};
|
|
95
86
|
|
|
96
87
|
// src/utils/base64.ts
|
|
88
|
+
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
89
|
+
var Base64 = {
|
|
90
|
+
btoa: (input = "") => {
|
|
91
|
+
let str = input;
|
|
92
|
+
let output = "";
|
|
93
|
+
for (let block = 0, charCode, i = 0, map = chars; str.charAt(i | 0) || (map = "=", i % 1); output += map.charAt(63 & block >> 8 - i % 1 * 8)) {
|
|
94
|
+
charCode = str.charCodeAt(i += 3 / 4);
|
|
95
|
+
if (charCode > 255) {
|
|
96
|
+
throw new Error(
|
|
97
|
+
"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range."
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
block = block << 8 | charCode;
|
|
101
|
+
}
|
|
102
|
+
return output;
|
|
103
|
+
},
|
|
104
|
+
atob: (input = "") => {
|
|
105
|
+
let str = input.replace(/=+$/, "");
|
|
106
|
+
let output = "";
|
|
107
|
+
if (str.length % 4 == 1) {
|
|
108
|
+
throw new Error(
|
|
109
|
+
"'atob' failed: The string to be decoded is not correctly encoded."
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
for (let bc = 0, bs = 0, buffer, i = 0; buffer = str.charAt(i++); ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {
|
|
113
|
+
buffer = chars.indexOf(buffer);
|
|
114
|
+
}
|
|
115
|
+
return output;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
97
118
|
var b64decode = (encoded) => {
|
|
98
|
-
return Uint8Array.from(atob(encoded), (c) => c.charCodeAt(0));
|
|
119
|
+
return Uint8Array.from(Base64.atob(encoded), (c) => c.charCodeAt(0));
|
|
99
120
|
};
|
|
100
121
|
var urlsafe_b64decode = (encoded) => {
|
|
101
122
|
return b64decode(encoded.replace(/_/g, "/").replace(/-/g, "+"));
|
|
102
123
|
};
|
|
103
124
|
var b64encode = (data) => {
|
|
104
|
-
return btoa(
|
|
125
|
+
return Base64.btoa(
|
|
105
126
|
String.fromCharCode.apply(null, Array.from(new Uint8Array(data)))
|
|
106
127
|
);
|
|
107
128
|
};
|
|
@@ -115,8 +136,7 @@ var LightsparkSigningException = class extends LightsparkException_default {
|
|
|
115
136
|
var LightsparkSigningException_default = LightsparkSigningException;
|
|
116
137
|
|
|
117
138
|
// src/crypto/crypto.ts
|
|
118
|
-
var
|
|
119
|
-
function getCrypto() {
|
|
139
|
+
var getCrypto = () => {
|
|
120
140
|
let cryptoImplPromise;
|
|
121
141
|
if (typeof crypto !== "undefined") {
|
|
122
142
|
cryptoImplPromise = Promise.resolve(crypto);
|
|
@@ -126,34 +146,26 @@ function getCrypto() {
|
|
|
126
146
|
});
|
|
127
147
|
}
|
|
128
148
|
return cryptoImplPromise;
|
|
129
|
-
}
|
|
130
|
-
var getRandomValues = async (arr) => {
|
|
131
|
-
if (typeof crypto !== "undefined") {
|
|
132
|
-
return crypto.getRandomValues(arr);
|
|
133
|
-
} else {
|
|
134
|
-
const cryptoImpl2 = await getCrypto();
|
|
135
|
-
return cryptoImpl2.getRandomValues(arr);
|
|
136
|
-
}
|
|
137
149
|
};
|
|
138
150
|
var getRandomValues32 = async (arr) => {
|
|
139
151
|
if (typeof crypto !== "undefined") {
|
|
140
152
|
return crypto.getRandomValues(arr);
|
|
141
153
|
} else {
|
|
142
|
-
const
|
|
143
|
-
return
|
|
154
|
+
const cryptoImpl = await getCrypto();
|
|
155
|
+
return cryptoImpl.getRandomValues(arr);
|
|
144
156
|
}
|
|
145
157
|
};
|
|
146
158
|
var deriveKey = async (password, salt, iterations, algorithm, bit_len) => {
|
|
147
159
|
const enc = new TextEncoder();
|
|
148
|
-
const
|
|
149
|
-
const password_key = await
|
|
160
|
+
const cryptoImpl = await getCrypto();
|
|
161
|
+
const password_key = await cryptoImpl.subtle.importKey(
|
|
150
162
|
"raw",
|
|
151
163
|
enc.encode(password),
|
|
152
164
|
"PBKDF2",
|
|
153
165
|
false,
|
|
154
166
|
["deriveBits", "deriveKey"]
|
|
155
167
|
);
|
|
156
|
-
const derived = await
|
|
168
|
+
const derived = await cryptoImpl.subtle.deriveBits(
|
|
157
169
|
{
|
|
158
170
|
name: "PBKDF2",
|
|
159
171
|
salt,
|
|
@@ -163,7 +175,7 @@ var deriveKey = async (password, salt, iterations, algorithm, bit_len) => {
|
|
|
163
175
|
password_key,
|
|
164
176
|
bit_len
|
|
165
177
|
);
|
|
166
|
-
const key = await
|
|
178
|
+
const key = await cryptoImpl.subtle.importKey(
|
|
167
179
|
"raw",
|
|
168
180
|
derived.slice(0, 32),
|
|
169
181
|
{ name: algorithm, length: 256 },
|
|
@@ -173,25 +185,6 @@ var deriveKey = async (password, salt, iterations, algorithm, bit_len) => {
|
|
|
173
185
|
const iv = derived.slice(32);
|
|
174
186
|
return [key, iv];
|
|
175
187
|
};
|
|
176
|
-
var encrypt = async (plaintext, password, salt) => {
|
|
177
|
-
if (!salt) {
|
|
178
|
-
salt = new Uint8Array(16);
|
|
179
|
-
getRandomValues(salt);
|
|
180
|
-
}
|
|
181
|
-
const [key, iv] = await deriveKey(password, salt, ITERATIONS, "AES-GCM", 352);
|
|
182
|
-
const cryptoImpl2 = await getCrypto();
|
|
183
|
-
const encrypted = new Uint8Array(
|
|
184
|
-
await cryptoImpl2.subtle.encrypt({ name: "AES-GCM", iv }, key, plaintext)
|
|
185
|
-
);
|
|
186
|
-
const output = new Uint8Array(salt.byteLength + encrypted.byteLength);
|
|
187
|
-
output.set(salt);
|
|
188
|
-
output.set(encrypted, salt.byteLength);
|
|
189
|
-
const header = {
|
|
190
|
-
v: 4,
|
|
191
|
-
i: ITERATIONS
|
|
192
|
-
};
|
|
193
|
-
return [JSON.stringify(header), b64encode(output)];
|
|
194
|
-
};
|
|
195
188
|
var decrypt = async (header_json, ciphertext, password) => {
|
|
196
189
|
var decoded = b64decode(ciphertext);
|
|
197
190
|
var header;
|
|
@@ -210,7 +203,7 @@ var decrypt = async (header_json, ciphertext, password) => {
|
|
|
210
203
|
"Unknown version ".concat(header.v)
|
|
211
204
|
);
|
|
212
205
|
}
|
|
213
|
-
const
|
|
206
|
+
const cryptoImpl = await getCrypto();
|
|
214
207
|
const algorithm = header.v < 2 ? "AES-CBC" : "AES-GCM";
|
|
215
208
|
const bit_len = header.v < 4 ? 384 : 352;
|
|
216
209
|
const salt_len = header.v < 4 ? 8 : 16;
|
|
@@ -225,7 +218,7 @@ var decrypt = async (header_json, ciphertext, password) => {
|
|
|
225
218
|
algorithm,
|
|
226
219
|
256
|
|
227
220
|
);
|
|
228
|
-
return await
|
|
221
|
+
return await cryptoImpl.subtle.decrypt(
|
|
229
222
|
{ name: algorithm, iv: nonce.buffer },
|
|
230
223
|
key,
|
|
231
224
|
cipherText
|
|
@@ -240,7 +233,7 @@ var decrypt = async (header_json, ciphertext, password) => {
|
|
|
240
233
|
algorithm,
|
|
241
234
|
bit_len
|
|
242
235
|
);
|
|
243
|
-
return await
|
|
236
|
+
return await cryptoImpl.subtle.decrypt(
|
|
244
237
|
{ name: algorithm, iv },
|
|
245
238
|
key,
|
|
246
239
|
encrypted
|
|
@@ -256,13 +249,9 @@ async function decryptSecretWithNodePassword(cipher, encryptedSecret, nodePasswo
|
|
|
256
249
|
}
|
|
257
250
|
return decryptedValue;
|
|
258
251
|
}
|
|
259
|
-
function decode(arrBuff) {
|
|
260
|
-
const dec = new TextDecoder();
|
|
261
|
-
return dec.decode(arrBuff);
|
|
262
|
-
}
|
|
263
252
|
var generateSigningKeyPair = async () => {
|
|
264
|
-
const
|
|
265
|
-
return await
|
|
253
|
+
const cryptoImpl = await getCrypto();
|
|
254
|
+
return await cryptoImpl.subtle.generateKey(
|
|
266
255
|
/*algorithm:*/
|
|
267
256
|
{
|
|
268
257
|
name: "RSA-PSS",
|
|
@@ -277,74 +266,72 @@ var generateSigningKeyPair = async () => {
|
|
|
277
266
|
);
|
|
278
267
|
};
|
|
279
268
|
var serializeSigningKey = async (key, format) => {
|
|
280
|
-
const
|
|
281
|
-
return await
|
|
269
|
+
const cryptoImpl = await getCrypto();
|
|
270
|
+
return await cryptoImpl.subtle.exportKey(
|
|
282
271
|
/*format*/
|
|
283
272
|
format,
|
|
284
273
|
/*key*/
|
|
285
274
|
key
|
|
286
275
|
);
|
|
287
276
|
};
|
|
288
|
-
var
|
|
289
|
-
const
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
277
|
+
var getNonce = async () => {
|
|
278
|
+
const cryptoImpl = await getCrypto();
|
|
279
|
+
const nonceSt = await getRandomValues32(new Uint32Array(1));
|
|
280
|
+
return Number(nonceSt);
|
|
281
|
+
};
|
|
282
|
+
var sign = async (key, data) => {
|
|
283
|
+
const cryptoImpl = await getCrypto();
|
|
284
|
+
return await cryptoImpl.subtle.sign(
|
|
293
285
|
{
|
|
294
|
-
name: "RSA-
|
|
286
|
+
name: "RSA-PSS",
|
|
287
|
+
saltLength: 32
|
|
295
288
|
},
|
|
296
|
-
/*key*/
|
|
297
289
|
key,
|
|
298
|
-
|
|
299
|
-
encoded
|
|
290
|
+
data
|
|
300
291
|
);
|
|
301
|
-
return b64encode(encrypted);
|
|
302
292
|
};
|
|
303
|
-
var
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
return await cryptoImpl2.subtle.importKey(
|
|
293
|
+
var importPrivateSigningKey = async (keyData, format) => {
|
|
294
|
+
const cryptoImpl = await getCrypto();
|
|
295
|
+
return await cryptoImpl.subtle.importKey(
|
|
307
296
|
/*format*/
|
|
308
|
-
|
|
297
|
+
format,
|
|
309
298
|
/*keyData*/
|
|
310
|
-
|
|
311
|
-
/*algorithm
|
|
299
|
+
keyData,
|
|
300
|
+
/*algorithm*/
|
|
312
301
|
{
|
|
313
|
-
name: "RSA-
|
|
302
|
+
name: "RSA-PSS",
|
|
314
303
|
hash: "SHA-256"
|
|
315
304
|
},
|
|
316
305
|
/*extractable*/
|
|
317
306
|
true,
|
|
318
307
|
/*keyUsages*/
|
|
319
|
-
["
|
|
308
|
+
["sign"]
|
|
320
309
|
);
|
|
321
310
|
};
|
|
322
|
-
var
|
|
323
|
-
|
|
324
|
-
|
|
311
|
+
var DefaultCrypto = {
|
|
312
|
+
decryptSecretWithNodePassword,
|
|
313
|
+
generateSigningKeyPair,
|
|
314
|
+
serializeSigningKey,
|
|
315
|
+
getNonce,
|
|
316
|
+
sign,
|
|
317
|
+
importPrivateSigningKey
|
|
325
318
|
};
|
|
326
319
|
|
|
327
320
|
// src/crypto/NodeKeyCache.ts
|
|
328
321
|
var import_auto_bind = __toESM(require("auto-bind"), 1);
|
|
329
322
|
var NodeKeyCache = class {
|
|
330
|
-
|
|
331
|
-
|
|
323
|
+
constructor(cryptoImpl = DefaultCrypto) {
|
|
324
|
+
this.cryptoImpl = cryptoImpl;
|
|
332
325
|
this.idToKey = /* @__PURE__ */ new Map();
|
|
333
326
|
(0, import_auto_bind.default)(this);
|
|
334
327
|
}
|
|
335
|
-
|
|
336
|
-
|
|
328
|
+
idToKey;
|
|
329
|
+
async loadKey(id, rawKey, format = "pkcs8") {
|
|
330
|
+
const decoded = b64decode(this.stripPemTags(rawKey));
|
|
337
331
|
try {
|
|
338
|
-
const
|
|
339
|
-
const key = await cryptoImpl2.subtle.importKey(
|
|
340
|
-
"pkcs8",
|
|
332
|
+
const key = await this.cryptoImpl.importPrivateSigningKey(
|
|
341
333
|
decoded,
|
|
342
|
-
|
|
343
|
-
name: "RSA-PSS",
|
|
344
|
-
hash: "SHA-256"
|
|
345
|
-
},
|
|
346
|
-
true,
|
|
347
|
-
["sign"]
|
|
334
|
+
format
|
|
348
335
|
);
|
|
349
336
|
this.idToKey.set(id, key);
|
|
350
337
|
return key;
|
|
@@ -359,6 +346,9 @@ var NodeKeyCache = class {
|
|
|
359
346
|
hasKey(id) {
|
|
360
347
|
return this.idToKey.has(id);
|
|
361
348
|
}
|
|
349
|
+
stripPemTags(pem) {
|
|
350
|
+
return pem.replace(/-----BEGIN (.*)-----/, "").replace(/-----END (.*)----/, "");
|
|
351
|
+
}
|
|
362
352
|
};
|
|
363
353
|
var NodeKeyCache_default = NodeKeyCache;
|
|
364
354
|
|
|
@@ -380,12 +370,13 @@ var LIGHTSPARK_BETA_HEADER_KEY = "X-Lightspark-Beta";
|
|
|
380
370
|
var LIGHTSPARK_BETA_HEADER_VALUE = "z2h0BBYxTA83cjW7fi8QwWtBPCzkQKiemcuhKY08LOo";
|
|
381
371
|
import_dayjs.default.extend(import_utc.default);
|
|
382
372
|
var Requester = class {
|
|
383
|
-
constructor(nodeKeyCache, schemaEndpoint, sdkUserAgent, authProvider = new StubAuthProvider(), baseUrl = DEFAULT_BASE_URL) {
|
|
373
|
+
constructor(nodeKeyCache, schemaEndpoint, sdkUserAgent, authProvider = new StubAuthProvider(), baseUrl = DEFAULT_BASE_URL, cryptoImpl = DefaultCrypto) {
|
|
384
374
|
this.nodeKeyCache = nodeKeyCache;
|
|
385
375
|
this.schemaEndpoint = schemaEndpoint;
|
|
386
376
|
this.sdkUserAgent = sdkUserAgent;
|
|
387
377
|
this.authProvider = authProvider;
|
|
388
378
|
this.baseUrl = baseUrl;
|
|
379
|
+
this.cryptoImpl = cryptoImpl;
|
|
389
380
|
let websocketImpl;
|
|
390
381
|
if (typeof WebSocket === "undefined" && typeof window === "undefined") {
|
|
391
382
|
websocketImpl = import_ws.default;
|
|
@@ -511,7 +502,7 @@ var Requester = class {
|
|
|
511
502
|
const query = queryPayload.query;
|
|
512
503
|
const variables = queryPayload.variables;
|
|
513
504
|
const operationName = queryPayload.operationName;
|
|
514
|
-
const nonce = await getNonce();
|
|
505
|
+
const nonce = await this.cryptoImpl.getNonce();
|
|
515
506
|
const expiration = import_dayjs.default.utc().add(1, "hour").format();
|
|
516
507
|
const payload = {
|
|
517
508
|
query,
|
|
@@ -526,16 +517,11 @@ var Requester = class {
|
|
|
526
517
|
"Missing node of encrypted_signing_private_key"
|
|
527
518
|
);
|
|
528
519
|
}
|
|
520
|
+
if (typeof TextEncoder === "undefined") {
|
|
521
|
+
const TextEncoder2 = (await import("text-encoding")).TextEncoder;
|
|
522
|
+
}
|
|
529
523
|
const encodedPayload = new TextEncoder().encode(JSON.stringify(payload));
|
|
530
|
-
const
|
|
531
|
-
const signedPayload = await cryptoImpl2.subtle.sign(
|
|
532
|
-
{
|
|
533
|
-
name: "RSA-PSS",
|
|
534
|
-
saltLength: 32
|
|
535
|
-
},
|
|
536
|
-
key,
|
|
537
|
-
encodedPayload
|
|
538
|
-
);
|
|
524
|
+
const signedPayload = await this.cryptoImpl.sign(key, encodedPayload);
|
|
539
525
|
const encodedSignedPayload = b64encode(signedPayload);
|
|
540
526
|
headers["X-Lightspark-Signing"] = JSON.stringify({
|
|
541
527
|
v: "1",
|
|
@@ -635,6 +621,7 @@ var isType = (typename) => (node) => {
|
|
|
635
621
|
};
|
|
636
622
|
// Annotate the CommonJS export names for ESM import in node:
|
|
637
623
|
0 && (module.exports = {
|
|
624
|
+
DefaultCrypto,
|
|
638
625
|
LightsparkAuthException,
|
|
639
626
|
LightsparkException,
|
|
640
627
|
LightsparkSigningException,
|
|
@@ -646,18 +633,8 @@ var isType = (typename) => (node) => {
|
|
|
646
633
|
b64decode,
|
|
647
634
|
b64encode,
|
|
648
635
|
convertCurrencyAmount,
|
|
649
|
-
decode,
|
|
650
|
-
decrypt,
|
|
651
|
-
decryptSecretWithNodePassword,
|
|
652
|
-
encrypt,
|
|
653
|
-
encryptWithNodeKey,
|
|
654
|
-
generateSigningKeyPair,
|
|
655
|
-
getCrypto,
|
|
656
|
-
getNonce,
|
|
657
636
|
isBrowser,
|
|
658
637
|
isNode,
|
|
659
638
|
isType,
|
|
660
|
-
loadNodeEncryptionKey,
|
|
661
|
-
serializeSigningKey,
|
|
662
639
|
urlsafe_b64decode
|
|
663
640
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -27,26 +27,38 @@ declare class LightsparkSigningException extends LightsparkException {
|
|
|
27
27
|
constructor(message: string, extraInfo?: any);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
type CryptoInterface = {
|
|
31
|
+
decryptSecretWithNodePassword: (cipher: string, encryptedSecret: string, nodePassword: string) => Promise<ArrayBuffer | null>;
|
|
32
|
+
generateSigningKeyPair: () => Promise<{
|
|
33
|
+
publicKey: CryptoKey | string;
|
|
34
|
+
privateKey: CryptoKey | string;
|
|
35
|
+
}>;
|
|
36
|
+
serializeSigningKey: (key: CryptoKey | string, format: "pkcs8" | "spki") => Promise<ArrayBuffer>;
|
|
37
|
+
getNonce: () => Promise<number>;
|
|
38
|
+
sign: (key: CryptoKey | Uint8Array, data: Uint8Array) => Promise<ArrayBuffer>;
|
|
39
|
+
importPrivateSigningKey: (keyData: Uint8Array, format: "pkcs8" | "spki") => Promise<CryptoKey | Uint8Array>;
|
|
40
|
+
};
|
|
36
41
|
declare function decryptSecretWithNodePassword(cipher: string, encryptedSecret: string, nodePassword: string): Promise<ArrayBuffer | null>;
|
|
37
|
-
declare
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
declare const DefaultCrypto: {
|
|
43
|
+
decryptSecretWithNodePassword: typeof decryptSecretWithNodePassword;
|
|
44
|
+
generateSigningKeyPair: () => Promise<CryptoKeyPair | {
|
|
45
|
+
publicKey: string;
|
|
46
|
+
privateKey: string;
|
|
47
|
+
}>;
|
|
48
|
+
serializeSigningKey: (key: CryptoKey | string, format: "pkcs8" | "spki") => Promise<ArrayBuffer>;
|
|
49
|
+
getNonce: () => Promise<number>;
|
|
50
|
+
sign: (key: CryptoKey | Uint8Array, data: Uint8Array) => Promise<ArrayBuffer>;
|
|
51
|
+
importPrivateSigningKey: (keyData: Uint8Array, format: "pkcs8" | "spki") => Promise<CryptoKey | Uint8Array>;
|
|
52
|
+
};
|
|
43
53
|
|
|
44
54
|
declare class NodeKeyCache {
|
|
55
|
+
private readonly cryptoImpl;
|
|
45
56
|
private idToKey;
|
|
46
|
-
constructor();
|
|
47
|
-
loadKey(id: string, rawKey: string): Promise<CryptoKey | null>;
|
|
48
|
-
getKey(id: string): CryptoKey | undefined;
|
|
57
|
+
constructor(cryptoImpl?: CryptoInterface);
|
|
58
|
+
loadKey(id: string, rawKey: string, format?: "pkcs8" | "spki"): Promise<CryptoKey | Uint8Array | null>;
|
|
59
|
+
getKey(id: string): CryptoKey | Uint8Array | undefined;
|
|
49
60
|
hasKey(id: string): boolean;
|
|
61
|
+
private stripPemTags;
|
|
50
62
|
}
|
|
51
63
|
|
|
52
64
|
type Query<T> = {
|
|
@@ -68,8 +80,9 @@ declare class Requester {
|
|
|
68
80
|
private readonly sdkUserAgent;
|
|
69
81
|
private readonly authProvider;
|
|
70
82
|
private readonly baseUrl;
|
|
83
|
+
private readonly cryptoImpl;
|
|
71
84
|
private readonly wsClient;
|
|
72
|
-
constructor(nodeKeyCache: NodeKeyCache, schemaEndpoint: string, sdkUserAgent: string, authProvider?: AuthProvider, baseUrl?: string);
|
|
85
|
+
constructor(nodeKeyCache: NodeKeyCache, schemaEndpoint: string, sdkUserAgent: string, authProvider?: AuthProvider, baseUrl?: string, cryptoImpl?: CryptoInterface);
|
|
73
86
|
executeQuery<T>(query: Query<T>): Promise<T | null>;
|
|
74
87
|
subscribe(queryPayload: string, variables?: {
|
|
75
88
|
[key: string]: any;
|
|
@@ -150,4 +163,4 @@ declare const isType: <T extends string>(typename: T) => <N extends {
|
|
|
150
163
|
__typename: T;
|
|
151
164
|
}>;
|
|
152
165
|
|
|
153
|
-
export { AuthProvider, ById, ExpandRecursively, LightsparkAuthException, LightsparkException, LightsparkSigningException, Maybe, NodeKeyCache, OmitTypename, Query, Requester, ServerEnvironment, StubAuthProvider, apiDomainForEnvironment, b64decode, b64encode, convertCurrencyAmount,
|
|
166
|
+
export { AuthProvider, ById, CryptoInterface, DefaultCrypto, ExpandRecursively, LightsparkAuthException, LightsparkException, LightsparkSigningException, Maybe, NodeKeyCache, OmitTypename, Query, Requester, ServerEnvironment, StubAuthProvider, apiDomainForEnvironment, b64decode, b64encode, convertCurrencyAmount, isBrowser, isNode, isType, urlsafe_b64decode };
|