MCPcopy Index your code
hub / github.com/nodejs/node / createTypeNodeFromObjectType

Function createTypeNodeFromObjectType

test/fixtures/snapshot/typescript.js:52834–52884  ·  view source on GitHub ↗
(type)

Source from the content-addressed store, hash-verified

52832 }
52833 }
52834 function createTypeNodeFromObjectType(type) {
52835 if (isGenericMappedType(type) || type.containsError) {
52836 return createMappedTypeNodeFromType(type);
52837 }
52838 var resolved = resolveStructuredTypeMembers(type);
52839 if (!resolved.properties.length && !resolved.indexInfos.length) {
52840 if (!resolved.callSignatures.length && !resolved.constructSignatures.length) {
52841 context.approximateLength += 2;
52842 return ts.setEmitFlags(ts.factory.createTypeLiteralNode(/*members*/ undefined), 1 /* EmitFlags.SingleLine */);
52843 }
52844 if (resolved.callSignatures.length === 1 && !resolved.constructSignatures.length) {
52845 var signature = resolved.callSignatures[0];
52846 var signatureNode = signatureToSignatureDeclarationHelper(signature, 179 /* SyntaxKind.FunctionType */, context);
52847 return signatureNode;
52848 }
52849 if (resolved.constructSignatures.length === 1 && !resolved.callSignatures.length) {
52850 var signature = resolved.constructSignatures[0];
52851 var signatureNode = signatureToSignatureDeclarationHelper(signature, 180 /* SyntaxKind.ConstructorType */, context);
52852 return signatureNode;
52853 }
52854 }
52855 var abstractSignatures = ts.filter(resolved.constructSignatures, function (signature) { return !!(signature.flags & 4 /* SignatureFlags.Abstract */); });
52856 if (ts.some(abstractSignatures)) {
52857 var types = ts.map(abstractSignatures, getOrCreateTypeFromSignature);
52858 // count the number of type elements excluding abstract constructors
52859 var typeElementCount = resolved.callSignatures.length +
52860 (resolved.constructSignatures.length - abstractSignatures.length) +
52861 resolved.indexInfos.length +
52862 // exclude `prototype` when writing a class expression as a type literal, as per
52863 // the logic in `createTypeNodesFromResolvedType`.
52864 (context.flags & 2048 /* NodeBuilderFlags.WriteClassExpressionAsTypeLiteral */ ?
52865 ts.countWhere(resolved.properties, function (p) { return !(p.flags & 4194304 /* SymbolFlags.Prototype */); }) :
52866 ts.length(resolved.properties));
52867 // don't include an empty object literal if there were no other static-side
52868 // properties to write, i.e. `abstract class C { }` becomes `abstract new () => {}`
52869 // and not `(abstract new () => {}) & {}`
52870 if (typeElementCount) {
52871 // create a copy of the object type without any abstract construct signatures.
52872 types.push(getResolvedTypeWithoutAbstractConstructSignatures(resolved));
52873 }
52874 return typeToTypeNodeHelper(getIntersectionType(types), context);
52875 }
52876 var savedFlags = context.flags;
52877 context.flags |= 4194304 /* NodeBuilderFlags.InObjectTypeLiteral */;
52878 var members = createTypeNodesFromResolvedType(resolved);
52879 context.flags = savedFlags;
52880 var typeLiteralNode = ts.factory.createTypeLiteralNode(members);
52881 context.approximateLength += 2;
52882 ts.setEmitFlags(typeLiteralNode, (context.flags & 1024 /* NodeBuilderFlags.MultilineObjectLiterals */) ? 0 : 1 /* EmitFlags.SingleLine */);
52883 return typeLiteralNode;
52884 }
52885 function typeReferenceToTypeNode(type) {
52886 var typeArguments = getTypeArguments(type);
52887 if (type.target === globalArrayType || type.target === globalReadonlyArrayType) {

Callers 1

createAnonymousTypeNodeFunction · 0.85

Calls 13

isGenericMappedTypeFunction · 0.85
typeToTypeNodeHelperFunction · 0.85
getIntersectionTypeFunction · 0.85
someMethod · 0.80
filterMethod · 0.65
mapMethod · 0.65
lengthMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…