relay-runtime
Version:
A core runtime for building GraphQL-driven applications.
123 lines (122 loc) • 4.25 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var inspect = function inspect() {};
if (process.env.NODE_ENV !== "production") {
var formattersInstalled = false;
var installDevtoolFormatters = function installDevtoolFormatters() {
var _window$devtoolsForma;
if (formattersInstalled) {
return;
}
formattersInstalled = true;
if (window.devtoolsFormatters == null) {
window.devtoolsFormatters = [];
}
if (!Array.isArray(window.devtoolsFormatters)) {
return;
}
console.info('Make sure to select "Enable custom formatters" in the Chrome ' + 'Developer Tools settings, tab "Preferences" under the "Console" ' + 'section.');
(_window$devtoolsForma = window.devtoolsFormatters).push.apply(_window$devtoolsForma, (0, _toConsumableArray2["default"])(createFormatters()));
};
var createFormatters = function createFormatters() {
var listStyle = {
style: 'list-style-type: none; padding: 0; margin: 0 0 0 12px; font-style: normal'
};
var keyStyle = {
style: 'rgb(136, 19, 145)'
};
var nullStyle = {
style: 'color: #777'
};
var reference = function reference(object, config) {
return object == null ? ['span', nullStyle, 'undefined'] : ['object', {
object: object,
config: config
}];
};
var renderRecordHeader = function renderRecordHeader(record) {
return ['span', {
style: 'font-style: italic'
}, record.__typename, ['span', nullStyle, ' {id: "', record.__id, '", …}']];
};
var isRecord = function isRecord(o) {
return o != null && typeof o.__id === 'string';
};
var RecordEntry = function RecordEntry(key, value) {
this.key = key;
this.value = value;
};
var renderRecordEntries = function renderRecordEntries(record) {
var children = Object.keys(record).map(function (key) {
return ['li', {}, ['object', {
object: new RecordEntry(key, record[key])
}]];
});
return ['ol', listStyle].concat((0, _toConsumableArray2["default"])(children));
};
var recordFormatter = {
header: function header(obj) {
if (!isRecord(obj)) {
return null;
}
return renderRecordHeader(obj);
},
hasBody: function hasBody(obj) {
return true;
},
body: function body(obj) {
return renderRecordEntries(obj);
}
};
var recordEntryFormatter = {
header: function header(obj) {
if (obj instanceof RecordEntry) {
var value = isRecord(obj.value) ? renderRecordHeader(obj.value) : reference(obj.value);
return ['span', keyStyle, obj.key, ': ', value];
}
return null;
},
hasBody: function hasBody(obj) {
return isRecord(obj.value);
},
body: function body(obj) {
return renderRecordEntries(obj.value);
}
};
return [recordFormatter, recordEntryFormatter];
};
var getWrappedRecord = function getWrappedRecord(source, dataID) {
var record = source.get(dataID);
if (record == null) {
return record;
}
return new Proxy((0, _objectSpread2["default"])({}, record), {
get: function get(target, prop) {
var value = target[prop];
if (value == null) {
return value;
}
if (typeof value === 'object') {
if (typeof value.__ref === 'string') {
return getWrappedRecord(source, value.__ref);
}
if (Array.isArray(value.__refs)) {
return value.__refs.map(function (ref) {
return getWrappedRecord(source, ref);
});
}
}
return value;
}
});
};
inspect = function inspect(environment, dataID) {
installDevtoolFormatters();
return getWrappedRecord(environment.getStore().getSource(), dataID !== null && dataID !== void 0 ? dataID : 'client:root');
};
}
module.exports = {
inspect: inspect
};
;