handlebars-source 4.5.3 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

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: