UNPKG

astx

Version:

super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring

68 lines (59 loc) 1.82 kB
'use strict' var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault') Object.defineProperty(exports, '__esModule', { value: true, }) exports['default'] = compileOptionalMatcher var _defineProperty2 = _interopRequireDefault( require('@babel/runtime/helpers/defineProperty') ) var _ = _interopRequireDefault(require('.')) function ownKeys(object, enumerableOnly) { var keys = Object.keys(object) if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object) enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable })), keys.push.apply(keys, symbols) } return keys } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {} i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { ;(0, _defineProperty2['default'])(target, key, source[key]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties( target, Object.getOwnPropertyDescriptors(source) ) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty( target, key, Object.getOwnPropertyDescriptor(source, key) ) }) } return target } function compileOptionalMatcher(path, subpath, compileOptions) { var matcher = (0, _['default'])(subpath, compileOptions) return _objectSpread( _objectSpread({}, matcher), {}, { pattern: path, optional: true, match: function match(path, matchSoFar) { if (path.value == null) return matchSoFar || {} return matcher.match(path, matchSoFar) }, } ) }