{"version":3,"file":"/Users/anthonygubler/development/dojo-org/parade/src/interfaces.block.ts","sourceRoot":"","sources":["../node_modules/@dojo/webpack-contrib/css-module-dts-loader/index.js?type=ts&instanceName=0_custom-elements!/Users/anthonygubler/development/dojo-org/parade/src/interfaces.block.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'canonical-path';\nimport {\n\tProject,\n\tMethodSignature,\n\tPropertySignature,\n\tType,\n\tSyntaxKind,\n\tVariableDeclaration,\n\tExportAssignment,\n\tCallExpression,\n\tObjectFlags,\n\tClassDeclaration,\n\tPropertyAssignment,\n\tTypeFormatFlags\n} from 'ts-morph';\n\nfunction getInterfaceName(value: string, type = 'Properties') {\n\tconst result = value.replace(/-([a-z])/g, function(g) {\n\t\treturn g[1].toUpperCase();\n\t});\n\treturn `${result.charAt(0).toUpperCase() + result.slice(1)}${type}`;\n}\n\nexport interface PropertyInterface {\n\tname: string;\n\ttype: string;\n\toptional: boolean;\n\tdescription?: string;\n\tinitializer?: string;\n}\n\nfunction format(prop: MethodSignature | PropertySignature | PropertyAssignment): PropertyInterface {\n\treturn {\n\t\tname: prop.getName(),\n\t\ttype: prop.getType().getText(prop),\n\t\toptional: prop.hasQuestionToken() || false,\n\t\tdescription: (prop as PropertySignature).getJsDocs\n\t\t\t? (prop as PropertySignature).getJsDocs()[0] &&\n\t\t\t  (prop as PropertySignature).getJsDocs()[0].getComment()\n\t\t\t: (prop as PropertyAssignment).getInitializerIfKind(SyntaxKind.StringLiteral) &&\n\t\t\t  (prop as PropertyAssignment)\n\t\t\t\t\t.getInitializerIfKind(SyntaxKind.StringLiteral)!\n\t\t\t\t\t.getLiteralValue()\n\t};\n}\n\nfunction isSignatureOrAssignment(\n\tnode: any\n): node is MethodSignature | PropertySignature | PropertyAssignment {\n\treturn Boolean(node && node.getName && node.getType && node.hasQuestionToken);\n}\n\nfunction getPropertyDetails(propsType: Type): PropertyInterface[] {\n\treturn propsType\n\t\t.getProperties()\n\t\t.map((symbol) => symbol.getDeclarations()[0])\n\t\t.filter(isSignatureOrAssignment)\n\t\t.map(format);\n}\n\nfunction getTypeFromFactory(factory: CallExpression, children = false) {\n\tconst factoryIdentifier = factory.getChildAtIndex(0);\n\tconst symbol = factoryIdentifier.getSymbol();\n\tif (symbol) {\n\t\tconst type = symbol.getTypeAtLocation(factoryIdentifier);\n\t\tconst callSignatures = type.getCallSignatures();\n\t\tif (callSignatures.length > 0) {\n\t\t\tconst parameters = callSignatures[0].getParameters();\n\n\t\t\tif (parameters.length) {\n\t\t\t\tconst callback = parameters[0].getTypeAtLocation(factoryIdentifier);\n\t\t\t\tif (callback && callback.getObjectFlags() & ObjectFlags.Reference) {\n\t\t\t\t\tconst typeArguments = callback.getTypeArguments();\n\n\t\t\t\t\tif (typeArguments) {\n\t\t\t\t\t\treturn children ? typeArguments[1] : typeArguments[0];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parseI18n(node: CallExpression) {\n\tconst propertyAccess = node.getChildAtIndex(0);\n\tconst functionSymbol =\n\t\tpropertyAccess &&\n\t\tpropertyAccess.getKind() === SyntaxKind.PropertyAccessExpression &&\n\t\tpropertyAccess.getSymbol();\n\tconst functionType = functionSymbol && functionSymbol.getTypeAtLocation(node);\n\tconst callType = functionType && functionType.getCallSignatures()[0];\n\tconst argument = callType && callType.getParameters()[0];\n\tconst parameterType = argument && argument.getTypeAtLocation(node);\n\tconst parameterSymbol = parameterType && parameterType.getSymbol();\n\tconst parameterSymbolName = parameterSymbol && parameterSymbol.getName();\n\tconst returnType = callType && callType.getReturnType();\n\tconst returnAliasSymbol = returnType && returnType.getAliasSymbol();\n\tconst returnAliasName = returnAliasSymbol && returnAliasSymbol.getName();\n\tif (\n\t\tparameterType &&\n\t\tparameterSymbolName === 'Bundle' &&\n\t\treturnAliasName === 'LocalizedMessages'\n\t) {\n\t\tconst argument = node.getArguments()[0];\n\t\tconst argumentType = argument && argument.getType();\n\t\tconst messages = argumentType && argumentType.getProperty('messages');\n\t\tconst locales = argumentType && argumentType.getProperty('locales');\n\t\tconst messageProps = messages && messages.getTypeAtLocation(node);\n\t\tconst localeProps = locales && locales.getTypeAtLocation(node);\n\t\treturn {\n\t\t\tmessages: messageProps && getPropertyDetails(messageProps),\n\t\t\tlocales: localeProps && getPropertyDetails(localeProps)\n\t\t};\n\t}\n\n\treturn { messages: undefined, locales: undefined };\n}\n\nexport default function(config: { [index: string]: string }) {\n\tconst project = new Project({\n\t\ttsConfigFilePath: path.join(process.cwd(), 'tsconfig.json')\n\t});\n\n\treturn Object.keys(config).reduce((props, widgetName): {\n\t\t[index: string]: PropertyInterface[];\n\t} => {\n\t\tlet propsType: Type | undefined = undefined;\n\t\tlet childrenType: Type | undefined = undefined;\n\t\tlet messages: PropertyInterface[] = [];\n\t\tlet locales: PropertyInterface[] = [];\n\n\t\tconst filename = config[widgetName];\n\t\tconst sourceFile = project.getSourceFile(filename);\n\t\tif (!sourceFile) {\n\t\t\treturn props;\n\t\t}\n\n\t\tconst defaultExport = sourceFile.getDefaultExportSymbol();\n\t\tif (!defaultExport) {\n\t\t\treturn props;\n\t\t}\n\n\t\tconst defaultExportType = defaultExport.getTypeAtLocation(sourceFile);\n\t\tif (!defaultExportType) {\n\t\t\treturn props;\n\t\t}\n\n\t\tlet initializer: any;\n\t\tsourceFile.forEachDescendant((node) => {\n\t\t\tconst nodeSymbol = node.getSymbol();\n\n\t\t\tif (node.getKind() === SyntaxKind.VariableDeclaration && nodeSymbol) {\n\t\t\t\tif (\n\t\t\t\t\tdefaultExportType.compilerType ===\n\t\t\t\t\tnodeSymbol.getTypeAtLocation(node).compilerType\n\t\t\t\t) {\n\t\t\t\t\tinitializer = (node as VariableDeclaration).getInitializer();\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tnode.getKind() === SyntaxKind.ClassDeclaration &&\n\t\t\t\tnodeSymbol &&\n\t\t\t\tdefaultExportType.compilerType === nodeSymbol.getTypeAtLocation(node).compilerType\n\t\t\t) {\n\t\t\t\tconst heritageClauses = (node as ClassDeclaration).getHeritageClauses();\n\n\t\t\t\tif (heritageClauses.length > 0) {\n\t\t\t\t\tconst heritageClause = heritageClauses[0];\n\n\t\t\t\t\tconst typeNodes = heritageClause.getTypeNodes();\n\n\t\t\t\t\tif (typeNodes.length > 0) {\n\t\t\t\t\t\tconst typeArguments = typeNodes[0].getTypeArguments();\n\n\t\t\t\t\t\tif (typeArguments.length) {\n\t\t\t\t\t\t\tconst widgetSymbol = typeArguments[0].getChildAtIndex(0).getSymbol();\n\t\t\t\t\t\t\tconst widgetChildrenSymbol =\n\t\t\t\t\t\t\t\ttypeArguments[1] && typeArguments[1].getChildAtIndex(0).getSymbol();\n\n\t\t\t\t\t\t\tif (widgetSymbol) {\n\t\t\t\t\t\t\t\tpropsType = widgetSymbol.getDeclaredType();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (widgetChildrenSymbol) {\n\t\t\t\t\t\t\t\tchildrenType = widgetChildrenSymbol.getDeclaredType();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (node.getKind() === SyntaxKind.ExportAssignment) {\n\t\t\t\tinitializer = (node as ExportAssignment).getExpression();\n\t\t\t} else if (node.getKind() === SyntaxKind.CallExpression) {\n\t\t\t\tconst parsedI18n = parseI18n(node as CallExpression);\n\t\t\t\tif (parsedI18n.messages) {\n\t\t\t\t\tmessages.push(...parsedI18n.messages);\n\t\t\t\t}\n\n\t\t\t\tif (parsedI18n.locales) {\n\t\t\t\t\tlocales = parsedI18n.locales;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (initializer && initializer.getKind() === SyntaxKind.CallExpression) {\n\t\t\t\tpropsType = getTypeFromFactory(initializer);\n\t\t\t\tchildrenType = getTypeFromFactory(initializer, true);\n\t\t\t}\n\t\t});\n\n\t\tif (!propsType) {\n\t\t\tconst propsInterfaceTypeName = getInterfaceName(widgetName);\n\t\t\tconst propsInterface =\n\t\t\t\tsourceFile.getInterface(propsInterfaceTypeName) ||\n\t\t\t\tsourceFile.getTypeAlias(propsInterfaceTypeName);\n\n\t\t\tif (!propsInterface) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`could not find interface for ${widgetName} ${getInterfaceName(widgetName)}`\n\t\t\t\t);\n\t\t\t\treturn props;\n\t\t\t}\n\n\t\t\tpropsType = propsInterface.getType();\n\t\t}\n\n\t\tif (!childrenType) {\n\t\t\tconst childrenInterfaceTypeName = getInterfaceName(widgetName, 'Children');\n\t\t\tconst childrenInterface =\n\t\t\t\tsourceFile.getInterface(childrenInterfaceTypeName) ||\n\t\t\t\tsourceFile.getTypeAlias(childrenInterfaceTypeName);\n\t\t\tif (childrenInterface) {\n\t\t\t\tchildrenType = childrenInterface.getType();\n\t\t\t}\n\t\t}\n\n\t\tlet properties = getPropertyDetails(propsType);\n\t\tconst children: PropertyInterface[] = [];\n\t\tconst unionTypes = propsType.getUnionTypes();\n\n\t\tconst childUnionTypes = childrenType ? childrenType.getUnionTypes() : [];\n\t\tif (childrenType && !childUnionTypes.length) {\n\t\t\tchildUnionTypes.push(childrenType);\n\t\t}\n\n\t\tfunction parseUnionType(unionProperty: PropertyInterface, props: any[]) {\n\t\t\tconst property = props.find((prop) => prop.name === unionProperty.name);\n\t\t\tif (property) {\n\t\t\t\tconst types = unionProperty.type.split('|');\n\t\t\t\ttypes.forEach((type) => {\n\t\t\t\t\tif (property.type.indexOf(type) === -1) {\n\t\t\t\t\t\tproperty.type = `${type} | ${property.type}`;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tprops.push(unionProperty);\n\t\t\t}\n\t\t}\n\n\t\tif (unionTypes && unionTypes.length) {\n\t\t\tunionTypes.forEach((unionType) => {\n\t\t\t\tconst unionProperties = getPropertyDetails(unionType);\n\t\t\t\tunionProperties.forEach((type) => parseUnionType(type, properties));\n\t\t\t});\n\t\t}\n\t\tchildUnionTypes.forEach((unionType) => {\n\t\t\tconst text = unionType.getText(undefined, TypeFormatFlags.None);\n\t\t\tif (\n\t\t\t\tunionType.isArray() ||\n\t\t\t\t!unionType.isObject() ||\n\t\t\t\t(text &&\n\t\t\t\t\t(text.startsWith('WNode') ||\n\t\t\t\t\t\ttext.startsWith('VNode') ||\n\t\t\t\t\t\ttext.startsWith('DNode')))\n\t\t\t) {\n\t\t\t\tchildren.push({\n\t\t\t\t\tname: '----',\n\t\t\t\t\ttype: text,\n\t\t\t\t\toptional: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst callSignatures = unionType.getCallSignatures();\n\t\t\t\tcallSignatures.forEach((signature) => {\n\t\t\t\t\tchildren.push({\n\t\t\t\t\t\tname: '----',\n\t\t\t\t\t\ttype: signature.getDeclaration().getFullText(),\n\t\t\t\t\t\toptional: false\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst unionProperties = getPropertyDetails(unionType);\n\t\t\t\tunionProperties.forEach((type) => parseUnionType(type, children));\n\t\t\t}\n\t\t});\n\n\t\tfunction compareProperties(a: PropertyInterface, b: PropertyInterface) {\n\t\t\tif (a.optional && !b.optional) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (!a.optional && b.optional) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (a.name < b.name) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (a.name > b.name) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tproperties.sort(compareProperties);\n\t\tmessages.sort(compareProperties);\n\t\tlocales.sort(compareProperties);\n\t\tchildren.sort(compareProperties);\n\n\t\treturn { ...props, [widgetName]: { properties, children, messages, locales } };\n\t}, {});\n}\n"]}