Compare commits

..

427 Commits

Author SHA1 Message Date
Bas950
c44bc69d9f chore: release v1.0.11 2025-12-11 11:08:37 +01:00
Bas van Zanten
7d93ee3a7d feat: add missing files (#1101)
* feat: add missing files

* chore: update readme

* chore: update branch

* chore: remove olds from matrix

* chore: remove dev containers
2025-12-11 11:07:38 +01:00
Florian Metz
79e1984940 feat: add JSON schema for metadata version 1.16 (#1100) 2025-12-11 10:40:15 +01:00
Florian Metz
e6526a3666 feat: monorepo (#1098)
* chore: release v1.1.0

* chore: pd stuff

* chore: release v1.1.1

* feat: add ratelimit environment variables

* chore: release v1.1.2

* chore: improve memory usage

* chore: release v1.1.3

* feat: use sentinels

* chore: release v1.1.4

* chore: update name

* chore: release v1.1.5

* fix(pd): use correct env variable

* chore: release v1.1.6

* wip: docs

* wip: docs

* wip: api

* wip: website

* wip: website

* wip: website

* wip: website

* chore: cleanup

* chore: add lib folder to .gitignore

* chore: remove blank

* wip: csp

* wip: csp

* fix(ci): use correct context

* wip: cd

* wip: cd

* wip: cd

* wip: cd

* wip: cd

* wip: cd

* chore: use correct port

* wip: csp

* wip: csp

* wip: csp

* wip: csp

* chore: update security headers in nuxt.config.ts

* chore: update security headers in nuxt.config.ts

* chore: remove comments

* chore: update npm dependencies

* chore: bump dependencies & add missing

* fix: broken lockfile

* chore: set client host

* chore: update depencies

* style: small layout fixes

* ci: testing

* chore: update CI workflow to trigger on 'monorepo' branch

* chore: use full build image

* chore: test (#1048)

* chore: setup qemu

* chore: remove docs prefix from scripts (#1046)

* style: fix centering (#1050)

* style: render 3 columns (#1049)

* ci: use alpine base (#1051)

* style: make footer follow max width (#1052)

* feat: Add Crowdin configuration for website localization. (#1054)

* chore: change dest in crowdin

* chore: improve crowdin pr

* chore: improve crowdin pr

* chore: lint

* chore: update language folder

* chore: update crowdin configuration to skip untranslated strings and files

* chore: add crowdin badge

* chore: release v1.0.1

* chore: release v1.1.7

* chore: fix build

* chore: release v1.1.8

* chore: release v1.0.2

* chore: fix docker

* chore: release v1.1.9

* chore: release v1.0.3

* feat: add more api endpoints (#1059)

* chore: worked on the api and lint

* chore: small fixes

* chore: uhm I think this sort is broken

* chore: worked on the api and lint

* chore: small fixes

* chore: uhm I think this sort is broken

* feat: heartbeat

* chore: add prettier ignore

* feat: websocket

* chore: update tsconfig

* chore: lint

* chore: dont require unused fields

* chore: use djs rest

* fix: websocket

* chore: v5

* chore: fix build

---------

Co-authored-by: Florian Metz <me@timeraa.dev>

* chore: wip api

* chore: wip api

* chore: release v0.0.1

* chore: deploy on tag

* chore: release v0.0.1

* chore(api): remove old sentry tracing

* chore: release v0.0.2

* chore: release v0.0.2

* feat(api-master): add logs

* chore: release v0.0.3

* chore: bump dep

* feat: add feature flags

* chore: release v0.0.3

* feat: metrics?

* chore: release v0.0.4

* chore: update npm dependencies

* feat: add session-keep-alive

* chore: fix build

* chore: release v0.0.5

* chore: release v0.0.4

* chore: update arktype

* chore: release v0.0.6

* chore: hash the key

* chore: release v0.0.7

* chore: release v0.0.5

* chore: revert redis stuff

* chore: release v0.0.6

* chore: release v0.0.8

* feat(api-master): add metrics

* chore: release v0.0.7

* chore: update lockfile

* chore: release v0.0.8

* chore: idk kek

* chore: iodk

* chore: release v0.0.8

* feat: use scan

* chore: release v0.0.9

* chore: skip clearOldSesssions if another in progress

* chore: release v0.0.10

* chore: optimize session cleanup with batch deletion

* chore: release v0.0.11

* chore: move some code

* chore: release v0.0.12

* chore: add timeout to headless session deletion

* chore: release v0.0.13

* chore: add p-limit dependency for session cleanup

* chore: release v0.0.14

* chore: always return the key

* chore: release v0.0.15

* chore: add p-limit dependency for session cleanup

* chore: release v0.0.16

* chore: why does it not abort

* chore: release v0.0.17

* chore: fix time

* chore: release v0.0.18

* chore: add reason

* chore: release v0.0.19

* feat: use scienceId

* chore: release v0.0.20

* chore: release v0.0.9

* chore: update log

* chore: release v0.0.20

* chore: use ky

* chore: release v0.0.21

* chore: 202 on disabled flag

* chore: release v0.0.10

* chore: test

* chore: release v0.0.22

* chore: release v0.0.11

* chore: test

* chore: test

* chore: release v0.0.12

* chore: test

* chore: release v0.0.23

* chore: update hash

* chore: release v0.0.24

* chore: release v0.0.13

* feat: update tracing (#1067)

* chore: release v0.0.14

* chore: release v0.0.25

* fix: store ip data in postgres

* chore: lint

* chore: release v0.0.26

* chore: reduce batch size

* chore: release v0.0.27

* chore: disable ip stuff for now

* chore: release v0.0.28

* chore: reduce memory

* chore: release v0.0.29

* chore: release v0.0.29

* chore: release v0.0.29

* chore: small updates

* chore: release v0.0.30

* chore: optimize active presence gauge update with concurrency limit

* chore: release v0.0.31

* chore: some improvements

* chore: forgot to save

* chore: release v0.0.32

* chore: some testing

* chore: release v0.0.33

* chore: scan count config

* chore: release v0.0.34

* feat: schema v1.11

* chore: release v1.0.4

* feat: use prom-client

* chore: release v0.0.35

* chore: scan keys instead

* chore: release v0.0.36

* feat: ip data

* chore: release v0.0.37

* feat: discord-bot (#1069)

* feat: discord-bot

* feat: final things

* chore: add to matrix

* feat: add sentry

* chore: move some things

* chore: update version

* chore: release v1.0.0

* fix(discord-bot): fixes credits

* chore: release v1.0.1

* feat(discord-bot): add beta command

* chore: release v1.0.2

* chore: un-ingore config files

* chore: lint

* fix(discord-bot): update developer roles constant (#1070)

* chore: disable commitlint

* fix(discord-bot): update developer roles constant

* Update commit-msg

* chore: release v1.0.3

* Update presence.ts (#1072)

* fix: get presence list correctly

* chore: release v1.0.4

* chore: change info message

* chore: release v1.0.5

* fix(api): metadata types

* chore: release v0.0.15

* chore: fix type

* chore: release v0.0.16

* fix: add dbName

* chore: release v0.0.17

* feat: fix presence endpoints

* chore: release v0.0.18

* fix: show displayName

* chore: release v1.0.6

* feat: extension version gauge (#1074)

* feat: extension version gauge

* chore: lint

* feat: new schema version

* chore: release v1.0.5

* chore: release v0.0.38

* chore: remove ip lookup

* chore: lint

* chore: release v0.0.39

* chore: add environment variable to disable

* chore: release v0.0.19

* chore(bot): rename presence to activity (#1077)

* chore: release v1.0.7

* feat(schema-server): add v1.13

* chore: release v1.0.6

* chore: add mobile and update descriptions

* chore: release v1.0.7

* chore: lint

* chore: release v1.0.8

* chore: add Social Media Manager role and color to constants (#1084)

* chore: add Social Media Manager role and color to constants

* chore: bump version

* feat: v1.14 of schema

* chore: release v1.0.9

* feat: schema 1.15

* chore: release v1.0.10

* feat: add file extension

* chore: release v1.2.0

* fix: return image directly

* chore: release v1.2.1

* chore: remove cache headers

* chore: release v1.2.2

* chore: set more headers

* chore: release v1.2.3

* fix: ttl

* chore: release v1.2.4

* chore: strip monorepo down to pd and schema-server only

Remove all apps except pd and schema-server to create a minimal repository.
Deleted apps: api-master, api-worker, discord-bot, docs, website
Deleted packages directory and all monorepo configuration files
Removed unnecessary config files: eslint, prettier, commitlint, vitest, etc.

* docs: update README to be more user-friendly and generic

- Rewritten to focus on what PreMiD is rather than repository structure
- Added friendly introduction to PreMiD's features and capabilities
- Highlighted the open source Presences repository at github.com/PreMiD/Presences
- Removed monorepo-specific content and development instructions
- Added community section with helpful links
- Overall more welcoming tone for users and contributors

* chore: restore TypeScript build configuration and update dependencies

- Added back tsconfig.base.json and tsconfig.app.json needed for builds
- Updated both pd and schema-server tsconfig files to exclude test files
- Installed TypeScript and @types/node dependencies for both apps
- Updated README to include feedback.premid.app link
- Verified both apps build successfully

The apps can now be built with: npx tsc -b tsconfig.app.json

* docs: update README to use Activities terminology

- Changed "Presences" to "Activities" throughout
- Updated repository link to github.com/PreMiD/Activities
- Updated examples: YouTube, Disney+, Netflix, Twitch
- Noted that Spotify has native Discord support

* docs: clarify open source status and installation process

- Added Contributing section explaining that Activities are open source but the main app is not
- Clarified this helps the small team manage maintenance burden
- Updated "install PreMiD" to "add the browser extension" for accuracy
- Provided clear ways to contribute: Activities, translations, feedback

* docs: clarify extension-only model and development speed

- Changed "application and extension" to just "extension"
- Updated reasoning: allows team to move fast and iterate quickly
- No separate application exists, only the browser extension

* docs: add Discord server link

* docs: add banner image to README

* docs: move logo inline with heading

---------

Co-authored-by: Bas950 <me@bas950.com>
Co-authored-by: veryCrunchy <verycrunchydev@gmail.com>
Co-authored-by: veryCrunchy <me@verycrunchy.dev>
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-02 18:26:18 +01:00
Florian Metz
f9a976ef1d Delete .github/dependabot.yml 2024-02-16 09:52:17 +01:00
Florian Metz
f7f04213de fix: 2.5 2023-12-24 15:46:44 +01:00
Declan Mould
76cb9026f9 Update README Presence Count (#998) 2023-09-19 14:24:42 +02:00
RobinRMC
501b632828 Fix bug_report.md (#868) 2022-10-27 03:33:51 +02:00
Rhys
39840a34a3 chore: update dependabot config 2022-05-13 23:12:18 +01:00
dependabot[bot]
de336dda25 🔼 Bump ansi-regex from 4.1.0 to 4.1.1 (#832)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-13 22:43:39 +01:00
dependabot[bot]
21cb3041b5 🔼 Bump async from 3.2.0 to 3.2.3 (#828)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-13 22:43:17 +01:00
dependabot[bot]
b340cd9b5d 🔼 Bump node-fetch from 2.6.1 to 2.6.7 (#829)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-13 22:43:06 +01:00
dependabot[bot]
37d0516679 🔼 Bump plist from 3.0.4 to 3.0.5 (#827) 2022-05-13 22:42:50 +01:00
Rhys
46618ca6eb chore: update dependabot config 2022-04-27 22:52:19 +01:00
Rhys
a7b4fb1615 Merge pull request #810 from PreMiD/dependabot/npm_and_yarn/plist-3.0.4 2022-04-18 02:08:13 +01:00
Rhys
731024523b Merge pull request #816 from PreMiD/dependabot/npm_and_yarn/minimist-1.2.6 2022-04-18 02:07:55 +01:00
Rhys
545d9315d2 Merge pull request #826 from PreMiD/revert-823-dependabot/npm_and_yarn/electron-18.0.4 2022-04-18 02:07:44 +01:00
Rhys
8e7ae26081 Revert "🔼 Bump electron from 11.3.0 to 18.0.4" 2022-04-18 02:07:37 +01:00
Rhys
cd45426657 Merge pull request #823 from PreMiD/dependabot/npm_and_yarn/electron-18.0.4 2022-04-18 02:07:26 +01:00
dependabot[bot]
fe26213210 🔼 Bump electron from 11.3.0 to 18.0.4
Bumps [electron](https://github.com/electron/electron) from 11.3.0 to 18.0.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v11.3.0...v18.0.4)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-15 10:11:19 +00:00
dependabot[bot]
e4e10669ed 🔼 Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 20:51:01 +00:00
dependabot[bot]
d35f4bced6 🔼 Bump plist from 3.0.1 to 3.0.4
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.1 to 3.0.4.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-02 00:21:46 +00:00
Timeraa
048cb8a828 🔄 Created local '.github/dependabot.yml' from remote '.github/dependabot.yml' 2022-01-08 04:30:58 +00:00
Timeraa
9f1d9892c8 🔄 Synced local '.github/FUNDING.yml' with remote '.github/FUNDING.yml' 2022-01-08 04:14:19 +00:00
Timeraa
7ce6d935dd 🔄 Synced local 'LICENSE' with remote 'LICENSE' 2022-01-08 04:14:19 +00:00
Florian Metz
0f3af215e2 Merge pull request #791 from ririxidev/patch-server
fix(socketManager): Fix checking Origin header
2021-12-19 07:53:45 -08:00
ririxidev
16bd93f566 fix(socketManager): Fix checking Origin header
* Checking if Origin isn't here allows to deny requests that are coming from websites since Extension doesn't send Origin header.
2021-12-18 21:30:39 +01:00
Florian Metz
9fb52a94b9 Merge pull request #775 from TheGamerzs/patch-1 2021-08-10 05:54:17 +02:00
Declan Mould
58a597526a Update README.md 2021-08-09 11:23:57 +01:00
dependabot-preview[bot]
fd42f07989 Merge pull request #765 from PreMiD/dependabot/npm_and_yarn/color-string-1.5.5 2021-06-22 06:17:40 +00:00
dependabot-preview[bot]
6ba5219225 [Security] Bump color-string from 1.5.4 to 1.5.5
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.4 to 1.5.5. **This update includes a security fix.**
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/compare/1.5.4...1.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-06-22 06:16:36 +00:00
dependabot-preview[bot]
16718e8bd4 Merge pull request #757 from PreMiD/dependabot/npm_and_yarn/normalize-url-4.5.1 2021-06-09 06:25:54 +00:00
dependabot-preview[bot]
46b13cba7c [Security] Bump normalize-url from 4.5.0 to 4.5.1
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1. **This update includes a security fix.**
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-06-09 06:24:50 +00:00
dependabot-preview[bot]
f010eba40e Merge pull request #755 from PreMiD/dependabot/npm_and_yarn/glob-parent-5.1.2 2021-06-08 06:20:57 +00:00
dependabot-preview[bot]
fea6d8bbc9 [Security] Bump glob-parent from 5.1.1 to 5.1.2
Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2. **This update includes a security fix.**
- [Release notes](https://github.com/gulpjs/glob-parent/releases)
- [Changelog](https://github.com/gulpjs/glob-parent/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/glob-parent/compare/v5.1.1...v5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-06-08 06:19:51 +00:00
dependabot-preview[bot]
66f9abcbcd Merge pull request #724 from PreMiD/dependabot/npm_and_yarn/hosted-git-info-2.8.9 2021-05-07 18:35:51 +00:00
dependabot-preview[bot]
4610218121 [Security] Bump hosted-git-info from 2.8.8 to 2.8.9
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. **This update includes a security fix.**
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-07 18:34:45 +00:00
dependabot-preview[bot]
12321cb0d6 Merge pull request #719 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.11 2021-05-03 10:20:18 +00:00
dependabot-preview[bot]
feb74e0fb9 Bump @types/prompts from 2.0.10 to 2.0.11
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.10 to 2.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-03 10:19:11 +00:00
Bas950
b10eb97a57 Merge pull request #718 from TheGamerzs/stable
Increase Presence Count From 100 to 800
2021-05-02 17:57:28 +02:00
TheGamerzs
bc049b9b15 Increase Presence Count 2021-05-02 16:17:43 +01:00
Florian Metz
36019acbd3 Merge pull request #695 from callumok2004/patch-2
Update bug_report.md
2021-04-28 13:14:16 +02:00
Florian Metz
c0d19f02e7 Merge pull request #703 from TheGamerzs/stable
Update discord server url
2021-04-28 13:14:01 +02:00
dependabot-preview[bot]
18f7e95665 Merge pull request #713 from PreMiD/dependabot/npm_and_yarn/chalk-4.1.1 2021-04-22 15:02:06 +00:00
dependabot-preview[bot]
06b5255ccc Bump chalk from 4.1.0 to 4.1.1
Bumps [chalk](https://github.com/chalk/chalk) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/chalk/chalk/releases)
- [Commits](https://github.com/chalk/chalk/compare/v4.1.0...v4.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-22 15:00:56 +00:00
dependabot-preview[bot]
0ab4821c74 Merge pull request #710 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.41 2021-04-22 14:44:47 +00:00
dependabot-preview[bot]
3e09ddf024 Bump @types/node from 14.14.39 to 14.14.41
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.39 to 14.14.41.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-22 14:43:41 +00:00
dependabot-preview[bot]
e142f7750d Merge pull request #707 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.39 2021-04-15 06:24:51 +00:00
dependabot-preview[bot]
ddec0a7957 Bump @types/node from 14.14.37 to 14.14.39
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.37 to 14.14.39.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-15 06:23:39 +00:00
dependabot-preview[bot]
dfc90c143f Merge pull request #704 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.11 2021-04-12 11:19:50 +00:00
dependabot-preview[bot]
1f887642bf Bump @types/fs-extra from 9.0.10 to 9.0.11
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.10 to 9.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-12 11:18:38 +00:00
TheGamerzs
1a28153fcf Merge remote-tracking branch 'upstream/main' into stable 2021-04-10 23:45:37 +01:00
TheGamerzs
349b9cf837 ♻️ Update Discord link 2021-04-10 23:44:47 +01:00
dependabot-preview[bot]
32f53c98e0 Merge pull request #701 from PreMiD/dependabot/npm_and_yarn/electron-store-7.0.3 2021-04-07 09:20:14 +00:00
dependabot-preview[bot]
80ef747e84 Bump electron-store from 7.0.2 to 7.0.3
Bumps [electron-store](https://github.com/sindresorhus/electron-store) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/sindresorhus/electron-store/releases)
- [Commits](https://github.com/sindresorhus/electron-store/compare/v7.0.2...v7.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-07 09:19:06 +00:00
dependabot-preview[bot]
cc425b5a42 Merge pull request #699 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.10 2021-04-02 19:36:00 +00:00
dependabot-preview[bot]
5db7f80e28 Bump @types/fs-extra from 9.0.9 to 9.0.10
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.9 to 9.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-02 19:34:54 +00:00
dependabot-preview[bot]
b27b04b3ea Merge pull request #698 from PreMiD/dependabot/npm_and_yarn/prompts-2.4.1 2021-04-02 06:39:12 +00:00
dependabot-preview[bot]
713fa607e0 Bump prompts from 2.4.0 to 2.4.1
Bumps [prompts](https://github.com/terkelg/prompts) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/terkelg/prompts/releases)
- [Commits](https://github.com/terkelg/prompts/compare/v2.4.0...v2.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-02 06:37:57 +00:00
Callum OKane
8b492bc468 Update bug_report.md 2021-03-30 23:45:34 +01:00
dependabot-preview[bot]
c20c7d4c0e Merge pull request #694 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.10 2021-03-30 09:37:13 +00:00
dependabot-preview[bot]
5aab0ba965 Bump @types/prompts from 2.0.9 to 2.0.10
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.9 to 2.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-30 09:36:06 +00:00
dependabot-preview[bot]
aa1ba3c6a3 Merge pull request #693 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.37 2021-03-27 00:10:33 +00:00
dependabot-preview[bot]
6d54b6e518 Bump @types/node from 14.14.36 to 14.14.37
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.36 to 14.14.37.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-27 00:09:26 +00:00
dependabot-preview[bot]
fee54828fc Merge pull request #691 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.9 2021-03-25 19:06:30 +00:00
dependabot-preview[bot]
cbe200cdf3 Bump @types/fs-extra from 9.0.8 to 9.0.9
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.8 to 9.0.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-25 19:05:25 +00:00
dependabot-preview[bot]
09d296a875 Merge pull request #690 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.36 2021-03-25 18:24:53 +00:00
dependabot-preview[bot]
53e1a92138 Bump @types/node from 14.14.35 to 14.14.36
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.35 to 14.14.36.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-25 18:23:35 +00:00
dependabot-preview[bot]
65509641b0 Merge pull request #686 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.35 2021-03-15 19:04:24 +00:00
dependabot-preview[bot]
badd6dc45d Bump @types/node from 14.14.34 to 14.14.35
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.34 to 14.14.35.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-15 19:03:19 +00:00
dependabot-preview[bot]
dd40dbe43b Merge pull request #683 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.34 2021-03-12 12:10:05 +00:00
dependabot-preview[bot]
07926d5a80 Bump @types/node from 14.14.33 to 14.14.34
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.33 to 14.14.34.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-12 12:08:56 +00:00
dependabot-preview[bot]
f155b90672 Merge pull request #680 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.33 2021-03-09 16:52:12 +00:00
dependabot-preview[bot]
3f820c6527 Bump @types/node from 14.14.32 to 14.14.33
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.32 to 14.14.33.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-09 16:51:01 +00:00
dependabot-preview[bot]
8e41051dd7 Merge pull request #677 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.32 2021-03-07 10:35:10 +00:00
dependabot-preview[bot]
17bda0dc95 Bump @types/node from 14.14.31 to 14.14.32
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.31 to 14.14.32.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-07 10:34:06 +00:00
dependabot-preview[bot]
cf281971cf Merge pull request #670 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.8 2021-03-01 16:06:51 +00:00
dependabot-preview[bot]
5f1d6e6da3 Bump @types/fs-extra from 9.0.7 to 9.0.8
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.7 to 9.0.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-01 16:05:41 +00:00
dependabot-preview[bot]
6e7cb8e3c2 Merge pull request #669 from PreMiD/dependabot/npm_and_yarn/socket.io-3.1.2 2021-02-26 00:23:57 +00:00
dependabot-preview[bot]
69c3fc5f67 Bump socket.io from 3.1.1 to 3.1.2
Bumps [socket.io](https://github.com/socketio/socket.io) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/master/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/3.1.1...3.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-26 00:22:52 +00:00
Timeraa
d5e3ba8709 Merge branch 'main' of https://github.com/PreMiD/PreMiD 2021-02-21 01:11:27 +01:00
Timeraa
531c6405f3 🐛 I am dumb 2021-02-21 01:11:24 +01:00
Florian Metz
b94f7b41ac Merge pull request #664 from ririxidev/patch-1
🐛 Fix TSC errors with Promise
2021-02-21 01:02:47 +01:00
Timeraa
a3a23065c7 🤞 I guess this works? 2021-02-21 01:01:34 +01:00
Timeraa
07acf57e0d 🐛 Update some tray stuff 2021-02-21 00:51:05 +01:00
Timeraa
16010543f5 📑 2.2.0 2021-02-21 00:44:04 +01:00
dependabot-preview[bot]
b0ec1f63de Merge pull request #666 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.31 2021-02-19 18:08:03 +00:00
dependabot-preview[bot]
386a47390e Bump @types/node from 14.14.30 to 14.14.31
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.30 to 14.14.31.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-19 18:06:56 +00:00
ririxidev
9b662a4333 🐛 Fix TSC errors with Promise 2021-02-19 15:14:26 +01:00
dependabot-preview[bot]
e119b4bf0e Merge pull request #663 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.30 2021-02-19 00:49:28 +00:00
dependabot-preview[bot]
7e58c83777 Bump @types/node from 14.14.29 to 14.14.30
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.29 to 14.14.30.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-19 00:48:20 +00:00
dependabot-preview[bot]
896c7d426f Merge pull request #662 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.29 2021-02-18 20:51:33 +00:00
dependabot-preview[bot]
e3b179fa9d Bump @types/node from 14.14.28 to 14.14.29
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.28 to 14.14.29.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-18 20:50:24 +00:00
Florian Metz
f5efb5664d 🎨 Update Funding 2021-02-15 00:48:37 +01:00
dependabot-preview[bot]
2ae23cac2c Merge pull request #659 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.28 2021-02-14 19:35:43 +00:00
dependabot-preview[bot]
94b24fb079 Bump @types/node from 14.14.27 to 14.14.28
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.27 to 14.14.28.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-14 19:34:33 +00:00
dependabot-preview[bot]
c50e3e922a Merge pull request #658 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.27 2021-02-12 09:52:50 +00:00
dependabot-preview[bot]
9adc3a72e7 Bump @types/node from 14.14.26 to 14.14.27
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.26 to 14.14.27.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-12 09:51:45 +00:00
dependabot-preview[bot]
70255ef9a8 Merge pull request #657 from PreMiD/dependabot/npm_and_yarn/types/node-14.14.26 2021-02-11 21:18:34 +00:00
dependabot-preview[bot]
2af5cffeef Bump @types/node from 14.14.22 to 14.14.26
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.22 to 14.14.26.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-11 21:17:23 +00:00
dependabot-preview[bot]
0dca8768b8 Merge pull request #656 from PreMiD/dependabot/npm_and_yarn/electron-store-7.0.2 2021-02-11 19:00:11 +00:00
dependabot-preview[bot]
5942c4ac08 Bump electron-store from 7.0.1 to 7.0.2
Bumps [electron-store](https://github.com/sindresorhus/electron-store) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/sindresorhus/electron-store/releases)
- [Commits](https://github.com/sindresorhus/electron-store/compare/v7.0.1...v7.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-11 18:59:06 +00:00
dependabot-preview[bot]
3c34c6571c Merge pull request #655 from PreMiD/dependabot/npm_and_yarn/typescript-4.1.5 2021-02-10 20:54:53 +00:00
dependabot-preview[bot]
f5d23cc7c1 Bump typescript from 4.1.4 to 4.1.5
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.1.4...v4.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-10 20:53:42 +00:00
dependabot-preview[bot]
9081b440d5 Merge pull request #653 from PreMiD/dependabot/npm_and_yarn/typescript-4.1.4 2021-02-09 19:04:58 +00:00
dependabot-preview[bot]
db7a638729 Bump typescript from 4.1.3 to 4.1.4
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.1.3...v4.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-09 19:03:45 +00:00
dependabot-preview[bot]
eff85171e6 Merge pull request #652 from PreMiD/dependabot/npm_and_yarn/electron-11.2.3 2021-02-06 18:18:32 +00:00
dependabot-preview[bot]
508137efde Bump electron from 11.2.2 to 11.2.3
Bumps [electron](https://github.com/electron/electron) from 11.2.2 to 11.2.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v11.2.2...v11.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-06 18:17:26 +00:00
Timeraa
991c651082 Remove Sentry for now 2021-02-03 11:35:30 +01:00
Timeraa
8d91013608 🔼 Bump dependencies 2021-02-03 11:27:42 +01:00
Timeraa
9ab00bace5 📄 Fix license 2021-02-03 11:27:16 +01:00
dependabot-preview[bot]
88e50540e8 Merge pull request #618 from PreMiD/dependabot/npm_and_yarn/ini-1.3.7 2020-12-10 18:00:25 +00:00
dependabot-preview[bot]
015a788901 [Security] Bump ini from 1.3.5 to 1.3.7
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7. **This update includes a security fix.**
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-10 17:59:17 +00:00
dependabot-preview[bot]
c3bb662e7b Merge pull request #606 from PreMiD/dependabot/npm_and_yarn/sentry/electron-2.0.4 2020-11-23 12:51:04 +00:00
dependabot-preview[bot]
638d0eec34 Bump @sentry/electron from 2.0.3 to 2.0.4
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/getsentry/sentry-electron/releases)
- [Changelog](https://github.com/getsentry/sentry-electron/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-electron/compare/2.0.3...2.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-23 12:49:59 +00:00
dependabot-preview[bot]
c5274421a5 Merge pull request #591 from PreMiD/dependabot/npm_and_yarn/sentry/electron-2.0.3 2020-11-04 15:53:01 +00:00
dependabot-preview[bot]
fdafdf5dce Bump @sentry/electron from 2.0.2 to 2.0.3
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/getsentry/sentry-electron/releases)
- [Changelog](https://github.com/getsentry/sentry-electron/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-electron/compare/2.0.2...2.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-04 15:51:55 +00:00
dependabot-preview[bot]
743cf8b2af Merge pull request #590 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.3 2020-11-03 13:29:52 +00:00
dependabot-preview[bot]
b23bd7ceb3 Bump @types/fs-extra from 9.0.2 to 9.0.3
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.2 to 9.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-03 13:28:43 +00:00
dependabot-preview[bot]
570c6ef730 Merge pull request #589 from PreMiD/dependabot/npm_and_yarn/sentry/electron-2.0.2 2020-10-30 18:03:57 +00:00
dependabot-preview[bot]
bb7d7edad5 Bump @sentry/electron from 2.0.1 to 2.0.2
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/getsentry/sentry-electron/releases)
- [Changelog](https://github.com/getsentry/sentry-electron/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-electron/compare/2.0.1...2.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-30 18:02:46 +00:00
dependabot-preview[bot]
9a14d38e63 Merge pull request #587 from PreMiD/dependabot/npm_and_yarn/typescript-4.0.5 2020-10-27 23:00:50 +00:00
dependabot-preview[bot]
f65bce0de5 Bump typescript from 4.0.3 to 4.0.5
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.0.3 to 4.0.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.0.3...v4.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-27 22:59:45 +00:00
dependabot-preview[bot]
8005b9b86b Merge pull request #583 from PreMiD/dependabot/npm_and_yarn/electron-10.1.5 2020-10-25 05:15:31 +00:00
dependabot-preview[bot]
1b4ed842a6 Bump electron from 10.1.4 to 10.1.5
Bumps [electron](https://github.com/electron/electron) from 10.1.4 to 10.1.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v10.1.4...v10.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-25 05:14:22 +00:00
dependabot-preview[bot]
7cd372cc59 Merge pull request #579 from PreMiD/dependabot/npm_and_yarn/electron-10.1.4 2020-10-20 21:31:32 +00:00
dependabot-preview[bot]
3b2b35d760 Bump electron from 10.1.3 to 10.1.4
Bumps [electron](https://github.com/electron/electron) from 10.1.3 to 10.1.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v10.1.3...v10.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-20 21:30:26 +00:00
dependabot-preview[bot]
464e39f0d1 Merge pull request #578 from PreMiD/dependabot/npm_and_yarn/nodemon-2.0.6 2020-10-20 13:59:59 +00:00
dependabot-preview[bot]
f66a883272 Bump nodemon from 2.0.5 to 2.0.6
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.5...v2.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-20 13:58:54 +00:00
dependabot-preview[bot]
7e2172533c Merge pull request #576 from PreMiD/dependabot/npm_and_yarn/types/node-14.11.10 2020-10-17 21:00:58 +00:00
dependabot-preview[bot]
4237c89589 Bump @types/node from 14.11.8 to 14.11.10
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.11.8 to 14.11.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-17 20:59:50 +00:00
dependabot-preview[bot]
45542ce1a8 Merge pull request #573 from PreMiD/dependabot/npm_and_yarn/nodemon-2.0.5 2020-10-14 00:19:02 +00:00
dependabot-preview[bot]
5cb286efa9 Merge pull request #572 from PreMiD/dependabot/npm_and_yarn/chokidar-3.4.3 2020-10-14 00:18:25 +00:00
dependabot-preview[bot]
ab8284163c Bump nodemon from 2.0.4 to 2.0.5
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.4...v2.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-14 00:17:53 +00:00
dependabot-preview[bot]
1ce819d324 Bump chokidar from 3.4.2 to 3.4.3
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.4.2 to 3.4.3.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.4.2...3.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-14 00:17:17 +00:00
dependabot-preview[bot]
e557afb7b2 Merge pull request #571 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.2 2020-10-11 18:28:17 +00:00
dependabot-preview[bot]
7eb28067d8 Bump @types/fs-extra from 9.0.1 to 9.0.2
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.1 to 9.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-11 18:27:11 +00:00
Florian Metz
e08a1072a7 ♻ Change back to publish event 2020-10-10 16:02:28 +02:00
Florian Metz
1031206441 🐛 Fix pls 2020-10-10 15:32:09 +02:00
Florian Metz
5a6c14b9b9 Update deploy.yml 2020-10-10 15:06:03 +02:00
Florian Metz
2487053341 🐛 Fix my dependency? 2020-10-10 15:02:46 +02:00
Florian Metz
e53ed627d6 🔼 Update dependencies 2020-10-10 14:52:29 +02:00
Bas950
4e66c1795c Merge pull request #568 from TheGamerzs/stable
Update Discord Invite Link
2020-10-01 23:19:15 +02:00
TheGamerzs
b668366d8a Update README.md
Discord Invite Link
2020-10-01 21:36:35 +01:00
dependabot-preview[bot]
6caa35889a Merge pull request #567 from PreMiD/dependabot/npm_and_yarn/types/archiver-3.1.1 2020-09-30 02:02:26 +00:00
dependabot-preview[bot]
6c0f66cdd5 Bump @types/archiver from 3.1.0 to 3.1.1
Bumps [@types/archiver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/archiver) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/archiver)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-30 02:01:16 +00:00
dependabot-preview[bot]
6d74ae4723 Merge pull request #566 from PreMiD/dependabot/npm_and_yarn/yarn-1.22.10 2020-09-28 23:34:51 +00:00
dependabot-preview[bot]
606e62ec3f Bump yarn from 1.22.7 to 1.22.10
Bumps [yarn](https://github.com/yarnpkg/yarn) from 1.22.7 to 1.22.10.
- [Release notes](https://github.com/yarnpkg/yarn/releases)
- [Changelog](https://github.com/yarnpkg/yarn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yarnpkg/yarn/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-28 23:33:45 +00:00
Fruxh
a916982107 Merge pull request #501 from PrivPreMiD/fix-all-origins-vuln
[Stable/Urgent] Fix socketio server being able to be accessed by any website
2020-09-29 01:19:06 +02:00
dependabot-preview[bot]
9f43b3d9e1 Merge pull request #565 from PreMiD/dependabot/npm_and_yarn/yarn-1.22.7 2020-09-28 12:25:30 +00:00
dependabot-preview[bot]
313b228e14 Bump yarn from 1.22.5 to 1.22.7
Bumps [yarn](https://github.com/yarnpkg/yarn) from 1.22.5 to 1.22.7.
- [Release notes](https://github.com/yarnpkg/yarn/releases)
- [Changelog](https://github.com/yarnpkg/yarn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yarnpkg/yarn/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-28 12:24:13 +00:00
dependabot-preview[bot]
a180d7f7ee Merge pull request #560 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.9 2020-09-14 12:37:04 +00:00
dependabot-preview[bot]
7bf2c309d0 Bump @types/prompts from 2.0.8 to 2.0.9
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-14 12:35:58 +00:00
dependabot-preview[bot]
bfc1fb6db5 Merge pull request #558 from PreMiD/dependabot/npm_and_yarn/bl-4.0.3 2020-09-03 13:43:38 +00:00
dependabot-preview[bot]
5373630030 [Security] Bump bl from 4.0.2 to 4.0.3
Bumps [bl](https://github.com/rvagg/bl) from 4.0.2 to 4.0.3. **This update includes a security fix.**
- [Release notes](https://github.com/rvagg/bl/releases)
- [Commits](https://github.com/rvagg/bl/compare/v4.0.2...v4.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-03 13:42:32 +00:00
dependabot-preview[bot]
f82e6fc29b Merge pull request #554 from PreMiD/dependabot/npm_and_yarn/yarn-1.22.5 2020-08-28 11:26:30 +00:00
dependabot-preview[bot]
3390c7ad30 Bump yarn from 1.22.4 to 1.22.5
Bumps [yarn](https://github.com/yarnpkg/yarn) from 1.22.4 to 1.22.5.
- [Release notes](https://github.com/yarnpkg/yarn/releases)
- [Changelog](https://github.com/yarnpkg/yarn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yarnpkg/yarn/compare/v1.22.4...v1.22.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-28 11:25:16 +00:00
dependabot-preview[bot]
40401ed8ac Merge pull request #552 from PreMiD/dependabot/npm_and_yarn/chokidar-3.4.2 2020-08-26 03:57:13 +00:00
dependabot-preview[bot]
9cdc0d343a Bump chokidar from 3.4.1 to 3.4.2
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.4.1...3.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-26 03:54:50 +00:00
dependabot-preview[bot]
11bb4de08b Merge pull request #548 from PreMiD/dependabot/npm_and_yarn/types/socket.io-2.1.11 2020-08-26 03:53:57 +00:00
dependabot-preview[bot]
37fdfebc74 Bump @types/socket.io from 2.1.8 to 2.1.11
Bumps [@types/socket.io](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io) from 2.1.8 to 2.1.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/socket.io)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-26 03:52:50 +00:00
dependabot-preview[bot]
29aaed7f4b Merge pull request #518 from PreMiD/dependabot/npm_and_yarn/lodash-4.17.19 2020-07-16 08:35:02 +00:00
dependabot-preview[bot]
3c4e08f6a4 [Security] Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. **This update includes a security fix.**
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-16 08:28:51 +00:00
dependabot-preview[bot]
6718c49854 Merge pull request #517 from PreMiD/dependabot/npm_and_yarn/chokidar-3.4.1 2020-07-16 02:43:01 +00:00
dependabot-preview[bot]
c1c34b7be3 Bump chokidar from 3.4.0 to 3.4.1
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.4.0...3.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-16 02:35:58 +00:00
dependabot-preview[bot]
256a9baa57 Merge pull request #514 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.23 2020-07-13 23:03:36 +00:00
dependabot-preview[bot]
e28e8571ef Bump @types/node from 14.0.22 to 14.0.23
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.22 to 14.0.23.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-13 22:43:45 +00:00
dependabot-preview[bot]
ba79a7e1ff Merge pull request #513 from PreMiD/dependabot/npm_and_yarn/archiver-4.0.2 2020-07-11 15:47:23 +00:00
dependabot-preview[bot]
44a7cc9b2f Bump archiver from 4.0.1 to 4.0.2
Bumps [archiver](https://github.com/archiverjs/node-archiver) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/archiverjs/node-archiver/releases)
- [Changelog](https://github.com/archiverjs/node-archiver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/archiverjs/node-archiver/compare/4.0.1...4.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-11 15:42:30 +00:00
dependabot-preview[bot]
8fb4ef7ce0 Merge pull request #512 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.22 2020-07-10 18:31:58 +00:00
dependabot-preview[bot]
86a1d05a35 Bump @types/node from 14.0.20 to 14.0.22
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.20 to 14.0.22.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-10 18:24:37 +00:00
dependabot-preview[bot]
d7a50e9984 Merge pull request #510 from PreMiD/dependabot/npm_and_yarn/sentry/electron-1.3.2 2020-07-09 09:08:12 +00:00
dependabot-preview[bot]
1a27221563 Bump @sentry/electron from 1.3.1 to 1.3.2
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/getsentry/sentry-electron/releases)
- [Changelog](https://github.com/getsentry/sentry-electron/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-electron/compare/v1.3.1...v1.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-09 09:02:55 +00:00
dependabot-preview[bot]
780d61d84a Merge pull request #508 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.20 2020-07-08 21:30:59 +00:00
dependabot-preview[bot]
f73e5f4c51 Bump @types/node from 14.0.19 to 14.0.20
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.19 to 14.0.20.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-08 20:31:45 +00:00
dependabot-preview[bot]
388b1a6196 Merge pull request #507 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.19 2020-07-07 22:32:53 +00:00
dependabot-preview[bot]
327e347ebe Bump @types/node from 14.0.18 to 14.0.19
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.18 to 14.0.19.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-07 22:10:15 +00:00
dependabot-preview[bot]
0e9790a721 Merge pull request #505 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.18 2020-07-07 00:48:11 +00:00
dependabot-preview[bot]
ea81cd0e16 Bump @types/node from 14.0.14 to 14.0.18
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.14 to 14.0.18.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-07 00:40:57 +00:00
dependabot-preview[bot]
6b2d494f6e Merge pull request #502 from PreMiD/dependabot/npm_and_yarn/sentry/electron-1.3.1 2020-07-03 16:21:11 +00:00
dependabot-preview[bot]
3866716326 Bump @sentry/electron from 1.3.0 to 1.3.1
Bumps [@sentry/electron](https://github.com/getsentry/sentry-electron) from 1.3.0 to 1.3.1.
- [Release notes](https://github.com/getsentry/sentry-electron/releases)
- [Changelog](https://github.com/getsentry/sentry-electron/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-electron/compare/v1.3.0...v1.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-03 16:15:48 +00:00
Oj
8de108548c Fix localhost socketio server being able to be accessed by any website (CORS) 2020-07-03 09:12:41 +01:00
dependabot-preview[bot]
3595dae0f1 Merge pull request #497 from PreMiD/dependabot/npm_and_yarn/typescript-3.9.6 2020-07-02 01:12:16 +00:00
dependabot-preview[bot]
2d266508f8 Bump typescript from 3.9.5 to 3.9.6
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.5 to 3.9.6.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-02 00:52:29 +00:00
dependabot-preview[bot]
833bacc65d Merge pull request #496 from PreMiD/dependabot/npm_and_yarn/ssh2-sftp-client-5.1.3 2020-06-30 08:31:43 +00:00
dependabot-preview[bot]
283434aa09 Bump ssh2-sftp-client from 5.1.2 to 5.1.3
Bumps [ssh2-sftp-client](https://github.com/theophilusx/ssh2-sftp-client) from 5.1.2 to 5.1.3.
- [Release notes](https://github.com/theophilusx/ssh2-sftp-client/releases)
- [Commits](https://github.com/theophilusx/ssh2-sftp-client/compare/5.1.2...5.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-30 08:27:18 +00:00
dependabot-preview[bot]
87b44a6f40 Merge pull request #492 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.14 2020-06-24 13:25:08 +00:00
dependabot-preview[bot]
f5817f4c2f Bump @types/node from 14.0.13 to 14.0.14
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.13 to 14.0.14.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 13:19:37 +00:00
Fruxh
8a43fd7894 removed OpenCollective and Ko-Fi 2020-06-20 21:59:38 +02:00
dependabot-preview[bot]
a2f57095d7 Merge pull request #490 from PreMiD/dependabot/npm_and_yarn/fast-glob-3.2.4 2020-06-16 11:05:31 +00:00
dependabot-preview[bot]
1827e0da5b Bump fast-glob from 3.2.2 to 3.2.4
Bumps [fast-glob](https://github.com/mrmlnc/fast-glob) from 3.2.2 to 3.2.4.
- [Release notes](https://github.com/mrmlnc/fast-glob/releases)
- [Commits](https://github.com/mrmlnc/fast-glob/compare/3.2.2...3.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 11:00:23 +00:00
dependabot-preview[bot]
6993cd792d Merge pull request #485 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.13 2020-06-10 09:20:30 +00:00
dependabot-preview[bot]
4c9454cae8 Bump @types/node from 14.0.12 to 14.0.13
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.12 to 14.0.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-10 09:15:46 +00:00
dependabot-preview[bot]
1e86025c3d Merge pull request #484 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.12 2020-06-09 09:21:29 +00:00
dependabot-preview[bot]
af44b45ea6 Bump @types/node from 14.0.11 to 14.0.12
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.11 to 14.0.12.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-09 09:11:13 +00:00
dependabot-preview[bot]
4ac7384b2f Merge pull request #479 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.11 2020-06-05 08:57:27 +00:00
dependabot-preview[bot]
83146c71c0 Bump @types/node from 14.0.10 to 14.0.11
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.10 to 14.0.11.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-05 08:52:49 +00:00
dependabot-preview[bot]
993d747a64 Merge pull request #478 from PreMiD/dependabot/npm_and_yarn/typescript-3.9.5 2020-06-04 23:26:37 +00:00
dependabot-preview[bot]
6ecc95bbb0 Bump typescript from 3.9.3 to 3.9.5
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.3 to 3.9.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-04 21:09:07 +00:00
dependabot-preview[bot]
177e4d081f Merge pull request #477 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.10 2020-06-04 01:30:34 +00:00
dependabot-preview[bot]
b3ed1566ca Bump @types/node from 14.0.9 to 14.0.10
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.9 to 14.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-04 01:25:36 +00:00
dependabot-preview[bot]
0333dcdd20 Merge pull request #476 from PreMiD/dependabot/npm_and_yarn/fs-extra-9.0.1 2020-06-04 01:01:27 +00:00
dependabot-preview[bot]
f52cd72f02 Bump fs-extra from 9.0.0 to 9.0.1
Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 9.0.0 to 9.0.1.
- [Release notes](https://github.com/jprichardson/node-fs-extra/releases)
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jprichardson/node-fs-extra/compare/9.0.0...9.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-04 00:32:23 +00:00
dependabot-preview[bot]
b96e383e6a Merge pull request #474 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.9 2020-06-02 02:15:47 +00:00
dependabot-preview[bot]
feca8660f3 Bump @types/node from 14.0.6 to 14.0.9
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.6 to 14.0.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-02 02:14:42 +00:00
dependabot-preview[bot]
3c561c642a Merge pull request #470 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.6 2020-05-30 01:36:34 +00:00
dependabot-preview[bot]
068f41f8e5 Bump @types/node from 14.0.5 to 14.0.6
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.5 to 14.0.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-30 01:32:50 +00:00
dependabot-preview[bot]
e534e65d2d Merge pull request #469 from PreMiD/dependabot/npm_and_yarn/types/socket.io-2.1.8 2020-05-21 21:46:41 +00:00
dependabot-preview[bot]
9c95de2f14 Bump @types/socket.io from 2.1.7 to 2.1.8
Bumps [@types/socket.io](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io) from 2.1.7 to 2.1.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/socket.io)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-21 21:37:56 +00:00
dependabot-preview[bot]
0e380b72b4 Merge pull request #468 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.5 2020-05-21 21:14:19 +00:00
dependabot-preview[bot]
4b3489f8d9 Bump @types/node from 14.0.4 to 14.0.5
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.4 to 14.0.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-21 21:06:41 +00:00
dependabot-preview[bot]
3f4bb10562 Merge pull request #467 from PreMiD/dependabot/npm_and_yarn/types/socket.io-2.1.7 2020-05-21 16:20:42 +00:00
dependabot-preview[bot]
f3524bf564 Bump @types/socket.io from 2.1.6 to 2.1.7
Bumps [@types/socket.io](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io) from 2.1.6 to 2.1.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/socket.io)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-21 16:16:07 +00:00
dependabot-preview[bot]
8805e62f22 Merge pull request #466 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.4 2020-05-20 01:42:43 +00:00
dependabot-preview[bot]
e825207787 Merge pull request #465 from PreMiD/dependabot/npm_and_yarn/typescript-3.9.3 2020-05-20 01:03:51 +00:00
dependabot-preview[bot]
e1a6dfee5d Bump @types/node from 14.0.3 to 14.0.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.3 to 14.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-20 00:23:24 +00:00
dependabot-preview[bot]
e05c7e7dd1 Bump typescript from 3.9.2 to 3.9.3
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.9.2 to 3.9.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.9.2...v3.9.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-19 23:26:38 +00:00
dependabot-preview[bot]
4743bd13e8 Merge pull request #463 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.3 2020-05-19 21:07:37 +00:00
dependabot-preview[bot]
d8ba83e7f1 Bump @types/node from 14.0.1 to 14.0.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.0.1 to 14.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-19 20:46:20 +00:00
dependabot-preview[bot]
98f1cc4277 Merge pull request #464 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.1 2020-05-19 20:44:54 +00:00
dependabot-preview[bot]
6d30154fce Bump @types/fs-extra from 9.0.0 to 9.0.1
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 9.0.0 to 9.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-19 20:30:13 +00:00
dependabot-preview[bot]
fc0dac1981 Merge pull request #460 from PreMiD/dependabot/npm_and_yarn/types/socket.io-2.1.6 2020-05-17 14:45:04 +00:00
dependabot-preview[bot]
1cac465520 Bump @types/socket.io from 2.1.5 to 2.1.6
Bumps [@types/socket.io](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io) from 2.1.5 to 2.1.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/socket.io)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-17 14:41:19 +00:00
Fruxh
d01504cc73 Merge pull request #459 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-9.0.0
Bump @types/fs-extra from 8.1.0 to 9.0.0
2020-05-17 01:19:12 +02:00
Fruxh
6b27336c5c Merge pull request #454 from PreMiD/dependabot/npm_and_yarn/types/node-14.0.1
Bump @types/node from 13.13.5 to 14.0.1
2020-05-17 01:18:34 +02:00
Fruxh
cc2f9342b3 Merge pull request #456 from PreMiD/dependabot/npm_and_yarn/electron-8.3.0
Bump electron from 8.2.5 to 8.3.0
2020-05-17 01:17:57 +02:00
Fruxh
198defa47b Merge pull request #452 from PreMiD/dependabot/npm_and_yarn/typescript-3.9.2
Bump typescript from 3.8.3 to 3.9.2
2020-05-17 01:17:39 +02:00
dependabot-preview[bot]
b6e4127183 Bump @types/fs-extra from 8.1.0 to 9.0.0
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 8.1.0 to 9.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 18:30:27 +00:00
dependabot-preview[bot]
abe67a2694 Bump @types/node from 13.13.5 to 14.0.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.5 to 14.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 17:12:15 +00:00
dependabot-preview[bot]
5a08428129 Merge pull request #458 from PreMiD/dependabot/npm_and_yarn/types/socket.io-2.1.5 2020-05-15 17:10:39 +00:00
dependabot-preview[bot]
809c9e31f9 Bump @types/socket.io from 2.1.4 to 2.1.5
Bumps [@types/socket.io](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/socket.io) from 2.1.4 to 2.1.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/socket.io)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 17:03:41 +00:00
dependabot-preview[bot]
07d3e2753a Bump electron from 8.2.5 to 8.3.0
Bumps [electron](https://github.com/electron/electron) from 8.2.5 to 8.3.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.5...v8.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 06:23:03 +00:00
dependabot-preview[bot]
f82005c573 Merge pull request #457 from PreMiD/dependabot/npm_and_yarn/types/discord-rpc-3.0.4 2020-05-15 06:21:36 +00:00
dependabot-preview[bot]
9a2a6afadb Bump @types/discord-rpc from 3.0.3 to 3.0.4
Bumps [@types/discord-rpc](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/discord-rpc) from 3.0.3 to 3.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/discord-rpc)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 06:16:56 +00:00
dependabot-preview[bot]
bad410fd78 Merge pull request #455 from PreMiD/dependabot/npm_and_yarn/nodemon-2.0.4 2020-05-14 17:43:21 +00:00
dependabot-preview[bot]
bb67f12a89 Bump nodemon from 2.0.3 to 2.0.4
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.3...v2.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-14 17:39:22 +00:00
dependabot-preview[bot]
977d1da3b0 Bump typescript from 3.8.3 to 3.9.2
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.8.3 to 3.9.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-12 21:34:50 +00:00
dependabot-preview[bot]
3e80669e23 Merge pull request #451 from PreMiD/dependabot/npm_and_yarn/types/node-13.13.5 2020-05-05 20:14:44 +00:00
dependabot-preview[bot]
a1f23efb42 Bump @types/node from 13.13.4 to 13.13.5
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.4 to 13.13.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-05 19:25:21 +00:00
Florian Metz
4f065454c0 Merge pull request #450 from PreMiD/dependabot/npm_and_yarn/discord-rpc-df0a9e0
Bump discord-rpc from `cfddf66` to `df0a9e0`
2020-05-05 10:32:17 +02:00
dependabot-preview[bot]
c31128939e Bump discord-rpc from cfddf66 to df0a9e0
Bumps [discord-rpc](https://github.com/discordjs/RPC) from `cfddf66` to `df0a9e0`.
- [Release notes](https://github.com/discordjs/RPC/releases)
- [Commits](cfddf66c37...df0a9e00b1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 22:40:41 +00:00
dependabot-preview[bot]
a27c8dc44b Merge pull request #449 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.8 2020-05-04 22:27:26 +00:00
dependabot-preview[bot]
3d67b0e07d Bump @types/prompts from 2.0.7 to 2.0.8
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 22:21:14 +00:00
dependabot-preview[bot]
d01de7337f Merge pull request #448 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.7 2020-05-02 16:29:50 +00:00
dependabot-preview[bot]
6e1ca7987e Bump @types/prompts from 2.0.6 to 2.0.7
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-02 16:24:45 +00:00
dependabot-preview[bot]
717cf66b90 Merge pull request #447 from PreMiD/dependabot/npm_and_yarn/electron-8.2.5 2020-04-30 21:32:07 +00:00
dependabot-preview[bot]
c84cc4655f Bump electron from 8.2.4 to 8.2.5
Bumps [electron](https://github.com/electron/electron) from 8.2.4 to 8.2.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.4...v8.2.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-30 21:27:42 +00:00
Fruxh
28ff813c49 Merge pull request #442 from PreMiD/dependabot/npm_and_yarn/chokidar-3.4.0
Bump chokidar from 3.3.1 to 3.4.0
2020-04-29 19:45:06 +02:00
Fruxh
7cef8a3854 Merge pull request #440 from PreMiD/dependabot/npm_and_yarn/source-map-support-0.5.19
Bump source-map-support from 0.5.16 to 0.5.19
2020-04-29 19:44:54 +02:00
Fruxh
73a18ed957 Merge pull request #433 from PreMiD/dependabot/npm_and_yarn/unzipper-0.10.11
Bump unzipper from 0.10.10 to 0.10.11
2020-04-29 19:44:38 +02:00
dependabot-preview[bot]
69a7938955 Bump unzipper from 0.10.10 to 0.10.11
Bumps [unzipper](https://github.com/ZJONSSON/node-unzipper) from 0.10.10 to 0.10.11.
- [Release notes](https://github.com/ZJONSSON/node-unzipper/releases)
- [Commits](https://github.com/ZJONSSON/node-unzipper/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 08:48:12 +00:00
dependabot-preview[bot]
808aaea818 Merge pull request #446 from PreMiD/dependabot/npm_and_yarn/electron-8.2.4 2020-04-28 08:46:20 +00:00
dependabot-preview[bot]
57d8928966 Bump electron from 8.2.3 to 8.2.4
Bumps [electron](https://github.com/electron/electron) from 8.2.3 to 8.2.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.3...v8.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 08:41:41 +00:00
dependabot-preview[bot]
e46655654b Merge pull request #444 from PreMiD/dependabot/npm_and_yarn/types/node-13.13.4 2020-04-26 18:12:44 +00:00
dependabot-preview[bot]
0c1508f761 Bump @types/node from 13.13.3 to 13.13.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.3 to 13.13.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-26 18:07:54 +00:00
dependabot-preview[bot]
a2ee25b559 Merge pull request #443 from PreMiD/dependabot/npm_and_yarn/types/node-13.13.3 2020-04-26 17:20:16 +00:00
dependabot-preview[bot]
a3968bf9f7 Bump @types/node from 13.13.2 to 13.13.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.2 to 13.13.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-26 17:15:17 +00:00
dependabot-preview[bot]
799a626005 Bump chokidar from 3.3.1 to 3.4.0
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.3.1...3.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-26 14:30:26 +00:00
dependabot-preview[bot]
154d398724 Bump source-map-support from 0.5.16 to 0.5.19
Bumps [source-map-support](https://github.com/evanw/node-source-map-support) from 0.5.16 to 0.5.19.
- [Release notes](https://github.com/evanw/node-source-map-support/releases)
- [Commits](https://github.com/evanw/node-source-map-support/compare/v0.5.16...v0.5.19)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-24 11:45:10 +00:00
dependabot-preview[bot]
a7005b91da Merge pull request #439 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.6 2020-04-23 19:47:09 +00:00
dependabot-preview[bot]
6b508d472f Bump @types/prompts from 2.0.5 to 2.0.6
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.5 to 2.0.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-23 19:28:32 +00:00
dependabot-preview[bot]
9266b43c7a Merge pull request #437 from PreMiD/dependabot/npm_and_yarn/ora-4.0.4 2020-04-22 08:48:48 +00:00
dependabot-preview[bot]
5721a7eecb Bump ora from 4.0.3 to 4.0.4
Bumps [ora](https://github.com/sindresorhus/ora) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/sindresorhus/ora/releases)
- [Commits](https://github.com/sindresorhus/ora/compare/v4.0.3...v4.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-22 08:44:11 +00:00
dependabot-preview[bot]
7f2f09137c Merge pull request #436 from PreMiD/dependabot/npm_and_yarn/types/node-13.13.2 2020-04-22 02:38:54 +00:00
dependabot-preview[bot]
3b80fe6cdf Bump @types/node from 13.13.1 to 13.13.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.1 to 13.13.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-22 02:34:28 +00:00
dependabot-preview[bot]
b995c8c564 Merge pull request #434 from PreMiD/dependabot/npm_and_yarn/types/node-13.13.1 2020-04-20 19:19:56 +00:00
dependabot-preview[bot]
f13517d75b Bump @types/node from 13.13.0 to 13.13.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.13.0 to 13.13.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 19:14:41 +00:00
Fruxh
06945b7a3c Merge pull request #431 from PreMiD/dependabot/npm_and_yarn/types/node-13.13.0
Bump @types/node from 13.11.1 to 13.13.0
2020-04-20 05:43:00 +02:00
Fruxh
8beaf37f5a Merge pull request #429 from PreMiD/dependabot/npm_and_yarn/archiver-4.0.1
Bump archiver from 3.1.1 to 4.0.1
2020-04-20 05:42:48 +02:00
Fruxh
8cb9f006de Merge pull request #425 from PreMiD/dependabot/npm_and_yarn/timeraa/devscript-4b11f60
Bump @timeraa/devscript from `21f3747` to `4b11f60`
2020-04-20 05:42:22 +02:00
Florian Metz
0f2c818cb2 Merge pull request #424 from alexbcberio/stable
Fix tray icon resolution for Windows platforms
2020-04-20 04:23:04 +02:00
dependabot-preview[bot]
fcfedce514 Bump @types/node from 13.11.1 to 13.13.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.11.1 to 13.13.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 21:27:49 +00:00
dependabot-preview[bot]
c2541eb2ac Bump archiver from 3.1.1 to 4.0.1
Bumps [archiver](https://github.com/archiverjs/node-archiver) from 3.1.1 to 4.0.1.
- [Release notes](https://github.com/archiverjs/node-archiver/releases)
- [Changelog](https://github.com/archiverjs/node-archiver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/archiverjs/node-archiver/compare/3.1.1...4.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 00:11:40 +00:00
dependabot-preview[bot]
8262784152 Merge pull request #430 from PreMiD/dependabot/npm_and_yarn/electron-8.2.3 2020-04-17 00:10:12 +00:00
dependabot-preview[bot]
13bfba8f22 Bump electron from 8.2.2 to 8.2.3
Bumps [electron](https://github.com/electron/electron) from 8.2.2 to 8.2.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.2...v8.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 00:05:36 +00:00
dependabot-preview[bot]
e708a779c7 Merge pull request #427 from PreMiD/dependabot/npm_and_yarn/electron-8.2.2 2020-04-13 21:33:12 +00:00
dependabot-preview[bot]
f93cca8043 Bump electron from 8.2.1 to 8.2.2
Bumps [electron](https://github.com/electron/electron) from 8.2.1 to 8.2.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.1...v8.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 21:27:24 +00:00
dependabot-preview[bot]
e3133749f7 Bump @timeraa/devscript from 21f3747 to 4b11f60
Bumps [@timeraa/devscript](https://github.com/Timeraa/DevScript) from `21f3747` to `4b11f60`.
- [Release notes](https://github.com/Timeraa/DevScript/releases)
- [Commits](21f374756b...4b11f60572)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 19:36:39 +00:00
dependabot-preview[bot]
0e870dbb1b Merge pull request #426 from PreMiD/dependabot/npm_and_yarn/types/discord-rpc-3.0.3 2020-04-13 19:35:31 +00:00
dependabot-preview[bot]
8911232658 Bump @types/discord-rpc from 3.0.2 to 3.0.3
Bumps [@types/discord-rpc](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/discord-rpc) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/discord-rpc)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-13 19:29:43 +00:00
Florian Metz
b8abcd1848 🐛 Should write error 2020-04-10 23:30:25 +02:00
Alexander BC
ea69588488 Update yarn related ignore files 2020-04-10 11:35:58 +02:00
alexbcberio
f32243a402 Use .ico file on Windows platforms 2020-04-10 00:58:58 +02:00
alexbcberio
80a5d4eea5 Created .ico image file to use on tray and it's image generator file 2020-04-09 21:40:46 +02:00
alexbcberio
40a663ad21 Added tray icon image source file and created recommended icon resolutions 2020-04-09 21:38:55 +02:00
alexbcberio
6aa42d4ee0 Ignore .yarn directory 2020-04-09 21:28:53 +02:00
Florian Metz
f57289cc46 Merge pull request #423 from LewisTehMinerz/lewis/single-instance
👌
2020-04-09 16:04:33 +02:00
Lewis Crichton
f84e74f230 add single instance lock
* prevents multiple instances
2020-04-09 14:58:35 +01:00
dependabot-preview[bot]
55ed97bfeb Merge pull request #421 from PreMiD/dependabot/npm_and_yarn/types/node-13.11.1 2020-04-08 19:42:30 +00:00
dependabot-preview[bot]
e4320d9a16 Bump @types/node from 13.11.0 to 13.11.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.11.0 to 13.11.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-08 19:36:26 +00:00
dependabot-preview[bot]
01e43a9223 Merge pull request #420 from PreMiD/dependabot/npm_and_yarn/nodemon-2.0.3 2020-04-08 19:03:25 +00:00
dependabot-preview[bot]
f204afdc6d Bump nodemon from 2.0.2 to 2.0.3
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.2...v2.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-08 18:58:29 +00:00
Florian Metz
5b9ffe320a Update deploy.yml 2020-04-08 16:58:23 +02:00
Florian Metz
e291c110fe Update deploy.yml 2020-04-08 16:34:09 +02:00
Florian Metz
3b83839f6c Update README.md 2020-04-08 16:22:19 +02:00
Florian Metz
26f6e97ad8 Update deploy.yml 2020-04-08 15:49:30 +02:00
Florian Metz
5381789bfd GetDiscordUser 2020-04-08 14:21:56 +02:00
Florian Metz
50da27c698 🔼 Dependency updates 2020-04-08 14:21:29 +02:00
Florian Metz
7d7a6f83a1 Add sentry 2020-04-08 14:21:12 +02:00
dependabot-preview[bot]
1bd865dd56 Merge pull request #415 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.8 2020-03-31 00:21:53 +00:00
dependabot-preview[bot]
ffe43387e3 Bump @types/node from 13.9.7 to 13.9.8
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.7 to 13.9.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-31 00:17:55 +00:00
dependabot-preview[bot]
2359da9ed5 Merge pull request #414 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.7 2020-03-30 23:58:05 +00:00
dependabot-preview[bot]
41cd3c0add Bump @types/node from 13.9.6 to 13.9.7
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.6 to 13.9.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-30 23:54:06 +00:00
dependabot-preview[bot]
494c0625a7 Merge pull request #413 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.6 2020-03-30 22:57:37 +00:00
dependabot-preview[bot]
0a2e215846 Bump @types/node from 13.9.5 to 13.9.6
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.5 to 13.9.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-30 22:53:13 +00:00
dependabot-preview[bot]
a94ff3e660 Merge pull request #412 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.5 2020-03-27 17:02:00 +00:00
dependabot-preview[bot]
c98bf61041 Bump @types/node from 13.9.4 to 13.9.5
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.4 to 13.9.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-27 16:56:51 +00:00
dependabot-preview[bot]
e639a988fd Merge pull request #411 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.4 2020-03-25 08:13:28 +00:00
dependabot-preview[bot]
f86c283f9e Bump @types/node from 13.9.3 to 13.9.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.3 to 13.9.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-25 08:12:20 +00:00
dependabot-preview[bot]
23f7074913 Merge pull request #409 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.3 2020-03-22 13:19:45 +00:00
dependabot-preview[bot]
19913013b8 Bump @types/node from 13.9.2 to 13.9.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.2 to 13.9.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 13:15:04 +00:00
dependabot-preview[bot]
e50ef300e4 Bump @types/rimraf from 2.0.3 to 3.0.0 (#406)
Bumps [@types/rimraf](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/rimraf) from 2.0.3 to 3.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/rimraf)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-03-21 02:21:51 +01:00
Florian Metz
4298eb0ee2 Merge pull request #405 from PreMiD/dependabot/npm_and_yarn/types/unzipper-0.10.3
Bump @types/unzipper from 0.10.2 to 0.10.3
2020-03-21 02:21:35 +01:00
Florian Metz
b2e0012d6e Merge pull request #404 from PreMiD/dependabot/npm_and_yarn/fs-extra-9.0.0
Bump fs-extra from 8.1.0 to 9.0.0
2020-03-21 02:21:03 +01:00
dependabot-preview[bot]
c4700a6f77 Bump @types/unzipper from 0.10.2 to 0.10.3
Bumps [@types/unzipper](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/unzipper) from 0.10.2 to 0.10.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/unzipper)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-20 16:42:21 +00:00
dependabot-preview[bot]
6755117bff Bump fs-extra from 8.1.0 to 9.0.0
Bumps [fs-extra](https://github.com/jprichardson/node-fs-extra) from 8.1.0 to 9.0.0.
- [Release notes](https://github.com/jprichardson/node-fs-extra/releases)
- [Changelog](https://github.com/jprichardson/node-fs-extra/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jprichardson/node-fs-extra/compare/8.1.0...9.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-19 15:38:28 +00:00
dependabot-preview[bot]
9d8c5dadfc Merge pull request #403 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.2 2020-03-18 21:48:13 +00:00
dependabot-preview[bot]
ee914305f7 Bump @types/node from 13.9.1 to 13.9.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.1 to 13.9.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-18 21:44:07 +00:00
dependabot-preview[bot]
883b85db9f Merge pull request #402 from PreMiD/dependabot/npm_and_yarn/prompts-2.3.2 2020-03-18 13:45:17 +00:00
dependabot-preview[bot]
977f0bf8e0 Bump prompts from 2.3.1 to 2.3.2
Bumps [prompts](https://github.com/terkelg/prompts) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/terkelg/prompts/releases)
- [Commits](https://github.com/terkelg/prompts/compare/v2.3.1...v2.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-18 13:40:53 +00:00
dependabot-preview[bot]
c4c05ffc0b Merge pull request #401 from PreMiD/dependabot/npm_and_yarn/ssh2-sftp-client-5.1.2 2020-03-18 00:53:25 +00:00
dependabot-preview[bot]
07ef916183 Bump ssh2-sftp-client from 5.1.1 to 5.1.2
Bumps [ssh2-sftp-client](https://github.com/theophilusx/ssh2-sftp-client) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/theophilusx/ssh2-sftp-client/releases)
- [Commits](https://github.com/theophilusx/ssh2-sftp-client/compare/5.1.1...5.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-18 00:49:05 +00:00
dependabot-preview[bot]
7e240dee16 Merge pull request #400 from PreMiD/dependabot/npm_and_yarn/ssh2-sftp-client-5.1.1 2020-03-17 08:19:23 +00:00
dependabot-preview[bot]
45e454c467 Bump ssh2-sftp-client from 5.1.0 to 5.1.1
Bumps [ssh2-sftp-client](https://github.com/theophilusx/ssh2-sftp-client) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/theophilusx/ssh2-sftp-client/releases)
- [Commits](https://github.com/theophilusx/ssh2-sftp-client/compare/5.1.0...5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-17 08:14:24 +00:00
dependabot-preview[bot]
42f0d942d0 Merge pull request #399 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.1 2020-03-13 00:50:21 +00:00
dependabot-preview[bot]
d525e3c87c Bump @types/node from 13.9.0 to 13.9.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.9.0 to 13.9.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-13 00:45:59 +00:00
dependabot-preview[bot]
74b0f5cf2b Merge pull request #397 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.5 2020-03-10 23:00:29 +00:00
dependabot-preview[bot]
ac49523bfa Bump @types/prompts from 2.0.4 to 2.0.5
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-10 22:56:18 +00:00
Florian Metz
eb702a29b5 Merge pull request #396 from PreMiD/dependabot/npm_and_yarn/electron-8.1.1
Bump electron from 8.0.3 to 8.1.1
2020-03-10 19:06:29 +01:00
dependabot-preview[bot]
59f739a60f Bump electron from 8.0.3 to 8.1.1
Bumps [electron](https://github.com/electron/electron) from 8.0.3 to 8.1.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.0.3...v8.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-10 02:05:22 +00:00
dependabot-preview[bot]
7c8cc19c0e Merge pull request #395 from PreMiD/dependabot/npm_and_yarn/yarn-1.22.4 2020-03-09 17:41:00 +00:00
dependabot-preview[bot]
c0bf16f5f8 Bump yarn from 1.22.1 to 1.22.4
Bumps [yarn](https://github.com/yarnpkg/yarn) from 1.22.1 to 1.22.4.
- [Release notes](https://github.com/yarnpkg/yarn/releases)
- [Changelog](https://github.com/yarnpkg/yarn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yarnpkg/yarn/compare/v1.22.1...v1.22.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-09 17:32:13 +00:00
Fruxh
f9038a69ed Merge pull request #394 from PreMiD/dependabot/npm_and_yarn/types/node-13.9.0
Bump @types/node from 13.7.7 to 13.9.0
2020-03-07 06:24:25 +01:00
Fruxh
dceaeadcdd Merge pull request #389 from PreMiD/dependabot/npm_and_yarn/ssh2-sftp-client-5.1.0
Bump ssh2-sftp-client from 5.0.2 to 5.1.0
2020-03-07 03:26:55 +01:00
dependabot-preview[bot]
23e71ddcb3 Bump @types/node from 13.7.7 to 13.9.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.7 to 13.9.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-06 19:19:04 +00:00
dependabot-preview[bot]
080417fc64 Bump ssh2-sftp-client from 5.0.2 to 5.1.0
Bumps [ssh2-sftp-client](https://github.com/theophilusx/ssh2-sftp-client) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/theophilusx/ssh2-sftp-client/releases)
- [Commits](https://github.com/theophilusx/ssh2-sftp-client/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-06 17:12:56 +00:00
dependabot-preview[bot]
24d61c6dd0 Merge pull request #393 from PreMiD/dependabot/npm_and_yarn/yarn-1.22.1 2020-03-06 17:10:39 +00:00
dependabot-preview[bot]
dfceb60f4d Bump yarn from 1.22.0 to 1.22.1
Bumps [yarn](https://github.com/yarnpkg/yarn) from 1.22.0 to 1.22.1.
- [Release notes](https://github.com/yarnpkg/yarn/releases)
- [Changelog](https://github.com/yarnpkg/yarn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yarnpkg/yarn/compare/v1.22.0...v1.22.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-06 17:06:15 +00:00
Fruxh
369e810c48 Merge pull request #385 from PreMiD/dependabot/npm_and_yarn/unzipper-0.10.10
Bump unzipper from 0.10.8 to 0.10.10
2020-03-06 17:55:09 +01:00
Fruxh
cf56d681b3 Merge pull request #381 from PreMiD/dependabot/npm_and_yarn/types/archiver-3.1.0
Bump @types/archiver from 3.0.0 to 3.1.0
2020-03-06 17:54:54 +01:00
dependabot-preview[bot]
7d9604a067 Merge pull request #391 from PreMiD/dependabot/npm_and_yarn/types/prompts-2.0.4 2020-03-05 18:43:05 +00:00
dependabot-preview[bot]
00725b6f9c Bump @types/prompts from 2.0.3 to 2.0.4
Bumps [@types/prompts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/prompts) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/prompts)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-05 18:38:16 +00:00
Fruxh
ff3341c506 Merge pull request #390 from doomlerd/patch-1
To avoid confusion
2020-03-05 17:19:08 +01:00
Jack
2a5dfcc617 To avoid confusion 2020-03-04 22:44:19 +01:00
dependabot-preview[bot]
a57e9245a7 Bump unzipper from 0.10.8 to 0.10.10
Bumps [unzipper](https://github.com/ZJONSSON/node-unzipper) from 0.10.8 to 0.10.10.
- [Release notes](https://github.com/ZJONSSON/node-unzipper/releases)
- [Commits](https://github.com/ZJONSSON/node-unzipper/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-03 02:28:48 +00:00
dependabot-preview[bot]
48cfd57476 Merge pull request #388 from PreMiD/dependabot/npm_and_yarn/electron-8.0.3 2020-03-03 02:27:23 +00:00
dependabot-preview[bot]
16afffad83 Bump electron from 8.0.2 to 8.0.3
Bumps [electron](https://github.com/electron/electron) from 8.0.2 to 8.0.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.0.2...v8.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-03 02:21:50 +00:00
dependabot-preview[bot]
914aaa0bce Merge pull request #387 from PreMiD/dependabot/npm_and_yarn/typescript-3.8.3 2020-02-28 22:30:39 +00:00
dependabot-preview[bot]
237f751824 Bump typescript from 3.8.2 to 3.8.3
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.8.2 to 3.8.3.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v3.8.2...v3.8.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-28 22:25:50 +00:00
dependabot-preview[bot]
d76a58732e Merge pull request #386 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.7 2020-02-28 19:12:12 +00:00
dependabot-preview[bot]
c58188f52c Bump @types/node from 13.7.6 to 13.7.7
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.6 to 13.7.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-28 19:07:30 +00:00
Fruxh
f61120230c Merge pull request #378 from callumok2004/patch-1
Changed "wiki.premid.app" to "docs.premid.app"
2020-02-26 20:51:45 +01:00
dependabot-preview[bot]
1c7bd5fcb6 Merge pull request #384 from PreMiD/dependabot/npm_and_yarn/electron-8.0.2 2020-02-26 06:20:41 +00:00
dependabot-preview[bot]
d39d6051aa Bump electron from 8.0.1 to 8.0.2
Bumps [electron](https://github.com/electron/electron) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.0.1...v8.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-26 05:48:42 +00:00
dependabot-preview[bot]
16d1d0af57 Merge pull request #383 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.6 2020-02-26 01:06:48 +00:00
dependabot-preview[bot]
64871f5e72 Bump @types/node from 13.7.5 to 13.7.6
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.5 to 13.7.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-26 01:02:17 +00:00
dependabot-preview[bot]
27aeadb946 Merge pull request #382 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.5 2020-02-25 19:55:51 +00:00
dependabot-preview[bot]
21b5b58951 Bump @types/node from 13.7.4 to 13.7.5
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.4 to 13.7.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-25 19:50:53 +00:00
dependabot-preview[bot]
cf13342286 Bump @types/archiver from 3.0.0 to 3.1.0
Bumps [@types/archiver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/archiver) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/archiver)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-25 19:09:18 +00:00
Callum OKane
42565a61bb Changed "wiki.premid.app" to "docs.premid.app" 2020-02-23 21:11:24 +00:00
dependabot-preview[bot]
0c8b337acf Merge pull request #377 from PreMiD/dependabot/npm_and_yarn/electron-store-5.1.1 2020-02-22 09:58:46 +00:00
dependabot-preview[bot]
baa9efb97e Bump electron-store from 5.1.0 to 5.1.1
Bumps [electron-store](https://github.com/sindresorhus/electron-store) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/sindresorhus/electron-store/releases)
- [Commits](https://github.com/sindresorhus/electron-store/compare/v5.1.0...v5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-22 09:51:12 +00:00
dependabot-preview[bot]
f8df39a62a Merge pull request #376 from PreMiD/dependabot/npm_and_yarn/fast-glob-3.2.2 2020-02-21 22:14:28 +00:00
dependabot-preview[bot]
e4258e1a2a Bump fast-glob from 3.2.1 to 3.2.2
Bumps [fast-glob](https://github.com/mrmlnc/fast-glob) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/mrmlnc/fast-glob/releases)
- [Commits](https://github.com/mrmlnc/fast-glob/compare/3.2.1...3.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-21 21:01:53 +00:00
Florian Metz
8e77d5cdcc Merge pull request #374 from PreMiD/dependabot/npm_and_yarn/typescript-3.8.2
Bump typescript from 3.7.5 to 3.8.2
2020-02-21 00:13:52 +01:00
dependabot-preview[bot]
3aff551a85 Bump typescript from 3.7.5 to 3.8.2
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 3.7.5 to 3.8.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-20 22:58:53 +00:00
dependabot-preview[bot]
2eaac6ce00 Merge pull request #373 from PreMiD/dependabot/npm_and_yarn/fast-glob-3.2.1 2020-02-20 18:55:42 +00:00
dependabot-preview[bot]
8d3c5b2925 Bump fast-glob from 3.2.0 to 3.2.1
Bumps [fast-glob](https://github.com/mrmlnc/fast-glob) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/mrmlnc/fast-glob/releases)
- [Commits](https://github.com/mrmlnc/fast-glob/compare/3.2.0...3.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-20 18:51:13 +00:00
dependabot-preview[bot]
d6e80c2689 Merge pull request #372 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.4 2020-02-19 20:31:08 +00:00
dependabot-preview[bot]
c7210b89cb Bump @types/node from 13.7.3 to 13.7.4
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.3 to 13.7.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-19 20:26:51 +00:00
dependabot-preview[bot]
adf34a4c9a Merge pull request #371 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.3 2020-02-19 19:26:23 +00:00
dependabot-preview[bot]
41223b02e3 Bump @types/node from 13.7.2 to 13.7.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.2 to 13.7.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-19 19:21:39 +00:00
Florian Metz
7e3e6f82f4 Merge pull request #369 from PreMiD/dependabot/npm_and_yarn/types/fs-extra-8.1.0
Bump @types/fs-extra from 8.0.1 to 8.1.0
2020-02-18 23:37:20 +01:00
Florian Metz
f29728d915 Update FUNDING.yml 2020-02-18 23:29:18 +01:00
dependabot-preview[bot]
96f2cf8468 Merge pull request #370 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.2 2020-02-18 21:11:13 +00:00
dependabot-preview[bot]
87dfc30866 Bump @types/node from 13.7.1 to 13.7.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.1 to 13.7.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-18 21:05:38 +00:00
dependabot-preview[bot]
a4508e0d88 Bump @types/fs-extra from 8.0.1 to 8.1.0
Bumps [@types/fs-extra](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/fs-extra) from 8.0.1 to 8.1.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/fs-extra)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-18 00:50:47 +00:00
Florian Metz
398dedb2ae Merge pull request #363 from PreMiD/dependabot/npm_and_yarn/types/unzipper-0.10.2
Bump @types/unzipper from 0.10.1 to 0.10.2
2020-02-16 18:31:19 +01:00
Florian Metz
b9db443fe4 Merge pull request #367 from PreMiD/dependabot/npm_and_yarn/fast-glob-3.2.0
Bump fast-glob from 3.1.1 to 3.2.0
2020-02-16 18:31:12 +01:00
Florian Metz
4da95c4c15 🐛 Fix updateChecker 2020-02-16 18:30:40 +01:00
dependabot-preview[bot]
75844f00b4 Bump fast-glob from 3.1.1 to 3.2.0
Bumps [fast-glob](https://github.com/mrmlnc/fast-glob) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/mrmlnc/fast-glob/releases)
- [Commits](https://github.com/mrmlnc/fast-glob/compare/3.1.1...3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-15 11:25:32 +00:00
dependabot-preview[bot]
e5ab4cf3b9 Merge pull request #365 from PreMiD/dependabot/npm_and_yarn/prompts-2.3.1 2020-02-14 21:34:05 +00:00
dependabot-preview[bot]
484f49346c Bump prompts from 2.3.0 to 2.3.1
Bumps [prompts](https://github.com/terkelg/prompts) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/terkelg/prompts/releases)
- [Commits](https://github.com/terkelg/prompts/compare/v2.3.0...v2.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-14 21:29:01 +00:00
dependabot-preview[bot]
7cd02f2c9a Bump @types/unzipper from 0.10.1 to 0.10.2
Bumps [@types/unzipper](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/unzipper) from 0.10.1 to 0.10.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/unzipper)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-14 18:48:54 +00:00
dependabot-preview[bot]
b965eb49c9 Merge pull request #364 from PreMiD/dependabot/npm_and_yarn/electron-8.0.1 2020-02-14 18:47:32 +00:00
dependabot-preview[bot]
b21281678b Bump electron from 8.0.0 to 8.0.1
Bumps [electron](https://github.com/electron/electron) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-14 18:43:22 +00:00
dependabot-preview[bot]
d5046d9173 Merge pull request #359 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.1 2020-02-11 17:29:12 +00:00
dependabot-preview[bot]
315bd4ea96 Bump @types/node from 13.7.0 to 13.7.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.7.0 to 13.7.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-11 17:24:47 +00:00
Florian Metz
9708d78ff2 Merge pull request #356 from PreMiD/dependabot/npm_and_yarn/types/ssh2-sftp-client-4.1.3
Bump @types/ssh2-sftp-client from 4.1.2 to 4.1.3
2020-02-10 17:47:23 +01:00
Florian Metz
6dd8749cc4 Update deploy.yml 2020-02-10 17:47:10 +01:00
dependabot-preview[bot]
bb222f4858 Merge pull request #358 from PreMiD/dependabot/npm_and_yarn/rimraf-3.0.2 2020-02-09 07:14:17 +00:00
dependabot-preview[bot]
5bfb150b89 Bump rimraf from 3.0.1 to 3.0.2
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-09 07:06:14 +00:00
Florian Metz
86846c6631 ♻ Some bug fixes / features 2020-02-09 00:31:30 +01:00
dependabot-preview[bot]
5c0fd897ac Merge pull request #357 from PreMiD/dependabot/npm_and_yarn/electron-packager-14.2.1 2020-02-07 23:44:10 +00:00
dependabot-preview[bot]
61ebf7207e Bump electron-packager from 14.2.0 to 14.2.1
Bumps [electron-packager](https://github.com/electron/electron-packager) from 14.2.0 to 14.2.1.
- [Release notes](https://github.com/electron/electron-packager/releases)
- [Changelog](https://github.com/electron/electron-packager/blob/master/NEWS.md)
- [Commits](https://github.com/electron/electron-packager/compare/v14.2.0...v14.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-07 23:23:34 +00:00
dependabot-preview[bot]
57fcfc7377 Bump @types/ssh2-sftp-client from 4.1.2 to 4.1.3
Bumps [@types/ssh2-sftp-client](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ssh2-sftp-client) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ssh2-sftp-client)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-06 17:49:19 +00:00
Florian Metz
6e35f9393d Merge pull request #353 from PreMiD/dependabot/npm_and_yarn/electron-8.0.0
Bump electron from 7.1.11 to 8.0.0
2020-02-05 07:31:02 +01:00
dependabot-preview[bot]
57e83f8d46 Bump electron from 7.1.11 to 8.0.0
Bumps [electron](https://github.com/electron/electron) from 7.1.11 to 8.0.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v7.1.11...v8.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 23:56:38 +00:00
Florian Metz
7e20dba636 F 2020-02-02 01:44:46 +01:00
Florian Metz
ce4c61671e Merge branch 'stable' of https://github.com/PreMiD/PreMiD into stable 2020-02-02 01:35:58 +01:00
Florian Metz
06a330d25e 🐛 Hopefully fix everything.... 2020-02-02 01:35:57 +01:00
Florian Metz
eb2a614094 Merge pull request #349 from PreMiD/imgbot
[ImgBot] Optimize images
2020-02-01 16:17:23 +01:00
Florian Metz
a27cf3a765 🚮 Remove import 2020-02-01 16:16:53 +01:00
Florian Metz
26a77642a1 🐛 Fix path for macOS 2020-02-01 16:06:42 +01:00
Florian Metz
3191c9176e Package asar 2020-02-01 16:03:15 +01:00
ImgBotApp
8866af8c30 [ImgBot] Optimize images
/src/assets/tray/Icon@2x.png -- 0.58kb -> 0.53kb (7.45%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-02-01 13:27:34 +00:00
Florian Metz
a06c120b28 Merge branch 'stable' of https://github.com/PreMiD/PreMiD into stable 2020-02-01 14:26:00 +01:00
Florian Metz
d5361c085d ♻ Recode some app stuff 2020-02-01 14:25:59 +01:00
Florian Metz
7d7573f58f Merge pull request #348 from PreMiD/dependabot/npm_and_yarn/types/node-13.7.0
Bump @types/node from 13.5.3 to 13.7.0
2020-02-01 12:43:42 +01:00
dependabot-preview[bot]
55bb2f377e Bump @types/node from 13.5.3 to 13.7.0
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.5.3 to 13.7.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-31 21:48:42 +00:00
dependabot-preview[bot]
738a25fcc4 Merge pull request #347 from PreMiD/dependabot/npm_and_yarn/types/node-13.5.3 2020-01-30 21:44:10 +00:00
dependabot-preview[bot]
538888df75 Bump @types/node from 13.5.2 to 13.5.3
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.5.2 to 13.5.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-30 21:39:30 +00:00
dependabot-preview[bot]
a2c767181d Merge pull request #346 from PreMiD/dependabot/npm_and_yarn/electron-7.1.11 2020-01-30 10:39:17 +00:00
dependabot-preview[bot]
63f954d8e7 Bump electron from 7.1.10 to 7.1.11
Bumps [electron](https://github.com/electron/electron) from 7.1.10 to 7.1.11.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v7.1.10...v7.1.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-30 10:35:18 +00:00
dependabot-preview[bot]
fea67deaa3 Merge pull request #345 from PreMiD/dependabot/npm_and_yarn/types/node-13.5.2 2020-01-30 01:16:45 +00:00
dependabot-preview[bot]
e969d5471a Bump @types/node from 13.5.1 to 13.5.2
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.5.1 to 13.5.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-29 22:21:22 +00:00
Florian Metz
b8987b279e ♻ Recode some old code 2020-01-29 15:14:05 +01:00
dependabot-preview[bot]
890e0c5361 Merge pull request #344 from PreMiD/dependabot/npm_and_yarn/types/node-13.5.1 2020-01-28 20:01:14 +00:00
dependabot-preview[bot]
8fb9364c3a Bump @types/node from 13.5.0 to 13.5.1
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 13.5.0 to 13.5.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-28 19:56:40 +00:00
Florian Metz
c6019e181f Merge pull request #342 from PreMiD/dependabot/npm_and_yarn/timeraa/devscript-21f3747
Bump @timeraa/devscript from `201329e` to `21f3747`
2020-01-28 12:45:28 +01:00
dependabot-preview[bot]
58a00d7eb6 Merge pull request #343 from PreMiD/dependabot/npm_and_yarn/rimraf-3.0.1 2020-01-28 03:53:03 +00:00
dependabot-preview[bot]
c05cb798f2 Bump rimraf from 3.0.0 to 3.0.1
Bumps [rimraf](https://github.com/isaacs/rimraf) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/isaacs/rimraf/releases)
- [Changelog](https://github.com/isaacs/rimraf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/isaacs/rimraf/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-28 03:47:56 +00:00
dependabot-preview[bot]
fed5e453a8 Bump @timeraa/devscript from 201329e to 21f3747
Bumps [@timeraa/devscript](https://github.com/Timeraa/DevScript) from `201329e` to `21f3747`.
- [Release notes](https://github.com/Timeraa/DevScript/releases)
- [Commits](201329e339...21f374756b)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 08:28:19 +00:00
Florian Metz
68a3478301 Show download progress 2020-01-26 19:58:43 +01:00
Florian Metz
e3704dd8e7 🐛 Fix missing deps 2020-01-26 10:58:22 +01:00
Florian Metz
fb76dd7b6a 📑 Version bump 2020-01-26 10:52:03 +01:00
Florian Metz
9fddc7ff34 ♻ cmd.exe (updater) > PreMiD-Updater.exe 2020-01-26 10:50:29 +01:00
127 changed files with 12175 additions and 5054 deletions

View File

@@ -1,3 +0,0 @@
{
"outDir": "dist/app"
}

11
.dockerignore Normal file
View File

@@ -0,0 +1,11 @@
.vscode
.DS_Store
.Trashes
.nuxt
.output
dist
node_modules
.env
Dockerfile
.dockerignore
generated

13
.gitattributes vendored Normal file
View File

@@ -0,0 +1,13 @@
* text eol=lf
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.mp4 binary
*.mp3 binary
*.gz binary
*.zip binary
*.ttf binary
*.woff binary

View File

@@ -1,30 +0,0 @@
# Contributing
## Requiered knowledge
- JavaScript
- html5
- NodeJS
Additional:
- CSS
- [VueJS](https://vuejs.org/)
- [ElectronJS](https://electronjs.org/)
- [NPMjs](https://www.npmjs.com/)
A source code editor is also requiered. We recommend [Visual Studio Code](https://code.visualstudio.com/).
### Installing the components
1. Install [Git](https://git-scm.com/)
2. Install [Node](https://nodejs.org/en/)
### Cloning the project
1. Fork the [repository](https://github.com/PreMiD/PreMiD)
2. Open a terminal and type `git clone https://github.com/PreMiD/PreMiD`
### Coding your vision
Please keep the structure. We don't want to disorganize our project. Chaotic files may not be accepted.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 KiB

13
.github/FUNDING.yml vendored
View File

@@ -1,12 +1,3 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: [PreMiD, Timeraa]
patreon: Timeraa
open_collective: premid
ko_fi: timeraa
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZU8Q766ACS2WS&lc=US
ko_fi: Timeraa

View File

@@ -1,28 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1.
2.
3.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@@ -1,16 +0,0 @@
---
name: Feature request
about: Suggest an idea for PreMiD
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -1,16 +0,0 @@
---
name: Service request
about: Suggest Rich Presence support for a website
---
**What's the name of the service?**
Ex. www.youtube.com | YouTube
**What should the Presence display?**
Informations about the current video
**Why do you want support for this service?**
Tell us why you want to have support for this website. Please don't just tell us "I use it all the time"
**Are you able to provide an image for the service? (512x512 minimum)**
If you can provide the logo pls paste a link in here or the image

BIN
.github/Logo.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

BIN
.github/Patreon.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

1
.github/PayPal.svg vendored

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.1 KiB

13
.github/SUPPORT.md vendored
View File

@@ -1,13 +0,0 @@
# How to get support
## Take a look at the [wiki](https://wiki.premid.app)
Our GitHub wiki is full of information around PreMiD.<br>
Take a look and feel free to contribute if you want to add something new.
## [Open a issue](https://github.com/PreMiD/PreMiD/issues/new/choose) on [GitHub](https://github.com/PreMiD/PreMiD)
Simply open a issue if you don't feel allright.<br>
*Aand there he goes...*
## Ask a staff member in [#support](https://discord.gg/WvfVZ8T)
The team is ready to tell you the secrets of the underworld.<br>
Join our [Discord server](https://discord.gg/WvfVZ8T) and find out what we're hiding.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,36 @@
name: Build and Push Docker Image
description: Builds a Docker image and pushes it to GitHub Container Registry
inputs:
app:
description: Name of the app
required: true
token:
description: GitHub token
required: true
outputs:
version:
description: Version of the app
value: ${{ steps.get_version.outputs.version }}
runs:
using: composite
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get package.json version
id: get_version
run: echo ::set-output name=version::$(node -p "require('./apps/${{ inputs.app }}/package.json').version")
shell: bash
- name: Convert repository owner to lowercase
id: repo
run: echo "::set-output name=lowercase::$(echo ${{ github.repository_owner }} | awk '{print tolower($0)}')"
shell: bash
- name: Build and Push Docker Image
uses: premid/premid/.github/actions/build-docker@monorepo
with:
dockerfile: ./apps/${{ inputs.app }}/Dockerfile
push: true
token: ${{ inputs.token }}
tags: ghcr.io/${{ steps.repo.outputs.lowercase }}/${{ inputs.app }}:${{ steps.get_version.outputs.version }},ghcr.io/${{ steps.repo.outputs.lowercase }}/${{ inputs.app }}:latest

View File

@@ -0,0 +1,46 @@
name: Build Docker Image
description: Builds a Docker image using Docker Buildx
inputs:
dockerfile:
description: Path to the Dockerfile
required: true
tags:
description: Comma-separated list of tags for the Docker image
required: true
push:
description: Whether to push the Docker image to the registry
required: false
default: "false"
token:
description: GitHub Token
required: false
runs:
using: composite
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
if: ${{ inputs.push == 'true' }}
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ inputs.token }}
- name: Build Docker Image
uses: docker/build-push-action@v5
with:
context: .
file: ${{ inputs.dockerfile }}
platforms: linux/amd64,linux/arm64
push: ${{ inputs.push }}
tags: ${{ inputs.tags }}
cache-from: type=gha
cache-to: type=gha,mode=max

BIN
.github/example.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 KiB

5
.github/renovate.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>Recodive/Recodive:renovate-config"],
"automerge": false
}

65
.github/workflows/cd.yaml vendored Normal file
View File

@@ -0,0 +1,65 @@
name: CD
on:
push:
branches:
- main
tags:
- "*"
permissions:
packages: write
jobs:
build:
name: Build Docker Images
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- pd
- schema-server
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push website
uses: docker/build-push-action@v6
if: matrix.target == 'website'
with:
push: true
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: SERVICE=${{ matrix.target }}
target: website
tags: ghcr.io/premid/${{ matrix.target }}:beta-${{ github.sha }}-${{ github.run_number }}
- name: Get package.json version
if: matrix.target != 'website'
id: get_version
run: echo ::set-output name=version::$(node -p "require('./apps/${{ matrix.target }}/package.json').version")
shell: bash
- name: Build and push other images
uses: docker/build-push-action@v6
if: matrix.target != 'website' && startsWith(github.ref, 'refs/tags/')
with:
push: true
platforms: linux/amd64,linux/arm64
cache-from: type=gha
cache-to: type=gha,mode=max
target: prod
build-args: SERVICE=${{ matrix.target }}
tags: ghcr.io/premid/${{ matrix.target }}:latest,ghcr.io/premid/${{ matrix.target }}:${{ steps.get_version.outputs.version }}

68
.github/workflows/ci.yaml vendored Normal file
View File

@@ -0,0 +1,68 @@
name: Build, Lint and Test
on:
push:
branches:
- main
pull_request:
jobs:
build:
name: Build, Lint and Test
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v3
- name: Setup Node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install Dependencies
run: pnpm install
- name: Codegen
run: pnpm -r codegen
- name: Lint
run: pnpm run lint
- name: Build
run: pnpm run build
- name: Test
run: pnpm test
build-docker:
name: Build Docker Images
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- pd
- schema-server
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Get Target
id: get_target
run: echo "target=$([[ ${{ matrix.target }} == 'website' ]] && echo 'website' || echo 'prod')" >> $GITHUB_OUTPUT
- name: Build
uses: docker/build-push-action@v6
with:
cache-from: type=gha
cache-to: type=gha,mode=max
target: ${{ steps.get_target.outputs.target }}
build-args: SERVICE=${{ matrix.target }}

View File

@@ -1,105 +0,0 @@
name: DePloY
on:
release:
types: [published]
env:
NODE_ENV: DePloY
jobs:
package:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macOS-latest, windows-latest]
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@master
- name: Install Dependencies
run: |
npm i
npm i -g typescript rimraf
- name: Prepare to package
run: npm run init
- name: Package
run: |
npm run pkg
rimraf dist/app
node util/zip dist ${{ matrix.os }}.zip --zip
- name: Upload bundle
env:
SSHHOST: ${{ secrets.SSHHOST }}
SSHUSERNAME: ${{ secrets.SSHUSERNAME }}
SSHPASSWORD: ${{ secrets.SSHPASSWORD }}
run: |
tsc util/uploadFile util/zip
node util/uploadFile ${{ matrix.os }}.zip /home/PreMiD/download/util/${{ matrix.os }}.zip
createInstallers:
runs-on: "ubuntu-latest"
needs: package
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@master
- name: Install dependencies
run: |
npm i
npm i -g typescript
- name: Download InstallBuilder
run: |
wget https://clients.bitrock.com/installbuilder/installbuilder-enterprise-19.10.0-linux-x64-installer.run
chmod u+x installbuilder-enterprise-19.10.0-linux-x64-installer.run
- name: Install InstallBuilder
run: |
./installbuilder-enterprise-19.10.0-linux-x64-installer.run --installer-language en --prefix ./installbuilder --mode unattended
echo "${{ secrets.IBLICENSE }}" > ./installbuilder/license.xml
- name: Prepare Upgrade Installer
run: |
tsc util/prepare
node util/prepare
- name: Create Upgrade Installer (MacOS 64bit)
run: |
installbuilder/bin/builder build installer_assets/PreMiD-Upgrade.xml osx
- name: Create Upgrade Installer (Windows)
run: |
installbuilder/bin/builder build installer_assets/PreMiD-Upgrade.xml windows
- name: Upload files
env:
SSHHOST: ${{ secrets.SSHHOST }}
SSHUSERNAME: ${{ secrets.SSHUSERNAME }}
SSHPASSWORD: ${{ secrets.SSHPASSWORD }}
run: |
tsc util/uploadFile util/zip
node util/uploadFile installer_assets/update.ini /home/PreMiD/download/util/update.ini
node util/uploadFile dist/installer/upgrader.exe /home/PreMiD/download/upgrader.exe
node util/uploadFile dist/installer/upgrader.app.zip /home/PreMiD/download/util/upgrader.app.zip
- name: Finalize build
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSHHOST }}
username: ${{ secrets.SSHUSERNAME }}
password: ${{ secrets.SSHPASSWORD }}
script: |
cd /home/PreMiD/download/util
unzip upgrader.app.zip
tar -czvf upgrader.app.tgz upgrader.app
mv upgrader.app.tgz ../
rm -rf upgrader.app upgrader.app.zip
unzip windows-latest.zip
cp updater.exe windows-latest/PreMiD-win32-x64/updater.exe
cp update.ini windows-latest/PreMiD-win32-x64/update.ini
cp updater.exe windows-latest/PreMiD-win32-ia32/updater.exe
cp update.ini windows-latest/PreMiD-win32-ia32/update.ini
cd windows-latest/PreMiD-win32-x64/
zip -r ../../PreMiD-win32-x64.zip .
mv ../../PreMiD-win32-x64.zip /home/PreMiD/download/
cd ../PreMiD-win32-ia32/
zip -r ../../PreMiD-win32-x86.zip .
mv ../../PreMiD-win32-x86.zip /home/PreMiD/download/
cd ../..
rm -rf windows-latest windows-latest.zip
unzip macOS-latest.zip
cp -r updater.app macOS-latest/PreMiD-darwin-x64/updater.app
cp update.ini macOS-latest/PreMiD-darwin-x64/update.ini
cd macOS-latest/PreMiD-darwin-x64/
zip -r ../../PreMiD-darwin-x64.zip .
mv ../../PreMiD-darwin-x64.zip /home/PreMiD/download/
cd ../..
rm -rf macOS-latest macOS-latest.zip

14
.gitignore vendored
View File

@@ -2,9 +2,15 @@ node_modules
out
dist
tmp
lib
data
.vscode
.env
.yarn/*
!.yarn/releases
!.yarn/plugins
.pnp.*
src/package-lock.json
src/package.json
@@ -13,4 +19,10 @@ src/update.ini
*.exe
*.app
*.xml.backup
*.js
*.js
!*.config.js
coverage
*.tsbuildinfo
.DS_Store
*.log

2
.husky/commit-msg Normal file
View File

@@ -0,0 +1,2 @@
#!/bin/sh
pnpm exec commitlint --edit $1

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
shamefully-hoist=true

3
.prettierignore Normal file
View File

@@ -0,0 +1,3 @@
*.js
*.ts
*.json

View File

@@ -1,22 +0,0 @@
export default interface ExtensionSettings {
/**
* If extension is enabled
*/
enabled: boolean;
/**
* Autolaunch enabled
*/
autoLaunch: boolean;
/**
* Media keys enabled
*/
mediaKeys: boolean;
/**
* title menubar (TrayTitle)
*/
titleMenubar: boolean;
/**
* language of extension
*/
language: string;
}

View File

@@ -1,16 +0,0 @@
import * as Discord from "discord-rpc";
export default interface Presence {
/**
* Client ID of presence
*/
clientId: string;
/**
* Rich Procedual call connection
*/
rpc: Discord.Client;
/**
* Connection ready?
*/
ready: Boolean;
}

View File

@@ -1,33 +0,0 @@
import * as Discord from "discord-rpc";
export default interface PresenceData {
/**
* Client ID of presence
*/
clientId: string;
/**
* Tray title to be shown in Mac OS tray
*/
trayTitle: string;
/**
* service name of presence
* @deprecated
*/
service: string;
/**
* Determines if the service is currently playing something back or not, if false it will automatically hide after 1 minute
*/
playback: boolean;
/**
* Discord Presence which gets sent directly to Discord app
*/
presenceData: Discord.Presence;
/**
* Determines if the service should be hidden (clearActivity)
*/
hidden: boolean;
/**
* Determines if the service is mediaKey able / uses them
*/
mediaKeys: boolean;
}

View File

@@ -1 +1 @@
* @Timeraa
* @Timeraa

View File

@@ -2,65 +2,38 @@
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at contact@premid.app or by contacting a staff member on our [Discord server](https://discord.gg/WvfVZ8T). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@premid.app or by contacting a staff member on our [Discord server](https://discord.premid.app). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

36
Dockerfile Normal file
View File

@@ -0,0 +1,36 @@
FROM gplane/pnpm:node20-alpine AS base
RUN corepack enable
ARG SERVICE
FROM base AS build
WORKDIR /app
COPY . /app
RUN pnpm i --frozen-lockfile
RUN if [ "$SERVICE" != "website" ]; then pnpm run -r codegen; fi
RUN if [ "$SERVICE" != "website" ]; then pnpm run build; fi
RUN if [ "$SERVICE" == "website" ]; then pnpm --filter @premid/website run build; fi
RUN if [ "$SERVICE" != "website" ]; then pnpm --filter @premid/${SERVICE} deploy --prod /prod/${SERVICE}; fi
FROM node:20-alpine AS prod
ARG SERVICE
WORKDIR /app
COPY --from=build /prod/${SERVICE} ./
ENV PORT=80
EXPOSE 80
CMD ["npm", "start"]
FROM node:20-alpine AS website
WORKDIR /app
ENV PORT=80
COPY --from=build /app/apps/website/.output /app
EXPOSE 80
CMD ["node", "server/index.mjs"]

View File

@@ -370,4 +370,4 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.
defined by the Mozilla Public License, v. 2.0.

View File

@@ -1,48 +1,63 @@
<div align="center">
<img width="1280" height="800" alt="Chrome Global Screenshots" src="https://github.com/user-attachments/assets/1ea21f91-7499-43de-8b9a-3344d1c0fe48" />
<img src=".github/Logo.png" width="150px" draggable="false"><br>
# <img src="https://cdn.rcd.gg/PreMiD.png" height="40px" /> PreMiD
# PreMiD
[![Crowdin](https://badges.crowdin.net/premid/localized.svg)](https://crowdin.com/project/premid)
## Your Rich Presence for web services!
PreMiD is a simple, configurable utility that lets you show what you're doing on the web in your Discord profile. Whether you're watching videos, listening to music, browsing your favorite sites, or playing browser games, PreMiD helps you share your online activities with your friends through Discord's Rich Presence feature.
![GitHub](https://img.shields.io/github/license/PreMiD/PreMiD?style=for-the-badge)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/premid/premid?label=Application&style=for-the-badge)
![Chrome Web Store](https://img.shields.io/chrome-web-store/v/agjnjboanicjcpenljmaaigopkgdnihi?label=Extension&style=for-the-badge)
[![Chrome Web Store](https://img.shields.io/chrome-web-store/d/agjnjboanicjcpenljmaaigopkgdnihi.svg?label=Chrome&logo=google%20chrome&logoColor=white&colorA=4285F4&style=for-the-badge)](https://chrome.google.com/webstore/detail/premid/agjnjboanicjcpenljmaaigopkgdnihi)
![Website](https://img.shields.io/website?down_message=offline&label=PreMiD.app&style=for-the-badge&up_message=online&url=https%3A%2F%2Fpremid.app)
![Twitter Follow](https://img.shields.io/twitter/follow/PreMiDapp?label=PreMiD&style=social)
![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/premid?label=PreMiD&style=social)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FPreMiD%2FPreMiD.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FPreMiD%2FPreMiD?ref=badge_shield)
## Getting Started
<img src=".github/example.png" draggable="false"><br>
**Looking to use PreMiD?** Head over to our [official website](https://premid.app) to add the browser extension!
# About
**Want to create your own Activity?** All of our community-created activities are open source and available at [github.com/PreMiD/Activities](https://github.com/PreMiD/Activities). We'd love to see what you create!
**PreMiD** is a simple, configurable utility that allows you to show what you're doing on the web in your Discord **now playing status**. It supports many different websites, and will support multiple users watching the same content simultaneously in an upcoming update.
## Features
# Features
- 🎵 Show what you're listening to on YouTube and more (Spotify has native Discord support)
- 📺 Display what you're watching on Netflix, Disney+, Twitch, and hundreds of other sites
- 🎮 Share your browser game activity with friends
- ✨ Fully customizable with thousands of user-created Activities
- 🌍 Available in multiple languages thanks to our amazing community translators
· Displays your current web service in Discord as your status.<br>
· Grants full control over Presences.<br>
· Supports over 100 web services, still rising!<br>
· _Watch parties and more are coming soon!_
## Community
# Installation/Troubleshooting
PreMiD is built by the community, for the community. Join us and help make PreMiD even better!
### Installation instructions, Troubleshooting guides etc. can be found in our [**Wiki**](https://wiki.premid.app).
- **Activities Repository**: [github.com/PreMiD/Activities](https://github.com/PreMiD/Activities)
- **Documentation**: [docs.premid.app](https://docs.premid.app)
- **Discord Server**: [discord.premid.app](https://discord.premid.app)
- **Feedback & Bug Reports**: [feedback.premid.app](https://feedback.premid.app)
# Support us
## Contributing
<div>
<a target="_blank" href="https://www.patreon.com/bePatron?u=4610890" data-patreon-widget-type="become-patron-button" title="Support me on Patreon!">
<img height="75px" draggable="false" src=".github/Patreon.png">
</a>
<a target="_blank" href="https://discord.gg/WvfVZ8T" title="Join our Discord!">
<img height="75px" draggable="false" src="https://discordapp.com/api/guilds/493130730549805057/widget.png?style=banner2" alt="Join my Discord!">
</a>
</div>
We love community contributions! While **PreMiD's Activities are fully open source** (the code that makes websites show up on your profile), the PreMiD extension is not currently open source. This decision allows our small team to move fast and iterate quickly to deliver the best experience possible.
You can contribute by:
- Creating new Activities at [github.com/PreMiD/Activities](https://github.com/PreMiD/Activities)
- Helping translate PreMiD on [Crowdin](https://crowdin.com/project/premid)
- Reporting bugs and suggesting features at [feedback.premid.app](https://feedback.premid.app)
- Supporting the project and spreading the word!
### Release
To release a new version of a package, run the following command:
```bash
cd apps/<app>
pnpm bumpp -y -t <app>-v
```
Replace `<app>` with the name of the package you want to release. For example, to release a new version of the `schema-server` package, you would run:
```bash
cd apps/schema-server
pnpm bumpp -y -t schema-server-v
```
This will use bumpp to bump the version of the package in the `package.json` file, create a tag for the new version, and push the changes to the remote repository.
## License
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FPreMiD%2FPreMiD.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FPreMiD%2FPreMiD?ref=badge_large)
This project is licensed under the [MPL-2.0 License](LICENSE).

3
apps/pd/README.md Normal file
View File

@@ -0,0 +1,3 @@
# @premid/pd
A simple url shortener service to shorten urls longer than 256 characters.

12
apps/pd/environment.d.ts vendored Normal file
View File

@@ -0,0 +1,12 @@
declare namespace NodeJS {
export interface ProcessEnv {
NODE_ENV?: "development" | "production" | "test";
REDIS_URL?: string;
MAX_FILE_SIZE?: string;
PORT?: string;
HOST?: string;
RATELIMIT_MAX?: string;
RATELIMIT_WINDOW?: string;
BASE_URL?: string;
}
}

BIN
apps/pd/fixtures/1x1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

BIN
apps/pd/fixtures/test.mp4 Normal file

Binary file not shown.

34
apps/pd/package.json Normal file
View File

@@ -0,0 +1,34 @@
{
"name": "@premid/pd",
"type": "module",
"version": "1.2.4",
"private": true,
"description": "A small service to shorten image urls to get around Discord's 256 character limit",
"license": "MPL-2.0",
"main": "dist/index.js",
"files": [
"dist"
],
"scripts": {
"start": "node --enable-source-maps .",
"dev": "node --watch --enable-source-maps ."
},
"dependencies": {
"@fastify/cors": "^9.0.1",
"@fastify/multipart": "^8.1.0",
"@fastify/rate-limit": "^9.1.0",
"@keyv/redis": "^2.8.4",
"fastify": "^4.26.0",
"file-type": "^19.0.0",
"got": "^14.2.0",
"ioredis": "^5.3.2",
"ipaddr.js": "^2.1.0",
"keyv": "^4.5.4",
"mime-types": "^2.1.35",
"nanoid": "^5.0.5"
},
"devDependencies": {
"@types/mime-types": "^2.1.4",
"form-data": "^4.0.0"
}
}

View File

@@ -0,0 +1,9 @@
import { expect, it } from "vitest";
import createKeyv from "./createKeyv.js";
it("should return keyv instance", () => {
const keyv = createKeyv();
expect(keyv).toStrictEqual(expect.any(Object));
});

View File

@@ -0,0 +1,28 @@
import process from "node:process";
import KeyvRedis from "@keyv/redis";
import Keyv from "keyv";
import redis from "../redis.js";
export default function createKeyv() {
let options: Keyv.Options<string> | undefined;
/* c8 ignore next 8 */
if (process.env.REDIS_SENTINELS) {
options = {
namespace: "pd",
store: new KeyvRedis(redis),
};
}
const keyv = new Keyv<string>(
options,
);
/* c8 ignore next 3 */
keyv.on("error", (error) => {
console.error("Keyv connection error:", error);
});
return keyv;
}

View File

@@ -0,0 +1,30 @@
/* eslint-disable no-console */
import { hostname } from "node:os";
import process from "node:process";
import { Redis } from "ioredis";
/* c8 ignore start */
export default function createRedis(): Redis {
const redis = new Redis({
connectionName: `pd-${hostname()}-${process.pid.toString()}`,
lazyConnect: true,
name: "mymaster",
sentinels: process.env.REDIS_SENTINELS?.split(",").map(s => ({
host: s,
port: 26_379,
})),
});
/* c8 ignore next 3 */
redis.on("error", (error) => {
console.error("Redis error", error);
});
/* c8 ignore next 3 */
redis.on("connect", () => {
console.log("Redis connected");
});
return redis;
}

View File

@@ -0,0 +1,10 @@
import { describe, expect, it } from "vitest";
import { createServer } from "../functions/createServer.js";
describe("createServer", () => {
it("should return a fastify instance", async () => {
const server = await createServer();
expect(server).toBeDefined();
});
});

View File

@@ -0,0 +1,62 @@
import process from "node:process";
import cors from "@fastify/cors";
import fastifyMultipart from "@fastify/multipart";
import ratelimit from "@fastify/rate-limit";
import fastify from "fastify";
import type { Redis } from "ioredis";
import createFromBase64 from "../routes/createFromBase64.js";
import createFromImage from "../routes/createFromImage.js";
import createShortenedLink from "../routes/createShortenedLink.js";
import getFullLink from "../routes/getFullLink.js";
export async function createServer(redis?: Redis) {
const server = fastify({
trustProxy: true,
});
await server.register(cors, {
methods: ["GET"],
origin: "*",
});
await server.register(ratelimit, {
max: Number.parseInt(process.env.RATELIMIT_MAX ?? "25"),
nameSpace: "pd-ratelimit-",
redis,
timeWindow: process.env.RATELIMIT_WINDOW ?? "1 minute",
});
await server.register(fastifyMultipart, {
limits: {
fileSize: Number.parseInt(process.env.MAX_FILE_SIZE ?? (5 * 1024 * 1024).toString()),
files: 1,
},
});
server.post("/create/image", createFromImage);
server.post("/create/base64", createFromBase64);
server.get("/create/*", createShortenedLink);
server.get(
"/*",
{
config: {
rateLimit: false,
},
},
getFullLink,
);
server.get(
"/health",
{
config: {
rateLimit: false,
},
},
(_, reply) => reply.status(204).send(),
);
return server;
}

View File

@@ -0,0 +1,30 @@
import got from "got";
import { describe, expect, it, vi } from "vitest";
describe.concurrent("getGoogleAddresses", () => {
it("should return an array of CIDR objects", async () => {
const { default: getGoogleAddresses } = await import("./getGoogleAddresses.js");
vi.spyOn(got, "get").mockResolvedValue({
body: JSON.stringify({
prefixes: [
{ ipv4Prefix: "0.0.0.0" },
{ ipv6Prefix: "0000:0000:0000::/16" },
],
}),
});
const result = await getGoogleAddresses();
expect(result).toMatchInlineSnapshot(`
[
{
"ipv4Prefix": "0.0.0.0",
},
{
"ipv6Prefix": "0000:0000:0000::/16",
},
]
`);
});
});

View File

@@ -0,0 +1,24 @@
import got from "got";
import type { CIDR } from "./isInCidRange.js";
export default async function getGoogleAddresses(): Promise<CIDR> {
const { body } = await got.get("https://www.gstatic.com/ipranges/cloud.json");
const result = JSON.parse(body) as GoogleResult;
return result.prefixes.map(({ ipv4Prefix, ipv6Prefix }) => {
return ipv6Prefix ? { ipv6Prefix } : { ipv4Prefix };
});
}
interface GoogleResult {
syncToken: string;
creationTime: string;
prefixes: GoogleIP[];
}
interface GoogleIP {
ipv6Prefix: string;
ipv4Prefix: string;
service: string;
scope: string;
}

View File

@@ -0,0 +1,31 @@
import { expect, it } from "vitest";
import isInCIDRRange from "./isInCidRange.js";
it("isInCIDRRange - IPv4 - in range", () => {
const CIDRs = [{ ipv4Prefix: "192.0.2.0/24" }];
const ip = "192.0.2.123";
const result = isInCIDRRange(CIDRs, ip);
expect(result).toBe(true);
});
it("isInCIDRRange - IPv4 - not in range", () => {
const CIDRs = [{ ipv4Prefix: "192.0.2.0/24" }];
const ip = "192.0.3.123";
const result = isInCIDRRange(CIDRs, ip);
expect(result).toBe(false);
});
it("isInCIDRRange - IPv6 - in range", () => {
const CIDRs = [{ ipv6Prefix: "2001:db8::/32" }];
const ip = "2001:db8::1234";
const result = isInCIDRRange(CIDRs, ip);
expect(result).toBe(true);
});
it("isInCIDRRange - IPv6 - not in range", () => {
const CIDRs = [{ ipv6Prefix: "2001:db8::/32" }];
const ip = "2001:db9::1234";
const result = isInCIDRRange(CIDRs, ip);
expect(result).toBe(false);
});

View File

@@ -0,0 +1,29 @@
import ipaddr from "ipaddr.js";
export default function isInCIDRRange(CIDRs: CIDR, ip: string) {
const parsed = ipaddr.parse(ip);
for (const CIDR of CIDRs.filter((c) => {
if (parsed.kind() === "ipv4" && "ipv4Prefix" in c)
return true;
else if (parsed.kind() === "ipv6" && "ipv6Prefix" in c)
return true;
else return false;
})) {
const check = parsed.match(ipaddr.parseCIDR("ipv4Prefix" in CIDR ? CIDR.ipv4Prefix : CIDR.ipv6Prefix));
if (check)
return check;
}
return false;
}
export type CIDR = (
| {
ipv4Prefix: string;
}
| {
ipv6Prefix: string;
}
)[];

View File

@@ -0,0 +1,3 @@
import getGoogleAddresses from "./functions/getGoogleAddresses.js";
export default await getGoogleAddresses();

14
apps/pd/src/index.test.ts Normal file
View File

@@ -0,0 +1,14 @@
import { expect, it } from "vitest";
import { createServer } from "./functions/createServer.js";
it("/health", async () => {
const server = await createServer();
const result = await server.inject({
method: "GET",
url: "/health",
});
expect(result.statusCode).toBe(204);
expect(result.body).toBe("");
});

20
apps/pd/src/index.ts Normal file
View File

@@ -0,0 +1,20 @@
/* eslint-disable no-console */
/* c8 ignore start */
import process from "node:process";
import { createServer } from "./functions/createServer.js";
import redis from "./redis.js";
if (!process.env.REDIS_SENTINELS)
console.log("WARNING: No REDIS_SENTINELS environment variable set");
if (process.env.NODE_ENV === "production" && !process.env.BASE_URL)
throw new Error("BASE_URL environment variable is required in production");
export const server = await createServer(redis);
const url = await server.listen({
host: process.env.HOST ?? "0.0.0.0",
port: Number.parseInt(process.env.PORT ?? "80"),
});
console.log(`Server listening at ${url}`);
// TODO Make proper error codes & json responses

5
apps/pd/src/keyv.ts Normal file
View File

@@ -0,0 +1,5 @@
import createKeyv from "./functions/createKeyv.js";
export const keyv = createKeyv();
export const ttl = 30 * 60 * 1000;

3
apps/pd/src/redis.ts Normal file
View File

@@ -0,0 +1,3 @@
import createRedis from "./functions/createRedis.js";
export default createRedis();

View File

@@ -0,0 +1,94 @@
import { describe, it } from "vitest";
import { createServer } from "../functions/createServer.js";
describe.concurrent("createFromBase64", async () => {
const server = await createServer();
it("should return a 400 when the body is not present", async ({ expect }) => {
const result = await server.inject({
method: "POST",
url: "/create/base64",
});
expect(result.statusCode).toBe(400);
expect(result.body).toMatchInlineSnapshot("\"Invalid body\"");
});
it("should return a 400 when the body is not a string", async ({ expect }) => {
const result = await server.inject({
method: "POST",
payload: new Blob([]),
url: "/create/base64",
});
expect(result.statusCode).toBe(400);
expect(result.body).toMatchInlineSnapshot("\"Invalid body\"");
});
it("should return a 400 when the body is not a valid base64 string", async ({ expect }) => {
const result = await server.inject({
headers: {
"Content-Type": "text/plain",
},
method: "POST",
payload: "data:image/png;base64t",
url: "/create/base64",
});
expect(result.statusCode).toBe(400);
expect(result.body).toMatchInlineSnapshot("\"Invalid base64 string\"");
});
it("should return a 400 when the base64 string is not a valid image", async ({ expect }) => {
const result = await server.inject({
headers: {
"Content-Type": "text/plain",
},
method: "POST",
payload: "data:image/sv;base64,a",
url: "/create/base64",
});
expect(result.statusCode).toBe(400);
expect(result.body).toMatchInlineSnapshot("\"Invalid base64 string\"");
const result2 = await server.inject({
headers: {
"Content-Type": "text/plain",
},
method: "POST",
payload: "data:image/svg+xml;base64,s",
url: "/create/base64",
});
expect(result2.statusCode).toBe(400);
expect(result2.body).toMatchInlineSnapshot("\"Supported types: png, jpeg, jpg, gif, webp\"");
});
it("should return a 200 when the base64 string is valid", async ({ expect }) => {
const result = await server.inject({
headers: {
"Content-Type": "text/plain",
},
method: "POST",
payload: "data:image/png;base64,s",
url: "/create/base64",
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
const result2 = await server.inject({
headers: {
"Content-Type": "text/plain",
},
method: "POST",
payload: "data:image/png;base64,s",
url: "/create/base64",
});
expect(result2.statusCode).toBe(200);
expect(result2.body).toStrictEqual(expect.any(String));
});
});

View File

@@ -0,0 +1,47 @@
import crypto from "node:crypto";
import process from "node:process";
import mime from "mime-types";
import { nanoid } from "nanoid";
import type { RouteHandlerMethod } from "fastify";
import { keyv, ttl } from "../keyv.js";
const handler: RouteHandlerMethod = async (request, reply) => {
const { body } = request;
if (!body)
return reply.status(400).send("Invalid body");
if (typeof body !== "string")
return reply.status(400).send("Invalid body");
const matches = body.match(/^data:(.+);base64,(.+)/);
if (!matches || matches.length === 0)
return reply.status(400).send("Invalid base64 string");
const type = mime.extension(matches.at(1)!);
if (!type)
return reply.status(400).send("Invalid base64 string");
if (!["png", "jpeg", "jpg", "gif", "webp"].includes(type))
return reply.status(400).send("Supported types: png, jpeg, jpg, gif, webp");
const hash = crypto.createHash("sha256").update(body).digest("hex");
const existingUrl = await keyv.get(hash);
if (existingUrl) {
return reply.send(process.env.BASE_URL! + existingUrl);
}
const uniqueId = `${nanoid(10)}.${type}`;
await keyv.set(hash, uniqueId, ttl);
await keyv.set(uniqueId, body, ttl);
return reply.send(process.env.BASE_URL! + uniqueId);
};
export default handler;

View File

@@ -0,0 +1,106 @@
import { Buffer } from "node:buffer";
import { readFile } from "node:fs/promises";
import type { RequestOptions } from "node:http";
import type { AddressInfo } from "node:net";
import { afterAll, beforeAll, describe, it } from "vitest";
import { createServer } from "../functions/createServer.js";
describe.concurrent("createFromImage", async () => {
const server = await createServer();
const form = new FormData();
const defaultRequestOptions: RequestOptions = {
hostname: "localhost",
method: "POST",
path: "/create/image",
protocol: "http:",
};
let url: string;
beforeAll(async () => {
url = await server.listen();
defaultRequestOptions.port = (server.server.address() as AddressInfo).port;
});
afterAll(() => {
void server.close();
});
it("should return a 400 when request is not multipart", async ({ expect }) => {
const result = await fetch(`${url}/create/image`, {
method: "POST",
});
expect(result.status).toBe(400);
expect(await result.text()).toMatchInlineSnapshot("\"Request is not multipart\"");
});
it("should return a 400 status code when no file is provided", async ({ expect }) => {
const result = await fetch(`${url}/create/image`, {
body: form,
method: "POST",
});
expect(result.status).toBe(400);
expect(await result.text()).toMatchInlineSnapshot("\"Invalid file\"");
});
it("should return a 400 status code when the file is invalid", async ({ expect }) => {
form.set("file", Buffer.alloc(1024 * 1024 * 2));
const result = await fetch(`${url}/create/image`, {
body: form,
method: "POST",
});
expect(result.status).toBe(400);
expect(await result.text()).toMatchInlineSnapshot("\"Invalid file\"");
form.set("file", new Blob([new Uint8Array(1024 * 1024 * 2)]));
const result2 = await fetch(`${url}/create/image`, {
body: form,
method: "POST",
});
expect(result2.status).toBe(400);
expect(await result2.text()).toMatchInlineSnapshot("\"Invalid file\"");
});
it("should return a 400 status code when the file is not an image", async ({ expect }) => {
form.set("file", new Blob([await readFile(new URL("../../fixtures/test.mp4", import.meta.url))]));
const result = await fetch(`${url}/create/image`, {
body: form,
method: "POST",
});
expect(result.status).toBe(400);
expect(await result.text()).toMatchInlineSnapshot("\"Only png, jpeg, jpg, gif and webp are supported\"");
});
it("should return a 200 status code when the file is valid", async ({ expect }) => {
form.set("file", new Blob([await readFile(new URL("../../fixtures/1x1.png", import.meta.url))]));
const result = await fetch(`${url}/create/image`, {
body: form,
method: "POST",
});
expect(result.status).toBe(200);
expect(await result.text()).toStrictEqual(expect.any(String));
});
it("should return a 200 status code when the file is valid and the same file is uploaded again", async ({ expect }) => {
form.set("file", new Blob([await readFile(new URL("../../fixtures/1x1.png", import.meta.url))]));
const result = await fetch(`${url}/create/image`, {
body: form,
method: "POST",
});
expect(result.status).toBe(200);
expect(await result.text()).toStrictEqual(expect.any(String));
});
});

View File

@@ -0,0 +1,53 @@
import crypto from "node:crypto";
import process from "node:process";
import { fileTypeFromBuffer } from "file-type";
import { nanoid } from "nanoid";
import type { RouteHandlerMethod } from "fastify";
import { keyv, ttl } from "../keyv.js";
const handler: RouteHandlerMethod = async (request, reply) => {
if (!request.isMultipart())
return reply.status(400).send("Request is not multipart");
const file = await request.file();
if (!file)
return reply.status(400).send("Invalid file");
const type = await fileTypeFromBuffer(await file.toBuffer());
if (!type)
return reply.status(400).send("Invalid file");
if (![
"image/png",
"image/jpeg",
"image/jpg",
"image/gif",
"image/webp",
].includes(type.mime)) {
return reply.status(400).send("Only png, jpeg, jpg, gif and webp are supported");
}
const buffer = await file.toBuffer();
const body = `data:${type.mime};base64,${buffer.toString("base64")}`;
const hash = crypto.createHash("sha256").update(body).digest("hex");
const existingUrl = await keyv.get(hash);
if (existingUrl) {
return reply.send(process.env.BASE_URL! + existingUrl);
}
const uniqueId = `${nanoid(10)}.${type.ext}`;
await Promise.all([
keyv.set(hash, uniqueId, ttl),
keyv.set(uniqueId, body, ttl),
]);
return reply.send(process.env.BASE_URL! + uniqueId);
};
export default handler;

View File

@@ -0,0 +1,152 @@
import { describe, expect, it } from "vitest";
import { createServer } from "../functions/createServer.js";
describe.concurrent("/create", async () => {
const server = await createServer();
it("should return a 400 status code when no URL is provided", async () => {
const result = await server.inject({
method: "GET",
url: "/create/",
});
expect(result.statusCode).toBe(400);
expect(result.body).toMatchInlineSnapshot("\"Invalid URL\"");
});
it("should return a 400 status code when the URL is too short", async () => {
const result = await server.inject({
method: "GET",
url: "/create/https://www.google.com",
});
expect(result.statusCode).toBe(400);
expect(result.body).toMatchInlineSnapshot("\"URL is too short\"");
});
it("should return a 400 status code when the URL is invalid", async () => {
const result = await server.inject({
method: "GET",
url: `/create/file://www.googl${"e".repeat(256)}`,
});
expect(result.statusCode).toBe(400);
expect(result.body).toMatchInlineSnapshot("\"Invalid URL\"");
});
it("should return a 200 status code when the URL is valid", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.googl${"e".repeat(256)}.com`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
});
it("should return a 200 status code when the URL is valid and already exists", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.googl${"d".repeat(256)}.com`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
const { body } = result;
const result2 = await server.inject({
method: "GET",
url: `/create/https://www.googl${"d".repeat(256)}.com`,
});
expect(result2.statusCode).toBe(200);
expect(result2.body).toStrictEqual(body);
});
it("should preserve file extension when URL has a valid image extension", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/image.png`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).toMatch(/\.png$/);
});
it("should preserve file extension when URL has .jpg extension", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/photo.jpg`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).toMatch(/\.jpg$/);
});
it("should preserve file extension when URL has .webp extension", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/image.webp`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).toMatch(/\.webp$/);
});
it("should preserve file extension when URL has .png with query parameters", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/image.png?ref=example`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).toMatch(/\.png$/);
});
it("should preserve file extension when URL has .gif with complex query parameters", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/animated.gif?size=large&quality=high`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).toMatch(/\.gif$/);
});
it("should not preserve file extension when URL has invalid extension", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/document.pdf`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).not.toMatch(/\.pdf$/);
});
it("should work normally when URL has no file extension", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/page`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).not.toMatch(/\.\w+$/);
});
it("should handle case-insensitive extensions", async () => {
const result = await server.inject({
method: "GET",
url: `/create/https://www.exampl${"e".repeat(256)}.com/image.PNG`,
});
expect(result.statusCode).toBe(200);
expect(result.body).toStrictEqual(expect.any(String));
expect(result.body).toMatch(/\.png$/); //* Should be lowercase in result
});
});

View File

@@ -0,0 +1,47 @@
import crypto from "node:crypto";
import process from "node:process";
import { nanoid } from "nanoid";
import type { RouteHandlerMethod } from "fastify";
import { keyv, ttl } from "../keyv.js";
const handler: RouteHandlerMethod = async (request, reply) => {
const url = request.url.replace("/create/", "").trim();
if (url.length === 0)
return reply.status(400).send("Invalid URL");
if (url.length < 256)
return reply.status(400).send("URL is too short");
const urlObject = new URL(url);
if (!["http:", "https:"].includes(urlObject.protocol))
return reply.status(400).send("Invalid URL");
//* Extract file extension from URL pathname
const pathname = urlObject.pathname;
const extensionMatch = pathname.match(/\.([^./]+)$/);
const extension = extensionMatch?.[1]?.toLowerCase() ?? null;
//* Check if extension is in allowed list
const allowedExtensions = ["png", "jpeg", "jpg", "gif", "webp"];
const hasValidExtension = extension && allowedExtensions.includes(extension);
const hash = crypto.createHash("sha256").update(url).digest("hex");
const existingShortenedUrl = await keyv.get(hash);
if (existingShortenedUrl) {
await Promise.all([keyv.set(hash, existingShortenedUrl, ttl), keyv.set(existingShortenedUrl, url, ttl)]);
return reply.send(process.env.BASE_URL! + existingShortenedUrl);
}
//* Create unique ID with extension if valid, otherwise without extension
const uniqueId = hasValidExtension ? `${nanoid(10)}.${extension}` : nanoid(10);
await Promise.all([keyv.set(hash, uniqueId, ttl), keyv.set(uniqueId, url, ttl)]);
return reply.send(process.env.BASE_URL! + uniqueId);
};
export default handler;

View File

@@ -0,0 +1,128 @@
import { Buffer } from "node:buffer";
import { readFile } from "node:fs/promises";
import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
import { createServer } from "../functions/createServer.js";
import * as isInCIDRRange from "../functions/isInCidRange.js";
describe("getFullLink", async () => {
const server = await createServer();
let url: string;
beforeAll(async () => {
url = await server.listen();
});
afterAll(async () => {
await server.close();
});
it("should fail if not a Google Cloud IP", async () => {
const result = await server.inject({
headers: {
"cf-connecting-ip": "",
},
url: "/1234567890",
});
expect(result.statusCode).toBe(401);
});
it("should fail if not a valid ID", async () => {
vi.spyOn(isInCIDRRange, "default").mockReturnValueOnce(true);
const result = await server.inject({
headers: {
"cf-connecting-ip": "",
},
url: "/123",
});
vi.spyOn(isInCIDRRange, "default").mockReturnValueOnce(true);
const result2 = await server.inject({
headers: {
"cf-connecting-ip": "",
},
url: "/1234567890.",
});
expect(result.statusCode).toBe(404);
expect(result2.statusCode).toBe(404);
});
it("should redirect to the correct URL", async () => {
vi.spyOn(isInCIDRRange, "default").mockReturnValueOnce(true);
const { body } = await server.inject({
url: `/create/https://${"a".repeat(256)}`,
});
expect(body).toStrictEqual(expect.any(String));
const result = await server.inject({
headers: {
"cf-connecting-ip": "",
},
url: body,
});
expect(result.statusCode).toBe(302);
expect(result.headers.location).toBe(`https://${"a".repeat(256)}`);
});
it("should return the correct image", async () => {
const imageBuffer = await readFile(new URL("../../fixtures/test.mp4", import.meta.url));
const imageBase64 = `data:image/png;base64,${imageBuffer.toString("base64")}`;
const { body } = await server.inject({
headers: {
"Content-Type": "text/plain",
},
method: "POST",
payload: imageBase64,
url: "/create/base64",
});
expect(body).toStrictEqual(expect.any(String));
vi.spyOn(isInCIDRRange, "default").mockReturnValueOnce(true);
const result = await fetch(`${url}${body}`, {
headers: {
"cf-connecting-ip": "",
},
});
expect(result.status).toBe(200);
expect(result.headers.get("content-type")).toBe("image/png");
expect(Buffer.from(await result.arrayBuffer())).toStrictEqual(imageBuffer);
});
it("should fetch and return PNG image instead of redirecting for URLs with .png extension", async () => {
const testUrl = `https://cdn.rcd.gg/PreMiD/resources/reading.png?v=${"a".repeat(250)}`;
const { body } = await server.inject({
url: `/create/${testUrl}`,
});
expect(body).toStrictEqual(expect.any(String));
vi.spyOn(isInCIDRRange, "default").mockReturnValueOnce(true);
const result = await fetch(`${url}${body}`, {
headers: {
"cf-connecting-ip": "",
},
});
expect(result.status).toBe(200);
expect(result.headers.get("content-type")).toMatch(/^image\//);
//* Should return image data, not redirect
expect(result.headers.get("location")).toBeNull();
//* Verify we got actual image data
const imageBuffer = await result.arrayBuffer();
expect(imageBuffer.byteLength).toBeGreaterThan(0);
});
});

View File

@@ -0,0 +1,93 @@
import { Buffer } from "node:buffer";
import crypto from "node:crypto";
import type { RouteHandlerMethod } from "fastify";
import isInCIDRRange from "../functions/isInCidRange.js";
import googleCIDRs from "../googleCIDRs.js";
import { keyv, ttl } from "../keyv.js";
const handler: RouteHandlerMethod = async (request, reply) => {
/* c8 ignore next 2 */
const ip = request.headers["cf-connecting-ip"]?.toString() || request.socket.remoteAddress || request.ip;
if (
!isInCIDRRange(
googleCIDRs,
ip,
)
) {
return reply.status(401).send("Not a Google Cloud IP");
}
const id = (request.params as { "*": string })["*"].trim();
if (id.split(".")[0]?.length !== 10)
return reply.code(404).send("Invalid ID");
const url = await keyv.get(id);
if (!url)
return reply.code(404).send("Unknown ID");
const hash = crypto.createHash("sha256").update(url).digest("hex");
await Promise.all([keyv.set(hash, id, ttl), keyv.set(id, url, ttl)]);
//* If it is a base64 string, decode and return the image
if (url.startsWith("data:image")) {
const image = Buffer.from(
url.replace(/^data:image\/\w+;base64,/, ""),
"base64",
);
const mime = url.split(";")[0]!.split(":")[1]!;
return reply.type(mime).send(image);
}
//* Check if URL has a valid image extension
const urlObject = new URL(url);
const pathname = urlObject.pathname;
const extensionMatch = pathname.match(/\.([^./]+)$/);
const extension = extensionMatch?.[1]?.toLowerCase() ?? null;
const allowedExtensions = ["png", "jpeg", "jpg", "gif", "webp"];
const hasValidImageExtension = extension && allowedExtensions.includes(extension);
//* If URL has valid image extension, fetch and return the image
if (hasValidImageExtension) {
try {
const response = await fetch(url, {
headers: {
"Accept": "image/*",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Accept-Encoding": "gzip, deflate, br",
"Cache-Control": "no-cache",
"Pragma": "no-cache",
"Referer": urlObject.origin, //* Set referer to the origin domain to bypass hotlink protection
"Sec-Fetch-Dest": "image",
"Sec-Fetch-Mode": "no-cors",
"Sec-Fetch-Site": "cross-site",
},
});
if (!response.ok) {
return reply.code(404).send("Image not found");
}
const contentType = response.headers.get("content-type") || `image/${extension}`;
const imageBuffer = Buffer.from(await response.arrayBuffer());
return reply.type(contentType).send(imageBuffer);
}
catch {
//* If fetch fails, fall back to redirect
return reply.redirect(url);
}
}
//* For all other URLs, redirect to them
return reply.redirect(url);
};
export default handler;

View File

@@ -0,0 +1,8 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"composite": true,
"rootDir": "src",
"outDir": "dist"
}
}

8
apps/pd/tsconfig.json Normal file
View File

@@ -0,0 +1,8 @@
{
"extends": "./tsconfig.app.json",
"compilerOptions": {
"types": ["@types/node"],
"noEmit": true
},
"include": ["environment.d.ts", "src"]
}

View File

@@ -0,0 +1,2 @@
rules:
no-console: off

View File

@@ -0,0 +1,3 @@
# @premid/schema-server
This is a simple schema server which serves JSON schemas for Presence Developers.

7
apps/schema-server/environment.d.ts vendored Normal file
View File

@@ -0,0 +1,7 @@
declare namespace NodeJS {
export interface ProcessEnv {
NODE_ENV?: "development" | "production" | "test";
PORT?: string;
HOST?: string;
}
}

View File

@@ -0,0 +1,22 @@
{
"name": "@premid/schema-server",
"type": "module",
"version": "1.0.11",
"private": true,
"description": "A small service to serve the JSON schemas for PreMiD",
"license": "MPL-2.0",
"main": "dist/index.js",
"files": [
"dist",
"schemas"
],
"scripts": {
"start": "node --enable-source-maps .",
"dev": "node --watch --enable-source-maps ."
},
"dependencies": {
"@fastify/helmet": "^11.1.1",
"fastify": "^4.26.0",
"globby": "^14.0.1"
}
}

View File

@@ -0,0 +1,241 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.0",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties": {
"^[a-z]{2}(_[A-Z]{2})?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?:\\/\\/?(?:[a-z0-9-]+\\.)*[0-9a-z_-]+(?:\\.[a-z]+)+\\/.*$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?:\\/\\/?([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+\\/.*$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa[bs] fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,252 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.0",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties": {
"^[a-z]{2}(_[A-Z]{2})?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?:\\/\\/?(?:[a-z0-9-]+\\.)*[0-9a-z_-]+(?:\\.[a-z]+)+\\/.*$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?:\\/\\/?([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+\\/.*$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa[bs] fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,277 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.10",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"matches": {
"type": "array",
"description": "A glob pattern required to match Google's match pattern (https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns). This is required for Presences.",
"items": {
"type": "string",
"description": "A glob pattern.",
"pattern": "^(https|http|[*])://.*/.*"
}
},
"iFrameMatches": {
"type": "array",
"description": "A glob pattern required to match Google's match pattern (https://developer.chrome.com/docs/extensions/develop/concepts/match-patterns). This is required for Presences.",
"items": {
"type": "string",
"description": "A glob pattern.",
"pattern": "^(https|http|[*])://.*/.*"
}
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,260 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.11",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": [
"name",
"id"
]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": [
"en"
]
},
"url": {
"type": [
"string",
"array"
],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"apiVersion": {
"type": "integer",
"description": "The Presence System version this Presence supports.",
"minimum": 1,
"maximum": 2
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": [
"array"
],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": [
"anime",
"games",
"music",
"socials",
"videos",
"other"
]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": [
"string",
"number",
"boolean"
],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": [
"string",
"boolean",
"array"
],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": [
"author",
"service",
"description",
"url",
"version",
"apiVersion",
"logo",
"thumbnail",
"color",
"tags",
"category"
]
}

View File

@@ -0,0 +1,252 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.12",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": [
"name",
"id"
]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": [
"en"
]
},
"url": {
"type": [
"string",
"array"
],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"apiVersion": {
"type": "integer",
"description": "The Presence System version this Presence supports.",
"minimum": 1,
"maximum": 2
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": [
"array"
],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": [
"anime",
"games",
"music",
"socials",
"videos",
"other"
]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": [
"string",
"number",
"boolean"
],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": "boolean",
"description": "When true, strings from the `general.json` file are available for use, plus the <service>.json file. False is not allowed."
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": [
"author",
"service",
"description",
"url",
"version",
"apiVersion",
"logo",
"thumbnail",
"color",
"tags",
"category"
]
}

View File

@@ -0,0 +1,248 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.13",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a activity.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": [
"name",
"id"
]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this activity."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this activity.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this activity is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the activity in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(-regioncode).",
"pattern": "^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the activity in the key's language."
}
},
"additionalProperties": false,
"required": [
"en"
]
},
"url": {
"type": [
"string",
"array"
],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the activity. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"apiVersion": {
"type": "integer",
"description": "The Activity System version this activity supports.",
"minimum": 1,
"maximum": 2
},
"logo": {
"type": "string",
"description": "The logo of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this activity is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": [
"array"
],
"description": "The tags for the activity.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the activity falls under.",
"enum": [
"anime",
"games",
"music",
"socials",
"videos",
"other"
]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the activity should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the activity to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the activity to inject into."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the activity.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": [
"string",
"number",
"boolean"
],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": "boolean",
"description": "When true, strings from the `general.json` file are available for use, plus the <service>.json file. False is not allowed."
}
},
"additionalProperties": false
}
},
"mobile": {
"type": "boolean",
"description": "Whether or not the activity has support for mobile devices."
}
},
"additionalProperties": false,
"required": [
"author",
"service",
"description",
"url",
"version",
"apiVersion",
"logo",
"thumbnail",
"color",
"tags",
"category"
]
}

View File

@@ -0,0 +1,252 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.14",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a activity.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": [
"name",
"id"
]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this activity."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this activity.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this activity is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the activity in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(-regioncode).",
"pattern": "^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the activity in the key's language."
}
},
"additionalProperties": false,
"required": [
"en"
]
},
"url": {
"type": [
"string",
"array"
],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the activity. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"apiVersion": {
"type": "integer",
"description": "The Activity System version this activity supports.",
"minimum": 1,
"maximum": 2
},
"logo": {
"type": "string",
"description": "The logo of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this activity is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": [
"array"
],
"description": "The tags for the activity.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the activity falls under.",
"enum": [
"anime",
"games",
"music",
"socials",
"videos",
"other"
]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the activity should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the activity to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the activity to inject into."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the activity.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"description": {
"type": "string",
"description": "The description of the setting. Only applicable if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": [
"string",
"number",
"boolean"
],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": "boolean",
"description": "When true, strings from the `general.json` file are available for use, plus the <service>.json file. False is not allowed."
}
},
"additionalProperties": false
}
},
"mobile": {
"type": "boolean",
"description": "Whether or not the activity has support for mobile devices."
}
},
"additionalProperties": false,
"required": [
"author",
"service",
"description",
"url",
"version",
"apiVersion",
"logo",
"thumbnail",
"color",
"tags",
"category"
]
}

View File

@@ -0,0 +1,256 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.15",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a activity.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": [
"name",
"id"
]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this activity."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this activity.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this activity is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the activity in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(-regioncode).",
"pattern": "^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the activity in the key's language."
}
},
"additionalProperties": false,
"required": [
"en"
]
},
"url": {
"type": [
"string",
"array"
],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the activity. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"apiVersion": {
"type": "integer",
"description": "The Activity System version this activity supports.",
"minimum": 1,
"maximum": 2
},
"logo": {
"type": "string",
"description": "The logo of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this activity is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": [
"array"
],
"description": "The tags for the activity.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the activity falls under.",
"enum": [
"anime",
"games",
"music",
"socials",
"videos",
"other"
]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the activity should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the activity to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the activity to inject into."
},
"allowURLOverrides": {
"type": "boolean",
"description": "Whether or not the activity should allow URL overrides."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the activity.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"description": {
"type": "string",
"description": "The description of the setting. Only applicable if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": [
"string",
"number",
"boolean"
],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": "boolean",
"description": "When true, strings from the `general.json` file are available for use, plus the <service>.json file. False is not allowed."
}
},
"additionalProperties": false
}
},
"mobile": {
"type": "boolean",
"description": "Whether or not the activity has support for mobile devices."
}
},
"additionalProperties": false,
"required": [
"author",
"service",
"description",
"url",
"version",
"apiVersion",
"logo",
"thumbnail",
"color",
"tags",
"category"
]
}

View File

@@ -0,0 +1,255 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.16",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes an activity.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": [
"name",
"id"
]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this activity."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this activity.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this activity is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the activity in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key in the format: languagecode or languagecode-regioncode.",
"pattern": "^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2,3}(?:-(?:[a-z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the activity in the key's language."
}
},
"additionalProperties": false,
"required": [
"en"
]
},
"url": {
"type": [
"string",
"array"
],
"description": "The service's website URL, or an array of URLs. Protocols should not be added. Not used for matching.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the activity in the format: major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"apiVersion": {
"type": "integer",
"description": "The Activity System version this activity supports.",
"minimum": 1,
"maximum": 2
},
"logo": {
"type": "string",
"description": "The logo of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this activity is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this activity is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": "array",
"description": "The tags for the activity.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the activity falls under.",
"enum": [
"anime",
"games",
"music",
"socials",
"videos",
"other"
]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the activity should run in iframes."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the activity to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match iframes for the activity to inject into."
},
"allowURLOverrides": {
"type": "boolean",
"description": "Whether or not the activity should allow the user to override the activity's matching regExps."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the activity.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"description": {
"type": "string",
"description": "The description of the setting. Only applicable if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": [
"string",
"number",
"boolean"
],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": [
"string",
"number",
"boolean"
],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": "boolean",
"description": "When true, strings from the `general.json` file are available for use, plus the <service>.json file. False is not allowed."
}
},
"additionalProperties": false
}
},
"mobile": {
"type": "boolean",
"description": "Whether or not the activity has support for mobile devices."
}
},
"additionalProperties": false,
"required": [
"author",
"service",
"description",
"url",
"version",
"apiVersion",
"logo",
"thumbnail",
"color",
"tags",
"category",
"regExp"
]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.0",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties": {
"^[a-z]{2}(_[A-Z]{2})?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?:\\/\\/?(?:[a-z0-9-]+\\.)*[0-9a-z_-]+(?:\\.[a-z]+)+\\/.*$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?:\\/\\/?([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+\\/.*$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa[bs] fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.3",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties": {
"^[a-z]{2}(_[A-Z]{2})?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?:\\/\\/?(?:[a-z0-9-]+\\.)*[0-9a-z_-]+(?:\\.[a-z]+)+\\/.*$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?:\\/\\/?([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+\\/.*$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa[bsd] fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.4",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties": {
"^[a-z]{2}(_[A-Z]{2})?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpg)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpg)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa[bsd] fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.5",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(_[A-Z]{2})?$"
},
"patternProperties": {
"^[a-z]{2}(_[A-Z]{2})?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpe?g|gif)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpe?g)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa[bsd] fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.6",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpe?g|gif)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpe?g)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa[bsd] fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.7",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpe?g|gif)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://(i).(imgur).(com)/(.*?).(png|jpe?g)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.8",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://(cdn[.]rcd[.]gg|i[.]imgur[.]com)/(.*?)[.](png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://(cdn[.]rcd[.]gg|i[.]imgur[.]com)/(.*?)[.](png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,257 @@
{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://schemas.premid.app/metadata/1.9",
"title": "Metadata",
"type": "object",
"description": "Metadata that describes a presence.",
"definitions": {
"user": {
"type": "object",
"description": "User information.",
"properties": {
"name": {
"type": "string",
"description": "The name of the user."
},
"id": {
"type": "string",
"description": "The Discord snowflake of the user.",
"pattern": "^\\d+$"
}
},
"additionalProperties": false,
"required": ["name", "id"]
}
},
"properties": {
"$schema": {
"$comment": "This is required otherwise the schema will fail itself when it is applied to a document via $schema. This is optional so that validators that use this schema don't fail if the metadata doesn't have the $schema property.",
"type": "string",
"description": "The metadata schema URL."
},
"author": {
"$ref": "#/definitions/user",
"description": "The author of this presence."
},
"contributors": {
"type": "array",
"description": "Any extra contributors to this presence.",
"items": {
"$ref": "#/definitions/user"
}
},
"service": {
"type": "string",
"description": "The service this presence is for."
},
"altnames": {
"type": "array",
"description": "Alternative names for the service.",
"items": {
"type": "string",
"description": "An alternative name."
},
"minItems": 1
},
"description": {
"type": "object",
"description": "A description of the presence in multiple languages.",
"propertyNames": {
"type": "string",
"description": "The language key. The key must be languagecode(_REGIONCODE).",
"pattern": "^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$"
},
"patternProperties": {
"^[a-z]{2}(?:_(?:[A-Z]{2}|[0-9]{1,3}))?$": {
"type": "string",
"description": "The description of the presence in the key's language."
}
},
"additionalProperties": false,
"required": ["en"]
},
"url": {
"type": ["string", "array"],
"description": "The service's website URL, or an array of URLs. Protocols should not be added.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$",
"items": {
"type": "string",
"description": "One of the service's website URLs.",
"pattern": "^(([a-z0-9-]+\\.)*[0-9a-z_-]+(\\.[a-z]+)+|(\\d{1,3}\\.){3}\\d{1,3}|localhost)$"
},
"minItems": 2
},
"version": {
"type": "string",
"description": "The SemVer version of the presence. Must just be major.minor.patch.",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"logo": {
"type": "string",
"description": "The logo of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"thumbnail": {
"type": "string",
"description": "A thumbnail of the service this presence is for.",
"pattern": "^https?://.+\\.(png|jpe?g|gif|webp)$"
},
"color": {
"type": "string",
"description": "The theme color of the service this presence is for. Must be either a 6 digit or a 3 digit hex code.",
"pattern": "^#([A-Fa-f0-9]{3}){1,2}$"
},
"tags": {
"type": ["array"],
"description": "The tags for the presence.",
"items": {
"type": "string",
"description": "A tag.",
"pattern": "^[^A-Z\\s!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~]+$"
},
"minItems": 1
},
"category": {
"type": "string",
"description": "The category the presence falls under.",
"enum": ["anime", "games", "music", "socials", "videos", "other"]
},
"iframe": {
"type": "boolean",
"description": "Whether or not the presence should run in IFrames."
},
"readLogs": {
"type": "boolean",
"description": "Whether or not the extension should be reading logs."
},
"regExp": {
"type": "string",
"description": "A regular expression used to match URLs for the presence to inject into."
},
"iFrameRegExp": {
"type": "string",
"description": "A regular expression used to match IFrames for the presence to inject into."
},
"button": {
"type": "boolean",
"description": "Controls whether the presence is automatically added when the extension is installed. For partner presences only."
},
"warning": {
"type": "boolean",
"description": "Shows a warning saying that it requires additional steps for the presence to function correctly."
},
"settings": {
"type": "array",
"description": "An array of settings the user can change in the presence.",
"items": {
"type": "object",
"description": "A setting.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the setting."
},
"title": {
"type": "string",
"description": "The title of the setting. Required only if `multiLanguage` is disabled."
},
"icon": {
"type": "string",
"description": "The icon of the setting. Required only if `multiLanguage` is disabled.",
"pattern": "^fa([bsdrlt]|([-](brands|solid|duotone|regular|light|thin))) fa-[0-9a-z-]+$"
},
"if": {
"type": "object",
"description": "Restrict showing this setting if another setting is the defined value.",
"propertyNames": {
"type": "string",
"description": "The ID of the setting."
},
"patternProperties": {
"": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"additionalProperties": false
},
"placeholder": {
"type": "string",
"description": "The placeholder for settings that require input. Shown when the input is empty."
},
"value": {
"type": ["string", "number", "boolean"],
"description": "The default value of the setting. Not compatible with `values`."
},
"values": {
"type": "array",
"description": "The default values of the setting. Not compatible with `value`.",
"items": {
"type": ["string", "number", "boolean"],
"description": "The value of the setting."
}
},
"multiLanguage": {
"type": ["string", "boolean", "array"],
"description": "When false, multi-localization is disabled. When true, strings from the `general.json` file are available for use. When a string, it is the name of a file (excluding .json) of a used language from the localization GitHub repo. When an array of strings, it is all of the file names (excluding .json) of used languages from the localization GitHub repo.",
"items": {
"type": "string",
"description": "The name of a file from the localization GitHub repository."
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false,
"required": ["author", "service", "description", "url", "version", "logo", "thumbnail", "color", "tags", "category"]
}

View File

@@ -0,0 +1,35 @@
# Metadata Schema
This schema is used to validate the `metadata.json` files in [PreMiD/Presences](https://github.com/PreMiD/Presences).
## 1.7
- Updates `icon` regex for compability with FontAwesome v6 icon labelling
## 1.6
- Adds support for language locales that end in numbers (e.g. es_419)
## 1.5
- Allows `.gif` extensions for service logos and `.jpeg` extensions for service logos and thumbnails.
## 1.4
- Adds regex for only allowing imgur links for `logo` & `thumbnail`.
## 1.3
- Fixes validation for icons.
## 1.2
- Adds "readLogs".
## 1.1
- Adds "altnames" and "multiLanguage".
## 1.0
- First iteration of the metadata file format.

View File

@@ -0,0 +1,37 @@
import { resolve } from "node:path";
import { describe, expect, it } from "vitest";
import { app } from "./index.js";
describe("schemas", () => {
it("/ should return date", async () => {
const result = await app.inject({ url: "/" });
expect(result.statusCode).toBe(200);
expect(result.json()).toEqual({ date: expect.any(String) });
});
it("/metadata/1.0 should return metadata schema", async () => {
const result = await app.inject({ url: "/metadata/1.0" });
const schema = await import(resolve(import.meta.dirname, "../schemas/metadata/1.0.json")) as { default: Record<string, unknown> };
expect(result.statusCode).toBe(200);
expect(result.json()).toEqual(schema.default);
});
it("/metadata/1.0 should return cached metadata schema", async () => {
const result = await app.inject({ url: "/metadata/1.0" });
const schema = await import(resolve(import.meta.dirname, "../schemas/metadata/1.0.json")) as { default: Record<string, unknown> };
expect(result.statusCode).toBe(200);
expect(result.json()).toEqual(schema.default);
});
it("/metadata/1 should return 404", async () => {
const result = await app.inject({ url: "/metadata/1" });
expect(result.statusCode).toBe(404);
expect(result.json()).toEqual({ error: "Schema not found." });
});
});

View File

@@ -0,0 +1,63 @@
import { extname, resolve } from "node:path";
import process from "node:process";
import helmet from "@fastify/helmet";
import fastify from "fastify";
import { globby } from "globby";
import type { RequestGenericInterface } from "fastify";
export const app = fastify();
await app.register(helmet);
app.get("/", (_, reply) => reply.send({ date: new Date() }));
interface versionRequest extends RequestGenericInterface {
Params: {
schemaName: string;
version: string;
};
}
const availableSchemas: Record<string, {
version: string;
content: Record<string, unknown>;
}[]> = {};
for (const schemaPath of await globby(resolve(import.meta.dirname, "../schemas/*/*.json"), { onlyFiles: true })) {
const [schemaName, version] = schemaPath.split("/").slice(-2) as [string, string];
let schemaVersions = availableSchemas[schemaName];
if (!schemaVersions)
schemaVersions = [];
const { default: content } = await import(schemaPath, { with: { type: "json" } }) as { default: Record<string, unknown> };
schemaVersions.push({
content,
version: version.replace(extname(version), ""),
});
availableSchemas[schemaName] = schemaVersions;
}
app.get<versionRequest>("/:schemaName/:version", async (request, reply) => {
const { schemaName, version } = request.params;
if (!availableSchemas[schemaName]?.some(schema => schema.version === version))
return reply.status(404).send({ error: "Schema not found." });
return reply.send(availableSchemas[schemaName]?.find(schema => schema.version === version)?.content);
});
/* c8 ignore start */
if (process.env.NODE_ENV !== "test") {
const url = await app.listen({
host: process.env.HOST ?? "0.0.0.0",
port: Number.parseInt(process.env.PORT ?? "80"),
});
// eslint-disable-next-line no-console
console.log(`Listening on ${url}`);
}
/* c8 ignore stop */

View File

@@ -0,0 +1,8 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"composite": true,
"rootDir": "src",
"outDir": "dist"
}
}

View File

@@ -0,0 +1,8 @@
{
"extends": "./tsconfig.app.json",
"compilerOptions": {
"types": ["@types/node"],
"noEmit": true
},
"include": ["environment.d.ts", "src"]
}

1
commitlint.config.js Normal file
View File

@@ -0,0 +1 @@
export default { extends: ["@commitlint/config-conventional"] };

13
eslint.config.js Normal file
View File

@@ -0,0 +1,13 @@
import antfu from "@antfu/eslint-config";
export default antfu({
ignores: [".pnpm-store/**", "**/lib/**", "**/generated/**"],
formatters: true,
vue: true,
stylistic: {
indent: "tab",
semi: true,
quotes: "double",
},
typescript: true,
});

View File

@@ -1,459 +0,0 @@
<project>
<shortName>PreMiD</shortName>
<fullName>PreMiD</fullName>
<version>VERSION</version>
<installerFilename>upgrader.${platform_exec_suffix}</installerFilename>
<debugLevel>0</debugLevel>
<licenseFile>../LICENSE</licenseFile>
<wrapLicenseFileText>0</wrapLicenseFileText>
<leftImage>leftSide.png</leftImage>
<logoImage>logo.png</logoImage>
<splashImage>logo.png</splashImage>
<componentList>
<component>
<name>default</name>
<description>Default Component</description>
<canBeEdited>1</canBeEdited>
<selected>1</selected>
<show>1</show>
<folderList>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfiles</name>
<platforms>all</platforms>
<shortcutList>
<shortcut>
<comment>Uninstall</comment>
<exec>${installdir}/${uninstallerName}</exec>
<icon></icon>
<name>Uninstall ${product_fullname}</name>
<path>${installdir}</path>
<platforms>all</platforms>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/${uninstallerName}.exe</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath>${installdir}</windowsPath>
</shortcut>
</shortcutList>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileslinux</name>
<platforms>linux</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileslinux64</name>
<platforms>linux-x64</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileswindows</name>
<platforms>windows</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileswindows64</name>
<platforms>windows-x64</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfilesosx</name>
<platforms>osx</platforms>
</folder>
</folderList>
<startMenuShortcutList>
<startMenuShortcut>
<comment>Uninstall ${product_fullname}</comment>
<name>Uninstall ${product_fullname}</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/${uninstallerName}.exe</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath>${installdir}/</windowsPath>
</startMenuShortcut>
<startMenuShortcut>
<comment>Rich Presence for web services.</comment>
<name>PreMiD</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/PreMiD.${platform_exec_suffix}</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath></windowsPath>
</startMenuShortcut>
</startMenuShortcutList>
</component>
</componentList>
<initializationActionList>
<setInstallerVariable>
<name>project.installationType</name>
<value>upgrade</value>
<ruleList>
<fileExists>
<path>${installdir}</path>
</fileExists>
</ruleList>
</setInstallerVariable>
</initializationActionList>
<preInstallationActionList>
<actionGroup>
<progressText>Killing ${product_fullname}...</progressText>
<actionList>
<kill>
<abortOnError>0</abortOnError>
<name>${product_fullname}.exe</name>
<showMessageOnError>0</showMessageOnError>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</kill>
<runProgram>
<program>pkill</program>
<programArguments>PreMiD</programArguments>
<runAs>${env(USER)}</runAs>
<useMSDOSPath>0</useMSDOSPath>
<workingDirectory>${installdir}/</workingDirectory>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
<processTest>
<logic>is_running</logic>
<name>PreMiD</name>
</processTest>
</ruleList>
</runProgram>
</actionList>
</actionGroup>
</preInstallationActionList>
<readyToInstallActionList>
<actionGroup>
<actionList>
<!-- Remove the old ARP Entry
Get the old version -->
<registryGet>
<key>HKEY_LOCAL_MACHINE\Software\${project.windowsSoftwareRegistryPrefix}</key>
<name>Version</name>
<variable>oldVersion</variable>
</registryGet>
<!-- Delete the old ARP registry keys -->
<registryDelete>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${project.fullName} ${oldVersion}</key>
<name></name>
</registryDelete>
<registryDelete>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\${project.fullName} ${oldVersion}</key>
<name></name>
</registryDelete>
</actionList>
<ruleList>
<platformTest type="windows"/>
<isTrue value="${isUpgradeMode}"/>
</ruleList>
</actionGroup>
<actionGroup>
<customErrorMessage>Couldn't download release... Try again later.</customErrorMessage>
<progressText>Downloading latest release...</progressText>
<actionList>
<httpGet>
<customErrorMessage>${platform_name}</customErrorMessage>
<filename>${system_temp_directory}/PreMiD-release.zip</filename>
<url>https://dl.premid.app/PreMiD-win32-x64.zip</url>
<ruleList>
<platformTest>
<type>windows-x64</type>
</platformTest>
</ruleList>
</httpGet>
<httpGet>
<customErrorMessage>${platform_name}</customErrorMessage>
<filename>${system_temp_directory}/PreMiD-release.zip</filename>
<url>https://dl.premid.app/PreMiD-win32-x86.zip</url>
<ruleList>
<platformTest>
<type>windows-x86</type>
</platformTest>
</ruleList>
</httpGet>
<httpGet>
<customErrorMessage>${platform_name}</customErrorMessage>
<filename>${system_temp_directory}/PreMiD-release.zip</filename>
<url>https://dl.premid.app/PreMiD-darwin-x64.zip</url>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
</ruleList>
</httpGet>
</actionList>
</actionGroup>
</readyToInstallActionList>
<postInstallationActionList>
<unzip>
<addToUninstaller>0</addToUninstaller>
<destinationDirectory>${installdir}</destinationDirectory>
<progressText>Extracting release...</progressText>
<zipFile>${system_temp_directory}/PreMiD-release.zip</zipFile>
</unzip>
<addDirectoriesToUninstaller>
<addContents>1</addContents>
<files>${installdir}/</files>
</addDirectoriesToUninstaller>
<registrySet>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Chrome\Extensions\agjnjboanicjcpenljmaaigopkgdnihi</key>
<name>update_url</name>
<progressText>Adding Extension (Chrome only)</progressText>
<type>REG_SZ</type>
<value>https://clients2.google.com/service/update2/crx</value>
<wowMode>64</wowMode>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</registrySet>
<runProgram>
<abortOnError>0</abortOnError>
<program>PreMiD.exe</program>
<programArguments>&amp;</programArguments>
<progressText>Launching PreMiD...</progressText>
<showMessageOnError>0</showMessageOnError>
<workingDirectory>${installdir}</workingDirectory>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</runProgram>
<runProgram>
<abortOnError>0</abortOnError>
<program>open</program>
<programArguments>${installdir}/PreMiD.app</programArguments>
<progressText>Launching PreMiD...</progressText>
<runAs>${env(USER)}</runAs>
<showMessageOnError>0</showMessageOnError>
<useMSDOSPath>0</useMSDOSPath>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
</ruleList>
</runProgram>
</postInstallationActionList>
<preUninstallationActionList>
<actionGroup>
<progressText>Killing ${product_fullname}...</progressText>
<actionList>
<kill>
<abortOnError>0</abortOnError>
<name>${product_fullname}.exe</name>
<showMessageOnError>0</showMessageOnError>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</kill>
<runProgram>
<program>pkill</program>
<programArguments>PreMiD</programArguments>
<runAs>${env(USER)}</runAs>
<useMSDOSPath>0</useMSDOSPath>
<workingDirectory>${installdir}/</workingDirectory>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
<processTest>
<logic>is_running</logic>
<name>PreMiD</name>
</processTest>
</ruleList>
</runProgram>
</actionList>
</actionGroup>
</preUninstallationActionList>
<postUninstallationActionList>
<actionGroup>
<actionList>
<showQuestion>
<default>yes</default>
<text>Uninstall browser extension?</text>
<variable>removeExtension</variable>
</showQuestion>
<registryDelete>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Chrome\Extensions\agjnjboanicjcpenljmaaigopkgdnihi</key>
<name></name>
<ruleList>
<isTrue>
<value>${removeExtension}</value>
</isTrue>
</ruleList>
</registryDelete>
</actionList>
<ruleList>
<registryTest>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Chrome\Extensions\agjnjboanicjcpenljmaaigopkgdnihi</key>
<logic>exists</logic>
<name></name>
<wowMode>64</wowMode>
</registryTest>
</ruleList>
</actionGroup>
</postUninstallationActionList>
<checkForUpdates>1</checkForUpdates>
<compressionAlgorithm>lzham-ultra</compressionAlgorithm>
<createOsxBundleZip>1</createOsxBundleZip>
<defaultInstallationMode>unattended</defaultInstallationMode>
<description>Rich Presence for web services.</description>
<disableSplashScreen>1</disableSplashScreen>
<enableRollback>0</enableRollback>
<enableSslSupport>1</enableSslSupport>
<enableTimestamp>1</enableTimestamp>
<installationScope>user</installationScope>
<installationType>upgrade</installationType>
<licenseFileEncoding>utf-8</licenseFileEncoding>
<osxApplicationBundleIcon>appIcon.icns</osxApplicationBundleIcon>
<osxApplicationBundleIdentifier>eu.Timeraa.PreMiD</osxApplicationBundleIdentifier>
<osxPlatforms>osx-intel osx-x86_64</osxPlatforms>
<osxUninstallerApplicationBundleIcon>appIcon.icns</osxUninstallerApplicationBundleIcon>
<outputDirectory>../dist/installer</outputDirectory>
<overwritePolicy>onlyIfNewer</overwritePolicy>
<productDisplayIcon>C:/Users/metzf/Documents/Development/PreMiD/PreMiD/installer_assets/appIcon.ico</productDisplayIcon>
<productUrlHelpLink>https://discord.gg/PreMiD</productUrlHelpLink>
<productUrlInfoAbout>https://premid.app</productUrlInfoAbout>
<readmeFileEncoding>utf-8</readmeFileEncoding>
<removeLogFile>1</removeLogFile>
<removeUninstallationLogFile>1</removeUninstallationLogFile>
<saveRelativePaths>1</saveRelativePaths>
<summary>Rich Presence for web services.</summary>
<updateInformationURL>https://api.premid.app/app/update</updateInformationURL>
<vendor>Timeraa</vendor>
<versionId>200</versionId>
<windowsExecutableIcon>appIcon.ico</windowsExecutableIcon>
<windowsResourceFileDescription>Rich Presence for web services.</windowsResourceFileDescription>
<windowsUninstallerExecutableIcon>appIcon.ico</windowsUninstallerExecutableIcon>
<licenseFileList>
<licenseFile>
<code>en</code>
<encoding>utf-8</encoding>
<file>../LICENSE</file>
</licenseFile>
</licenseFileList>
<parameterList>
<directoryParameter>
<name>installdir</name>
<description>Installer.Parameter.installdir.description</description>
<explanation>Installer.Parameter.installdir.explanation</explanation>
<value></value>
<default>${platform_install_prefix}/${product_shortname}</default>
<allowEmptyValue>0</allowEmptyValue>
<ask>yes</ask>
<cliOptionName>prefix</cliOptionName>
<mustBeWritable>yes</mustBeWritable>
<mustExist>0</mustExist>
<width>40</width>
</directoryParameter>
<parameterGroup>
<name>post_install_page</name>
<title>Installation Finished</title>
<explanation></explanation>
<value></value>
<default></default>
<insertAfter>installation</insertAfter>
<parameterList>
<labelParameter>
<name>general</name>
<description>General</description>
<explanation></explanation>
<image></image>
</labelParameter>
<booleanParameter>
<name>addDesktop</name>
<description>Create Desktop Icon</description>
<explanation></explanation>
<value>false</value>
<default>false</default>
<displayStyle>checkbox-left</displayStyle>
</booleanParameter>
<booleanParameter>
<name>launchApp</name>
<description>Launch App</description>
<explanation></explanation>
<value>true</value>
<default>true</default>
<displayStyle>checkbox-left</displayStyle>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</booleanParameter>
<labelParameter>
<name>extra</name>
<description>Extra</description>
<explanation></explanation>
<image></image>
</labelParameter>
<booleanParameter>
<name>openStore</name>
<description>Open Presence Store</description>
<explanation></explanation>
<value>true</value>
<default>true</default>
<displayStyle>checkbox-left</displayStyle>
</booleanParameter>
</parameterList>
<postShowPageActionList>
<createShortcuts>
<destination>${windows_folder_desktopdirectory}</destination>
<ruleList>
<isTrue>
<value>${addDesktop}</value>
</isTrue>
</ruleList>
<shortcutList>
<quickLaunchShortcut>
<comment>Rich Presence for web services.</comment>
<name>PreMiD</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/PreMiD.${platform_exec_suffix}</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath></windowsPath>
</quickLaunchShortcut>
</shortcutList>
</createShortcuts>
<launchBrowser>
<url>https://premid.app/store</url>
<ruleList>
<isTrue>
<value>${openStore}</value>
</isTrue>
</ruleList>
</launchBrowser>
<exit/>
</postShowPageActionList>
</parameterGroup>
</parameterList>
<platformOptionsList>
<platformOptions>
<platform>windows</platform>
</platformOptions>
</platformOptionsList>
</project>

View File

@@ -1,443 +0,0 @@
<project>
<shortName>PreMiD</shortName>
<fullName>PreMiD</fullName>
<version>latest</version>
<installerFilename>${product_shortname}-installer.${platform_exec_suffix}</installerFilename>
<debugLevel>0</debugLevel>
<licenseFile>../LICENSE</licenseFile>
<leftImage>leftSide.png</leftImage>
<logoImage>logo.png</logoImage>
<splashImage>logo.png</splashImage>
<componentList>
<component>
<name>default</name>
<description>Default Component</description>
<canBeEdited>1</canBeEdited>
<selected>1</selected>
<show>1</show>
<folderList>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfiles</name>
<platforms>all</platforms>
<shortcutList>
<shortcut>
<comment>Uninstall</comment>
<exec>${installdir}/${uninstallerName}</exec>
<icon></icon>
<name>Uninstall ${product_fullname}</name>
<path>${installdir}</path>
<platforms>all</platforms>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/${uninstallerName}.exe</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath>${installdir}</windowsPath>
</shortcut>
</shortcutList>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileslinux</name>
<platforms>linux</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileslinux64</name>
<platforms>linux-x64</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileswindows</name>
<platforms>windows</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfileswindows64</name>
<platforms>windows-x64</platforms>
</folder>
<folder>
<description>Program Files</description>
<destination>${installdir}</destination>
<name>programfilesosx</name>
<platforms>osx</platforms>
</folder>
</folderList>
<startMenuShortcutList>
<startMenuShortcut>
<comment>Uninstall ${product_fullname}</comment>
<name>Uninstall ${product_fullname}</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/${uninstallerName}.exe</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath>${installdir}/</windowsPath>
</startMenuShortcut>
<startMenuShortcut>
<comment>Rich Presence for web services.</comment>
<name>PreMiD</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/PreMiD.${platform_exec_suffix}</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath></windowsPath>
</startMenuShortcut>
</startMenuShortcutList>
</component>
</componentList>
<preInstallationActionList>
<actionGroup>
<progressText>Killing ${product_fullname}...</progressText>
<actionList>
<kill>
<abortOnError>0</abortOnError>
<name>${product_fullname}.exe</name>
<showMessageOnError>0</showMessageOnError>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</kill>
<runProgram>
<program>pkill</program>
<programArguments>PreMiD</programArguments>
<runAs>${env(USER)}</runAs>
<useMSDOSPath>0</useMSDOSPath>
<workingDirectory>${installdir}/</workingDirectory>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
<processTest>
<logic>is_running</logic>
<name>PreMiD</name>
</processTest>
</ruleList>
</runProgram>
</actionList>
</actionGroup>
</preInstallationActionList>
<readyToInstallActionList>
<actionGroup>
<actionList>
<!-- Remove the old ARP Entry
Get the old version -->
<registryGet>
<key>HKEY_LOCAL_MACHINE\Software\${project.windowsSoftwareRegistryPrefix}</key>
<name>Version</name>
<variable>oldVersion</variable>
</registryGet>
<!-- Delete the old ARP registry keys -->
<registryDelete>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${project.fullName} ${oldVersion}</key>
<name></name>
</registryDelete>
<registryDelete>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\${project.fullName} ${oldVersion}</key>
<name></name>
</registryDelete>
</actionList>
<ruleList>
<platformTest type="windows"/>
<isTrue value="${isUpgradeMode}"/>
</ruleList>
</actionGroup>
<actionGroup>
<customErrorMessage>Couldn't download release... Try again later.</customErrorMessage>
<progressText>Downloading latest release...</progressText>
<actionList>
<httpGet>
<customErrorMessage>${platform_name}</customErrorMessage>
<filename>${system_temp_directory}/PreMiD-release.zip</filename>
<url>https://dl.premid.app/PreMiD-win32-x64.zip</url>
<ruleList>
<platformTest>
<type>windows-x64</type>
</platformTest>
</ruleList>
</httpGet>
<httpGet>
<customErrorMessage>${platform_name}</customErrorMessage>
<filename>${system_temp_directory}/PreMiD-release.zip</filename>
<url>https://dl.premid.app/PreMiD-win32-x86.zip</url>
<ruleList>
<platformTest>
<type>windows-x86</type>
</platformTest>
</ruleList>
</httpGet>
<httpGet>
<customErrorMessage>${platform_name}</customErrorMessage>
<filename>${system_temp_directory}/PreMiD-release.zip</filename>
<url>https://dl.premid.app/PreMiD-darwin-x64.zip</url>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
</ruleList>
</httpGet>
</actionList>
</actionGroup>
</readyToInstallActionList>
<postInstallationActionList>
<unzip>
<addToUninstaller>0</addToUninstaller>
<destinationDirectory>${installdir}</destinationDirectory>
<progressText>Extracting release...</progressText>
<zipFile>${system_temp_directory}/PreMiD-release.zip</zipFile>
</unzip>
<addDirectoriesToUninstaller>
<addContents>1</addContents>
<files>${installdir}/</files>
</addDirectoriesToUninstaller>
<registrySet>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Chrome\Extensions\agjnjboanicjcpenljmaaigopkgdnihi</key>
<name>update_url</name>
<progressText>Adding Extension (Chrome only)</progressText>
<type>REG_SZ</type>
<value>https://clients2.google.com/service/update2/crx</value>
<wowMode>64</wowMode>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</registrySet>
</postInstallationActionList>
<preUninstallationActionList>
<actionGroup>
<progressText>Killing ${product_fullname}...</progressText>
<actionList>
<kill>
<abortOnError>0</abortOnError>
<name>${product_fullname}.exe</name>
<showMessageOnError>0</showMessageOnError>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
</ruleList>
</kill>
<runProgram>
<program>pkill</program>
<programArguments>PreMiD</programArguments>
<runAs>${env(USER)}</runAs>
<useMSDOSPath>0</useMSDOSPath>
<workingDirectory>${installdir}/</workingDirectory>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
<processTest>
<logic>is_running</logic>
<name>PreMiD</name>
</processTest>
</ruleList>
</runProgram>
</actionList>
</actionGroup>
</preUninstallationActionList>
<postUninstallationActionList>
<actionGroup>
<actionList>
<showQuestion>
<default>yes</default>
<text>Uninstall browser extension?</text>
<variable>removeExtension</variable>
</showQuestion>
<registryDelete>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Chrome\Extensions\agjnjboanicjcpenljmaaigopkgdnihi</key>
<name></name>
<ruleList>
<isTrue>
<value>${removeExtension}</value>
</isTrue>
</ruleList>
</registryDelete>
</actionList>
<ruleList>
<registryTest>
<key>HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Chrome\Extensions\agjnjboanicjcpenljmaaigopkgdnihi</key>
<logic>exists</logic>
<name></name>
<wowMode>64</wowMode>
</registryTest>
</ruleList>
</actionGroup>
</postUninstallationActionList>
<compressionAlgorithm>lzham-ultra</compressionAlgorithm>
<createOsxBundleZip>1</createOsxBundleZip>
<description>Rich Presence for web services.</description>
<disableSplashScreen>1</disableSplashScreen>
<enableRollback>0</enableRollback>
<enableSslSupport>1</enableSslSupport>
<enableTimestamp>1</enableTimestamp>
<installationScope>user</installationScope>
<licenseFileEncoding>utf-8</licenseFileEncoding>
<osxApplicationBundleIcon>appIcon.icns</osxApplicationBundleIcon>
<osxApplicationBundleIdentifier>eu.Timeraa.PreMiD</osxApplicationBundleIdentifier>
<osxPlatforms>osx-intel osx-x86_64</osxPlatforms>
<osxUninstallerApplicationBundleIcon>appIcon.icns</osxUninstallerApplicationBundleIcon>
<outputDirectory>../dist/installer</outputDirectory>
<overwritePolicy>onlyIfNewer</overwritePolicy>
<productDisplayIcon>C:/Users/metzf/Documents/Development/PreMiD/PreMiD/installer_assets/appIcon.ico</productDisplayIcon>
<productUrlHelpLink>https://discord.gg/PreMiD</productUrlHelpLink>
<productUrlInfoAbout>https://premid.app</productUrlInfoAbout>
<readmeFileEncoding>utf-8</readmeFileEncoding>
<removeLogFile>1</removeLogFile>
<removeUninstallationLogFile>1</removeUninstallationLogFile>
<saveRelativePaths>1</saveRelativePaths>
<summary>Rich Presence for web services.</summary>
<vendor>Timeraa</vendor>
<windowsExecutableIcon>appIcon.ico</windowsExecutableIcon>
<windowsResourceFileDescription>Rich Presence for web services.</windowsResourceFileDescription>
<windowsUninstallerExecutableIcon>appIcon.ico</windowsUninstallerExecutableIcon>
<licenseFileList>
<licenseFile>
<code>en</code>
<encoding>utf-8</encoding>
<file>../LICENSE</file>
</licenseFile>
</licenseFileList>
<parameterList>
<directoryParameter>
<name>installdir</name>
<description>Installer.Parameter.installdir.description</description>
<explanation>Installer.Parameter.installdir.explanation</explanation>
<value></value>
<default>${platform_install_prefix}/${product_shortname}</default>
<allowEmptyValue>0</allowEmptyValue>
<ask>yes</ask>
<cliOptionName>prefix</cliOptionName>
<mustBeWritable>yes</mustBeWritable>
<mustExist>0</mustExist>
<width>40</width>
</directoryParameter>
<parameterGroup>
<name>post_install_page</name>
<title>Installation Finished</title>
<explanation></explanation>
<value></value>
<default></default>
<insertAfter>installation</insertAfter>
<parameterList>
<labelParameter>
<name>general</name>
<description>General</description>
<explanation></explanation>
<image></image>
</labelParameter>
<booleanParameter>
<name>addDesktop</name>
<description>Create Desktop Icon</description>
<explanation></explanation>
<value>false</value>
<default>false</default>
<displayStyle>checkbox-left</displayStyle>
</booleanParameter>
<booleanParameter>
<name>launchApp</name>
<description>Launch App</description>
<explanation></explanation>
<value>true</value>
<default>true</default>
<displayStyle>checkbox-left</displayStyle>
</booleanParameter>
<labelParameter>
<name>extra</name>
<description>Extra</description>
<explanation></explanation>
<image></image>
</labelParameter>
<booleanParameter>
<name>openStore</name>
<description>Open Presence Store</description>
<explanation></explanation>
<value>true</value>
<default>true</default>
<displayStyle>checkbox-left</displayStyle>
</booleanParameter>
</parameterList>
<postShowPageActionList>
<createShortcuts>
<destination>${windows_folder_desktopdirectory}</destination>
<ruleList>
<isTrue>
<value>${addDesktop}</value>
</isTrue>
</ruleList>
<shortcutList>
<quickLaunchShortcut>
<comment>Rich Presence for web services.</comment>
<name>PreMiD</name>
<runAsAdmin>0</runAsAdmin>
<runInTerminal>0</runInTerminal>
<windowsExec>${installdir}/PreMiD.${platform_exec_suffix}</windowsExec>
<windowsExecArgs></windowsExecArgs>
<windowsIcon></windowsIcon>
<windowsPath></windowsPath>
</quickLaunchShortcut>
</shortcutList>
</createShortcuts>
<runProgram>
<abortOnError>0</abortOnError>
<program>PreMiD.exe</program>
<programArguments>&amp;</programArguments>
<progressText>Launching PreMiD...</progressText>
<showMessageOnError>0</showMessageOnError>
<workingDirectory>${installdir}</workingDirectory>
<ruleList>
<platformTest>
<type>windows</type>
</platformTest>
<isTrue>
<value>${launchApp}</value>
</isTrue>
</ruleList>
</runProgram>
<runProgram>
<abortOnError>0</abortOnError>
<program>open</program>
<programArguments>${installdir}/PreMiD.app</programArguments>
<progressText>Launching PreMiD...</progressText>
<runAs>${env(USER)}</runAs>
<showMessageOnError>0</showMessageOnError>
<useMSDOSPath>0</useMSDOSPath>
<ruleList>
<platformTest>
<type>osx</type>
</platformTest>
<isTrue>
<value>${launchApp}</value>
</isTrue>
</ruleList>
</runProgram>
<launchBrowser>
<url>https://premid.app/store</url>
<ruleList>
<isTrue>
<value>${openStore}</value>
</isTrue>
</ruleList>
</launchBrowser>
<exit/>
</postShowPageActionList>
</parameterGroup>
</parameterList>
<platformOptionsList>
<platformOptions>
<platform>windows</platform>
</platformOptions>
</platformOptionsList>
</project>

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,6 +0,0 @@
[Update]
url=https://api.premid.app/app/update/
version_id=?
check_for_updates=1
update_download_location=${installer_directory}

View File

@@ -1,13 +0,0 @@
<autoUpdateProject>
<fullName>PreMiD</fullName>
<shortName>PreMiD</shortName>
<vendor>Timeraa</vendor>
<version>2.0</version>
<singleInstanceCheck>1</singleInstanceCheck>
<requestedExecutionLevel>asInvoker</requestedExecutionLevel>
<enableSslSupport>1</enableSslSupport>
<outputDirectory>../dist/app/</outputDirectory>
<installerFilename>updater.${platform_exec_suffix}</installerFilename>
<osxPlatforms>osx-intel osx-x86_64</osxPlatforms>
<createOsxBundleZip>1</createOsxBundleZip>
</autoUpdateProject>

Some files were not shown because too many files have changed in this diff Show More