handlebars-source 4.6.0 → 4.7.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.

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: