Merge branch 'develop' into feature/#32-option-menu
# Conflicts: # manifest.json
3
!build.cmd
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
@echo off
|
||||||
|
call npm run dist:prod
|
||||||
|
pause
|
27
.babelrc
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"presets": [
|
||||||
|
[
|
||||||
|
"@babel/env",
|
||||||
|
{
|
||||||
|
"targets": {
|
||||||
|
"esmodules": true
|
||||||
|
},
|
||||||
|
"modules": "auto"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"plugins": [
|
||||||
|
[
|
||||||
|
"@babel/plugin-proposal-class-properties",
|
||||||
|
{
|
||||||
|
"loose": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"@babel/plugin-proposal-private-methods",
|
||||||
|
{
|
||||||
|
"loose": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
14
.github/dependabot.yml
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: npm
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
time: "04:00"
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
target-branch: develop
|
||||||
|
reviewers:
|
||||||
|
- Serraniel
|
||||||
|
assignees:
|
||||||
|
- Serraniel
|
||||||
|
versioning-strategy: increase
|
14
.github/workflows/auto-merge.yml
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
name: auto-merge
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
auto-merge:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.3.3
|
||||||
|
- uses: ahmadnassri/action-dependabot-auto-merge@v2.1.2
|
||||||
|
with:
|
||||||
|
target: minor
|
||||||
|
github-token: ${{ secrets.PR_AUTO_MERGE }}
|
66
.github/workflows/codeql-analysis.yml
vendored
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
name: "CodeQL"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [develop]
|
||||||
|
pull_request:
|
||||||
|
# The branches below must be a subset of the branches above
|
||||||
|
branches: [develop]
|
||||||
|
schedule:
|
||||||
|
- cron: '0 2 * * 6'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
# Override automatic language detection by changing the below list
|
||||||
|
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||||
|
language: ['javascript']
|
||||||
|
# Learn more...
|
||||||
|
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
# We must fetch at least the immediate parents so that if this is
|
||||||
|
# a pull request then we can checkout the head.
|
||||||
|
fetch-depth: 2
|
||||||
|
|
||||||
|
# If this run was triggered by a pull request event, then checkout
|
||||||
|
# the head of the pull request instead of the merge commit.
|
||||||
|
- run: git checkout HEAD^2
|
||||||
|
if: ${{ github.event_name == 'pull_request' }}
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v1
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
|
# By default, queries listed here will override any specified in a config file.
|
||||||
|
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||||
|
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||||
|
|
||||||
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
|
- name: Autobuild
|
||||||
|
uses: github/codeql-action/autobuild@v1
|
||||||
|
|
||||||
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
|
# 📚 https://git.io/JvXDl
|
||||||
|
|
||||||
|
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||||
|
# and modify them (or add more) to build your code if your project
|
||||||
|
# uses a compiled language
|
||||||
|
|
||||||
|
#- run: |
|
||||||
|
# make bootstrap
|
||||||
|
# make release
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v1
|
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
node_modules
|
||||||
|
/.tmp
|
||||||
|
/dist
|
12
.travis.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
language: node_js
|
||||||
|
node_js:
|
||||||
|
- "14"
|
||||||
|
dist: trusty
|
||||||
|
cache:
|
||||||
|
npm: true
|
||||||
|
directories:
|
||||||
|
- node_modules
|
||||||
|
install:
|
||||||
|
- npm install -d
|
||||||
|
script:
|
||||||
|
- npm run dist:prod
|
53
README.md
|
@ -1,2 +1,51 @@
|
||||||
# EnhancedAniwatch
|
<img align="right" width="100" height="100" src="resources/logo/AnimeWatch.ico/main/black/AWPLUS%20Final%20Black%20128.png">
|
||||||
Enhancment extension for https://aniwatch.me/
|
|
||||||
|
[![Travis (.org)](https://img.shields.io/travis/serraniel/aniwatchplus?style=flat-square)](https://travis-ci.org/github/Serraniel/AniwatchPlus)
|
||||||
|
[![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/serraniel/aniwatchplus?style=flat-square)](https://snyk.io/test/github/Serraniel/AniwatchPlus?targetFile=package.json)
|
||||||
|
[![David](https://img.shields.io/david/serraniel/AniwatchPlus?style=flat-square)](https://david-dm.org/serraniel/aniwatchplus)
|
||||||
|
[![Scrutinizer code quality (GitHub/Bitbucket)](https://img.shields.io/scrutinizer/quality/g/serraniel/aniwatchplus?style=flat-square)](https://scrutinizer-ci.com/g/Serraniel/AniwatchPlus/)
|
||||||
|
[![GitHub issues](https://img.shields.io/github/issues/serraniel/aniwatchplus?style=flat-square)](https://github.com/Serraniel/AniwatchPlus/issues)
|
||||||
|
[![GitHub](https://img.shields.io/github/license/serraniel/aniwatchplus?style=flat-square)](https://github.com/Serraniel/AniwatchPlus/blob/develop/LICENSE)
|
||||||
|
|
||||||
|
# Aniwatch Plus
|
||||||
|
**Aniwatch Plus** is an unofficial browser extension which will improve your experience on https://aniwatch.me by adding features like a quick search and improving the websites appearance.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
* Adds quick search
|
||||||
|
* Cleaner list presentation
|
||||||
|
* Improved presentation of available audio and subtitles
|
||||||
|
* Better display of anime requests
|
||||||
|
* Display notification count in tab title
|
||||||
|
* Autoplay after screenshot
|
||||||
|
|
||||||
|
## Download
|
||||||
|
[![Chrome Web Store](https://img.shields.io/chrome-web-store/v/hgniihpjiioldkafogebpkbaiflmpimb?label=Google%20Chrome&logo=Google%20Chrome&style=flat-square)](https://chrome.google.com/webstore/detail/aniwatch-plus/hgniihpjiioldkafogebpkbaiflmpimb?hl=de)
|
||||||
|
[![Mozilla Add-on](https://img.shields.io/amo/v/aniwatch-plus?label=Mozilla%20Firefox&logo=Firefox&style=flat-square)](https://addons.mozilla.org/de/firefox/addon/aniwatch-plus/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search)
|
||||||
|
[![GitHub release tag for opera (latest by date including pre-releases)](https://img.shields.io/github/v/release/serraniel/aniwatchplus?include_prereleases&label=Opera&logo=Opera&logoColor=red&style=flat-square)](https://addons.opera.com/de/extensions/details/aniwatch-plus/)
|
||||||
|
[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/serraniel/aniwatchplus?include_prereleases&label=Download%20manually&logo=Github&style=flat-square)](https://github.com/Serraniel/AniwatchPlus/releases)
|
||||||
|
|
||||||
|
## Development
|
||||||
|
### Tools
|
||||||
|
This project requires you to install the latestst versions of [Node.js](https://nodejs.org/en/download/), [NPM](https://nodejs.org/en/download/) and [gulp](https://www.npmjs.com/package/gulp).
|
||||||
|
Minimum required versions:
|
||||||
|
| Tool | Version |
|
||||||
|
|-|-|
|
||||||
|
| node.js | ^14.x.x |
|
||||||
|
| npm | ^6.x.x |
|
||||||
|
| gulp | ^4.x.x |
|
||||||
|
|
||||||
|
|
||||||
|
### Build
|
||||||
|
```sh
|
||||||
|
# mandatory
|
||||||
|
npm install -d
|
||||||
|
|
||||||
|
# build release version into './dist'
|
||||||
|
npm run dist:prod
|
||||||
|
|
||||||
|
# build dev version into './div' and start the watcher
|
||||||
|
npm run watch
|
||||||
|
|
||||||
|
# clean build and dist directories
|
||||||
|
npm run clean
|
||||||
|
```
|
||||||
|
|
282
gulpfile.js
Normal file
|
@ -0,0 +1,282 @@
|
||||||
|
const gulp = require('gulp');
|
||||||
|
const cssnano = require('cssnano')
|
||||||
|
const gulpLoadPlugins = require('gulp-load-plugins')
|
||||||
|
const terser = require('terser');
|
||||||
|
const del = require('del');
|
||||||
|
const browserify = require('browserify');
|
||||||
|
const babelify = require('babelify');
|
||||||
|
const source = require('vinyl-source-stream');
|
||||||
|
const buffer = require('vinyl-buffer');
|
||||||
|
const merge = require('merge-stream');
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const $ = gulpLoadPlugins()
|
||||||
|
|
||||||
|
$.sass.compiler = require('sass');
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Base consts
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
// Project sources
|
||||||
|
const src = {
|
||||||
|
root: 'src',
|
||||||
|
manifests: 'src/manifests',
|
||||||
|
styles: 'src/stylesheets',
|
||||||
|
scripts: 'src/javascript',
|
||||||
|
images: 'src/images',
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build path
|
||||||
|
const tmp = {
|
||||||
|
root: '.tmp',
|
||||||
|
manifests: '.tmp/manifests',
|
||||||
|
styles: '.tmp/stylesheets',
|
||||||
|
scripts: '.tmp/javascript',
|
||||||
|
images: '.tmp/images',
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dist path
|
||||||
|
const dist = {
|
||||||
|
root: 'dist',
|
||||||
|
chrome: {
|
||||||
|
root: 'dist/chrome',
|
||||||
|
styles: 'dist/chrome/stylesheets',
|
||||||
|
scripts: 'dist/chrome/javascript',
|
||||||
|
images: 'dist/chrome/images',
|
||||||
|
},
|
||||||
|
firefox: {
|
||||||
|
root: 'dist/firefox',
|
||||||
|
styles: 'dist/firefox/stylesheets',
|
||||||
|
scripts: 'dist/firefox/javascript',
|
||||||
|
images: 'dist/firefox/images',
|
||||||
|
},
|
||||||
|
opera: {
|
||||||
|
root: 'dist/opera',
|
||||||
|
styles: 'dist/opera/stylesheets',
|
||||||
|
scripts: 'dist/opera/javascript',
|
||||||
|
images: 'dist/opera/images',
|
||||||
|
},
|
||||||
|
zip: 'dist/zips',
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build mode
|
||||||
|
const isProd = process.env.NODE_ENV === 'production';
|
||||||
|
const isDev = !isProd;
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Build tasks
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
gulp.task('styles', () => {
|
||||||
|
return gulp.src(`${src.styles}/*.scss`)
|
||||||
|
.pipe($.plumber())
|
||||||
|
// sourcemap initialization
|
||||||
|
.pipe($.if(isDev, $.sourcemaps.init()))
|
||||||
|
// sass compilation
|
||||||
|
.pipe($.sass.sync({
|
||||||
|
outputStyle: 'expanded',
|
||||||
|
precision: 7,
|
||||||
|
includePaths: ['.'],
|
||||||
|
}).on('error', $.sass.logError))
|
||||||
|
// autoprefix
|
||||||
|
.pipe($.autoprefixer())
|
||||||
|
// out stream size
|
||||||
|
.pipe($.size({
|
||||||
|
showFiles: true
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest(tmp.styles))
|
||||||
|
.pipe($.rename({ suffix: '.min' }))
|
||||||
|
// minimize and optimize
|
||||||
|
.pipe($.if('*.css', $.postcss([
|
||||||
|
cssnano({
|
||||||
|
safe: true,
|
||||||
|
autoprefixer: false,
|
||||||
|
zindex: false,
|
||||||
|
reduceIdents: {
|
||||||
|
keyframes: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
])))
|
||||||
|
// out stream size
|
||||||
|
.pipe($.size({
|
||||||
|
showFiles: true
|
||||||
|
}))
|
||||||
|
// write sourcemaps
|
||||||
|
.pipe($.if(isDev, $.sourcemaps.write()))
|
||||||
|
.pipe(gulp.dest(tmp.styles))
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('scripts', () => {
|
||||||
|
let b = browserify({
|
||||||
|
entries: `${src.scripts}/index.js`,
|
||||||
|
debug: isDev
|
||||||
|
});
|
||||||
|
|
||||||
|
return b.transform('babelify').bundle()
|
||||||
|
.pipe($.plumber())
|
||||||
|
.pipe(source('app.js'))
|
||||||
|
.pipe(buffer())
|
||||||
|
.pipe($.if(isDev, $.sourcemaps.init({ loadMaps: true })))
|
||||||
|
.pipe($.terser({ compress: { drop_console: isProd, drop_debugger: isProd } }))
|
||||||
|
.pipe($.rename({ suffix: '.min' }))
|
||||||
|
.pipe($.size({
|
||||||
|
showFiles: true,
|
||||||
|
}))
|
||||||
|
.pipe($.if(isDev, $.sourcemaps.write()))
|
||||||
|
.pipe(gulp.dest(`${tmp.scripts}`))
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('images', () => {
|
||||||
|
return gulp.src(`${src.images}/**/*`)
|
||||||
|
.pipe($.plumber())
|
||||||
|
.pipe($.imagemin([
|
||||||
|
$.imagemin.gifsicle({ interlaced: true }),
|
||||||
|
$.imagemin.mozjpeg({ progressive: true }),
|
||||||
|
$.imagemin.optipng(),
|
||||||
|
$.imagemin.svgo({ plugins: [{ cleanupIDs: false }] })
|
||||||
|
]))
|
||||||
|
.pipe($.size({
|
||||||
|
showFiles: true,
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest(tmp.images))
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('manifests', () => {
|
||||||
|
const templateFile = `${src.manifests}/manifest.template.json`;
|
||||||
|
|
||||||
|
let template = JSON.parse(fs.readFileSync(templateFile))
|
||||||
|
|
||||||
|
return gulp.src(`${src.manifests}/**/!(*.template).json`)
|
||||||
|
.pipe($.plumber())
|
||||||
|
.pipe($.replace('$name', template.name))
|
||||||
|
.pipe($.replace('$shortName', template.short_name))
|
||||||
|
.pipe($.replace('$version', template.version))
|
||||||
|
.pipe($.replace('$semanticVersion', template.version_name))
|
||||||
|
.pipe($.replace('$description', template.description))
|
||||||
|
.pipe($.replace('$author', template.author))
|
||||||
|
.pipe($.replace('$developer', JSON.stringify(template.developer)))
|
||||||
|
.pipe($.replace('$homepageURL', template.homepage_url))
|
||||||
|
.pipe($.size({
|
||||||
|
showFiles: true,
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest(tmp.manifests))
|
||||||
|
})
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Watchers
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
gulp.task('watch', (done) => {
|
||||||
|
gulp.watch(`${src.styles}/**/*.scss`, gulp.series('clean:build', 'styles', 'dist:copy', 'dist:zip'))
|
||||||
|
|
||||||
|
gulp.watch(`${src.scripts}/**/*.js`, gulp.series('clean:build', 'scripts', 'dist:copy', 'dist:zip'))
|
||||||
|
|
||||||
|
gulp.watch(`${src.images}/**/*`, gulp.series('clean:build', 'images', 'dist:copy', 'dist:zip'))
|
||||||
|
|
||||||
|
gulp.watch(`${src.manifests}/**/*.*`, gulp.series('clean:build', 'manifests', 'dist:copy', 'dist:zip'))
|
||||||
|
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
Clean
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
gulp.task('clean:build', del.bind(null, [tmp.root]))
|
||||||
|
|
||||||
|
gulp.task('clean:dist', del.bind(null, [dist.root], { force: true })) // Das Force brauchen wir, da das Assets Verzeichnis außerhalb des Working Directories ist.
|
||||||
|
|
||||||
|
gulp.task('clean', gulp.series('clean:build', 'clean:dist'))
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
BUILD CLEAN ALL
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
gulp.task('build', gulp.series('manifests', 'images', 'scripts', 'styles'));
|
||||||
|
|
||||||
|
gulp.task('build:clean', gulp.series('clean:build', 'manifests', 'images', 'scripts', 'styles'));
|
||||||
|
|
||||||
|
/* ============================================================================
|
||||||
|
DIST CLEAN ALL
|
||||||
|
============================================================================ */
|
||||||
|
|
||||||
|
gulp.task('dist:chrome', (done) => {
|
||||||
|
return merge(
|
||||||
|
// copy images
|
||||||
|
gulp.src(`${tmp.images}/**/*`)
|
||||||
|
.pipe(gulp.dest(dist.chrome.images)),
|
||||||
|
|
||||||
|
// copy scripts
|
||||||
|
gulp.src(`${tmp.scripts}/**/*.{min.js,min.js.gz}`)
|
||||||
|
.pipe(gulp.dest(dist.chrome.scripts)),
|
||||||
|
|
||||||
|
// copy styles
|
||||||
|
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
||||||
|
.pipe(gulp.dest(dist.chrome.styles)),
|
||||||
|
|
||||||
|
gulp.src(`${tmp.manifests}/chrome*`)
|
||||||
|
.pipe($.rename('manifest.json'))
|
||||||
|
.pipe(gulp.dest(dist.chrome.root))
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('dist:firefox', (done) => {
|
||||||
|
return merge(
|
||||||
|
// copy images
|
||||||
|
gulp.src(`${tmp.images}/**/*`)
|
||||||
|
.pipe(gulp.dest(dist.firefox.images)),
|
||||||
|
|
||||||
|
// copy scripts
|
||||||
|
gulp.src(`${tmp.scripts}/**/*.{min.js,min.js.gz}`)
|
||||||
|
.pipe(gulp.dest(dist.firefox.scripts)),
|
||||||
|
|
||||||
|
// copy styles
|
||||||
|
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
||||||
|
.pipe(gulp.dest(dist.firefox.styles)),
|
||||||
|
|
||||||
|
gulp.src(`${tmp.manifests}/firefox*`)
|
||||||
|
.pipe($.rename('manifest.json'))
|
||||||
|
.pipe(gulp.dest(dist.firefox.root))
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('dist:opera', (done) => {
|
||||||
|
return merge(
|
||||||
|
// copy images
|
||||||
|
gulp.src(`${tmp.images}/**/*`)
|
||||||
|
.pipe(gulp.dest(dist.opera.images)),
|
||||||
|
|
||||||
|
// copy scripts
|
||||||
|
gulp.src(`${tmp.scripts}/**/*.{min.js,min.js.gz}`)
|
||||||
|
.pipe(gulp.dest(dist.opera.scripts)),
|
||||||
|
|
||||||
|
// copy styles
|
||||||
|
gulp.src(`${tmp.styles}/*.{min.css,min.css.gz}`)
|
||||||
|
.pipe(gulp.dest(dist.opera.styles)),
|
||||||
|
|
||||||
|
gulp.src(`${tmp.manifests}/opera*`)
|
||||||
|
.pipe($.rename('manifest.json'))
|
||||||
|
.pipe(gulp.dest(dist.opera.root))
|
||||||
|
);
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('dist:copy', gulp.series('dist:chrome', 'dist:firefox', 'dist:opera'));
|
||||||
|
|
||||||
|
gulp.task('dist:zip', (done) => {
|
||||||
|
gulp.src(`${dist.chrome.root}/**/*`)
|
||||||
|
.pipe($.zip('chrome.zip'))
|
||||||
|
.pipe(gulp.dest(dist.root));
|
||||||
|
|
||||||
|
gulp.src(`${dist.firefox.root}/**/*`)
|
||||||
|
.pipe($.zip('firefox.zip'))
|
||||||
|
.pipe(gulp.dest(dist.root));
|
||||||
|
|
||||||
|
gulp.src(`${dist.opera.root}/**/*`)
|
||||||
|
.pipe($.zip('opera.zip'))
|
||||||
|
.pipe(gulp.dest(dist.root));
|
||||||
|
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task('dist', gulp.series('clean', 'build', 'dist:copy', 'dist:zip'));
|
12729
package-lock.json
generated
Normal file
73
package.json
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
{
|
||||||
|
"name": "aniwatch-plus",
|
||||||
|
"version": "0.3.0-beta",
|
||||||
|
"description": "Aniwatch Plus is a browser extension for https://aniwatch.me/",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"clean": "gulp clean",
|
||||||
|
"build": "gulp build",
|
||||||
|
"build:prod": "cross-env NODE_ENV=production gulp build",
|
||||||
|
"dist": "gulp dist",
|
||||||
|
"dist:prod": "cross-env NODE_ENV=production gulp dist",
|
||||||
|
"watch": "gulp dist && gulp watch"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/Serraniel/AniwatchPlus.git"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"name": "Serraniel",
|
||||||
|
"email": "mail@serraniel.dev",
|
||||||
|
"url": "https://serraniel.dev"
|
||||||
|
},
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"name": "Kaffem"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MPL-2.0",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/Serraniel/AniwatchPlus/issues",
|
||||||
|
"email": "mail@serraniel.dev"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/Serraniel/AniwatchPlus#readme",
|
||||||
|
"dependencies": {
|
||||||
|
"uuid": "^8.3.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/compat-data": "^7.12.1",
|
||||||
|
"@babel/core": "^7.12.3",
|
||||||
|
"@babel/helper-module-imports": "^7.12.1",
|
||||||
|
"@babel/plugin-proposal-class-properties": "^7.12.1",
|
||||||
|
"@babel/plugin-proposal-private-methods": "^7.12.1",
|
||||||
|
"@babel/preset-env": "^7.12.1",
|
||||||
|
"@babel/register": "^7.12.1",
|
||||||
|
"babelify": "^10.0.0",
|
||||||
|
"browserify": "^17.0.0",
|
||||||
|
"cross-env": "^7.0.2",
|
||||||
|
"cssnano": "^4.1.10",
|
||||||
|
"del": "^6.0.0",
|
||||||
|
"gulp": "^4.0.2",
|
||||||
|
"gulp-autoprefixer": "^7.0.1",
|
||||||
|
"gulp-babel": "^8.0.0",
|
||||||
|
"gulp-if": "^3.0.0",
|
||||||
|
"gulp-imagemin": "^7.1.0",
|
||||||
|
"gulp-load-plugins": "^2.0.5",
|
||||||
|
"gulp-plumber": "^1.2.1",
|
||||||
|
"gulp-postcss": "^9.0.0",
|
||||||
|
"gulp-rename": "^2.0.0",
|
||||||
|
"gulp-replace": "^1.0.0",
|
||||||
|
"gulp-sass": "^4.1.0",
|
||||||
|
"gulp-size": "^3.0.0",
|
||||||
|
"gulp-sourcemaps": "^2.6.5",
|
||||||
|
"gulp-terser": "^1.4.1",
|
||||||
|
"gulp-zip": "^5.0.2",
|
||||||
|
"merge-stream": "^2.0.0",
|
||||||
|
"postcss": "^8.1.4",
|
||||||
|
"sass": "^1.28.0",
|
||||||
|
"terser": "^5.3.8",
|
||||||
|
"vinyl-buffer": "^1.0.1",
|
||||||
|
"vinyl-source-stream": "^2.0.0"
|
||||||
|
}
|
||||||
|
}
|
BIN
resources/logo/AnimeWatch.ico/.DS_Store
vendored
Normal file
BIN
resources/logo/AnimeWatch.ico/main/.DS_Store
vendored
Normal file
BIN
resources/logo/AnimeWatch.ico/main/Anime Watch Vector.eps
Normal file
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 21 KiB |
BIN
resources/logo/AnimeWatch.ico/main/ideas/AW Plus 512.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
resources/logo/AnimeWatch.ico/main/ideas/AWPLUS 512 Final.png
Normal file
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
BIN
resources/logo/AnimeWatch.ico/main/ideas/AWPLUS 512 Round.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
resources/logo/AnimeWatch.ico/main/ideas/AWPLUS 512.psd
Normal file
BIN
resources/logo/AnimeWatch.ico/main/ideas/AWPLUS Final.png
Normal file
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 20 KiB |
BIN
resources/logo/AnimeWatch.ico/main/ideas/Anime Watch Vector.eps
Normal file
BIN
resources/logo/AnimeWatch.ico/main/ideas/icon_512.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
resources/logo/AnimeWatch.ico/main/white/.DS_Store
vendored
Normal file
BIN
resources/logo/AnimeWatch.ico/main/white/AWPLUS Final 128.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
resources/logo/AnimeWatch.ico/main/white/AWPLUS Final 256.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
resources/logo/AnimeWatch.ico/main/white/AWPLUS Final 384.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
resources/logo/AnimeWatch.ico/main/white/AWPLUS Final.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/.DS_Store
vendored
Normal file
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 9.7 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/android-icon-36x36.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/android-icon-48x48.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/android-icon-72x72.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/android-icon-96x96.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-114x114.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-120x120.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-144x144.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-152x152.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-180x180.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-57x57.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-60x60.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-72x72.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon-76x76.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 10 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/apple-icon.png
Normal file
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
|
BIN
resources/logo/AnimeWatch.ico/sizes/black/favicon-16x16.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/favicon-32x32.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/favicon-96x96.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/favicon.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
41
resources/logo/AnimeWatch.ico/sizes/black/manifest.json
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"name": "App",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-36x36.png",
|
||||||
|
"sizes": "36x36",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "0.75"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-48x48.png",
|
||||||
|
"sizes": "48x48",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-72x72.png",
|
||||||
|
"sizes": "72x72",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "1.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-96x96.png",
|
||||||
|
"sizes": "96x96",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-144x144.png",
|
||||||
|
"sizes": "144x144",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "4.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
resources/logo/AnimeWatch.ico/sizes/black/ms-icon-144x144.png
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/ms-icon-150x150.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/ms-icon-310x310.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/black/ms-icon-70x70.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 9.8 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/android-icon-36x36.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/android-icon-48x48.png
Normal file
After Width: | Height: | Size: 3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/android-icon-72x72.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/android-icon-96x96.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-114x114.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-120x120.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-144x144.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-152x152.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-180x180.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-57x57.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-60x60.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-72x72.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon-76x76.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 10 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/apple-icon.png
Normal file
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
|
BIN
resources/logo/AnimeWatch.ico/sizes/white/favicon-16x16.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/favicon-32x32.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/favicon-96x96.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/favicon.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
41
resources/logo/AnimeWatch.ico/sizes/white/manifest.json
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"name": "App",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-36x36.png",
|
||||||
|
"sizes": "36x36",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "0.75"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-48x48.png",
|
||||||
|
"sizes": "48x48",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-72x72.png",
|
||||||
|
"sizes": "72x72",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "1.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-96x96.png",
|
||||||
|
"sizes": "96x96",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-144x144.png",
|
||||||
|
"sizes": "144x144",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "\/android-icon-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image\/png",
|
||||||
|
"density": "4.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
BIN
resources/logo/AnimeWatch.ico/sizes/white/ms-icon-144x144.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/ms-icon-150x150.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/ms-icon-310x310.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
resources/logo/AnimeWatch.ico/sizes/white/ms-icon-70x70.png
Normal file
After Width: | Height: | Size: 4.2 KiB |