@universis/signer-worker 1.1.0 → 1.6.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.esm.js CHANGED
@@ -1,8 +1,16 @@
1
- import { HttpMethodNotAllowedError, ApplicationService, HttpError } from '@themost/common';
1
+ import { HttpMethodNotAllowedError, ApplicationService, HttpError, TraceUtils } from '@themost/common';
2
2
  import express from 'express';
3
3
  import { createProxyMiddleware } from 'http-proxy-middleware';
4
4
  import { serviceRouter } from '@themost/express';
5
5
  import request from 'superagent';
6
+ import { URL } from 'url';
7
+ import path from 'path';
8
+ import { writeFile as writeFile$1, unlink as unlink$1 } from 'fs';
9
+ import { promisify } from 'util';
10
+ import crypto from 'crypto';
11
+ import os from 'os';
12
+ import { DataCacheStrategy } from '@themost/data';
13
+ import { Secret, TOTP } from 'xotp';
6
14
 
7
15
  /*! *****************************************************************************
8
16
  Copyright (c) Microsoft Corporation.
@@ -29,16 +37,17 @@ function __awaiter(thisArg, _arguments, P, generator) {
29
37
  });
30
38
  }
31
39
 
32
- function signerWorkerRouter() {
40
+ function signerWorkerRouter(target = 'http://localhost:2465/') {
33
41
  const router = express.Router();
34
42
  router.use('/sign', (req, res, next) => {
35
43
  return next(new HttpMethodNotAllowedError('This method is not supported when using remote services.'));
36
44
  });
37
45
  router.use(createProxyMiddleware({
38
- target: 'http://localhost:2465/',
46
+ target,
39
47
  pathRewrite: {
40
48
  '^/api/signer': ''
41
49
  },
50
+ logLevel: 'warn',
42
51
  changeOrigin: true
43
52
  }));
44
53
  return router;
@@ -75,17 +84,24 @@ class ScopeAccessConfiguration {
75
84
  class SignerWorker extends ApplicationService {
76
85
  constructor(app) {
77
86
  super(app);
78
- const thisApp = app;
87
+ this.install();
88
+ }
89
+ install() {
90
+ // get configuration
91
+ this.options = Object.assign({
92
+ host: 'http://localhost:2465/'
93
+ }, this.getApplication().getConfiguration().getSourceAt('settings/universis/signerWorker'));
94
+ const thisApp = this.getApplication();
79
95
  if (thisApp && thisApp.container) {
80
96
  thisApp.container.subscribe((container) => {
81
97
  if (container) {
82
98
  // add scope access
83
- const scopeAccess = app.getConfiguration().getStrategy(ScopeAccessConfiguration);
99
+ const scopeAccess = thisApp.getConfiguration().getStrategy(ScopeAccessConfiguration);
84
100
  if (scopeAccess) {
85
101
  scopeAccess.elements.push.apply(scopeAccess.elements, SignerScopeAccess);
86
102
  }
87
103
  // use signer worker router (for authenticated users)
88
- serviceRouter.use('/signer/', signerWorkerRouter());
104
+ serviceRouter.use('/signer/', signerWorkerRouter(this.options.host));
89
105
  }
90
106
  });
91
107
  }
@@ -95,19 +111,370 @@ class SignerWorker extends ApplicationService {
95
111
  * @param {ExpressDataContext} context The underlying data context
96
112
  * @param {string} document The file path
97
113
  * @param {{filename: string, contentType: string}=} options Extra attributes (optional)
98
- * @returns
114
+ * @returns Promise<VerifySignatureResult[]>
99
115
  */
100
116
  verify(context, document, options) {
101
117
  return __awaiter(this, void 0, void 0, function* () {
102
- const response = yield request.post('http://localhost:2465/verify')
103
- .attach('file', document, options);
104
- if (response.ok) {
105
- return response.body;
118
+ try {
119
+ const response = yield request.post(new URL('/verify', this.options.host).toString())
120
+ .attach('file', document, options);
121
+ if (response.ok) {
122
+ return response.body;
123
+ }
124
+ // noinspection ExceptionCaughtLocallyJS
125
+ throw new HttpError(response.statusCode);
126
+ }
127
+ catch (err) {
128
+ if (err.response) {
129
+ TraceUtils.error(err);
130
+ throw new HttpError(err.response.status);
131
+ }
132
+ throw err;
106
133
  }
107
- throw new HttpError(response.statusCode);
108
134
  });
109
135
  }
110
136
  }
111
137
 
112
- export { SignerWorker, signerWorkerRouter };
138
+ const writeFile = promisify(writeFile$1);
139
+ const unlink = promisify(unlink$1);
140
+ function tmpFile(extension = '.tmp') {
141
+ const tmpDir = os.tmpdir();
142
+ const filename = `file-${crypto.randomBytes(16).toString('hex')}${extension}`;
143
+ return path.join(tmpDir, filename);
144
+ }
145
+ class SignerService extends ApplicationService {
146
+ constructor(app) {
147
+ super(app);
148
+ // get signer worker configuration
149
+ const options = app.getConfiguration().getSourceAt('settings/universis/signerService') || {};
150
+ this.options = Object.assign({}, {
151
+ 'host': 'http://localhost:2465/'
152
+ }, options);
153
+ const thisApp = app;
154
+ if (thisApp && thisApp.container) {
155
+ thisApp.container.subscribe((container) => {
156
+ if (container) {
157
+ container.get('/api/signer/.well-known/jwks', (_req, res, next) => __awaiter(this, void 0, void 0, function* () {
158
+ try {
159
+ const results = yield this.getJwks();
160
+ return res.json(results);
161
+ }
162
+ catch (err) {
163
+ return next(err);
164
+ }
165
+ }));
166
+ container.get('/api/signer/.well-known/certs', (_req, res, next) => __awaiter(this, void 0, void 0, function* () {
167
+ try {
168
+ const results = yield this.getCerts();
169
+ return res.json(results);
170
+ }
171
+ catch (err) {
172
+ return next(err);
173
+ }
174
+ }));
175
+ }
176
+ });
177
+ }
178
+ }
179
+ /**
180
+ * @param {ExpressDataContext} context The underlying data context
181
+ * @param {*} data The data to be verified
182
+ * @param {{filename: string, contentType: string}=} options Extra attributes (optional)
183
+ * @returns {Promise<VerifySignatureResult[]>}
184
+ */
185
+ verify(context, data, options) {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ if (data == null) {
188
+ throw new Error('The given data cannot be empty during sign.');
189
+ }
190
+ const json = (typeof data === 'object') ? JSON.stringify(data) : JSON.stringify({
191
+ value: data,
192
+ });
193
+ const file = tmpFile('.json');
194
+ // write data to temporary file
195
+ yield writeFile(file, json, { encoding: 'utf8' });
196
+ try {
197
+ return yield this.verifyFile(context, file, options);
198
+ }
199
+ catch (err) {
200
+ throw err;
201
+ }
202
+ finally {
203
+ try {
204
+ yield unlink(file); // remove temporary file
205
+ }
206
+ catch (e) {
207
+ // ignore error
208
+ }
209
+ }
210
+ });
211
+ }
212
+ getJwks() {
213
+ return __awaiter(this, void 0, void 0, function* () {
214
+ try {
215
+ const cache = this.getApplication().getConfiguration().getStrategy(DataCacheStrategy);
216
+ // check if cache is available
217
+ return cache.getOrDefault('/api/signer/keystore/jwks', () => __awaiter(this, void 0, void 0, function* () {
218
+ try {
219
+ const response = yield request
220
+ .get(new URL('/keystore/jwks', this.options.host).toString())
221
+ .auth(this.options.user, this.options.password);
222
+ if (response.ok) {
223
+ return response.body;
224
+ }
225
+ // noinspection ExceptionCaughtLocallyJS
226
+ throw new HttpError(response.status, 'Something went wrong while getting json web key set');
227
+ }
228
+ catch (err) {
229
+ TraceUtils.error(err);
230
+ throw new HttpError(err.status, 'Failed to get json web key set', err.message);
231
+ }
232
+ }));
233
+ }
234
+ catch (err) {
235
+ throw new HttpError(err.status, 'Failed to get json web key set', err.message);
236
+ }
237
+ });
238
+ }
239
+ getCerts() {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ const cache = this.getApplication().getConfiguration().getStrategy(DataCacheStrategy);
242
+ return cache.getOrDefault('/api/signer/keystore/certs', () => __awaiter(this, void 0, void 0, function* () {
243
+ try {
244
+ const response = yield request.get(new URL('/keystore/certs', this.options.host).toString())
245
+ .auth(this.options.user, this.options.password);
246
+ if (response.ok) {
247
+ return response.body.filter((item) => {
248
+ return item.notAfter && new Date(item.notAfter) > new Date();
249
+ });
250
+ }
251
+ return [];
252
+ }
253
+ catch (err) {
254
+ TraceUtils.error(err);
255
+ throw new HttpError(err.status, 'Failed to get certificates', err.message);
256
+ }
257
+ }));
258
+ });
259
+ }
260
+ /**
261
+ * Generates a one-time password using the configured secret.
262
+ */
263
+ generateVerificationCode(options) {
264
+ if (this.options.secret == null) {
265
+ throw new Error('One-time password is not supported');
266
+ }
267
+ const secret = Secret.from(this.options.secret, 'base32');
268
+ const opts = Object.assign({
269
+ algorithm: 'sha1',
270
+ digits: 6,
271
+ period: 30,
272
+ }, options);
273
+ const totp = new TOTP(opts);
274
+ return totp.generate({ secret });
275
+ }
276
+ /**
277
+ * @param {ExpressDataContext} context The underlying data context
278
+ * @param {*} data Any JSON object to be signed
279
+ * @param {{timestampServer?:string}} extraOptions
280
+ * @returns {Promise<SignJsonSignatureResult>} An array of signatures
281
+ */
282
+ sign(context, data, extraOptions) {
283
+ return __awaiter(this, void 0, void 0, function* () {
284
+ if (data == null) {
285
+ throw new Error('The given data cannot be empty during sign.');
286
+ }
287
+ const json = (typeof data === 'object') ? JSON.stringify(data) : JSON.stringify({
288
+ value: data,
289
+ });
290
+ const file = tmpFile('.json');
291
+ // write data to temporary file
292
+ yield writeFile(file, json, { encoding: 'utf8' });
293
+ try {
294
+ return yield this.signFinal(context, file, 'application/json', extraOptions);
295
+ }
296
+ catch (err) {
297
+ if (err.response) {
298
+ throw new HttpError(err.status, 'Failed to sign data', err.message);
299
+ }
300
+ throw err;
301
+ }
302
+ finally {
303
+ try {
304
+ yield unlink(file); // remove temporary file
305
+ }
306
+ catch (e) {
307
+ // ignore error
308
+ }
309
+ }
310
+ });
311
+ }
312
+ signFile(context, file, contentType, extraOptions) {
313
+ return __awaiter(this, void 0, void 0, function* () {
314
+ return this.signFinal(context, file, contentType, extraOptions);
315
+ });
316
+ }
317
+ verifyFile(context, file, options) {
318
+ return __awaiter(this, void 0, void 0, function* () {
319
+ try {
320
+ const response = yield request.post(new URL('/verify', this.options.host).toString())
321
+ .attach('file', file, options);
322
+ if (response.ok) {
323
+ return response.body;
324
+ }
325
+ // noinspection ExceptionCaughtLocallyJS
326
+ throw new HttpError(response.statusCode);
327
+ }
328
+ catch (err) {
329
+ if (err.response) {
330
+ TraceUtils.error(err);
331
+ throw new HttpError(err.response.status, 'Failed to verify data', err.message);
332
+ }
333
+ throw err;
334
+ }
335
+ });
336
+ }
337
+ inspect(context, file, options) {
338
+ return __awaiter(this, void 0, void 0, function* () {
339
+ try {
340
+ const fields = {};
341
+ if (this.options.inspector) {
342
+ Object.assign(fields, this.options.inspector);
343
+ }
344
+ const response = yield request.post(new URL('/signature/inspect', this.options.host).toString())
345
+ .field(fields)
346
+ .attach('file', file, options);
347
+ if (response.ok) {
348
+ return response.body;
349
+ }
350
+ // noinspection ExceptionCaughtLocallyJS
351
+ throw new HttpError(response.statusCode);
352
+ }
353
+ catch (err) {
354
+ if (err.response) {
355
+ TraceUtils.error(err);
356
+ throw new HttpError(err.response.status, 'Failed to verify data', err.message);
357
+ }
358
+ throw err;
359
+ }
360
+ });
361
+ }
362
+ requiresVerificationCode() {
363
+ return typeof this.options.secret === 'string' && this.options.secret.length > 0;
364
+ }
365
+ signFinal(context, file, contentType, extraOptions) {
366
+ return __awaiter(this, void 0, void 0, function* () {
367
+ // try to find thumbprint if empty
368
+ if (typeof this.options.thumbprint === 'undefined') {
369
+ const [cert] = yield this.getCerts();
370
+ if (cert) {
371
+ this.options.thumbprint = cert.thumbprint;
372
+ }
373
+ else {
374
+ this.options.thumbprint = '';
375
+ }
376
+ }
377
+ const fields = Object.assign({}, extraOptions);
378
+ // if the file is a PDF or the content type is application/pdf, try to inspect signature position
379
+ if (path.extname(file) === '.pdf' || contentType === 'application/pdf') {
380
+ if ((extraOptions === null || extraOptions === void 0 ? void 0 : extraOptions.page) && (extraOptions === null || extraOptions === void 0 ? void 0 : extraOptions.position)) {
381
+ // if page and position are defined, use them
382
+ Object.assign(fields, {
383
+ page: extraOptions.page,
384
+ position: extraOptions.position.map((element) => {
385
+ return Math.round(element);
386
+ }).join(',')
387
+ });
388
+ }
389
+ else if (this.options.inspector) {
390
+ // if inspector is defined, use it
391
+ const inspectorResult = yield this.inspect(context, file);
392
+ if ((inspectorResult === null || inspectorResult === void 0 ? void 0 : inspectorResult.page) && (inspectorResult === null || inspectorResult === void 0 ? void 0 : inspectorResult.position)) {
393
+ Object.assign(fields, {
394
+ page: inspectorResult.page,
395
+ position: inspectorResult.position.map((element) => {
396
+ return Math.round(element);
397
+ }).join(',')
398
+ });
399
+ }
400
+ }
401
+ }
402
+ if (this.options.thumbprint.length) {
403
+ Object.assign(fields, {
404
+ thumbprint: this.options.thumbprint,
405
+ });
406
+ }
407
+ const fileOptions = {
408
+ filename: path.basename(file)
409
+ };
410
+ if (contentType) {
411
+ Object.assign(fileOptions, {
412
+ contentType
413
+ });
414
+ }
415
+ try {
416
+ // if secret is defined, generate one-time password
417
+ if (this.requiresVerificationCode()) {
418
+ Object.assign(fields, {
419
+ otp: this.generateVerificationCode()
420
+ });
421
+ }
422
+ const response = yield request.post(new URL('/sign', this.options.host).toString())
423
+ .type('form')
424
+ .auth(this.options.user, this.options.password)
425
+ .field(fields)
426
+ .buffer(contentType !== 'application/json')
427
+ .attach('file', file, fileOptions);
428
+ if (response.ok) {
429
+ return response.body;
430
+ }
431
+ // noinspection ExceptionCaughtLocallyJS
432
+ throw new HttpError(response.status);
433
+ }
434
+ catch (err) {
435
+ if (err.response) {
436
+ TraceUtils.error(err);
437
+ throw new HttpError(err.response.status, 'Failed to sign data', err.message);
438
+ }
439
+ throw err;
440
+ }
441
+ });
442
+ }
443
+ }
444
+
445
+ function remoteSignerWorkerRouter(target = 'http://localhost:8480/') {
446
+ const router = express.Router();
447
+ router.use(createProxyMiddleware({
448
+ target,
449
+ pathRewrite: {
450
+ '^/services/remoteSigner': ''
451
+ },
452
+ logLevel: 'warn',
453
+ changeOrigin: true
454
+ }));
455
+ return router;
456
+ }
457
+
458
+ class RemoteSignerWorker extends SignerWorker {
459
+ constructor(app) {
460
+ super(app);
461
+ }
462
+ install() {
463
+ // get configuration
464
+ this.options = Object.assign({
465
+ host: 'http://localhost:8480/'
466
+ }, this.getApplication().getConfiguration().getSourceAt('settings/universis/remoteSignerWorker'));
467
+ const thisApp = this.getApplication();
468
+ if (thisApp && thisApp.container) {
469
+ thisApp.container.subscribe((container) => {
470
+ if (container) {
471
+ // use signer worker router (for authenticated users)
472
+ container.use('/services/remoteSigner/', remoteSignerWorkerRouter(this.options.host));
473
+ }
474
+ });
475
+ }
476
+ }
477
+ }
478
+
479
+ export { RemoteSignerWorker, SignerService, SignerWorker, remoteSignerWorkerRouter, signerWorkerRouter };
113
480
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/signerWorkerRouter.ts","../src/SignerScopeAccess.ts","../src/SignerWorker.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/signerWorkerRouter.ts","../src/SignerScopeAccess.ts","../src/SignerWorker.ts","../src/SignerService.ts","../src/remoteSignerWorkerRouter.ts","../src/RemoteSignerWorker.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n",null,null,null,null,null,null],"names":["writeFileWithCallback","unlinkWithCallback"],"mappings":"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"}