1
1
mirror of https://github.com/bitgapp/eqMac.git synced 2024-11-22 04:33:53 +03:00

removed site from OS repo

This commit is contained in:
Nodeful 2021-03-24 13:25:52 +02:00
parent e8e1f0c4f6
commit decf2673b1
74 changed files with 0 additions and 17525 deletions

View File

@ -1,10 +0,0 @@
# For IE 9-11 support, please uncomment the last line of the file and adjust as needed
> 0.5%
last 2 versions
Firefox ESR
safari 12.1
safari 12
safari 10.1
safari 10
not dead
# IE 9-11

View File

@ -1,2 +0,0 @@
dist
node_modules

View File

@ -1,13 +0,0 @@
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false

46
site/.gitignore vendored
View File

@ -1,46 +0,0 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# Only exists if Bazel was run
/bazel-out
# dependencies
/node_modules
# profiling files
chrome-profiler-events.json
speed-measure-plugin.json
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db

View File

@ -1,11 +0,0 @@
FROM node:latest
ENV APP_DIR /var/www/app
RUN mkdir -p $APP_DIR
WORKDIR ${APP_DIR}
COPY . .
RUN npm install
RUN ls -la
RUN npm run build
CMD ["npm", "run", "serve"]

View File

@ -1,211 +0,0 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"eqmac-site": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"prefix": "eqm",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss",
"spec": false
},
"@schematics/angular:class": {
"spec": false
},
"@schematics/angular:directive": {
"spec": false
},
"@schematics/angular:guard": {
"spec": false
},
"@schematics/angular:module": {
"spec": false
},
"@schematics/angular:pipe": {
"spec": false
},
"@schematics/angular:service": {
"spec": false
},
"@schematics/angular:application": {
"strict": false
}
},
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/browser",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"./node_modules/@angular/material/prebuilt-themes/pink-bluegrey.css",
"src/styles.scss"
],
"scripts": []
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
}
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "eqmac-site:build"
},
"configurations": {
"production": {
"browserTarget": "eqmac-site:build:production"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "eqmac-site:build"
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": [
"./node_modules/@angular/material/prebuilt-themes/pink-bluegrey.css",
"src/styles.scss"
],
"scripts": [],
"assets": [
"src/favicon.ico",
"src/assets"
]
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"src/tsconfig.app.json",
"src/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**"
]
}
},
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/server",
"main": "src/server.ts",
"tsConfig": "src/tsconfig.server.json"
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"sourceMap": false,
"optimization": {
"scripts": false,
"styles": true
}
}
}
},
"serve-ssr": {
"builder": "@nguniversal/builders:ssr-dev-server",
"options": {
"browserTarget": "eqmac-site:build",
"serverTarget": "eqmac-site:server"
},
"configurations": {
"production": {
"browserTarget": "eqmac-site:build:production",
"serverTarget": "eqmac-site:server:production"
}
}
},
"prerender": {
"builder": "@nguniversal/builders:prerender",
"options": {
"browserTarget": "eqmac-site:build:production",
"serverTarget": "eqmac-site:server:production",
"routes": [
"/"
]
},
"configurations": {
"production": {}
}
}
}
},
"eqmac-site-e2e": {
"root": "e2e/",
"projectType": "application",
"prefix": "",
"architect": {
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "eqmac-site:serve"
},
"configurations": {
"production": {
"devServerTarget": "eqmac-site:serve:production"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": "e2e/tsconfig.e2e.json",
"exclude": [
"**/node_modules/**"
]
}
}
}
}
},
"defaultProject": "eqmac-site"
}

15851
site/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,51 +0,0 @@
{
"name": "eqmac-site",
"version": "0.0.0",
"scripts": {
"start": "ng run eqmac-site:serve-ssr",
"build": "ng build --prod && ng run eqmac-site:server:production",
"deploy": "export $(tr -d '\\r' < .env | xargs) && ./scripts/deploy.sh",
"serve": "node dist/server/main.js",
"prerender": "ng run eqmac-site:prerender"
},
"private": true,
"dependencies": {
"@angular-devkit/core": "^11.2.5",
"@angular/animations": "^11.2.6",
"@angular/cdk": "^11.2.5",
"@angular/common": "~11.2.6",
"@angular/compiler": "~11.2.6",
"@angular/core": "~11.2.6",
"@angular/flex-layout": "^11.0.0-beta.33",
"@angular/forms": "~11.2.6",
"@angular/material": "^11.2.5",
"@angular/platform-browser": "~11.2.6",
"@angular/platform-browser-dynamic": "~11.2.6",
"@angular/platform-server": "~11.2.6",
"@angular/router": "~11.2.6",
"@nguniversal/express-engine": "^11.2.1",
"core-js": "^3.9.1",
"express": "^4.17.1",
"normalize.css": "^8.0.1",
"rxjs": "~6.6.6",
"tslib": "^2.1.0",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.1102.5",
"@angular/cli": "~11.2.5",
"@angular/compiler-cli": "~11.2.6",
"@angular/language-service": "~11.2.6",
"@nguniversal/builders": "^11.2.1",
"@types/express": "^4.17.0",
"@types/jasmine": "~3.6.7",
"@types/jasminewd2": "~2.0.8",
"@types/node": "~14.14.35",
"codelyzer": "^6.0.1",
"ts-loader": "^8.0.18",
"ts-node": "~9.1.1",
"tslint": "~5.20.1",
"typescript": "^4.1.5",
"webpack-cli": "^4.5.0"
}
}

View File

@ -1,16 +0,0 @@
#!/bin/sh
set -e
if [ -z "$DOCKER_REGISTRY" ]; then
echo "Need to set DOCKER_REGISTRY"
exit 1
fi
docker build --no-cache -t $DOCKER_REGISTRY/site:latest .
docker push $DOCKER_REGISTRY/site:latest
gcloud beta run deploy site \
--image $DOCKER_REGISTRY/site:latest \
--allow-unauthenticated \
--platform=managed \
--region=europe-west1

View File

@ -1 +0,0 @@
<ng-content></ng-content>

View File

@ -1,21 +0,0 @@
@import "../../styles/colors.scss";
:host {
display: inline-block;
padding: 10px;
border: 1px solid $dark;
border-radius: 5px;
text-align: center;
background-color: $gradient-start;
* {
vertical-align: middle;
}
&:hover {
cursor: pointer !important;
}
}
:host(.pressing) {
filter: brightness(0.9)
}

View File

@ -1,33 +0,0 @@
import { Component, OnInit, Output, EventEmitter, HostListener, HostBinding } from '@angular/core'
@Component({
selector: 'eqm-button',
templateUrl: './button.component.html',
styleUrls: ['./button.component.scss']
})
export class ButtonComponent implements OnInit {
@Output() pressed = new EventEmitter()
@HostBinding('class.pressing') pressing = false
constructor() { }
ngOnInit() {
}
@HostListener('mousedown')
onMouseDown() {
this.pressing = true
}
@HostListener('mouseleave')
onMouseLeave() {
this.pressing = false
}
@HostListener('mouseup')
onMouseUp() {
if (this.pressing) {
this.pressing = false
this.pressed.emit()
}
}
}

View File

@ -1,5 +0,0 @@
<div fxLayout="row wrap" fxLayoutAlign="center center" fxLayoutGap="10px">
<span>All rights reserved © Bitgapp Ltd. {{year}}</span>
<a routerLink="/terms">Terms and Conditions</a>
<eqm-github-stats></eqm-github-stats>
</div>

View File

@ -1,7 +0,0 @@
@import "../../styles/colors.scss";
:host {
background-color: $dark;
display: block;
padding: 10px;
}

View File

@ -1,14 +0,0 @@
import { Component, OnInit } from '@angular/core'
@Component({
selector: 'eqm-footer',
templateUrl: './footer.component.html',
styleUrls: ['./footer.component.scss']
})
export class FooterComponent {
get year () {
return new Date().getFullYear()
}
}

View File

@ -1 +0,0 @@
<iframe src="https://ghbtns.com/github-btn.html?user=bitgapp&repo=eqmac&type=star&count=true" frameborder="0" scrolling="0" width="80px" height="20px"></iframe>

View File

@ -1,3 +0,0 @@
:host {
margin: 20px;
}

View File

@ -1,15 +0,0 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'eqm-github-stats',
templateUrl: './github-stats.component.html',
styleUrls: ['./github-stats.component.scss']
})
export class GithubStatsComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}

View File

@ -1,5 +0,0 @@
<a routerLink="/"><img height="25" src="assets/icon.svg"></a>
<!-- <a routerLink="/account" class="icon-gradient-middle">Manage Subscription</a> -->
<a routerLink="/" (click)="sectionClicked.emit('features')">Features</a>
<!-- <a (click)="helpClicked.emit()">Help</a> -->
<a routerLink="/faq">FAQ</a>

View File

@ -1,16 +0,0 @@
@import "../../styles/colors.scss";
:host {
padding: 15px;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
position: absolute;
top: 0;
}
a {
margin-right: 50px;
}

View File

@ -1,15 +0,0 @@
import { Component, OnInit, EventEmitter, Output } from '@angular/core'
@Component({
selector: 'eqm-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
@Output() sectionClicked = new EventEmitter<string>()
constructor () { }
ngOnInit () {
}
}

View File

@ -1,14 +0,0 @@
<div fxLayout="column" fxLayoutAlign="start center">
<h3>Frequently asked questions:</h3>
<mat-accordion>
<mat-expansion-panel *ngFor="let qa of QA">
<mat-expansion-panel-header>
<mat-panel-title>
Question: {{qa.Q}}
</mat-panel-title>
</mat-expansion-panel-header>
<span>Answer: </span>
<p [innerHTML]="qa.A"></p>
</mat-expansion-panel>
</mat-accordion>
</div>

View File

@ -1,13 +0,0 @@
@import "../../../styles/colors.scss";
:host {
margin-top: 50px;
padding: 50px;
display: block;
}
.terminal-command {
background-color: $gradient-end;
padding: 10px;
border-radius: 5px;
}

View File

@ -1,49 +0,0 @@
import { Component, OnInit, ViewEncapsulation } from '@angular/core'
@Component({
selector: `eqm-faq`,
templateUrl: `./faq.component.html`,
styleUrls: [`./faq.component.scss`],
encapsulation: ViewEncapsulation.None
})
export class FAQComponent implements OnInit {
// tslint:disable:max-line-length
QA: { Q: string, A: string }[] = [{
Q: `What is the point eqMac? What is an Audio Equalizer?`,
A: `If if you feel like your audio hardware (headphones, speaker) does not have enough Bass (low frequency) punch, or vice versa, you can adjust that using eqMac.
<br>
Watch <a target="_blank" href="https://youtu.be/I6ZF_NHvqzU?t=41">THIS VIDEO</a> for a better explanation.`
}, {
Q: `How do you install eqMac?`,
A: `Press the Download button on the home page.
<br>
Open the downloaded eqMac.dmg file (if you accidentally closed the window you can always reopen it by Finding it as a Drive in your Finder).
<br>
Drag the eqMac app into Applications directory.
<br>
Open eqMac.app from you Applications directory.`
}, {
Q: `Why is eqMac asking for Admin Password during the first launch?`,
A: `The way eqMac works it needs to install an Audio Driver, to do that it needs your system password.<br>The app never sees your password as it uses secure Apple API to perform the install.`
}, {
Q: `Why is eqMac asking for permission to access my microphone?`,
A: `macOS does not have direct way to access the System Audio stream, so we use the eqMac Audio driver to divert the system audio to the drivers input stream.<br>Then eqMac captures that input audio stream, processses it and sends it directly to the output device.`
}, {
Q: `Sometimes there are sound issues using eqMac?`,
A: `Sometimes there are synching issues, try to switch away from eqMac audio device to your preferred output device and eqMac should restart the audio pipeline.<br>Alternatively, you can try to restart eqMac, that should help as well`
}, {
Q: `How do I uninstall eqMac?`,
A: `The proper way to uninstall eqMac is to click the "Uninstall" button in eqMac Settings section.
<br>That will run a script to uninstall the app and the driver properly.
<br>If for whatever reason you cannot run eqMac, to uninstall the driver you can run this command in Terminal:
<br><br>
<div class="terminal-command">sudo rm -rf /Library/Audio/Plug-Ins/HAL/eqMac.driver/ && sudo launchctl kickstart -k system/com.apple.audio.coreaudiod &>/dev/null</div>`
}]
// tslint:enable:max-line-length
constructor () { }
ngOnInit () {
}
}

View File

@ -1,3 +0,0 @@
<eqm-overview class="overview" (downloadPressed)="download($event)" (takeATourPressed)="scrollTo(features)"></eqm-overview>
<div #features id="features"><eqm-features></eqm-features></div>
<eqm-faq></eqm-faq>

View File

@ -1,29 +0,0 @@
import { Component } from '@angular/core'
import { GithubService } from '../../../services/github.service'
@Component({
selector: 'eqm-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent {
constructor (private github: GithubService) { }
scrollTo (elem: HTMLElement) {
return elem.scrollIntoView({ behavior: 'smooth' })
}
async download (urlPressed: boolean) {
if (urlPressed) return
const url = await this.github.getLatestDownloadUrl()
const link = document.createElement('a')
link.download = 'eqmac.dmg'
link.href = url
link.click()
}
takeATour () {
// TODO: Implement
}
}

View File

@ -1,18 +0,0 @@
<div fxLayout="column" fxLayoutAlign="space-around center" fxLayoutGap="50px">
<div *ngFor="let category of categories" fxLayout="column" fxLayoutAlign="space-around center">
<h2>{{category.category}}</h2>
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="space-around center" fxLayoutGap="50px">
<div *ngFor="let feature of category.features"
[fxFlex]="100 / category.features.length" class="feature" fxLayout="column" fxLayoutAlign="start center" fxLayoutGap="10px">
<span>{{feature.feature || ''}}</span>
<div class="image">
<img [src]="'assets/sections/' + feature.image" [height]="category.height"/>
<div *ngIf="feature.border !== false" class="border" [style.height.px]="category.height"></div>
</div>
<p *ngIf="feature.comment !== false">{{feature.comment}}</p>
</div>
</div>
</div>
</div>

View File

@ -1,31 +0,0 @@
@import "../../../../../styles/colors.scss";
:host {
background-color: $dark;
display: block;
padding: 40px;
}
.feature {
min-width: 350px;
.image {
$border-radius: 5px;
position: relative;
img {
border-radius: $border-radius;
}
.border {
border-radius: $border-radius;
width: 100%;
position: absolute;
top: 0;
left: 0;
$border: 0px 0px 0px 2px $gradient-end inset;
-webkit-box-shadow: $border;
-moz-box-shadow: $border;
box-shadow: $border;
}
}
}

View File

@ -1,36 +0,0 @@
import { Component, OnInit } from '@angular/core'
@Component({
selector: 'eqm-features',
templateUrl: './features.component.html',
styleUrls: ['./features.component.scss']
})
export class FeaturesComponent implements OnInit {
categories = [{
category: 'Volume',
height: 99,
features: [{
image: 'booster.jpg',
}, {
image: 'balance.jpg',
}]
}, {
category: 'Equalizers',
height: 250,
features: [{
image: 'basic-equalizer.jpg',
}, {
image: 'advanced-equalizer.jpg',
}, {
feature: 'Expert',
image: 'expert-equalizer.svg',
comment: 'Coming soon',
border: false
}]
}]
constructor () { }
ngOnInit () {
}
}

View File

@ -1,3 +0,0 @@
<p>
help works!
</p>

View File

@ -1,7 +0,0 @@
@import "../../../../../styles/colors.scss";
:host {
background-color: $gradient-end;
display: block;
padding: 10px;
}

View File

@ -1,15 +0,0 @@
import { Component, OnInit } from '@angular/core'
@Component({
selector: 'eqm-help',
templateUrl: './help.component.html',
styleUrls: ['./help.component.scss']
})
export class HelpComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}

View File

@ -1,32 +0,0 @@
<div fxLayout="row" fxLayout.lt-md="column" fxLayoutAlign="center center">
<div fxLayout="column" fxLayoutAlign="space-around center" class="info">
<img width="144" height="144" src="assets/icon.svg">
<div style="position: relative;">
<h2>eqMac</h2><div class="beta-tag"><span>Beta</span></div>
</div>
<h3>Free Audio Equalizer for macOS</h3>
<div fxLayout="row" fxFill="100%" fxLayoutAlign="center center" fxLayoutGap="20px">
<a *ngIf="url" [href]="url" fxFlex="40%" download="eqmac.dmg">
<eqm-button fxFlex="100%" class="icon-gradient-middle-bg dark">
Download
</eqm-button>
</a>
<eqm-button *ngIf="!url" fxFlex="40%" class="icon-gradient-middle-bg dark" (pressed)="downloadPressed.emit()">
Download
</eqm-button>
<eqm-button fxFlex="40%" (pressed)="takeATourPressed.emit()">
Take a tour
</eqm-button>
</div>
<br>
<span class="text-small" style="opacity: 0.7">By Downloading and installing eqMac you automatically agree to our <a routerLink="/terms" class="underline">Terms and Conditions</a></span>
<br>
<div fxLayout="row" fxLayoutGap="10px" fxLayoutAlign="center space-around">
<span>600k+ Downloads</span>
<span>|</span>
<span>50k+ Users</span>
</div>
<eqm-github-stats></eqm-github-stats>
</div>
<img class="screenshot" src="assets/screenshot2.png" width="500"/>
</div>

View File

@ -1,30 +0,0 @@
@import "../../../../../styles/colors.scss";
:host {
background-color: $gradient-end;
display: block;
}
.info {
margin-top: 60px;
min-width: 500px;
.beta-tag {
position: absolute;
right: -75px;
top: 31px;
background-color: $dark;
border-radius: 5px;
padding: 2px 10px;
}
}
.screenshot {
// border: 1px solid black;
margin: 30px;
// $shadow: 0 5px 20px 0px rgba(0, 0, 0, 0.2);
// box-shadow: $shadow;
// -moz-box-shadow: $shadow;
// -webkit-box-shadow: $shadow;
}

View File

@ -1,24 +0,0 @@
import { Component, OnInit, Output, EventEmitter } from '@angular/core'
import { GithubService } from 'src/app/services/github.service'
@Component({
selector: 'eqm-overview',
templateUrl: './overview.component.html',
styleUrls: ['./overview.component.scss']
})
export class OverviewComponent implements OnInit {
@Output() downloadPressed = new EventEmitter()
@Output() takeATourPressed = new EventEmitter()
url?: string
constructor (private github: GithubService) {}
ngOnInit () {
this.setDownloadUrl()
}
async setDownloadUrl () {
this.url = await this.github.getLatestDownloadUrl()
}
}

View File

@ -1,9 +0,0 @@
import { Injectable } from '@angular/core'
@Injectable({
providedIn: 'root'
})
export class OverviewService {
constructor () { }
}

View File

@ -1,4 +0,0 @@
<eqm-header (sectionClicked)="scrollTo($event)"></eqm-header>
<router-outlet></router-outlet>
<eqm-footer></eqm-footer>

View File

@ -1,4 +0,0 @@
.overview {
padding-top: 10px;
}

View File

@ -1,20 +0,0 @@
import { Component, OnInit, ElementRef } from '@angular/core'
@Component({
selector: 'eqm-root',
templateUrl: './root.component.html',
styleUrls: ['./root.component.scss']
})
export class RootComponent implements OnInit {
ngOnInit () {
}
scrollTo (id: string) {
const elem = document.getElementById(id)
elem?.scrollIntoView({ behavior: 'smooth' })
}
}

View File

@ -1,186 +0,0 @@
<p>Terms and Conditions</p>
<p><strong>IT IS IMPORTANT THAT YOU READ AND UNDERSTAND THIS TERMS AND CONDITIONS (“T&amp;C”) DOCUMENT CAREFULLY BEFORE INSTALLING OR USING THE SOFTWARE PRODUCT eqMac.</strong></p>
<p>For all practical purposes, irrespective of the version nomenclature, the base product name will be used as “eqMac” in the T&amp;C. eqMac includes mobile software and associated media and may include printed materials, and may include “online” or electronic documentation collectively called as App, Software or Software Product.</p>
<p>This is a legal document between you (either an individual or an entity, herein referred to as USER) and Bitgapp Ltd., (herein referred to as Company). By installing, copying, downloading, or otherwise using the App, USER acknowledges that USER has read this T&amp;C, that USER understands it, and USER agrees to be bound by the T&amp;C. USER can install the App on a Portable/ Mobile/ Detachable device or Home Computer or on a Workstation, collectively called as Mobile, Computer or System/ Systems.</p>
<p>“Use” means downloading, installation, copying, storing, executing, loading, searching, displaying or otherwise using the Software.</p>
<p>“Content” means audio, video or image files such as music videos, music, songs, radio, podcasts, audio books, cover artwork, movies, streaming services, etc.</p>
<p>In case USER does not wish to continue or does not agree with the terms and conditions of this Agreement, USER can exit from the installation or Use of the App.</p>
<p><strong>RIGHTS AND OBLIGATIONS:</strong></p>
<p><strong>1. Copyright:</strong>
Bitgapp and its Products and Logos are the Trademarks of the Company. All intellectual property rights in the Software and its associated documents (including but not limited to any images, photographs, animations, video, audio, music, text, and "applets," incorporated into the Software Product) are exclusively owned by the Company, and are protected by applicable Copyright, Trade Secret, Patent and Trademark laws. The Software is licensed, not sold. USER will not remove any identification, modify or obscure any proprietary or copyright notice of the Company from any copy of the Software or documents. In case of misuse of the intellectual property by any USER in any manner or form, Company will, in appropriate circumstances, initiate Legal Procedures against the USER.</p>
<p>Copyright Third party services and Content: eqMac, when used on your supported System, accesses Content either residing on the local device and/or through online or streaming services. Company does not own any Copyright to such content produced and/or provided by third party services and use of unauthorized content by the USER is strictly forbidden. The company does not guarantee continuation of access to third party content and will be at the discretion of the company and such third party content providers.Company makes use of licensed programmatic access to such Content from third party providers via Software Development Kit (SDK) and/or Application Program Interface (API). Company does not allow download, persistent storage or export of unauthorized content. Company respects the Copyright, Intellectual Property Rights, Ownership of such Content by the owners of the Content and Company claims no ownership or warranties thereof. USER is responsible to respect and abide by the T&amp;C, Copyright and Intellectual Property Rights (IPR) of all Content displayed and/or accessed via the App.</p>
<p><strong>2. Grant of License:</strong>
USER may download Software or purchase a license from Companys Website or through other authorized third party Websites, digital or retail storefronts. All licenses to the Software are non-exclusive, non-transferable,limited license to Use the copy of the Software and its associated documents.</p>
<p><strong>3. Rights and Limitations:</strong>
USER is not authorized to rent, lease, sell, sublicense, assign or transfer rights in the Software. USER is not authorized to cause any portion of the Software to be copied onto another persons System. USER has no ownership rights in the Software and its associated documents. The Ownership in the Software and its associated documents rests at all times with the Company. Failing to Use the Software as per Terms of Use of the T&amp;C by USER is strictly forbidden and is a violation of this T&amp;C. In such case the Company may terminate the T&amp;C and USER must destroy all copies of the Software Product and all of its associated documents. Company may, at its sole discretion, initiate legal action against USER for such violations, and USER will be prosecuted to the maximum extent possible, which may result in severe civil and/or criminal penalties.</p>
<p><strong>4. Terms of Use:</strong>
USER shall not:</p>
<p><strong>(a)</strong> Modify, adapt, translate, decompile, disassemble or reverse engineer the Software or any portion thereof, in any manner;</p>
<p><strong>(b)</strong> Attempt to break security, access, tamper with or use any unauthorized portion of the Software;</p>
<p><strong>(с)</strong> Remove any Copyright, Trade Mark or other proprietary rights notices contained in the Software;</p>
<p><strong>(d)</strong> Attempt to collect or maintain any information about other users of the Software or other third parties for unauthorized purposes;</p>
<p><strong>(e)</strong> Transmit or attempt to transmit the Software over any network or between any devices unauthorizedly, enabling the use of the Software on multiple Systems;</p>
<p><strong>(f)</strong> USE the Software for transmission of any viruses, worms, defects, Trojan horses or other malicious code or items of a destructive nature; or</p>
<p><strong>(g)</strong> USE the Software for any unlawful, copyright infringement, harassing, abusive, criminal or fraudulent purposes.</p>
<p><strong>5. Update, Upgrade, Maintenance, Data:</strong>
The Company may from time to time issue updates or upgrades of the Software, including on different application platforms. As part of necessitating an update/upgrade and maintenance or fraud detection with regards to the Software, Company may collect user information such as Users System information and/or User related information. Company undertakes to store such information securely in an encrypted form and take all reasonable measures to prevent any unauthorized use of such information.</p>
<p>All updates and upgrades will be available to the USER at a fixed price, subscription or free of cost, and on the conditions prescribed by the Company. Company keeps the exclusive rights whether to develop or maintain the Software further or to withdraw the Software from offering for download, without any prior notice to the USERS.</p>
<p><strong>6. Age Factor:</strong>
USERS below 18 years of age should receive parental or guardian guidance related to downloading and using the Software. If USER is below eighteen years of age, Company assumes that USER has obtained necessary permission or guidance before downloading or using the application and that USERs parents or guardian have no objection in this regard and have read and understood the T&amp;C and have accepted the Terms and Conditions and Terms of Use on behalf of USER. In certain countries, the minimum age for downloading, installing or using digital Software may vary subject to local laws and the Company assumes that the USER has made an informed and legal decision.</p>
<p><strong>7. Risk:</strong>
eqMac is intended to be used as a personal utility tool. eqMac enhances the system audio output volume by using proprietary algorithms. The volume output, when synthesized through eqMac, increases the system audio output to the best possible level and enhances the audibility of the audio. The Software has been designed and thoroughly tested by the Company to get the optimum audio output levels which under normal usage do not cause any damage to the sound hardware of the System or headphones or other audio accessories. USER is solely responsible for all the actions and results related to the use of this Software.</p>
<p><strong>8. Limited Warranty:</strong>
The Software is provided “As Is” without warranty of any kind, express or implied, including, but not limited to, warranties of performance or merchantability or fitness for a particular purpose. USER bears all risk relating to the use of the Software. If the Software does not perform substantially in accordance with the documentation, USERs exclusive remedy will be limited to, at Companys sole discretion, correction of the defect in the Software, if any, or refund of the actual cost paid by the User for the Software, subject to Clause No. 10 below.</p>
<p><strong>9. Customer Remedies:</strong>
Company offers online support for this Software, pre and post sale. The nature of support can be free or on payment basis and the option of switching from free or on payment basis may be amended without prior notice, at the discretion of the Company. Company will try to resolve the issues arising from this Software. USER will cooperate with the Company Support team for investigation of issues. This limited warranty is void if failure of the Software has resulted from accident, abuse, misapplication or violating the Terms of Use.</p>
<p><strong>10. Service:</strong>
While Bitgapp makes reasonable efforts to ensure that its services are available at all times, Bitgapp does not guarantee, represent or warrant that its services will be uninterrupted or error-free, and Bitgapp does not guarantee that users will be able to access or use all the Bitgapp assistance for the Software at all times.</p>
<p><strong>11. No Liability:</strong>
In no event shall the Company be liable to the USER for any loss, damages, claims or costs whatsoever, including any special, consequential, indirect or incidental damages, any lost profits or lost savings, lost data, loss of privacy, any damages resulting from business interruption, personal injury or failure to meet any duty of care, or claims by a third party arising out of the use or inability or inappropriate use of the Software, even if the Company has been advised of the possibility of such loss, damages, claims or costs in advance.</p>
<p><strong>12. Legal Terms and Restrictions:</strong></p>
<p><strong>(a)</strong> The Software and its associated documents are exported from the United Kingdom. This T&amp;C is expressly made subject to any Laws, regulations, orders, or other restrictions on the export from the United Kingdom, of the Software or information about such Software, which may be imposed from time to time by the Government of the United Kingdom. USER shall not export the Software and its associated documents or any information thereof without the written permission from the Company.</p>
<p><strong>(b)</strong> T&amp;C shall be governed, construed and implemented by the laws of the United Kingdom without giving effect to conflict of laws principles. All disputes under T&amp;C shall be subject to the exclusive jurisdiction of the High Court of Justice of England and Wales.</p>
<p><strong>(с)</strong> No failure to enforce any term of this T&amp;C shall constitute a waiver of such term.</p>
<p><strong>(d)</strong> USER shall not assign its obligations hereunder in whole or in part without the prior written approval of the Company.</p>
<p><strong>(e)</strong> If any part of this T&amp;C is for any reason found to be invalid, illegal or unenforceable, the validity, legality and enforceability of the remaining provisions of this T&amp;C shall not be affected and shall remain in effect.</p>
<p><strong>13. Complete Agreement:</strong>
This T&amp;C is the complete and exclusive statement of the agreement between the Company and the USER with respect to the subject matter, and supersedes and voids any proposal prior or agreement to this T&amp;C, oral or written, and any other communications between the Parties.</p>
<p><strong>14. Amendments:</strong>
Company may, at any time, and at its sole discretion update/modify the Terms and Conditions without any notice to the User.</p>
<p>The most current version of the Terms and Conditions shall be applicable.</p>
<p>If the USER has any queries with respect to the above terms and conditions, please write to the Company at bitgapp@bitgapp.com or visit our Website https://bitgapp.com for contact information.</p>
<p><strong>Privacy Policy</strong></p>
<p>eqMac respects your privacy rights and recognizes the importance of protecting any information collected about you. This Privacy Policy defines how eqMac collects and uses and shares personal and non-personal information.</p>
<p><strong>1. Collection of Personal/Non-Personal Information you provide us directly:</strong>
Profile information that you provide to create account/user profile like your name, email address, address, photo, etc.</p>
<p><strong>2. Analytics Information:</strong>
We use third-party analytics tools to collect information like the web pages you visit, add-ons, and other information that assists us in improving the product/service. We collect and use this analytics information with analytics information from other users so that it cannot reasonably be used to identify any particular individual User.</p>
<p><strong>3. Log Information:</strong>
We collect log information when you use our website. That information includes, among other things:</p>
<ul>
<li>details about how youve used our services.</li>
<li>device information, such as your web browser type and language.</li>
<li>session times.</li>
<li>pages viewed.</li>
<li>IP address.</li>
<li>identifiers associated with cookies or other technologies that may uniquely identify your device or browser.</li>
<li>pages you visited before or after navigating to our website.</li>
</ul>
<p><strong>4. Device Identifiers:</strong>
We may access, collect, monitor, store on your device, and/or remotely store one or more "device identifiers". Device identifiers are small data files or similar data structures stored on or associated with your mobile/desktop device a device identifier may be data stored in connection with network interface and location addressing or data sent to the device by Bitgapp. A device identifier may deliver information to us or to a third-party partner about how you browse and use the service and may help us or others provide reports or personalized content and ads. Some features of the service may not function properly if use or availability of device identifiers is impaired or disabled.</p>
<p><strong>5. Metadata:</strong>
Metadata is usually technical data that is associated with user content. For example, Metadata can describe how, when and by whom a piece of user content was collected and how that content is formatted.</p>
<p><strong>6. How We Use Information</strong>:
The reason we collect your information is to provide you amazing products and services by relentlessly working to improve them. We use your information to:</p>
<ul>
<li>develop, operate, improve, deliver, maintain, and protect our products and services.</li>
<li>send you communications, including by email. For example, we may use email to respond to support inquiries or to share information about our products, services, and promotional offers that we think may interest you.</li>
<li>monitor and analyze trends and usage.</li>
<li>Personalise our services.</li>
<li>contextualize your experience.</li>
<li>provide and improve ad targeting and measurement, including through the use of your precise location information (if youve given us permission to collect that information), both on and off our services.</li>
<li>enhance the safety and security of our products and services.</li>
<li>verify your identity and prevent fraud or other unauthorized or illegal activity.</li>
<li>use information weve collected from cookies and other technology to enhance our services and your experience with them.</li>
</ul>
<p><strong>7. Disclosure of Personal/Non-Personal Information:</strong>
We may share information about you in the following ways with third parties.</p>
<ul>
<li>With service providers: We may share information about you with service providers who perform services on our behalf.</li>
<li>With business partners: We may share information about you with business partners that provide services and functionality.</li>
<li>With third parties for legal reasons: We may share information about you if we reasonably believe that disclosing the information is needed to:
<ul>
<li>comply with any valid legal process, governmental request, or applicable law, rule, or regulation.</li>
<li>investigate, remedy, or enforce potential Terms of Service violations.</li>
<li>protect the rights, property, and safety of us, our users, or others.</li>
<li>detect and resolve any fraud or security concerns.</li></ul>
</li>
</ul>
<p><strong>8. Data Retention:</strong>
eqMac retains the information collected pursuant to this Privacy Policy. If the collected information is no longer needed for the purposes specified in this Privacy Policy, eqMac shall delete all aforementioned information in its possession.</p>
<p><strong>9. Third-Party Terms and Conditions:</strong>
Please note that your access to our website may be subject to certain third-party terms and conditions and privacy policies, including but not limited to application stores, software platforms, and payment processors if any. You recognize and agree that eqMac is not liable for any such third-party terms and conditions and their use of your personal data.</p>
<p><strong>10. Social Network and Platform Integration:</strong>
The Services contain integration with social networks and other platforms in which information is shared between us and such platforms. For example, if you create or log into your account through a third-party social media site, we will have access to certain information from that site, such as your name, email address, account information, photo and friends lists, and other information in accordance with the authorization procedures determined by such social media site. If you visit our Services on a device through which you also interact with social networks or if you interact with us through a social media function such as a plug-in (for example, a Facebook "like" button) then you permit us to have on-going access to, to use and to store information from your social network profile (such as your name, email address, your friend list, photo, age, gender, location, birthday, social networking ID, current city, and the people/sites you follow) in accordance with this Privacy Policy. If you don't want a social network to collect information about you as described above, or you don't want a social network to share it with us, please review the privacy policy, privacy settings and instructions of the applicable social network before you visit and use our Services.</p>
<p>If you have an unresolved privacy or data use concern that we have not addressed satisfactorily, please feel free to contact us at bitgapp@bitgapp.com</p>
<p><strong>11. Revisions to Privacy Policy:</strong>
We may update this Privacy Policy from time to time. But when we do, well let you know one way or another. Sometimes, well let you know by revising the date at the top of the Privacy Policy thats available on our website and mobile application. Other times, we may provide you with additional notice (such as adding a statement to our websites homepages or providing you with an in-app notification). \
\
If you have an unresolved privacy or data use concern that we have not addressed satisfactorily, please feel free to contact us at bitgapp@bitgapp.com</p>
<p>Copyright © 2016-2019, Bitgapp Ltd. All rights reserved.</p>

View File

@ -1,4 +0,0 @@
:host {
padding: 50px;
display: block;
}

View File

@ -1,15 +0,0 @@
import { Component, OnInit } from '@angular/core'
@Component({
selector: 'eqm-terms',
templateUrl: './terms.component.html',
styleUrls: ['./terms.component.scss']
})
export class TermsAndConditionsComponent implements OnInit {
constructor () { }
ngOnInit () {
}
}

View File

@ -1,9 +0,0 @@
import { Injectable } from '@angular/core'
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor () { }
}

View File

@ -1,9 +0,0 @@
import { Injectable } from '@angular/core'
@Injectable({
providedIn: 'root'
})
export class ConstantsService {
readonly GH_GROUP = 'bitgapp'
readonly GH_NAME = 'eqmac'
}

View File

@ -1,36 +0,0 @@
import { Injectable } from '@angular/core'
import { ConstantsService } from './constants.service'
import { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http'
@Injectable({
providedIn: 'root'
})
export class GithubService {
readonly GITHUB_API_BASE_URL = 'https://api.github.com'
constructor (private CONST: ConstantsService, private http: HttpClient) { }
async getLatestDownloadUrl () {
const release = await this.getLatestRelease()
const { assets } = release
const binary = assets.find((a: any) => a.name.includes('.pkg'))
const downloadUrl = binary.browser_download_url
return downloadUrl
}
getReleases () {
return this.request('GET', '/releases')
}
getLatestRelease () {
return this.request('GET', '/releases/latest')
}
private async request (method: 'GET' | 'POST', endpoint: string, data?: any) {
if (endpoint[0] !== '/') { endpoint = `/${endpoint}` }
const GITHUB_REPO = `/repos/${this.CONST.GH_GROUP}/${this.CONST.GH_NAME}`
const url = `${this.GITHUB_API_BASE_URL}${GITHUB_REPO}${endpoint}`
const request = new HttpRequest(method, url, data, { responseType: 'json' })
const resp = await this.http.request(request).toPromise() as HttpResponse<any>
return resp.body
}
}

View File

@ -1,7 +0,0 @@
import { Component } from '@angular/core'
@Component({
selector: 'eqm-site',
template: `<router-outlet></router-outlet>`
})
export class SiteComponent {}

View File

@ -1,64 +0,0 @@
import { BrowserModule } from '@angular/platform-browser'
import { NgModule } from '@angular/core'
import { HttpClientModule } from '@angular/common/http'
import { HomeComponent } from './routes/root/home/home.component'
import { ButtonComponent } from './components/button/button.component'
import { RootComponent } from './routes/root/root.component'
import { FlexLayoutModule } from '@angular/flex-layout'
import { FlexLayoutServerModule } from '@angular/flex-layout/server'
import { OverviewComponent } from './routes/root/home/sections/overview/overview.component'
import { FeaturesComponent } from './routes/root/home/sections/features/features.component'
import { HeaderComponent } from './components/header/header.component'
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
import { HelpComponent } from './routes/root/home/sections/help/help.component'
import { FooterComponent } from './components/footer/footer.component'
import { Routes, RouterModule } from '@angular/router'
import { TermsAndConditionsComponent } from './routes/root/terms/terms.component'
import { FAQComponent } from './routes/root/faq/faq.component'
import { MatExpansionModule } from '@angular/material/expansion'
import { GithubStatsComponent } from './components/github-stats/github-stats.component'
import { SiteComponent } from './site.component'
const routes: Routes = [{
path: '',
component: RootComponent,
children: [{
path: '',
component: HomeComponent
}, {
path: 'terms',
component: TermsAndConditionsComponent
}, {
path: 'faq',
component: FAQComponent
}]
}]
@NgModule({
declarations: [
SiteComponent,
HomeComponent,
ButtonComponent,
RootComponent,
OverviewComponent,
FeaturesComponent,
HeaderComponent,
HelpComponent,
FooterComponent,
TermsAndConditionsComponent,
FAQComponent,
GithubStatsComponent
],
imports: [
BrowserModule.withServerTransition({ appId: 'serverApp' }),
FlexLayoutModule,
RouterModule.forRoot(routes),
BrowserAnimationsModule,
HttpClientModule,
MatExpansionModule
],
providers: [],
bootstrap: [SiteComponent]
})
export class SiteModule { }

View File

@ -1,16 +0,0 @@
import { NgModule } from '@angular/core'
import { ServerModule } from '@angular/platform-server'
import { SiteModule } from './site.module'
import { SiteComponent } from './site.component'
import { FlexLayoutServerModule } from '@angular/flex-layout/server'
@NgModule({
imports: [
SiteModule,
ServerModule,
FlexLayoutServerModule
],
bootstrap: [SiteComponent],
})
export class SiteServerModule {}

View File

@ -1,89 +0,0 @@
$accent: #4f8d71;
::ng-deep .accent {
color: $accent !important;
}
::ng-deep .accent-bg {
background-color: $accent !important;
}
$accent-light: #4DAD82;
::ng-deep .accent-light {
color: $accent-light !important;
}
::ng-deep .accent-light-bg {
background-color: $accent-light !important;
}
$warning: #eb3f42;
::ng-deep .warning {
color: $warning !important;
}
::ng-deep .warning-bg {
background-color: $warning !important;
}
$gradient-start: rgb(90, 91, 95);
::ng-deep .gradient-start {
color: $gradient-start !important;
}
::ng-deep .gradient-start-bg {
background-color: $gradient-start !important;
}
$gradient-end: rgb(44, 44, 46);
::ng-deep .gradient-end {
color: $gradient-end !important;
}
::ng-deep .gradient-end-bg {
background-color: $gradient-end !important;
}
$icon-gradient-start: #05FF71;
::ng-deep .icon-gradient-start {
color: $icon-gradient-start !important;
}
::ng-deep .icon-gradient-start-bg {
background-color: $icon-gradient-start !important;
}
$icon-gradient-middle: #03F193;
::ng-deep .icon-gradient-middle {
color: $icon-gradient-middle !important;
}
::ng-deep .icon-gradient-middle-bg {
background-color: $icon-gradient-middle !important;
}
$icon-gradient-end: #04E2B5;
::ng-deep .icon-gradient-end {
color: $icon-gradient-end !important;
}
::ng-deep .icon-gradient-end-bg {
background-color: $icon-gradient-end !important;
}
$light: #c9cdd0;
::ng-deep .light {
color: $light !important;
}
::ng-deep .light-bg {
background-color: $light !important;
}
$dark: rgb(22, 25, 28);
::ng-deep .dark {
color: $dark !important;
}
::ng-deep .dark-bg {
background-color: $dark !important;
}

View File

@ -1,4 +0,0 @@
@font-face {
font-family: 'eqMacFont';
src: url('/assets/fonts/SF-Pro-Text-Light.otf');
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 687 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -1,4 +0,0 @@
<svg width="141" height="123" viewBox="0 0 141 123" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 70.0484V16.7335C0 14.9479 2.59045 14.7206 2.90141 16.4789L9.1269 51.6817C9.51289 53.8643 12.635 53.8918 13.0593 51.7163L15.6242 38.5678C16.041 36.4308 19.0891 36.4042 19.5432 38.5336L24.5968 62.2335C25.0442 64.3319 28.0329 64.3488 28.504 62.2556L31.6554 48.2542C32.1415 46.0947 35.256 46.2076 35.5844 48.3966L37.0287 58.0218C37.3526 60.1801 40.4067 60.3332 40.9448 58.2182L42.9808 50.2162C43.4971 48.1871 46.3892 48.2149 46.8664 50.2536L51.5 70.0484H121L124.129 41.8964C124.391 39.5407 127.807 39.5173 128.101 41.8692L129.295 51.4169C129.581 53.7057 132.875 53.7721 133.253 51.4967L137 28.9515C137.389 26.5195 141 26.6475 141 29.1106V70.0484H121H51.5H0Z" fill="#04E2B5"/>
<path d="M55.3448 87.5186L51.5 70.0485H92.5H101H121L119.137 86.3043C118.873 88.6107 115.552 88.6908 115.177 86.3997L114.144 80.0934C113.878 78.469 111.874 77.8433 110.731 79.0279L108.232 81.6188C107.203 82.6851 105.413 82.3019 104.911 80.9079L101 70.0485H92.5L87.0705 90.2942C86.571 92.1568 83.9847 92.3034 83.2779 90.5092L81.1252 85.0438C80.3834 83.1606 77.634 83.4446 77.293 85.4398L72.8849 111.226C72.5088 113.426 69.3571 113.45 68.9475 111.256L64.0124 84.8156C63.6276 82.7542 60.7335 82.5991 60.1307 84.6077L59.2136 87.6636C58.6208 89.6392 55.7881 89.533 55.3448 87.5186Z" fill="#C4C4C4"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,3 +0,0 @@
export const environment = {
production: true
};

View File

@ -1,16 +0,0 @@
// This file can be replaced during build by using the `fileReplacements` array.
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false
};
/*
* For easier debugging in development mode, you can import the following file
* to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
*
* This import should be commented out in production mode because it will have a negative impact
* on performance if an error is thrown.
*/
// import 'zone.js/dist/zone-error'; // Included with Angular CLI.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -1,32 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>eqMac - Free Audio Equalizer for macOS</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- SEO Stuff -->
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NWJZ8G2');</script>
<!-- End Google Tag Manager -->
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NWJZ8G2"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<eqm-site></eqm-site>
</body>
</html>

View File

@ -1,11 +0,0 @@
import { enableProdMode } from '@angular/core'
import { environment } from './environments/environment'
if (environment.production) {
enableProdMode()
}
export { SiteServerModule as AppServerModule } from './app/site.server.module'
export { ngExpressEngine } from '@nguniversal/express-engine'

View File

@ -1,14 +0,0 @@
import { enableProdMode } from '@angular/core'
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
import { SiteModule } from './app/site.module'
import { environment } from './environments/environment'
if (environment.production) {
enableProdMode()
}
document.addEventListener('DOMContentLoaded', () => {
platformBrowserDynamic().bootstrapModule(SiteModule)
.catch(err => console.error(err))
})

View File

@ -1,63 +0,0 @@
/**
* This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file.
*
* This file is divided into 2 sections:
* 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
* 2. Application imports. Files imported after ZoneJS that should be loaded before your main
* file.
*
* The current setup is for so-called "evergreen" browsers; the last versions of browsers that
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
*
* Learn more in https://angular.io/guide/browser-support
*/
/***************************************************************************************************
* BROWSER POLYFILLS
*/
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
// import 'classlist.js'; // Run `npm install --save classlist.js`.
/**
* Web Animations `@angular/platform-browser/animations`
* Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
* Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
*/
// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
* because those flags need to be set before `zone.js` being loaded, and webpack
* will put import in the top of bundle, so user need to create a separate file
* in this directory (for example: zone-flags.ts), and put the following flags
* into that file, and then add the following code before importing zone.js.
* import './zone-flags.ts';
*
* The flags allowed in zone-flags.ts are listed here.
*
* The following flags will work for all browsers.
*
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
* (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*
* (window as any).__Zone_enable_cross_context_check = true;
*
*/
/***************************************************************************************************
* Zone JS is required by default for Angular itself.
*/
import 'zone.js/dist/zone' // Included with Angular CLI.
/***************************************************************************************************
* APPLICATION IMPORTS
*/

View File

@ -1,60 +0,0 @@
import 'zone.js/dist/zone-node';
import { ngExpressEngine } from '@nguniversal/express-engine';
import * as express from 'express';
import { join } from 'path';
import { AppServerModule } from './main.server';
import { APP_BASE_HREF } from '@angular/common';
import { existsSync } from 'fs';
// The Express app is exported so that it can be used by serverless Functions.
export function app(): express.Express {
const server = express();
const distFolder = join(process.cwd(), 'dist/browser');
const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
server.engine('html', ngExpressEngine({
bootstrap: AppServerModule,
}));
server.set('view engine', 'html');
server.set('views', distFolder);
// Example Express Rest API endpoints
// server.get('/api/**', (req, res) => { });
// Serve static files from /browser
server.get('*.*', express.static(distFolder, {
maxAge: '1y'
}));
// All regular routes use the Universal engine
server.get('*', (req, res) => {
res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
});
return server;
}
function run(): void {
const port = process.env.PORT || 4000;
// Start up the Node server
const server = app();
server.listen(port, () => {
console.log(`Node Express server listening on http://localhost:${port}`);
});
}
// Webpack will replace 'require' with '__webpack_require__'
// '__non_webpack_require__' is a proxy to Node 'require'
// The below code is to ensure that the server is run only when not requiring the bundle.
declare const __non_webpack_require__: NodeRequire;
const mainModule = __non_webpack_require__.main;
const moduleFilename = mainModule && mainModule.filename || '';
if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
run();
}
export * from './main.server';

View File

@ -1,47 +0,0 @@
/* You can add global styles to this file, and also import other style files */
@import '~normalize.css/normalize.css';
@import "~@angular/material/prebuilt-themes/pink-bluegrey.css";
@import "./app/styles/font.scss";
@import "./app/styles/colors.scss";
$font-size: 20px;
html, body {
background-color: $dark;
font-family: 'eqMacFont';
font-size: $font-size;
color: $light;
}
// * {
// user-select: none !important;
// -moz-user-select: none !important;
// -khtml-user-select: none !important;
// -webkit-user-select: none !important;
// -o-user-select: none !important;
// }
a {
text-decoration: none;
color: $light;
&:hover {
cursor: pointer !important;
}
}
.crossed-out {
text-decoration: line-through;
}
.text-small {
font-size: .6em;
}
.underline {
text-decoration: underline;
}
.iframe {
border: none;
}

View File

@ -1,11 +0,0 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": []
},
"exclude": [
"test.ts",
"**/*.spec.ts"
]
}

View File

@ -1,14 +0,0 @@
{
"extends": "./tsconfig.app.json",
"compilerOptions": {
"outDir": "../out-tsc/app-server",
"module": "commonjs"
},
"files": [
"main.server.ts",
"server.ts"
],
"angularCompilerOptions": {
"entryModule": "./app/app.server.module#AppServerModule"
}
}

View File

@ -1,17 +0,0 @@
{
"extends": "../tslint.json",
"rules": {
"directive-selector": [
true,
"attribute",
"eqm",
"camelCase"
],
"component-selector": [
true,
"element",
"eqm",
"kebab-case"
]
}
}

View File

@ -1,29 +0,0 @@
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"downlevelIteration": true,
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2020",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2015",
"resolveJsonModule": true,
"skipLibCheck": true,
"strict": false,
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
},
"exclude": [
"ci.ts"
]
}

View File

@ -1,76 +0,0 @@
{
"extends": "tslint-config-standard",
"rulesDirectory": [
"codelyzer"
],
"rules": {
"semicolon": [true, "never"],
"array-type": false,
"arrow-parens": false,
"deprecation": {
"severity": "warn"
},
"import-blacklist": [
true,
"rxjs/Rx"
],
"interface-name": false,
"max-classes-per-file": false,
"max-line-length": [
true,
140
],
"member-access": false,
"member-ordering": [
true,
{
"order": [
"static-field",
"instance-field",
"static-method",
"instance-method"
]
}
],
"no-consecutive-blank-lines": false,
"no-console": [
true,
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-empty": false,
"no-inferrable-types": [
true,
"ignore-params"
],
"no-non-null-assertion": true,
"no-redundant-jsdoc": true,
"no-switch-case-fall-through": true,
"no-use-before-declare": true,
"no-var-requires": false,
"object-literal-key-quotes": [
true,
"as-needed"
],
"object-literal-sort-keys": false,
"ordered-imports": false,
"quotemark": [
true,
"single"
],
"trailing-comma": false,
"no-output-on-prefix": true,
"no-inputs-metadata-property": true,
"no-outputs-metadata-property": true,
"no-host-metadata-property": true,
"no-input-rename": true,
"no-output-rename": true,
"use-lifecycle-interface": true,
"use-pipe-transform-interface": true,
"component-class-suffix": true,
"directive-class-suffix": true
}
}