text: "use strict";
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.createItemFromDescriptor = createItemFromDescriptor;
  exports.createConfigItem = createConfigItem;
  exports.getItemDescriptor = getItemDescriptor;
  
  function _path() {
    const data = _interopRequireDefault(require("path"));
  
    _path = function () {
      return data;
    };
  
    return data;
  }
  
  var _configDescriptors = require("./config-descriptors");
  
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  
  function createItemFromDescriptor(desc) {
    return new ConfigItem(desc);
  }
  
  function createConfigItem(value, {
    dirname = ".",
    type
  } = {}) {
    const descriptor = (0, _configDescriptors.createDescriptor)(value, _path().default.resolve(dirname), {
      type,
      alias: "programmatic item"
    });
    return createItemFromDescriptor(descriptor);
  }
  
  function getItemDescriptor(item) {
    if (item instanceof ConfigItem) {
      return item._descriptor;
    }
  
    return undefined;
  }
  
  class ConfigItem {
    constructor(descriptor) {
      this._descriptor = descriptor;
      Object.defineProperty(this, "_descriptor", {
        enumerable: false
      });
      this.value = this._descriptor.value;
      this.options = this._descriptor.options;
      this.dirname = this._descriptor.dirname;
      this.name = this._descriptor.name;
      this.file = this._descriptor.file ? {
        request: this._descriptor.file.request,
        resolved: this._descriptor.file.resolved
      } : undefined;
      Object.freeze(this);
    }
  
  }
  
  Object.freeze(ConfigItem.prototype);