diff --git a/.env_example b/.env_example
new file mode 100644
index 00000000..58224ab1
--- /dev/null
+++ b/.env_example
@@ -0,0 +1,3 @@
+D2AP_BUNGIE_API_KEY=
+D2AP_BUNGIE_CLIENT_ID=
+D2AP_BUNGIE_CLIENT_SECRET=
diff --git a/.gitignore b/.gitignore
index de51f68a..9f9d8548 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,3 +43,9 @@ testem.log
# System Files
.DS_Store
Thumbs.db
+
+
+environment.ts
+environment.prod.ts
+.env
+.env_dev
diff --git a/.run/Angular CLI Server (dev).run.xml b/.run/Angular CLI Server (dev).run.xml
new file mode 100644
index 00000000..914c682a
--- /dev/null
+++ b/.run/Angular CLI Server (dev).run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/Build (production).run.xml b/.run/Build (production).run.xml
new file mode 100644
index 00000000..581c398a
--- /dev/null
+++ b/.run/Build (production).run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/Create Config (dev).run.xml b/.run/Create Config (dev).run.xml
new file mode 100644
index 00000000..5c7105c7
--- /dev/null
+++ b/.run/Create Config (dev).run.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/Deploy (production).run.xml b/.run/Deploy (production).run.xml
new file mode 100644
index 00000000..6a72eaa8
--- /dev/null
+++ b/.run/Deploy (production).run.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 93dc5fa3..644ae1ba 100644
--- a/README.md
+++ b/README.md
@@ -4,3 +4,7 @@ D2ArmorPicker is a small tool to min-max your armor stats with only a few clicks
Visit it here, and make sure to use the second version of the tool https://mijago.github.io/D2ArmorPicker/#/v2.
Note that Version 1 is no longer actively updated (only for important bug fixes).
+
+# Building
+1) Copy `.env_example` to `.env` and `.env_dev` and fill the missing values.
+2) run `npm serve` or `npm build`
diff --git a/package-lock.json b/package-lock.json
index a9c97a2b..2ce31420 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1514,6 +1514,21 @@
"to-fast-properties": "^2.0.0"
}
},
+ "@cspotcode/source-map-consumer": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz",
+ "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==",
+ "dev": true
+ },
+ "@cspotcode/source-map-support": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz",
+ "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==",
+ "dev": true,
+ "requires": {
+ "@cspotcode/source-map-consumer": "0.8.0"
+ }
+ },
"@csstools/convert-colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
@@ -1678,6 +1693,30 @@
"integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==",
"dev": true
},
+ "@tsconfig/node10": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz",
+ "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==",
+ "dev": true
+ },
+ "@tsconfig/node12": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz",
+ "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==",
+ "dev": true
+ },
+ "@tsconfig/node14": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz",
+ "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==",
+ "dev": true
+ },
+ "@tsconfig/node16": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz",
+ "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==",
+ "dev": true
+ },
"@types/component-emitter": {
"version": "1.2.10",
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
@@ -1979,6 +2018,12 @@
"integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==",
"dev": true
},
+ "acorn-walk": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+ "dev": true
+ },
"adjust-sourcemap-loader": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz",
@@ -2130,9 +2175,9 @@
"dev": true
},
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
@@ -2196,6 +2241,12 @@
}
}
},
+ "arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true
+ },
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
@@ -3273,6 +3324,12 @@
"yaml": "^1.10.0"
}
},
+ "create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
"critters": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/critters/-/critters-0.0.10.tgz",
@@ -4025,6 +4082,12 @@
"integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
"dev": true
},
+ "diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true
+ },
"dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -4108,6 +4171,12 @@
"domhandler": "^4.2.0"
}
},
+ "dotenv": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
+ "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
+ "dev": true
+ },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -6641,6 +6710,12 @@
}
}
},
+ "make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
+ },
"make-fetch-happen": {
"version": "9.0.4",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.0.4.tgz",
@@ -7266,9 +7341,9 @@
}
},
"nth-check": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
- "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
+ "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
"dev": true,
"requires": {
"boolbase": "^1.0.0"
@@ -10893,9 +10968,9 @@
"dev": true
},
"tar": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
- "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
+ "version": "6.1.11",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
+ "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
"dev": true,
"requires": {
"chownr": "^2.0.0",
@@ -11095,6 +11170,26 @@
"escape-string-regexp": "^1.0.2"
}
},
+ "ts-node": {
+ "version": "10.3.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.3.1.tgz",
+ "integrity": "sha512-Yw3W2mYzhHfCHOICGNJqa0i+rbL0rAyg7ZIHxU+K4pgY8gd2Lh1j+XbHCusJMykbj6RZMJVOY0MlHVd+GOivcw==",
+ "dev": true,
+ "requires": {
+ "@cspotcode/source-map-support": "0.7.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "yn": "3.1.1"
+ }
+ },
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
@@ -11304,9 +11399,9 @@
}
},
"url-parse": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz",
- "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
+ "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
"dev": true,
"requires": {
"querystringify": "^2.1.1",
@@ -12198,6 +12293,12 @@
"decamelize": "^1.2.0"
}
},
+ "yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true
+ },
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index c477f145..f36b1483 100644
--- a/package.json
+++ b/package.json
@@ -3,11 +3,11 @@
"version": "0.0.0",
"scripts": {
"ng": "ng",
- "INSTALL": "ng add @angular/material",
- "start": "ng serve --ssl",
- "build": "ng build",
- "deploy": "ng deploy D2ArmorPicker --base-href=/ --cname=d2armorpicker.com",
- "watch": "ng build --watch --configuration development",
+ "config": "ts-node set-env.ts",
+ "start": "npm run config && ng serve --ssl",
+ "build": "npm run config && ng build",
+ "deploy": "npm run config && ng deploy D2ArmorPicker --base-href=/ --cname=d2armorpicker.com",
+ "watch": "npm run config && ng build --watch --configuration development",
"test": "ng test"
},
"private": true,
@@ -37,12 +37,14 @@
"@angular/compiler-cli": "~12.1.2",
"@types/jasmine": "~3.8.0",
"@types/node": "^12.11.1",
+ "dotenv": "^10.0.0",
"jasmine-core": "~3.8.0",
"karma": "~6.3.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.0.3",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "~1.7.0",
+ "ts-node": "^10.3.1",
"typescript": "~4.3.2"
}
}
diff --git a/set-env.ts b/set-env.ts
new file mode 100644
index 00000000..2389b85e
--- /dev/null
+++ b/set-env.ts
@@ -0,0 +1,36 @@
+const writeFile = require("fs").writeFile
+
+const production = process.env.PRODUCTION === "1"
+const version = "2.0.14"
+
+// Configure Angular `environment.ts` file path
+const targetPath = production
+ ? './src/environments/environment.prod.ts'
+ : './src/environments/environment.ts';
+// Load node modules
+
+require('dotenv').config({
+ path: production
+ ? ".env"
+ : ".env_dev"
+});
+
+const data = {
+ version: version + (production ? "" : "-dev"),
+ production: production,
+ apiKey: process.env.D2AP_BUNGIE_API_KEY,
+ clientId: process.env.D2AP_BUNGIE_CLIENT_ID,
+ client_secret: process.env.D2AP_BUNGIE_CLIENT_SECRET,
+ nodeEnv: process.env.NODE_ENV
+}
+
+
+// `environment.ts` file structure
+const envConfigFile = `export const environment = ${JSON.stringify(data, null, 2)};`;
+writeFile(targetPath, envConfigFile, (err: NodeJS.ErrnoException | null) => {
+ if (err) {
+ throw console.error(err);
+ } else {
+ console.log(`Angular environment.ts file generated correctly at ${targetPath} \n`);
+ }
+});
diff --git a/src/environments/.create-dir b/src/environments/.create-dir
new file mode 100644
index 00000000..e69de29b
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
deleted file mode 100644
index 54cec565..00000000
--- a/src/environments/environment.prod.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export const environment = {
- version: "2.0.14",
- production: true,
- apiKey: "9415df8eff46408aa9c0d51e4d69b94f",
- clientId: "37252",
- client_secret: "KnVcJPWr7C5y0loOfBoKSyQ-vWXR0JICrgb1aJLsLgg"
-};
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
deleted file mode 100644
index 3383dd61..00000000
--- a/src/environments/environment.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export const environment = {
- version: "2.0.14-dev",
- production: false,
- apiKey: "22f345c936d444b1906129ebef957678",
- clientId: "34392",
- client_secret: "iwBsKX-CI2PCI1tVf2uSp8eP70iualQkZ78w8ooietM"
-};