samlify 2.12.0 → 2.13.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.
Files changed (84) hide show
  1. package/README.md +1 -1
  2. package/build/src/api.js +41 -3
  3. package/build/src/api.js.map +1 -1
  4. package/build/src/binding-post.js +236 -182
  5. package/build/src/binding-post.js.map +1 -1
  6. package/build/src/binding-redirect.js +303 -215
  7. package/build/src/binding-redirect.js.map +1 -1
  8. package/build/src/binding-simplesign.js +285 -137
  9. package/build/src/binding-simplesign.js.map +1 -1
  10. package/build/src/entity-idp.js +130 -47
  11. package/build/src/entity-idp.js.map +1 -1
  12. package/build/src/entity-sp.js +81 -39
  13. package/build/src/entity-sp.js.map +1 -1
  14. package/build/src/entity.js +100 -62
  15. package/build/src/entity.js.map +1 -1
  16. package/build/src/extractor.js +118 -151
  17. package/build/src/extractor.js.map +1 -1
  18. package/build/src/flow.js +100 -96
  19. package/build/src/flow.js.map +1 -1
  20. package/build/src/libsaml.js +315 -259
  21. package/build/src/libsaml.js.map +1 -1
  22. package/build/src/metadata-idp.js +60 -30
  23. package/build/src/metadata-idp.js.map +1 -1
  24. package/build/src/metadata-sp.js +51 -41
  25. package/build/src/metadata-sp.js.map +1 -1
  26. package/build/src/metadata.js +47 -43
  27. package/build/src/metadata.js.map +1 -1
  28. package/build/src/options.js +73 -0
  29. package/build/src/options.js.map +1 -0
  30. package/build/src/urn.js +28 -1
  31. package/build/src/urn.js.map +1 -1
  32. package/build/src/utility.js +140 -85
  33. package/build/src/utility.js.map +1 -1
  34. package/build/src/validator.js +27 -10
  35. package/build/src/validator.js.map +1 -1
  36. package/package.json +16 -5
  37. package/types/src/api.d.ts +33 -3
  38. package/types/src/binding-post.d.ts +67 -34
  39. package/types/src/binding-redirect.d.ts +58 -31
  40. package/types/src/binding-simplesign.d.ts +77 -21
  41. package/types/src/entity-idp.d.ts +40 -31
  42. package/types/src/entity-sp.d.ts +37 -27
  43. package/types/src/entity.d.ts +71 -77
  44. package/types/src/extractor.d.ts +31 -22
  45. package/types/src/flow.d.ts +24 -2
  46. package/types/src/libsaml.d.ts +172 -118
  47. package/types/src/metadata-idp.d.ts +27 -11
  48. package/types/src/metadata-sp.d.ts +29 -19
  49. package/types/src/metadata.d.ts +59 -34
  50. package/types/src/options.d.ts +37 -0
  51. package/types/src/types.d.ts +250 -24
  52. package/types/src/urn.d.ts +7 -0
  53. package/types/src/utility.d.ts +139 -90
  54. package/types/src/validator.d.ts +21 -0
  55. package/.circleci/config.yml +0 -98
  56. package/.editorconfig +0 -19
  57. package/.github/FUNDING.yml +0 -1
  58. package/.github/workflows/deploy-docs.yml +0 -56
  59. package/.pre-commit.sh +0 -15
  60. package/.snyk +0 -4
  61. package/Makefile +0 -25
  62. package/index.ts +0 -28
  63. package/samlify-2.11.0.tgz +0 -0
  64. package/src/api.ts +0 -48
  65. package/src/binding-post.ts +0 -336
  66. package/src/binding-redirect.ts +0 -335
  67. package/src/binding-simplesign.ts +0 -231
  68. package/src/entity-idp.ts +0 -145
  69. package/src/entity-sp.ts +0 -114
  70. package/src/entity.ts +0 -243
  71. package/src/extractor.ts +0 -399
  72. package/src/flow.ts +0 -469
  73. package/src/libsaml.ts +0 -779
  74. package/src/metadata-idp.ts +0 -146
  75. package/src/metadata-sp.ts +0 -203
  76. package/src/metadata.ts +0 -166
  77. package/src/types.ts +0 -127
  78. package/src/urn.ts +0 -210
  79. package/src/utility.ts +0 -259
  80. package/src/validator.ts +0 -44
  81. package/tsconfig.json +0 -41
  82. package/tslint.json +0 -35
  83. package/types.d.ts +0 -2
  84. package/vitest.config.ts +0 -12
@@ -1,43 +1,48 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  Object.defineProperty(exports, "__esModule", { value: true });
14
3
  exports.logoutResponseFields = exports.logoutRequestFields = exports.loginResponseFields = exports.logoutResponseStatusFields = exports.loginResponseStatusFields = exports.loginRequestFields = void 0;
15
4
  exports.extract = extract;
5
+ /**
6
+ * @file extractor.ts
7
+ * @author tngan
8
+ * @desc Declarative XPath extractor for SAML messages. Defines the field
9
+ * catalogs (login/logout request & response) and a generic `extract` that
10
+ * evaluates them against an XML document.
11
+ */
16
12
  var xpath_1 = require("xpath");
17
13
  var utility_1 = require("./utility");
14
+ var api_1 = require("./api");
15
+ /**
16
+ * Coerce the heterogeneous return type of `xpath.select` into a Node array.
17
+ */
18
18
  function toNodeArray(result) {
19
19
  if (Array.isArray(result))
20
20
  return result;
21
- if (result != null && typeof result === 'object' && 'nodeType' in result)
21
+ if (result != null && typeof result === 'object' && 'nodeType' in result) {
22
22
  return [result];
23
+ }
23
24
  return [];
24
25
  }
25
- var api_1 = require("./api");
26
- var utility_2 = require("./utility");
26
+ /**
27
+ * Build an absolute XPath expression from a list of local-name segments.
28
+ * A segment prefixed with `~` matches any element whose local-name contains
29
+ * the remaining text (case-sensitive substring).
30
+ */
27
31
  function buildAbsoluteXPath(paths) {
28
32
  return paths.reduce(function (currentPath, name) {
29
- var appendedPath = currentPath;
30
33
  var isWildcard = name.startsWith('~');
31
34
  if (isWildcard) {
32
35
  var pathName = name.replace('~', '');
33
- appendedPath = currentPath + "/*[contains(local-name(), ".concat((0, utility_1.escapeXPathValue)(pathName), ")]");
36
+ return currentPath + "/*[contains(local-name(), ".concat((0, utility_1.escapeXPathValue)(pathName), ")]");
34
37
  }
35
- if (!isWildcard) {
36
- appendedPath = currentPath + "/*[local-name(.)=".concat((0, utility_1.escapeXPathValue)(name), "]");
37
- }
38
- return appendedPath;
38
+ return currentPath + "/*[local-name(.)=".concat((0, utility_1.escapeXPathValue)(name), "]");
39
39
  }, '');
40
40
  }
41
+ /**
42
+ * Append an attribute selector to an XPath. Zero attributes select text
43
+ * content; one attribute selects that attribute; multiple attributes use an
44
+ * `or` filter.
45
+ */
41
46
  function buildAttributeXPath(attributes) {
42
47
  if (attributes.length === 0) {
43
48
  return '/text()';
@@ -48,35 +53,36 @@ function buildAttributeXPath(attributes) {
48
53
  var filters = attributes.map(function (attribute) { return "name()=".concat((0, utility_1.escapeXPathValue)(attribute)); }).join(' or ');
49
54
  return "/@*[".concat(filters, "]");
50
55
  }
56
+ /** Default extractor fields for an inbound `AuthnRequest` (login request). */
51
57
  exports.loginRequestFields = [
52
58
  {
53
59
  key: 'request',
54
60
  localPath: ['AuthnRequest'],
55
- attributes: ['ID', 'IssueInstant', 'Destination', 'AssertionConsumerServiceURL']
61
+ attributes: ['ID', 'IssueInstant', 'Destination', 'AssertionConsumerServiceURL'],
56
62
  },
57
63
  {
58
64
  key: 'issuer',
59
65
  localPath: ['AuthnRequest', 'Issuer'],
60
- attributes: []
66
+ attributes: [],
61
67
  },
62
68
  {
63
69
  key: 'nameIDPolicy',
64
70
  localPath: ['AuthnRequest', 'NameIDPolicy'],
65
- attributes: ['Format', 'AllowCreate']
71
+ attributes: ['Format', 'AllowCreate'],
66
72
  },
67
73
  {
68
74
  key: 'authnContextClassRef',
69
75
  localPath: ['AuthnRequest', 'AuthnContextClassRef'],
70
- attributes: []
76
+ attributes: [],
71
77
  },
72
78
  {
73
79
  key: 'signature',
74
80
  localPath: ['AuthnRequest', 'Signature'],
75
81
  attributes: [],
76
- context: true
77
- }
82
+ context: true,
83
+ },
78
84
  ];
79
- // support two-tiers status code
85
+ /** Two-tier status code extractor for login responses. */
80
86
  exports.loginResponseStatusFields = [
81
87
  {
82
88
  key: 'top',
@@ -87,27 +93,35 @@ exports.loginResponseStatusFields = [
87
93
  key: 'second',
88
94
  localPath: ['Response', 'Status', 'StatusCode', 'StatusCode'],
89
95
  attributes: ['Value'],
90
- }
96
+ },
91
97
  ];
92
- // support two-tiers status code
98
+ /** Two-tier status code extractor for logout responses. */
93
99
  exports.logoutResponseStatusFields = [
94
100
  {
95
101
  key: 'top',
96
102
  localPath: ['LogoutResponse', 'Status', 'StatusCode'],
97
- attributes: ['Value']
103
+ attributes: ['Value'],
98
104
  },
99
105
  {
100
106
  key: 'second',
101
107
  localPath: ['LogoutResponse', 'Status', 'StatusCode', 'StatusCode'],
102
108
  attributes: ['Value'],
103
- }
109
+ },
104
110
  ];
111
+ /**
112
+ * Build the login-response extractor bound to a particular assertion XML.
113
+ * Assertion-scoped fields are re-rooted at the assertion fragment via the
114
+ * `shortcut` mechanism so that wrapping attacks can't redirect extraction.
115
+ *
116
+ * @param assertion XML string of the (verified) assertion node
117
+ * @returns extractor fields ready for `extract`
118
+ */
105
119
  var loginResponseFields = function (assertion) { return [
106
120
  {
107
121
  key: 'conditions',
108
122
  localPath: ['Assertion', 'Conditions'],
109
123
  attributes: ['NotBefore', 'NotOnOrAfter'],
110
- shortcut: assertion
124
+ shortcut: assertion,
111
125
  },
112
126
  {
113
127
  key: 'response',
@@ -118,30 +132,25 @@ var loginResponseFields = function (assertion) { return [
118
132
  key: 'audience',
119
133
  localPath: ['Assertion', 'Conditions', 'AudienceRestriction', 'Audience'],
120
134
  attributes: [],
121
- shortcut: assertion
135
+ shortcut: assertion,
122
136
  },
123
- // {
124
- // key: 'issuer',
125
- // localPath: ['Response', 'Issuer'],
126
- // attributes: []
127
- // },
128
137
  {
129
138
  key: 'issuer',
130
139
  localPath: ['Assertion', 'Issuer'],
131
140
  attributes: [],
132
- shortcut: assertion
141
+ shortcut: assertion,
133
142
  },
134
143
  {
135
144
  key: 'nameID',
136
145
  localPath: ['Assertion', 'Subject', 'NameID'],
137
146
  attributes: [],
138
- shortcut: assertion
147
+ shortcut: assertion,
139
148
  },
140
149
  {
141
150
  key: 'sessionIndex',
142
151
  localPath: ['Assertion', 'AuthnStatement'],
143
152
  attributes: ['AuthnInstant', 'SessionNotOnOrAfter', 'SessionIndex'],
144
- shortcut: assertion
153
+ shortcut: assertion,
145
154
  },
146
155
  {
147
156
  key: 'attributes',
@@ -149,220 +158,178 @@ var loginResponseFields = function (assertion) { return [
149
158
  index: ['Name'],
150
159
  attributePath: ['AttributeValue'],
151
160
  attributes: [],
152
- shortcut: assertion
153
- }
161
+ shortcut: assertion,
162
+ },
154
163
  ]; };
155
164
  exports.loginResponseFields = loginResponseFields;
165
+ /** Default extractor fields for an inbound `LogoutRequest`. */
156
166
  exports.logoutRequestFields = [
157
167
  {
158
168
  key: 'request',
159
169
  localPath: ['LogoutRequest'],
160
- attributes: ['ID', 'IssueInstant', 'Destination']
170
+ attributes: ['ID', 'IssueInstant', 'Destination'],
161
171
  },
162
172
  {
163
173
  key: 'issuer',
164
174
  localPath: ['LogoutRequest', 'Issuer'],
165
- attributes: []
175
+ attributes: [],
166
176
  },
167
177
  {
168
178
  key: 'nameID',
169
179
  localPath: ['LogoutRequest', 'NameID'],
170
- attributes: []
180
+ attributes: [],
171
181
  },
172
182
  {
173
183
  key: 'sessionIndex',
174
184
  localPath: ['LogoutRequest', 'SessionIndex'],
175
- attributes: []
185
+ attributes: [],
176
186
  },
177
187
  {
178
188
  key: 'signature',
179
189
  localPath: ['LogoutRequest', 'Signature'],
180
190
  attributes: [],
181
- context: true
182
- }
191
+ context: true,
192
+ },
183
193
  ];
194
+ /** Default extractor fields for an inbound `LogoutResponse`. */
184
195
  exports.logoutResponseFields = [
185
196
  {
186
197
  key: 'response',
187
198
  localPath: ['LogoutResponse'],
188
- attributes: ['ID', 'Destination', 'InResponseTo']
199
+ attributes: ['ID', 'Destination', 'InResponseTo'],
189
200
  },
190
201
  {
191
202
  key: 'issuer',
192
203
  localPath: ['LogoutResponse', 'Issuer'],
193
- attributes: []
204
+ attributes: [],
194
205
  },
195
206
  {
196
207
  key: 'signature',
197
208
  localPath: ['LogoutResponse', 'Signature'],
198
209
  attributes: [],
199
- context: true
200
- }
210
+ context: true,
211
+ },
201
212
  ];
213
+ /**
214
+ * Evaluate the given extractor fields against an XML document and return
215
+ * a flat object keyed by `field.key`. Handles:
216
+ * - multi-path localPaths (`string[][]`) collected with `|`
217
+ * - parent/child attribute aggregation (`index` + `attributePath`)
218
+ * - whole-subtree extraction (`context: true`)
219
+ * - single/multiple/zero-attribute text extraction
220
+ *
221
+ * @param context XML string to parse
222
+ * @param fields extractor field definitions
223
+ * @returns extracted SAML values keyed by field name
224
+ */
202
225
  function extract(context, fields) {
203
226
  var dom = (0, api_1.getContext)().dom;
204
227
  var rootDoc = dom.parseFromString(context);
205
228
  return fields.reduce(function (result, field) {
206
- var _a, _b, _c, _d, _e, _f;
207
- // get essential fields
208
- var key = field.key;
209
- var localPath = field.localPath;
210
- var attributes = field.attributes;
211
- var isEntire = field.context;
212
- var shortcut = field.shortcut;
213
- // get optional fields
214
- var index = field.index;
215
- var attributePath = field.attributePath;
216
- // set allowing overriding if there is a shortcut injected
229
+ var key = field.key, localPath = field.localPath, attributes = field.attributes, isEntire = field.context, shortcut = field.shortcut, index = field.index, attributePath = field.attributePath;
217
230
  var targetDoc = rootDoc;
218
- // if shortcut is used, then replace the doc
219
- // it's a design for overriding the doc used during runtime
220
231
  if (shortcut) {
221
232
  targetDoc = dom.parseFromString(shortcut);
222
233
  }
223
- // special case: multiple path
224
- /*
225
- {
226
- key: 'issuer',
227
- localPath: [
228
- ['Response', 'Issuer'],
229
- ['Response', 'Assertion', 'Issuer']
230
- ],
231
- attributes: []
232
- }
233
- */
234
+ // Multi-path union: each entry is a separate localPath whose text()
235
+ // values are merged.
234
236
  if (localPath.every(function (path) { return Array.isArray(path); })) {
235
237
  var multiXPaths = localPath
236
- .map(function (path) {
237
- // not support attribute yet, so ignore it
238
- return "".concat(buildAbsoluteXPath(path), "/text()");
239
- })
238
+ .map(function (path) { return "".concat(buildAbsoluteXPath(path), "/text()"); })
240
239
  .join(' | ');
241
- return __assign(__assign({}, result), (_a = {}, _a[key] = (0, utility_1.uniq)(toNodeArray((0, xpath_1.select)(multiXPaths, targetDoc)).map(function (n) { return n.nodeValue; }).filter(utility_1.notEmpty)), _a));
240
+ result[key] = (0, utility_1.uniq)(toNodeArray((0, xpath_1.select)(multiXPaths, targetDoc))
241
+ .map(function (n) { return n.nodeValue; })
242
+ .filter(utility_1.notEmpty));
243
+ return result;
242
244
  }
243
- // eo special case: multiple path
244
245
  var baseXPath = buildAbsoluteXPath(localPath);
245
246
  var attributeXPath = buildAttributeXPath(attributes);
246
- // special case: get attributes where some are in child, some are in parent
247
- /*
248
- {
249
- key: 'attributes',
250
- localPath: ['Response', 'Assertion', 'AttributeStatement', 'Attribute'],
251
- index: ['Name'],
252
- attributePath: ['AttributeValue'],
253
- attributes: []
254
- }
255
- */
247
+ // Parent/child aggregation (e.g. SAML Attribute AttributeValue).
256
248
  if (index && attributePath) {
257
- // find the index in localpath
258
249
  var indexPath = buildAttributeXPath(index);
259
250
  var fullLocalXPath = "".concat(baseXPath).concat(indexPath);
260
251
  var parentNodes = toNodeArray((0, xpath_1.select)(baseXPath, targetDoc));
261
- // [uid, mail, edupersonaffiliation], ready for aggregate
262
252
  var parentAttributes = toNodeArray((0, xpath_1.select)(fullLocalXPath, targetDoc)).map(function (n) { return n.value; });
263
- // [attribute, attributevalue]
264
253
  var childXPath = buildAbsoluteXPath([(0, utility_1.last)(localPath)].concat(attributePath));
265
254
  var childAttributeXPath = buildAttributeXPath(attributes);
266
255
  var fullChildXPath_1 = "".concat(childXPath).concat(childAttributeXPath);
267
- // [ 'test', 'test@example.com', [ 'users', 'examplerole1' ] ]
268
256
  var childAttributes = parentNodes.map(function (node) {
269
257
  var nodeDoc = dom.parseFromString(node.toString());
270
258
  if (attributes.length === 0) {
271
259
  var childValues = toNodeArray((0, xpath_1.select)(fullChildXPath_1, nodeDoc)).map(function (n) { return n.nodeValue; });
272
- if (childValues.length === 1) {
273
- return childValues[0];
274
- }
275
- return childValues;
260
+ return childValues.length === 1 ? childValues[0] : childValues;
276
261
  }
277
262
  if (attributes.length > 0) {
278
263
  var childValues = toNodeArray((0, xpath_1.select)(fullChildXPath_1, nodeDoc)).map(function (n) { return n.value; });
279
- if (childValues.length === 1) {
280
- return childValues[0];
281
- }
282
- return childValues;
264
+ return childValues.length === 1 ? childValues[0] : childValues;
283
265
  }
284
266
  return null;
285
267
  });
286
- // aggregation
287
- var obj = (0, utility_1.zipObject)(parentAttributes, childAttributes, false);
288
- return __assign(__assign({}, result), (_b = {}, _b[key] = obj, _b));
268
+ result[key] = (0, utility_1.zipObject)(parentAttributes, childAttributes, false);
269
+ return result;
289
270
  }
290
- // case: fetch entire content, only allow one existence
291
- /*
292
- {
293
- key: 'signature',
294
- localPath: ['AuthnRequest', 'Signature'],
295
- attributes: [],
296
- context: true
297
- }
298
- */
271
+ // Whole-subtree capture.
299
272
  if (isEntire) {
300
273
  var nodes = toNodeArray((0, xpath_1.select)(baseXPath, targetDoc));
301
274
  var value = null;
302
275
  if (nodes.length === 1) {
303
276
  value = nodes[0].toString();
304
277
  }
305
- if (nodes.length > 1) {
278
+ else if (nodes.length > 1) {
306
279
  value = nodes.map(function (n) { return n.toString(); });
307
280
  }
308
- return __assign(__assign({}, result), (_c = {}, _c[key] = value, _c));
281
+ result[key] = value;
282
+ return result;
309
283
  }
310
- // case: multiple attribute
311
- /*
312
- {
313
- key: 'nameIDPolicy',
314
- localPath: ['AuthnRequest', 'NameIDPolicy'],
315
- attributes: ['Format', 'AllowCreate']
316
- }
317
- */
284
+ // Multi-attribute capture: produce one record per parent node.
318
285
  if (attributes.length > 1) {
319
286
  var baseNode = toNodeArray((0, xpath_1.select)(baseXPath, targetDoc)).map(function (n) { return n.toString(); });
320
287
  var childXPath_1 = "".concat(buildAbsoluteXPath([(0, utility_1.last)(localPath)])).concat(attributeXPath);
321
288
  var attributeValues = baseNode.map(function (node) {
322
289
  var nodeDoc = dom.parseFromString(node);
323
- var values = toNodeArray((0, xpath_1.select)(childXPath_1, nodeDoc)).reduce(function (r, n) {
324
- r[(0, utility_2.camelCase)(n.name)] = n.value;
290
+ return toNodeArray((0, xpath_1.select)(childXPath_1, nodeDoc)).reduce(function (r, n) {
291
+ r[(0, utility_1.camelCase)(n.name)] = n.value;
325
292
  return r;
326
293
  }, {});
327
- return values;
328
294
  });
329
- return __assign(__assign({}, result), (_d = {}, _d[key] = attributeValues.length === 1 ? attributeValues[0] : attributeValues, _d));
295
+ result[key] = (attributeValues.length === 1 ? attributeValues[0] : attributeValues);
296
+ return result;
330
297
  }
331
- // case: single attribute
332
- /*
333
- {
334
- key: 'statusCode',
335
- localPath: ['Response', 'Status', 'StatusCode'],
336
- attributes: ['Value'],
337
- }
338
- */
298
+ // Single-attribute capture.
339
299
  if (attributes.length === 1) {
340
300
  var fullPath = "".concat(baseXPath).concat(attributeXPath);
341
301
  var attributeValues = toNodeArray((0, xpath_1.select)(fullPath, targetDoc)).map(function (n) { return n.value; });
342
- return __assign(__assign({}, result), (_e = {}, _e[key] = attributeValues[0], _e));
302
+ result[key] = attributeValues[0];
303
+ return result;
343
304
  }
344
- // case: zero attribute
345
- /*
346
- {
347
- key: 'issuer',
348
- localPath: ['AuthnRequest', 'Issuer'],
349
- attributes: []
350
- }
351
- */
305
+ // Zero-attribute capture: element text content.
352
306
  if (attributes.length === 0) {
353
307
  var attributeValue = null;
354
308
  var nodes = toNodeArray((0, xpath_1.select)(baseXPath, targetDoc));
355
309
  if (nodes.length === 1) {
356
310
  var fullPath = "string(".concat(baseXPath).concat(attributeXPath, ")");
357
311
  var strResult = (0, xpath_1.select)(fullPath, targetDoc);
358
- attributeValue = typeof strResult === 'string' ? strResult : strResult === null ? null : Array.isArray(strResult) ? strResult : null;
312
+ // `string(...)` always evaluates to a string in XPath 1.0, but the
313
+ // type signature is wider — the alternative branches are defensive.
314
+ /* v8 ignore next 7 */
315
+ attributeValue =
316
+ typeof strResult === 'string'
317
+ ? strResult
318
+ : strResult === null
319
+ ? null
320
+ : Array.isArray(strResult)
321
+ ? strResult
322
+ : null;
359
323
  }
360
324
  if (nodes.length > 1) {
361
- attributeValue = nodes.filter(function (n) { return n.firstChild; })
325
+ attributeValue = nodes
326
+ .filter(function (n) { return n.firstChild; })
362
327
  .map(function (n) { return n.firstChild.nodeValue; });
363
328
  }
364
- return __assign(__assign({}, result), (_f = {}, _f[key] = attributeValue, _f));
329
+ result[key] = attributeValue;
330
+ return result;
365
331
  }
332
+ /* v8 ignore next */
366
333
  return result;
367
334
  }, {});
368
335
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/extractor.ts"],"names":[],"mappings":"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"}