/// <summary> /// Generate NodeJS client code /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { var disableTypeScriptGeneration = Singleton<GeneratorSettingsJs>.Instance.DisableTypeScriptGeneration; var codeModel = cm as CodeModelJs; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a NodeJS code model."); } // Service client var serviceClientTemplate = new ServiceClientTemplate {Model = codeModel}; await Write(serviceClientTemplate, codeModel.Name.ToCamelCase() + ".js"); if (!disableTypeScriptGeneration) { var serviceClientTemplateTS = new ServiceClientTemplateTS {Model = codeModel}; await Write(serviceClientTemplateTS, codeModel.Name.ToCamelCase() + ".d.ts"); } //Models if (codeModel.ModelTypes.Any()) { var modelIndexTemplate = new ModelIndexTemplate {Model = codeModel}; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); if (!disableTypeScriptGeneration) { var modelIndexTemplateTS = new ModelIndexTemplateTS {Model = codeModel}; await Write(modelIndexTemplateTS, Path.Combine("models", "index.d.ts")); } foreach (var modelType in codeModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate {Model = modelType}; await Write(modelTemplate, Path.Combine("models", modelType.NameAsFileName.ToCamelCase() + ".js")); } } //MethodGroups if (codeModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate {Model = codeModel}; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); if (!disableTypeScriptGeneration) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS {Model = codeModel}; await Write(methodGroupIndexTemplateTS, Path.Combine("operations", "index.d.ts")); } foreach (var methodGroupModel in codeModel.MethodGroupModels) { var methodGroupTemplate = new MethodGroupTemplate {Model = methodGroupModel}; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.TypeName.ToCamelCase() + ".js")); } } }
protected async Task GenerateMethodGroupIndexTemplateJs(CodeModelJs codeModel, GeneratorSettingsJs generatorSettings) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = codeModel }; await Write(methodGroupIndexTemplate, GetOperationSourceCodeFilePath(generatorSettings, "index.js")).ConfigureAwait(false); }
/// <summary> /// Generate NodeJS client code for given ServiceClient. /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(ServiceClient serviceClient) { var serviceClientTemplateModel = new ServiceClientTemplateModel(serviceClient); // Service client var serviceClientTemplate = new ServiceClientTemplate { Model = serviceClientTemplateModel, }; await Write(serviceClientTemplate, serviceClient.Name.ToCamelCase() + ".js"); //Models if (serviceClient.ModelTypes.Any()) { var modelIndexTemplate = new ModelIndexTemplate { Model = serviceClientTemplateModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); foreach (var modelType in serviceClientTemplateModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, Path.Combine("models", modelType.Name.ToCamelCase() + ".js")); } } //MethodGroups if (serviceClientTemplateModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels) { var methodGroupTemplate = new MethodGroupTemplate { Model = methodGroupModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.MethodGroupType.ToCamelCase() + ".js")); } } }
/// <summary> /// Generate Azure TypeScript client code /// </summary> /// <param name="cm"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { var codeModel = cm as CodeModelTSa; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a Azure TypeScript code model."); } codeModel.PackageName = Settings.Instance.PackageName; codeModel.PackageVersion = Settings.Instance.PackageVersion; // Service client var serviceClientTemplate = new AzureServiceClientTemplate { Model = codeModel }; await Write(serviceClientTemplate, codeModel.Name.ToCamelCase() + ".ts"); await Write(new AzureServiceClientContextTemplate { Model = codeModel }, codeModel.ContextName.ToCamelCase() + ".ts"); var modelIndexTemplate = new AzureModelIndexTemplate { Model = codeModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.ts")); var mapperIndexTemplate = new AzureMapperIndexTemplate { Model = codeModel }; await Write(mapperIndexTemplate, Path.Combine("models", "mappers.ts")); //MethodGroups if (codeModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = codeModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.ts")); foreach (var methodGroupModel in codeModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = methodGroupModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.TypeName.ToCamelCase() + ".ts")); } } var generateMetadata = Singleton <GeneratorSettingsTS> .Instance.GenerateMetadata; if (generateMetadata) { // package.json var packageJson = new PackageJson { Model = codeModel }; await Write(packageJson, Path.Combine("../", "package.json")); // tsconfig.json var browserTsConfig = new TsConfig { Model = new TsConfigModel(true) }; await Write(browserTsConfig, Path.Combine("../", "tsconfig.json")); // webpack.config.js var webpackConfig = new WebpackConfig { Model = codeModel }; await Write(webpackConfig, Path.Combine("../", "webpack.config.js")); // .npmignore var npmIgnore = new NpmIgnore { Model = codeModel }; await Write(npmIgnore, Path.Combine("../", ".npmignore")); //README.md var readme = new AzureReadmeTemplate { Model = codeModel }; await Write(readme, Path.Combine("../", "README.md")); } }
/// <summary> /// Generate Azure NodeJS client code for given ServiceClient. /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(ServiceClient serviceClient) { var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient); // Service client var serviceClientTemplate = new Microsoft.Rest.Generator.Azure.NodeJS.Templates.AzureServiceClientTemplate { Model = serviceClientTemplateModel }; await Write(serviceClientTemplate, serviceClient.Name.ToCamelCase() + ".js"); if (!DisableTypeScriptGeneration) { var serviceClientTemplateTS = new AzureServiceClientTemplateTS { Model = serviceClientTemplateModel, }; await Write(serviceClientTemplateTS, serviceClient.Name.ToCamelCase() + ".d.ts"); } //Models if (serviceClient.ModelTypes.Any()) { // Paged Models foreach (var pageModel in pageModels) { //Add the PageTemplateModel to AzureServiceClientTemplateModel if (!serviceClientTemplateModel.PageTemplateModels.Contains(pageModel)) { serviceClientTemplateModel.PageTemplateModels.Add(pageModel); } var pageTemplate = new PageModelTemplate { Model = pageModel }; await Write(pageTemplate, Path.Combine("models", pageModel.Name.ToCamelCase() + ".js")); } var modelIndexTemplate = new AzureModelIndexTemplate { Model = serviceClientTemplateModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); if (!DisableTypeScriptGeneration) { var modelIndexTemplateTS = new AzureModelIndexTemplateTS { Model = serviceClientTemplateModel }; await Write(modelIndexTemplateTS, Path.Combine("models", "index.d.ts")); } foreach (var modelType in serviceClientTemplateModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, Path.Combine("models", modelType.Name.ToCamelCase() + ".js")); } } //MethodGroups if (serviceClientTemplateModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); if (!DisableTypeScriptGeneration) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplateTS, Path.Combine("operations", "index.d.ts")); } foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = methodGroupModel as AzureMethodGroupTemplateModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.MethodGroupType.ToCamelCase() + ".js")); } } }
/// <summary> /// Generate Azure NodeJS client code /// </summary> /// <param name="cm"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { var disableTypeScriptGeneration = Singleton <GeneratorSettingsJs> .Instance.DisableTypeScriptGeneration; var codeModel = cm as CodeModelJsa; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a Azure NodeJS code model."); } // Service client var serviceClientTemplate = new AzureServiceClientTemplate { Model = codeModel }; await Write(serviceClientTemplate, codeModel.Name.ToCamelCase() + ".js"); if (!disableTypeScriptGeneration) { var serviceClientTemplateTS = new AzureServiceClientTemplateTS { Model = codeModel, }; await Write(serviceClientTemplateTS, codeModel.Name.ToCamelCase() + ".d.ts"); } var modelIndexTemplate = new AzureModelIndexTemplate { Model = codeModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); if (!disableTypeScriptGeneration) { var modelIndexTemplateTS = new AzureModelIndexTemplateTS { Model = codeModel }; await Write(modelIndexTemplateTS, Path.Combine("models", "index.d.ts")); } //Models if (codeModel.ModelTemplateModels.Any()) { // Paged Models foreach (var pageModel in codeModel.PageTemplateModels) { var pageTemplate = new PageModelTemplate { Model = pageModel }; await Write(pageTemplate, Path.Combine("models", pageModel.Name.ToCamelCase() + ".js")); } foreach (var modelType in codeModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, Path.Combine("models", modelType.NameAsFileName.ToCamelCase() + ".js")); } } //MethodGroups if (codeModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = codeModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); if (!disableTypeScriptGeneration) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS { Model = codeModel }; await Write(methodGroupIndexTemplateTS, Path.Combine("operations", "index.d.ts")); } foreach (var methodGroupModel in codeModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = methodGroupModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.TypeName.ToCamelCase() + ".js")); } } }
/// <summary> /// Generate NodeJS client code for given ServiceClient. /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(ServiceClient serviceClient) { var serviceClientTemplateModel = new ServiceClientTemplateModel(serviceClient); // Service client var serviceClientTemplate = new ServiceClientTemplate { Model = serviceClientTemplateModel, }; await Write(serviceClientTemplate, serviceClient.Name.ToCamelCase() + ".js"); if (!DisableTypeScriptGeneration) { var serviceClientTemplateTS = new ServiceClientTemplateTS { Model = serviceClientTemplateModel, }; await Write(serviceClientTemplateTS, serviceClient.Name.ToCamelCase() + ".d.ts"); } //Models if (serviceClient.ModelTypes.Any()) { var modelIndexTemplate = new ModelIndexTemplate { Model = serviceClientTemplateModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.js")); if (!DisableTypeScriptGeneration) { var modelIndexTemplateTS = new ModelIndexTemplateTS { Model = serviceClientTemplateModel }; await Write(modelIndexTemplateTS, Path.Combine("models", "index.d.ts")); } foreach (var modelType in serviceClientTemplateModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, Path.Combine("models", modelType.Name.ToCamelCase() + ".js")); } } //MethodGroups if (serviceClientTemplateModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.js")); if (!DisableTypeScriptGeneration) { var methodGroupIndexTemplateTS = new MethodGroupIndexTemplateTS { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplateTS, Path.Combine("operations", "index.d.ts")); } foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels) { var methodGroupTemplate = new MethodGroupTemplate { Model = methodGroupModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.MethodGroupType.ToCamelCase() + ".js")); } } }
/// <summary> /// Generate TypeScript client code /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(CodeModel cm) { var codeModel = cm as CodeModelTS; if (codeModel == null) { throw new InvalidCastException("CodeModel is not a TypeScript code model."); } InitializeSettings(codeModel); // Service client var serviceClientTemplate = new ServiceClientTemplate { Model = codeModel }; await Write(serviceClientTemplate, codeModel.Name.ToCamelCase() + ".ts"); await Write(new ServiceClientContextTemplate { Model = codeModel }, codeModel.ContextName.ToCamelCase() + ".ts"); //Models if (codeModel.ModelTypes.Any()) { var modelIndexTemplate = new ModelIndexTemplate { Model = codeModel }; await Write(modelIndexTemplate, Path.Combine("models", "index.ts")); var mapperIndexTemplate = new MapperIndexTemplate { Model = codeModel }; await Write(mapperIndexTemplate, Path.Combine("models", "mappers.ts")); } bool serviceHasMappableParameters = codeModel.Methods .SelectMany(m => m.LogicalParameters) .Any(p => p.Location != ParameterLocation.Body); if (serviceHasMappableParameters) { await Write(new ParameterTemplate { Model = codeModel }, Path.Combine("models", "parameters.ts")); } //MethodGroups if (codeModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = codeModel }; await Write(methodGroupIndexTemplate, Path.Combine("operations", "index.ts")); foreach (var methodGroupModel in codeModel.MethodGroupModels) { var mappersTemplate = new MethodGroupMappersTemplate { Model = methodGroupModel }; await Write(mappersTemplate, Path.Combine("models", methodGroupModel.MappersModuleName + ".ts")); var methodGroupTemplate = new MethodGroupTemplate { Model = methodGroupModel }; await Write(methodGroupTemplate, Path.Combine("operations", methodGroupModel.TypeName.ToCamelCase() + ".ts")); } } if (codeModel.GenerateMetadata) { // package.json var packageJson = new PackageJson { Model = codeModel }; await Write(packageJson, Path.Combine("../", "package.json")); //tsconfig.json var nodeTsConfig = new TsConfig { Model = new TsConfigModel(false) }; await Write(nodeTsConfig, Path.Combine("../", "tsconfig.json")); // webpack.config.js var webpackConfig = new WebpackConfig { Model = codeModel }; await Write(webpackConfig, Path.Combine("../", "webpack.config.js")); // .npmignore var npmIgnore = new NpmIgnore { Model = codeModel }; await Write(npmIgnore, Path.Combine("../", ".npmignore")); //README.md var readme = new ReadmeTemplate { Model = codeModel }; await Write(readme, Path.Combine("../", "README.md")); } }
/// <summary> /// Generate Azure NodeJS client code for given ServiceClient. /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(ServiceClient serviceClient) { var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient); // Service client var serviceClientTemplate = new Microsoft.Rest.Generator.Azure.NodeJS.Templates.AzureServiceClientTemplate { Model = serviceClientTemplateModel }; await Write(serviceClientTemplate, serviceClient.Name.ToCamelCase() + ".js"); //Models if (serviceClient.ModelTypes.Any()) { var modelIndexTemplate = new AzureModelIndexTemplate { Model = serviceClientTemplateModel }; await Write(modelIndexTemplate, "models\\index.js"); foreach (var modelType in serviceClientTemplateModel.ModelTemplateModels) { var modelTemplate = new ModelTemplate { Model = modelType }; await Write(modelTemplate, "models\\" + modelType.Name.ToCamelCase() + ".js"); } } //MethodGroups if (serviceClientTemplateModel.MethodGroupModels.Any()) { var methodGroupIndexTemplate = new MethodGroupIndexTemplate { Model = serviceClientTemplateModel }; await Write(methodGroupIndexTemplate, "operations\\index.js"); foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = methodGroupModel as AzureMethodGroupTemplateModel }; await Write(methodGroupTemplate, "operations\\" + methodGroupModel.MethodGroupType.ToCamelCase() + ".js"); } } }