text:
self.addEventListener('install', (e) => {
  e.waitUntil(
    caches.open('fox-store').then((cache) => cache.addAll([
      '/pwa-examples/a2hs/',
      '/pwa-examples/a2hs/index.html',
      '/pwa-examples/a2hs/index.js',
      '/pwa-examples/a2hs/style.css',
      '/pwa-examples/a2hs/images/fox1.jpg',
      '/pwa-examples/a2hs/images/fox2.jpg',
      '/pwa-examples/a2hs/images/fox3.jpg',
      '/pwa-examples/a2hs/images/fox4.jpg',
    ])),
  );
});

self.addEventListener('fetch', (e) => {
  console.log(e.request.url);
  e.respondWith(
    caches.match(e.request).then((response) => response || fetch(e.request)),
  );
});


text:
# Contributing

By contributing to the software, the contributor implicitly releases their
contribution under the terms of the UNLICENSE.

repo_language: Makefile

mime_type: text/x-makefile


text:
#include <libkern/libkern.h>
#include <mach/mach_types.h>

kern_return_t
example_start(__attribute__((unused)) kmod_info_t *ki,
              __attribute__((unused)) void *d) {
	printf(KEXTNAME_S ": start\n");
	return KERN_SUCCESS;
}

kern_return_t
example_stop(__attribute__((unused)) kmod_info_t *ki,
             __attribute__((unused)) void *d) {
	printf(KEXTNAME_S ": stop\n");
	return KERN_SUCCESS;
}

extern kern_return_t _start(kmod_info_t *ki, void *d);
extern kern_return_t _stop(kmod_info_t *ki, void *d);

KMOD_EXPLICIT_DECL(BUNDLEID, KEXTBUILD_S, _start, _stop)
__private_extern__ kmod_start_func_t *_realmain = example_start;
__private_extern__ kmod_stop_func_t *_antimain = example_stop;
__private_extern__ int _kext_apple_cc = __APPLE_CC__;


text:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleIdentifier</key>
	<string>__BUNDLEID__</string>
	<key>CFBundleExecutable</key>
	<string>__KEXTMACHO__</string>
	<key>CFBundleName</key>
	<string>__KEXTNAME__</string>
	<key>CFBundleVersion</key>
	<string>__KEXTBUILD__</string>
	<key>CFBundleShortVersionString</key>
	<string>__KEXTVERSION__</string>
	<key>NSHumanReadableCopyright</key>
	<string>__COPYRIGHT__</string>
	<key>CFBundlePackageType</key>
	<string>KEXT</string>
	<key>CFBundleSupportedPlatforms</key>
	<array>
		<string>MacOSX</string>
	</array>
	<key>CFBundleSignature</key>
	<string>????</string>
__LIBS__
</dict>
</plist>


text:
KEXTNAME=	example
KEXTVERSION=	1.0.0
KEXTBUILD=	1.0.0d1
BUNDLEDOMAIN=	com.example
COPYRIGHT=	Copyright (c) 2018 John Doe. All rights reserved.

# Target an earlier version of macOS using an alternative Xcode installation
#DEVELOPER_DIR=	/Applications/Xcode-7.3.1.app/Contents/Developer
#MACOSX_VERSION_MIN=	10.11

# Use unsupported interfaces not part of the supported KPI
#CFLAGS=	-Wno-\#warnings
#KLFLAGS=	-unsupported

# Create a signed kext, see SIGNING IDENTITIES in codesign(1)
#DEVIDKEXT=	"your signing identity"

include Mk/kext.mk


text:
# Makefile for building macOS kernel extensions
Authored 2018, [Daniel Roethlisberger](//daniel.roe.ch/)
https://github.com/droe/example.kext

## Overview

`Mk/kext.mk` is a makefile for building macOS kernel extensions without the
opaque Xcode project bloat.  This example kernel extension for macOS
demonstrates how to use `Mk/kext.mk`.

`Mk/xcode.mk` is a makefile for Xcode selection, macOS min version targeting
and SDK selection.  While it is used by `Mk/kext.mk` internally, it can also be
used standalone in makefiles for userspace code on macOS.

All this is by no means rocket science, but since there exists very little
up-to-date documentation on how to build kernel extensions manually, this might
provide other inclined kernel hackers with a dislike for GUI based build
configuration some relief.

`Mk/kext.mk` and `Mk/xcode.mk` were originally written for
[xnumon](https://github.com/droe/xnumon), but have been made available in this
separate project under a less restrictive license.

## Requirements

There are no requirements beyond Xcode.

For building kernel extensions, Apple recommends that you use the
[latest Xcode version](https://developer.apple.com/download/)
containing the SDK for the oldest macOS release you target.
That translates to using
latest Xcode 7 for targeting 10.11+,
latest Xcode 8 for targeting 10.12+,
latest Xcode 9 for targeting 10.13+ and
latest Xcode 10 for targeting 10.14+.
This is different from the recommendation for userland code, where the
recommendation is to use the latest Xcode version available regardless of which
macOS release you target.
Wikipedia maintains mappings of Xcode and their SDK versions in their
[Xcode](https://en.wikipedia.org/wiki/Xcode) article.
Use `xcode-select -s` to enable a specific Command Line Developer Tools base
directory as system-wide default or set `SDK` to the respective SDK name or
path.

## Kext Installation

As of OS X 10.10 Yosemite, kernel extensions need to be signed by default.  You
need to enable `kext-dev-mode` in order to load unsigned kernel extensions:

1.  Run `sudo nvram boot-args=kext-dev-mode=1`
2.  Reboot

As of OS X 10.11 El Capitan, `kext-dev-mode` no longer has any effect.  You
need to disable the kext protection part of System Integrity Protection (SIP)
in order to load unsigned kernel extensions:

1.  Boot into Recovery OS by pressing cmd⌘+r during boot
2.  Run `csrutil enable --without kext`
3.  Reboot

To create a signed kext that will load in default system configuration with SIP
enabled, you will need to obtain a Developer ID certificate specifically for
signing kernel extensions.

As of macOS 10.13 High Sierra, all kexts need to be explicitly approved by the
user before they can be loaded.  Workarounds include disabling user approval or
allowing your Team ID to bypass user approval using `spctl kext-consent` from
Recovery OS or NetBoot/NetInstall/NetRestore images, or using Mobile Device
Management (MDM).  For details, refer to
[TN2459](https://developer.apple.com/library/archive/technotes/tn2459/).

## Support

There is no support whatsoever.  No communication except in the form of Github
pull requests or issues pertaining to bugs or missing features.

## Bugs

-   `Mk/kext.mk` is currently limited to compiling c sources into a generic
    kext.  Adding C++ for IOKit drivers should be easy enough to add (tested
    pull request appreciated!).


text:
# macOS Xcode and SDK selection makefile
# Authored 2018, Daniel Roethlisberger
# Provided under the Unlicense
# https://github.com/droe/example.kext

# DEVELOPER_DIR   override Xcode Command Line Developer Tools directory
# MACOSX_VERSION_MIN  minimal version of macOS to target, e.g. 10.11
# SDK             SDK name to build against (e.g. macosx, macosx10.11, ...);
#                 for kernel extensions, use macosx$(MACOSX_VERSION_MIN)

# target specific macOS min version
ifdef MACOSX_VERSION_MIN
CFLAGS+=	-mmacosx-version-min=$(MACOSX_VERSION_MIN)
LDFLAGS+=	-mmacosx-version-min=$(MACOSX_VERSION_MIN)
endif

# select specific Xcode
ifdef DEVELOPER_DIR
ifndef SDK
SDK:=		macosx
endif
else
DEVELOPER_DIR:=	$(shell xcode-select -p)
endif

# activate the selected Xcode and SDK
ifdef SDK
SDKPATH:=	$(shell DEVELOPER_DIR="$(DEVELOPER_DIR)" xcrun -find -sdk $(SDK) --show-sdk-path||echo none)
ifeq "$(SDKPATH)" "none"
$(error SDK not found)
endif
CPPFLAGS+=	-isysroot $(SDKPATH)
LDFLAGS+=	-isysroot $(SDKPATH)
CC:=		$(shell DEVELOPER_DIR="$(DEVELOPER_DIR)" xcrun -find -sdk $(SDK) cc||echo false)
CXX:=		$(shell DEVELOPER_DIR="$(DEVELOPER_DIR)" xcrun -find -sdk $(SDK) c++||echo false)
CODESIGN:=	$(shell DEVELOPER_DIR="$(DEVELOPER_DIR)" xcrun -find -sdk $(SDK) codesign||echo false)
else
CC?=		cc
CXX?=		c++
CODESIGN?=	codesign
endif


text:
# macOS kernel extension makefile
# Authored 2018, Daniel Roethlisberger
# Provided under the Unlicense
# https://github.com/droe/example.kext

# Designed to be included from a Makefile which defines the following:
#
# KEXTNAME        short name of the kext (e.g. example)
# KEXTVERSION     version number, cf. TN2420 (e.g. 1.0.0)
# KEXTBUILD       build number, cf. TN2420 (e.g. 1.0.0d1)
# BUNDLEDOMAIN    the reverse DNS notation prefix (e.g. com.example)
# COPYRIGHT       human readable copyright string
#
# Optionally, the Makefile can define the following:
#
# DEVIDKEXT       label of Developer ID cert in keyring for code signing
# ARCH            x86_64 (default) or i386
# PREFIX          install/uninstall location; default /Library/Extensions/
#
# BUNDLEID        kext bundle ID; default $(BUNDLEDOMAIN).kext.$(KEXTNAME)
# KEXTBUNDLE      name of kext bundle directory; default $(KEXTNAME).kext
# KEXTMACHO       name of kext Mach-O executable; default $(KEXTNAME)
#
# DEVELOPER_DIR   override Xcode Command Line Developer Tools directory
# MACOSX_VERSION_MIN  minimal version of macOS to target
# SDK             SDK name to build against (e.g. macosx, macosx10.11, ...);
#                 defaults to macosx$(MACOSX_VERSION_MIN) if min version is set
# CPPFLAGS        additional precompiler flags
# CFLAGS          additional compiler flags
# LDFLAGS         additional linker flags
# LIBS            additional libraries to link against
# KLFLAGS         additional kextlibs flags

# check mandatory vars

ifndef KEXTNAME
$(error KEXTNAME not defined)
endif

ifndef KEXTVERSION
ifdef KEXTBUILD
KEXTVERSION:=	$(KEXTBUILD)
else
$(error KEXTVERSION not defined)
endif
endif

ifndef KEXTBUILD
ifdef KEXTVERSION
KEXTBUILD:=	$(KEXTVERSION)
else
$(error KEXTBUILD not defined)
endif
endif

ifndef BUNDLEDOMAIN
$(error BUNDLEDOMAIN not defined)
endif

# defaults
BUNDLEID?=	$(BUNDLEDOMAIN).kext.$(KEXTNAME)
KEXTBUNDLE?=	$(KEXTNAME).kext
KEXTMACHO?=	$(KEXTNAME)
ARCH?=		x86_64
#ARCH?=		i386
PREFIX?=	/Library/Extensions/

# Xcode selection
ifdef MACOSX_VERSION_MIN
ifndef SDK
SDK:=		macosx$(MACOSX_VERSION_MIN)
endif
endif
include Mk/xcode.mk

# standard defines and includes for kernel extensions
CPPFLAGS+=	-DKERNEL \
		-DKERNEL_PRIVATE \
		-DDRIVER_PRIVATE \
		-DAPPLE \
		-DNeXT \
		-I/System/Library/Frameworks/Kernel.framework/Headers \
		-I/System/Library/Frameworks/Kernel.framework/PrivateHeaders

# convenience defines
CPPFLAGS+=	-DKEXTNAME_S=\"$(KEXTNAME)\" \
		-DKEXTVERSION_S=\"$(KEXTVERSION)\" \
		-DKEXTBUILD_S=\"$(KEXTBUILD)\" \
		-DBUNDLEID_S=\"$(BUNDLEID)\" \
		-DBUNDLEID=$(BUNDLEID) \

# c compiler flags
CFLAGS+=	-arch $(ARCH) \
		-fno-builtin \
		-fno-common \
		-mkernel \
		-msoft-float

# warnings
CFLAGS+=	-Wall -Wextra

# linker flags
LDFLAGS+=	-arch $(ARCH)
LDFLAGS+=	-nostdlib \
		-Xlinker -kext \
		-Xlinker -object_path_lto \
		-Xlinker -export_dynamic
LDFLAGS+=	-Xlinker -fatal_warnings

# libraries
#LIBS+=		-lkmodc++
LIBS+=		-lkmod
LIBS+=		-lcc_kext

# kextlibs flags
KLFLAGS+=	-c

# source, header, object and make files
SRCS:=		$(wildcard *.c)
HDRS:=		$(wildcard *.h)
OBJS:=		$(SRCS:.c=.o)
MKFS:=		$(wildcard Makefile GNUmakefile Mk/*.mk)

# targets

all: $(KEXTBUNDLE)

%.o: %.c $(HDRS)
	$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<

$(OBJS): $(MKFS)

$(KEXTMACHO): $(OBJS)
	$(CC) $(LDFLAGS) -static -o $@ $(LIBS) $^
	otool -h $@

Info.plist~: Info.plist.in $(MKFS)
	cat $< \
	| sed -e 's/__KEXTNAME__/$(KEXTNAME)/g' \
	      -e 's/__KEXTMACHO__/$(KEXTMACHO)/g' \
	      -e 's/__KEXTVERSION__/$(KEXTVERSION)/g' \
	      -e 's/__KEXTBUILD__/$(KEXTBUILD)/g' \
	      -e 's/__BUNDLEID__/$(BUNDLEID)/g' \
	      -e 's/__COPYRIGHT__/$(COPYRIGHT)/g' \
	>$@

$(KEXTBUNDLE): $(KEXTMACHO) Info.plist~
	mkdir -p $@/Contents/MacOS
	cp $< $@/Contents/MacOS
	cat Info.plist~ \
	| sed -e 's/__LIBS__//g' \
	>$@/Contents/Info.plist
	cat Info.plist~ \
	| awk '/__LIBS__/ {system("kextlibs -xml $(KLFLAGS) $@");next}1' \
	>$@/Contents/Info.plist~
	mv $@/Contents/Info.plist~ $@/Contents/Info.plist
	touch $@
ifdef DEVIDKEXT
	$(CODESIGN) -s $(DEVIDKEXT) -f $@
endif

load: $(KEXTBUNDLE)
	sudo chown -R root:wheel $<
	sudo sync
	sudo kextutil $<
	sudo chown -R '$(USER):$(shell id -gn)' $<
	sudo dmesg|grep $(KEXTNAME)|tail -1

stat:
	kextstat|grep $(KEXTNAME)

unload:
	sudo kextunload $(KEXTBUNDLE)

install: $(KEXTBUNDLE) uninstall
	test -d "$(PREFIX)"
	sudo cp -pr $< "$(PREFIX)/$<"
	sudo chown -R root:wheel "$(PREFIX)/$<"

uninstall:
	test -d "$(PREFIX)"
	test -e "$(PREFIX)/$(KEXTBUNDLE)" && \
		sudo rm -rf "$(PREFIX)/$(KEXTBUNDLE)" || true

clean:
	rm -rf $(KEXTBUNDLE) $(KEXTMACHO) Info.plist~ $(OBJS)

.PHONY: all load stat unload intall uninstall clean


text:
# Contributor Covenant Code of Conduct

## 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.

## Our Standards

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

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

## 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 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.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at adlerluiz10@gmail.com or rickinbsb@gmail.com. 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.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

repo_name: ytmdesktop/ytmdesktop

repo_language: JavaScript

mime_type: text/plain


text:
# Store variables

## App
| Key                                   | Type    | Values                       | Default                      | Description             |
| ------------------------------------- | ------- | ---------------------------- | ---------------------------- | ----------------------- |
| `uuid`                                | String  | `unique-id`                  | `unique-id`                  | Unique id for analytics |

## Settings
| Key                                        | Type    | Values                       | Default                      | Description                                                                          |
| ------------------------------------------ | ------- | ---------------------------- | ---------------------------- | -------------------------------------------------------------------------------------|
| `settings-app-audio-output`                | String  | `Audio devices`              | DEFAULT_AUDIO_DEVICE         | Define default audio output                                                          |
| `settings-app-language`                    | String  | `en`, `pt`, ...              | `en`                         | Language of the app                                                                  |
| `settings-clipboard-read`                  | Boolean | `true` or `false`            | `false`                      | Reads the clipboard for youtube links                                                |
| `settings-custom-css-app`                  | Boolean | `true` or `false`            | `false`                      | Custom css for main app                                                              |
| `settings-companion-server`                | Boolean | `true` or `false`            | `false`                      | Companion Server to control the player remotely                                      |
| `settings-companion-server-protect`        | Boolean | `true` or `false`            | `true`                       | Enable or disable protection of companion                                            |
| `settings-companion-server-token`          | String  | `String token`               | GENERATED_TOKEN              | Token to prevent anonymous control of the player                                     |
| `settings-continue-where-left-of`          | Boolean | `true` or `false`            | `false`                      | When you close and open the app, will return where you stopped                       |
| `settings-custom-css-page`                 | Boolean | `true` or `false`            | `false`                      | Custom css for web page                                                              |
| `settings-decibel-volume`                  | Boolean | `true` or `false`            | `true`                       | Replace the volume control with a decibel based system                               |
| `settings-disable-analytics`               | Boolean | `true` or `false`            | `false`                      | Disables the Analytics which the Application sends to Google Analytics               |
| `settings-discord-rich-presence`           | Boolean | `true` or `false`            | `false`                      | Integration with Discord Rich Presence                                               |
| `settings-enable-double-tapping-show-hide` | Boolean | `true` or `false`            | `true`                       | Enable or disable double-tapping to show/hide main window                            |
| `settings-enable-player-bgcolor`           | Boolean | `true` or `false`            | `false`                      | Enable or disable setting the background of the player to the color of the cover art |
| `settings-genius-auth-server`              | Boolean | `true` or `false`            | `false`                      | Turns off the authentication server & Genius lyrics provider                         |
| `settings-lyrics-always-top`               | Boolean | `true` or `false`            | `false`                      | Always show lyrics window on top                                                     |
| `settings-lyrics-provider`                 | String  | ?                            | 1                            | Lyrics provider - Not entirely sure how this is implemented                          |
| `settings-miniplayer-always-top`           | Boolean | `true` or `false`            | `false`                      | Always show miniplayer on top                                                        |
| `settings-miniplayer-resizeable`           | Boolean | `true` or `false`            | `false`                      | Make miniplayer resizable or not                                                     |
| `settings-miniplayer-show-task`            | Boolean | `true` or `false`            | `false`                      | Hide from task bar                                                                   |
| `settings-miniplayer-size`                 | String  |  Value represented by px     | `200`                        | Size of miniplayer                                                                   |
| `settings-page-zoom`                       | String  | `50` ~ `150`                 | `100`                        | Zoom of the main window                                                              |
| `settings-keep-background`                 | Boolean | `true` or `false`            | `false`                      | When close main window, keep the player on background                                |
| `settings-show-notifications`              | Boolean | `true` or `false`            | `false`                      | Show notifications on desktop when change music                                      |
| `settings-start-minimized`                 | Boolean | `true` or `false`            | `false`                      | Open player minimized in tray                                                        |
| `settings-start-on-boot`                   | Boolean | `true` or `false`            | `false`                      | Open player when system starts                                                       |
| `settings-volume`                          | String  | `0` ~ `100`                  | `100`                        | Playback volume                                                                      |
| `settings-volume-media-keys`               | Boolean | `true` or `false`            | `false`                      | Enable media volume keys for the playback volume                                     |
| `settings-pause-on-suspend`                | Boolean | `true` or `false`            | `false`                      | Pause media playback on `suspend` event triggered                                    |
| `settings-surround-sound`                  | Boolean | `true` or `false`            | `false`                      | Enable Chromium Flag "try-supported-channel-layouts" for surround sound/Speaker Fill |

## Window
| Key                                   | Type    | Values                       | Default                      | Description                                   |
| ------------------------------------- | ------- | ---------------------------- | ---------------------------- | --------------------------------------------- |
| `titlebar-type`                       | String  | `nice` or `system` or `none` | `nice`                       | Type of frame titlebar                        |
| `window-url`                          | String  | `https://music.youtube.com/` | `https://music.youtube.com/` | YouTube Music Url                             |
| `window-position`                     | Object  | `width` and `heigth`         | `{ width: x, heigth: y }`    | Position of the main window                   |
| `window-maximized`                    | Boolean | `true` or `false`            | `false`                      | Value to define if window is maximized or not |
| `window-size`                         | Object  | `width` and `heigth`         | `{ width: x, heigth: y }`    | Sizes of the main window                      |

## Variables
| Key                                   | Type    | Values                         | Default                      | Description                                   |
| ------------------------------------- | ------- | ------------------------------ | ---------------------------- | --------------------------------------------- |
| `genius-auth`                         | Object  | `access_token` and `token_type`| empty                        | Authorization token & type to make requests   |


text:
Thanks for taking the time to contribute with ytmdesktop!
If you have some commits to send our way, please, send a pull request to ```development``` branch, and if everything is good to go, it will be merged and included on the next release.

## Commits
This repository follows the [😜gitmoji](https://gitmoji.carloscuesta.me/) commit standard. Please, follow this standard to provide an easy way of identifying the purpose or intention of your commit, followed by a small description on the changes you've made. Here are some examples:

    $ git commit -m ":bug: padding on main window"
> :bug: padding on main window

(note that there is no need to start the message with "fix" as it is implied by the bug emoji)

---
    $ git commit -m ":sparkles: last.fm support"
> :sparkles: last.fm support

---
    $ git commit -m ":arrow_up: bumping electron version"
> :arrow_up: bumping electron version


text:
productName: YouTube Music Desktop App
appId: app.ytmd

files:
  - '**/*'
  - "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}"
  - "!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}"
  - "!**/node_modules/*.d.ts"
  - "!**/node_modules/.bin"
  - "!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}"
  - "!**/._*"
  - "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,.gitignore,.gitattributes}"
  - "!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}"
  - "!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}"
  - '!LICENSE.md'
  - '!CODE_OF_CONDUCT.md'
  - '!CONTRIBUTING.md'
  - '!README.md'
  - '!STORE_VARIABLES.md'
  - '!.prettierrc.json'
  - '!package.json'
  - '!package-lock.json'
  - '!.cache'
  - '!app-update.yml'
  - '!dev-app-update.yml'

protocols:
  name: YouTube Music Desktop
  schemes: [ytmd]

electronDownload:
  arch: x86
  cache: '.cache/electron-builder/'

win:
  icon: src/assets/favicon.ico
  publish:
    provider: generic
    url: 'https://dl.ytmdesktop.app/win'
    channel: latest

mac:
  icon: src/assets/favicon.icns
  category: public.app-category.music
  darkModeSupport: true
  target:
    - dmg
  publish:
    provider: generic
    url: 'https://dl.ytmdesktop.app/mac'
    channel: latest

linux:
  icon: src/assets/favicon.png
  category: AudioVideo
  publish:
    provider: generic
    url: 'https://dl.ytmdesktop.app/lin'
    channel: latest


text:
productName: YouTube Music Desktop App
appId: app.ytmd

files:
  - '**/*'
  - "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}"
  - "!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}"
  - "!**/node_modules/*.d.ts"
  - "!**/node_modules/.bin"
  - "!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}"
  - "!**/._*"
  - "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,.gitignore,.gitattributes}"
  - "!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}"
  - "!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}"
  - '!LICENSE.md'
  - '!CODE_OF_CONDUCT.md'
  - '!CONTRIBUTING.md'
  - '!README.md'
  - '!STORE_VARIABLES.md'
  - '!.prettierrc.json'
  - '!package.json'
  - '!package-lock.json'
  - '!.cache'
  - '!app-update.yml'
  - '!dev-app-update.yml'

protocols:
  name: YouTube Music Desktop
  schemes: [ytmd]

electronDownload:
  arch: x64
  cache: '.cache/electron-builder/'

win:
  icon: src/assets/favicon.ico
  publish:
    provider: generic
    url: 'https://dl.ytmdesktop.app/win'
    channel: latest

mac:
  icon: src/assets/favicon.icns
  category: public.app-category.music
  darkModeSupport: true
  target:
    - dmg
  publish:
    provider: generic
    url: 'https://dl.ytmdesktop.app/mac'
    channel: latest

linux:
  icon: src/assets/favicon.png
  category: AudioVideo
  publish:
    provider: generic
    url: 'https://dl.ytmdesktop.app/lin'
    channel: latest


text:
commit_hash = 'DEVELOPMENT_BUILD'
module.exports = { commit_hash: commit_hash }