MCPcopy
hub / github.com/adobe/react-spectrum / mergeInterface

Function mergeInterface

packages/dev/parcel-packager-docs/DocsPackager.js:471–509  ·  view source on GitHub ↗
(obj)

Source from the content-addressed store, hash-verified

469}
470
471function mergeInterface(obj) {
472 if (obj.type === 'application') {
473 obj = obj.base;
474 } else if (obj.type === 'alias') {
475 obj = obj.value;
476 }
477
478 let properties = {};
479 let exts = [];
480 if (obj.type === 'interface') {
481 merge(properties, obj.properties);
482
483 for (let ext of obj.extends) {
484 if (!ext) {
485 // temp workaround for ErrorBoundary extends React.Component which isn't being included right now for some reason
486 console.log('ext should not be null', obj);
487 continue;
488 }
489 let merged = mergeInterface(ext);
490 if (merged.type === 'interface') {
491 merge(properties, merged.properties);
492 } else {
493 exts.push(merged);
494 }
495 }
496 } else {
497 return obj;
498 }
499
500 return {
501 type: 'interface',
502 id: obj.id,
503 name: obj.name,
504 properties,
505 typeParameters: obj.typeParameters,
506 extends: exts,
507 description: obj.description
508 };
509}
510
511function merge(a, b) {
512 for (let key in b) {

Callers 1

fnFunction · 0.85

Calls 2

pushMethod · 0.80
mergeFunction · 0.70

Tested by

no test coverage detected