Skip to content

Commit

Permalink
Rollup (Azure#324)
Browse files Browse the repository at this point in the history
* WebpackConfig -> RollupConfig

* Refine/simplify TsConfig.cshtml

* Add uglify config

* Regenerate

* fix multiapi test now that latest and 2018-02 come from actually different modules

* Remove obsolete generator outputs

* Force add some package-lock and js files

* Simplify BundleVarName getter

* Remove some hopefully unnecessary lockfiles

* Automatically use namespace var for scoped packages

* Regenerate

* Fix spacing in rollup generated banner

* Regenerate

* Regenerate single-api metadata

* Remove unnecessary rollup plugins

* Regenerate

* move tslib from devDependencies to dependencies

* Fix info message

* Update ms-rest[-azure]-js

* Update generated package.json

* Update generated package-lock.json

* Update script src values in README templates

* Update readme templates

* Regenerate

* Update generated uglify config
  • Loading branch information
RikkiGibson authored Oct 5, 2018
1 parent 5a07dd7 commit 6a91f2e
Show file tree
Hide file tree
Showing 47 changed files with 851 additions and 12,798 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ npm install -g autorest
# Compatibility
This AutoRest extension generates TypeScript code that is compatible with:
```
"ms-rest-azure-js": "~0.17.165",
"ms-rest-js": "~0.22.434"
"ms-rest-azure-js": "^1.0.166",
"ms-rest-js": "^1.0.439"
```

# Usage
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@
"mocha": "^5.0.4",
"mocha-chrome": "^1.0.3",
"moment": "~2.21.0",
"ms-rest-azure-js": "~0.17.165",
"ms-rest-js": "~0.22.434",
"ms-rest-azure-js": "^1.0.166",
"ms-rest-js": "^1.0.439",
"run-sequence": "*",
"should": "5.2.0",
"shx": "^0.2.2",
Expand Down
2 changes: 1 addition & 1 deletion src/azure/Model/CodeModelTSa.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public override string ConstructRuntimeImportForModelIndex()

public override string PackageDependencies()
{
return "\"ms-rest-azure-js\": \"~0.17.165\"" + ",\n" + base.PackageDependencies();
return "\"ms-rest-azure-js\": \"^1.0.166\"" + ",\n" + base.PackageDependencies();
}

public string GenerateAzureServiceClientImports()
Expand Down
30 changes: 21 additions & 9 deletions src/azure/Templates/AzureReadmeTemplate.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ msRestNodeAuth.interactiveLogin().then((creds) => {
@EmptyLine

### browser - Authentication, client creation and @(Model.GetSampleMethod().Name) @(Model.GetSampleMethodGroupName()) as an example written in JavaScript.
See https://github.com/Azure/ms-rest-browserauth to learn how to authenticate to Azure in the browser.
@EmptyLine

- index.html
Expand All @@ -76,17 +77,28 @@ msRestNodeAuth.interactiveLogin().then((creds) => {
@:<html lang="en">
@: <head>
@: <title>@(Model.PackageName) sample</title>
@: <script src="node_modules/ms-rest-js/master/msRestBundle.js"></script>
@: <script src="node_modules/ms-rest-azure-js/master/msRestAzureBundle.js"></script>
@: <script src="node_modules/@(Model.PackageName)/@(Model.Name.ToCamelCase())Bundle.js"></script>
@: <script src="node_modules/ms-rest-js/dist/msRest.browser.js"></script>
@: <script src="node_modules/ms-rest-azure-js/dist/msRestAzure.js"></script>
@: <script src="node_modules/ms-rest-browserauth/dist/msAuth.js"></script>
@: <script src="node_modules/@(Model.PackageName)/dist/@(Model.BundleFilename).js"></script>
@: <script>
@: const subscriptionId = "<Subscription_Id>";
@: const token = "<access_token>";
@: const creds = new msRest.TokenCredentials(token);
@: const client = new @(Model.Name)(creds, undefined, subscriptionId);
@: @(Model.GenerateSampleMethod(true)).catch((err) => {
@: console.log('An error ocurred:');
@: console.error(err);
@: const authManager = new msAuth.AuthManager({
@: clientId: "<client id for your Azure AD app>",
@: tenant: "<optional tenant for your organization>"
@: });
@:
@: authManager.finalizeLogin().then((res) => {
@: if (!res.isLoggedIn) {
@: // may cause redirects
@: authManager.login();
@: }
@:
@: const client = new @(Model.BundleVarName).@(Model.Name)(res.creds, subscriptionId);
@: @(Model.GenerateSampleMethod(true)).catch((err) => {
@: console.log('An error occurred:');
@: console.error(err);
@: });
@: });
@: </script>
@: </head>
Expand Down
12 changes: 3 additions & 9 deletions src/vanilla/CodeGeneratorTS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,7 @@ protected async Task Generate<TCodeModel>(TemplateFactory<TCodeModel> templateFa
if (ShouldWriteMetadata(codeModel))
{
await WriteTsConfig(codeModel);
await WriteWebpackTsConfig(codeModel);
await WriteWebpackConfig(codeModel);
await WriteRollupConfig(codeModel);
await WriteNpmIgnore(codeModel);
}
}
Expand Down Expand Up @@ -245,14 +244,9 @@ protected Task WriteTsConfig(CodeModelTS codeModel)
return Write(new TsConfig { Model = codeModel }, "tsconfig.json");
}

protected Task WriteWebpackTsConfig(CodeModelTS codeModel)
protected Task WriteRollupConfig(CodeModelTS codeModel)
{
return Write(new TsConfigWebpack { Model = codeModel }, "tsconfig.esm.json");
}

protected Task WriteWebpackConfig(CodeModelTS codeModel)
{
return Write(new WebpackConfig { Model = codeModel }, "webpack.config.js");
return Write(new RollupConfig { Model = codeModel }, "rollup.config.js");
}

protected Task WriteNpmIgnore(CodeModelTS codeModel)
Expand Down
2 changes: 1 addition & 1 deletion src/vanilla/GeneratorSettingsTS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ public void UpdatePackageVersion()
string aliasedPackageVersion = MultiapiLatest && aliasedPackageName != null ? packageJsonDeps?[aliasedPackageName]?.ToString() : null;
if (aliasedPackageVersion != null)
{
Log(Category.Information, $"Using package version \"{aliasedPackageVersion}\" for alias package \"{MultiapiLatest}\" from existing package.json file.");
Log(Category.Information, $"Using package version \"{aliasedPackageVersion}\" for alias package \"{aliasedPackageName}\" from existing package.json file.");
AliasedNpmVersion = aliasedPackageVersion;
}
}
Expand Down
34 changes: 33 additions & 1 deletion src/vanilla/Model/CodeModelTS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace AutoRest.TypeScript.Model
{
Expand Down Expand Up @@ -39,6 +40,37 @@ public class CodeModelTS : CodeModel
[JsonIgnore]
public string PackageName => Settings.Multiapi && !Settings.MultiapiLatest ? ApiVersionPackageName : Settings.PackageName;

public string BundleFilename
{
get
{
string packageName = PackageName ?? "bundle";
int slashIndex = packageName.IndexOf("/");
string bundleFilename = packageName.Substring(slashIndex + 1);
return bundleFilename;
}
}

private static Regex npmScopePattern = new Regex(@"@(\w+)/");
public string BundleVarName
{
get
{
string varName = BundleFilename.ToPascalCase();
string packageName = PackageName;
if (!string.IsNullOrEmpty(packageName))
{
Match match = npmScopePattern.Match(PackageName);
if (match.Success)
{
string namespaceName = match.Groups[1].Value.ToPascalCase();
varName = namespaceName + "." + varName;
}
}
return varName;
}
}

private bool _computedRequestContentType;
private string _requestContentType;
public string RequestContentType
Expand Down Expand Up @@ -408,7 +440,7 @@ public virtual string ConstructRuntimeImportForModelIndex()

public virtual string PackageDependencies()
{
string deps = "\"ms-rest-js\": \"~0.22.434\"";
string deps = "\"ms-rest-js\": \"^1.0.439\",\n" + "\"tslib\": \"^1.9.3\"";
if (Settings.MultiapiLatest)
{
string version = Settings.AliasedNpmVersion ?? "^1.0.0";
Expand Down
22 changes: 12 additions & 10 deletions src/vanilla/Templates/PackageJson.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@
"license": "MIT",
@if (!Model.Settings.MultiapiLatest)
{
@: "main": "./cjs/@(Model.Name.ToCamelCase()).js",
@: "main": "./dist/@(Model.BundleFilename).js",
@: "module": "./esm/@(Model.Name.ToCamelCase()).js",
@: "types": "./cjs/@(Model.Name.ToCamelCase()).d.ts",
@: "types": "./esm/@(Model.Name.ToCamelCase()).d.ts",
}
else
{
@: "main": "./cjs/index.js",
@: "main": "./dist/@(Model.BundleFilename).js",
@: "module": "./esm/index.js",
@: "types": "./cjs/index.d.ts",
@: "types": "./esm/index.d.ts",
}
"devDependencies": {
"tslib": "^1.9.3",
"typescript": "^3.0.3",
"webpack": "^4.17.2",
"webpack-cli": "^3.1.0"
"typescript": "^3.1.1",
"rollup": "^0.66.2",
"rollup-plugin-node-resolve": "^3.4.0",
"uglify-js": "^3.4.9"
},
"homepage": "@(Model.HomePageUrl)",
"repository": {
Expand All @@ -43,7 +43,9 @@ else
"url": "@(Model.BugsUrl)"
},
"scripts": {
"build": "tsc && tsc -p tsconfig.esm.json && webpack",
"build": "tsc && rollup -c rollup.config.js && npm run minify",
"minify": "uglifyjs -c -m --comments --source-map \"content='./dist/@(Model.BundleFilename).js.map'\" -o ./dist/@(Model.BundleFilename).min.js ./dist/@(Model.BundleFilename).js",
"prepare": "npm run build"
}
},
"sideEffects": false
}
12 changes: 6 additions & 6 deletions src/vanilla/Templates/ReadmeTemplate.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ This project provides an isomorphic javascript package. Right now it supports:
@EmptyLine
- nodejs
```
npm install @(Model.Settings.PackageName)
npm install @(Model.PackageName)
```
- browser
```html
@{
@:<script type="text/javascript" src="@(Model.Settings.PackageName)/@(Model.Name.ToCamelCase())Bundle.js"></script>
@:<script type="text/javascript" src="@(Model.PackageName)/dist/@(Model.BundleFilename).js"></script>
}
```
@EmptyLine
Expand All @@ -26,7 +26,7 @@ npm install @(Model.Settings.PackageName)
@EmptyLine
```ts
import * as msRest from "ms-rest-js";
import { @(Model.Name), @(Model.ClientPrefix)Models, @(Model.ClientPrefix)Mappers } from "@(Model.Settings.PackageName)";
import { @(Model.Name), @(Model.ClientPrefix)Models, @(Model.ClientPrefix)Mappers } from "@(Model.PackageName)";
const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"];
@EmptyLine
const token = "<access_token>";
Expand All @@ -46,13 +46,13 @@ const client = new @(Model.Name)(creds, subscriptionId);
@:<html lang="en">
@: <head>
@: <title>@(Model.Settings.PackageName) sample</title>
@: <script type="text/javascript" src="./node_modules/ms-rest-js/msRestBundle.js"></script>
@: <script type="text/javascript" src="./@(Model.Name.ToCamelCase())Bundle.js"></script>
@: <script type="text/javascript" src="./node_modules/ms-rest-js/dist/msRest.browser.js"></script>
@: <script type="text/javascript" src="./dist/@(Model.BundleFilename).js"></script>
@: <script type="text/javascript">
@: const subscriptionId = "<Subscription_Id>";
@: const token = "<access_token>";
@: const creds = new msRest.TokenCredentials(token);
@: const client = new @(Model.Name)(creds, subscriptionId);
@: const client = new @(Model.BundleVarName).@(Model.Name)(creds, subscriptionId);
@: @(Model.GenerateSampleMethod(true)).catch((err) => {
@: console.error(err);
@: });
Expand Down
36 changes: 36 additions & 0 deletions src/vanilla/Templates/RollupConfig.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
@using AutoRest.Core.Utilities;
@inherits AutoRest.Core.Template<AutoRest.TypeScript.Model.CodeModelTS>
import nodeResolve from "rollup-plugin-node-resolve";

/**
* @@type {import('rollup').RollupFileOptions}
*/
const config = {
@if (Model.Settings.MultiapiLatest)
{
@: input: './esm/index.js',
}
else
{
@: input: './esm/@(Model.Name.ToCamelCase()).js',
}
external: ["ms-rest-js", "ms-rest-azure-js"],
output: {
file: "./dist/@(Model.BundleFilename).js",
format: "umd",
name: "@(Model.BundleVarName)",
sourcemap: true,
globals: {
"ms-rest-js": "msRest",
"ms-rest-azure-js": "msRestAzure"
},
banner: `/*
@Header(" * ")
*/`
},
plugins: [
nodeResolve({ module: true })
]
};

export default config;
7 changes: 4 additions & 3 deletions src/vanilla/Templates/TsConfig.cshtml
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
@inherits AutoRest.Core.Template<AutoRest.TypeScript.Model.CodeModelTS>
{
"compilerOptions": {
"module": "commonjs",
"module": "es6",
"moduleResolution": "node",
"strict": true,
"target": "es6",
"target": "es5",
"sourceMap": true,
"declarationMap": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"forceConsistentCasingInFileNames": true,
"lib": ["es6"],
"declaration": true,
"outDir": "./cjs"
"outDir": "./esm",
"importHelpers": true
},
"include": ["./lib/**/*"],
"exclude": ["node_modules"]
Expand Down
9 changes: 0 additions & 9 deletions src/vanilla/Templates/TsConfigWebpack.cshtml

This file was deleted.

46 changes: 0 additions & 46 deletions src/vanilla/Templates/WebpackConfig.cshtml

This file was deleted.

Loading

0 comments on commit 6a91f2e

Please sign in to comment.