From 4ef4109bc0973d809982b48334282aeae45597d9 Mon Sep 17 00:00:00 2001 From: nothingismagick Date: Mon, 9 Dec 2019 15:08:00 +0100 Subject: [PATCH] fix(workflow): quasar example (#141) --- examples/vue/quasar-app/package.json | 6 +- examples/vue/quasar-app/src-tauri/.gitignore | 2 +- examples/vue/quasar-app/src-tauri/tauri.js | 268 +++++++++++++++++++ examples/vue/quasar-app/yarn.lock | 103 ++++--- 4 files changed, 331 insertions(+), 48 deletions(-) create mode 100644 examples/vue/quasar-app/src-tauri/tauri.js diff --git a/examples/vue/quasar-app/package.json b/examples/vue/quasar-app/package.json index 7c1f7280e..0dfcc9363 100644 --- a/examples/vue/quasar-app/package.json +++ b/examples/vue/quasar-app/package.json @@ -22,16 +22,16 @@ }, "dependencies": { "@quasar/extras": "^1.0.0", - "quasar": "^1.5.3" + "quasar": "^1.5.7" }, "devDependencies": { - "@quasar/app": "1.3.2", + "@quasar/app": "^1.3.5", "@vue/eslint-config-standard": "^4.0.0", "babel-eslint": "^10.0.1", "eslint": "^5.10.0", "eslint-loader": "^2.1.1", "eslint-plugin-vue": "^5.0.0", - "tauri": "^0.1.3" + "tauri": "^0.1.9" }, "engines": { "node": ">= 8.9.0", diff --git a/examples/vue/quasar-app/src-tauri/.gitignore b/examples/vue/quasar-app/src-tauri/.gitignore index 7edd4be3f..837beb743 100644 --- a/examples/vue/quasar-app/src-tauri/.gitignore +++ b/examples/vue/quasar-app/src-tauri/.gitignore @@ -9,6 +9,6 @@ Cargo.lock # These are backup files generated by rustfmt **/*.rs.bk -tauri.js +# tauri.js config.json bundle.json diff --git a/examples/vue/quasar-app/src-tauri/tauri.js b/examples/vue/quasar-app/src-tauri/tauri.js new file mode 100644 index 000000000..52437fc0f --- /dev/null +++ b/examples/vue/quasar-app/src-tauri/tauri.js @@ -0,0 +1,268 @@ +/* eslint-disable */ + +/** + * * THIS FILE IS GENERATED AUTOMATICALLY. + * DO NOT EDIT. + * + * Please whitelist these API functions in tauri.conf.js + * + **/ + +/** + * @module tauri + * @description This API interface makes powerful interactions available + * to be run on client side applications. They are opt-in features, and + * must be enabled in tauri.conf.js + * + * Each binding MUST provide these interfaces in order to be compliant, + * and also whitelist them based upon the developer's settings. + */ + +function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1) +} + +var uid = function () { + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + + s4() + '-' + s4() + s4() + s4() +} + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + +var __reject = new Promise(function (reject) { + reject; +}); + +window.tauri = { + + invoke: function invoke(args) { + + window.parent.postMessage({ + type: 'tauri-invoke', + payload: JSON.stringify(args) + }, '*') + + }, + + + listen: function listen(event, handler) { + var once = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + this.invoke({ + cmd: 'listen', + event: event, + handler: window.tauri.transformCallback(handler, once), + once: once + }); + }, + + + emit: function emit(evt, payload) { + this.invoke({ + cmd: 'emit', + event: evt, + payload: payload + }); + }, + + + transformCallback: function transformCallback(callback) { + var once = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var identifier = Object.freeze(uid()); + + window[identifier] = function (result) { + if (once) { + delete window[identifier]; + } + + return callback && callback(result); + }; + + return identifier; + }, + + + promisified: function promisified(args) { + var _this = this; + + return new Promise(function (resolve, reject) { + _this.invoke(_objectSpread({ + callback: _this.transformCallback(resolve), + error: _this.transformCallback(reject) + }, args)); + }); + }, + + + readTextFile: function readTextFile(path) { + + Object.freeze(path); + return this.promisified({ + cmd: 'readTextFile', + path: path + }); + + }, + + + readBinaryFile: function readBinaryFile(path) { + + Object.freeze(path); + return this.promisified({ + cmd: 'readBinaryFile', + path: path + }); + + }, + + + writeFile: function writeFile(cfg) { + + Object.freeze(cfg); + this.invoke({ + cmd: 'writeFile', + file: cfg.file, + contents: cfg.contents + }); + + }, + + + listFiles: function listFiles(path) { + + + Object.freeze(path); + return this.promisified({ + cmd: 'listFiles', + path: path + }); + + }, + + + listDirs: function listDirs(path) { + + Object.freeze(path); + return this.promisified({ + cmd: 'listDirs', + path: path + }); + + }, + + + setTitle: function setTitle(title) { + + Object.freeze(title); + this.invoke({ + cmd: 'setTitle', + title: title + }); + + }, + + + open: function open(uri) { + + Object.freeze(uri); + this.invoke({ + cmd: 'open', + uri: uri + }); + + }, + + + execute: function execute(command, args) { + + + Object.freeze(command); + + if (typeof args === 'string' || _typeof(args) === 'object') { + Object.freeze(args); + } + + return this.promisified({ + cmd: 'execute', + command: command, + args: typeof args === 'string' ? [args] : args + }); + + }, + + bridge: function bridge(command, payload) { + + + Object.freeze(command); + + if (typeof payload === 'string' || _typeof(payload) === 'object') { + Object.freeze(payload); + } + + return this.promisified({ + cmd: 'bridge', + command: command, + payload: _typeof(payload) === 'object' ? [payload] : payload + }); + + } +}; + +window.addEventListener('message', function (event) { + event.data.type === 'tauri-callback' && window[event.data.callback](event.data.payload) +}) + +// init tauri API + +window.onTauriInit = function () { + alert('mounted') + console.log(window.tauri) +} + +function __initTauri () { + if (window.onTauriInit !== void 0) { + window.onTauriInit() + } + alert('INIT') +} + +if (window.top === window.self) { + // detect if we are in an iframe + // technically "dev mode" + window.addEventListener('message', function (event) { + alert(JSON.stringify(event.data.payload)) + if (event.data.type === 'tauri-invoke') { + window.external.invoke(event.data.payload) + } + }, true) +} else { + // this is an iframe + window.addEventListener('message', function (event) { + alert(JSON.stringify(event)) + alert(JSON.stringify(event.data)) + alert(JSON.stringify(event.data.payload)) + }, true) +} + +window.addEventListener('DOMContentLoaded', function () { + // open links with the Tauri API + document.querySelector('body').addEventListener('click', function (e) { + var target = e.target + while (target != null) { + if (target.matches ? target.matches('a') : target.msMatchesSelector('a')) { + window.tauri.open(target.href) + break + } + target = target.parentElement + } + }, true) +}, true) diff --git a/examples/vue/quasar-app/yarn.lock b/examples/vue/quasar-app/yarn.lock index 65faaf792..6f043f8df 100644 --- a/examples/vue/quasar-app/yarn.lock +++ b/examples/vue/quasar-app/yarn.lock @@ -845,27 +845,27 @@ resolved "https://registry.npmjs.org/@positron/stack-trace/-/stack-trace-1.0.0.tgz#14fcc712a530038ef9be1ce6952315a839f466a8" integrity sha1-FPzHEqUwA475vhzmlSMVqDn0Zqg= -"@quasar/app@1.3.2": - version "1.3.2" - resolved "https://registry.npmjs.org/@quasar/app/-/app-1.3.2.tgz#c4e419dbafaba584ea22ea22fca77f43340144e3" - integrity sha512-AlZtUtcCFv8AV32bkKauc3+r9dqPUsj1846JC4ceKMFBqFV1o1q3Hv6Wlv9m0TG+JIKjLNrVBL889brMqljNmg== +"@quasar/app@^1.3.5": + version "1.3.5" + resolved "https://registry.npmjs.org/@quasar/app/-/app-1.3.5.tgz#23f829f2093882dd675e1f5acf5349b17cc17f34" + integrity sha512-2wTIzkLODo74NJmTmxtzBukQFfOXGCadrjMh1eoknR5r0y3tPnVSTwnvQKMPVEUUf2L4WMKAkGhsEXN0QkyAtw== dependencies: "@quasar/babel-preset-app" "1.1.7" "@quasar/fastclick" "1.1.4" "@vue/preload-webpack-plugin" "1.1.1" - autoprefixer "9.7.2" + autoprefixer "9.7.3" chalk "3.0.0" chokidar "3.3.0" ci-info "2.0.0" compression-webpack-plugin "3.0.0" copy-webpack-plugin "5.0.5" cross-spawn "7.0.1" - css-loader "3.2.0" + css-loader "3.2.1" cssnano "4.1.10" dot-prop "5.2.0" elementtree "0.1.7" express "4.17.1" - fast-glob "3.1.0" + fast-glob "3.1.1" file-loader "^5.0.2" friendly-errors-webpack-plugin "1.7.0" fs-extra "8.1.0" @@ -1488,13 +1488,13 @@ atob@^2.1.1: resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@9.7.2: - version "9.7.2" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.2.tgz#26cf729fbb709323b40171a874304884dcceffed" - integrity sha512-LCAfcdej1182uVvPOZnytbq61AhnOZ/4JelDaJGDeNwewyU1AMaNthcHsyz1NRjTmd2FkurMckLWfkHg3Z//KA== +autoprefixer@9.7.3: + version "9.7.3" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" + integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== dependencies: - browserslist "^4.7.3" - caniuse-lite "^1.0.30001010" + browserslist "^4.8.0" + caniuse-lite "^1.0.30001012" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" @@ -1897,6 +1897,15 @@ browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.7.3: electron-to-chromium "^1.3.317" node-releases "^1.1.41" +browserslist@^4.8.0: + version "4.8.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" + integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== + dependencies: + caniuse-lite "^1.0.30001015" + electron-to-chromium "^1.3.322" + node-releases "^1.1.42" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -2125,11 +2134,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001010, caniuse-lite@^1.0.30001012: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001012: version "1.0.30001012" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001012.tgz#653ec635e815b9e0fb801890923b0c2079eb34ec" integrity sha512-7RR4Uh04t9K1uYRWzOJmzplgEOAXbfK72oVNokCdMzA67trrhPzy93ahKk1AWHiA0c58tD2P+NHqxrA8FZ+Trg== +caniuse-lite@^1.0.30001015: + version "1.0.30001015" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0" + integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2720,23 +2734,23 @@ css-declaration-sorter@^4.0.1: postcss "^7.0.1" timsort "^0.3.0" -css-loader@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" - integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== +css-loader@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.2.1.tgz#62849b45a414b7bde0bfba17325a026471040eae" + integrity sha512-q40kYdcBNzMvkIImCL2O+wk8dh+RGwPPV9Dfz3n7XtOYPXqe2Z6VgtvoxjkLHz02gmhepG9sOAJOUlx+3hHsBg== dependencies: camelcase "^5.3.1" cssesc "^3.0.0" icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.17" + postcss "^7.0.23" postcss-modules-extract-imports "^2.0.0" postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.0" + postcss-modules-scope "^2.1.1" postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.0" - schema-utils "^2.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" css-parse@~2.0.0: version "2.0.0" @@ -3335,6 +3349,11 @@ electron-to-chromium@^1.3.317: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.319.tgz#b7d59a93b6959fcf50a526f50ef637d045ebcb19" integrity sha512-t/lYNZPwS9jLJ9SBLGd6ERYtCtsYPAXzsE1VYLshrUWpQCTAswO1pERZV4iOZipW2uVsGQrJtm2iWiYVp1zTZw== +electron-to-chromium@^1.3.322: + version "1.3.322" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" + integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== + elementtree@0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz#9ac91be6e52fb6e6244c4e54a4ac3ed8ae8e29c0" @@ -3866,17 +3885,6 @@ fast-deep-equal@^2.0.1: resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-glob@3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae" - integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - fast-glob@3.1.1, fast-glob@^3.0.3: version "3.1.1" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" @@ -6484,6 +6492,13 @@ node-releases@^1.1.41: dependencies: semver "^6.3.0" +node-releases@^1.1.42: + version "1.1.42" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.42.tgz#a999f6a62f8746981f6da90627a8d2fc090bbad7" + integrity sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA== + dependencies: + semver "^6.3.0" + node-sass@4.13.0: version "4.13.0" resolved "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz#b647288babdd6a1cb726de4545516b31f90da066" @@ -7430,7 +7445,7 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.0" -postcss-modules-scope@^2.1.0: +postcss-modules-scope@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba" integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ== @@ -7635,7 +7650,7 @@ postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: version "7.0.23" resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.23.tgz#9f9759fad661b15964f3cfc3140f66f1e05eadc1" integrity sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ== @@ -7818,10 +7833,10 @@ qs@~6.5.2: resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -quasar@^1.5.3: - version "1.5.3" - resolved "https://registry.npmjs.org/quasar/-/quasar-1.5.3.tgz#38eabf61218a8796c2a63b20e9d63ccfe630e59a" - integrity sha512-OcbHgOEJr8S+p+F0uzXmgp9xODXp5qXKw16Z4wnvt6OggpRtgCCFy2DKxCutgqz6vizoSiTF46HzkscxHrFpDw== +quasar@^1.5.7: + version "1.5.7" + resolved "https://registry.npmjs.org/quasar/-/quasar-1.5.7.tgz#b21ae7858513a75175435bb889e24c570bf4bf9c" + integrity sha512-b/0LDYS5SleQUCb92yxLGrakpv5Bssl61mmxYqABootOU1rSytFjupkC2+hB+KBtWvjgGhjpty+Kir8/0X78zA== query-string@^4.1.0: version "4.3.4" @@ -8348,7 +8363,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.1.0, schema-utils@^2.5.0: +schema-utils@^2.1.0, schema-utils@^2.5.0, schema-utils@^2.6.0: version "2.6.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== @@ -9203,10 +9218,10 @@ tar@^5.0.5: mkdirp "^0.5.0" yallist "^4.0.0" -tauri@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/tauri/-/tauri-0.1.3.tgz#9c80b7a72a06ba29b7403b9c3473e82e608d11f5" - integrity sha512-eu12PcGWSFODPTa154ttI7cao+Bd39lwC4YA6+vnivCQZocYB7JI6JGOFtexAsrO76YJt6K9fstMqNSugqs91Q== +tauri@^0.1.9: + version "0.1.9" + resolved "https://registry.npmjs.org/tauri/-/tauri-0.1.9.tgz#c7e0631edefaaea0b86d144d4cd301f1a65a928a" + integrity sha512-wnYo1skRTaBWh+uhUswkG8RzFPu5Mw77jIswjsVXFzgb9Pw6ZhZ9uupdQMvVjh6ZUTl1kJaHNR3eWzlESLCLBg== dependencies: "@tauri-apps/toml" "2.2.3" babel-plugin-system-import-transformer "4.0.0"