handlebars-source 4.5.3 → 4.6.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 +191 -86
  3. data/handlebars.runtime.js +138 -25
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a04c8485dc6cd3d803181c9eab0e00e03c5a6e624e45813e36e060eedee4d259
4
- data.tar.gz: 2013e714d8f5992e29f13e7acadeb2c9c4dbb84909bd3319cad69bf541f3081f
3
+ metadata.gz: dfba3bf2b52109cb953a0bd751ab6afb8cf894445a158ca5bac52f203ae4a1a8
4
+ data.tar.gz: a6c9acbe59f043298dc9ee1e4c2b43ee4192df2aab09472db64472272f689d87
5
5
  SHA512:
6
- metadata.gz: 9cb06be34e945d100b923717fdd52ff06f3ce03b1a26eab98e2897a8b9dd820429764f445e0bdf6f3b701f208e69d1cb9d9f47d89c9e10c1ad948f8741ec7f2a
7
- data.tar.gz: 8903c9b5b65c369097e2d15b09631afca24fa8a2a12dd8bd3ade8a073e064bdc13eae62bf067e0f49073f1f796fb3ed3162d3c9dad88877d638df063a1536ec6
6
+ metadata.gz: 81dcb5d4fe85a21715999db92d3471955895dfa7803849fa78f487715d3da8e2795ba1d574020cee33cb094eebd0a88c2ef352df7915ccd3b031c0b0500fcdec
7
+ data.tar.gz: 01a57c6726e591fee1df4e5bbd6306fbbd701150b3df8e1f5a9300dd82da39c36cceab9ae474344bb857e8b9e77819f052d9bf836fb5efd120651715213e6d96
@@ -1,9 +1,9 @@
1
1
  /**!
2
2
 
3
3
  @license
4
- handlebars v4.5.3
4
+ handlebars v4.6.0
5
5
 
6
- Copyright (C) 2011-2017 by Yehuda Katz
6
+ Copyright (C) 2011-2019 by Yehuda Katz
7
7
 
8
8
  Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  of this software and associated documentation files (the "Software"), to deal
@@ -92,23 +92,23 @@ return /******/ (function(modules) { // webpackBootstrap
92
92
 
93
93
  // Compiler imports
94
94
 
95
- var _handlebarsCompilerAst = __webpack_require__(40);
95
+ var _handlebarsCompilerAst = __webpack_require__(44);
96
96
 
97
97
  var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
98
98
 
99
- var _handlebarsCompilerBase = __webpack_require__(41);
99
+ var _handlebarsCompilerBase = __webpack_require__(45);
100
100
 
101
- var _handlebarsCompilerCompiler = __webpack_require__(46);
101
+ var _handlebarsCompilerCompiler = __webpack_require__(50);
102
102
 
103
- var _handlebarsCompilerJavascriptCompiler = __webpack_require__(49);
103
+ var _handlebarsCompilerJavascriptCompiler = __webpack_require__(51);
104
104
 
105
105
  var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
106
106
 
107
- var _handlebarsCompilerVisitor = __webpack_require__(44);
107
+ var _handlebarsCompilerVisitor = __webpack_require__(48);
108
108
 
109
109
  var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
110
110
 
111
- var _handlebarsNoConflict = __webpack_require__(39);
111
+ var _handlebarsNoConflict = __webpack_require__(43);
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__(39);
197
+ var _handlebarsNoConflict = __webpack_require__(43);
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.5.3';
279
+ var VERSION = '4.6.0';
280
280
  exports.VERSION = VERSION;
281
281
  var COMPILER_REVISION = 8;
282
282
  exports.COMPILER_REVISION = COMPILER_REVISION;
@@ -375,7 +375,6 @@ return /******/ (function(modules) { // webpackBootstrap
375
375
  exports.createFrame = createFrame;
376
376
  exports.blockParams = blockParams;
377
377
  exports.appendContextPath = appendContextPath;
378
-
379
378
  var escape = {
380
379
  '&': '&',
381
380
  '<': '&lt;',
@@ -499,7 +498,6 @@ return /******/ (function(modules) { // webpackBootstrap
499
498
  var _Object$defineProperty = __webpack_require__(7)['default'];
500
499
 
501
500
  exports.__esModule = true;
502
-
503
501
  var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
504
502
 
505
503
  function Exception(message, node) {
@@ -1047,7 +1045,11 @@ return /******/ (function(modules) { // webpackBootstrap
1047
1045
  if (arguments.length != 2) {
1048
1046
  throw new _exception2['default']('#unless requires exactly one argument');
1049
1047
  }
1050
- return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });
1048
+ return instance.helpers['if'].call(this, conditional, {
1049
+ fn: options.inverse,
1050
+ inverse: options.fn,
1051
+ hash: options.hash
1052
+ });
1051
1053
  });
1052
1054
  };
1053
1055
 
@@ -1090,22 +1092,19 @@ return /******/ (function(modules) { // webpackBootstrap
1090
1092
  'use strict';
1091
1093
 
1092
1094
  exports.__esModule = true;
1093
- var dangerousPropertyRegex = /^(constructor|__defineGetter__|__defineSetter__|__lookupGetter__|__proto__)$/;
1094
-
1095
- exports.dangerousPropertyRegex = dangerousPropertyRegex;
1096
1095
 
1097
1096
  exports['default'] = function (instance) {
1098
- instance.registerHelper('lookup', function (obj, field) {
1097
+ instance.registerHelper('lookup', function (obj, field, options) {
1099
1098
  if (!obj) {
1099
+ // Note for 5.0: Change to "obj == null" in 5.0
1100
1100
  return obj;
1101
1101
  }
1102
- if (dangerousPropertyRegex.test(String(field)) && !Object.prototype.propertyIsEnumerable.call(obj, field)) {
1103
- return undefined;
1104
- }
1105
- return obj[field];
1102
+ return options.lookupProperty(obj, field);
1106
1103
  });
1107
1104
  };
1108
1105
 
1106
+ module.exports = exports['default'];
1107
+
1109
1108
  /***/ }),
1110
1109
  /* 29 */
1111
1110
  /***/ (function(module, exports, __webpack_require__) {
@@ -1238,8 +1237,8 @@ return /******/ (function(modules) { // webpackBootstrap
1238
1237
 
1239
1238
  if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
1240
1239
  var method = logger.methodMap[level];
1240
+ // eslint-disable-next-line no-console
1241
1241
  if (!console[method]) {
1242
- // eslint-disable-line no-console
1243
1242
  method = 'log';
1244
1243
  }
1245
1244
 
@@ -1282,6 +1281,8 @@ return /******/ (function(modules) { // webpackBootstrap
1282
1281
 
1283
1282
  var _Object$seal = __webpack_require__(35)['default'];
1284
1283
 
1284
+ var _Object$keys = __webpack_require__(13)['default'];
1285
+
1285
1286
  var _interopRequireWildcard = __webpack_require__(3)['default'];
1286
1287
 
1287
1288
  var _interopRequireDefault = __webpack_require__(1)['default'];
@@ -1306,6 +1307,10 @@ return /******/ (function(modules) { // webpackBootstrap
1306
1307
 
1307
1308
  var _helpers = __webpack_require__(10);
1308
1309
 
1310
+ var _internalWrapHelper = __webpack_require__(39);
1311
+
1312
+ var _internalCreateNewLookupObject = __webpack_require__(40);
1313
+
1309
1314
  function checkRevision(compilerInfo) {
1310
1315
  var compilerRevision = compilerInfo && compilerInfo[0] || 1,
1311
1316
  currentRevision = _base.COMPILER_REVISION;
@@ -1325,7 +1330,6 @@ return /******/ (function(modules) { // webpackBootstrap
1325
1330
  }
1326
1331
 
1327
1332
  function template(templateSpec, env) {
1328
-
1329
1333
  /* istanbul ignore next */
1330
1334
  if (!env) {
1331
1335
  throw new _exception2['default']('No environment passed to template');
@@ -1352,13 +1356,17 @@ return /******/ (function(modules) { // webpackBootstrap
1352
1356
  }
1353
1357
  partial = env.VM.resolvePartial.call(this, partial, context, options);
1354
1358
 
1355
- var optionsWithHooks = Utils.extend({}, options, { hooks: this.hooks });
1359
+ var extendedOptions = Utils.extend({}, options, {
1360
+ hooks: this.hooks,
1361
+ allowedProtoMethods: this.allowedProtoMethods,
1362
+ allowedProtoProperties: this.allowedProtoProperties
1363
+ });
1356
1364
 
1357
- var result = env.VM.invokePartial.call(this, partial, context, optionsWithHooks);
1365
+ var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
1358
1366
 
1359
1367
  if (result == null && env.compile) {
1360
1368
  options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
1361
- result = options.partials[options.name](context, optionsWithHooks);
1369
+ result = options.partials[options.name](context, extendedOptions);
1362
1370
  }
1363
1371
  if (result != null) {
1364
1372
  if (options.indent) {
@@ -1382,14 +1390,29 @@ return /******/ (function(modules) { // webpackBootstrap
1382
1390
  var container = {
1383
1391
  strict: function strict(obj, name, loc) {
1384
1392
  if (!obj || !(name in obj)) {
1385
- throw new _exception2['default']('"' + name + '" not defined in ' + obj, { loc: loc });
1393
+ throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
1394
+ loc: loc
1395
+ });
1386
1396
  }
1387
1397
  return obj[name];
1388
1398
  },
1399
+ lookupProperty: function lookupProperty(parent, propertyName) {
1400
+ var result = parent[propertyName];
1401
+ if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
1402
+ return result;
1403
+ }
1404
+ var whitelist = typeof result === 'function' ? container.allowedProtoMethods : container.allowedProtoProperties;
1405
+
1406
+ if (whitelist[propertyName] === true) {
1407
+ return result;
1408
+ }
1409
+ return undefined;
1410
+ },
1389
1411
  lookup: function lookup(depths, name) {
1390
1412
  var len = depths.length;
1391
1413
  for (var i = 0; i < len; i++) {
1392
- if (depths[i] && depths[i][name] != null) {
1414
+ var result = depths[i] && container.lookupProperty(depths[i], name);
1415
+ if (result != null) {
1393
1416
  return depths[i][name];
1394
1417
  }
1395
1418
  }
@@ -1425,6 +1448,15 @@ return /******/ (function(modules) { // webpackBootstrap
1425
1448
  }
1426
1449
  return value;
1427
1450
  },
1451
+ mergeIfNeeded: function mergeIfNeeded(param, common) {
1452
+ var obj = param || common;
1453
+
1454
+ if (param && common && param !== common) {
1455
+ obj = Utils.extend({}, common, param);
1456
+ }
1457
+
1458
+ return obj;
1459
+ },
1428
1460
  // An empty object to use as replacement for null-contexts
1429
1461
  nullContext: _Object$seal({}),
1430
1462
 
@@ -1461,21 +1493,28 @@ return /******/ (function(modules) { // webpackBootstrap
1461
1493
 
1462
1494
  ret._setup = function (options) {
1463
1495
  if (!options.partial) {
1464
- container.helpers = Utils.extend({}, env.helpers, options.helpers);
1496
+ var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
1497
+ wrapHelpersToPassLookupProperty(mergedHelpers, container);
1498
+ container.helpers = mergedHelpers;
1465
1499
 
1466
1500
  if (templateSpec.usePartial) {
1467
- container.partials = Utils.extend({}, env.partials, options.partials);
1501
+ // Use mergeIfNeeded here to prevent compiling global partials multiple times
1502
+ container.partials = container.mergeIfNeeded(options.partials, env.partials);
1468
1503
  }
1469
1504
  if (templateSpec.usePartial || templateSpec.useDecorators) {
1470
1505
  container.decorators = Utils.extend({}, env.decorators, options.decorators);
1471
1506
  }
1472
1507
 
1473
1508
  container.hooks = {};
1509
+ container.allowedProtoProperties = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoProperties);
1510
+ container.allowedProtoMethods = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoMethods);
1474
1511
 
1475
1512
  var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
1476
1513
  _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
1477
1514
  _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
1478
1515
  } else {
1516
+ container.allowedProtoProperties = options.allowedProtoProperties;
1517
+ container.allowedProtoMethods = options.allowedProtoMethods;
1479
1518
  container.helpers = options.helpers;
1480
1519
  container.partials = options.partials;
1481
1520
  container.decorators = options.decorators;
@@ -1596,6 +1635,20 @@ return /******/ (function(modules) { // webpackBootstrap
1596
1635
  return prog;
1597
1636
  }
1598
1637
 
1638
+ function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
1639
+ _Object$keys(mergedHelpers).forEach(function (helperName) {
1640
+ var helper = mergedHelpers[helperName];
1641
+ mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
1642
+ });
1643
+ }
1644
+
1645
+ function passLookupPropertyOption(helper, container) {
1646
+ var lookupProperty = container.lookupProperty;
1647
+ return _internalWrapHelper.wrapHelper(helper, function (options) {
1648
+ return Utils.extend({ lookupProperty: lookupProperty }, options);
1649
+ });
1650
+ }
1651
+
1599
1652
  /***/ }),
1600
1653
  /* 35 */
1601
1654
  /***/ (function(module, exports, __webpack_require__) {
@@ -1634,9 +1687,69 @@ return /******/ (function(modules) { // webpackBootstrap
1634
1687
  /* 39 */
1635
1688
  /***/ (function(module, exports) {
1636
1689
 
1637
- /* WEBPACK VAR INJECTION */(function(global) {/* global window */
1690
+ "use strict";
1691
+
1692
+ exports.__esModule = true;
1693
+ exports.wrapHelper = wrapHelper;
1694
+
1695
+ function wrapHelper(helper, transformOptionsFn) {
1696
+ var wrapper = function wrapper() /* dynamic arguments */{
1697
+ var options = arguments[arguments.length - 1];
1698
+ arguments[arguments.length - 1] = transformOptionsFn(options);
1699
+ return helper.apply(this, arguments);
1700
+ };
1701
+ return wrapper;
1702
+ }
1703
+
1704
+ /***/ }),
1705
+ /* 40 */
1706
+ /***/ (function(module, exports, __webpack_require__) {
1707
+
1638
1708
  'use strict';
1639
1709
 
1710
+ var _Object$create = __webpack_require__(41)['default'];
1711
+
1712
+ exports.__esModule = true;
1713
+ exports.createNewLookupObject = createNewLookupObject;
1714
+
1715
+ var _utils = __webpack_require__(5);
1716
+
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
+ */
1723
+
1724
+ function createNewLookupObject() {
1725
+ for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1726
+ sources[_key] = arguments[_key];
1727
+ }
1728
+
1729
+ return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1730
+ }
1731
+
1732
+ /***/ }),
1733
+ /* 41 */
1734
+ /***/ (function(module, exports, __webpack_require__) {
1735
+
1736
+ module.exports = { "default": __webpack_require__(42), __esModule: true };
1737
+
1738
+ /***/ }),
1739
+ /* 42 */
1740
+ /***/ (function(module, exports, __webpack_require__) {
1741
+
1742
+ var $ = __webpack_require__(9);
1743
+ module.exports = function create(P, D){
1744
+ return $.create(P, D);
1745
+ };
1746
+
1747
+ /***/ }),
1748
+ /* 43 */
1749
+ /***/ (function(module, exports) {
1750
+
1751
+ /* WEBPACK VAR INJECTION */(function(global) {'use strict';
1752
+
1640
1753
  exports.__esModule = true;
1641
1754
 
1642
1755
  exports['default'] = function (Handlebars) {
@@ -1656,7 +1769,7 @@ return /******/ (function(modules) { // webpackBootstrap
1656
1769
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1657
1770
 
1658
1771
  /***/ }),
1659
- /* 40 */
1772
+ /* 44 */
1660
1773
  /***/ (function(module, exports) {
1661
1774
 
1662
1775
  'use strict';
@@ -1691,7 +1804,7 @@ return /******/ (function(modules) { // webpackBootstrap
1691
1804
  module.exports = exports['default'];
1692
1805
 
1693
1806
  /***/ }),
1694
- /* 41 */
1807
+ /* 45 */
1695
1808
  /***/ (function(module, exports, __webpack_require__) {
1696
1809
 
1697
1810
  'use strict';
@@ -1704,15 +1817,15 @@ return /******/ (function(modules) { // webpackBootstrap
1704
1817
  exports.parseWithoutProcessing = parseWithoutProcessing;
1705
1818
  exports.parse = parse;
1706
1819
 
1707
- var _parser = __webpack_require__(42);
1820
+ var _parser = __webpack_require__(46);
1708
1821
 
1709
1822
  var _parser2 = _interopRequireDefault(_parser);
1710
1823
 
1711
- var _whitespaceControl = __webpack_require__(43);
1824
+ var _whitespaceControl = __webpack_require__(47);
1712
1825
 
1713
1826
  var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
1714
1827
 
1715
- var _helpers = __webpack_require__(45);
1828
+ var _helpers = __webpack_require__(49);
1716
1829
 
1717
1830
  var Helpers = _interopRequireWildcard(_helpers);
1718
1831
 
@@ -1749,7 +1862,7 @@ return /******/ (function(modules) { // webpackBootstrap
1749
1862
  }
1750
1863
 
1751
1864
  /***/ }),
1752
- /* 42 */
1865
+ /* 46 */
1753
1866
  /***/ (function(module, exports) {
1754
1867
 
1755
1868
  // File ignored in coverage tests via setting in .istanbul.yml
@@ -2490,7 +2603,7 @@ return /******/ (function(modules) { // webpackBootstrap
2490
2603
  module.exports = exports["default"];
2491
2604
 
2492
2605
  /***/ }),
2493
- /* 43 */
2606
+ /* 47 */
2494
2607
  /***/ (function(module, exports, __webpack_require__) {
2495
2608
 
2496
2609
  'use strict';
@@ -2499,7 +2612,7 @@ return /******/ (function(modules) { // webpackBootstrap
2499
2612
 
2500
2613
  exports.__esModule = true;
2501
2614
 
2502
- var _visitor = __webpack_require__(44);
2615
+ var _visitor = __webpack_require__(48);
2503
2616
 
2504
2617
  var _visitor2 = _interopRequireDefault(_visitor);
2505
2618
 
@@ -2714,7 +2827,7 @@ return /******/ (function(modules) { // webpackBootstrap
2714
2827
  module.exports = exports['default'];
2715
2828
 
2716
2829
  /***/ }),
2717
- /* 44 */
2830
+ /* 48 */
2718
2831
  /***/ (function(module, exports, __webpack_require__) {
2719
2832
 
2720
2833
  'use strict';
@@ -2857,7 +2970,7 @@ return /******/ (function(modules) { // webpackBootstrap
2857
2970
  module.exports = exports['default'];
2858
2971
 
2859
2972
  /***/ }),
2860
- /* 45 */
2973
+ /* 49 */
2861
2974
  /***/ (function(module, exports, __webpack_require__) {
2862
2975
 
2863
2976
  'use strict';
@@ -3088,14 +3201,14 @@ return /******/ (function(modules) { // webpackBootstrap
3088
3201
  }
3089
3202
 
3090
3203
  /***/ }),
3091
- /* 46 */
3204
+ /* 50 */
3092
3205
  /***/ (function(module, exports, __webpack_require__) {
3093
3206
 
3094
3207
  /* eslint-disable new-cap */
3095
3208
 
3096
3209
  'use strict';
3097
3210
 
3098
- var _Object$create = __webpack_require__(47)['default'];
3211
+ var _Object$create = __webpack_require__(41)['default'];
3099
3212
 
3100
3213
  var _interopRequireDefault = __webpack_require__(1)['default'];
3101
3214
 
@@ -3110,7 +3223,7 @@ return /******/ (function(modules) { // webpackBootstrap
3110
3223
 
3111
3224
  var _utils = __webpack_require__(5);
3112
3225
 
3113
- var _ast = __webpack_require__(40);
3226
+ var _ast = __webpack_require__(44);
3114
3227
 
3115
3228
  var _ast2 = _interopRequireDefault(_ast);
3116
3229
 
@@ -3165,14 +3278,14 @@ return /******/ (function(modules) { // webpackBootstrap
3165
3278
  options.blockParams = options.blockParams || [];
3166
3279
 
3167
3280
  options.knownHelpers = _utils.extend(_Object$create(null), {
3168
- 'helperMissing': true,
3169
- 'blockHelperMissing': true,
3170
- 'each': true,
3281
+ helperMissing: true,
3282
+ blockHelperMissing: true,
3283
+ each: true,
3171
3284
  'if': true,
3172
- 'unless': true,
3285
+ unless: true,
3173
3286
  'with': true,
3174
- 'log': true,
3175
- 'lookup': true
3287
+ log: true,
3288
+ lookup: true
3176
3289
  }, options.knownHelpers);
3177
3290
 
3178
3291
  return this.accept(program);
@@ -3439,7 +3552,11 @@ return /******/ (function(modules) { // webpackBootstrap
3439
3552
 
3440
3553
  // HELPERS
3441
3554
  opcode: function opcode(name) {
3442
- this.opcodes.push({ opcode: name, args: slice.call(arguments, 1), loc: this.sourceNode[0].loc });
3555
+ this.opcodes.push({
3556
+ opcode: name,
3557
+ args: slice.call(arguments, 1),
3558
+ loc: this.sourceNode[0].loc
3559
+ });
3443
3560
  },
3444
3561
 
3445
3562
  addDepth: function addDepth(depth) {
@@ -3655,22 +3772,7 @@ return /******/ (function(modules) { // webpackBootstrap
3655
3772
  }
3656
3773
 
3657
3774
  /***/ }),
3658
- /* 47 */
3659
- /***/ (function(module, exports, __webpack_require__) {
3660
-
3661
- module.exports = { "default": __webpack_require__(48), __esModule: true };
3662
-
3663
- /***/ }),
3664
- /* 48 */
3665
- /***/ (function(module, exports, __webpack_require__) {
3666
-
3667
- var $ = __webpack_require__(9);
3668
- module.exports = function create(P, D){
3669
- return $.create(P, D);
3670
- };
3671
-
3672
- /***/ }),
3673
- /* 49 */
3775
+ /* 51 */
3674
3776
  /***/ (function(module, exports, __webpack_require__) {
3675
3777
 
3676
3778
  'use strict';
@@ -3689,12 +3791,10 @@ return /******/ (function(modules) { // webpackBootstrap
3689
3791
 
3690
3792
  var _utils = __webpack_require__(5);
3691
3793
 
3692
- var _codeGen = __webpack_require__(50);
3794
+ var _codeGen = __webpack_require__(52);
3693
3795
 
3694
3796
  var _codeGen2 = _interopRequireDefault(_codeGen);
3695
3797
 
3696
- var _helpersLookup = __webpack_require__(28);
3697
-
3698
3798
  function Literal(value) {
3699
3799
  this.value = value;
3700
3800
  }
@@ -3704,20 +3804,8 @@ return /******/ (function(modules) { // webpackBootstrap
3704
3804
  JavaScriptCompiler.prototype = {
3705
3805
  // PUBLIC API: You can override these methods in a subclass to provide
3706
3806
  // alternative compiled forms for name lookup and buffering semantics
3707
- nameLookup: function nameLookup(parent, name /* , type*/) {
3708
- if (_helpersLookup.dangerousPropertyRegex.test(name)) {
3709
- var isEnumerable = [this.aliasable('container.propertyIsEnumerable'), '.call(', parent, ',', JSON.stringify(name), ')'];
3710
- return ['(', isEnumerable, '?', _actualLookup(), ' : undefined)'];
3711
- }
3712
- return _actualLookup();
3713
-
3714
- function _actualLookup() {
3715
- if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
3716
- return [parent, '.', name];
3717
- } else {
3718
- return [parent, '[', JSON.stringify(name), ']'];
3719
- }
3720
- }
3807
+ nameLookup: function nameLookup(parent, name /*, type */) {
3808
+ return this.internalNameLookup(parent, name);
3721
3809
  },
3722
3810
  depthedLookup: function depthedLookup(name) {
3723
3811
  return [this.aliasable('container.lookup'), '(depths, "', name, '")'];
@@ -3753,6 +3841,12 @@ return /******/ (function(modules) { // webpackBootstrap
3753
3841
  return this.quotedString('');
3754
3842
  },
3755
3843
  // END PUBLIC API
3844
+ internalNameLookup: function internalNameLookup(parent, name) {
3845
+ this.lookupPropertyFunctionIsUsed = true;
3846
+ return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];
3847
+ },
3848
+
3849
+ lookupPropertyFunctionIsUsed: false,
3756
3850
 
3757
3851
  compile: function compile(environment, options, context, asObject) {
3758
3852
  this.environment = environment;
@@ -3811,7 +3905,7 @@ return /******/ (function(modules) { // webpackBootstrap
3811
3905
  if (!this.decorators.isEmpty()) {
3812
3906
  this.useDecorators = true;
3813
3907
 
3814
- this.decorators.prepend('var decorators = container.decorators;\n');
3908
+ this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\n']);
3815
3909
  this.decorators.push('return fn;');
3816
3910
 
3817
3911
  if (asObject) {
@@ -3924,6 +4018,10 @@ return /******/ (function(modules) { // webpackBootstrap
3924
4018
  }
3925
4019
  });
3926
4020
 
4021
+ if (this.lookupPropertyFunctionIsUsed) {
4022
+ varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();
4023
+ }
4024
+
3927
4025
  var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
3928
4026
 
3929
4027
  if (this.useBlockParams || this.useDepths) {
@@ -4002,6 +4100,10 @@ return /******/ (function(modules) { // webpackBootstrap
4002
4100
  return this.source.merge();
4003
4101
  },
4004
4102
 
4103
+ lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() {
4104
+ return '\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n '.trim();
4105
+ },
4106
+
4005
4107
  // [blockValue]
4006
4108
  //
4007
4109
  // On stack, before: hash, inverse, program, value
@@ -4804,6 +4906,9 @@ return /******/ (function(modules) { // webpackBootstrap
4804
4906
  }
4805
4907
  })();
4806
4908
 
4909
+ /**
4910
+ * @deprecated May be removed in the next major version
4911
+ */
4807
4912
  JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
4808
4913
  return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
4809
4914
  };
@@ -4831,7 +4936,7 @@ return /******/ (function(modules) { // webpackBootstrap
4831
4936
  module.exports = exports['default'];
4832
4937
 
4833
4938
  /***/ }),
4834
- /* 50 */
4939
+ /* 52 */
4835
4940
  /***/ (function(module, exports, __webpack_require__) {
4836
4941
 
4837
4942
  /* global define */
@@ -1,9 +1,9 @@
1
1
  /**!
2
2
 
3
3
  @license
4
- handlebars v4.5.3
4
+ handlebars v4.6.0
5
5
 
6
- Copyright (C) 2011-2017 by Yehuda Katz
6
+ Copyright (C) 2011-2019 by Yehuda Katz
7
7
 
8
8
  Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  of this software and associated documentation files (the "Software"), to deal
@@ -111,7 +111,7 @@ return /******/ (function(modules) { // webpackBootstrap
111
111
 
112
112
  var runtime = _interopRequireWildcard(_handlebarsRuntime);
113
113
 
114
- var _handlebarsNoConflict = __webpack_require__(38);
114
+ var _handlebarsNoConflict = __webpack_require__(42);
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.5.3';
210
+ var VERSION = '4.6.0';
211
211
  exports.VERSION = VERSION;
212
212
  var COMPILER_REVISION = 8;
213
213
  exports.COMPILER_REVISION = COMPILER_REVISION;
@@ -306,7 +306,6 @@ return /******/ (function(modules) { // webpackBootstrap
306
306
  exports.createFrame = createFrame;
307
307
  exports.blockParams = blockParams;
308
308
  exports.appendContextPath = appendContextPath;
309
-
310
309
  var escape = {
311
310
  '&': '&amp;',
312
311
  '<': '&lt;',
@@ -430,7 +429,6 @@ return /******/ (function(modules) { // webpackBootstrap
430
429
  var _Object$defineProperty = __webpack_require__(6)['default'];
431
430
 
432
431
  exports.__esModule = true;
433
-
434
432
  var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
435
433
 
436
434
  function Exception(message, node) {
@@ -978,7 +976,11 @@ return /******/ (function(modules) { // webpackBootstrap
978
976
  if (arguments.length != 2) {
979
977
  throw new _exception2['default']('#unless requires exactly one argument');
980
978
  }
981
- return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });
979
+ return instance.helpers['if'].call(this, conditional, {
980
+ fn: options.inverse,
981
+ inverse: options.fn,
982
+ hash: options.hash
983
+ });
982
984
  });
983
985
  };
984
986
 
@@ -1021,22 +1023,19 @@ return /******/ (function(modules) { // webpackBootstrap
1021
1023
  'use strict';
1022
1024
 
1023
1025
  exports.__esModule = true;
1024
- var dangerousPropertyRegex = /^(constructor|__defineGetter__|__defineSetter__|__lookupGetter__|__proto__)$/;
1025
-
1026
- exports.dangerousPropertyRegex = dangerousPropertyRegex;
1027
1026
 
1028
1027
  exports['default'] = function (instance) {
1029
- instance.registerHelper('lookup', function (obj, field) {
1028
+ instance.registerHelper('lookup', function (obj, field, options) {
1030
1029
  if (!obj) {
1030
+ // Note for 5.0: Change to "obj == null" in 5.0
1031
1031
  return obj;
1032
1032
  }
1033
- if (dangerousPropertyRegex.test(String(field)) && !Object.prototype.propertyIsEnumerable.call(obj, field)) {
1034
- return undefined;
1035
- }
1036
- return obj[field];
1033
+ return options.lookupProperty(obj, field);
1037
1034
  });
1038
1035
  };
1039
1036
 
1037
+ module.exports = exports['default'];
1038
+
1040
1039
  /***/ }),
1041
1040
  /* 28 */
1042
1041
  /***/ (function(module, exports, __webpack_require__) {
@@ -1169,8 +1168,8 @@ return /******/ (function(modules) { // webpackBootstrap
1169
1168
 
1170
1169
  if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
1171
1170
  var method = logger.methodMap[level];
1171
+ // eslint-disable-next-line no-console
1172
1172
  if (!console[method]) {
1173
- // eslint-disable-line no-console
1174
1173
  method = 'log';
1175
1174
  }
1176
1175
 
@@ -1213,6 +1212,8 @@ return /******/ (function(modules) { // webpackBootstrap
1213
1212
 
1214
1213
  var _Object$seal = __webpack_require__(34)['default'];
1215
1214
 
1215
+ var _Object$keys = __webpack_require__(12)['default'];
1216
+
1216
1217
  var _interopRequireWildcard = __webpack_require__(1)['default'];
1217
1218
 
1218
1219
  var _interopRequireDefault = __webpack_require__(2)['default'];
@@ -1237,6 +1238,10 @@ return /******/ (function(modules) { // webpackBootstrap
1237
1238
 
1238
1239
  var _helpers = __webpack_require__(9);
1239
1240
 
1241
+ var _internalWrapHelper = __webpack_require__(38);
1242
+
1243
+ var _internalCreateNewLookupObject = __webpack_require__(39);
1244
+
1240
1245
  function checkRevision(compilerInfo) {
1241
1246
  var compilerRevision = compilerInfo && compilerInfo[0] || 1,
1242
1247
  currentRevision = _base.COMPILER_REVISION;
@@ -1256,7 +1261,6 @@ return /******/ (function(modules) { // webpackBootstrap
1256
1261
  }
1257
1262
 
1258
1263
  function template(templateSpec, env) {
1259
-
1260
1264
  /* istanbul ignore next */
1261
1265
  if (!env) {
1262
1266
  throw new _exception2['default']('No environment passed to template');
@@ -1283,13 +1287,17 @@ return /******/ (function(modules) { // webpackBootstrap
1283
1287
  }
1284
1288
  partial = env.VM.resolvePartial.call(this, partial, context, options);
1285
1289
 
1286
- var optionsWithHooks = Utils.extend({}, options, { hooks: this.hooks });
1290
+ var extendedOptions = Utils.extend({}, options, {
1291
+ hooks: this.hooks,
1292
+ allowedProtoMethods: this.allowedProtoMethods,
1293
+ allowedProtoProperties: this.allowedProtoProperties
1294
+ });
1287
1295
 
1288
- var result = env.VM.invokePartial.call(this, partial, context, optionsWithHooks);
1296
+ var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
1289
1297
 
1290
1298
  if (result == null && env.compile) {
1291
1299
  options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
1292
- result = options.partials[options.name](context, optionsWithHooks);
1300
+ result = options.partials[options.name](context, extendedOptions);
1293
1301
  }
1294
1302
  if (result != null) {
1295
1303
  if (options.indent) {
@@ -1313,14 +1321,29 @@ return /******/ (function(modules) { // webpackBootstrap
1313
1321
  var container = {
1314
1322
  strict: function strict(obj, name, loc) {
1315
1323
  if (!obj || !(name in obj)) {
1316
- throw new _exception2['default']('"' + name + '" not defined in ' + obj, { loc: loc });
1324
+ throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
1325
+ loc: loc
1326
+ });
1317
1327
  }
1318
1328
  return obj[name];
1319
1329
  },
1330
+ lookupProperty: function lookupProperty(parent, propertyName) {
1331
+ var result = parent[propertyName];
1332
+ if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
1333
+ return result;
1334
+ }
1335
+ var whitelist = typeof result === 'function' ? container.allowedProtoMethods : container.allowedProtoProperties;
1336
+
1337
+ if (whitelist[propertyName] === true) {
1338
+ return result;
1339
+ }
1340
+ return undefined;
1341
+ },
1320
1342
  lookup: function lookup(depths, name) {
1321
1343
  var len = depths.length;
1322
1344
  for (var i = 0; i < len; i++) {
1323
- if (depths[i] && depths[i][name] != null) {
1345
+ var result = depths[i] && container.lookupProperty(depths[i], name);
1346
+ if (result != null) {
1324
1347
  return depths[i][name];
1325
1348
  }
1326
1349
  }
@@ -1356,6 +1379,15 @@ return /******/ (function(modules) { // webpackBootstrap
1356
1379
  }
1357
1380
  return value;
1358
1381
  },
1382
+ mergeIfNeeded: function mergeIfNeeded(param, common) {
1383
+ var obj = param || common;
1384
+
1385
+ if (param && common && param !== common) {
1386
+ obj = Utils.extend({}, common, param);
1387
+ }
1388
+
1389
+ return obj;
1390
+ },
1359
1391
  // An empty object to use as replacement for null-contexts
1360
1392
  nullContext: _Object$seal({}),
1361
1393
 
@@ -1392,21 +1424,28 @@ return /******/ (function(modules) { // webpackBootstrap
1392
1424
 
1393
1425
  ret._setup = function (options) {
1394
1426
  if (!options.partial) {
1395
- container.helpers = Utils.extend({}, env.helpers, options.helpers);
1427
+ var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
1428
+ wrapHelpersToPassLookupProperty(mergedHelpers, container);
1429
+ container.helpers = mergedHelpers;
1396
1430
 
1397
1431
  if (templateSpec.usePartial) {
1398
- container.partials = Utils.extend({}, env.partials, options.partials);
1432
+ // Use mergeIfNeeded here to prevent compiling global partials multiple times
1433
+ container.partials = container.mergeIfNeeded(options.partials, env.partials);
1399
1434
  }
1400
1435
  if (templateSpec.usePartial || templateSpec.useDecorators) {
1401
1436
  container.decorators = Utils.extend({}, env.decorators, options.decorators);
1402
1437
  }
1403
1438
 
1404
1439
  container.hooks = {};
1440
+ container.allowedProtoProperties = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoProperties);
1441
+ container.allowedProtoMethods = _internalCreateNewLookupObject.createNewLookupObject(options.allowedProtoMethods);
1405
1442
 
1406
1443
  var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
1407
1444
  _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
1408
1445
  _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
1409
1446
  } else {
1447
+ container.allowedProtoProperties = options.allowedProtoProperties;
1448
+ container.allowedProtoMethods = options.allowedProtoMethods;
1410
1449
  container.helpers = options.helpers;
1411
1450
  container.partials = options.partials;
1412
1451
  container.decorators = options.decorators;
@@ -1527,6 +1566,20 @@ return /******/ (function(modules) { // webpackBootstrap
1527
1566
  return prog;
1528
1567
  }
1529
1568
 
1569
+ function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
1570
+ _Object$keys(mergedHelpers).forEach(function (helperName) {
1571
+ var helper = mergedHelpers[helperName];
1572
+ mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
1573
+ });
1574
+ }
1575
+
1576
+ function passLookupPropertyOption(helper, container) {
1577
+ var lookupProperty = container.lookupProperty;
1578
+ return _internalWrapHelper.wrapHelper(helper, function (options) {
1579
+ return Utils.extend({ lookupProperty: lookupProperty }, options);
1580
+ });
1581
+ }
1582
+
1530
1583
  /***/ }),
1531
1584
  /* 34 */
1532
1585
  /***/ (function(module, exports, __webpack_require__) {
@@ -1565,9 +1618,69 @@ return /******/ (function(modules) { // webpackBootstrap
1565
1618
  /* 38 */
1566
1619
  /***/ (function(module, exports) {
1567
1620
 
1568
- /* WEBPACK VAR INJECTION */(function(global) {/* global window */
1621
+ "use strict";
1622
+
1623
+ exports.__esModule = true;
1624
+ exports.wrapHelper = wrapHelper;
1625
+
1626
+ function wrapHelper(helper, transformOptionsFn) {
1627
+ var wrapper = function wrapper() /* dynamic arguments */{
1628
+ var options = arguments[arguments.length - 1];
1629
+ arguments[arguments.length - 1] = transformOptionsFn(options);
1630
+ return helper.apply(this, arguments);
1631
+ };
1632
+ return wrapper;
1633
+ }
1634
+
1635
+ /***/ }),
1636
+ /* 39 */
1637
+ /***/ (function(module, exports, __webpack_require__) {
1638
+
1569
1639
  'use strict';
1570
1640
 
1641
+ var _Object$create = __webpack_require__(40)['default'];
1642
+
1643
+ exports.__esModule = true;
1644
+ exports.createNewLookupObject = createNewLookupObject;
1645
+
1646
+ var _utils = __webpack_require__(4);
1647
+
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
+ */
1654
+
1655
+ function createNewLookupObject() {
1656
+ for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1657
+ sources[_key] = arguments[_key];
1658
+ }
1659
+
1660
+ return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1661
+ }
1662
+
1663
+ /***/ }),
1664
+ /* 40 */
1665
+ /***/ (function(module, exports, __webpack_require__) {
1666
+
1667
+ module.exports = { "default": __webpack_require__(41), __esModule: true };
1668
+
1669
+ /***/ }),
1670
+ /* 41 */
1671
+ /***/ (function(module, exports, __webpack_require__) {
1672
+
1673
+ var $ = __webpack_require__(8);
1674
+ module.exports = function create(P, D){
1675
+ return $.create(P, D);
1676
+ };
1677
+
1678
+ /***/ }),
1679
+ /* 42 */
1680
+ /***/ (function(module, exports) {
1681
+
1682
+ /* WEBPACK VAR INJECTION */(function(global) {'use strict';
1683
+
1571
1684
  exports.__esModule = true;
1572
1685
 
1573
1686
  exports['default'] = function (Handlebars) {
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.5.3
4
+ version: 4.6.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: 2019-11-18 00:00:00.000000000 Z
11
+ date: 2020-01-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Handlebars.js source code wrapper for (pre)compilation gems.
14
14
  email: