handlebars-source 4.6.0 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handlebars-source might be problematic. Click here for more details.

Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/handlebars.js +109 -45
  3. data/handlebars.runtime.js +88 -24
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dfba3bf2b52109cb953a0bd751ab6afb8cf894445a158ca5bac52f203ae4a1a8
4
- data.tar.gz: a6c9acbe59f043298dc9ee1e4c2b43ee4192df2aab09472db64472272f689d87
3
+ metadata.gz: '0539ea3c6630b1168bfcae1500a9ebe412a6cd9514c927e850f7fff6d078c6e4'
4
+ data.tar.gz: 8274c670c732b9ac6214eee157353e77e4eac6be78bb83d1c28b3ba3e1c0eeb1
5
5
  SHA512:
6
- metadata.gz: 81dcb5d4fe85a21715999db92d3471955895dfa7803849fa78f487715d3da8e2795ba1d574020cee33cb094eebd0a88c2ef352df7915ccd3b031c0b0500fcdec
7
- data.tar.gz: 01a57c6726e591fee1df4e5bbd6306fbbd701150b3df8e1f5a9300dd82da39c36cceab9ae474344bb857e8b9e77819f052d9bf836fb5efd120651715213e6d96
6
+ metadata.gz: cfedc665313be1ba5df12d125ef60494b3e5526339ad017d07783db1be0658eaeb2664d6f3719ac47a07ab77a85f8009d35bdc810e7bec744bce9285c6ff71b7
7
+ data.tar.gz: 5114f41be7afc851c58064b62e70dc187c67e65307f6b0ee0d78a0b3b1cec9121cb8cf2aec92db2f525eb797cd1f2a99e089df868a9d46c03657222ac3f9eaa6
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
 
3
3
  @license
4
- handlebars v4.6.0
4
+ handlebars v4.7.0
5
5
 
6
6
  Copyright (C) 2011-2019 by Yehuda Katz
7
7
 
@@ -92,23 +92,23 @@ return /******/ (function(modules) { // webpackBootstrap
92
92
 
93
93
  // Compiler imports
94
94
 
95
- var _handlebarsCompilerAst = __webpack_require__(44);
95
+ var _handlebarsCompilerAst = __webpack_require__(45);
96
96
 
97
97
  var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
98
98
 
99
- var _handlebarsCompilerBase = __webpack_require__(45);
99
+ var _handlebarsCompilerBase = __webpack_require__(46);
100
100
 
101
- var _handlebarsCompilerCompiler = __webpack_require__(50);
101
+ var _handlebarsCompilerCompiler = __webpack_require__(51);
102
102
 
103
- var _handlebarsCompilerJavascriptCompiler = __webpack_require__(51);
103
+ var _handlebarsCompilerJavascriptCompiler = __webpack_require__(52);
104
104
 
105
105
  var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
106
106
 
107
- var _handlebarsCompilerVisitor = __webpack_require__(48);
107
+ var _handlebarsCompilerVisitor = __webpack_require__(49);
108
108
 
109
109
  var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
110
110
 
111
- var _handlebarsNoConflict = __webpack_require__(43);
111
+ var _handlebarsNoConflict = __webpack_require__(44);
112
112
 
113
113
  var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
114
114
 
@@ -194,7 +194,7 @@ return /******/ (function(modules) { // webpackBootstrap
194
194
 
195
195
  var runtime = _interopRequireWildcard(_handlebarsRuntime);
196
196
 
197
- var _handlebarsNoConflict = __webpack_require__(43);
197
+ var _handlebarsNoConflict = __webpack_require__(44);
198
198
 
199
199
  var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
200
200
 
@@ -276,7 +276,7 @@ return /******/ (function(modules) { // webpackBootstrap
276
276
 
277
277
  var _logger2 = _interopRequireDefault(_logger);
278
278
 
279
- var VERSION = '4.6.0';
279
+ var VERSION = '4.7.0';
280
280
  exports.VERSION = VERSION;
281
281
  var COMPILER_REVISION = 8;
282
282
  exports.COMPILER_REVISION = COMPILER_REVISION;
@@ -1309,7 +1309,7 @@ return /******/ (function(modules) { // webpackBootstrap
1309
1309
 
1310
1310
  var _internalWrapHelper = __webpack_require__(39);
1311
1311
 
1312
- var _internalCreateNewLookupObject = __webpack_require__(40);
1312
+ var _internalProtoAccess = __webpack_require__(40);
1313
1313
 
1314
1314
  function checkRevision(compilerInfo) {
1315
1315
  var compilerRevision = compilerInfo && compilerInfo[0] || 1,
@@ -1358,8 +1358,7 @@ return /******/ (function(modules) { // webpackBootstrap
1358
1358
 
1359
1359
  var extendedOptions = Utils.extend({}, options, {
1360
1360
  hooks: this.hooks,
1361
- allowedProtoMethods: this.allowedProtoMethods,
1362
- allowedProtoProperties: this.allowedProtoProperties
1361
+ protoAccessControl: this.protoAccessControl
1363
1362
  });
1364
1363
 
1365
1364
  var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
@@ -1398,12 +1397,14 @@ return /******/ (function(modules) { // webpackBootstrap
1398
1397
  },
1399
1398
  lookupProperty: function lookupProperty(parent, propertyName) {
1400
1399
  var result = parent[propertyName];
1400
+ if (result == null) {
1401
+ return result;
1402
+ }
1401
1403
  if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
1402
1404
  return result;
1403
1405
  }
1404
- var whitelist = typeof result === 'function' ? container.allowedProtoMethods : container.allowedProtoProperties;
1405
1406
 
1406
- if (whitelist[propertyName] === true) {
1407
+ if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
1407
1408
  return result;
1408
1409
  }
1409
1410
  return undefined;
@@ -1486,9 +1487,11 @@ return /******/ (function(modules) { // webpackBootstrap
1486
1487
  function main(context /*, options*/) {
1487
1488
  return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
1488
1489
  }
1490
+
1489
1491
  main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
1490
1492
  return main(context, options);
1491
1493
  }
1494
+
1492
1495
  ret.isTop = true;
1493
1496
 
1494
1497
  ret._setup = function (options) {
@@ -1506,15 +1509,13 @@ return /******/ (function(modules) { // webpackBootstrap
1506
1509
  }
1507
1510
 
1508
1511
  container.hooks = {};
1509
- container.allowedProtoProperties = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoProperties);
1510
- container.allowedProtoMethods = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoMethods);
1512
+ container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
1511
1513
 
1512
1514
  var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
1513
1515
  _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
1514
1516
  _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
1515
1517
  } else {
1516
- container.allowedProtoProperties = options.allowedProtoProperties;
1517
- container.allowedProtoMethods = options.allowedProtoMethods;
1518
+ container.protoAccessControl = options.protoAccessControl; // internal option
1518
1519
  container.helpers = options.helpers;
1519
1520
  container.partials = options.partials;
1520
1521
  container.decorators = options.decorators;
@@ -1709,24 +1710,59 @@ return /******/ (function(modules) { // webpackBootstrap
1709
1710
 
1710
1711
  var _Object$create = __webpack_require__(41)['default'];
1711
1712
 
1713
+ var _interopRequireWildcard = __webpack_require__(3)['default'];
1714
+
1712
1715
  exports.__esModule = true;
1713
- exports.createNewLookupObject = createNewLookupObject;
1716
+ exports.createProtoAccessControl = createProtoAccessControl;
1717
+ exports.resultIsAllowed = resultIsAllowed;
1714
1718
 
1715
- var _utils = __webpack_require__(5);
1719
+ var _createNewLookupObject = __webpack_require__(43);
1716
1720
 
1717
- /**
1718
- * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
1719
- * The resulting object can be used with "object[property]" to check if a property exists
1720
- * @param {...object} sources a varargs parameter of source objects that will be merged
1721
- * @returns {object}
1722
- */
1721
+ var _logger = __webpack_require__(32);
1723
1722
 
1724
- function createNewLookupObject() {
1725
- for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1726
- sources[_key] = arguments[_key];
1723
+ var logger = _interopRequireWildcard(_logger);
1724
+
1725
+ function createProtoAccessControl(runtimeOptions) {
1726
+ var defaultMethodWhiteList = _Object$create(null);
1727
+ defaultMethodWhiteList['constructor'] = false;
1728
+ defaultMethodWhiteList['__defineGetter__'] = false;
1729
+ defaultMethodWhiteList['__defineSetter__'] = false;
1730
+ defaultMethodWhiteList['__lookupGetter__'] = false;
1731
+
1732
+ var defaultPropertyWhiteList = _Object$create(null);
1733
+ // eslint-disable-next-line no-proto
1734
+ defaultPropertyWhiteList['__proto__'] = false;
1735
+
1736
+ return {
1737
+ properties: {
1738
+ whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
1739
+ defaultValue: runtimeOptions.allowProtoPropertiesByDefault
1740
+ },
1741
+ methods: {
1742
+ whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
1743
+ defaultValue: runtimeOptions.allowProtoMethodsByDefault
1744
+ }
1745
+ };
1746
+ }
1747
+
1748
+ function resultIsAllowed(result, protoAccessControl, propertyName) {
1749
+ if (typeof result === 'function') {
1750
+ return checkWhiteList(protoAccessControl.methods, propertyName);
1751
+ } else {
1752
+ return checkWhiteList(protoAccessControl.properties, propertyName);
1727
1753
  }
1754
+ }
1728
1755
 
1729
- return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1756
+ function checkWhiteList(protoAccessControlForType, propertyName) {
1757
+ if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
1758
+ return protoAccessControlForType.whitelist[propertyName] === true;
1759
+ }
1760
+ if (protoAccessControlForType.defaultValue !== undefined) {
1761
+ return protoAccessControlForType.defaultValue;
1762
+ }
1763
+ // eslint-disable-next-line no-console
1764
+ logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See http://localhost:8080/api-reference/runtime-options.html#options-to-control-prototype-access for details');
1765
+ return false;
1730
1766
  }
1731
1767
 
1732
1768
  /***/ }),
@@ -1746,6 +1782,34 @@ return /******/ (function(modules) { // webpackBootstrap
1746
1782
 
1747
1783
  /***/ }),
1748
1784
  /* 43 */
1785
+ /***/ (function(module, exports, __webpack_require__) {
1786
+
1787
+ 'use strict';
1788
+
1789
+ var _Object$create = __webpack_require__(41)['default'];
1790
+
1791
+ exports.__esModule = true;
1792
+ exports.createNewLookupObject = createNewLookupObject;
1793
+
1794
+ var _utils = __webpack_require__(5);
1795
+
1796
+ /**
1797
+ * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
1798
+ * The resulting object can be used with "object[property]" to check if a property exists
1799
+ * @param {...object} sources a varargs parameter of source objects that will be merged
1800
+ * @returns {object}
1801
+ */
1802
+
1803
+ function createNewLookupObject() {
1804
+ for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1805
+ sources[_key] = arguments[_key];
1806
+ }
1807
+
1808
+ return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1809
+ }
1810
+
1811
+ /***/ }),
1812
+ /* 44 */
1749
1813
  /***/ (function(module, exports) {
1750
1814
 
1751
1815
  /* WEBPACK VAR INJECTION */(function(global) {'use strict';
@@ -1769,7 +1833,7 @@ return /******/ (function(modules) { // webpackBootstrap
1769
1833
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1770
1834
 
1771
1835
  /***/ }),
1772
- /* 44 */
1836
+ /* 45 */
1773
1837
  /***/ (function(module, exports) {
1774
1838
 
1775
1839
  'use strict';
@@ -1804,7 +1868,7 @@ return /******/ (function(modules) { // webpackBootstrap
1804
1868
  module.exports = exports['default'];
1805
1869
 
1806
1870
  /***/ }),
1807
- /* 45 */
1871
+ /* 46 */
1808
1872
  /***/ (function(module, exports, __webpack_require__) {
1809
1873
 
1810
1874
  'use strict';
@@ -1817,15 +1881,15 @@ return /******/ (function(modules) { // webpackBootstrap
1817
1881
  exports.parseWithoutProcessing = parseWithoutProcessing;
1818
1882
  exports.parse = parse;
1819
1883
 
1820
- var _parser = __webpack_require__(46);
1884
+ var _parser = __webpack_require__(47);
1821
1885
 
1822
1886
  var _parser2 = _interopRequireDefault(_parser);
1823
1887
 
1824
- var _whitespaceControl = __webpack_require__(47);
1888
+ var _whitespaceControl = __webpack_require__(48);
1825
1889
 
1826
1890
  var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
1827
1891
 
1828
- var _helpers = __webpack_require__(49);
1892
+ var _helpers = __webpack_require__(50);
1829
1893
 
1830
1894
  var Helpers = _interopRequireWildcard(_helpers);
1831
1895
 
@@ -1862,7 +1926,7 @@ return /******/ (function(modules) { // webpackBootstrap
1862
1926
  }
1863
1927
 
1864
1928
  /***/ }),
1865
- /* 46 */
1929
+ /* 47 */
1866
1930
  /***/ (function(module, exports) {
1867
1931
 
1868
1932
  // File ignored in coverage tests via setting in .istanbul.yml
@@ -2603,7 +2667,7 @@ return /******/ (function(modules) { // webpackBootstrap
2603
2667
  module.exports = exports["default"];
2604
2668
 
2605
2669
  /***/ }),
2606
- /* 47 */
2670
+ /* 48 */
2607
2671
  /***/ (function(module, exports, __webpack_require__) {
2608
2672
 
2609
2673
  'use strict';
@@ -2612,7 +2676,7 @@ return /******/ (function(modules) { // webpackBootstrap
2612
2676
 
2613
2677
  exports.__esModule = true;
2614
2678
 
2615
- var _visitor = __webpack_require__(48);
2679
+ var _visitor = __webpack_require__(49);
2616
2680
 
2617
2681
  var _visitor2 = _interopRequireDefault(_visitor);
2618
2682
 
@@ -2827,7 +2891,7 @@ return /******/ (function(modules) { // webpackBootstrap
2827
2891
  module.exports = exports['default'];
2828
2892
 
2829
2893
  /***/ }),
2830
- /* 48 */
2894
+ /* 49 */
2831
2895
  /***/ (function(module, exports, __webpack_require__) {
2832
2896
 
2833
2897
  'use strict';
@@ -2970,7 +3034,7 @@ return /******/ (function(modules) { // webpackBootstrap
2970
3034
  module.exports = exports['default'];
2971
3035
 
2972
3036
  /***/ }),
2973
- /* 49 */
3037
+ /* 50 */
2974
3038
  /***/ (function(module, exports, __webpack_require__) {
2975
3039
 
2976
3040
  'use strict';
@@ -3201,7 +3265,7 @@ return /******/ (function(modules) { // webpackBootstrap
3201
3265
  }
3202
3266
 
3203
3267
  /***/ }),
3204
- /* 50 */
3268
+ /* 51 */
3205
3269
  /***/ (function(module, exports, __webpack_require__) {
3206
3270
 
3207
3271
  /* eslint-disable new-cap */
@@ -3223,7 +3287,7 @@ return /******/ (function(modules) { // webpackBootstrap
3223
3287
 
3224
3288
  var _utils = __webpack_require__(5);
3225
3289
 
3226
- var _ast = __webpack_require__(44);
3290
+ var _ast = __webpack_require__(45);
3227
3291
 
3228
3292
  var _ast2 = _interopRequireDefault(_ast);
3229
3293
 
@@ -3772,7 +3836,7 @@ return /******/ (function(modules) { // webpackBootstrap
3772
3836
  }
3773
3837
 
3774
3838
  /***/ }),
3775
- /* 51 */
3839
+ /* 52 */
3776
3840
  /***/ (function(module, exports, __webpack_require__) {
3777
3841
 
3778
3842
  'use strict';
@@ -3791,7 +3855,7 @@ return /******/ (function(modules) { // webpackBootstrap
3791
3855
 
3792
3856
  var _utils = __webpack_require__(5);
3793
3857
 
3794
- var _codeGen = __webpack_require__(52);
3858
+ var _codeGen = __webpack_require__(53);
3795
3859
 
3796
3860
  var _codeGen2 = _interopRequireDefault(_codeGen);
3797
3861
 
@@ -4936,7 +5000,7 @@ return /******/ (function(modules) { // webpackBootstrap
4936
5000
  module.exports = exports['default'];
4937
5001
 
4938
5002
  /***/ }),
4939
- /* 52 */
5003
+ /* 53 */
4940
5004
  /***/ (function(module, exports, __webpack_require__) {
4941
5005
 
4942
5006
  /* global define */
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
 
3
3
  @license
4
- handlebars v4.6.0
4
+ handlebars v4.7.0
5
5
 
6
6
  Copyright (C) 2011-2019 by Yehuda Katz
7
7
 
@@ -111,7 +111,7 @@ return /******/ (function(modules) { // webpackBootstrap
111
111
 
112
112
  var runtime = _interopRequireWildcard(_handlebarsRuntime);
113
113
 
114
- var _handlebarsNoConflict = __webpack_require__(42);
114
+ var _handlebarsNoConflict = __webpack_require__(43);
115
115
 
116
116
  var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
117
117
 
@@ -207,7 +207,7 @@ return /******/ (function(modules) { // webpackBootstrap
207
207
 
208
208
  var _logger2 = _interopRequireDefault(_logger);
209
209
 
210
- var VERSION = '4.6.0';
210
+ var VERSION = '4.7.0';
211
211
  exports.VERSION = VERSION;
212
212
  var COMPILER_REVISION = 8;
213
213
  exports.COMPILER_REVISION = COMPILER_REVISION;
@@ -1240,7 +1240,7 @@ return /******/ (function(modules) { // webpackBootstrap
1240
1240
 
1241
1241
  var _internalWrapHelper = __webpack_require__(38);
1242
1242
 
1243
- var _internalCreateNewLookupObject = __webpack_require__(39);
1243
+ var _internalProtoAccess = __webpack_require__(39);
1244
1244
 
1245
1245
  function checkRevision(compilerInfo) {
1246
1246
  var compilerRevision = compilerInfo && compilerInfo[0] || 1,
@@ -1289,8 +1289,7 @@ return /******/ (function(modules) { // webpackBootstrap
1289
1289
 
1290
1290
  var extendedOptions = Utils.extend({}, options, {
1291
1291
  hooks: this.hooks,
1292
- allowedProtoMethods: this.allowedProtoMethods,
1293
- allowedProtoProperties: this.allowedProtoProperties
1292
+ protoAccessControl: this.protoAccessControl
1294
1293
  });
1295
1294
 
1296
1295
  var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
@@ -1329,12 +1328,14 @@ return /******/ (function(modules) { // webpackBootstrap
1329
1328
  },
1330
1329
  lookupProperty: function lookupProperty(parent, propertyName) {
1331
1330
  var result = parent[propertyName];
1331
+ if (result == null) {
1332
+ return result;
1333
+ }
1332
1334
  if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
1333
1335
  return result;
1334
1336
  }
1335
- var whitelist = typeof result === 'function' ? container.allowedProtoMethods : container.allowedProtoProperties;
1336
1337
 
1337
- if (whitelist[propertyName] === true) {
1338
+ if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
1338
1339
  return result;
1339
1340
  }
1340
1341
  return undefined;
@@ -1417,9 +1418,11 @@ return /******/ (function(modules) { // webpackBootstrap
1417
1418
  function main(context /*, options*/) {
1418
1419
  return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
1419
1420
  }
1421
+
1420
1422
  main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
1421
1423
  return main(context, options);
1422
1424
  }
1425
+
1423
1426
  ret.isTop = true;
1424
1427
 
1425
1428
  ret._setup = function (options) {
@@ -1437,15 +1440,13 @@ return /******/ (function(modules) { // webpackBootstrap
1437
1440
  }
1438
1441
 
1439
1442
  container.hooks = {};
1440
- container.allowedProtoProperties = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoProperties);
1441
- container.allowedProtoMethods = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoMethods);
1443
+ container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
1442
1444
 
1443
1445
  var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
1444
1446
  _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
1445
1447
  _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
1446
1448
  } else {
1447
- container.allowedProtoProperties = options.allowedProtoProperties;
1448
- container.allowedProtoMethods = options.allowedProtoMethods;
1449
+ container.protoAccessControl = options.protoAccessControl; // internal option
1449
1450
  container.helpers = options.helpers;
1450
1451
  container.partials = options.partials;
1451
1452
  container.decorators = options.decorators;
@@ -1640,24 +1641,59 @@ return /******/ (function(modules) { // webpackBootstrap
1640
1641
 
1641
1642
  var _Object$create = __webpack_require__(40)['default'];
1642
1643
 
1644
+ var _interopRequireWildcard = __webpack_require__(1)['default'];
1645
+
1643
1646
  exports.__esModule = true;
1644
- exports.createNewLookupObject = createNewLookupObject;
1647
+ exports.createProtoAccessControl = createProtoAccessControl;
1648
+ exports.resultIsAllowed = resultIsAllowed;
1645
1649
 
1646
- var _utils = __webpack_require__(4);
1650
+ var _createNewLookupObject = __webpack_require__(42);
1647
1651
 
1648
- /**
1649
- * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
1650
- * The resulting object can be used with "object[property]" to check if a property exists
1651
- * @param {...object} sources a varargs parameter of source objects that will be merged
1652
- * @returns {object}
1653
- */
1652
+ var _logger = __webpack_require__(31);
1654
1653
 
1655
- function createNewLookupObject() {
1656
- for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1657
- sources[_key] = arguments[_key];
1654
+ var logger = _interopRequireWildcard(_logger);
1655
+
1656
+ function createProtoAccessControl(runtimeOptions) {
1657
+ var defaultMethodWhiteList = _Object$create(null);
1658
+ defaultMethodWhiteList['constructor'] = false;
1659
+ defaultMethodWhiteList['__defineGetter__'] = false;
1660
+ defaultMethodWhiteList['__defineSetter__'] = false;
1661
+ defaultMethodWhiteList['__lookupGetter__'] = false;
1662
+
1663
+ var defaultPropertyWhiteList = _Object$create(null);
1664
+ // eslint-disable-next-line no-proto
1665
+ defaultPropertyWhiteList['__proto__'] = false;
1666
+
1667
+ return {
1668
+ properties: {
1669
+ whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
1670
+ defaultValue: runtimeOptions.allowProtoPropertiesByDefault
1671
+ },
1672
+ methods: {
1673
+ whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
1674
+ defaultValue: runtimeOptions.allowProtoMethodsByDefault
1675
+ }
1676
+ };
1677
+ }
1678
+
1679
+ function resultIsAllowed(result, protoAccessControl, propertyName) {
1680
+ if (typeof result === 'function') {
1681
+ return checkWhiteList(protoAccessControl.methods, propertyName);
1682
+ } else {
1683
+ return checkWhiteList(protoAccessControl.properties, propertyName);
1658
1684
  }
1685
+ }
1659
1686
 
1660
- return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1687
+ function checkWhiteList(protoAccessControlForType, propertyName) {
1688
+ if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
1689
+ return protoAccessControlForType.whitelist[propertyName] === true;
1690
+ }
1691
+ if (protoAccessControlForType.defaultValue !== undefined) {
1692
+ return protoAccessControlForType.defaultValue;
1693
+ }
1694
+ // eslint-disable-next-line no-console
1695
+ logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See http://localhost:8080/api-reference/runtime-options.html#options-to-control-prototype-access for details');
1696
+ return false;
1661
1697
  }
1662
1698
 
1663
1699
  /***/ }),
@@ -1677,6 +1713,34 @@ return /******/ (function(modules) { // webpackBootstrap
1677
1713
 
1678
1714
  /***/ }),
1679
1715
  /* 42 */
1716
+ /***/ (function(module, exports, __webpack_require__) {
1717
+
1718
+ 'use strict';
1719
+
1720
+ var _Object$create = __webpack_require__(40)['default'];
1721
+
1722
+ exports.__esModule = true;
1723
+ exports.createNewLookupObject = createNewLookupObject;
1724
+
1725
+ var _utils = __webpack_require__(4);
1726
+
1727
+ /**
1728
+ * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
1729
+ * The resulting object can be used with "object[property]" to check if a property exists
1730
+ * @param {...object} sources a varargs parameter of source objects that will be merged
1731
+ * @returns {object}
1732
+ */
1733
+
1734
+ function createNewLookupObject() {
1735
+ for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1736
+ sources[_key] = arguments[_key];
1737
+ }
1738
+
1739
+ return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1740
+ }
1741
+
1742
+ /***/ }),
1743
+ /* 43 */
1680
1744
  /***/ (function(module, exports) {
1681
1745
 
1682
1746
  /* WEBPACK VAR INJECTION */(function(global) {'use strict';
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handlebars-source
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.0
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yehuda Katz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-08 00:00:00.000000000 Z
11
+ date: 2020-01-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Handlebars.js source code wrapper for (pre)compilation gems.
14
14
  email: