/// <summary>Initializes a new instance of the <see cref="FileTemplateModel" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="clientCode">The client code.</param> /// <param name="clientClasses">The client classes.</param> /// <param name="settings">The settings.</param> /// <param name="extensionCode">The extension code.</param> /// <param name="resolver">The resolver.</param> public FileTemplateModel(SwaggerDocument document, string clientCode, IEnumerable<string> clientClasses, SwaggerToTypeScriptClientGeneratorSettings settings, TypeScriptExtensionCode extensionCode, TypeScriptTypeResolver resolver) { _document = document; _extensionCode = extensionCode; _settings = settings; _resolver = resolver; _clientCode = clientCode; ClientClasses = clientClasses.ToArray(); Types = GenerateDtoTypes(); ExtensionCodeBottom = GenerateExtensionCodeAfter(); }
/// <summary>Initializes a new instance of the <see cref="SwaggerToTypeScriptClientGenerator" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception> public SwaggerToTypeScriptClientGenerator(SwaggerDocument document, SwaggerToTypeScriptClientGeneratorSettings settings, TypeScriptTypeResolver resolver) : base(resolver, settings.CodeGeneratorSettings) { if (document == null) throw new ArgumentNullException(nameof(document)); Settings = settings; _document = document; _resolver = resolver; _resolver.AddGenerators(_document.Definitions); _extensionCode = new TypeScriptExtensionCode( Settings.TypeScriptGeneratorSettings.ExtensionCode, Settings.TypeScriptGeneratorSettings.ExtendedClasses, new[] { Settings.ClientBaseClass }); }
/// <summary>Initializes a new instance of the <see cref="TypeScriptFileTemplateModel" /> class.</summary> /// <param name="clientTypes">The client types.</param> /// <param name="dtoTypes">The DTO types.</param> /// <param name="document">The Swagger document.</param> /// <param name="extensionCode">The extension code.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> public TypeScriptFileTemplateModel( IEnumerable <CodeArtifact> clientTypes, IEnumerable <CodeArtifact> dtoTypes, OpenApiDocument document, TypeScriptExtensionCode extensionCode, TypeScriptClientGeneratorSettings settings, TypeScriptTypeResolver resolver) { _document = document; _extensionCode = extensionCode; _settings = settings; _resolver = resolver; _clientCode = clientTypes.OrderByBaseDependency().Concatenate(); _clientTypes = clientTypes; Types = dtoTypes.OrderByBaseDependency().Concatenate(); ExtensionCodeBottom = GenerateExtensionCodeAfter(); Framework = new TypeScriptFrameworkModel(settings); }
public SelfTypeScriptGenerator(TypeScriptClientGeneratorSettings clientGeneratorSettings, OpenApiDocument openApiDocument) { _clientGeneratorSettings = clientGeneratorSettings; if (_clientGeneratorSettings.ExcludedParameterNames == null) { _clientGeneratorSettings.ExcludedParameterNames = new string[0]; } Constant.TsBaseType.AddRange(_clientGeneratorSettings.ExcludedParameterNames); _resolver = new TypeScriptTypeResolver(clientGeneratorSettings.TypeScriptGeneratorSettings); _openApiDocument = openApiDocument; _resolver.RegisterSchemaDefinitions(_openApiDocument.Definitions); _typeScriptClientGenerator = new TypeScriptClientGenerator(_openApiDocument, _clientGeneratorSettings, _resolver); _extensionCode = new TypeScriptExtensionCode( clientGeneratorSettings.TypeScriptGeneratorSettings.ExtensionCode, (clientGeneratorSettings.TypeScriptGeneratorSettings.ExtendedClasses ?? new string[] { }) .Concat(new[] { clientGeneratorSettings.ConfigurationClass }).ToArray(), new[] { clientGeneratorSettings.ClientBaseClass }); }
public void When_extension_code_has_comment_then_it_is_processed_correctly() { //// Arrange var code = @"// This is the class that uses HTTP export class UseHttpCookiesForApi { protected transformOptions(options: RequestInit): Promise<RequestInit> { options.credentials = 'same-origin'; return Promise.resolve(options); } }"; //// Act var extensionCode = new TypeScriptExtensionCode(code, new string[0], new[] { "UseHttpCookiesForApi" }); //// Assert Assert.Empty(extensionCode.ExtensionClasses); Assert.DoesNotContain("UseHttpCookiesForApi", extensionCode.BottomCode); Assert.Contains("UseHttpCookiesForApi", extensionCode.TopCode); }
public void When_extension_code_is_processed_then_code_and_classes_are_correctly_detected_and_converted() { //// Arrange var code = Code; //// Act var ext = new TypeScriptExtensionCode(code, new[] { "Foo", "Bar" }); //// Assert Assert.IsTrue(ext.ExtensionClasses.ContainsKey("Foo")); Assert.IsTrue(ext.ExtensionClasses["Foo"].StartsWith("export class Foo extends Foo {")); Assert.IsTrue(ext.ExtensionClasses.ContainsKey("Bar")); Assert.IsTrue(ext.ExtensionClasses["Bar"].StartsWith("export class Bar extends Bar {")); Assert.IsTrue(ext.ImportCode.Contains("<reference path")); Assert.IsTrue(ext.ImportCode.Contains("import foo = require(\"foo/bar\")")); Assert.IsTrue(ext.ImportCode.Contains("import bar = require(\"foo/bar\")")); Assert.IsTrue(ext.BottomCode.StartsWith("var clientClasses")); Assert.IsTrue(ext.BottomCode.Contains("if (clientClasses.hasOwnProperty(clientClass))")); Assert.IsTrue(ext.BottomCode.Contains("export class Test")); Assert.IsTrue(ext.BottomCode.EndsWith("var x = 10;")); }
/// <summary>Initializes a new instance of the <see cref="FileTemplateModel" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="clientCode">The client code.</param> /// <param name="clientClasses">The client classes.</param> /// <param name="settings">The settings.</param> /// <param name="extensionCode">The extension code.</param> /// <param name="resolver">The resolver.</param> public FileTemplateModel(SwaggerDocument document, string clientCode, IEnumerable <string> clientClasses, SwaggerToTypeScriptClientGeneratorSettings settings, TypeScriptExtensionCode extensionCode, TypeScriptTypeResolver resolver) { _document = document; _extensionCode = extensionCode; _settings = settings; _resolver = resolver; _clientCode = clientCode; ClientClasses = clientClasses.ToArray(); Types = GenerateDtoTypes(); ExtensionCodeBottom = GenerateExtensionCodeAfter(); }