diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index 2c0d22c..0000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,63 +0,0 @@
-stages:
- - Build
- - Upload
- - Release
-
-build:
- stage: Build
- tags:
- # Use a macos runner to build.
- - darwin
- before_script:
- - yarn
- script:
- - export VERSION=$(node -e "console.log(require('./package.json').version)")
- - echo "VERSION=$VERSION" >> variables.env
- - export APPNAME=$(node -e "console.log(require('./package.json').productName)")
- - echo "APPNAME=$APPNAME" >> variables.env
- - yarn build
- artifacts:
- reports:
- dotenv: variables.env
- name: $CI_COMMIT_REF_SLUG
- paths:
- - dist_electron/*.dmg
- - dist_electron/*.zip
- - dist_electron/*.yml
- when: on_success
- only:
- - main
-
-variables:
- PACKAGE: '${APPNAME}-${VERSION}.dmg'
- PACKAGE_REGISTRY_URL: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${APPNAME}/${VERSION}'
-
-# Upload package to gitlab registry.
-upload:
- stage: Upload
- needs:
- - job: build
- artifacts: true
- rules:
- - if: $CI_COMMIT_TAG
- when: never # Do not run this job when a tag is created manually
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when when commits are pushed to the default branch
- script:
- # Take the package we built and place it in the package registry.
- - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "dist_electron/${PACKAGE}" "${PACKAGE_REGISTRY_URL}/${PACKAGE}"'
-
-auto-release-master:
- image: registry.gitlab.com/gitlab-org/release-cli
- needs:
- - job: build
- artifacts: true
- - job: upload
- artifacts: true
- stage: Release
- rules:
- - if: $CI_COMMIT_TAG
- when: never # Do not run this job when a tag is created manually
- - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when when commits are pushed to the default branch
- script:
- - echo "Release $VERSION"
- - release-cli create --name "Release $VERSION" --tag-name v$VERSION --description "Release $CI_COMMIT_TITLE" --ref $CI_COMMIT_SHA --assets-link "{\"name\":\"${APPNAME}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${PACKAGE}\"}"
diff --git a/.npmrc b/.npmrc
index 936e781..d8d704d 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,2 +1,2 @@
@crimata:registry=https://gitlab.com/api/v4/projects/28849281/packages/npm/
-//gitlab.com/api/v4/projects/28849281/packages/npm/:_authToken=${NPM_TOKEN}
\ No newline at end of file
+//gitlab.com/api/v4/projects/28849281/packages/npm/:_authToken=${NPM_TOKEN}
diff --git a/README.md b/README.md
index c13a8ab..d5220b2 100644
--- a/README.md
+++ b/README.md
@@ -27,3 +27,6 @@ yarn lint
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
+
+## Sign and Notarize
+Running notarize.js will sign and notarize the app. Further information is in that file.
diff --git a/entitlements.plist b/entitlements.plist
new file mode 100644
index 0000000..06bbc8d
--- /dev/null
+++ b/entitlements.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ com.apple.security.cs.allow-jit
+
+ com.apple.security.cs.debugger
+
+ com.apple.security.cs.allow-unsigned-executable-memory
+
+ com.apple.security.device.audio-input
+
+ com.apple.security.cs.disable-library-validation
+
+
+
diff --git a/notarize.js b/notarize.js
new file mode 100644
index 0000000..9b40917
--- /dev/null
+++ b/notarize.js
@@ -0,0 +1,54 @@
+const sign = require("electron-osx-sign").signAsync;
+const notarize = require("electron-notarize").notarize;
+
+const path = __dirname + "/Electron.app/Contents/Resources/app/node_modules";
+
+const addons = [
+ `${path}/@crimata/nodeaudio/build/Release/libportaudio.dylib`,
+ `${path}/@crimata/nodeaudio/build/Release/nodeAudio.node`
+];
+
+const signConfig = {
+ "app": "Electron.app",
+ "platform": "darwin",
+ "binaries": addons,
+ "hardened-runtime": true,
+ "entitlements": "entitlements.plist",
+ "entitlements-inherit": "entitlements.plist",
+ "signature-flags": "library",
+ "gatekeeper-assess": false
+};
+
+const notarizeConfig = {
+ appBundleId: "com.github.Electron",
+ appPath: "Electron.app",
+ appleId: "gundersena@crimata.com",
+ appleIdPassword: "wdeb-cbcq-rujb-ldgo"
+};
+
+(async function () {
+
+ try
+ {
+ await sign(signConfig);
+ console.log("Notarizing...");
+ await notarize(notarizeConfig);
+ }
+ catch (e)
+ {
+ console.log(e);
+ }
+
+})();
+
+/* Clear debris from .app before running or it will complain:
+ * xattr -cr Electron.app
+ *
+ * Paste this in terminal to debug electron-osx-sign:
+ * export DEBUG=electron-osx-sign*
+ *
+ * Some important things to note:
+ * - In order to notarize, you need a valid Apple Developer ID Application * Certificate.
+ * - All flags in current signing config are required for notarization (to
+ * my knowledge).
+ */
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 2278825..6505d8a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,12 +13,16 @@
"base64-arraybuffer": "^1.0.1",
"electron-store": "^8.0.0",
"ws": "^7.3.1"
+ },
+ "devDependencies": {
+ "electron-notarize": "^1.1.1",
+ "electron-osx-sign": "^0.6.0"
}
},
"node_modules/@crimata/nodeaudio": {
"version": "0.0.0",
"resolved": "https://gitlab.com/api/v4/projects/28849281/packages/npm/@crimata/nodeaudio/-/@crimata/nodeaudio-0.0.0.tgz",
- "integrity": "sha1-KTpDGuL8j3x72BLNb4Iyg8zgARo=",
+ "integrity": "sha1-epnrLe2KfWntf4tPqwW4KVb/sQ0=",
"hasInstallScript": true,
"dependencies": {
"bindings": "~1.2.1",
@@ -56,6 +60,15 @@
}
}
},
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/atomically": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
@@ -65,11 +78,11 @@
}
},
"node_modules/axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"dependencies": {
- "follow-redirects": "^1.10.0"
+ "follow-redirects": "^1.14.0"
}
},
"node_modules/base64-arraybuffer": {
@@ -80,11 +93,68 @@
"node": ">= 0.6.0"
}
},
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/bindings": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
"integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
},
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dev": true,
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "dev": true
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+ "dev": true
+ },
+ "node_modules/compare-version": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+ "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/conf": {
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/conf/-/conf-10.0.2.tgz",
@@ -122,6 +192,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/dot-prop": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
@@ -136,6 +223,55 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/electron-notarize": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.1.1.tgz",
+ "integrity": "sha512-kufsnqh86CTX89AYNG3NCPoboqnku/+32RxeJ2+7A4Rbm4bbOx0Nc7XTy3/gAlBfpj9xPAxHfhZLOHgfi6cJVw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "fs-extra": "^9.0.1"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/electron-osx-sign": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz",
+ "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "compare-version": "^0.1.2",
+ "debug": "^2.6.8",
+ "isbinaryfile": "^3.0.2",
+ "minimist": "^1.2.0",
+ "plist": "^3.0.1"
+ },
+ "bin": {
+ "electron-osx-flat": "bin/electron-osx-flat.js",
+ "electron-osx-sign": "bin/electron-osx-sign.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/electron-osx-sign/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/electron-osx-sign/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
"node_modules/electron-store": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.0.0.tgz",
@@ -173,9 +309,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz",
- "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==",
+ "version": "1.14.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
"funding": [
{
"type": "individual",
@@ -191,6 +327,27 @@
}
}
},
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.9",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
+ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
+ "dev": true
+ },
"node_modules/is-obj": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
@@ -199,6 +356,18 @@
"node": ">=8"
}
},
+ "node_modules/isbinaryfile": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
+ "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-alloc": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
@@ -209,6 +378,18 @@
"resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz",
"integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A=="
},
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
"node_modules/locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -240,6 +421,18 @@
"node": ">=8"
}
},
+ "node_modules/minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "dev": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
"node_modules/nan": {
"version": "2.15.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
@@ -319,6 +512,19 @@
"node": ">=8"
}
},
+ "node_modules/plist": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz",
+ "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==",
+ "dev": true,
+ "dependencies": {
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^9.0.7"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -372,6 +578,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -400,6 +615,15 @@
}
}
},
+ "node_modules/xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -410,7 +634,7 @@
"@crimata/nodeaudio": {
"version": "0.0.0",
"resolved": "https://gitlab.com/api/v4/projects/28849281/packages/npm/@crimata/nodeaudio/-/@crimata/nodeaudio-0.0.0.tgz",
- "integrity": "sha1-KTpDGuL8j3x72BLNb4Iyg8zgARo=",
+ "integrity": "sha1-epnrLe2KfWntf4tPqwW4KVb/sQ0=",
"requires": {
"bindings": "~1.2.1",
"sleep": "^6.3.0"
@@ -435,17 +659,23 @@
"ajv": "^8.0.0"
}
},
+ "at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true
+ },
"atomically": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
"integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w=="
},
"axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"requires": {
- "follow-redirects": "^1.10.0"
+ "follow-redirects": "^1.14.0"
}
},
"base64-arraybuffer": {
@@ -453,11 +683,51 @@
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz",
"integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA=="
},
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
"bindings": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
"integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
},
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dev": true,
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "dev": true
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+ "dev": true
+ },
+ "compare-version": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
+ "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
+ "dev": true
+ },
"conf": {
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/conf/-/conf-10.0.2.tgz",
@@ -483,6 +753,15 @@
"mimic-fn": "^3.0.0"
}
},
+ "debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
"dot-prop": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
@@ -491,6 +770,47 @@
"is-obj": "^2.0.0"
}
},
+ "electron-notarize": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.1.1.tgz",
+ "integrity": "sha512-kufsnqh86CTX89AYNG3NCPoboqnku/+32RxeJ2+7A4Rbm4bbOx0Nc7XTy3/gAlBfpj9xPAxHfhZLOHgfi6cJVw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "fs-extra": "^9.0.1"
+ }
+ },
+ "electron-osx-sign": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz",
+ "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "compare-version": "^0.1.2",
+ "debug": "^2.6.8",
+ "isbinaryfile": "^3.0.2",
+ "minimist": "^1.2.0",
+ "plist": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
"electron-store": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.0.0.tgz",
@@ -519,15 +839,42 @@
}
},
"follow-redirects": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz",
- "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA=="
+ "version": "1.14.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
+ },
+ "fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.9",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
+ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
+ "dev": true
},
"is-obj": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
},
+ "isbinaryfile": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz",
+ "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==",
+ "dev": true,
+ "requires": {
+ "buffer-alloc": "^1.2.0"
+ }
+ },
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
@@ -538,6 +885,16 @@
"resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz",
"integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A=="
},
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -560,6 +917,18 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
"integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ=="
},
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
"nan": {
"version": "2.15.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz",
@@ -614,6 +983,16 @@
"find-up": "^3.0.0"
}
},
+ "plist": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz",
+ "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.5.1",
+ "xmlbuilder": "^9.0.7"
+ }
+ },
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -645,6 +1024,12 @@
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA=="
},
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ },
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -659,6 +1044,12 @@
"integrity": "sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==",
"requires": {}
},
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+ "dev": true
+ },
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
diff --git a/package.json b/package.json
index 1f1a9d4..9f62421 100644
--- a/package.json
+++ b/package.json
@@ -17,5 +17,9 @@
"base64-arraybuffer": "^1.0.1",
"electron-store": "^8.0.0",
"ws": "^7.3.1"
+ },
+ "devDependencies": {
+ "electron-notarize": "^1.1.1",
+ "electron-osx-sign": "^0.6.0"
}
}
diff --git a/src/account.js b/src/account.js
index 4c4e116..df404d3 100644
--- a/src/account.js
+++ b/src/account.js
@@ -5,7 +5,7 @@ const store = require("./utils/store");
const { launchSession, endSession } = require("./session");
const { backgroundMitt, ipcEmit } = require("./utils/emitter");
-async function login(_e, creds)
+async function auth(_e, creds)
{
const { error, data } = await post("/auth", creds);
@@ -15,26 +15,38 @@ async function login(_e, creds)
}
store.set("account", data);
- ipcEmit("set-account", data);
+ ipcEmit("account", data);
launchSession(data);
};
function logout(_e, reason)
{
store.delete("account");
- ipcEmit("set-account", false, reason);
+ ipcEmit("account", false, reason);
endSession();
};
function initAccount()
{
- ipcMain.handle("login", login);
+ ipcMain.handle("auth", auth);
ipcMain.on("logout", logout);
const account = store.get("account");
if (account) launchSession(account);
+
+ for (let i = 0; i < 10; i++)
+ {
+ setTimeout(() => {
+ console.log("Testing Main to Render IPC");
+ ipcEmit("test");
+ }, 1000 * i)
+ }
+
+ ipcMain.on("test", () => console.log("Received from Render!"));
+
}
backgroundMitt.on("logout", (reason) => logout(null, reason));
+
exports.initAccount = initAccount;
diff --git a/src/io.js b/src/io.js
index 701fbe4..f09d3cf 100644
--- a/src/io.js
+++ b/src/io.js
@@ -59,7 +59,7 @@ function disconnectFromPlatform()
function setConnectionStatus(status)
{
updateTray("disconnect", status);
- ipcEmit("ws-status", status);
+ ipcEmit("ws", status);
}
ipcMain.on("message", (_e, message) => sendMessage(message));
diff --git a/src/main.js b/src/main.js
index 45f77ac..63e4d13 100644
--- a/src/main.js
+++ b/src/main.js
@@ -19,10 +19,10 @@ app.on("ready", () =>
initAccount();
});
-// app.on("will-quit", terminateAudio);
+app.on("will-quit", terminateAudio);
// When user clicks app icon (re-open)
app.on("activate", createWin);
// Prevents app from quitting on window close event
-app.on('window-all-closed', (e) => e.preventDefault());
\ No newline at end of file
+app.on('window-all-closed', (e) => e.preventDefault());
diff --git a/src/render/components/app.js b/src/render/components/app.js
index 85560a2..b92cb53 100644
--- a/src/render/components/app.js
+++ b/src/render/components/app.js
@@ -32,12 +32,22 @@ const App =
`
}
-window.mainApi.on("set-account", (value, reason) => {
+for (let i = 0; i < 30; i++)
+{
+ setTimeout(() => {
+ console.log("Testing Render to Main IPC.");
+ window.mainApi.send("test");
+ }, i * 1000);
+}
+
+window.mainApi.on("account", (value, reason) => {
console.log(value, reason);
if (reason) alert(reason);
account.value = value;
});
+window.mainApi.on("test", () => console.log("Received from Main!"));
+
export default App;
export { account };
diff --git a/src/render/components/form.js b/src/render/components/form.js
index 31c662a..fbc7b0e 100644
--- a/src/render/components/form.js
+++ b/src/render/components/form.js
@@ -34,7 +34,7 @@ const SmartForm =
object[key] = value;
});
- const err = await window.mainApi.invoke("login", object)
+ const err = await window.mainApi.invoke(props.channel, object)
if (err) {
logsEl.innerText = err;
diff --git a/src/render/components/header.js b/src/render/components/header.js
index 0851a69..5aee0de 100644
--- a/src/render/components/header.js
+++ b/src/render/components/header.js
@@ -1,7 +1,7 @@
const Header =
{
setup() {
- const onNavBar = (command) => window.mainApi.send('nav-bar', command);
+ const onNavBar = (command) => window.mainApi.send("nav", command);
return { onNavBar };
},
diff --git a/src/render/components/ws.js b/src/render/components/ws.js
index 2f60eab..265915b 100644
--- a/src/render/components/ws.js
+++ b/src/render/components/ws.js
@@ -7,7 +7,7 @@ const WS =
Vue.onMounted(() => {
- window.mainApi.on("ws-status", (val) => {
+ window.mainApi.on("ws", (val) => {
status.value = val;
});
diff --git a/src/render/preload.js b/src/render/preload.js
index a2f3896..8dd441b 100644
--- a/src/render/preload.js
+++ b/src/render/preload.js
@@ -3,23 +3,26 @@ const { contextBridge, ipcRenderer } = require("electron");
/** The main <-> render interface */
const validFromMainChannels = [
- "set-account",
- "message",
- "ws-status",
+ "playback",
+ "account",
+ "message",
"record",
- "playback"
+ "ws",
+ "test"
];
const validToMain = [
"messenger",
"message",
- "login",
"logout",
"encode",
- "decode",
- "nav-bar"
+ "auth",
+ "nav",
+ "test"
]
+console.log("Running Preload!");
+
ipcRenderer.setMaxListeners(250);
// Expose protected methods that allow the renderer process to use
diff --git a/src/session.js b/src/session.js
index ad83217..9cd33ca 100644
--- a/src/session.js
+++ b/src/session.js
@@ -64,14 +64,14 @@ const search = (id) => ui.messages.find(m => m.id == id);
function launchSession(account)
{
connectToPlatform(account);
- // initAudio();
+ initAudio();
processContentId = setInterval(handleMessageQueue, 100);
}
function endSession()
{
clearInterval(processContentId);
- // terminateAudio();
+ terminateAudio();
disconnectFromPlatform();
ui = null;
}
diff --git a/src/window.js b/src/window.js
index d9ae054..3f67a00 100644
--- a/src/window.js
+++ b/src/window.js
@@ -21,7 +21,7 @@ function updateWindowPosition()
}
-function onNavBar(_e, cmd)
+function onNav(_e, cmd)
{
cmd === "close" ? win.close() : win.minimize();
}
@@ -30,6 +30,8 @@ function createWin()
{
if (win) return;
+ console.log(__dirname);
+
let pos = store.get("window-position");
if (!pos) pos = { width: 350, height: 750, x: null, y: null }
@@ -71,10 +73,10 @@ function createWin()
}
});
- win.webContents.send("set-account", store.get("account"));
+ win.webContents.send("account", store.get("account"));
});
}
-ipcMain.on("nav-bar", onNavBar);
+ipcMain.on("nav", onNav);
exports.createWin = createWin;