Convert plugins/account from bower to NPM

Also introduces script to copy files to replace copying in CI here:
https://gerrit.git.corp.google.com/gerrit-ci-scripts/+/c2a069cc36cbe618624fec603fcdc53e7051e977/jenkins/gerrit-bazel-build-account-plugin.sh#21

Release-Notes: skip
Change-Id: Ifaa18274764317a182662f0aca432ed5e23e7b9a
diff --git a/.gitignore b/.gitignore
index 25744ad..6cf0bdc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,12 +21,13 @@
 # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
 hs_err_pid*
 
-# Bower
-bower_components
+# NPM
+node_modules
 
 # JS and CSS Deps
 src/main/resources/static/js/jquery*
 src/main/resources/static/js/angular*
 src/main/resources/static/js/bootstrap*
 src/main/resources/static/js/core*
+src/main/resources/static/js/index.js
 src/main/resources/static/css/bootstrap*
diff --git a/bower.json b/bower.json
deleted file mode 100644
index e0e0ef5..0000000
--- a/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "name": "account",
-  "authors": [
-    "Luca Milanesio <luca.milanesio@gmail.com>"
-  ],
-  "description": "",
-  "main": "",
-  "license": "APL 2.0",
-  "homepage": "",
-  "ignore": [
-    "**/.*",
-    "node_modules",
-    "bower_components",
-    "test",
-    "tests"
-  ],
-  "dependencies": {
-    "bootstrap": "^4.1.1",
-    "jquery": "^3.3.1",
-    "angular": "^1.7.0"
-  }
-}
diff --git a/copy_deps.sh b/copy_deps.sh
new file mode 100755
index 0000000..bc1a1f1
--- /dev/null
+++ b/copy_deps.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+npm install
+cp -Rf node_modules/jquery/dist/*js src/main/resources/static/js/.
+cp -Rf node_modules/bootstrap/dist/js/*js src/main/resources/static/js/.
+cp -Rf node_modules/bootstrap/dist/css/*css src/main/resources/static/css/.
+cp -Rf node_modules/angular/*js src/main/resources/static/js/.
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..e795f56
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,74 @@
+{
+  "name": "account",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "account",
+      "license": "APL 2.0",
+      "dependencies": {
+        "angular": "^1.7.0",
+        "bootstrap": "^4.1.1",
+        "jquery": "^3.3.1"
+      }
+    },
+    "node_modules/angular": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.0.tgz",
+      "integrity": "sha512-3LboCLjrOuC7dWh953O0+dI3dJ7PexYRSCIrfqoN5qoHyja/wak3eWoxPKb2Sl2qwiPbrUV5KJXwgpUQ48McBQ==",
+      "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward."
+    },
+    "node_modules/bootstrap": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz",
+      "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==",
+      "engines": {
+        "node": ">=6"
+      },
+      "peerDependencies": {
+        "jquery": "1.9.1 - 3",
+        "popper.js": "^1.14.3"
+      }
+    },
+    "node_modules/jquery": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
+      "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="
+    },
+    "node_modules/popper.js": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
+      "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
+      "peer": true,
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    }
+  },
+  "dependencies": {
+    "angular": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.0.tgz",
+      "integrity": "sha512-3LboCLjrOuC7dWh953O0+dI3dJ7PexYRSCIrfqoN5qoHyja/wak3eWoxPKb2Sl2qwiPbrUV5KJXwgpUQ48McBQ=="
+    },
+    "bootstrap": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz",
+      "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==",
+      "requires": {}
+    },
+    "jquery": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
+      "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg=="
+    },
+    "popper.js": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
+      "peer": true
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..9109170
--- /dev/null
+++ b/package.json
@@ -0,0 +1,13 @@
+{
+  "name": "account",
+  "license": "APL 2.0",
+  "author": {
+    "name": "Luca Milanesio",
+    "email": "luca.milanesio@gmail.com"
+  },
+  "dependencies": {
+    "angular": "^1.7.0",
+    "bootstrap": "^4.1.1",
+    "jquery": "^3.3.1"
+  }
+}