Comparing version 2.3.1 to 2.4.0
@@ -6,2 +6,3 @@ "use strict"; | ||
const type_resolve_helpers_1 = require("./type_resolve_helpers"); | ||
const PropTree_1 = require("./PropTree"); | ||
const declareModifier = ts.createModifier(ts.SyntaxKind.DeclareKeyword); | ||
@@ -67,2 +68,16 @@ const constModifier = ts.createModifier(ts.SyntaxKind.ConstKeyword); | ||
} | ||
if (doclet.properties) { | ||
const tree = new PropTree_1.PropTree(doclet.properties); | ||
for (let i = 0; i < tree.roots.length; ++i) { | ||
const node = tree.roots[i]; | ||
const opt = node.prop.optional ? ts.createToken(ts.SyntaxKind.QuestionToken) : undefined; | ||
const t = node.children.length ? type_resolve_helpers_1.createTypeLiteral(node.children) : type_resolve_helpers_1.resolveType(node.prop.type); | ||
const property = ts.createProperty(undefined, undefined, node.name, opt, t, undefined); | ||
if (node.prop.description) { | ||
let comment = `*\n * ${node.prop.description.split(/\r\s*/).join("\n * ")}\n`; | ||
ts.addSyntheticLeadingComment(property, ts.SyntaxKind.MultiLineCommentTrivia, comment, true); | ||
} | ||
members.push(property); | ||
} | ||
} | ||
return handleComment(doclet, ts.createClassDeclaration(undefined, mods, doclet.name, typeParams, heritageClauses, members)); | ||
@@ -109,3 +124,4 @@ } | ||
doclet.name = doclet.name.replace('exports.', ''); | ||
return handleComment(doclet, ts.createMethod(undefined, mods, undefined, doclet.name, undefined, typeParams, params, type, undefined)); | ||
const [name, questionToken] = type_resolve_helpers_1.resolveOptionalFromName(doclet); | ||
return handleComment(doclet, ts.createMethod(undefined, mods, undefined, name, questionToken, typeParams, params, type, undefined)); | ||
} | ||
@@ -118,9 +134,6 @@ exports.createClassMethod = createClassMethod; | ||
const typeParams = type_resolve_helpers_1.resolveTypeParameters(doclet); | ||
if (!doclet.memberof) | ||
mods.push(declareModifier); | ||
if (doclet.scope === 'static') | ||
mods.push(ts.createModifier(ts.SyntaxKind.StaticKeyword)); | ||
if (doclet.name.startsWith('exports.')) | ||
doclet.name = doclet.name.replace('exports.', ''); | ||
return handleComment(doclet, ts.createMethodSignature(typeParams, params, type, doclet.name, undefined)); | ||
const [name, questionToken] = type_resolve_helpers_1.resolveOptionalFromName(doclet); | ||
return handleComment(doclet, ts.createMethodSignature(typeParams, params, type, name, questionToken)); | ||
} | ||
@@ -158,3 +171,4 @@ exports.createInterfaceMethod = createInterfaceMethod; | ||
mods.push(readonlyModifier); | ||
return handleComment(doclet, ts.createProperty(undefined, mods, doclet.name, undefined, type, undefined)); | ||
const [name, questionToken] = type_resolve_helpers_1.resolveOptionalFromName(doclet); | ||
return handleComment(doclet, ts.createProperty(undefined, mods, name, questionToken, type, undefined)); | ||
} | ||
@@ -169,3 +183,4 @@ exports.createClassMember = createClassMember; | ||
mods.push(ts.createModifier(ts.SyntaxKind.StaticKeyword)); | ||
return handleComment(doclet, ts.createPropertySignature(mods, doclet.name, undefined, type, undefined)); | ||
const [name, questionToken] = type_resolve_helpers_1.resolveOptionalFromName(doclet); | ||
return handleComment(doclet, ts.createPropertySignature(mods, name, questionToken, type, undefined)); | ||
} | ||
@@ -175,6 +190,13 @@ exports.createInterfaceMember = createInterfaceMember; | ||
const mods = doclet.memberof ? undefined : [declareModifier]; | ||
const type = type_resolve_helpers_1.resolveType(doclet.type, doclet); | ||
const flags = (doclet.kind === 'constant' || doclet.readonly) ? ts.NodeFlags.Const : undefined; | ||
const literalValue = doclet.defaultvalue !== undefined ? doclet.defaultvalue | ||
: doclet.meta && doclet.meta.code.type === 'Literal' ? doclet.meta.code.value | ||
: undefined; | ||
const initializer = (flags === ts.NodeFlags.Const && literalValue !== undefined) ? ts.createLiteral(literalValue) : undefined; | ||
const type = initializer ? undefined : type_resolve_helpers_1.resolveType(doclet.type, doclet); | ||
if (doclet.name.startsWith('exports.')) | ||
doclet.name = doclet.name.replace('exports.', ''); | ||
return handleComment(doclet, ts.createVariableStatement(mods, [ts.createVariableDeclaration(doclet.name, type, undefined)])); | ||
return handleComment(doclet, ts.createVariableStatement(mods, ts.createVariableDeclarationList([ | ||
ts.createVariableDeclaration(doclet.name, type, initializer) | ||
], flags))); | ||
} | ||
@@ -181,0 +203,0 @@ exports.createNamespaceMember = createNamespaceMember; |
@@ -78,4 +78,4 @@ "use strict"; | ||
if (extras.length) { | ||
const interfaceLongname = this._getInterfaceKey(doclet.longname); | ||
interfaceMerge = this._treeNodes[interfaceLongname] = { | ||
const longname = this._getInterfaceKey(doclet.longname); | ||
interfaceMerge = this._treeNodes[longname] = { | ||
doclet: { | ||
@@ -85,3 +85,3 @@ kind: 'interface', | ||
scope: doclet.scope, | ||
longname: interfaceLongname, | ||
longname: longname, | ||
augments: extras, | ||
@@ -94,2 +94,20 @@ memberof: doclet.memberof, | ||
} | ||
let namespaceMerge = null; | ||
if (doclet.kind === 'interface' || doclet.kind === 'mixin') { | ||
const staticChildren = docs.filter(d => d.memberof === doclet.longname && d.scope === 'static'); | ||
if (staticChildren.length) { | ||
const longname = this._getNamespaceKey(doclet.longname); | ||
namespaceMerge = this._treeNodes[longname] = { | ||
doclet: { | ||
kind: 'namespace', | ||
name: doclet.name, | ||
scope: doclet.scope, | ||
longname: longname, | ||
memberof: doclet.memberof, | ||
}, | ||
children: [], | ||
}; | ||
staticChildren.forEach(c => c.memberof = longname); | ||
} | ||
} | ||
if (doclet.memberof) { | ||
@@ -106,2 +124,4 @@ const parent = this._treeNodes[doclet.memberof]; | ||
mod.children.push(interfaceMerge); | ||
if (namespaceMerge) | ||
mod.children.push(namespaceMerge); | ||
mod.children.push(obj); | ||
@@ -118,2 +138,4 @@ } | ||
parent.children.push(interfaceMerge); | ||
if (namespaceMerge) | ||
parent.children.push(namespaceMerge); | ||
parent.children.push(obj); | ||
@@ -126,2 +148,4 @@ } | ||
this._treeRoots.push(interfaceMerge); | ||
if (namespaceMerge) | ||
this._treeRoots.push(namespaceMerge); | ||
this._treeRoots.push(obj); | ||
@@ -128,0 +152,0 @@ } |
@@ -142,2 +142,4 @@ "use strict"; | ||
node.name = 'object'; | ||
else if (partUpper === 'ARRAY') | ||
node.name = 'any[]'; | ||
if (!parent) | ||
@@ -298,3 +300,3 @@ return node; | ||
exports.toKeywordTypeKind = toKeywordTypeKind; | ||
function resolveOptional(doclet) { | ||
function resolveOptionalParameter(doclet) { | ||
if (doclet.defaultvalue || doclet.optional) | ||
@@ -304,4 +306,4 @@ return ts.createToken(ts.SyntaxKind.QuestionToken); | ||
} | ||
exports.resolveOptional = resolveOptional; | ||
function resolveVariable(doclet) { | ||
exports.resolveOptionalParameter = resolveOptionalParameter; | ||
function resolveVariableParameter(doclet) { | ||
if (doclet.variable) | ||
@@ -311,3 +313,15 @@ return ts.createToken(ts.SyntaxKind.DotDotDotToken); | ||
} | ||
exports.resolveVariable = resolveVariable; | ||
exports.resolveVariableParameter = resolveVariableParameter; | ||
function resolveOptionalFromName(doclet) { | ||
let name = doclet.name; | ||
if (name.startsWith('[') && name.endsWith(']')) { | ||
name = name.substring(1, name.length - 1); | ||
return [name, ts.createToken(ts.SyntaxKind.QuestionToken)]; | ||
} | ||
if (doclet.optional) { | ||
return [name, ts.createToken(ts.SyntaxKind.QuestionToken)]; | ||
} | ||
return [name, undefined]; | ||
} | ||
exports.resolveOptionalFromName = resolveOptionalFromName; | ||
function getExprWithTypeArgs(identifier) { | ||
@@ -445,4 +459,4 @@ const expr = ts.createIdentifier(identifier); | ||
const node = tree.roots[i]; | ||
const opt = resolveOptional(node.prop); | ||
const dots = resolveVariable(node.prop); | ||
const opt = resolveOptionalParameter(node.prop); | ||
const dots = resolveVariableParameter(node.prop); | ||
let type = node.children.length ? createTypeLiteral(node.children) : resolveType(node.prop.type); | ||
@@ -449,0 +463,0 @@ if (dots) { |
{ | ||
"name": "tsd-jsdoc", | ||
"version": "2.3.1", | ||
"version": "2.4.0", | ||
"description": "Compiles JSDoc annotated javascript into a Typescript Declaration File (.d.ts).", | ||
@@ -5,0 +5,0 @@ "main": "dist/publish.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
96139
1073