diff --git a/extensions/focus/.gitignore b/extensions/focus/.gitignore
new file mode 100644
index 00000000000..ad70d66eb54
--- /dev/null
+++ b/extensions/focus/.gitignore
@@ -0,0 +1,10 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+
+# Raycast specific files
+raycast-env.d.ts
+
+# misc
+.DS_Store
diff --git a/extensions/focus/.prettierrc b/extensions/focus/.prettierrc
index b7d51e04aa8..fc0f5030683 100644
--- a/extensions/focus/.prettierrc
+++ b/extensions/focus/.prettierrc
@@ -1,4 +1,4 @@
{
"printWidth": 120,
"singleQuote": false
-}
\ No newline at end of file
+}
diff --git a/extensions/focus/CHANGELOG.md b/extensions/focus/CHANGELOG.md
index 035d5292500..169cd7ad24c 100644
--- a/extensions/focus/CHANGELOG.md
+++ b/extensions/focus/CHANGELOG.md
@@ -1,7 +1,5 @@
-# Focus Changelog
+# Coffee Changelog
-## [Fix] - 2023-03-28
+## [Release] - 2023-07-10
-- Fixed a bug with Custom focus duration, where the duration is calculated incorrectly if the hours field is blank.
-
-## [Initial Version] - 2022-12-26
\ No newline at end of file
+Initial release
\ No newline at end of file
diff --git a/extensions/focus/README.md b/extensions/focus/README.md
index b37fd10492d..573013dc5cd 100644
--- a/extensions/focus/README.md
+++ b/extensions/focus/README.md
@@ -1,6 +1,48 @@
-# Focus - Website Blocker
-The Focus extension allows you to manage Focus app directly in Raycast.
-## Requirements
-You need to have the Focus app for Mac installed to use this extension. You can download it from [https://heyfocus.com](https://heyfocus.com).
+![IMAGE 2023-07-01 15:02:59](https://getsound.ai/getsound/images/RayExtention_Icon_512.png)
+
+# GetSound - Raycast Extension
+
+## Overview
+
+[GetSound.ai](http://getsound.ai/) Raycast Extension is a slimmed-down version of our main GetSound.ai app, crafted especially for Raycast Community. It provides developers and users with a convenient and straightforward way to take a break and refocus during their work. Simply type "Focus" and you can generate short, 5-10 minute, calming ambient music tracks to help you get back on track.
+
+**What makes the full version of GetSound different?**
+
+If you want to experience the full GetSound.ai immersive audio user experience, we suggest downloading the app from our [Website](https://getsound.ai).
+Unlike the slimmed-down Raycast version, the full app features GetSound's unique RTS (Real-Time Soundscape) algorithm, which creates ambient music based on your environment. Factors such as weather, location, and time of day all contribute to creating a unique soundscape in that moment. So, if you want to meditate, relax, or stay inside on a rainy day, GetSound will generate the perfect soundtrack and keep playing new music for as long as you like. Plus, you'll enjoy these key features:
+* Enjoy continuous, uninterrupted and non-repeated soundscape music 24/7.
+* Hi-resolution audio quality.
+* Add and control extra layers of environmental effects, such as rivers, oceans, lakes, waterfalls, coffee shops, and more.
+* Change your location to generate more unique soundscapes.
+* Refresh funtion to regenerate new real-time soundscapes.
+* Weather Sync - This feature will be available only when certain weather conditions, like rain, storms, and winds, occur at your location. You can easily adjust the volume to your liking.
+* Timer Session - Do you have limited time to meditate or relax? With this feature, you can set the music to fade out after a set amount of time. Perfect for those with 15 minutes or less to spare.
+
+## Installation
+
+Install the [GetSound.ai](http://getsound.ai/) Raycast Extension from the Raycast Store.
+After installation, you can access the extension by typing "Focus" in the Raycast command bar.
+
+## Commands
+
+* **Quick Access**: Just type "Focus" to start your 5-10 minutes relaxing ambient music track.
+* **Stop Track**: Choose "Stop" command to end the playing music track.
+* **Skip Track**: Choose "Skip" to generate a new ambient track.
+
+## Feedback
+
+We value your feedback! If you have any suggestions, issues, or just want to tell us what you think of the GetSound Raycast Extension, please open a GitHub issue. We're always looking to improve and make the extension better for our users.
+
+## ℹ **Special Offer for Raycast Users**
+
+If you enjoy using the GetSound.ai Raycast Extension, we invite you to try out our full-featured GetSound.ai app. As a token of our appreciation for Raycast Community, we're offering an exclusive 15% discount for the GetSound.ai app personal plan. Enter the coupon code **`GetRay15OFF`** at checkout to take advantage of this offer.
+
+## Acknowledgments
+
+* [GetSound Official Website](https://getsound.ai)
+* [Wall Of Love](https://testimonial.to/getsound-ai/all)
+* [Discord Community](https://discord.com/invite/4gQVAyjYbs)
+* [Instagram](https://www.instagram.com/getsound.ai/)
+* [More Links](https://linktr.ee/getsound.ai)
diff --git a/extensions/focus/assets/command-icon.png b/extensions/focus/assets/command-icon.png
new file mode 100644
index 00000000000..c7a4ba61dc1
Binary files /dev/null and b/extensions/focus/assets/command-icon.png differ
diff --git a/extensions/focus/assets/logo.png b/extensions/focus/assets/logo.png
new file mode 100644
index 00000000000..94cbee25ecf
Binary files /dev/null and b/extensions/focus/assets/logo.png differ
diff --git a/extensions/focus/package-lock.json b/extensions/focus/package-lock.json
index 38832fc1c75..cf7e5cfec78 100644
--- a/extensions/focus/package-lock.json
+++ b/extensions/focus/package-lock.json
@@ -1,21 +1,23 @@
{
- "name": "focus",
+ "name": "coffee",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
- "name": "focus",
+ "name": "coffee",
"license": "MIT",
"dependencies": {
- "@raycast/api": "^1.45.0",
+ "@raycast/api": "^1.44.0",
+ "@raycast/utils": "^1.4.11",
"run-applescript": "^6.1.0"
},
"devDependencies": {
+ "@types/node": "~16.10.0",
+ "@types/react": "^17.0.28",
"@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "^5.0.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
- "prettier": "^2.5.1",
"typescript": "^4.4.3"
}
},
@@ -207,9 +209,9 @@
}
},
"node_modules/@raycast/api": {
- "version": "1.45.2",
- "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.45.2.tgz",
- "integrity": "sha512-fhpjQZOckvgrevW/Dn05fZNfQ6eDMJ2/Ds/a2IBl/yT4KUavOpB7npNgNbfbBkt1i5FnitOnJbJC5NDSy1iE7Q==",
+ "version": "1.46.0",
+ "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.46.0.tgz",
+ "integrity": "sha512-+Te4/dPhVUY84JtiVxUhgb1fNs2l1PwD4VH9DgSWMEQVr7fCK3cr6LtZFp9YNfe44G69epT05z886UyVmkim3w==",
"hasInstallScript": true,
"dependencies": {
"@types/node": "18.8.3",
@@ -233,6 +235,37 @@
}
}
},
+ "node_modules/@raycast/api/node_modules/@types/node": {
+ "version": "18.8.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz",
+ "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w=="
+ },
+ "node_modules/@raycast/api/node_modules/@types/react": {
+ "version": "18.0.9",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz",
+ "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@raycast/utils": {
+ "version": "1.4.16",
+ "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.4.16.tgz",
+ "integrity": "sha512-5U+bHN9KBdccW1Khato5eh/oN0nujDkd2ntjy/Rg5cMPU8YyyuV4vUayC3ZYA8Agkbn/BFj6xWz/wudWzNCcAQ==",
+ "dependencies": {
+ "content-type": "^1.0.4",
+ "cross-fetch": "^3.1.5",
+ "dequal": "^2.0.3",
+ "media-typer": "^1.1.0",
+ "object-hash": "^3.0.0",
+ "signal-exit": "^3.0.7"
+ },
+ "peerDependencies": {
+ "@raycast/api": ">=1.42.0"
+ }
+ },
"node_modules/@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@@ -240,9 +273,10 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "18.8.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz",
- "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w=="
+ "version": "16.10.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz",
+ "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==",
+ "dev": true
},
"node_modules/@types/prop-types": {
"version": "15.7.5",
@@ -250,9 +284,10 @@
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"node_modules/@types/react": {
- "version": "18.0.9",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz",
- "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==",
+ "version": "17.0.53",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz",
+ "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==",
+ "dev": true,
"dependencies": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -271,14 +306,14 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.1.tgz",
- "integrity": "sha512-r4RZ2Jl9kcQN7K/dcOT+J7NAimbiis4sSM9spvWimsBvDegMhKLA5vri2jG19PmIPbDjPeWzfUPQ2hjEzA4Nmg==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz",
+ "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.47.1",
- "@typescript-eslint/type-utils": "5.47.1",
- "@typescript-eslint/utils": "5.47.1",
+ "@typescript-eslint/scope-manager": "5.48.2",
+ "@typescript-eslint/type-utils": "5.48.2",
+ "@typescript-eslint/utils": "5.48.2",
"debug": "^4.3.4",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
@@ -304,14 +339,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.1.tgz",
- "integrity": "sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.2.tgz",
+ "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.47.1",
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/typescript-estree": "5.47.1",
+ "@typescript-eslint/scope-manager": "5.48.2",
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/typescript-estree": "5.48.2",
"debug": "^4.3.4"
},
"engines": {
@@ -331,13 +366,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.1.tgz",
- "integrity": "sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz",
+ "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/visitor-keys": "5.47.1"
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/visitor-keys": "5.48.2"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -348,13 +383,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.47.1.tgz",
- "integrity": "sha512-/UKOeo8ee80A7/GJA427oIrBi/Gd4osk/3auBUg4Rn9EahFpevVV1mUK8hjyQD5lHPqX397x6CwOk5WGh1E/1w==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz",
+ "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.47.1",
- "@typescript-eslint/utils": "5.47.1",
+ "@typescript-eslint/typescript-estree": "5.48.2",
+ "@typescript-eslint/utils": "5.48.2",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -375,9 +410,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.1.tgz",
- "integrity": "sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.2.tgz",
+ "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -388,13 +423,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.1.tgz",
- "integrity": "sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz",
+ "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/visitor-keys": "5.47.1",
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/visitor-keys": "5.48.2",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -415,16 +450,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.47.1.tgz",
- "integrity": "sha512-l90SdwqfmkuIVaREZ2ykEfCezepCLxzWMo5gVfcJsJCaT4jHT+QjgSkYhs5BMQmWqE9k3AtIfk4g211z/sTMVw==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.2.tgz",
+ "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.47.1",
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/typescript-estree": "5.47.1",
+ "@typescript-eslint/scope-manager": "5.48.2",
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/typescript-estree": "5.48.2",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0",
"semver": "^7.3.7"
@@ -441,12 +476,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.1.tgz",
- "integrity": "sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz",
+ "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.47.1",
+ "@typescript-eslint/types": "5.48.2",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -631,6 +666,22 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
+ "node_modules/content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "dependencies": {
+ "node-fetch": "2.6.7"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -672,6 +723,14 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -784,9 +843,9 @@
}
},
"node_modules/eslint-config-prettier": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
- "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz",
+ "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==",
"dev": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
@@ -1039,9 +1098,9 @@
"dev": true
},
"node_modules/fastq": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
- "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
@@ -1380,6 +1439,14 @@
"node": ">=10"
}
},
+ "node_modules/media-typer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -1445,6 +1512,25 @@
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
"node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -1456,6 +1542,14 @@
"node": ">=8"
}
},
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -1555,21 +1649,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/prettier": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz",
- "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==",
- "dev": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
"node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@@ -1580,9 +1659,9 @@
}
},
"node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"dev": true,
"engines": {
"node": ">=6"
@@ -1880,9 +1959,9 @@
}
},
"node_modules/table/node_modules/ajv": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
- "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
@@ -1919,6 +1998,11 @@
"node": ">=8.0"
}
},
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
"node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
@@ -1992,6 +2076,20 @@
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
"dev": true
},
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -2182,14 +2280,44 @@
}
},
"@raycast/api": {
- "version": "1.45.2",
- "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.45.2.tgz",
- "integrity": "sha512-fhpjQZOckvgrevW/Dn05fZNfQ6eDMJ2/Ds/a2IBl/yT4KUavOpB7npNgNbfbBkt1i5FnitOnJbJC5NDSy1iE7Q==",
+ "version": "1.46.0",
+ "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.46.0.tgz",
+ "integrity": "sha512-+Te4/dPhVUY84JtiVxUhgb1fNs2l1PwD4VH9DgSWMEQVr7fCK3cr6LtZFp9YNfe44G69epT05z886UyVmkim3w==",
"requires": {
"@types/node": "18.8.3",
"@types/react": "18.0.9",
"react": "18.1.0",
"react-reconciler": "0.28.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "18.8.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz",
+ "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w=="
+ },
+ "@types/react": {
+ "version": "18.0.9",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz",
+ "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==",
+ "requires": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ }
+ }
+ },
+ "@raycast/utils": {
+ "version": "1.4.16",
+ "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.4.16.tgz",
+ "integrity": "sha512-5U+bHN9KBdccW1Khato5eh/oN0nujDkd2ntjy/Rg5cMPU8YyyuV4vUayC3ZYA8Agkbn/BFj6xWz/wudWzNCcAQ==",
+ "requires": {
+ "content-type": "^1.0.4",
+ "cross-fetch": "^3.1.5",
+ "dequal": "^2.0.3",
+ "media-typer": "^1.1.0",
+ "object-hash": "^3.0.0",
+ "signal-exit": "^3.0.7"
}
},
"@types/json-schema": {
@@ -2199,9 +2327,10 @@
"dev": true
},
"@types/node": {
- "version": "18.8.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz",
- "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w=="
+ "version": "16.10.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.9.tgz",
+ "integrity": "sha512-H9ReOt+yqIJPCutkTYjFjlyK6WEMQYT9hLZMlWtOjFQY2ItppsWZ6RJf8Aw+jz5qTYceuHvFgPIaKOHtLAEWBw==",
+ "dev": true
},
"@types/prop-types": {
"version": "15.7.5",
@@ -2209,9 +2338,10 @@
"integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
},
"@types/react": {
- "version": "18.0.9",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz",
- "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==",
+ "version": "17.0.53",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.53.tgz",
+ "integrity": "sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==",
+ "dev": true,
"requires": {
"@types/prop-types": "*",
"@types/scheduler": "*",
@@ -2230,14 +2360,14 @@
"dev": true
},
"@typescript-eslint/eslint-plugin": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.1.tgz",
- "integrity": "sha512-r4RZ2Jl9kcQN7K/dcOT+J7NAimbiis4sSM9spvWimsBvDegMhKLA5vri2jG19PmIPbDjPeWzfUPQ2hjEzA4Nmg==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.2.tgz",
+ "integrity": "sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.47.1",
- "@typescript-eslint/type-utils": "5.47.1",
- "@typescript-eslint/utils": "5.47.1",
+ "@typescript-eslint/scope-manager": "5.48.2",
+ "@typescript-eslint/type-utils": "5.48.2",
+ "@typescript-eslint/utils": "5.48.2",
"debug": "^4.3.4",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
@@ -2247,53 +2377,53 @@
}
},
"@typescript-eslint/parser": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.1.tgz",
- "integrity": "sha512-9Vb+KIv29r6GPu4EboWOnQM7T+UjpjXvjCPhNORlgm40a9Ia9bvaPJswvtae1gip2QEeVeGh6YquqAzEgoRAlw==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.2.tgz",
+ "integrity": "sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.47.1",
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/typescript-estree": "5.47.1",
+ "@typescript-eslint/scope-manager": "5.48.2",
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/typescript-estree": "5.48.2",
"debug": "^4.3.4"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.1.tgz",
- "integrity": "sha512-9hsFDsgUwrdOoW1D97Ewog7DYSHaq4WKuNs0LHF9RiCmqB0Z+XRR4Pf7u7u9z/8CciHuJ6yxNws1XznI3ddjEw==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz",
+ "integrity": "sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/visitor-keys": "5.47.1"
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/visitor-keys": "5.48.2"
}
},
"@typescript-eslint/type-utils": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.47.1.tgz",
- "integrity": "sha512-/UKOeo8ee80A7/GJA427oIrBi/Gd4osk/3auBUg4Rn9EahFpevVV1mUK8hjyQD5lHPqX397x6CwOk5WGh1E/1w==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz",
+ "integrity": "sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==",
"dev": true,
"requires": {
- "@typescript-eslint/typescript-estree": "5.47.1",
- "@typescript-eslint/utils": "5.47.1",
+ "@typescript-eslint/typescript-estree": "5.48.2",
+ "@typescript-eslint/utils": "5.48.2",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
}
},
"@typescript-eslint/types": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.1.tgz",
- "integrity": "sha512-CmALY9YWXEpwuu6377ybJBZdtSAnzXLSQcxLSqSQSbC7VfpMu/HLVdrnVJj7ycI138EHqocW02LPJErE35cE9A==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.2.tgz",
+ "integrity": "sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.1.tgz",
- "integrity": "sha512-4+ZhFSuISAvRi2xUszEj0xXbNTHceV9GbH9S8oAD2a/F9SW57aJNQVOCxG8GPfSWH/X4eOPdMEU2jYVuWKEpWA==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz",
+ "integrity": "sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/visitor-keys": "5.47.1",
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/visitor-keys": "5.48.2",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -2302,28 +2432,28 @@
}
},
"@typescript-eslint/utils": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.47.1.tgz",
- "integrity": "sha512-l90SdwqfmkuIVaREZ2ykEfCezepCLxzWMo5gVfcJsJCaT4jHT+QjgSkYhs5BMQmWqE9k3AtIfk4g211z/sTMVw==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.2.tgz",
+ "integrity": "sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.47.1",
- "@typescript-eslint/types": "5.47.1",
- "@typescript-eslint/typescript-estree": "5.47.1",
+ "@typescript-eslint/scope-manager": "5.48.2",
+ "@typescript-eslint/types": "5.48.2",
+ "@typescript-eslint/typescript-estree": "5.48.2",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0",
"semver": "^7.3.7"
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.47.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.1.tgz",
- "integrity": "sha512-rF3pmut2JCCjh6BLRhNKdYjULMb1brvoaiWDlHfLNVgmnZ0sBVJrs3SyaKE1XoDDnJuAx/hDQryHYmPUuNq0ig==",
+ "version": "5.48.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz",
+ "integrity": "sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.47.1",
+ "@typescript-eslint/types": "5.48.2",
"eslint-visitor-keys": "^3.3.0"
}
},
@@ -2456,6 +2586,19 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "cross-fetch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "requires": {
+ "node-fetch": "2.6.7"
+ }
+ },
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -2486,6 +2629,11 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
+ "dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
+ },
"dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -2605,9 +2753,9 @@
}
},
"eslint-config-prettier": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
- "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz",
+ "integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==",
"dev": true,
"requires": {}
},
@@ -2763,9 +2911,9 @@
"dev": true
},
"fastq": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
- "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
"dev": true,
"requires": {
"reusify": "^1.0.4"
@@ -3020,6 +3168,11 @@
"yallist": "^4.0.0"
}
},
+ "media-typer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="
+ },
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -3073,6 +3226,14 @@
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
"dev": true
},
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ },
"npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -3081,6 +3242,11 @@
"path-key": "^3.0.0"
}
},
+ "object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="
+ },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -3150,12 +3316,6 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true
},
- "prettier": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz",
- "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==",
- "dev": true
- },
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@@ -3163,9 +3323,9 @@
"dev": true
},
"punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.2.0.tgz",
+ "integrity": "sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==",
"dev": true
},
"queue-microtask": {
@@ -3353,9 +3513,9 @@
},
"dependencies": {
"ajv": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
- "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@@ -3387,6 +3547,11 @@
"is-number": "^7.0.0"
}
},
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
"tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
@@ -3438,6 +3603,20 @@
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
"dev": true
},
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/extensions/focus/package.json b/extensions/focus/package.json
index 094a86e79e9..248ba881872 100644
--- a/extensions/focus/package.json
+++ b/extensions/focus/package.json
@@ -1,140 +1,61 @@
{
"$schema": "https://www.raycast.com/schemas/extension.json",
"name": "focus",
- "title": "Focus - Website Blocker For Mac",
- "description": "Raycast extension for Focus app",
- "icon": "focus-icon.png",
- "author": "ernest",
- "categories": [
- "Applications",
- "Productivity"
+ "title": "Focus",
+ "description": "Get focused with GetSound.AI",
+ "icon": "logo.png",
+ "author": "asgudev",
+ "access": "public",
+ "owner": "getsound-ai",
+ "categories": ["Productivity", "Media", "Fun"],
+ "contributors": [
+ "adigold1",
+ "lior_nitzan"
],
"license": "MIT",
"commands": [
{
- "name": "start-focus",
+ "name": "play",
"title": "Focus",
- "subtitle": "Focus",
- "description": "Start an un-timed focus session",
- "keywords": [
- "start",
- "focus"
- ],
+ "subtitle": "Start Music",
+ "description": "Begin your focused session.",
"mode": "no-view"
},
{
- "name": "start-focus-25",
- "title": "Focus (25 Minutes)",
- "subtitle": "Focus",
- "description": "Start a 25 minutes focus session.",
- "keywords": [
- "start"
- ],
- "mode": "no-view"
- },
- {
- "name": "start-focus-custom",
- "title": "Focus (Custom Duration)",
- "subtitle": "Focus",
- "description": "Start a focus session with custom duration",
- "keywords": [
- "start",
- "custom-focus"
- ],
- "mode": "no-view",
- "arguments": [
- {
- "name": "hours",
- "placeholder": "Hours",
- "type": "text",
- "required": false
- },
- {
- "name": "minutes",
- "placeholder": "Minutes",
- "type": "text",
- "required": false
- }
- ]
- },
- {
- "name": "take-break-5",
- "title": "Take Break (5 Minutes)",
- "subtitle": "Focus",
- "description": "Take a 5 minutes break",
- "keywords": [
- "break"
- ],
- "mode": "no-view"
- },
- {
- "name": "take-break-custom",
- "title": "Take Break (Custom Duration)",
- "subtitle": "Focus",
- "description": "Take a break with custom duration",
- "keywords": [
- "break",
- "custom-break"
- ],
- "mode": "no-view",
- "arguments": [
- {
- "name": "minutes",
- "placeholder": "Minutes",
- "type": "text",
- "required": false
- }
- ]
- },
- {
- "name": "stop-break",
- "title": "Stop Break",
- "subtitle": "Focus",
- "description": "Stop break and continue the current focus session.",
- "keywords": [
- "stop-break"
- ],
- "mode": "no-view"
- },
- {
- "name": "stop-focus",
- "title": "Unfocus",
- "subtitle": "Focus",
- "description": "Stop the current focus session",
- "keywords": [
- "stop",
- "unfocus"
- ],
+ "name": "stop",
+ "title": "Focus",
+ "subtitle": "Stop Music",
+ "description": "Stop the soundscape.",
"mode": "no-view"
},
{
- "name": "open-preferences",
- "title": "Open Preferences",
- "subtitle": "Focus",
- "description": "Open Focus Preferences",
- "keywords": [
- "preferences",
- "settings"
- ],
+ "name": "skip",
+ "title": "Focus",
+ "subtitle": "Skip Track",
+ "description": "Skip current soundscape",
"mode": "no-view"
}
],
+ "preferences": [],
"dependencies": {
- "@raycast/api": "^1.45.0",
+ "@raycast/api": "^1.44.0",
+ "@raycast/utils": "^1.4.11",
"run-applescript": "^6.1.0"
},
"devDependencies": {
+ "@types/node": "~16.10.0",
+ "@types/react": "^17.0.28",
"@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "^5.0.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
- "prettier": "^2.5.1",
"typescript": "^4.4.3"
},
"scripts": {
"build": "ray build -e dist",
"dev": "ray develop",
"fix-lint": "ray lint --fix",
- "lint": "ray lint"
+ "lint": "ray lint",
+ "publish": "ray publish"
}
}
diff --git a/extensions/focus/src/play.ts b/extensions/focus/src/play.ts
new file mode 100644
index 00000000000..04755c4bbbe
--- /dev/null
+++ b/extensions/focus/src/play.ts
@@ -0,0 +1,80 @@
+import { exec, spawn } from "child_process";
+import { showToast, LocalStorage } from "@raycast/api";
+
+function randomIntFromInterval(min: number, max: number) {
+ // min and max included
+ return Math.floor(Math.random() * (max - min + 1) + min);
+}
+
+export default async () => {
+ console.log("start");
+
+ await playCycle();
+};
+
+let interval: NodeJS.Timer;
+let tick = 0;
+
+const playCycle = async () => {
+ clearInterval(interval);
+ tick = 0;
+
+ const file = `raycast_gs_${randomIntFromInterval(0, 50)}.mp3`;
+
+ showToast({
+ title: "Buffering...",
+ });
+
+ await spawnAsync("curl", ["-O", `https://gs-raycast.s3.amazonaws.com/${file}`], { cwd: "/tmp" });
+
+ LocalStorage.setItem("isPlaying", true);
+ interval = setInterval(() => {
+ tick++;
+ console.log(tick);
+ LocalStorage.getItem("isPlaying").then((value) => {
+ if (!value) {
+ clearInterval(interval);
+ }
+ });
+ }, 1000);
+ await execAsync(`afplay /tmp/${file}`);
+
+ // await playCycle();
+};
+
+const execAsync = (command: string, options?: any) => {
+ return new Promise((resolve) => {
+ exec(command, options, (err, stdout) => {
+ console.log(err);
+ console.log(stdout);
+
+ if (!err) {
+ resolve();
+ }
+ });
+ });
+};
+
+const spawnAsync = (command: string, args: any, options?: any) => {
+ return new Promise((resolve) => {
+ const child = spawn(command, args, options);
+ // .on("error", console.log)
+ // .on("message", console.log);
+
+ child.stdout.on("data", (data) => {
+ console.log(`stdout:\n${data}`);
+ });
+
+ child.stderr.on("data", (data) => {
+ console.error(`stderr: ${data}`);
+ });
+
+ child.on("error", (error) => {
+ console.error(`error: ${error.message}`);
+ });
+
+ child.on("close", (code) => {
+ resolve();
+ });
+ });
+};
diff --git a/extensions/focus/src/skip.ts b/extensions/focus/src/skip.ts
new file mode 100644
index 00000000000..d398e6f1aa9
--- /dev/null
+++ b/extensions/focus/src/skip.ts
@@ -0,0 +1,86 @@
+import { exec, spawn } from "child_process";
+import { showToast, LocalStorage } from "@raycast/api";
+
+function randomIntFromInterval(min: number, max: number) {
+ // min and max included
+ return Math.floor(Math.random() * (max - min + 1) + min);
+}
+
+export default async () => {
+ console.log("start");
+
+ await playCycle();
+};
+
+let interval: NodeJS.Timer;
+let tick = 0;
+
+const playCycle = async () => {
+ clearInterval(interval);
+ tick = 0;
+
+ const file = `raycast_gs_${randomIntFromInterval(0, 50)}.mp3`;
+
+ showToast({
+ title: "Buffering...",
+ });
+
+ await spawnAsync("curl", ["-O", `https://gs-raycast.s3.amazonaws.com/${file}`], { cwd: "/tmp" });
+
+ const isPlaying = await LocalStorage.getItem("isPlaying");
+
+ if (isPlaying) {
+ await execAsync("/usr/bin/killall afplay");
+ }
+
+ LocalStorage.setItem("isPlaying", true);
+ interval = setInterval(() => {
+ tick++;
+ console.log(tick);
+ LocalStorage.getItem("isPlaying").then((value) => {
+ if (!value) {
+ clearInterval(interval);
+ }
+ });
+ }, 1000);
+ await execAsync(`afplay /tmp/${file}`);
+
+ await playCycle();
+};
+
+const execAsync = (command: string, options?: any) => {
+ return new Promise((resolve) => {
+ exec(command, options, (err, stdout) => {
+ console.log(err);
+ console.log(stdout);
+
+ if (!err) {
+ resolve();
+ }
+ });
+ });
+};
+
+const spawnAsync = (command: string, args: any, options?: any) => {
+ return new Promise((resolve) => {
+ const child = spawn(command, args, options);
+ // .on("error", console.log)
+ // .on("message", console.log);
+
+ child.stdout.on("data", (data) => {
+ console.log(`stdout:\n${data}`);
+ });
+
+ child.stderr.on("data", (data) => {
+ console.error(`stderr: ${data}`);
+ });
+
+ child.on("error", (error) => {
+ console.error(`error: ${error.message}`);
+ });
+
+ child.on("close", (code) => {
+ resolve();
+ });
+ });
+};
diff --git a/extensions/focus/src/stop.ts b/extensions/focus/src/stop.ts
new file mode 100644
index 00000000000..bc945d61215
--- /dev/null
+++ b/extensions/focus/src/stop.ts
@@ -0,0 +1,7 @@
+import { LocalStorage } from "@raycast/api";
+import { exec } from "child_process";
+
+export default async () => {
+ LocalStorage.removeItem("isPlaying");
+ exec("/usr/bin/killall afplay");
+};