mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-06-16 14:30:06 +02:00
Compare commits
710 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 57f6e45b27 | |||
| 35aa52f45e | |||
| b65a193e6d | |||
| bbc177150f | |||
| e6e2edca11 | |||
| 7ecd19da51 | |||
| a0b6c8ff3b | |||
| c12ea9306a | |||
| 98e2c11eef | |||
| 50b159f668 | |||
| 305c4f6b4e | |||
| 89f3e17952 | |||
| d4613ff002 | |||
| 69a9d5771c | |||
| 61e9b0ab64 | |||
| 25ad21beff | |||
| 2dc3f3f039 | |||
| c27af9128d | |||
| b60dd88702 | |||
| a97033bcd9 | |||
| 4375c98bed | |||
| 82fbb0c790 | |||
| de6bf68585 | |||
| 734c627084 | |||
| 05c5da072b | |||
| 0d126ff0ad | |||
| f122ee98c6 | |||
| 2308f2299d | |||
| 82c404635b | |||
| b1dbee2c55 | |||
| d7a0bb325d | |||
| f3d75f7abb | |||
| 6e2e7e48c3 | |||
| 9a2c98f450 | |||
| 4a2ecb6287 | |||
| 31415effdf | |||
| 04b33ea0b0 | |||
| 54e21f142b | |||
| d528c88b4f | |||
| 69146fa852 | |||
| 9f68f2d827 | |||
| 3d0d2e041b | |||
| 1e3d7ef16e | |||
| ce6835d50f | |||
| 1d9f47c882 | |||
| e221a04ef4 | |||
| eebfd2ed3e | |||
| 521cd8b372 | |||
| e4a40f4423 | |||
| fa8b11f19d | |||
| baefd761e0 | |||
| 2804803949 | |||
| d9d51eb8ea | |||
| 1483c63101 | |||
| 26ed78989a | |||
| f1564e58b6 | |||
| f2d4abb9e2 | |||
| 3dcf7522b1 | |||
| 02068550e8 | |||
| 66a75ece27 | |||
| fa601e8754 | |||
| d8bfe61f20 | |||
| e8915f17e4 | |||
| 6de61f854b | |||
| ad7a8d3e42 | |||
| d5509a9ac8 | |||
| 06727b19c1 | |||
| 2f9fa79747 | |||
| 1db4b0719d | |||
| dff6fa986a | |||
| a4aa53ab90 | |||
| ae278ddf60 | |||
| e644f38673 | |||
| 8bfa445023 | |||
| 14fb36e347 | |||
| 5767b848fa | |||
| 277a45f56c | |||
| 8dbe7e3233 | |||
| c23fa03f07 | |||
| 631d0e256a | |||
| b4348cee92 | |||
| 3019063ae1 | |||
| 944614f46a | |||
| a368cef912 | |||
| 27790aa67c | |||
| ad910b1135 | |||
| 6b854421a1 | |||
| 5438a5cd22 | |||
| 5cd7778723 | |||
| 1a03e9761f | |||
| 1d4bffadda | |||
| b8794272ae | |||
| 2a625adff3 | |||
| 371cd8227c | |||
| 70ef6f8d3e | |||
| 5f0ac1436f | |||
| ea172bfa3c | |||
| 6aead24047 | |||
| e7a68fa637 | |||
| b5550a3b0d | |||
| 93426f8512 | |||
| 4ee61e055e | |||
| 06124af8d6 | |||
| 060219e597 | |||
| c7e9766ff5 | |||
| d4a8ce962b | |||
| cdc7eec415 | |||
| 6314b004ab | |||
| fb4c8ae54c | |||
| fccc1cfb7e | |||
| 3702308e6f | |||
| c9c8b39b56 | |||
| 3c396feedf | |||
| b514d482fa | |||
| 60e5714ceb | |||
| 654bf4891a | |||
| 6c9b61fb65 | |||
| 6b5b1053ba | |||
| 67a7bf80f8 | |||
| e25a9339f4 | |||
| 92f98a93b4 | |||
| c0f82e5a5e | |||
| 5204145c6a | |||
| b4ee33dd01 | |||
| e933acb004 | |||
| e4a9154f4a | |||
| d44ac9afed | |||
| 1b197c2d4d | |||
| 650ff5ff23 | |||
| 2930aa39a4 | |||
| 3e92ce260b | |||
| 12da195fce | |||
| 30dd109d9f | |||
| 5e5bc30ad0 | |||
| f6dca71343 | |||
| 021e573248 | |||
| 51b430be98 | |||
| fd439b143e | |||
| 2522b71f6b | |||
| 9021a73247 | |||
| 625bb1c096 | |||
| 6215afe023 | |||
| 8cf8eeab02 | |||
| 509eba8d44 | |||
| 9ac5fe84e7 | |||
| c247410319 | |||
| de45034082 | |||
| 50c6b7c644 | |||
| b79d02d896 | |||
| b75f9f5cd3 | |||
| d865ed4768 | |||
| 1107c46425 | |||
| 23a3705857 | |||
| 6f65e68340 | |||
| 1a0b791650 | |||
| 2d03e2eac2 | |||
| 21d721a0c2 | |||
| 8abb31ee59 | |||
| 0354046817 | |||
| 04a0954857 | |||
| 9e4e859bea | |||
| 2371804172 | |||
| 90f9b9310a | |||
| 1c58f3372c | |||
| 75617a6a92 | |||
| 5a963a0496 | |||
| 76f4e7bb84 | |||
| 670ac1d7c1 | |||
| ed0deef2cf | |||
| 50cebdb6d5 | |||
| dd2ea9cfa5 | |||
| 515182a179 | |||
| d3d290ab8a | |||
| b51c827b2c | |||
| a4b71a1992 | |||
| 4eb36b0ff5 | |||
| b8056f484c | |||
| 5ac8fbb1fa | |||
| e0323ec752 | |||
| cc98e6a892 | |||
| af22ae0a97 | |||
| 2f24c7a70c | |||
| fe23a5e013 | |||
| ff6d23ede1 | |||
| 449dd117a4 | |||
| 9b43f48856 | |||
| af08c66faa | |||
| 7974acae22 | |||
| a985359e69 | |||
| 97bebcf6e8 | |||
| 27ddcd0abe | |||
| d7fb5623d6 | |||
| d4f8299b12 | |||
| 341919ed57 | |||
| 124f2191aa | |||
| 0970b94949 | |||
| 7340242d4e | |||
| d66aa6ff78 | |||
| 6f345870df | |||
| 708fa4e2b7 | |||
| b729203059 | |||
| 2f9c71aae7 | |||
| 80d4d8e128 | |||
| e7a98b0d2e | |||
| 44a1f65912 | |||
| 6210cd31df | |||
| 467f07b7de | |||
| 7ba6e08a86 | |||
| 989470f0d7 | |||
| ca3c3aa28a | |||
| aa9140e1ac | |||
| 6a8f255878 | |||
| 8ac494da7c | |||
| 1635282868 | |||
| 4587e4a2b3 | |||
| 1135dc7ed3 | |||
| fe01894e7f | |||
| 36400b5678 | |||
| ead3c268e1 | |||
| adc23d6c4f | |||
| fc573b35a7 | |||
| 901ddfb73d | |||
| f209b2f23c | |||
| 19ed1bd3cc | |||
| 5779099688 | |||
| 2aec8ff4c4 | |||
| 9799f0dbab | |||
| 8cdaacdc6e | |||
| d46778e80b | |||
| a0288648f8 | |||
| f6e11282a7 | |||
| 5642283dba | |||
| 37c2fb4120 | |||
| 27c2193d42 | |||
| eea363625a | |||
| 735d209d5d | |||
| e008434504 | |||
| 3eebea2a17 | |||
| 6bc3e81dc6 | |||
| f634e5248e | |||
| 9841ff81ce | |||
| 2e680620c4 | |||
| 041b93f46b | |||
| a05698ac24 | |||
| 0acca18f65 | |||
| ce9888a2d4 | |||
| 106e46ed51 | |||
| 8b63de9dfe | |||
| 73ff15de5d | |||
| ff19affa7b | |||
| f501bc2f1c | |||
| 87afa23cad | |||
| d40190721c | |||
| 909bc1f9ca | |||
| 9bc4b2230e | |||
| b9dc03d5ce | |||
| cd8fbf834a | |||
| 764e8f7719 | |||
| 85635a2807 | |||
| 848e703b78 | |||
| b768b0623b | |||
| 047081c3d5 | |||
| 7cd8c7806e | |||
| 6c9e08dccb | |||
| a6b854032d | |||
| 494d1fea13 | |||
| 4a29dd6cc6 | |||
| fa778d602a | |||
| 323afd1b6d | |||
| 682bb47cda | |||
| 98e268a98f | |||
| 4d10acee61 | |||
| 2448e717e5 | |||
| 91d1521a4c | |||
| dce04b7d72 | |||
| d8e627522c | |||
| 5cb158983c | |||
| dde6f3c31c | |||
| dac4d53724 | |||
| 5e78988f72 | |||
| 4089002880 | |||
| dc84f8d8bb | |||
| ff384cbabe | |||
| 4bb51b3cc8 | |||
| c5b0f51cfd | |||
| 10f9e66e32 | |||
| c97e9c511d | |||
| 60075f0fb6 | |||
| f81e8003c0 | |||
| 686a839c96 | |||
| db7baff3fc | |||
| c9b21f6f43 | |||
| c698e72594 | |||
| 4ec8716155 | |||
| 2445e103f2 | |||
| 4cd625049d | |||
| d88387ace6 | |||
| ba611e4341 | |||
| 60fc35d35c | |||
| 9629c2f4f9 | |||
| d1609913be | |||
| c2fd60ab3f | |||
| 996975ce52 | |||
| 20770a96ae | |||
| efe3f88acd | |||
| 8b39aefb1b | |||
| beab018b21 | |||
| 9cf0390a52 | |||
| 4dd5c51436 | |||
| d2aef2fddb | |||
| 02e886b21a | |||
| d78930cdd4 | |||
| a35fea5015 | |||
| a77b1353e9 | |||
| 6fa388d0b2 | |||
| 2d731f8022 | |||
| 0bc5d58874 | |||
| 517a29a1a1 | |||
| 8ecb418a1a | |||
| 286e3c6252 | |||
| 174b31b8b1 | |||
| 35c1cd9aa5 | |||
| 37c0477afe | |||
| 831c35ff39 | |||
| a9cbefc910 | |||
| 43f0f95da6 | |||
| 38deef43dc | |||
| c245f123ea | |||
| 8c540d54a1 | |||
| 9ebbfb2e3c | |||
| 4bbcdbd556 | |||
| 12c4537b8e | |||
| a15eedf378 | |||
| 5347de8db9 | |||
| d3183aa99d | |||
| 1e9e496b06 | |||
| 1bb1ced538 | |||
| 68eb74353b | |||
| 95e8f909b1 | |||
| 8882dea3b9 | |||
| b40a02c525 | |||
| a1b3fa27f1 | |||
| e54cfcb261 | |||
| 22ba197b80 | |||
| 77520a3587 | |||
| dbc5fe120a | |||
| faefcc9fd8 | |||
| ac60d589ec | |||
| cb38f54f4a | |||
| d37bbdef8d | |||
| 3a750c7300 | |||
| 5c9cf52e75 | |||
| 02df0421d6 | |||
| f7f5bbf259 | |||
| 561cf39f64 | |||
| 024815018f | |||
| e90cd9fab1 | |||
| 1b86af8e26 | |||
| 1dba334f00 | |||
| 54e7864507 | |||
| 45c7848714 | |||
| 393e956728 | |||
| 1a9846599b | |||
| 71f95c9f05 | |||
| 8b3cd9e827 | |||
| 39c022eea2 | |||
| 7527a3465a | |||
| abca2ebc0d | |||
| ddcfad46f9 | |||
| fbd4d28920 | |||
| 0af367f7d4 | |||
| 1ab5f15763 | |||
| c10d5bfb54 | |||
| f6838d507f | |||
| 5b3a1aaf73 | |||
| 3276d65801 | |||
| e0900f0451 | |||
| 4d38066ef9 | |||
| 3b37ce1508 | |||
| 6f881293fc | |||
| 9229f991fe | |||
| b3bf74212e | |||
| c5da9d2579 | |||
| 7a5495963b | |||
| 7d3869ced8 | |||
| fa8c544479 | |||
| 14660b6230 | |||
| 6b4c391738 | |||
| d5d9f7c970 | |||
| 63f9449c9a | |||
| e0cff9bcf4 | |||
| 5411db68a8 | |||
| 80804adc68 | |||
| 93edbd1434 | |||
| 3ebec74983 | |||
| 51f5aff58a | |||
| 5369898db7 | |||
| a7497b0aeb | |||
| aaa88fa45f | |||
| ca7395a5ce | |||
| 6ae853c2e6 | |||
| d5fb5337a0 | |||
| 512a188c7a | |||
| ad17266273 | |||
| 78acfa456f | |||
| 0b3b3a22d2 | |||
| 384b598fcf | |||
| b2fe305a84 | |||
| 68d8f3be38 | |||
| 9ac2aa88e6 | |||
| 18700f1e82 | |||
| 0afc9b6be0 | |||
| bda803fbdd | |||
| 105136494c | |||
| ce11079f19 | |||
| 784a54a390 | |||
| bdb7febf9c | |||
| e76272b619 | |||
| cf0dff049b | |||
| 28f5c33d65 | |||
| 5b82118158 | |||
| 125ec1dbcf | |||
| c545fcf896 | |||
| 0ec895c378 | |||
| 406e6f484c | |||
| b63d724e85 | |||
| c73b773724 | |||
| d467313d0c | |||
| efc7bb19a8 | |||
| c9c13a0fe7 | |||
| da5c59e2fe | |||
| f555d2981d | |||
| 4c7cb96bbd | |||
| 0ad53785ab | |||
| e2203b760f | |||
| b0d9b3b4eb | |||
| 8a5813940c | |||
| ba6d0f1a63 | |||
| a431d63b96 | |||
| 5ab167f419 | |||
| fb67ab2b92 | |||
| ec548035ff | |||
| 6112867735 | |||
| c21eda24a9 | |||
| 05cca602d9 | |||
| 3a826fb6bf | |||
| 86bae64a52 | |||
| 8d4c925a62 | |||
| 6149e70916 | |||
| a9ac1e3c93 | |||
| 3461a7ae2c | |||
| 7a83d4f7e1 | |||
| 1fe70dc61c | |||
| b21915938f | |||
| 57efb47c11 | |||
| c4d50aa9ec | |||
| 768b72acf8 | |||
| 8d6c992661 | |||
| 83b6507269 | |||
| da64d9b665 | |||
| aa2f2bfba0 | |||
| 51919fb26c | |||
| ee0f65de5c | |||
| 319ef556cd | |||
| 802399a969 | |||
| c9acff99c6 | |||
| 18dffc9dfe | |||
| 829b632650 | |||
| 501eae173b | |||
| 3ff5ccd8fb | |||
| eb94dda28a | |||
| 6fcb2f5f40 | |||
| 3a79266b8c | |||
| 0469f025b2 | |||
| 77b855074a | |||
| 6b1a6d62f0 | |||
| ae002af2d6 | |||
| f7ad349ed2 | |||
| 5b8efde906 | |||
| 69d508ee69 | |||
| fe610d6759 | |||
| a7e58f5654 | |||
| 715a0477be | |||
| 05c62d731f | |||
| ce83d53775 | |||
| 6dbc304c28 | |||
| ab8cf45bb9 | |||
| 3ef756f4ce | |||
| 664c452697 | |||
| 82fa1e1f45 | |||
| 3195646996 | |||
| 6f6a178ae4 | |||
| 28935b65be | |||
| 1f5ed2fbb0 | |||
| de4808f96d | |||
| 59076b0a35 | |||
| 484eadaf33 | |||
| 2572018e3f | |||
| ab9a24b89b | |||
| 33e924574a | |||
| 76f99ce999 | |||
| 241319ae1d | |||
| 40ea6e0b4e | |||
| 3fa0fc09bb | |||
| fef76bd504 | |||
| f8f2eefe03 | |||
| c665818395 | |||
| 2ba68760b9 | |||
| 5070476816 | |||
| 51cd283a5f | |||
| d44f0ee7a7 | |||
| b1b0565d12 | |||
| db526a1c97 | |||
| a3b553ddb4 | |||
| fecfd5533a | |||
| ed981027dd | |||
| 5092ea5e89 | |||
| ac2edc2159 | |||
| 59dd5f105a | |||
| 4db626354c | |||
| 383e636a8e | |||
| 1051db406a | |||
| ee3fb1dba6 | |||
| c34b2ea824 | |||
| 8a33595bbe | |||
| ff05a59e60 | |||
| bea474c550 | |||
| e5476aac94 | |||
| 7f025e5240 | |||
| 5700bd2213 | |||
| d402c3865a | |||
| 90ef77c872 | |||
| 51856e9e0a | |||
| 9741b97e8c | |||
| e421b9a2c0 | |||
| 371a2f7361 | |||
| 52c093ac9d | |||
| 6d6508f18e | |||
| 3fa814d1f0 | |||
| 1fe3dab64c | |||
| 5dadd205f5 | |||
| 3e15acea9a | |||
| 3e78173df9 | |||
| 64fac08bfb | |||
| fdc382dff0 | |||
| b2aea04567 | |||
| 3449dd5a8f | |||
| 57f69c6615 | |||
| cfb3ec0e21 | |||
| b8bf4ad360 | |||
| 87cc58527d | |||
| e0d2e2c53f | |||
| 9a7092ca44 | |||
| 606fa08dae | |||
| 62f1e40682 | |||
| c8e5614063 | |||
| 03c255ae20 | |||
| a706748dd3 | |||
| 7c1046d239 | |||
| a90f36b07e | |||
| e5249cff0b | |||
| d57df4debe | |||
| 1f649c7f1f | |||
| 0ca4cc914c | |||
| 9dcad78f44 | |||
| 4341d7f500 | |||
| 77149dc432 | |||
| 525abc4be5 | |||
| 14cee64c82 | |||
| 3fd283121f | |||
| ae8024565f | |||
| 2302c2db1c | |||
| 44c50c1275 | |||
| 415bf2abc3 | |||
| 36207a93f3 | |||
| 854754e10b | |||
| 1c2f137a8a | |||
| 8c67d44aef | |||
| cfd48b3b2e | |||
| 558e14bb4c | |||
| aef5dd6157 | |||
| 74ee7edc43 | |||
| 7e1c17a635 | |||
| 3c1f3874f4 | |||
| 51ddf6a715 | |||
| 62082b7086 | |||
| aee14ed426 | |||
| 9b2840db94 | |||
| 60064fce52 | |||
| 0058583583 | |||
| fb676626f1 | |||
| f445c704a1 | |||
| fd785ab5de | |||
| a1a82208ed | |||
| dc49de5341 | |||
| 4c2454d410 | |||
| fe6dd0ff9e | |||
| ab8d089b2b | |||
| ee02ea7746 | |||
| 9501cfa5f5 | |||
| e8069af804 | |||
| 0975a687a0 | |||
| 654a7299c3 | |||
| 58eab11faf | |||
| fb62d03f73 | |||
| 7e5e34420b | |||
| f12d35609a | |||
| 44273b9889 | |||
| 2f7e32b5e0 | |||
| 30bcf5dcc2 | |||
| 68579934c9 | |||
| 04459afbb6 | |||
| 3b2bd3065d | |||
| f930505de4 | |||
| 34319bd977 | |||
| 34737186fe | |||
| 4bd1f15bb9 | |||
| aabc4d3a24 | |||
| fc9b189e83 | |||
| b7ff3a6bdb | |||
| 04a0aea0ab | |||
| e564e2aa91 | |||
| 118f6b4334 | |||
| fd0a52aa86 | |||
| 52e3bdab26 | |||
| dd09e3c3f4 | |||
| 2797954799 | |||
| 025210be28 | |||
| 221f50f53b | |||
| 6bf1bd8d44 | |||
| 41fe9053a0 | |||
| 27bb5d9a27 | |||
| 3168e17603 | |||
| dd514e7a88 | |||
| 6e142b4230 | |||
| fd1c7c8dbb | |||
| 59c63f31cc | |||
| 3cbb55aa7b | |||
| 60765694f5 | |||
| fd75401aee | |||
| ca34972266 | |||
| 179184326b | |||
| d8efd3cd20 | |||
| 5d39ddcf22 | |||
| 2050a3bea2 | |||
| c078f57a09 | |||
| dc5721ac13 | |||
| 1d9741b52b | |||
| 7a37355e17 | |||
| 5cbd593e76 | |||
| f7600b5fff | |||
| fb85e5dd76 | |||
| 6f3f66794a | |||
| 79d6e19c4b | |||
| aebd4f6185 | |||
| 341a5320c3 | |||
| cc03ccf5e0 | |||
| 009299ebec | |||
| 204e5aacad | |||
| 8a45c35160 | |||
| ebf821afd1 | |||
| 984110a978 | |||
| 2b898f0786 | |||
| b2269333e3 | |||
| 41afcae399 | |||
| 9291e4d2ca | |||
| 3715f3c9a6 | |||
| 253ae66210 | |||
| 949e2d6c45 | |||
| 64a6240f79 | |||
| 77680f6ed8 | |||
| 8c3a6a253d | |||
| 57fd28126c | |||
| a34fade500 | |||
| 713c54ef83 | |||
| a9b2a9af84 | |||
| c23b3d4bc8 | |||
| 0dd97d9115 | |||
| 3912800db3 | |||
| c23d7c51f6 | |||
| 5906cf4335 | |||
| d4a54157f0 | |||
| 3d301c654e | |||
| 12e80ffe00 | |||
| a2fe55512f | |||
| d00519e3e3 | |||
| 6995127778 | |||
| c565a08d09 | |||
| cf4d7d4e6c | |||
| 72c2ce82c1 | |||
| 4654591d82 | |||
| feb1e93fcb | |||
| ff134a8ca4 | |||
| f8255e1db5 | |||
| b9bcb2b6af | |||
| 51819c601f | |||
| f7280c8830 | |||
| 0cb99bdaf1 | |||
| de04935b2f | |||
| b4c95b25df | |||
| de452d4373 | |||
| e271382982 | |||
| 3a350add23 | |||
| 3518a23fa0 | |||
| c6a1b86404 | |||
| 091a78f1d2 | |||
| 16f68c2397 | |||
| 16d87bf236 | |||
| e502a706d1 | |||
| 17e8014b69 |
+1
-1
@@ -7,5 +7,5 @@ ignore = [
|
|||||||
# wry needs kuchiki on Android
|
# wry needs kuchiki on Android
|
||||||
"RUSTSEC-2023-0019",
|
"RUSTSEC-2023-0019",
|
||||||
# atty is only used when the `colored` feature is enabled on tauri-plugin-log
|
# atty is only used when the `colored` feature is enabled on tauri-plugin-log
|
||||||
"RUSTSEC-2021-0145"
|
"RUSTSEC-2021-0145",
|
||||||
]
|
]
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"dialog": patch:feat
|
|
||||||
---
|
|
||||||
|
|
||||||
Implement `save` API on Android.
|
|
||||||
+31
-14
@@ -14,10 +14,20 @@
|
|||||||
"command": "pnpm build",
|
"command": "pnpm build",
|
||||||
"dryRunCommand": "pnpm build"
|
"dryRunCommand": "pnpm build"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"command": "echo '<details>\n<summary><em><h4>PNPM Publish</h4></em></summary>\n\n```'",
|
||||||
|
"dryRunCommand": true,
|
||||||
|
"pipe": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"command": "npm publish --provenance --access public",
|
"command": "npm publish --provenance --access public",
|
||||||
"dryRunCommand": "npm publish --provenance --access public --dry-run",
|
"dryRunCommand": "npm publish --provenance --access public --dry-run",
|
||||||
"pipe": true
|
"pipe": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "echo '```\n\n</details>\n'",
|
||||||
|
"dryRunCommand": true,
|
||||||
|
"pipe": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -56,12 +66,13 @@
|
|||||||
"dependencies": [
|
"dependencies": [
|
||||||
"barcode-scanner",
|
"barcode-scanner",
|
||||||
"biometric",
|
"biometric",
|
||||||
"log-plugin",
|
"log",
|
||||||
"cli",
|
"cli",
|
||||||
"clipboard-manager",
|
"clipboard-manager",
|
||||||
"dialog",
|
"dialog",
|
||||||
"fs",
|
"fs",
|
||||||
"global-shortcut",
|
"global-shortcut",
|
||||||
|
"opener",
|
||||||
"http",
|
"http",
|
||||||
"nfc",
|
"nfc",
|
||||||
"notification",
|
"notification",
|
||||||
@@ -69,7 +80,9 @@
|
|||||||
"process",
|
"process",
|
||||||
"shell",
|
"shell",
|
||||||
"store",
|
"store",
|
||||||
"updater"
|
"updater",
|
||||||
|
"geolocation",
|
||||||
|
"haptics"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"api-example-js": {
|
"api-example-js": {
|
||||||
@@ -85,6 +98,7 @@
|
|||||||
"dialog-js",
|
"dialog-js",
|
||||||
"fs-js",
|
"fs-js",
|
||||||
"global-shortcut-js",
|
"global-shortcut-js",
|
||||||
|
"opener-js",
|
||||||
"http-js",
|
"http-js",
|
||||||
"nfc-js",
|
"nfc-js",
|
||||||
"notification-js",
|
"notification-js",
|
||||||
@@ -103,14 +117,6 @@
|
|||||||
"dependencies": ["deep-link-js"],
|
"dependencies": ["deep-link-js"],
|
||||||
"postversion": "pnpm install --no-frozen-lockfile"
|
"postversion": "pnpm install --no-frozen-lockfile"
|
||||||
},
|
},
|
||||||
"authenticator": {
|
|
||||||
"path": "./plugins/authenticator",
|
|
||||||
"manager": "rust"
|
|
||||||
},
|
|
||||||
"authenticator-js": {
|
|
||||||
"path": "./plugins/authenticator",
|
|
||||||
"manager": "javascript"
|
|
||||||
},
|
|
||||||
"autostart": {
|
"autostart": {
|
||||||
"path": "./plugins/autostart",
|
"path": "./plugins/autostart",
|
||||||
"manager": "rust"
|
"manager": "rust"
|
||||||
@@ -174,7 +180,8 @@
|
|||||||
},
|
},
|
||||||
"dialog-js": {
|
"dialog-js": {
|
||||||
"path": "./plugins/dialog",
|
"path": "./plugins/dialog",
|
||||||
"manager": "javascript"
|
"manager": "javascript",
|
||||||
|
"dependencies": ["fs-js"]
|
||||||
},
|
},
|
||||||
"geolocation": {
|
"geolocation": {
|
||||||
"path": "./plugins/geolocation",
|
"path": "./plugins/geolocation",
|
||||||
@@ -192,6 +199,14 @@
|
|||||||
"path": "./plugins/global-shortcut",
|
"path": "./plugins/global-shortcut",
|
||||||
"manager": "javascript"
|
"manager": "javascript"
|
||||||
},
|
},
|
||||||
|
"opener": {
|
||||||
|
"path": "./plugins/opener",
|
||||||
|
"manager": "rust"
|
||||||
|
},
|
||||||
|
"opener-js": {
|
||||||
|
"path": "./plugins/opener",
|
||||||
|
"manager": "javascript"
|
||||||
|
},
|
||||||
"haptics": {
|
"haptics": {
|
||||||
"path": "./plugins/haptics",
|
"path": "./plugins/haptics",
|
||||||
"manager": "rust"
|
"manager": "rust"
|
||||||
@@ -207,13 +222,14 @@
|
|||||||
},
|
},
|
||||||
"http-js": {
|
"http-js": {
|
||||||
"path": "./plugins/http",
|
"path": "./plugins/http",
|
||||||
"manager": "javascript"
|
"manager": "javascript",
|
||||||
|
"dependencies": ["fs-js"]
|
||||||
},
|
},
|
||||||
"localhost": {
|
"localhost": {
|
||||||
"path": "./plugins/localhost",
|
"path": "./plugins/localhost",
|
||||||
"manager": "rust"
|
"manager": "rust"
|
||||||
},
|
},
|
||||||
"log-plugin": {
|
"log": {
|
||||||
"path": "./plugins/log",
|
"path": "./plugins/log",
|
||||||
"manager": "rust"
|
"manager": "rust"
|
||||||
},
|
},
|
||||||
@@ -276,7 +292,8 @@
|
|||||||
},
|
},
|
||||||
"single-instance": {
|
"single-instance": {
|
||||||
"path": "./plugins/single-instance",
|
"path": "./plugins/single-instance",
|
||||||
"manager": "rust"
|
"manager": "rust",
|
||||||
|
"dependencies": ["deep-link"]
|
||||||
},
|
},
|
||||||
"sql": {
|
"sql": {
|
||||||
"path": "./plugins/sql",
|
"path": "./plugins/sql",
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
"barcode-scanner": patch
|
|
||||||
"barcode-scanner-js": patch
|
|
||||||
"geolocation": patch
|
|
||||||
"geolocation-js": patch
|
|
||||||
"notification": patch
|
|
||||||
"notification-js": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Use `PermissionState` from the `tauri` crate, which now also includes a "prompt with rationale" variant for Android (returned when your app must explain to the user why it needs the permission).
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"dialog": "patch"
|
|
||||||
---
|
|
||||||
|
|
||||||
Mark `FileResponse` as `non_exhaustive`.
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"dialog": patch
|
|
||||||
"dialog-js": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
The `open` function now returns a string representing either the file path or URI instead of an object.
|
|
||||||
To read the file data, use the `fs` APIs.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"http-js": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fixed an issue with abort signal not aborting the fetch request.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"updater": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fixes the updater not preserving AppImage file permissions.
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
"single-instance": minor:fix
|
||||||
|
---
|
||||||
|
|
||||||
|
**Breaking Change:** On Linux, the DBus ID/name will now be `<bundle-id>.SingleInstance` instead of `org.<bundle_id_underscores>.SingleInstance` to follow DBus specifications.
|
||||||
|
|
||||||
|
This will break the single-instance mechanism across different app versions if the app was installed multiple times.
|
||||||
|
|
||||||
|
Added `dbus_id` builder method, which can be used to restore previous behavior. For a bundle identifier of `com.tauri.my-example` this would be `dbus_id("org.com_tauri_my_example")`.
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"fs": patch:enhance
|
|
||||||
---
|
|
||||||
|
|
||||||
The `scope-*-recursive` permissions now also allow reading the contents of the directory.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"geolocation": major
|
|
||||||
"geolocation-js": major
|
|
||||||
---
|
|
||||||
|
|
||||||
Initial release.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"global-shortcut": "patch"
|
|
||||||
---
|
|
||||||
|
|
||||||
Updated `global-hotkey` crate dependency to `0.6`
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"haptics": major
|
|
||||||
"haptics-js": major
|
|
||||||
---
|
|
||||||
|
|
||||||
Initial release.
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
barcode-scanner: patch
|
|
||||||
clipboard-manager: patch
|
|
||||||
deep-link: patch
|
|
||||||
global-shortcut: patch
|
|
||||||
window-state: patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fixed an issue that caused multi-word IIFE names to not be formatted correctly. For example the `barcode-scanner` was defined as `window.__TAURI_PLUGIN_CLIPBOARDMANAGER__` instead of `window.__TAURI_PLUGIN_CLIPBOARD_MANAGER__`.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"notification-js": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
**Breaking change**: The permission type when using the API is now `'granted' | 'denied' | 'prompt' | 'prompt-with-rationale'` instead of `'granted' | 'denied' | 'default'` for consistency with Rust types. When using the `window.Notification` API the type is unchanged to match the Web API type.
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
"tag": "rc",
|
|
||||||
"changes": [
|
|
||||||
".changes/android-dialog-save.md",
|
|
||||||
".changes/consolidate-permission-state.md",
|
|
||||||
".changes/dialog-file-response-non-exhaustive.md",
|
|
||||||
".changes/dialog-return-path.md",
|
|
||||||
".changes/fix-http-plugin-abort.md",
|
|
||||||
".changes/fix-linux-updater-permission-error.md",
|
|
||||||
".changes/fs-scope-recursive-allow-read-dir.md",
|
|
||||||
".changes/geolocation-release.md",
|
|
||||||
".changes/global-shortcut-0.6.md",
|
|
||||||
".changes/haptics-release.md",
|
|
||||||
".changes/iife-varname-spacing.md",
|
|
||||||
".changes/notification-permission-type-change.md",
|
|
||||||
".changes/rc.md",
|
|
||||||
".changes/remove-target-sdk.md",
|
|
||||||
".changes/resolve-content-uris.md",
|
|
||||||
".changes/shell-open-regex-match-string.md",
|
|
||||||
".changes/shell-regex-match-string.md",
|
|
||||||
".changes/single-instance-windows-sys.0.59.md",
|
|
||||||
".changes/store-remove-mobile-plugin.md",
|
|
||||||
".changes/swift-build-older-versions.md",
|
|
||||||
".changes/tauri-rc-8.md",
|
|
||||||
".changes/update-fs-api-docs.md",
|
|
||||||
".changes/update-tauri-rc-3.md"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
"authenticator": patch
|
|
||||||
"autostart": patch
|
|
||||||
"barcode-scanner": patch
|
|
||||||
"biometric": patch
|
|
||||||
"cli": patch
|
|
||||||
"clipboard-manager": patch
|
|
||||||
"deep-link": patch
|
|
||||||
"dialog": patch
|
|
||||||
"fs": patch
|
|
||||||
"global-shortcut": patch
|
|
||||||
"http": patch
|
|
||||||
"localhost": patch
|
|
||||||
"log-plugin": patch
|
|
||||||
"nfc": patch
|
|
||||||
"notification": patch
|
|
||||||
"os": patch
|
|
||||||
"persisted-scope": patch
|
|
||||||
"positioner": patch
|
|
||||||
"process": patch
|
|
||||||
"shell": patch
|
|
||||||
"single-instance": patch
|
|
||||||
"sql": patch
|
|
||||||
"store": patch
|
|
||||||
"stronghold": patch
|
|
||||||
"updater": patch
|
|
||||||
"upload": patch
|
|
||||||
"websocket": patch
|
|
||||||
"window-state": patch
|
|
||||||
"authenticator-js": patch
|
|
||||||
"autostart-js": patch
|
|
||||||
"barcode-scanner-js": patch
|
|
||||||
"biometric-js": patch
|
|
||||||
"cli-js": patch
|
|
||||||
"clipboard-manager-js": patch
|
|
||||||
"deep-link-js": patch
|
|
||||||
"dialog-js": patch
|
|
||||||
"fs-js": patch
|
|
||||||
"global-shortcut-js": patch
|
|
||||||
"http-js": patch
|
|
||||||
"log-js": patch
|
|
||||||
"nfc-js": patch
|
|
||||||
"notification-js": patch
|
|
||||||
"os-js": patch
|
|
||||||
"positioner-js": patch
|
|
||||||
"process-js": patch
|
|
||||||
"shell-js": patch
|
|
||||||
"sql-js": patch
|
|
||||||
"store-js": patch
|
|
||||||
"stronghold-js": patch
|
|
||||||
"updater-js": patch
|
|
||||||
"upload-js": patch
|
|
||||||
"websocket-js": patch
|
|
||||||
"window-state-js": patch
|
|
||||||
"haptics": patch
|
|
||||||
"haptics-js": patch
|
|
||||||
"geolocation": patch
|
|
||||||
"geolocation-js": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update to tauri RC.
|
|
||||||
@@ -6,6 +6,8 @@ As you create PRs and make changes that require a version bump, please add a new
|
|||||||
|
|
||||||
When you select the version bump required, you do _not_ need to consider dependencies. Only note the package with the actual change, and any packages that depend on that package will be bumped automatically in the process.
|
When you select the version bump required, you do _not_ need to consider dependencies. Only note the package with the actual change, and any packages that depend on that package will be bumped automatically in the process.
|
||||||
|
|
||||||
|
**Note, that in this repository, even if only the Rust code or only the JavaScript code of a plugin changed, both packages need to be bumped with the same increment!**
|
||||||
|
|
||||||
Use the following format:
|
Use the following format:
|
||||||
|
|
||||||
```md
|
```md
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
"barcode-scanner": patch:changes
|
|
||||||
"biometric": patch:changes
|
|
||||||
"clipboard-manager": patch:changes
|
|
||||||
"deep-link": patch:changes
|
|
||||||
"dialog": patch:changes
|
|
||||||
"geolocation": patch:changes
|
|
||||||
"haptics": patch:changes
|
|
||||||
"nfc": patch:changes
|
|
||||||
"notification": patch:changes
|
|
||||||
"shell": patch:changes
|
|
||||||
"store": patch:changes
|
|
||||||
---
|
|
||||||
|
|
||||||
Remove targetSdk from build.kts files as it is deprecated and will be removed from DSL v9.0
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"fs": patch:feat
|
|
||||||
---
|
|
||||||
|
|
||||||
Resolve `content://` path URIs on Android.
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"single-instance": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add `setup` function to run the single instance initialization manually, without waiting for the tauri setup hook to run.
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"shell": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Change the `open` scope validator regex to match on the entire string.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
"shell": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Change the `execute` scope argument validator regex to match on the entire string by default.
|
|
||||||
If this behavior is not desired check the `raw` boolean configuration option that is available along the `validator` string.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"single-instance": "patch"
|
|
||||||
---
|
|
||||||
|
|
||||||
Updated `windows-sys` crate to `0.59`
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"store": patch:breaking
|
|
||||||
---
|
|
||||||
|
|
||||||
Implement mobile support in Rust directly. This changes the store directories, invalidating all previously generated stores.
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
"barcode-scanner": patch
|
|
||||||
"biometric": patch
|
|
||||||
"clipboard-manager": patch
|
|
||||||
"dialog": patch
|
|
||||||
"geolocation": patch
|
|
||||||
"haptics": patch
|
|
||||||
"log-plugin": patch
|
|
||||||
"nfc": patch
|
|
||||||
"notification": patch
|
|
||||||
"shell": patch
|
|
||||||
"store": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Explicitly set a minimum macOS version for the Swift package.
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
---
|
|
||||||
"authenticator": patch
|
|
||||||
"autostart": patch
|
|
||||||
"barcode-scanner": patch
|
|
||||||
"biometric": patch
|
|
||||||
"cli": patch
|
|
||||||
"clipboard-manager": patch
|
|
||||||
"deep-link": patch
|
|
||||||
"dialog": patch
|
|
||||||
"fs": patch
|
|
||||||
"global-shortcut": patch
|
|
||||||
"http": patch
|
|
||||||
"localhost": patch
|
|
||||||
"log-plugin": patch
|
|
||||||
"nfc": patch
|
|
||||||
"notification": patch
|
|
||||||
"os": patch
|
|
||||||
"persisted-scope": patch
|
|
||||||
"positioner": patch
|
|
||||||
"process": patch
|
|
||||||
"shell": patch
|
|
||||||
"single-instance": patch
|
|
||||||
"sql": patch
|
|
||||||
"store": patch
|
|
||||||
"stronghold": patch
|
|
||||||
"updater": patch
|
|
||||||
"upload": patch
|
|
||||||
"websocket": patch
|
|
||||||
"window-state": patch
|
|
||||||
"authenticator-js": patch
|
|
||||||
"autostart-js": patch
|
|
||||||
"barcode-scanner-js": patch
|
|
||||||
"biometric-js": patch
|
|
||||||
"cli-js": patch
|
|
||||||
"clipboard-manager-js": patch
|
|
||||||
"deep-link-js": patch
|
|
||||||
"dialog-js": patch
|
|
||||||
"fs-js": patch
|
|
||||||
"global-shortcut-js": patch
|
|
||||||
"http-js": patch
|
|
||||||
"log-js": patch
|
|
||||||
"nfc-js": patch
|
|
||||||
"notification-js": patch
|
|
||||||
"os-js": patch
|
|
||||||
"positioner-js": patch
|
|
||||||
"process-js": patch
|
|
||||||
"shell-js": patch
|
|
||||||
"sql-js": patch
|
|
||||||
"store-js": patch
|
|
||||||
"stronghold-js": patch
|
|
||||||
"updater-js": patch
|
|
||||||
"upload-js": patch
|
|
||||||
"websocket-js": patch
|
|
||||||
"window-state-js": patch
|
|
||||||
"haptics": patch
|
|
||||||
"haptics-js": patch
|
|
||||||
"geolocation": patch
|
|
||||||
"geolocation-js": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update to tauri 2.0.0-rc.8
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"fs-js": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update documentation.
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
"geolocation": patch
|
|
||||||
"deep-link": patch
|
|
||||||
"updater": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update to tauri 2.0.0-rc.3.
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# Tauri Contributing Guide
|
||||||
|
|
||||||
|
Hi! We, the maintainers, are really excited that you are interested in contributing to Tauri. Before submitting your contribution though, please make sure to take a moment and read through the [Code of Conduct](CODE_OF_CONDUCT.md), as well as the appropriate section for the contribution you intend to make:
|
||||||
|
|
||||||
|
- [Issue Reporting Guidelines](#issue-reporting-guidelines)
|
||||||
|
- [Pull Request Guidelines](#pull-request-guidelines)
|
||||||
|
- [Development Guide](#development-guide)
|
||||||
|
|
||||||
|
## Issue Reporting Guidelines
|
||||||
|
|
||||||
|
- The issue list of this repo is **exclusively** for bug reports and feature requests. Non-conforming issues will be closed immediately.
|
||||||
|
|
||||||
|
- If you have a question, you can get quick answers from the [Tauri Discord chat](https://discord.com/invite/tauri).
|
||||||
|
|
||||||
|
- Try to search for your issue, it may have already been answered or even fixed in the development branch (`v2`).
|
||||||
|
|
||||||
|
- Check if the issue is reproducible with the latest stable version of Tauri. If you are using a pre-release, please indicate the specific version you are using.
|
||||||
|
|
||||||
|
- It is **required** that you clearly describe the steps necessary to reproduce the issue you are running into. Although we would love to help our users as much as possible, diagnosing issues without clear reproduction steps is extremely time-consuming and simply not sustainable.
|
||||||
|
|
||||||
|
- Use only the minimum amount of code necessary to reproduce the unexpected behavior. A good bug report should isolate specific methods that exhibit unexpected behavior and precisely define how expectations were violated. What did you expect the method or methods to do, and how did the observed behavior differ? The more precisely you isolate the issue, the faster we can investigate.
|
||||||
|
|
||||||
|
- Issues with no clear repro steps will not be triaged. If an issue labeled "need repro" receives no further input from the issue author for more than 5 days, it will be closed.
|
||||||
|
|
||||||
|
- If your issue is resolved but still open, don't hesitate to close it. In case you found a solution by yourself, it could be helpful for others to explain how you fixed it.
|
||||||
|
|
||||||
|
- Most importantly, we beg your patience: the team must balance your request against many other responsibilities — fixing other bugs, answering other questions, new features, new documentation, etc. The issue list is not paid support and we cannot make guarantees about how fast your issue can be resolved.
|
||||||
|
|
||||||
|
## Pull Request Guidelines
|
||||||
|
|
||||||
|
- You have to [sign your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits).
|
||||||
|
|
||||||
|
- It's OK to have multiple small commits as you work on the PR - we will let GitHub automatically squash it before merging.
|
||||||
|
|
||||||
|
- If adding new feature:
|
||||||
|
- Provide convincing reason to add this feature. Ideally you should open a suggestion issue first and have it greenlighted before working on it.
|
||||||
|
|
||||||
|
- If fixing a bug:
|
||||||
|
- If you are resolving a special issue, add `(fix: #xxxx[,#xxx])` (#xxxx is the issue id) in your PR title for a better release log, e.g. `fix: update entities encoding/decoding (fix #3899)`.
|
||||||
|
- Provide detailed description of the bug in the PR, or link to an issue that does.
|
||||||
|
|
||||||
|
- If the PR is meant to be released, follow the instructions in `.changes/readme.md` to log your changes. ie. [readme.md](https://github.com/tauri-apps/plugins-workspace/blob/v2/.changes/readme.md)
|
||||||
|
|
||||||
|
## Development Guide
|
||||||
|
|
||||||
|
**NOTE: If you have any question don't hesitate to ask in our Discord server. We try to keep this guide to up guide, but if something doesn't work let us know.**
|
||||||
|
|
||||||
|
### General Setup
|
||||||
|
|
||||||
|
First, [join our Discord server](https://discord.com/invite/tauri) and let us know that you want to contribute. This way we can point you in the right direction and help ensure your contribution will be as helpful as possible.
|
||||||
|
|
||||||
|
To set up your machine for development, follow the [Tauri setup guide](https://v2.tauri.app/start/prerequisites/) to get all the tools you need to develop Tauri apps. The only additional tool you may need is [PNPM](https://pnpm.io/).
|
||||||
|
|
||||||
|
Next, [fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) and clone [this repository](https://github.com/tauri-apps/plugins-workspace/tree/v2).
|
||||||
|
|
||||||
|
### Developing and testing
|
||||||
|
|
||||||
|
The easiest way to test your changes is to use the [example app](https://github.com/tauri-apps/plugins-workspace/tree/v2/examples/api) example app. It automatically rebuilds and uses your local copy of the plugins. To run it follow the instructions inside [README.md](https://github.com/tauri-apps/plugins-workspace/blob/v2/examples/api/README.md).
|
||||||
|
|
||||||
|
To test local changes against your own application simply point the plugin create to your local repository, for example:
|
||||||
|
|
||||||
|
`tauri-plugin-sample = { path = "path/to/local/tauri-plugin-sample/" }`
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
name: 🐞 Bug Report
|
||||||
|
description: Report a bug
|
||||||
|
labels: ['type: bug']
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## First of all
|
||||||
|
1. Please search for [existing issues](https://github.com/tauri-apps/plugins-workspace/issues?q=is%3Aissue) about this problem first.
|
||||||
|
2. Make sure `rustc` and all relevant Tauri packages are up to date.
|
||||||
|
3. Make sure it's an issue with a tauri plugin and not something else you are using.
|
||||||
|
4. Remember to follow our community guidelines and be friendly.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Describe the bug
|
||||||
|
description: A clear description of what the bug is. Include screenshots if applicable.
|
||||||
|
placeholder: Bug description
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: reproduction
|
||||||
|
attributes:
|
||||||
|
label: Reproduction
|
||||||
|
description: A link to a reproduction repo or steps to reproduce the behaviour.
|
||||||
|
placeholder: |
|
||||||
|
Please provide a minimal reproduction or steps to reproduce, see this guide https://stackoverflow.com/help/minimal-reproducible-example
|
||||||
|
Why reproduction is required? see this article https://antfu.me/posts/why-reproductions-are-required
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: expected-behavior
|
||||||
|
attributes:
|
||||||
|
label: Expected behavior
|
||||||
|
description: A clear description of what you expected to happen.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: info
|
||||||
|
attributes:
|
||||||
|
label: Full `tauri info` output
|
||||||
|
description: 'Output of `npm run tauri info` or `cargo tauri info`. Issues without this will be closed!'
|
||||||
|
render: text
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Stack trace
|
||||||
|
description: A stack trace or ANY error messages you may see.
|
||||||
|
render: text
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: context
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Add any other context about the problem here. For example a link to a Discord discussion.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
#blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: 💡 Request a new plugin
|
||||||
|
url: https://github.com/orgs/tauri-apps/discussions/new?category=plugin-requests
|
||||||
|
about: Propose a new Plugin to the community or the Tauri org.
|
||||||
|
- name: 💬 Discord Chat
|
||||||
|
url: https://discord.com/invite/tauri
|
||||||
|
about: Ask questions and talk to other Tauri users and the maintainers
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
name: 📚 Docs Report
|
||||||
|
about: Create a report to help us improve the docs
|
||||||
|
labels: 'type: documentation'
|
||||||
|
---
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
# Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
name: 💡 Feature Request
|
||||||
|
description: Request a feature or enhancement for an existing plugin
|
||||||
|
labels: ['type: feature request']
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## First of all
|
||||||
|
- Please search for [existing issues](https://github.com/tauri-apps/plugins-workspace/issues?q=is%3Aissue) for this request first.
|
||||||
|
- Only requests for plugins that exist in this repo are allowed.
|
||||||
|
- You can request new plugins [here](https://github.com/orgs/tauri-apps/discussions/new?category=plugin-requests)
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: problem
|
||||||
|
attributes:
|
||||||
|
label: Describe the problem
|
||||||
|
description: A clear description of the problem this feature would solve
|
||||||
|
placeholder: "I'm always frustrated when..."
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: solution
|
||||||
|
attributes:
|
||||||
|
label: "Describe the solution you'd like"
|
||||||
|
description: A clear description of what change you would like
|
||||||
|
placeholder: 'I would like to...'
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: alternatives
|
||||||
|
attributes:
|
||||||
|
label: Alternatives considered
|
||||||
|
description: "Any alternative solutions you've considered"
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: context
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Add any other context about the problem here.
|
||||||
@@ -7,23 +7,23 @@ name: Audit JavaScript
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * *"
|
- cron: '0 0 * * *'
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/audit-javascript.yml"
|
- '.github/workflows/audit-javascript.yml'
|
||||||
- "**/pnpm-lock.yaml"
|
- '**/pnpm-lock.yaml'
|
||||||
- "**/package.json"
|
- '**/package.json'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/audit-javascript.yml"
|
- '.github/workflows/audit-javascript.yml'
|
||||||
- "**/pnpm-lock.yaml"
|
- '**/pnpm-lock.yaml'
|
||||||
- "**/package.json"
|
- '**/package.json'
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@@ -43,10 +43,10 @@ jobs:
|
|||||||
${{ runner.os }}-
|
${{ runner.os }}-
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "lts/*"
|
node-version: 'lts/*'
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9.x.x
|
version: 10.x.x
|
||||||
run_install: true
|
run_install: true
|
||||||
- name: audit
|
- name: audit
|
||||||
run: pnpm audit
|
run: pnpm audit
|
||||||
|
|||||||
@@ -7,23 +7,23 @@ name: Audit Rust
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * *"
|
- cron: '0 0 * * *'
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/audit-rust.yml"
|
- '.github/workflows/audit-rust.yml'
|
||||||
- "**/Cargo.lock"
|
- '**/Cargo.lock'
|
||||||
- "**/Cargo.toml"
|
- '**/Cargo.toml'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/audit-rust.yml"
|
- '.github/workflows/audit-rust.yml'
|
||||||
- "**/Cargo.lock"
|
- '**/Cargo.lock'
|
||||||
- "**/Cargo.toml"
|
- '**/Cargo.toml'
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
name: check change files
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- '.changes/*.md'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: check change files end with .md
|
||||||
|
run: |
|
||||||
|
for file in .changes/*
|
||||||
|
do
|
||||||
|
if [[ ! "$file" =~ \.(md|json)$ ]]; then
|
||||||
|
echo ".changes directory should only contain files that end with .md"
|
||||||
|
echo "found an invalid file in .changes directory:"
|
||||||
|
echo "$file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
- uses: dorny/paths-filter@v3
|
||||||
|
id: filter
|
||||||
|
with:
|
||||||
|
list-files: shell
|
||||||
|
filters: |
|
||||||
|
changes:
|
||||||
|
- added|modified: '.changes/*.md'
|
||||||
|
|
||||||
|
- name: check
|
||||||
|
run: node ./.scripts/ci/check-change-files.js ${{ steps.filter.outputs.changes_files }}
|
||||||
|
if: ${{ steps.filter.outputs.changes == 'true' }}
|
||||||
@@ -7,8 +7,9 @@ name: check generated files
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/check-generated-files.yml"
|
- '.github/workflows/check-generated-files.yml'
|
||||||
- "**/guest-js/**"
|
- pnpm-lock.yaml
|
||||||
|
- '**/guest-js/**'
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@@ -25,96 +26,119 @@ jobs:
|
|||||||
id: filter
|
id: filter
|
||||||
with:
|
with:
|
||||||
filters: |
|
filters: |
|
||||||
authenticator:
|
|
||||||
- .github/workflows/check-generated-files.yml
|
|
||||||
- plugins/authenticator/guest-js/**
|
|
||||||
- plugins/authenticator/src/api-iife.js
|
|
||||||
autostart:
|
autostart:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/autostart/guest-js/**
|
- plugins/autostart/guest-js/**
|
||||||
- plugins/autostart/src/api-iife.js
|
- plugins/autostart/src/api-iife.js
|
||||||
cli:
|
cli:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/cli/guest-js/**
|
- plugins/cli/guest-js/**
|
||||||
- plugins/cli/src/api-iife.js
|
- plugins/cli/src/api-iife.js
|
||||||
clipboard-manager:
|
clipboard-manager:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/clipboard-manager/guest-js/**
|
- plugins/clipboard-manager/guest-js/**
|
||||||
- plugins/clipboard-manager/src/api-iife.js
|
- plugins/clipboard-manager/src/api-iife.js
|
||||||
dialog:
|
dialog:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/dialog/guest-js/**
|
- plugins/dialog/guest-js/**
|
||||||
- plugins/dialog/src/api-iife.js
|
- plugins/dialog/src/api-iife.js
|
||||||
fs:
|
fs:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/fs/guest-js/**
|
- plugins/fs/guest-js/**
|
||||||
- plugins/fs/src/api-iife.js
|
- plugins/fs/src/api-iife.js
|
||||||
geolocation:
|
geolocation:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/geolocation/guest-js/**
|
- plugins/geolocation/guest-js/**
|
||||||
- plugins/geolocation/src/api-iife.js
|
- plugins/geolocation/src/api-iife.js
|
||||||
global-shortcut:
|
global-shortcut:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/global-shortcut/guest-js/**
|
- plugins/global-shortcut/guest-js/**
|
||||||
- plugins/global-shortcut/src/api-iife.js
|
- plugins/global-shortcut/src/api-iife.js
|
||||||
|
opener:
|
||||||
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
- plugins/opener/guest-js/**
|
||||||
|
- plugins/opener/src/api-iife.js
|
||||||
haptics:
|
haptics:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/haptics/guest-js/**
|
- plugins/haptics/guest-js/**
|
||||||
- plugins/haptics/src/api-iife.js
|
- plugins/haptics/src/api-iife.js
|
||||||
http:
|
http:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/http/guest-js/**
|
- plugins/http/guest-js/**
|
||||||
- plugins/http/src/api-iife.js
|
- plugins/http/src/api-iife.js
|
||||||
log:
|
log:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/log/guest-js/**
|
- plugins/log/guest-js/**
|
||||||
- plugins/log/src/api-iife.js
|
- plugins/log/src/api-iife.js
|
||||||
notification:
|
notification:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/notification/guest-js/**
|
- plugins/notification/guest-js/**
|
||||||
- plugins/notification/src/api-iife.js
|
- plugins/notification/src/api-iife.js
|
||||||
os:
|
os:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/os/guest-js/**
|
- plugins/os/guest-js/**
|
||||||
- plugins/os/src/api-iife.js
|
- plugins/os/src/api-iife.js
|
||||||
positioner:
|
positioner:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/positioner/guest-js/**
|
- plugins/positioner/guest-js/**
|
||||||
- plugins/positioner/src/api-iife.js
|
- plugins/positioner/src/api-iife.js
|
||||||
process:
|
process:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/process/guest-js/**
|
- plugins/process/guest-js/**
|
||||||
- plugins/process/src/api-iife.js
|
- plugins/process/src/api-iife.js
|
||||||
shell:
|
shell:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/shell/guest-js/**
|
- plugins/shell/guest-js/**
|
||||||
- plugins/shell/src/api-iife.js
|
- plugins/shell/src/api-iife.js
|
||||||
sql:
|
sql:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/sql/guest-js/**
|
- plugins/sql/guest-js/**
|
||||||
- plugins/sql/src/api-iife.js
|
- plugins/sql/src/api-iife.js
|
||||||
store:
|
store:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/store/guest-js/**
|
- plugins/store/guest-js/**
|
||||||
- plugins/store/src/api-iife.js
|
- plugins/store/src/api-iife.js
|
||||||
stronghold:
|
stronghold:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/stronghold/guest-js/**
|
- plugins/stronghold/guest-js/**
|
||||||
- plugins/stronghold/src/api-iife.js
|
- plugins/stronghold/src/api-iife.js
|
||||||
updater:
|
updater:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/updater/guest-js/**
|
- plugins/updater/guest-js/**
|
||||||
- plugins/updater/src/api-iife.js
|
- plugins/updater/src/api-iife.js
|
||||||
upload:
|
upload:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/upload/guest-js/**
|
- plugins/upload/guest-js/**
|
||||||
- plugins/upload/src/api-iife.js
|
- plugins/upload/src/api-iife.js
|
||||||
websocket:
|
websocket:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/websocket/guest-js/**
|
- plugins/websocket/guest-js/**
|
||||||
- plugins/websocket/src/api-iife.js
|
- plugins/websocket/src/api-iife.js
|
||||||
window-state:
|
window-state:
|
||||||
- .github/workflows/check-generated-files.yml
|
- .github/workflows/check-generated-files.yml
|
||||||
|
- pnpm-lock.yaml
|
||||||
- plugins/window-state/guest-js/**
|
- plugins/window-state/guest-js/**
|
||||||
- plugins/window-state/src/api-iife.js
|
- plugins/window-state/src/api-iife.js
|
||||||
|
|
||||||
@@ -140,10 +164,10 @@ jobs:
|
|||||||
${{ runner.os }}-
|
${{ runner.os }}-
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "lts/*"
|
node-version: 'lts/*'
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9.x.x
|
version: 10.x.x
|
||||||
run_install: true
|
run_install: true
|
||||||
|
|
||||||
- name: build api
|
- name: build api
|
||||||
|
|||||||
@@ -27,4 +27,4 @@ jobs:
|
|||||||
uses: jbolda/covector/packages/action@covector-v0
|
uses: jbolda/covector/packages/action@covector-v0
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
command: "status"
|
command: 'status'
|
||||||
|
|||||||
@@ -17,6 +17,6 @@ jobs:
|
|||||||
uses: jbolda/covector/packages/action@covector-v0
|
uses: jbolda/covector/packages/action@covector-v0
|
||||||
id: covector
|
id: covector
|
||||||
with:
|
with:
|
||||||
command: "status"
|
command: 'status'
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
comment: true
|
comment: true
|
||||||
@@ -11,7 +11,7 @@ on:
|
|||||||
- v2
|
- v2
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
# required for npm provenance
|
# required for oidc token
|
||||||
id-token: write
|
id-token: write
|
||||||
# required to create the GitHub Release
|
# required to create the GitHub Release
|
||||||
contents: write
|
contents: write
|
||||||
@@ -34,12 +34,12 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "lts/*"
|
node-version: 'lts/*'
|
||||||
registry-url: "https://registry.npmjs.org"
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9.x.x
|
version: 10.x.x
|
||||||
run_install: true
|
run_install: true
|
||||||
|
|
||||||
- name: cargo login
|
- name: cargo login
|
||||||
@@ -62,10 +62,9 @@ jobs:
|
|||||||
id: covector
|
id: covector
|
||||||
env:
|
env:
|
||||||
CARGO_TARGET_DIR: /mnt/target
|
CARGO_TARGET_DIR: /mnt/target
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.ORG_NPM_TOKEN }}
|
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
command: "version-or-publish"
|
command: 'version-or-publish'
|
||||||
createRelease: true
|
createRelease: true
|
||||||
recognizeContributors: true
|
recognizeContributors: true
|
||||||
|
|
||||||
@@ -75,11 +74,12 @@ jobs:
|
|||||||
|
|
||||||
- name: Create Pull Request With Versions Bumped
|
- name: Create Pull Request With Versions Bumped
|
||||||
id: cpr
|
id: cpr
|
||||||
uses: tauri-apps/create-pull-request@v3
|
uses: peter-evans/create-pull-request@dd2324fc52d5d43c699a5636bcf19fceaa70c284 # 7.0.7
|
||||||
if: steps.covector.outputs.commandRan == 'version'
|
if: steps.covector.outputs.commandRan == 'version'
|
||||||
with:
|
with:
|
||||||
title: "Publish New Versions (${{ github.ref_name }})"
|
title: 'Publish New Versions (${{ github.ref_name }})'
|
||||||
commit-message: "publish new versions"
|
commit-message: 'publish new versions'
|
||||||
labels: "version updates"
|
labels: 'version updates'
|
||||||
branch: "ci/release-${{ github.ref_name }}"
|
branch: 'ci/release-${{ github.ref_name }}'
|
||||||
body: ${{ steps.covector.outputs.change }}
|
body: ${{ steps.covector.outputs.change }}
|
||||||
|
sign-commits: true
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
name: check formatting
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
rustfmt:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: install Rust stable and rustfmt
|
||||||
|
uses: dtolnay/rust-toolchain@stable
|
||||||
|
with:
|
||||||
|
components: rustfmt
|
||||||
|
|
||||||
|
- name: run cargo fmt
|
||||||
|
run: cargo fmt --all -- --check
|
||||||
|
|
||||||
|
prettier:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Cache pnpm modules
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: ~/.pnpm-store
|
||||||
|
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 'lts/*'
|
||||||
|
- uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: 10.x.x
|
||||||
|
run_install: true
|
||||||
|
- run: pnpm format:check
|
||||||
|
|
||||||
|
taplo:
|
||||||
|
name: taplo (.toml files)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: install Rust stable
|
||||||
|
uses: dtolnay/rust-toolchain@stable
|
||||||
|
|
||||||
|
- name: install taplo-cli
|
||||||
|
uses: taiki-e/install-action@v2
|
||||||
|
with:
|
||||||
|
tool: taplo-cli
|
||||||
|
|
||||||
|
- run: taplo fmt --check --diff
|
||||||
@@ -5,20 +5,21 @@
|
|||||||
name: integration tests
|
name: integration tests
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/integration-tests.yml"
|
- '.github/workflows/integration-tests.yml'
|
||||||
- "plugins/updater/src/**"
|
- 'plugins/updater/src/**'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/integration-tests.yml"
|
- '.github/workflows/integration-tests.yml'
|
||||||
- "plugins/updater/src/**"
|
- 'plugins/updater/src/**'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run-integration-tests:
|
run-integration-tests:
|
||||||
|
|||||||
@@ -10,23 +10,23 @@ on:
|
|||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/lint-javascript.yml"
|
- '.github/workflows/lint-javascript.yml'
|
||||||
- "plugins/*/guest-js/**"
|
- 'plugins/*/guest-js/**'
|
||||||
- ".eslintignore"
|
- '.eslintignore'
|
||||||
- ".eslintrc.json"
|
- '.eslintrc.json'
|
||||||
- ".prettierignore"
|
- '.prettierignore'
|
||||||
- "**/package.json"
|
- '**/package.json'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/lint-javascript.yml"
|
- '.github/workflows/lint-javascript.yml'
|
||||||
- "plugins/*/guest-js/**"
|
- 'plugins/*/guest-js/**'
|
||||||
- ".eslintignore"
|
- '.eslintignore'
|
||||||
- ".eslintrc.json"
|
- '.eslintrc.json'
|
||||||
- ".prettierignore"
|
- '.prettierignore'
|
||||||
- "**/package.json"
|
- '**/package.json'
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@@ -46,30 +46,10 @@ jobs:
|
|||||||
${{ runner.os }}-
|
${{ runner.os }}-
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "lts/*"
|
node-version: 'lts/*'
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9.x.x
|
version: 10.x.x
|
||||||
run_install: true
|
run_install: true
|
||||||
- name: eslint
|
- name: eslint
|
||||||
run: pnpm lint
|
run: pnpm lint
|
||||||
prettier:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Cache pnpm modules
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: ~/.pnpm-store
|
|
||||||
key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: "lts/*"
|
|
||||||
- uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: 9.x.x
|
|
||||||
run_install: true
|
|
||||||
- name: prettier check
|
|
||||||
run: pnpm format-check
|
|
||||||
|
|||||||
@@ -10,19 +10,19 @@ on:
|
|||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/lint-rust.yml"
|
- '.github/workflows/lint-rust.yml'
|
||||||
- "plugins/*/src/**"
|
- 'plugins/*/src/**'
|
||||||
- "!plugins/*/src/api-iife.js"
|
- '!plugins/*/src/api-iife.js'
|
||||||
- "**/Cargo.toml"
|
- '**/Cargo.toml'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/lint-rust.yml"
|
- '.github/workflows/lint-rust.yml'
|
||||||
- "plugins/*/src/**"
|
- 'plugins/*/src/**'
|
||||||
- "!plugins/*/src/api-iife.js"
|
- '!plugins/*/src/api-iife.js'
|
||||||
- "**/Cargo.toml"
|
- '**/Cargo.toml'
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@@ -41,9 +41,6 @@ jobs:
|
|||||||
id: filter
|
id: filter
|
||||||
with:
|
with:
|
||||||
filters: |
|
filters: |
|
||||||
tauri-plugin-authenticator:
|
|
||||||
- .github/workflows/lint-rust.yml
|
|
||||||
- plugins/authenticator/**
|
|
||||||
tauri-plugin-autostart:
|
tauri-plugin-autostart:
|
||||||
- .github/workflows/lint-rust.yml
|
- .github/workflows/lint-rust.yml
|
||||||
- plugins/autostart/**
|
- plugins/autostart/**
|
||||||
@@ -69,6 +66,9 @@ jobs:
|
|||||||
tauri-plugin-global-shortcut:
|
tauri-plugin-global-shortcut:
|
||||||
- .github/workflows/lint-rust.yml
|
- .github/workflows/lint-rust.yml
|
||||||
- plugins/global-shortcut/**
|
- plugins/global-shortcut/**
|
||||||
|
tauri-plugin-opener:
|
||||||
|
- .github/workflows/lint-rust.yml
|
||||||
|
- plugins/opener/**
|
||||||
tauri-plugin-haptics:
|
tauri-plugin-haptics:
|
||||||
- .github/workflows/lint-rust.yml
|
- .github/workflows/lint-rust.yml
|
||||||
- plugins/haptics/**
|
- plugins/haptics/**
|
||||||
@@ -129,7 +129,7 @@ jobs:
|
|||||||
clippy:
|
clippy:
|
||||||
needs: changes
|
needs: changes
|
||||||
if: ${{ needs.changes.outputs.packages != '[]' && needs.changes.outputs.packages != '' }}
|
if: ${{ needs.changes.outputs.packages != '[]' && needs.changes.outputs.packages != '' }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -138,10 +138,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: install webkit2gtk and libudev for [authenticator]
|
- name: install webkit2gtk
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libudev-dev
|
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev
|
||||||
|
|
||||||
- name: Install clippy with stable toolchain
|
- name: Install clippy with stable toolchain
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@stable
|
||||||
@@ -150,32 +150,9 @@ jobs:
|
|||||||
|
|
||||||
- uses: Swatinem/rust-cache@v2
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- name: create dummy dist
|
|
||||||
working-directory: examples/api
|
|
||||||
run: mkdir dist
|
|
||||||
|
|
||||||
- name: clippy ${{ matrix.package }}
|
- name: clippy ${{ matrix.package }}
|
||||||
if: matrix.package != 'tauri-plugin-sql'
|
|
||||||
run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings
|
run: cargo clippy --package ${{ matrix.package }} --all-targets -- -D warnings
|
||||||
|
|
||||||
- name: clippy ${{ matrix.package }} mysql
|
- name: clippy ${{ matrix.package }} --all-features
|
||||||
if: matrix.package == 'tauri-plugin-sql'
|
if: matrix.package != 'tauri-plugin-dialog'
|
||||||
run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features mysql -- -D warnings
|
run: cargo clippy --package ${{ matrix.package }} --all-targets --all-features -- -D warnings
|
||||||
|
|
||||||
- name: clippy ${{ matrix.package }} postgres
|
|
||||||
if: matrix.package == 'tauri-plugin-sql'
|
|
||||||
run: cargo clippy --package ${{ matrix.package }} --all-targets --no-default-features --features postgres -- -D warnings
|
|
||||||
|
|
||||||
fmt:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install rustfmt with nightly toolchain
|
|
||||||
uses: dtolnay/rust-toolchain@nightly
|
|
||||||
with:
|
|
||||||
components: rustfmt
|
|
||||||
|
|
||||||
- name: Check formatting
|
|
||||||
run: cargo fmt --all -- --check
|
|
||||||
|
|||||||
@@ -34,11 +34,11 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "lts/*"
|
node-version: 'lts/*'
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v4
|
- uses: pnpm/action-setup@v4
|
||||||
with:
|
with:
|
||||||
version: 9.x.x
|
version: 10.x.x
|
||||||
run_install: true
|
run_install: true
|
||||||
|
|
||||||
- name: Build packages
|
- name: Build packages
|
||||||
|
|||||||
@@ -10,21 +10,21 @@ on:
|
|||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/test-rust.yml"
|
- '.github/workflows/test-rust.yml'
|
||||||
- "plugins/*/src/**"
|
- 'plugins/*/src/**'
|
||||||
- "!plugins/*/src/api-iife.js"
|
- '!plugins/*/src/api-iife.js'
|
||||||
- "**/Cargo.toml"
|
- '**/Cargo.toml'
|
||||||
- "**/Cargo.lock"
|
- '**/Cargo.lock'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- v1
|
- v1
|
||||||
- v2
|
- v2
|
||||||
paths:
|
paths:
|
||||||
- ".github/workflows/test-rust.yml"
|
- '.github/workflows/test-rust.yml'
|
||||||
- "plugins/*/src/**"
|
- 'plugins/*/src/**'
|
||||||
- "!plugins/*/src/api-iife.js"
|
- '!plugins/*/src/api-iife.js'
|
||||||
- "**/Cargo.toml"
|
- '**/Cargo.toml'
|
||||||
- "**/Cargo.lock"
|
- '**/Cargo.lock'
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
@@ -44,116 +44,143 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
base: v2
|
base: v2
|
||||||
filters: |
|
filters: |
|
||||||
tauri-plugin-authenticator:
|
|
||||||
- .github/workflows/test-rust.yml
|
|
||||||
- Cargo.toml
|
|
||||||
- plugins/authenticator/**
|
|
||||||
tauri-plugin-autostart:
|
tauri-plugin-autostart:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/autostart/**
|
- plugins/autostart/**
|
||||||
tauri-plugin-cli:
|
tauri-plugin-cli:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/cli/**
|
- plugins/cli/**
|
||||||
tauri-plugin-clipboard-manager:
|
tauri-plugin-clipboard-manager:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/clipboard-manager/**
|
- plugins/clipboard-manager/**
|
||||||
tauri-plugin-deep-link:
|
tauri-plugin-deep-link:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/deep-link/**
|
- plugins/deep-link/**
|
||||||
tauri-plugin-dialog:
|
tauri-plugin-dialog:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/dialog/**
|
- plugins/dialog/**
|
||||||
- plugins/fs/**
|
- plugins/fs/**
|
||||||
tauri-plugin-fs:
|
tauri-plugin-fs:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/fs/**
|
- plugins/fs/**
|
||||||
tauri-plugin-geolocation:
|
tauri-plugin-geolocation:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/geolocation/**
|
- plugins/geolocation/**
|
||||||
tauri-plugin-global-shortcut:
|
tauri-plugin-global-shortcut:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/global-shortcut/**
|
- plugins/global-shortcut/**
|
||||||
|
tauri-plugin-opener:
|
||||||
|
- .github/workflows/test-rust.yml
|
||||||
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
|
- plugins/opener/**
|
||||||
tauri-plugin-haptics:
|
tauri-plugin-haptics:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/haptics/**
|
- plugins/haptics/**
|
||||||
tauri-plugin-http:
|
tauri-plugin-http:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/http/**
|
- plugins/http/**
|
||||||
- plugins/fs/**
|
- plugins/fs/**
|
||||||
tauri-plugin-localhost:
|
tauri-plugin-localhost:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/localhost/**
|
- plugins/localhost/**
|
||||||
tauri-plugin-log:
|
tauri-plugin-log:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/log/**
|
- plugins/log/**
|
||||||
tauri-plugin-notification:
|
tauri-plugin-notification:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/notification/**
|
- plugins/notification/**
|
||||||
tauri-plugin-os:
|
tauri-plugin-os:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/os/**
|
- plugins/os/**
|
||||||
tauri-plugin-persisted-scope:
|
tauri-plugin-persisted-scope:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/persisted-scope/**
|
- plugins/persisted-scope/**
|
||||||
- plugins/fs/**
|
- plugins/fs/**
|
||||||
tauri-plugin-positioner:
|
tauri-plugin-positioner:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/positioner/**
|
- plugins/positioner/**
|
||||||
tauri-plugin-process:
|
tauri-plugin-process:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/process/**
|
- plugins/process/**
|
||||||
tauri-plugin-shell:
|
tauri-plugin-shell:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/shell/**
|
- plugins/shell/**
|
||||||
tauri-plugin-single-instance:
|
tauri-plugin-single-instance:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/single-instance/**
|
- plugins/single-instance/**
|
||||||
tauri-plugin-sql:
|
tauri-plugin-sql:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/sql/**
|
- plugins/sql/**
|
||||||
tauri-plugin-store:
|
tauri-plugin-store:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/store/**
|
- plugins/store/**
|
||||||
tauri-plugin-stronghold:
|
tauri-plugin-stronghold:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/stronghold/**
|
- plugins/stronghold/**
|
||||||
tauri-plugin-updater:
|
tauri-plugin-updater:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/updater/**
|
- plugins/updater/**
|
||||||
tauri-plugin-upload:
|
tauri-plugin-upload:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/upload/**
|
- plugins/upload/**
|
||||||
tauri-plugin-websocket:
|
tauri-plugin-websocket:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/websocket/**
|
- plugins/websocket/**
|
||||||
tauri-plugin-window-state:
|
tauri-plugin-window-state:
|
||||||
- .github/workflows/test-rust.yml
|
- .github/workflows/test-rust.yml
|
||||||
- Cargo.toml
|
- Cargo.toml
|
||||||
|
- Cargo.lock
|
||||||
- plugins/window-state/**
|
- plugins/window-state/**
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@@ -167,32 +194,32 @@ jobs:
|
|||||||
- {
|
- {
|
||||||
target: x86_64-pc-windows-msvc,
|
target: x86_64-pc-windows-msvc,
|
||||||
os: windows-latest,
|
os: windows-latest,
|
||||||
runner: "cargo",
|
runner: 'cargo',
|
||||||
command: "test",
|
command: 'test'
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
target: x86_64-unknown-linux-gnu,
|
target: x86_64-unknown-linux-gnu,
|
||||||
os: ubuntu-latest,
|
os: ubuntu-22.04,
|
||||||
runner: "cargo",
|
runner: 'cargo',
|
||||||
command: "test",
|
command: 'test'
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
target: aarch64-apple-darwin,
|
target: aarch64-apple-darwin,
|
||||||
os: macos-latest,
|
os: macos-latest,
|
||||||
runner: "cargo",
|
runner: 'cargo',
|
||||||
command: "test",
|
command: 'test'
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
target: aarch64-apple-ios,
|
target: aarch64-apple-ios,
|
||||||
os: macos-latest,
|
os: macos-latest,
|
||||||
runner: "cargo",
|
runner: 'cargo',
|
||||||
command: "build",
|
command: 'build'
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
target: aarch64-linux-android,
|
target: aarch64-linux-android,
|
||||||
os: ubuntu-latest,
|
os: ubuntu-latest,
|
||||||
runner: "cross",
|
runner: 'cross',
|
||||||
command: "build",
|
command: 'build'
|
||||||
}
|
}
|
||||||
|
|
||||||
runs-on: ${{ matrix.platform.os }}
|
runs-on: ${{ matrix.platform.os }}
|
||||||
@@ -200,19 +227,13 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: install webkit2gtk and libudev for [authenticator]
|
- name: install webkit2gtk
|
||||||
if: contains(matrix.platform.target, 'unknown-linux')
|
if: contains(matrix.platform.target, 'unknown-linux')
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libudev-dev
|
sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev
|
||||||
|
|
||||||
- name: install openssl
|
- uses: dtolnay/rust-toolchain@1.77.2
|
||||||
if: ${{ matrix.platform.os == 'windows-latest' && matrix.package == 'tauri-plugin-authenticator' }}
|
|
||||||
run: |
|
|
||||||
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
|
|
||||||
vcpkg install openssl:x64-windows-static-md
|
|
||||||
|
|
||||||
- uses: dtolnay/rust-toolchain@1.75.0
|
|
||||||
with:
|
with:
|
||||||
targets: ${{ matrix.platform.target }}
|
targets: ${{ matrix.platform.target }}
|
||||||
|
|
||||||
@@ -220,30 +241,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
key: cache-${{ matrix.package }}-${{ matrix.platform.target }}
|
key: cache-${{ matrix.package }}-${{ matrix.platform.target }}
|
||||||
|
|
||||||
- name: create dummy dist
|
|
||||||
working-directory: examples/api
|
|
||||||
run: mkdir dist
|
|
||||||
|
|
||||||
- name: install cross
|
- name: install cross
|
||||||
if: ${{ matrix.platform.runner == 'cross' }}
|
if: ${{ matrix.platform.runner == 'cross' }}
|
||||||
run: cargo +stable install cross --git https://github.com/cross-rs/cross
|
run: cargo +stable install cross --git https://github.com/cross-rs/cross
|
||||||
|
|
||||||
- name: test ${{ matrix.package }}
|
- name: test ${{ matrix.package }}
|
||||||
if: matrix.package != 'tauri-plugin-sql' && matrix.package != 'tauri-plugin-http'
|
if: ${{ matrix.package != 'tauri-plugin-http' && matrix.package != 'tauri-plugin-dialog' }}
|
||||||
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features
|
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --all-features
|
||||||
|
|
||||||
- name: test ${{ matrix.package }}
|
- name: test ${{ matrix.package }}
|
||||||
if: matrix.package == 'tauri-plugin-http'
|
if: ${{ matrix.package == 'tauri-plugin-http' || matrix.package == 'tauri-plugin-dialog' }}
|
||||||
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets
|
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets
|
||||||
|
|
||||||
- name: test ${{ matrix.package }} sqlite
|
|
||||||
if: matrix.package == 'tauri-plugin-sql'
|
|
||||||
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features sqlite
|
|
||||||
|
|
||||||
- name: test ${{ matrix.package }} mysql
|
|
||||||
if: matrix.package == 'tauri-plugin-sql'
|
|
||||||
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features mysql
|
|
||||||
|
|
||||||
- name: test ${{ matrix.package }} postgres
|
|
||||||
if: matrix.package == 'tauri-plugin-sql'
|
|
||||||
run: ${{ matrix.platform.runner }} ${{ matrix.platform.command }} --package ${{ matrix.package }} --target ${{ matrix.platform.target }} --all-targets --features postgres
|
|
||||||
|
|||||||
+61
-9
@@ -1,10 +1,62 @@
|
|||||||
target
|
# dependency directories
|
||||||
node_modules
|
node_modules/
|
||||||
dist-js
|
target/
|
||||||
dist
|
|
||||||
|
# Optional npm and yarn cache directory
|
||||||
|
.npm/
|
||||||
|
.yarn/
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env
|
||||||
|
|
||||||
|
# .vscode workspace settings file
|
||||||
|
.vscode/settings.json
|
||||||
|
.vscode/launch.json
|
||||||
|
.vscode/tasks.json
|
||||||
|
|
||||||
|
# npm, yarn and bun lock files
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
bun.lockb
|
||||||
|
bun.lock
|
||||||
|
|
||||||
|
# rust compiled folders
|
||||||
|
target/
|
||||||
|
|
||||||
|
# compiled plugins
|
||||||
|
dist-js/
|
||||||
|
|
||||||
|
# plugins .tauri directory
|
||||||
|
/plugins/*/.tauri
|
||||||
|
|
||||||
|
# examples
|
||||||
|
examples/*/dist
|
||||||
|
plugins/*/examples/*/dist
|
||||||
|
examples/*/src-tauri/gen/schemas
|
||||||
|
plugins/*/examples/*/src-tauri/gen/schemas
|
||||||
|
|
||||||
|
# logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# miscellaneous
|
||||||
|
/.vs
|
||||||
|
.DS_Store
|
||||||
|
.Thumbs.db
|
||||||
|
*.sublime*
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
debug.log
|
||||||
.gradle
|
TODO.md
|
||||||
**/capabilities/schemas
|
.aider.*
|
||||||
.build
|
|
||||||
.tauri
|
|
||||||
|
|||||||
+23
-8
@@ -1,12 +1,27 @@
|
|||||||
target
|
/.changes
|
||||||
node_modules
|
/.vscode
|
||||||
dist
|
|
||||||
dist-js
|
# dependcies and artifacts directories
|
||||||
|
node_modules/
|
||||||
|
target/
|
||||||
|
dist-js/
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# lock files
|
||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
Cargo.lock
|
|
||||||
.build
|
# examples gen directory
|
||||||
build
|
examples/*/src-tauri/gen/
|
||||||
|
plugins/*/examples/*/src-tauri/gen/
|
||||||
|
|
||||||
|
# autogenerated files
|
||||||
|
**/autogenerated/**/*.md
|
||||||
api-iife.js
|
api-iife.js
|
||||||
init-iife.js
|
init-iife.js
|
||||||
intermediates/
|
CHANGELOG.md
|
||||||
*schema.json
|
*schema.json
|
||||||
|
|
||||||
|
# mobile build
|
||||||
|
**/ios/.build
|
||||||
|
**/.tauri
|
||||||
|
plugins/*/android/build
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"semi": false,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"experimentalOperatorPosition": "start"
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
import { readFileSync, readdirSync } from 'fs'
|
||||||
|
import { join } from 'path'
|
||||||
|
|
||||||
|
/* const ignorePackages = [
|
||||||
|
'api-example',
|
||||||
|
'api-example-js',
|
||||||
|
'deep-link-example',
|
||||||
|
'deep-link-example-js'
|
||||||
|
] */
|
||||||
|
|
||||||
|
const rsOnly = ['localhost', 'persisted-scope', 'single-instance']
|
||||||
|
|
||||||
|
function checkChangeFiles(changeFiles) {
|
||||||
|
let code = 0
|
||||||
|
|
||||||
|
for (const file of changeFiles) {
|
||||||
|
const content = readFileSync(file, 'utf8')
|
||||||
|
const [frontMatter] = /^---[\s\S.]*---\n/i.exec(content)
|
||||||
|
const packages = frontMatter
|
||||||
|
.split('\n')
|
||||||
|
.filter((l) => !(l === '---' || !l))
|
||||||
|
.map((l) => l.replace(/('|")/g, '').split(':'))
|
||||||
|
|
||||||
|
const rsPackages = Object.fromEntries(
|
||||||
|
packages
|
||||||
|
.filter((v) => !v[0].endsWith('-js'))
|
||||||
|
.map((v) => [v[0], v[1].trim()])
|
||||||
|
)
|
||||||
|
const jsPackages = Object.fromEntries(
|
||||||
|
packages
|
||||||
|
.filter((v) => v[0].endsWith('-js'))
|
||||||
|
.map((v) => [v[0].slice(0, -3), v[1].trim()])
|
||||||
|
)
|
||||||
|
|
||||||
|
for (const pkg in rsPackages) {
|
||||||
|
if (rsOnly.includes(pkg)) continue
|
||||||
|
|
||||||
|
if (!jsPackages[pkg]) {
|
||||||
|
console.error(
|
||||||
|
`Missing "${rsPackages[pkg]}" bump for JS package "${pkg}-js" in ${file}.`
|
||||||
|
)
|
||||||
|
code = 1
|
||||||
|
} else if (rsPackages[pkg] != jsPackages[pkg]) {
|
||||||
|
console.error(
|
||||||
|
`"${pkg}" and "${pkg}-js" have different version bumps in ${file}.`
|
||||||
|
)
|
||||||
|
code = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const pkg in jsPackages) {
|
||||||
|
if (!rsPackages[pkg]) {
|
||||||
|
console.error(
|
||||||
|
`Missing "${jsPackages[pkg]}" bump for Rust package "${pkg}" in ${file}.`
|
||||||
|
)
|
||||||
|
code = 1
|
||||||
|
} else if (rsPackages[pkg] != jsPackages[pkg]) {
|
||||||
|
console.error(
|
||||||
|
`"${pkg}" and "${pkg}-js" have different version bumps in ${file}.`
|
||||||
|
)
|
||||||
|
code = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
process.exit(code)
|
||||||
|
}
|
||||||
|
|
||||||
|
const [_bin, _script, ...files] = process.argv
|
||||||
|
|
||||||
|
if (files.length > 0) {
|
||||||
|
checkChangeFiles(
|
||||||
|
files.filter((f) => f.toLowerCase() !== '.changes/readme.md')
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
const changeFiles = readdirSync('.changes')
|
||||||
|
.filter((f) => f.endsWith('.md') && f.toLowerCase() !== 'readme.md')
|
||||||
|
.map((p) => join('.changes', p))
|
||||||
|
checkChangeFiles(changeFiles)
|
||||||
|
}
|
||||||
@@ -2,129 +2,129 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import fs from "fs";
|
import fs from 'fs'
|
||||||
import path from "path";
|
import path from 'path'
|
||||||
import readline from "readline";
|
import readline from 'readline'
|
||||||
|
|
||||||
const header = `Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
const header = `Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
||||||
SPDX-License-Identifier: Apache-2.0
|
SPDX-License-Identifier: Apache-2.0
|
||||||
SPDX-License-Identifier: MIT`;
|
SPDX-License-Identifier: MIT`
|
||||||
const ignoredLicenses = [
|
const ignoredLicenses = [
|
||||||
"// Copyright 2021 Flavio Oliveira",
|
'// Copyright 2021 Flavio Oliveira',
|
||||||
"// Copyright 2021 Jonas Kruckenberg",
|
'// Copyright 2021 Jonas Kruckenberg',
|
||||||
"// Copyright 2018-2023 the Deno authors.",
|
'// Copyright 2018-2023 the Deno authors.'
|
||||||
];
|
]
|
||||||
|
|
||||||
const extensions = [".rs", ".js", ".ts", ".yml", ".swift", ".kt"];
|
const extensions = ['.rs', '.js', '.ts', '.yml', '.swift', '.kt']
|
||||||
const ignore = [
|
const ignore = [
|
||||||
"target",
|
'target',
|
||||||
"templates",
|
'templates',
|
||||||
"node_modules",
|
'node_modules',
|
||||||
"gen",
|
'gen',
|
||||||
"dist",
|
'dist',
|
||||||
"dist-js",
|
'dist-js',
|
||||||
".svelte-kit",
|
'.svelte-kit',
|
||||||
"api-iife.js",
|
'api-iife.js',
|
||||||
"init-iife.js",
|
'init-iife.js',
|
||||||
".build",
|
'.build',
|
||||||
"notify_rust",
|
'notify_rust'
|
||||||
];
|
]
|
||||||
|
|
||||||
async function checkFile(file) {
|
async function checkFile(file) {
|
||||||
if (
|
if (
|
||||||
extensions.some((e) => file.endsWith(e)) &&
|
extensions.some((e) => file.endsWith(e))
|
||||||
!ignore.some((i) => file.includes(`${path.sep}${i}`))
|
&& !ignore.some((i) => file.includes(`${path.sep}${i}`))
|
||||||
) {
|
) {
|
||||||
const fileStream = fs.createReadStream(file);
|
const fileStream = fs.createReadStream(file)
|
||||||
const rl = readline.createInterface({
|
const rl = readline.createInterface({
|
||||||
input: fileStream,
|
input: fileStream,
|
||||||
crlfDelay: Infinity,
|
crlfDelay: Infinity
|
||||||
});
|
})
|
||||||
|
|
||||||
let contents = ``;
|
let contents = ``
|
||||||
let i = 0;
|
let i = 0
|
||||||
for await (let line of rl) {
|
for await (let line of rl) {
|
||||||
// ignore empty lines, allow shebang, swift-tools-version and bundler license
|
// ignore empty lines, allow shebang, swift-tools-version and bundler license
|
||||||
if (
|
if (
|
||||||
line.length === 0 ||
|
line.length === 0
|
||||||
line.startsWith("#!") ||
|
|| line.startsWith('#!')
|
||||||
line.startsWith("// swift-tools-version:") ||
|
|| line.startsWith('// swift-tools-version:')
|
||||||
ignoredLicenses.includes(line)
|
|| ignoredLicenses.includes(line)
|
||||||
) {
|
) {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// strip comment marker
|
// strip comment marker
|
||||||
if (line.startsWith("// ")) {
|
if (line.startsWith('// ')) {
|
||||||
line = line.substring(3);
|
line = line.substring(3)
|
||||||
} else if (line.startsWith("# ")) {
|
} else if (line.startsWith('# ')) {
|
||||||
line = line.substring(2);
|
line = line.substring(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
contents += line;
|
contents += line
|
||||||
if (++i === 3) {
|
if (++i === 3) {
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
contents += "\n";
|
contents += '\n'
|
||||||
}
|
}
|
||||||
if (contents !== header) {
|
if (contents !== header) {
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
async function check(src) {
|
async function check(src) {
|
||||||
const missingHeader = [];
|
const missingHeader = []
|
||||||
|
|
||||||
for (const entry of fs.readdirSync(src, {
|
for (const entry of fs.readdirSync(src, {
|
||||||
withFileTypes: true,
|
withFileTypes: true
|
||||||
})) {
|
})) {
|
||||||
const p = path.join(src, entry.name);
|
const p = path.join(src, entry.name)
|
||||||
|
|
||||||
if (entry.isSymbolicLink() || ignore.includes(entry.name)) {
|
if (entry.isSymbolicLink() || ignore.includes(entry.name)) {
|
||||||
continue;
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry.isDirectory()) {
|
if (entry.isDirectory()) {
|
||||||
const missing = await check(p);
|
const missing = await check(p)
|
||||||
missingHeader.push(...missing);
|
missingHeader.push(...missing)
|
||||||
} else {
|
} else {
|
||||||
const isMissing = await checkFile(p);
|
const isMissing = await checkFile(p)
|
||||||
if (isMissing) {
|
if (isMissing) {
|
||||||
missingHeader.push(p);
|
missingHeader.push(p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return missingHeader;
|
return missingHeader
|
||||||
}
|
}
|
||||||
|
|
||||||
const [_bin, _script, ...files] = process.argv;
|
const [_bin, _script, ...files] = process.argv
|
||||||
|
|
||||||
if (files.length > 0) {
|
if (files.length > 0) {
|
||||||
async function run() {
|
async function run() {
|
||||||
const missing = [];
|
const missing = []
|
||||||
for (const f of files) {
|
for (const f of files) {
|
||||||
const isMissing = await checkFile(f);
|
const isMissing = await checkFile(f)
|
||||||
if (isMissing) {
|
if (isMissing) {
|
||||||
missing.push(f);
|
missing.push(f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (missing.length > 0) {
|
if (missing.length > 0) {
|
||||||
console.log(missing.join("\n"));
|
console.log(missing.join('\n'))
|
||||||
process.exit(1);
|
process.exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
run();
|
run()
|
||||||
} else {
|
} else {
|
||||||
check(path.resolve(new URL(import.meta.url).pathname, "../../..")).then(
|
check(path.resolve(new URL(import.meta.url).pathname, '../../..')).then(
|
||||||
(missing) => {
|
(missing) => {
|
||||||
if (missing.length > 0) {
|
if (missing.length > 0) {
|
||||||
console.log(missing.join("\n"));
|
console.log(missing.join('\n'))
|
||||||
process.exit(1);
|
process.exit(1)
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
plugins/*/permissions/autogenerated/
|
||||||
|
plugins/*/android/.tauri/tauri-api/build/
|
||||||
Vendored
+8
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"rust-lang.rust-analyzer",
|
||||||
|
"EditorConfig.EditorConfig",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"tamasfe.even-better-toml"
|
||||||
|
]
|
||||||
|
}
|
||||||
Generated
+2384
-1868
File diff suppressed because it is too large
Load Diff
+10
-8
@@ -10,24 +10,26 @@ resolver = "2"
|
|||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
|
tracing = "0.1"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
tauri = { version = "2.0.0-rc.8", default-features = false }
|
tauri = { version = "2.10", default-features = false }
|
||||||
tauri-build = "2.0.0-rc.7"
|
tauri-build = "2.5"
|
||||||
tauri-plugin = "2.0.0-rc.7"
|
tauri-plugin = "2.5"
|
||||||
tauri-utils = "2.0.0-rc.7"
|
tauri-utils = "2.8"
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
thiserror = "1"
|
thiserror = "2"
|
||||||
url = "2"
|
url = "2"
|
||||||
schemars = "0.8"
|
schemars = "0.8"
|
||||||
dunce = "1"
|
dunce = "1"
|
||||||
specta = "=2.0.0-rc.20"
|
specta = "^2.0.0-rc.16"
|
||||||
#tauri-specta = "=2.0.0-rc.11"
|
glob = "0.3"
|
||||||
|
zbus = "5.9"
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["Tauri Programme within The Commons Conservancy"]
|
authors = ["Tauri Programme within The Commons Conservancy"]
|
||||||
license = "Apache-2.0 OR MIT"
|
license = "Apache-2.0 OR MIT"
|
||||||
rust-version = "1.75"
|
rust-version = "1.77.2"
|
||||||
repository = "https://github.com/tauri-apps/plugins-workspace"
|
repository = "https://github.com/tauri-apps/plugins-workspace"
|
||||||
|
|
||||||
# default to small, optimized release binaries
|
# default to small, optimized release binaries
|
||||||
|
|||||||
@@ -1,37 +1,45 @@
|
|||||||
|
# Official Tauri Plugins
|
||||||
|
|
||||||
|
This repo and all plugins require a Rust version of at least **1.77.2**
|
||||||
|
|
||||||
## Plugins Found Here
|
## Plugins Found Here
|
||||||
|
|
||||||
| | | Win | Mac | Lin | iOS | And |
|
| | | Win | Mac | Lin | iOS | And |
|
||||||
| ----------------------------------------------- | ------------------------------------------------------ | --- | --- | --- | --- | --- |
|
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- | --- | --- | --- |
|
||||||
| [authenticator](plugins/authenticator) | Interface with hardware security keys. | ✅ | ✅ | ✅ | ? | ? |
|
| [autostart](plugins/autostart) | Automatically launch your app at system startup. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
||||||
| [autostart](plugins/autostart) | Automatically launch your app at system startup. | ✅ | ✅ | ✅ | ? | ? |
|
| [barcode-scanner](plugins/barcode-scanner) | Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes. | ? | ? | ? | ✅ | ✅ |
|
||||||
| [barcode-scanner](plugins/barcode-scanner) | Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes. | ? | ? | ? | ✅ | ✅ |
|
| [biometric](plugins/biometric) | Prompt the user for biometric authentication on Android and iOS. | ? | ? | ? | ✅ | ✅ |
|
||||||
| [biometric](plugins/biometric) | Prompt the user for biometric authentication on Android and iOS. | ? | ? | ? | ✅ | ✅ |
|
| [cli](plugins/cli) | Parse arguments from your Command Line Interface | ✅ | ✅ | ✅ | ❌ | ❌ |
|
||||||
| [cli](plugins/cli) | Parse arguments from your Command Line Interface | ✅ | ✅ | ✅ | ? | ? |
|
| [clipboard-manager](plugins/clipboard-manager) | Read and write to the system clipboard. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [clipboard-manager](plugins/clipboard-manager) | Read and write to the system clipboard. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [deep-link](plugins/deep-link) | Set your Tauri application as the default handler for an URL. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [deep-link](plugins/deep-link) | Set your Tauri application as the default handler for an URL. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [dialog](plugins/dialog) | Native system dialogs for opening and saving files along with message dialogs. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [dialog](plugins/dialog) | Native system dialogs for opening and saving files along with message dialogs. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [fs](plugins/fs) | Access the file system. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [fs](plugins/fs) | Access the file system. | ✅ | ✅ | ✅ | ? | ? |
|
| [geolocation](plugins/geolocation) | Get and track current device position. | ? | ? | ? | ✅ | ✅ |
|
||||||
| [global-shortcut](plugins/global-shortcut) | Register global shortcuts. | ✅ | ✅ | ✅ | ? | ? |
|
| [global-shortcut](plugins/global-shortcut) | Register global shortcuts. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [http](plugins/http) | Access the HTTP client written in Rust. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [haptics](plugins/haptics) | Haptic feedback and vibrations. | ? | ? | ? | ✅ | ✅ |
|
||||||
| [localhost](plugins/localhost) | Use a localhost server in production apps. | ✅ | ✅ | ✅ | ? | ? |
|
| [http](plugins/http) | Access the HTTP client written in Rust. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [log](plugins/log) | Configurable logging. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [localhost](plugins/localhost) | Use a localhost server in production apps. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [nfc](plugins/nfc) | Read and write NFC tags on Android and iOS. | ? | ? | ? | ✅ | ✅ |
|
| [log](plugins/log) | Configurable logging. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [notification](plugins/notification) | Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [nfc](plugins/nfc) | Read and write NFC tags on Android and iOS. | ? | ? | ? | ✅ | ✅ |
|
||||||
| [os](plugins/os) | Read information about the operating system. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [notification](plugins/notification) | Send message notifications (brief auto-expiring OS window element) to your user. Can also be used with the Notification Web API. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [persisted-scope](plugins/persisted-scope) | Persist runtime scope changes on the filesystem. | ✅ | ✅ | ✅ | ? | ? |
|
| [opener](plugins/opener) | Open files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [positioner](plugins/positioner) | Move windows to common locations. | ✅ | ✅ | ✅ | ? | ? |
|
| [os](plugins/os) | Read information about the operating system. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [process](plugins/process) | This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. | ✅ | ✅ | ✅ | ? | ? |
|
| [persisted-scope](plugins/persisted-scope) | Persist runtime scope changes on the filesystem. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [shell](plugins/shell) | Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? |
|
| [positioner](plugins/positioner) | Move windows to common locations. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
||||||
| [single-instance](plugins/single-instance) | Ensure a single instance of your tauri app is running. | ✅ | ? | ✅ | ? | ? |
|
| [process](plugins/process) | This plugin provides APIs to access the current process. To spawn child processes, see the [`shell`](https://github.com/tauri-apps/tauri-plugin-shell) plugin. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [sql](plugins/sql) | Interface with SQL databases. | ✅ | ✅ | ✅ | ? | ? |
|
| [shell](plugins/shell) | Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [store](plugins/store) | Persistent key value storage. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| [single-instance](plugins/single-instance) | Ensure a single instance of your tauri app is running. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
||||||
| [stronghold](plugins/stronghold) | Encrypted, secure database. | ✅ | ✅ | ✅ | ? | ? |
|
| [sql](plugins/sql) | Interface with SQL databases. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [updater](plugins/updater) | In-app updates for Tauri applications. | ✅ | ✅ | ✅ | ? | ? |
|
| [store](plugins/store) | Persistent key value storage. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| [upload](plugins/upload) | Tauri plugin for file uploads through HTTP. | ✅ | ✅ | ✅ | ? | ? |
|
| [stronghold](plugins/stronghold) | Encrypted, secure database. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
| [websocket](plugins/websocket) | Open a WebSocket connection using a Rust client in JS. | ✅ | ✅ | ✅ | ? | ? |
|
| [updater](plugins/updater) | In-app updates for Tauri applications. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
||||||
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ? | ? |
|
| [upload](plugins/upload) | Tauri plugin for file uploads through HTTP. | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
|
| [websocket](plugins/websocket) | Open a WebSocket connection using a Rust client in JS. | ✅ | ✅ | ✅ | ? | ? |
|
||||||
|
| [window-state](plugins/window-state) | Persist window sizes and positions. | ✅ | ✅ | ✅ | ❌ | ❌ |
|
||||||
|
|
||||||
_This repo and all plugins require a Rust version of at least **1.75**_
|
- ✅: (Partially) Supported
|
||||||
|
- ❌: Not supported
|
||||||
|
- `?` : Unknown/Untested or Planned
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
+25
-23
@@ -2,28 +2,30 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import eslint from "@eslint/js";
|
import eslint from '@eslint/js'
|
||||||
import eslintConfigPrettier from "eslint-config-prettier";
|
import { defineConfig } from 'eslint/config'
|
||||||
import eslintPluginSecurity from "eslint-plugin-security";
|
import eslintConfigPrettier from 'eslint-config-prettier'
|
||||||
import tseslint from "typescript-eslint";
|
import eslintPluginSecurity from 'eslint-plugin-security'
|
||||||
|
import tseslint from 'typescript-eslint'
|
||||||
|
|
||||||
export default tseslint.config(
|
export default defineConfig(
|
||||||
{
|
{
|
||||||
ignores: [
|
ignores: [
|
||||||
"**/target",
|
'**/target',
|
||||||
"**/node_modules",
|
'**/node_modules',
|
||||||
"**/examples",
|
'**/examples',
|
||||||
"**/dist",
|
'**/dist',
|
||||||
"**/dist-js",
|
'**/dist-js',
|
||||||
"**/build",
|
'**/build',
|
||||||
"**/api-iife.js",
|
'**/api-iife.js',
|
||||||
"**/init-iife.js",
|
'**/init-iife.js',
|
||||||
"**/init.js",
|
'**/init.js',
|
||||||
"**/rollup.config.js",
|
'**/rollup.config.js',
|
||||||
"**/bindings.ts",
|
'**/bindings.ts',
|
||||||
".scripts",
|
'**/.test-server',
|
||||||
"eslint.config.js",
|
'.scripts',
|
||||||
],
|
'eslint.config.js'
|
||||||
|
]
|
||||||
},
|
},
|
||||||
eslint.configs.recommended,
|
eslint.configs.recommended,
|
||||||
eslintConfigPrettier,
|
eslintConfigPrettier,
|
||||||
@@ -31,7 +33,7 @@ export default tseslint.config(
|
|||||||
...tseslint.configs.recommendedTypeChecked,
|
...tseslint.configs.recommendedTypeChecked,
|
||||||
{
|
{
|
||||||
languageOptions: {
|
languageOptions: {
|
||||||
parserOptions: { project: true, tsconfigRootDir: import.meta.dirname },
|
parserOptions: { project: true, tsconfigRootDir: import.meta.dirname }
|
||||||
},
|
}
|
||||||
},
|
}
|
||||||
);
|
)
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
/node_modules/
|
|
||||||
/.vscode/
|
|
||||||
.DS_Store
|
|
||||||
.cargo
|
|
||||||
@@ -1,5 +1,395 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## \[2.0.37]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater-js@2.10.0`
|
||||||
|
- Upgraded to `barcode-scanner-js@2.4.4`
|
||||||
|
- Upgraded to `http-js@2.5.7`
|
||||||
|
- Upgraded to `shell-js@2.3.5`
|
||||||
|
|
||||||
|
## \[2.0.36]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http-js@2.5.6`
|
||||||
|
- Upgraded to `dialog-js@2.6.0`
|
||||||
|
|
||||||
|
## \[2.0.35]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog-js@2.5.0`
|
||||||
|
- Upgraded to `log-js@2.8.0`
|
||||||
|
- Upgraded to `shell-js@2.3.4`
|
||||||
|
- Upgraded to `barcode-scanner-js@2.4.3`
|
||||||
|
- Upgraded to `fs-js@2.4.5`
|
||||||
|
- Upgraded to `http-js@2.5.5`
|
||||||
|
- Upgraded to `nfc-js@2.3.4`
|
||||||
|
- Upgraded to `opener-js@2.5.3`
|
||||||
|
- Upgraded to `store-js@2.4.2`
|
||||||
|
|
||||||
|
## \[2.0.34]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner-js@2.4.2`
|
||||||
|
- Upgraded to `biometric-js@2.3.2`
|
||||||
|
- Upgraded to `cli-js@2.4.1`
|
||||||
|
- Upgraded to `clipboard-manager-js@2.3.2`
|
||||||
|
- Upgraded to `dialog-js@2.4.2`
|
||||||
|
- Upgraded to `fs-js@2.4.4`
|
||||||
|
- Upgraded to `global-shortcut-js@2.3.1`
|
||||||
|
- Upgraded to `http-js@2.5.4`
|
||||||
|
- Upgraded to `log-js@2.7.1`
|
||||||
|
- Upgraded to `nfc-js@2.3.3`
|
||||||
|
- Upgraded to `notification-js@2.3.3`
|
||||||
|
- Upgraded to `opener-js@2.5.2`
|
||||||
|
- Upgraded to `os-js@2.3.2`
|
||||||
|
- Upgraded to `process-js@2.3.1`
|
||||||
|
- Upgraded to `shell-js@2.3.3`
|
||||||
|
- Upgraded to `store-js@2.4.1`
|
||||||
|
|
||||||
|
## \[2.0.33]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner-js@2.4.1`
|
||||||
|
- Upgraded to `biometric-js@2.3.1`
|
||||||
|
- Upgraded to `clipboard-manager-js@2.3.1`
|
||||||
|
- Upgraded to `dialog-js@2.4.1`
|
||||||
|
- Upgraded to `fs-js@2.4.3`
|
||||||
|
- Upgraded to `nfc-js@2.3.2`
|
||||||
|
- Upgraded to `notification-js@2.3.2`
|
||||||
|
- Upgraded to `opener-js@2.5.1`
|
||||||
|
- Upgraded to `shell-js@2.3.2`
|
||||||
|
- Upgraded to `http-js@2.5.3`
|
||||||
|
|
||||||
|
## \[2.0.32]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog-js@2.4.0`
|
||||||
|
- Upgraded to `log-js@2.7.0`
|
||||||
|
|
||||||
|
## \[2.0.31]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `shell-js@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.30]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `notification-js@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.29]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs-js@2.4.2`
|
||||||
|
- Upgraded to `nfc-js@2.3.1`
|
||||||
|
- Upgraded to `opener-js@2.5.0`
|
||||||
|
- Upgraded to `os-js@2.3.1`
|
||||||
|
- Upgraded to `store-js@2.4.0`
|
||||||
|
- Upgraded to `dialog-js@2.3.3`
|
||||||
|
- Upgraded to `http-js@2.5.2`
|
||||||
|
|
||||||
|
## \[2.0.28]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog-js@2.3.2`
|
||||||
|
|
||||||
|
## \[2.0.27]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner-js@2.4.0`
|
||||||
|
- Upgraded to `fs-js@2.4.1`
|
||||||
|
- Upgraded to `dialog-js@2.3.1`
|
||||||
|
- Upgraded to `http-js@2.5.1`
|
||||||
|
|
||||||
|
## \[2.0.26]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner-js@2.3.0`
|
||||||
|
- Upgraded to `biometric-js@2.3.0`
|
||||||
|
- Upgraded to `cli-js@2.4.0`
|
||||||
|
- Upgraded to `clipboard-manager-js@2.3.0`
|
||||||
|
- Upgraded to `fs-js@2.4.0`
|
||||||
|
- Upgraded to `dialog-js@2.3.0`
|
||||||
|
- Upgraded to `global-shortcut-js@2.3.0`
|
||||||
|
- Upgraded to `opener-js@2.4.0`
|
||||||
|
- Upgraded to `http-js@2.5.0`
|
||||||
|
- Upgraded to `log-js@2.6.0`
|
||||||
|
- Upgraded to `nfc-js@2.3.0`
|
||||||
|
- Upgraded to `notification-js@2.3.0`
|
||||||
|
- Upgraded to `os-js@2.3.0`
|
||||||
|
- Upgraded to `process-js@2.3.0`
|
||||||
|
- Upgraded to `shell-js@2.3.0`
|
||||||
|
- Upgraded to `store-js@2.3.0`
|
||||||
|
- Upgraded to `updater-js@2.9.0`
|
||||||
|
|
||||||
|
## \[2.0.25]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `cli-js@2.3.0`
|
||||||
|
- Upgraded to `log-js@2.5.1`
|
||||||
|
- Upgraded to `opener-js@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.24]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater-js@2.8.1`
|
||||||
|
|
||||||
|
## \[2.0.23]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater-js@2.8.0`
|
||||||
|
- Upgraded to `barcode-scanner-js@2.2.1`
|
||||||
|
- Upgraded to `biometric-js@2.2.2`
|
||||||
|
- Upgraded to `cli-js@2.2.1`
|
||||||
|
- Upgraded to `clipboard-manager-js@2.2.3`
|
||||||
|
- Upgraded to `nfc-js@2.2.1`
|
||||||
|
- Upgraded to `notification-js@2.2.3`
|
||||||
|
- Upgraded to `os-js@2.2.2`
|
||||||
|
- Upgraded to `process-js@2.2.2`
|
||||||
|
- Upgraded to `shell-js@2.2.2`
|
||||||
|
- Upgraded to `store-js@2.2.1`
|
||||||
|
- Upgraded to `log-js@2.5.0`
|
||||||
|
- Upgraded to `opener-js@2.3.0`
|
||||||
|
|
||||||
|
## \[2.0.22]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs-js@2.3.0`
|
||||||
|
- Upgraded to `global-shortcut-js@2.2.1`
|
||||||
|
- Upgraded to `http-js@2.4.4`
|
||||||
|
- Upgraded to `opener-js@2.2.7`
|
||||||
|
- Upgraded to `dialog-js@2.2.2`
|
||||||
|
|
||||||
|
## \[2.0.21]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log-js@2.4.0`
|
||||||
|
- Upgraded to `biometric-js@2.2.1`
|
||||||
|
- Upgraded to `updater-js@2.7.1`
|
||||||
|
|
||||||
|
## \[2.0.20]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http-js@2.4.3`
|
||||||
|
- Upgraded to `shell-js@2.2.1`
|
||||||
|
- Upgraded to `fs-js@2.2.1`
|
||||||
|
- Upgraded to `process-js@2.2.1`
|
||||||
|
- Upgraded to `updater-js@2.7.0`
|
||||||
|
- Upgraded to `dialog-js@2.2.1`
|
||||||
|
|
||||||
|
## \[2.0.19]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http-js@2.4.2`
|
||||||
|
- Upgraded to `updater-js@2.6.1`
|
||||||
|
|
||||||
|
## \[2.0.18]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http-js@2.4.1`
|
||||||
|
|
||||||
|
## \[2.0.17]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log-js@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.16]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `clipboard-manager-js@2.2.2`
|
||||||
|
- Upgraded to `notification-js@2.2.2`
|
||||||
|
- Upgraded to `os-js@2.2.1`
|
||||||
|
- Upgraded to `http-js@2.4.0`
|
||||||
|
- Upgraded to `log-js@2.3.0`
|
||||||
|
- Upgraded to `updater-js@2.6.0`
|
||||||
|
|
||||||
|
## \[2.0.15]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log-js@2.2.3`
|
||||||
|
- Upgraded to `opener-js@2.2.6`
|
||||||
|
|
||||||
|
## \[2.0.14]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log-js@2.2.2`
|
||||||
|
- Upgraded to `updater-js@2.5.1`
|
||||||
|
|
||||||
|
## \[2.0.13]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater-js@2.5.0`
|
||||||
|
|
||||||
|
## \[2.0.12]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `clipboard-manager-js@2.2.1`
|
||||||
|
- Upgraded to `http-js@2.3.0`
|
||||||
|
- Upgraded to `log-js@2.2.1`
|
||||||
|
- Upgraded to `updater-js@2.4.0`
|
||||||
|
|
||||||
|
## \[2.0.11]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `opener-js@2.2.5`
|
||||||
|
|
||||||
|
## \[2.0.10]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `notification-js@2.2.1`
|
||||||
|
- Upgraded to `opener-js@2.2.4`
|
||||||
|
|
||||||
|
## \[2.0.9]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `opener-js@2.2.3`
|
||||||
|
- Upgraded to `updater-js@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.8]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `opener-js@2.2.2`
|
||||||
|
|
||||||
|
## \[2.0.7]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater-js@2.3.0`
|
||||||
|
- Upgraded to `opener-js@2.2.1`
|
||||||
|
|
||||||
|
## \[2.0.6]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner-js@2.1.0`
|
||||||
|
- Upgraded to `biometric-js@2.1.0`
|
||||||
|
- Upgraded to `cli-js@2.1.0`
|
||||||
|
- Upgraded to `clipboard-manager-js@2.1.0`
|
||||||
|
- Upgraded to `dialog-js@2.1.0`
|
||||||
|
- Upgraded to `fs-js@2.1.0`
|
||||||
|
- Upgraded to `global-shortcut-js@2.1.0`
|
||||||
|
- Upgraded to `http-js@2.1.0`
|
||||||
|
- Upgraded to `log-js@2.1.0`
|
||||||
|
- Upgraded to `nfc-js@2.1.0`
|
||||||
|
- Upgraded to `notification-js@2.1.0`
|
||||||
|
- Upgraded to `opener-js@2.1.0`
|
||||||
|
- Upgraded to `os-js@2.1.0`
|
||||||
|
- Upgraded to `process-js@2.1.0`
|
||||||
|
- Upgraded to `shell-js@2.1.0`
|
||||||
|
- Upgraded to `store-js@2.2.0`
|
||||||
|
- Upgraded to `updater-js@2.1.0`
|
||||||
|
|
||||||
|
## \[2.0.5]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs-js@2.0.4`
|
||||||
|
- Upgraded to `dialog-js@2.0.2`
|
||||||
|
- Upgraded to `http-js@2.0.2`
|
||||||
|
|
||||||
|
## \[2.0.4]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log-js@2.0.2`
|
||||||
|
|
||||||
|
## \[2.0.3]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `clipboard-manager-js@2.0.1`
|
||||||
|
- Upgraded to `log-js@2.0.1`
|
||||||
|
- Upgraded to `fs-js@2.0.3`
|
||||||
|
- Upgraded to `opener-js@2.0.0`
|
||||||
|
|
||||||
|
## \[2.0.2]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs-js@2.0.2`
|
||||||
|
|
||||||
|
## \[2.0.1]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog-js@2.0.1`
|
||||||
|
- Upgraded to `fs-js@2.0.1`
|
||||||
|
- Upgraded to `http-js@2.0.1`
|
||||||
|
- Upgraded to `shell-js@2.0.1`
|
||||||
|
- Upgraded to `store-js@2.1.0`
|
||||||
|
|
||||||
|
## \[2.0.0]
|
||||||
|
|
||||||
|
- [`e2c4dfb6`](https://github.com/tauri-apps/plugins-workspace/commit/e2c4dfb6af43e5dd8d9ceba232c315f5febd55c1) Update to tauri v2 stable release.
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner-js@2.0.0`
|
||||||
|
- Upgraded to `biometric-js@2.0.0`
|
||||||
|
- Upgraded to `cli-js@2.0.0`
|
||||||
|
- Upgraded to `clipboard-manager-js@2.0.0`
|
||||||
|
- Upgraded to `fs-js@2.0.0`
|
||||||
|
- Upgraded to `dialog-js@2.0.0`
|
||||||
|
- Upgraded to `global-shortcut-js@2.0.0`
|
||||||
|
- Upgraded to `http-js@2.0.0`
|
||||||
|
- Upgraded to `log-js@2.0.0`
|
||||||
|
- Upgraded to `nfc-js@2.0.0`
|
||||||
|
- Upgraded to `notification-js@2.0.0`
|
||||||
|
- Upgraded to `os-js@2.0.0`
|
||||||
|
- Upgraded to `process-js@2.0.0`
|
||||||
|
- Upgraded to `shell-js@2.0.0`
|
||||||
|
- Upgraded to `store-js@2.0.0`
|
||||||
|
- Upgraded to `updater-js@2.0.0`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.5]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `store-js@2.0.0-rc.2`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.4]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner-js@2.0.0-rc.2`
|
||||||
|
- Upgraded to `clipboard-manager-js@2.0.0-rc.2`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.3]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater-js@2.0.0-rc.2`
|
||||||
|
|
||||||
## \[2.0.0-rc.2]
|
## \[2.0.0-rc.2]
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta
|
<meta
|
||||||
name="viewport"
|
name="viewport"
|
||||||
content="width=device-width, initial-scale=1.0, viewport-fit=cover"
|
content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=0"
|
||||||
/>
|
/>
|
||||||
<title>Svelte + Vite App</title>
|
<title>Svelte + Vite App</title>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
window.__TAURI_ISOLATION_HOOK__ = (payload) => {
|
window.__TAURI_ISOLATION_HOOK__ = (payload) => {
|
||||||
return payload;
|
return payload
|
||||||
};
|
}
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "bundler",
|
||||||
"target": "esnext",
|
"target": "ESNext",
|
||||||
"module": "esnext",
|
"module": "ESNext",
|
||||||
/**
|
/**
|
||||||
* svelte-preprocess cannot figure out whether you have
|
* svelte-preprocess cannot figure out whether you have
|
||||||
* a value or a type, so tell TypeScript to enforce using
|
* a value or a type, so tell TypeScript to enforce using
|
||||||
* `import type` instead of `import` for Types.
|
* `import type` instead of `import` for Types.
|
||||||
*/
|
*/
|
||||||
"importsNotUsedAsValues": "error",
|
"verbatimModuleSyntax": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
/**
|
/**
|
||||||
@@ -18,8 +18,6 @@
|
|||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"baseUrl": ".",
|
|
||||||
/**
|
/**
|
||||||
* Typecheck JS in `.svelte` and `.js` files by default.
|
* Typecheck JS in `.svelte` and `.js` files by default.
|
||||||
* Disable this if you'd like to use dynamic types.
|
* Disable this if you'd like to use dynamic types.
|
||||||
|
|||||||
+33
-28
@@ -1,40 +1,45 @@
|
|||||||
{
|
{
|
||||||
"name": "svelte-app",
|
"name": "api",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2.0.0-rc.2",
|
"version": "2.0.37",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --clearScreen false",
|
"dev": "vite --clearScreen false",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"serve": "vite preview"
|
"serve": "vite preview",
|
||||||
|
"tauri": "tauri"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "2.0.0-rc.4",
|
"@tauri-apps/api": "^2.10.1",
|
||||||
"@tauri-apps/plugin-barcode-scanner": "2.0.0-rc.1",
|
"@tauri-apps/plugin-barcode-scanner": "^2.4.4",
|
||||||
"@tauri-apps/plugin-biometric": "2.0.0-rc.1",
|
"@tauri-apps/plugin-biometric": "^2.3.2",
|
||||||
"@tauri-apps/plugin-cli": "2.0.0-rc.1",
|
"@tauri-apps/plugin-cli": "^2.4.1",
|
||||||
"@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.1",
|
"@tauri-apps/plugin-clipboard-manager": "^2.3.2",
|
||||||
"@tauri-apps/plugin-dialog": "2.0.0-rc.1",
|
"@tauri-apps/plugin-dialog": "^2.6.0",
|
||||||
"@tauri-apps/plugin-fs": "2.0.0-rc.2",
|
"@tauri-apps/plugin-fs": "^2.4.5",
|
||||||
"@tauri-apps/plugin-global-shortcut": "2.0.0-rc.1",
|
"@tauri-apps/plugin-geolocation": "^2.2.0",
|
||||||
"@tauri-apps/plugin-http": "2.0.0-rc.2",
|
"@tauri-apps/plugin-global-shortcut": "^2.3.1",
|
||||||
"@tauri-apps/plugin-nfc": "2.0.0-rc.1",
|
"@tauri-apps/plugin-haptics": "^2.2.0",
|
||||||
"@tauri-apps/plugin-notification": "2.0.0-rc.1",
|
"@tauri-apps/plugin-http": "^2.5.7",
|
||||||
"@tauri-apps/plugin-os": "2.0.0-rc.1",
|
"@tauri-apps/plugin-nfc": "^2.3.4",
|
||||||
"@tauri-apps/plugin-process": "2.0.0-rc.1",
|
"@tauri-apps/plugin-notification": "^2.3.3",
|
||||||
"@tauri-apps/plugin-shell": "2.0.0-rc.1",
|
"@tauri-apps/plugin-opener": "^2.5.3",
|
||||||
"@tauri-apps/plugin-store": "2.0.0-rc.1",
|
"@tauri-apps/plugin-os": "^2.3.2",
|
||||||
"@tauri-apps/plugin-updater": "2.0.0-rc.1",
|
"@tauri-apps/plugin-process": "^2.3.1",
|
||||||
"@zerodevx/svelte-json-view": "1.0.9"
|
"@tauri-apps/plugin-shell": "^2.3.5",
|
||||||
|
"@tauri-apps/plugin-store": "^2.4.2",
|
||||||
|
"@tauri-apps/plugin-updater": "^2.10.0",
|
||||||
|
"@tauri-apps/plugin-upload": "^2.3.0",
|
||||||
|
"@zerodevx/svelte-json-view": "1.0.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify-json/codicon": "^1.1.37",
|
"@iconify-json/codicon": "^1.2.12",
|
||||||
"@iconify-json/ph": "^1.1.8",
|
"@iconify-json/ph": "^1.2.2",
|
||||||
"@sveltejs/vite-plugin-svelte": "^3.0.1",
|
"@sveltejs/vite-plugin-svelte": "^6.0.0",
|
||||||
"@tauri-apps/cli": "2.0.0-rc.8",
|
"@tauri-apps/cli": "2.10.0",
|
||||||
"@unocss/extractor-svelte": "^0.62.0",
|
"@unocss/extractor-svelte": "^66.3.3",
|
||||||
"svelte": "^4.2.8",
|
"svelte": "^5.20.4",
|
||||||
"unocss": "^0.62.0",
|
"unocss": "^66.3.3",
|
||||||
"vite": "^5.0.13"
|
"vite": "^7.0.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,495 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## \[2.0.41]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater@2.10.0`
|
||||||
|
- Upgraded to `barcode-scanner@2.4.4`
|
||||||
|
- Upgraded to `http@2.5.7`
|
||||||
|
- Upgraded to `shell@2.3.5`
|
||||||
|
|
||||||
|
## \[2.0.40]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http@2.5.6`
|
||||||
|
- Upgraded to `dialog@2.6.0`
|
||||||
|
|
||||||
|
## \[2.0.39]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog@2.5.0`
|
||||||
|
- Upgraded to `log@2.8.0`
|
||||||
|
- Upgraded to `shell@2.3.4`
|
||||||
|
- Upgraded to `barcode-scanner@2.4.3`
|
||||||
|
- Upgraded to `fs@2.4.5`
|
||||||
|
- Upgraded to `http@2.5.5`
|
||||||
|
- Upgraded to `nfc@2.3.4`
|
||||||
|
- Upgraded to `opener@2.5.3`
|
||||||
|
- Upgraded to `store@2.4.2`
|
||||||
|
|
||||||
|
## \[2.0.38]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.4.2`
|
||||||
|
- Upgraded to `biometric@2.3.2`
|
||||||
|
- Upgraded to `cli@2.4.1`
|
||||||
|
- Upgraded to `clipboard-manager@2.3.2`
|
||||||
|
- Upgraded to `dialog@2.4.2`
|
||||||
|
- Upgraded to `fs@2.4.4`
|
||||||
|
- Upgraded to `geolocation@2.3.2`
|
||||||
|
- Upgraded to `global-shortcut@2.3.1`
|
||||||
|
- Upgraded to `haptics@2.3.2`
|
||||||
|
- Upgraded to `http@2.5.4`
|
||||||
|
- Upgraded to `log@2.7.1`
|
||||||
|
- Upgraded to `nfc@2.3.3`
|
||||||
|
- Upgraded to `notification@2.3.3`
|
||||||
|
- Upgraded to `opener@2.5.2`
|
||||||
|
- Upgraded to `os@2.3.2`
|
||||||
|
- Upgraded to `process@2.3.1`
|
||||||
|
- Upgraded to `shell@2.3.3`
|
||||||
|
- Upgraded to `store@2.4.1`
|
||||||
|
|
||||||
|
## \[2.0.37]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.4.1`
|
||||||
|
- Upgraded to `biometric@2.3.1`
|
||||||
|
- Upgraded to `clipboard-manager@2.3.1`
|
||||||
|
- Upgraded to `dialog@2.4.1`
|
||||||
|
- Upgraded to `fs@2.4.3`
|
||||||
|
- Upgraded to `geolocation@2.3.1`
|
||||||
|
- Upgraded to `haptics@2.3.1`
|
||||||
|
- Upgraded to `nfc@2.3.2`
|
||||||
|
- Upgraded to `notification@2.3.2`
|
||||||
|
- Upgraded to `opener@2.5.1`
|
||||||
|
- Upgraded to `shell@2.3.2`
|
||||||
|
- Upgraded to `http@2.5.3`
|
||||||
|
|
||||||
|
## \[2.0.36]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog@2.4.0`
|
||||||
|
- Upgraded to `log@2.7.0`
|
||||||
|
|
||||||
|
## \[2.0.35]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `shell@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.34]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `notification@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.33]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs@2.4.2`
|
||||||
|
- Upgraded to `nfc@2.3.1`
|
||||||
|
- Upgraded to `opener@2.5.0`
|
||||||
|
- Upgraded to `os@2.3.1`
|
||||||
|
- Upgraded to `store@2.4.0`
|
||||||
|
- Upgraded to `dialog@2.3.3`
|
||||||
|
- Upgraded to `http@2.5.2`
|
||||||
|
|
||||||
|
## \[2.0.32]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog@2.3.2`
|
||||||
|
|
||||||
|
## \[2.0.31]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.4.0`
|
||||||
|
- Upgraded to `fs@2.4.1`
|
||||||
|
- Upgraded to `dialog@2.3.1`
|
||||||
|
- Upgraded to `http@2.5.1`
|
||||||
|
|
||||||
|
## \[2.0.30]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.3.0`
|
||||||
|
- Upgraded to `biometric@2.3.0`
|
||||||
|
- Upgraded to `cli@2.4.0`
|
||||||
|
- Upgraded to `clipboard-manager@2.3.0`
|
||||||
|
- Upgraded to `fs@2.4.0`
|
||||||
|
- Upgraded to `dialog@2.3.0`
|
||||||
|
- Upgraded to `geolocation@2.3.0`
|
||||||
|
- Upgraded to `global-shortcut@2.3.0`
|
||||||
|
- Upgraded to `opener@2.4.0`
|
||||||
|
- Upgraded to `haptics@2.3.0`
|
||||||
|
- Upgraded to `http@2.5.0`
|
||||||
|
- Upgraded to `log@2.6.0`
|
||||||
|
- Upgraded to `nfc@2.3.0`
|
||||||
|
- Upgraded to `notification@2.3.0`
|
||||||
|
- Upgraded to `os@2.3.0`
|
||||||
|
- Upgraded to `process@2.3.0`
|
||||||
|
- Upgraded to `shell@2.3.0`
|
||||||
|
- Upgraded to `store@2.3.0`
|
||||||
|
- Upgraded to `updater@2.9.0`
|
||||||
|
|
||||||
|
## \[2.0.29]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `cli@2.3.0`
|
||||||
|
- Upgraded to `log@2.5.1`
|
||||||
|
- Upgraded to `opener@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.28]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater@2.8.1`
|
||||||
|
|
||||||
|
## \[2.0.27]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater@2.8.0`
|
||||||
|
- Upgraded to `barcode-scanner@2.2.1`
|
||||||
|
- Upgraded to `biometric@2.2.2`
|
||||||
|
- Upgraded to `cli@2.2.1`
|
||||||
|
- Upgraded to `clipboard-manager@2.2.3`
|
||||||
|
- Upgraded to `geolocation@2.2.5`
|
||||||
|
- Upgraded to `haptics@2.2.5`
|
||||||
|
- Upgraded to `nfc@2.2.1`
|
||||||
|
- Upgraded to `notification@2.2.3`
|
||||||
|
- Upgraded to `os@2.2.2`
|
||||||
|
- Upgraded to `process@2.2.2`
|
||||||
|
- Upgraded to `shell@2.2.2`
|
||||||
|
- Upgraded to `store@2.2.1`
|
||||||
|
- Upgraded to `log@2.5.0`
|
||||||
|
- Upgraded to `opener@2.3.0`
|
||||||
|
|
||||||
|
## \[2.0.26]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs@2.3.0`
|
||||||
|
- Upgraded to `global-shortcut@2.2.1`
|
||||||
|
- Upgraded to `http@2.4.4`
|
||||||
|
- Upgraded to `opener@2.2.7`
|
||||||
|
- Upgraded to `dialog@2.2.2`
|
||||||
|
|
||||||
|
## \[2.0.25]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log@2.4.0`
|
||||||
|
- Upgraded to `biometric@2.2.1`
|
||||||
|
- Upgraded to `updater@2.7.1`
|
||||||
|
|
||||||
|
## \[2.0.24]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http@2.4.3`
|
||||||
|
- Upgraded to `shell@2.2.1`
|
||||||
|
- Upgraded to `fs@2.2.1`
|
||||||
|
- Upgraded to `process@2.2.1`
|
||||||
|
- Upgraded to `updater@2.7.0`
|
||||||
|
- Upgraded to `dialog@2.2.1`
|
||||||
|
|
||||||
|
## \[2.0.23]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http@2.4.2`
|
||||||
|
- Upgraded to `updater@2.6.1`
|
||||||
|
|
||||||
|
## \[2.0.22]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `http@2.4.1`
|
||||||
|
|
||||||
|
## \[2.0.21]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.20]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `clipboard-manager@2.2.2`
|
||||||
|
- Upgraded to `geolocation@2.2.4`
|
||||||
|
- Upgraded to `haptics@2.2.4`
|
||||||
|
- Upgraded to `notification@2.2.2`
|
||||||
|
- Upgraded to `os@2.2.1`
|
||||||
|
- Upgraded to `http@2.4.0`
|
||||||
|
- Upgraded to `log@2.3.0`
|
||||||
|
- Upgraded to `updater@2.6.0`
|
||||||
|
|
||||||
|
## \[2.0.19]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log@2.2.3`
|
||||||
|
- Upgraded to `opener@2.2.6`
|
||||||
|
|
||||||
|
## \[2.0.18]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log@2.2.2`
|
||||||
|
- Upgraded to `updater@2.5.1`
|
||||||
|
|
||||||
|
## \[2.0.17]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater@2.5.0`
|
||||||
|
|
||||||
|
## \[2.0.16]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `clipboard-manager@2.2.1`
|
||||||
|
- Upgraded to `http@2.3.0`
|
||||||
|
- Upgraded to `log@2.2.1`
|
||||||
|
- Upgraded to `updater@2.4.0`
|
||||||
|
|
||||||
|
## \[2.0.15]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `haptics@2.2.3`
|
||||||
|
- Upgraded to `geolocation@2.2.3`
|
||||||
|
- Upgraded to `opener@2.2.5`
|
||||||
|
|
||||||
|
## \[2.0.14]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `geolocation@2.2.2`
|
||||||
|
- Upgraded to `haptics@2.2.2`
|
||||||
|
- Upgraded to `notification@2.2.1`
|
||||||
|
- Upgraded to `opener@2.2.4`
|
||||||
|
|
||||||
|
## \[2.0.13]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `geolocation@2.2.1`
|
||||||
|
- Upgraded to `haptics@2.2.1`
|
||||||
|
|
||||||
|
## \[2.0.12]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `opener@2.2.3`
|
||||||
|
- Upgraded to `updater@2.3.1`
|
||||||
|
|
||||||
|
## \[2.0.11]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `opener@2.2.2`
|
||||||
|
|
||||||
|
## \[2.0.10]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater@2.3.0`
|
||||||
|
- Upgraded to `opener@2.2.1`
|
||||||
|
|
||||||
|
## \[2.0.9]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.1.0`
|
||||||
|
- Upgraded to `biometric@2.1.0`
|
||||||
|
- Upgraded to `cli@2.1.0`
|
||||||
|
- Upgraded to `clipboard-manager@2.1.0`
|
||||||
|
- Upgraded to `dialog@2.1.0`
|
||||||
|
- Upgraded to `fs@2.2.0`
|
||||||
|
- Upgraded to `geolocation@2.1.0`
|
||||||
|
- Upgraded to `global-shortcut@2.1.0`
|
||||||
|
- Upgraded to `haptics@2.1.0`
|
||||||
|
- Upgraded to `http@2.1.0`
|
||||||
|
- Upgraded to `log@2.1.0`
|
||||||
|
- Upgraded to `nfc@2.1.0`
|
||||||
|
- Upgraded to `notification@2.1.0`
|
||||||
|
- Upgraded to `opener@2.1.0`
|
||||||
|
- Upgraded to `os@2.1.0`
|
||||||
|
- Upgraded to `process@2.1.0`
|
||||||
|
- Upgraded to `shell@2.1.0`
|
||||||
|
- Upgraded to `store@2.2.0`
|
||||||
|
- Upgraded to `updater@2.2.0`
|
||||||
|
|
||||||
|
## \[2.0.8]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs@2.1.1`
|
||||||
|
- Upgraded to `dialog@2.0.5`
|
||||||
|
- Upgraded to `http@2.0.5`
|
||||||
|
|
||||||
|
## \[2.0.7]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `log@2.0.4`
|
||||||
|
|
||||||
|
## \[2.0.6]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs@2.1.0`
|
||||||
|
- Upgraded to `updater@2.1.0`
|
||||||
|
- Upgraded to `dialog@2.0.4`
|
||||||
|
- Upgraded to `log-plugin@2.0.3`
|
||||||
|
- Upgraded to `http@2.0.4`
|
||||||
|
- Upgraded to `opener@2.0.0`
|
||||||
|
|
||||||
|
## \[2.0.5]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `clipboard-manager@2.0.2`
|
||||||
|
- Upgraded to `log-plugin@2.0.2`
|
||||||
|
|
||||||
|
## \[2.0.4]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs@2.0.3`
|
||||||
|
- Upgraded to `dialog@2.0.3`
|
||||||
|
- Upgraded to `http@2.0.3`
|
||||||
|
|
||||||
|
## \[2.0.3]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog@2.0.2`
|
||||||
|
- Upgraded to `fs@2.0.2`
|
||||||
|
- Upgraded to `http@2.0.2`
|
||||||
|
- Upgraded to `shell@2.0.2`
|
||||||
|
- Upgraded to `store@2.1.0`
|
||||||
|
|
||||||
|
## \[2.0.2]
|
||||||
|
|
||||||
|
- [`a1a82208`](https://github.com/tauri-apps/plugins-workspace/commit/a1a82208ed4ab87f83310be0dc95428aec9ab241) ([#1873](https://github.com/tauri-apps/plugins-workspace/pull/1873) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Downgrade MSRV to 1.77.2 to support Windows 7.
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.0.1`
|
||||||
|
- Upgraded to `biometric@2.0.1`
|
||||||
|
- Upgraded to `cli@2.0.1`
|
||||||
|
- Upgraded to `clipboard-manager@2.0.1`
|
||||||
|
- Upgraded to `fs@2.0.1`
|
||||||
|
- Upgraded to `dialog@2.0.1`
|
||||||
|
- Upgraded to `geolocation@2.0.1`
|
||||||
|
- Upgraded to `global-shortcut@2.0.1`
|
||||||
|
- Upgraded to `haptics@2.0.1`
|
||||||
|
- Upgraded to `http@2.0.1`
|
||||||
|
- Upgraded to `log-plugin@2.0.1`
|
||||||
|
- Upgraded to `nfc@2.0.1`
|
||||||
|
- Upgraded to `notification@2.0.1`
|
||||||
|
- Upgraded to `os@2.0.1`
|
||||||
|
- Upgraded to `process@2.0.1`
|
||||||
|
- Upgraded to `shell@2.0.1`
|
||||||
|
- Upgraded to `store@2.0.1`
|
||||||
|
- Upgraded to `updater@2.0.2`
|
||||||
|
|
||||||
|
## \[2.0.1]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `updater@2.0.1`
|
||||||
|
|
||||||
|
## \[2.0.0]
|
||||||
|
|
||||||
|
- [`e2c4dfb6`](https://github.com/tauri-apps/plugins-workspace/commit/e2c4dfb6af43e5dd8d9ceba232c315f5febd55c1) Update to tauri v2 stable release.
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.0.0`
|
||||||
|
- Upgraded to `biometric@2.0.0`
|
||||||
|
- Upgraded to `cli@2.0.0`
|
||||||
|
- Upgraded to `clipboard-manager@2.0.0`
|
||||||
|
- Upgraded to `fs@2.0.0`
|
||||||
|
- Upgraded to `dialog@2.0.0`
|
||||||
|
- Upgraded to `global-shortcut@2.0.0`
|
||||||
|
- Upgraded to `http@2.0.0`
|
||||||
|
- Upgraded to `log-plugin@2.0.0`
|
||||||
|
- Upgraded to `nfc@2.0.0`
|
||||||
|
- Upgraded to `notification@2.0.0`
|
||||||
|
- Upgraded to `os@2.0.0`
|
||||||
|
- Upgraded to `process@2.0.0`
|
||||||
|
- Upgraded to `shell@2.0.0`
|
||||||
|
- Upgraded to `store@2.0.0`
|
||||||
|
- Upgraded to `updater@2.0.0`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.8]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `cli@2.0.0-rc.2`
|
||||||
|
- Upgraded to `dialog@2.0.0-rc.8`
|
||||||
|
- Upgraded to `fs@2.0.0-rc.6`
|
||||||
|
- Upgraded to `shell@2.0.0-rc.4`
|
||||||
|
- Upgraded to `store@2.0.0-rc.4`
|
||||||
|
- Upgraded to `updater@2.0.0-rc.4`
|
||||||
|
- Upgraded to `http@2.0.0-rc.6`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.7]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `clipboard-manager@2.0.0-rc.4`
|
||||||
|
- Upgraded to `fs@2.0.0-rc.5`
|
||||||
|
- Upgraded to `notification@2.0.0-rc.5`
|
||||||
|
- Upgraded to `dialog@2.0.0-rc.7`
|
||||||
|
- Upgraded to `http@2.0.0-rc.5`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.6]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `dialog@2.0.0-rc.6`
|
||||||
|
- Upgraded to `fs@2.0.0-rc.4`
|
||||||
|
- Upgraded to `http@2.0.0-rc.4`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.5]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `barcode-scanner@2.0.0-rc.4`
|
||||||
|
- Upgraded to `notification@2.0.0-rc.4`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.4]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs@2.0.0-rc.3`
|
||||||
|
- Upgraded to `dialog@2.0.0-rc.5`
|
||||||
|
- Upgraded to `updater@2.0.0-rc.3`
|
||||||
|
- Upgraded to `http@2.0.0-rc.3`
|
||||||
|
|
||||||
|
## \[2.0.0-rc.3]
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- Upgraded to `fs@2.0.0-rc.2`
|
||||||
|
- Upgraded to `dialog@2.0.0-rc.4`
|
||||||
|
- Upgraded to `http@2.0.0-rc.2`
|
||||||
|
|
||||||
## \[2.0.0-rc.2]
|
## \[2.0.0-rc.2]
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "api"
|
name = "api"
|
||||||
publish = false
|
publish = false
|
||||||
version = "2.0.0-rc.2"
|
version = "2.0.41"
|
||||||
description = "An example Tauri Application showcasing the api"
|
description = "An example Tauri Application showcasing the api"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = { workspace = true }
|
rust-version = { workspace = true }
|
||||||
@@ -18,29 +18,34 @@ tauri-build = { workspace = true, features = ["codegen", "isolation"] }
|
|||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
tiny_http = "0.12"
|
tiny_http = "0.12"
|
||||||
|
time = "0.3"
|
||||||
log = { workspace = true }
|
log = { workspace = true }
|
||||||
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-rc.2" }
|
tauri-plugin-log = { path = "../../../plugins/log", version = "2.8.0" }
|
||||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.1", features = [
|
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.4.5", features = [
|
||||||
"watch",
|
"watch",
|
||||||
] }
|
] }
|
||||||
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-rc.3" }
|
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.3.2" }
|
||||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.3" }
|
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.6.0" }
|
||||||
tauri-plugin-http = { path = "../../../plugins/http", features = [
|
tauri-plugin-http = { path = "../../../plugins/http", features = [
|
||||||
"multipart",
|
"multipart",
|
||||||
], version = "2.0.0-rc.1" }
|
"cookies",
|
||||||
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-rc.3", features = [
|
], version = "2.5.7" }
|
||||||
|
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.3.3", features = [
|
||||||
"windows7-compat",
|
"windows7-compat",
|
||||||
] }
|
] }
|
||||||
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-rc.1" }
|
tauri-plugin-os = { path = "../../../plugins/os", version = "2.3.2" }
|
||||||
tauri-plugin-process = { path = "../../../plugins/process", version = "2.0.0-rc.1" }
|
tauri-plugin-process = { path = "../../../plugins/process", version = "2.3.1" }
|
||||||
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.0.0-rc.3" }
|
tauri-plugin-opener = { path = "../../../plugins/opener", version = "2.5.3" }
|
||||||
tauri-plugin-store = { path = "../../../plugins/store", version = "2.0.0-rc.3" }
|
tauri-plugin-shell = { path = "../../../plugins/shell", version = "2.3.5" }
|
||||||
|
tauri-plugin-store = { path = "../../../plugins/store", version = "2.4.2" }
|
||||||
|
tauri-plugin-upload = { path = "../../../plugins/upload", version = "2.3.0" }
|
||||||
|
|
||||||
[dependencies.tauri]
|
[dependencies.tauri]
|
||||||
workspace = true
|
workspace = true
|
||||||
features = [
|
features = [
|
||||||
"wry",
|
"wry",
|
||||||
"compression",
|
"common-controls-v6",
|
||||||
|
"x11",
|
||||||
"image-ico",
|
"image-ico",
|
||||||
"image-png",
|
"image-png",
|
||||||
"isolation",
|
"isolation",
|
||||||
@@ -50,17 +55,17 @@ features = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
||||||
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-rc.1" }
|
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.4.1" }
|
||||||
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-rc.2" }
|
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.3.1" }
|
||||||
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-rc.2" }
|
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.10.0" }
|
||||||
|
tauri-plugin-window-state = { path = "../../../plugins/window-state", version = "2.2.0" }
|
||||||
|
|
||||||
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
|
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
|
||||||
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-rc.3" }
|
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.4.4" }
|
||||||
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.0-rc.3" }
|
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.3.4" }
|
||||||
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.0-rc.3" }
|
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.3.2" }
|
||||||
|
tauri-plugin-geolocation = { path = "../../../plugins/geolocation/", version = "2.3.2" }
|
||||||
[target."cfg(target_os = \"windows\")".dependencies]
|
tauri-plugin-haptics = { path = "../../../plugins/haptics/", version = "2.3.2" }
|
||||||
window-shadows = "0.2"
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
prod = ["tauri/custom-protocol"]
|
prod = ["tauri/custom-protocol"]
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSCameraUsageDescription</key>
|
<key>NSCameraUsageDescription</key>
|
||||||
<string>Request camera access for WebRTC</string>
|
<string>Request camera access for WebRTC</string>
|
||||||
<key>NSMicrophoneUsageDescription</key>
|
<key>NSMicrophoneUsageDescription</key>
|
||||||
<string>Request microphone access for WebRTC</string>
|
<string>Request microphone access for WebRTC</string>
|
||||||
</dict>
|
<key>NSFaceIDUsageDescription</key>
|
||||||
|
<string>Authenticate with biometrics</string>
|
||||||
|
<key>NFCReaderUsageDescription</key>
|
||||||
|
<string>Read and write to NFC tags for testing</string>
|
||||||
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"shell:default",
|
||||||
"shell:allow-kill",
|
"shell:allow-kill",
|
||||||
"shell:allow-stdin-write",
|
"shell:allow-stdin-write",
|
||||||
"process:allow-exit",
|
"process:allow-exit",
|
||||||
@@ -67,22 +68,40 @@
|
|||||||
"fs:allow-rename",
|
"fs:allow-rename",
|
||||||
"fs:allow-mkdir",
|
"fs:allow-mkdir",
|
||||||
"fs:allow-remove",
|
"fs:allow-remove",
|
||||||
|
"fs:allow-stat",
|
||||||
|
"fs:allow-fstat",
|
||||||
|
"fs:allow-lstat",
|
||||||
"fs:allow-write-text-file",
|
"fs:allow-write-text-file",
|
||||||
|
"fs:read-meta",
|
||||||
"fs:scope-download-recursive",
|
"fs:scope-download-recursive",
|
||||||
"fs:scope-resource-recursive",
|
"fs:scope-resource-recursive",
|
||||||
{
|
{
|
||||||
"identifier": "fs:scope-appdata-recursive",
|
"identifier": "fs:scope-appdata-recursive",
|
||||||
"allow": [
|
"allow": [
|
||||||
|
{
|
||||||
|
"path": "$APPDATA/db/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "$APPDATA/db/**"
|
"path": "$APPDATA/db/**"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"deny": ["$APPDATA/db/*.stronghold"]
|
"deny": ["$APPDATA/db/*.stronghold"]
|
||||||
},
|
},
|
||||||
"store:allow-entries",
|
"store:default",
|
||||||
"store:allow-get",
|
"opener:default",
|
||||||
"store:allow-set",
|
{
|
||||||
"store:allow-save",
|
"identifier": "opener:allow-open-url",
|
||||||
"store:allow-load"
|
"allow": [
|
||||||
|
{
|
||||||
|
"url": "https://*",
|
||||||
|
"app": "inAppBrowser"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "opener:allow-open-path",
|
||||||
|
"allow": [{ "path": "$APPDATA" }, { "path": "$APPDATA/**" }]
|
||||||
|
},
|
||||||
|
"upload:default"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
"updater:default",
|
"updater:default",
|
||||||
"global-shortcut:allow-unregister",
|
"global-shortcut:allow-unregister",
|
||||||
"global-shortcut:allow-register",
|
"global-shortcut:allow-register",
|
||||||
"global-shortcut:allow-unregister-all"
|
"global-shortcut:allow-unregister-all",
|
||||||
|
{ "identifier": "fs:allow-watch", "allow": ["*", "**/*"] },
|
||||||
|
"fs:allow-unwatch"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,14 @@
|
|||||||
"barcode-scanner:allow-scan",
|
"barcode-scanner:allow-scan",
|
||||||
"barcode-scanner:allow-cancel",
|
"barcode-scanner:allow-cancel",
|
||||||
"barcode-scanner:allow-request-permissions",
|
"barcode-scanner:allow-request-permissions",
|
||||||
"barcode-scanner:allow-check-permissions"
|
"barcode-scanner:allow-check-permissions",
|
||||||
|
"geolocation:allow-check-permissions",
|
||||||
|
"geolocation:allow-request-permissions",
|
||||||
|
"geolocation:allow-watch-position",
|
||||||
|
"geolocation:allow-get-current-position",
|
||||||
|
"haptics:allow-impact-feedback",
|
||||||
|
"haptics:allow-notification-feedback",
|
||||||
|
"haptics:allow-selection-feedback",
|
||||||
|
"haptics:allow-vibrate"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="CompilerConfiguration">
|
<component name="CompilerConfiguration">
|
||||||
<bytecodeTargetLevel target="17" />
|
<bytecodeTargetLevel target="21" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
+6
-2
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
@@ -14,11 +15,12 @@
|
|||||||
</builds>
|
</builds>
|
||||||
</compositeBuild>
|
</compositeBuild>
|
||||||
</compositeConfiguration>
|
</compositeConfiguration>
|
||||||
|
<option name="testRunner" value="CHOOSE_PER_TEST" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$USER_HOME$/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tauri-2.0.0-rc.7/mobile/android" />
|
<option value="$USER_HOME$/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tauri-2.5.0/mobile/android" />
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
<option value="$PROJECT_DIR$/app" />
|
<option value="$PROJECT_DIR$/app" />
|
||||||
<option value="$PROJECT_DIR$/buildSrc" />
|
<option value="$PROJECT_DIR$/buildSrc" />
|
||||||
@@ -27,12 +29,14 @@
|
|||||||
<option value="$PROJECT_DIR$/../../../../../plugins/clipboard-manager/android" />
|
<option value="$PROJECT_DIR$/../../../../../plugins/clipboard-manager/android" />
|
||||||
<option value="$PROJECT_DIR$/../../../../../plugins/dialog/android" />
|
<option value="$PROJECT_DIR$/../../../../../plugins/dialog/android" />
|
||||||
<option value="$PROJECT_DIR$/../../../../../plugins/fs/android" />
|
<option value="$PROJECT_DIR$/../../../../../plugins/fs/android" />
|
||||||
|
<option value="$PROJECT_DIR$/../../../../../plugins/geolocation/android" />
|
||||||
|
<option value="$PROJECT_DIR$/../../../../../plugins/haptics/android" />
|
||||||
<option value="$PROJECT_DIR$/../../../../../plugins/nfc/android" />
|
<option value="$PROJECT_DIR$/../../../../../plugins/nfc/android" />
|
||||||
<option value="$PROJECT_DIR$/../../../../../plugins/notification/android" />
|
<option value="$PROJECT_DIR$/../../../../../plugins/notification/android" />
|
||||||
|
<option value="$PROJECT_DIR$/../../../../../plugins/opener/android" />
|
||||||
<option value="$PROJECT_DIR$/../../../../../plugins/shell/android" />
|
<option value="$PROJECT_DIR$/../../../../../plugins/shell/android" />
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
<option name="resolveExternalAnnotations" value="false" />
|
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|||||||
@@ -14,13 +14,13 @@ val tauriProperties = Properties().apply {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdk = 34
|
compileSdk = 36
|
||||||
namespace = "com.tauri.api"
|
namespace = "com.tauri.api"
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
manifestPlaceholders["usesCleartextTraffic"] = "false"
|
manifestPlaceholders["usesCleartextTraffic"] = "false"
|
||||||
applicationId = "com.tauri.api"
|
applicationId = "com.tauri.api"
|
||||||
minSdk = 24
|
minSdk = 24
|
||||||
targetSdk = 34
|
targetSdk = 36
|
||||||
versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt()
|
versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt()
|
||||||
versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0")
|
versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath("com.android.tools.build:gradle:8.5.1")
|
classpath("com.android.tools.build:gradle:8.11.0")
|
||||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25")
|
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ repositories {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly(gradleApi())
|
compileOnly(gradleApi())
|
||||||
implementation("com.android.tools.build:gradle:8.5.1")
|
implementation("com.android.tools.build:gradle:8.11.0")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,116 +1,116 @@
|
|||||||
{
|
{
|
||||||
"images": [
|
"images" : [
|
||||||
{
|
{
|
||||||
"size": "20x20",
|
"size" : "20x20",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-20x20@2x.png",
|
"filename" : "AppIcon-20x20@2x.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "20x20",
|
"size" : "20x20",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-20x20@3x.png",
|
"filename" : "AppIcon-20x20@3x.png",
|
||||||
"scale": "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "29x29",
|
"size" : "29x29",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-29x29@2x-1.png",
|
"filename" : "AppIcon-29x29@2x-1.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "29x29",
|
"size" : "29x29",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-29x29@3x.png",
|
"filename" : "AppIcon-29x29@3x.png",
|
||||||
"scale": "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "40x40",
|
"size" : "40x40",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-40x40@2x.png",
|
"filename" : "AppIcon-40x40@2x.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "40x40",
|
"size" : "40x40",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-40x40@3x.png",
|
"filename" : "AppIcon-40x40@3x.png",
|
||||||
"scale": "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "60x60",
|
"size" : "60x60",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-60x60@2x.png",
|
"filename" : "AppIcon-60x60@2x.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "60x60",
|
"size" : "60x60",
|
||||||
"idiom": "iphone",
|
"idiom" : "iphone",
|
||||||
"filename": "AppIcon-60x60@3x.png",
|
"filename" : "AppIcon-60x60@3x.png",
|
||||||
"scale": "3x"
|
"scale" : "3x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "20x20",
|
"size" : "20x20",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-20x20@1x.png",
|
"filename" : "AppIcon-20x20@1x.png",
|
||||||
"scale": "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "20x20",
|
"size" : "20x20",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-20x20@2x-1.png",
|
"filename" : "AppIcon-20x20@2x-1.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "29x29",
|
"size" : "29x29",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-29x29@1x.png",
|
"filename" : "AppIcon-29x29@1x.png",
|
||||||
"scale": "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "29x29",
|
"size" : "29x29",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-29x29@2x.png",
|
"filename" : "AppIcon-29x29@2x.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "40x40",
|
"size" : "40x40",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-40x40@1x.png",
|
"filename" : "AppIcon-40x40@1x.png",
|
||||||
"scale": "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "40x40",
|
"size" : "40x40",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-40x40@2x-1.png",
|
"filename" : "AppIcon-40x40@2x-1.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "76x76",
|
"size" : "76x76",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-76x76@1x.png",
|
"filename" : "AppIcon-76x76@1x.png",
|
||||||
"scale": "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "76x76",
|
"size" : "76x76",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-76x76@2x.png",
|
"filename" : "AppIcon-76x76@2x.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "83.5x83.5",
|
"size" : "83.5x83.5",
|
||||||
"idiom": "ipad",
|
"idiom" : "ipad",
|
||||||
"filename": "AppIcon-83.5x83.5@2x.png",
|
"filename" : "AppIcon-83.5x83.5@2x.png",
|
||||||
"scale": "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"size": "1024x1024",
|
"size" : "1024x1024",
|
||||||
"idiom": "ios-marketing",
|
"idiom" : "ios-marketing",
|
||||||
"filename": "AppIcon-512@2x.png",
|
"filename" : "AppIcon-512@2x.png",
|
||||||
"scale": "1x"
|
"scale" : "1x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info": {
|
"info" : {
|
||||||
"version": 1,
|
"version" : 1,
|
||||||
"author": "xcode"
|
"author" : "xcode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"info": {
|
"info" : {
|
||||||
"version": 1,
|
"version" : 1,
|
||||||
"author": "xcode"
|
"author" : "xcode"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17150" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17150" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Y6W-OH-hqX">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17122"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17122"/>
|
||||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Uncomment the next line to define a global platform for your project
|
# Uncomment the next line to define a global platform for your project
|
||||||
|
|
||||||
target 'api_iOS' do
|
target 'api_iOS' do
|
||||||
platform :ios, '13.0'
|
platform :ios, '14.0'
|
||||||
# Pods for api_iOS
|
# Pods for api_iOS
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -171,6 +171,8 @@
|
|||||||
dependencies = (
|
dependencies = (
|
||||||
);
|
);
|
||||||
name = api_iOS;
|
name = api_iOS;
|
||||||
|
packageProductDependencies = (
|
||||||
|
);
|
||||||
productName = api_iOS;
|
productName = api_iOS;
|
||||||
productReference = 5AC703CEBA41A121596066F3 /* api_iOS.app */;
|
productReference = 5AC703CEBA41A121596066F3 /* api_iOS.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
@@ -198,6 +200,8 @@
|
|||||||
en,
|
en,
|
||||||
);
|
);
|
||||||
mainGroup = 0677CEAF1F282F38CBA0F140;
|
mainGroup = 0677CEAF1F282F38CBA0F140;
|
||||||
|
minimizedProjectReferenceProxies = 1;
|
||||||
|
preferredProjectObjectVersion = 54;
|
||||||
projectDirPath = "";
|
projectDirPath = "";
|
||||||
projectRoot = "";
|
projectRoot = "";
|
||||||
targets = (
|
targets = (
|
||||||
@@ -236,7 +240,6 @@
|
|||||||
outputPaths = (
|
outputPaths = (
|
||||||
"$(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a",
|
"$(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a",
|
||||||
"$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a",
|
"$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a",
|
||||||
"$(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapp.a",
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
@@ -301,7 +304,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
@@ -363,7 +366,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
@@ -381,15 +384,13 @@
|
|||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
ARCHS = (
|
ARCHS = (
|
||||||
arm64,
|
arm64,
|
||||||
"arm64-sim",
|
|
||||||
);
|
);
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = api_iOS/api_iOS.entitlements;
|
CODE_SIGN_ENTITLEMENTS = api_iOS/api_iOS.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
DEVELOPMENT_TEAM = Q93MBH6S2F;
|
DEVELOPMENT_TEAM = "Q93MBH6S2F";
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
"EXCLUDED_ARCHS[sdk=iphoneos*]" = "arm64-sim x86_64";
|
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
|
||||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
|
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"\".\"",
|
"\".\"",
|
||||||
@@ -399,15 +400,13 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
|
||||||
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
||||||
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
|
||||||
PRODUCT_NAME = "Tauri API";
|
PRODUCT_NAME = "Tauri API";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
VALID_ARCHS = "arm64 arm64-sim";
|
VALID_ARCHS = arm64;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
|
||||||
};
|
};
|
||||||
name = debug;
|
name = debug;
|
||||||
};
|
};
|
||||||
@@ -417,15 +416,13 @@
|
|||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
ARCHS = (
|
ARCHS = (
|
||||||
arm64,
|
arm64,
|
||||||
"arm64-sim",
|
|
||||||
);
|
);
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_ENTITLEMENTS = api_iOS/api_iOS.entitlements;
|
CODE_SIGN_ENTITLEMENTS = api_iOS/api_iOS.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
DEVELOPMENT_TEAM = Q93MBH6S2F;
|
DEVELOPMENT_TEAM = "Q93MBH6S2F";
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
"EXCLUDED_ARCHS[sdk=iphoneos*]" = "arm64-sim x86_64";
|
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
|
||||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
|
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"\".\"",
|
"\".\"",
|
||||||
@@ -435,15 +432,13 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
"LIBRARY_SEARCH_PATHS[arch=arm64-sim]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
|
||||||
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
||||||
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
|
PRODUCT_BUNDLE_IDENTIFIER = com.tauri.api;
|
||||||
PRODUCT_NAME = "Tauri API";
|
PRODUCT_NAME = "Tauri API";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
VALID_ARCHS = "arm64 arm64-sim";
|
VALID_ARCHS = arm64;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
|
||||||
};
|
};
|
||||||
name = release;
|
name = release;
|
||||||
};
|
};
|
||||||
|
|||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>IDEDidComputeMac32BitWarning</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -44,5 +44,9 @@
|
|||||||
<string>Request camera access for WebRTC</string>
|
<string>Request camera access for WebRTC</string>
|
||||||
<key>NSMicrophoneUsageDescription</key>
|
<key>NSMicrophoneUsageDescription</key>
|
||||||
<string>Request microphone access for WebRTC</string>
|
<string>Request microphone access for WebRTC</string>
|
||||||
|
<key>NSFaceIDUsageDescription</key>
|
||||||
|
<string>Authenticate with biometrics</string>
|
||||||
|
<key>NFCReaderUsageDescription</key>
|
||||||
|
<string>Read and write to NFC tags for testing</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
@@ -2,7 +2,7 @@ name: api
|
|||||||
options:
|
options:
|
||||||
bundleIdPrefix: com.tauri.api
|
bundleIdPrefix: com.tauri.api
|
||||||
deploymentTarget:
|
deploymentTarget:
|
||||||
iOS: 13.0
|
iOS: 14.0
|
||||||
fileGroups: [../../src]
|
fileGroups: [../../src]
|
||||||
configs:
|
configs:
|
||||||
debug: debug
|
debug: debug
|
||||||
@@ -63,14 +63,12 @@ targets:
|
|||||||
settings:
|
settings:
|
||||||
base:
|
base:
|
||||||
ENABLE_BITCODE: false
|
ENABLE_BITCODE: false
|
||||||
ARCHS: [arm64, arm64-sim]
|
ARCHS: [arm64]
|
||||||
VALID_ARCHS: arm64 arm64-sim
|
VALID_ARCHS: arm64
|
||||||
LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
|
LIBRARY_SEARCH_PATHS[arch=x86_64]: $(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
|
||||||
LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
|
LIBRARY_SEARCH_PATHS[arch=arm64]: $(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
|
||||||
LIBRARY_SEARCH_PATHS[arch=arm64-sim]: $(inherited) $(PROJECT_DIR)/Externals/arm64-sim/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
|
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: true
|
||||||
EXCLUDED_ARCHS[sdk=iphonesimulator*]: arm64
|
EXCLUDED_ARCHS[sdk=iphoneos*]: x86_64
|
||||||
EXCLUDED_ARCHS[sdk=iphoneos*]: arm64-sim x86_64
|
|
||||||
groups: [app]
|
groups: [app]
|
||||||
dependencies:
|
dependencies:
|
||||||
- framework: libapp.a
|
- framework: libapp.a
|
||||||
@@ -89,4 +87,3 @@ targets:
|
|||||||
outputFiles:
|
outputFiles:
|
||||||
- $(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a
|
- $(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a
|
||||||
- $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a
|
- $(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a
|
||||||
- $(SRCROOT)/Externals/arm64-sim/${CONFIGURATION}/libapp.a
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -36,8 +36,10 @@ pub fn run() {
|
|||||||
.plugin(tauri_plugin_notification::init())
|
.plugin(tauri_plugin_notification::init())
|
||||||
.plugin(tauri_plugin_os::init())
|
.plugin(tauri_plugin_os::init())
|
||||||
.plugin(tauri_plugin_process::init())
|
.plugin(tauri_plugin_process::init())
|
||||||
|
.plugin(tauri_plugin_opener::init())
|
||||||
.plugin(tauri_plugin_shell::init())
|
.plugin(tauri_plugin_shell::init())
|
||||||
.plugin(tauri_plugin_store::Builder::default().build())
|
.plugin(tauri_plugin_store::Builder::default().build())
|
||||||
|
.plugin(tauri_plugin_upload::init())
|
||||||
.setup(move |app| {
|
.setup(move |app| {
|
||||||
#[cfg(desktop)]
|
#[cfg(desktop)]
|
||||||
{
|
{
|
||||||
@@ -45,6 +47,8 @@ pub fn run() {
|
|||||||
app.handle().plugin(tauri_plugin_cli::init())?;
|
app.handle().plugin(tauri_plugin_cli::init())?;
|
||||||
app.handle()
|
app.handle()
|
||||||
.plugin(tauri_plugin_global_shortcut::Builder::new().build())?;
|
.plugin(tauri_plugin_global_shortcut::Builder::new().build())?;
|
||||||
|
app.handle()
|
||||||
|
.plugin(tauri_plugin_window_state::Builder::new().build())?;
|
||||||
app.handle()
|
app.handle()
|
||||||
.plugin(tauri_plugin_updater::Builder::new().build())?;
|
.plugin(tauri_plugin_updater::Builder::new().build())?;
|
||||||
}
|
}
|
||||||
@@ -53,6 +57,8 @@ pub fn run() {
|
|||||||
app.handle().plugin(tauri_plugin_barcode_scanner::init())?;
|
app.handle().plugin(tauri_plugin_barcode_scanner::init())?;
|
||||||
app.handle().plugin(tauri_plugin_nfc::init())?;
|
app.handle().plugin(tauri_plugin_nfc::init())?;
|
||||||
app.handle().plugin(tauri_plugin_biometric::init())?;
|
app.handle().plugin(tauri_plugin_biometric::init())?;
|
||||||
|
app.handle().plugin(tauri_plugin_geolocation::init())?;
|
||||||
|
app.handle().plugin(tauri_plugin_haptics::init())?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut webview_window_builder =
|
let mut webview_window_builder =
|
||||||
@@ -64,7 +70,7 @@ pub fn run() {
|
|||||||
.title("Tauri API Validation")
|
.title("Tauri API Validation")
|
||||||
.inner_size(1000., 800.)
|
.inner_size(1000., 800.)
|
||||||
.min_inner_size(600., 400.)
|
.min_inner_size(600., 400.)
|
||||||
.content_protected(true);
|
.visible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
@@ -97,9 +103,28 @@ pub fn run() {
|
|||||||
if let Ok(mut request) = server.recv() {
|
if let Ok(mut request) = server.recv() {
|
||||||
let mut body = Vec::new();
|
let mut body = Vec::new();
|
||||||
let _ = request.as_reader().read_to_end(&mut body);
|
let _ = request.as_reader().read_to_end(&mut body);
|
||||||
|
let mut headers = request.headers().to_vec();
|
||||||
|
|
||||||
|
if !headers.iter().any(|header| header.field == tiny_http::HeaderField::from_bytes(b"Cookie").unwrap()) {
|
||||||
|
let expires = time::OffsetDateTime::now_utc() + time::Duration::days(1);
|
||||||
|
// RFC 1123 format
|
||||||
|
let format = time::macros::format_description!(
|
||||||
|
"[weekday repr:short], [day] [month repr:short] [year] [hour]:[minute]:[second] GMT"
|
||||||
|
);
|
||||||
|
let expires_str = expires.format(format).unwrap();
|
||||||
|
headers.push(
|
||||||
|
tiny_http::Header::from_bytes(
|
||||||
|
&b"Set-Cookie"[..],
|
||||||
|
format!("session-token=test-value; Secure; Path=/; Expires={expires_str}")
|
||||||
|
.as_bytes(),
|
||||||
|
)
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let response = tiny_http::Response::new(
|
let response = tiny_http::Response::new(
|
||||||
tiny_http::StatusCode(200),
|
tiny_http::StatusCode(200),
|
||||||
request.headers().to_vec(),
|
headers,
|
||||||
std::io::Cursor::new(body),
|
std::io::Cursor::new(body),
|
||||||
request.body_length(),
|
request.body_length(),
|
||||||
None,
|
None,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
|
|||||||
.tooltip("Tauri")
|
.tooltip("Tauri")
|
||||||
.icon(app.default_window_icon().unwrap().clone())
|
.icon(app.default_window_icon().unwrap().clone())
|
||||||
.menu(&menu1)
|
.menu(&menu1)
|
||||||
.menu_on_left_click(false)
|
.show_menu_on_left_click(false)
|
||||||
.on_menu_event(move |app, event| match event.id.as_ref() {
|
.on_menu_event(move |app, event| match event.id.as_ref() {
|
||||||
"quit" => {
|
"quit" => {
|
||||||
app.exit(0);
|
app.exit(0);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
|
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||||
"productName": "Tauri API",
|
"productName": "Tauri API",
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"identifier": "com.tauri.api",
|
"identifier": "com.tauri.api",
|
||||||
@@ -100,6 +100,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"iOS": {
|
||||||
|
"minimumSystemVersion": "14.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+228
-205
@@ -1,206 +1,228 @@
|
|||||||
<script>
|
<script>
|
||||||
import { writable } from "svelte/store";
|
import { writable } from 'svelte/store'
|
||||||
import { open } from "@tauri-apps/plugin-shell";
|
import { getCurrentWindow } from '@tauri-apps/api/window'
|
||||||
import { getCurrentWindow } from "@tauri-apps/api/window";
|
import { getCurrentWebview } from '@tauri-apps/api/webview'
|
||||||
import { getCurrentWebview } from "@tauri-apps/api/webview";
|
import * as os from '@tauri-apps/plugin-os'
|
||||||
import * as os from "@tauri-apps/plugin-os";
|
|
||||||
|
|
||||||
import Welcome from "./views/Welcome.svelte";
|
import Welcome from './views/Welcome.svelte'
|
||||||
import Cli from "./views/Cli.svelte";
|
import Cli from './views/Cli.svelte'
|
||||||
import Communication from "./views/Communication.svelte";
|
import Communication from './views/Communication.svelte'
|
||||||
import Dialog from "./views/Dialog.svelte";
|
import Dialog from './views/Dialog.svelte'
|
||||||
import FileSystem from "./views/FileSystem.svelte";
|
import FileSystem from './views/FileSystem.svelte'
|
||||||
import Http from "./views/Http.svelte";
|
import Http from './views/Http.svelte'
|
||||||
import Notifications from "./views/Notifications.svelte";
|
import Notifications from './views/Notifications.svelte'
|
||||||
import Shortcuts from "./views/Shortcuts.svelte";
|
import Shortcuts from './views/Shortcuts.svelte'
|
||||||
import Shell from "./views/Shell.svelte";
|
import Shell from './views/Shell.svelte'
|
||||||
import Store from "./views/Store.svelte";
|
import Opener from './views/Opener.svelte'
|
||||||
import Updater from "./views/Updater.svelte";
|
import Store from './views/Store.svelte'
|
||||||
import Clipboard from "./views/Clipboard.svelte";
|
import Updater from './views/Updater.svelte'
|
||||||
import WebRTC from "./views/WebRTC.svelte";
|
import Upload from './views/Upload.svelte'
|
||||||
import Scanner from "./views/Scanner.svelte";
|
import Clipboard from './views/Clipboard.svelte'
|
||||||
import Biometric from "./views/Biometric.svelte";
|
import WebRTC from './views/WebRTC.svelte'
|
||||||
|
import Scanner from './views/Scanner.svelte'
|
||||||
|
import Biometric from './views/Biometric.svelte'
|
||||||
|
import Geolocation from './views/Geolocation.svelte'
|
||||||
|
import Haptics from './views/Haptics.svelte'
|
||||||
|
|
||||||
import { onMount, tick } from "svelte";
|
import { onMount, tick } from 'svelte'
|
||||||
import { ask } from "@tauri-apps/plugin-dialog";
|
import { ask } from '@tauri-apps/plugin-dialog'
|
||||||
import Nfc from "./views/Nfc.svelte";
|
import Nfc from './views/Nfc.svelte'
|
||||||
|
|
||||||
const appWindow = getCurrentWindow();
|
const appWindow = getCurrentWindow()
|
||||||
|
|
||||||
if (appWindow.label !== "main") {
|
if (appWindow.label !== 'main') {
|
||||||
appWindow.onCloseRequested(async (event) => {
|
appWindow.onCloseRequested(async (event) => {
|
||||||
const confirmed = await confirm("Are you sure?");
|
const confirmed = await confirm('Are you sure?')
|
||||||
if (!confirmed) {
|
if (!confirmed) {
|
||||||
// user did not confirm closing the window; let's prevent it
|
// user did not confirm closing the window; let's prevent it
|
||||||
event.preventDefault();
|
event.preventDefault()
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentWebview().onDragDropEvent((event) => {
|
getCurrentWebview().onDragDropEvent((event) => {
|
||||||
onMessage(`File drop: ${JSON.stringify(event.payload)}`);
|
onMessage(`File drop: ${JSON.stringify(event.payload)}`)
|
||||||
});
|
})
|
||||||
|
|
||||||
const userAgent = navigator.userAgent.toLowerCase();
|
const userAgent = navigator.userAgent.toLowerCase()
|
||||||
const isMobile =
|
const isMobile = userAgent.includes('android') || userAgent.includes('iphone')
|
||||||
userAgent.includes("android") || userAgent.includes("iphone");
|
|
||||||
|
|
||||||
const views = [
|
const views = [
|
||||||
{
|
{
|
||||||
label: "Welcome",
|
label: 'Welcome',
|
||||||
component: Welcome,
|
component: Welcome,
|
||||||
icon: "i-ph-hand-waving",
|
icon: 'i-ph-hand-waving'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Communication",
|
label: 'Communication',
|
||||||
component: Communication,
|
component: Communication,
|
||||||
icon: "i-codicon-radio-tower",
|
icon: 'i-codicon-radio-tower'
|
||||||
},
|
},
|
||||||
!isMobile && {
|
!isMobile && {
|
||||||
label: "CLI",
|
label: 'CLI',
|
||||||
component: Cli,
|
component: Cli,
|
||||||
icon: "i-codicon-terminal",
|
icon: 'i-codicon-terminal'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Dialog",
|
label: 'Dialog',
|
||||||
component: Dialog,
|
component: Dialog,
|
||||||
icon: "i-codicon-multiple-windows",
|
icon: 'i-codicon-multiple-windows'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "File system",
|
label: 'File system',
|
||||||
component: FileSystem,
|
component: FileSystem,
|
||||||
icon: "i-codicon-files",
|
icon: 'i-codicon-files'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "HTTP",
|
label: 'HTTP',
|
||||||
component: Http,
|
component: Http,
|
||||||
icon: "i-ph-globe-hemisphere-west",
|
icon: 'i-ph-globe-hemisphere-west'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Notifications",
|
label: 'Notifications',
|
||||||
component: Notifications,
|
component: Notifications,
|
||||||
icon: "i-codicon-bell-dot",
|
icon: 'i-codicon-bell-dot'
|
||||||
},
|
},
|
||||||
!isMobile && {
|
!isMobile && {
|
||||||
label: "Shortcuts",
|
label: 'Shortcuts',
|
||||||
component: Shortcuts,
|
component: Shortcuts,
|
||||||
icon: "i-codicon-record-keys",
|
icon: 'i-codicon-record-keys'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Shell",
|
label: 'Shell',
|
||||||
component: Shell,
|
component: Shell,
|
||||||
icon: "i-codicon-terminal-bash",
|
icon: 'i-codicon-terminal-bash'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Store",
|
label: 'Opener',
|
||||||
|
component: Opener,
|
||||||
|
icon: 'i-codicon-link-external'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Store',
|
||||||
component: Store,
|
component: Store,
|
||||||
icon: "i-codicon-file-code",
|
icon: 'i-codicon-file-code'
|
||||||
},
|
},
|
||||||
!isMobile && {
|
!isMobile && {
|
||||||
label: "Updater",
|
label: 'Updater',
|
||||||
component: Updater,
|
component: Updater,
|
||||||
icon: "i-codicon-cloud-download",
|
icon: 'i-codicon-cloud-download'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Clipboard",
|
label: 'Upload',
|
||||||
|
component: Upload,
|
||||||
|
icon: 'i-codicon-cloud-upload'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Clipboard',
|
||||||
component: Clipboard,
|
component: Clipboard,
|
||||||
icon: "i-codicon-clippy",
|
icon: 'i-codicon-clippy'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "WebRTC",
|
label: 'WebRTC',
|
||||||
component: WebRTC,
|
component: WebRTC,
|
||||||
icon: "i-ph-broadcast",
|
icon: 'i-ph-broadcast'
|
||||||
},
|
},
|
||||||
isMobile && {
|
isMobile && {
|
||||||
label: "Scanner",
|
label: 'Scanner',
|
||||||
component: Scanner,
|
component: Scanner,
|
||||||
icon: "i-ph-scan",
|
icon: 'i-ph-scan'
|
||||||
},
|
},
|
||||||
isMobile && {
|
isMobile && {
|
||||||
label: "NFC",
|
label: 'NFC',
|
||||||
component: Nfc,
|
component: Nfc,
|
||||||
icon: "i-ph-nfc",
|
icon: 'i-ph-nfc'
|
||||||
},
|
},
|
||||||
isMobile && {
|
isMobile && {
|
||||||
label: "Biometric",
|
label: 'Biometric',
|
||||||
component: Biometric,
|
component: Biometric,
|
||||||
icon: "i-ph-scan",
|
icon: 'i-ph-scan'
|
||||||
},
|
},
|
||||||
];
|
isMobile && {
|
||||||
|
label: 'Geolocation',
|
||||||
|
component: Geolocation,
|
||||||
|
icon: 'i-ph-map-pin'
|
||||||
|
},
|
||||||
|
isMobile && {
|
||||||
|
label: 'Haptics',
|
||||||
|
component: Haptics,
|
||||||
|
icon: 'i-ph-vibrate'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
let selected = views[0];
|
let selected = views[0]
|
||||||
function select(view) {
|
function select(view) {
|
||||||
selected = view;
|
selected = view
|
||||||
}
|
}
|
||||||
|
|
||||||
// Window controls
|
// Window controls
|
||||||
let isWindowMaximized;
|
let isWindowMaximized
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
isWindowMaximized = await appWindow.isMaximized();
|
isWindowMaximized = await appWindow.isMaximized()
|
||||||
appWindow.onResized(async () => {
|
appWindow.onResized(async () => {
|
||||||
isWindowMaximized = await appWindow.isMaximized();
|
isWindowMaximized = await appWindow.isMaximized()
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
|
|
||||||
function minimize() {
|
function minimize() {
|
||||||
appWindow.minimize();
|
appWindow.minimize()
|
||||||
}
|
}
|
||||||
|
|
||||||
async function toggleMaximize() {
|
async function toggleMaximize() {
|
||||||
(await appWindow.isMaximized())
|
;(await appWindow.isMaximized())
|
||||||
? appWindow.unmaximize()
|
? appWindow.unmaximize()
|
||||||
: appWindow.maximize();
|
: appWindow.maximize()
|
||||||
}
|
}
|
||||||
|
|
||||||
let confirmed_close = false;
|
let confirmed_close = false
|
||||||
async function close() {
|
async function close() {
|
||||||
if (!confirmed_close) {
|
if (!confirmed_close) {
|
||||||
confirmed_close = await ask(
|
confirmed_close = await ask(
|
||||||
"Are you sure that you want to close this window?",
|
'Are you sure that you want to close this window?',
|
||||||
{
|
{
|
||||||
title: "Tauri API",
|
title: 'Tauri API'
|
||||||
}
|
}
|
||||||
);
|
)
|
||||||
if (confirmed_close) {
|
if (confirmed_close) {
|
||||||
appWindow.close();
|
appWindow.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// dark/light
|
// dark/light
|
||||||
let isDark;
|
let isDark
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
isDark = localStorage && localStorage.getItem("theme") == "dark";
|
isDark = localStorage && localStorage.getItem('theme') == 'dark'
|
||||||
applyTheme(isDark);
|
applyTheme(isDark)
|
||||||
});
|
})
|
||||||
function applyTheme(isDark) {
|
function applyTheme(isDark) {
|
||||||
const html = document.querySelector("html");
|
const html = document.querySelector('html')
|
||||||
isDark ? html.classList.add("dark") : html.classList.remove("dark");
|
isDark ? html.classList.add('dark') : html.classList.remove('dark')
|
||||||
localStorage && localStorage.setItem("theme", isDark ? "dark" : "");
|
localStorage && localStorage.setItem('theme', isDark ? 'dark' : '')
|
||||||
}
|
}
|
||||||
function toggleDark() {
|
function toggleDark() {
|
||||||
isDark = !isDark;
|
isDark = !isDark
|
||||||
applyTheme(isDark);
|
applyTheme(isDark)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Console
|
// Console
|
||||||
let messages = writable([]);
|
let messages = writable([])
|
||||||
let consoleTextEl;
|
let consoleTextEl
|
||||||
async function onMessage(value) {
|
async function onMessage(value) {
|
||||||
messages.update((r) => [
|
messages.update((r) => [
|
||||||
...r,
|
...r,
|
||||||
{
|
{
|
||||||
html:
|
html:
|
||||||
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
|
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
|
||||||
(typeof value === "string" ? value : JSON.stringify(value, null, 1)) +
|
(typeof value === 'string' ? value : JSON.stringify(value, null, 1)) +
|
||||||
"</pre>",
|
'</pre>'
|
||||||
},
|
}
|
||||||
]);
|
])
|
||||||
await tick();
|
await tick()
|
||||||
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight;
|
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
// this function is renders HTML without sanitizing it so it's insecure
|
// this function renders HTML without sanitizing it so it's insecure
|
||||||
// we only use it with our own input data
|
// we only use it with our own input data
|
||||||
async function insecureRenderHtml(html) {
|
async function insecureRenderHtml(html) {
|
||||||
messages.update((r) => [
|
messages.update((r) => [
|
||||||
@@ -209,111 +231,109 @@
|
|||||||
html:
|
html:
|
||||||
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
|
`<pre><strong class="text-accent dark:text-darkAccent">[${new Date().toLocaleTimeString()}]:</strong> ` +
|
||||||
html +
|
html +
|
||||||
"</pre>",
|
'</pre>'
|
||||||
},
|
}
|
||||||
]);
|
])
|
||||||
await tick();
|
await tick()
|
||||||
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight;
|
if (consoleTextEl) consoleTextEl.scrollTop = consoleTextEl.scrollHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
function clear() {
|
function clear() {
|
||||||
messages.update(() => []);
|
messages.update(() => [])
|
||||||
}
|
}
|
||||||
|
|
||||||
let consoleEl, consoleH, cStartY;
|
let consoleEl, consoleH, cStartY
|
||||||
let minConsoleHeight = 50;
|
let minConsoleHeight = 50
|
||||||
function startResizingConsole(e) {
|
function startResizingConsole(e) {
|
||||||
cStartY = e.clientY;
|
cStartY = e.clientY
|
||||||
|
|
||||||
const styles = window.getComputedStyle(consoleEl);
|
const styles = window.getComputedStyle(consoleEl)
|
||||||
consoleH = parseInt(styles.height, 10);
|
consoleH = parseInt(styles.height, 10)
|
||||||
|
|
||||||
const moveHandler = (e) => {
|
const moveHandler = (e) => {
|
||||||
const dy = e.clientY - cStartY;
|
const dy = e.clientY - cStartY
|
||||||
const newH = consoleH - dy;
|
const newH = consoleH - dy
|
||||||
consoleEl.style.height = `${
|
consoleEl.style.height = `${
|
||||||
newH < minConsoleHeight ? minConsoleHeight : newH
|
newH < minConsoleHeight ? minConsoleHeight : newH
|
||||||
}px`;
|
}px`
|
||||||
};
|
}
|
||||||
const upHandler = () => {
|
const upHandler = () => {
|
||||||
document.removeEventListener("mouseup", upHandler);
|
document.removeEventListener('mouseup', upHandler)
|
||||||
document.removeEventListener("mousemove", moveHandler);
|
document.removeEventListener('mousemove', moveHandler)
|
||||||
};
|
}
|
||||||
document.addEventListener("mouseup", upHandler);
|
document.addEventListener('mouseup', upHandler)
|
||||||
document.addEventListener("mousemove", moveHandler);
|
document.addEventListener('mousemove', moveHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
let isWindows;
|
let isWindows
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
isWindows = (await os.platform()) === "windows";
|
isWindows = (await os.platform()) === 'windows'
|
||||||
});
|
})
|
||||||
|
|
||||||
// mobile
|
// mobile
|
||||||
let isSideBarOpen = false;
|
let isSideBarOpen = false
|
||||||
let sidebar;
|
let sidebar
|
||||||
let sidebarToggle;
|
let sidebarToggle
|
||||||
let isDraggingSideBar = false;
|
let isDraggingSideBar = false
|
||||||
let draggingStartPosX = 0;
|
let draggingStartPosX = 0
|
||||||
let draggingEndPosX = 0;
|
let draggingEndPosX = 0
|
||||||
const clamp = (min, num, max) => Math.min(Math.max(num, min), max);
|
const clamp = (min, num, max) => Math.min(Math.max(num, min), max)
|
||||||
|
|
||||||
function toggleSidebar(sidebar, isSideBarOpen) {
|
function toggleSidebar(sidebar, isSideBarOpen) {
|
||||||
sidebar.style.setProperty(
|
sidebar.style.setProperty(
|
||||||
"--translate-x",
|
'--translate-x',
|
||||||
`${isSideBarOpen ? "0" : "-18.75"}rem`
|
`${isSideBarOpen ? '0' : '-18.75'}rem`
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
sidebar = document.querySelector("#sidebar");
|
sidebar = document.querySelector('#sidebar')
|
||||||
sidebarToggle = document.querySelector("#sidebarToggle");
|
sidebarToggle = document.querySelector('#sidebarToggle')
|
||||||
|
|
||||||
document.addEventListener("click", (e) => {
|
document.addEventListener('click', (e) => {
|
||||||
if (sidebarToggle.contains(e.target)) {
|
if (sidebarToggle.contains(e.target)) {
|
||||||
isSideBarOpen = !isSideBarOpen;
|
isSideBarOpen = !isSideBarOpen
|
||||||
} else if (isSideBarOpen && !sidebar.contains(e.target)) {
|
} else if (isSideBarOpen && !sidebar.contains(e.target)) {
|
||||||
isSideBarOpen = false;
|
isSideBarOpen = false
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
|
||||||
document.addEventListener("touchstart", (e) => {
|
document.addEventListener('touchstart', (e) => {
|
||||||
if (sidebarToggle.contains(e.target)) return;
|
if (sidebarToggle.contains(e.target)) return
|
||||||
|
|
||||||
const x = e.touches[0].clientX;
|
const x = e.touches[0].clientX
|
||||||
if ((0 < x && x < 20 && !isSideBarOpen) || isSideBarOpen) {
|
if ((0 < x && x < 20 && !isSideBarOpen) || isSideBarOpen) {
|
||||||
isDraggingSideBar = true;
|
isDraggingSideBar = true
|
||||||
draggingStartPosX = x;
|
draggingStartPosX = x
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
|
||||||
document.addEventListener("touchmove", (e) => {
|
document.addEventListener('touchmove', (e) => {
|
||||||
if (isDraggingSideBar) {
|
if (isDraggingSideBar) {
|
||||||
const x = e.touches[0].clientX;
|
const x = e.touches[0].clientX
|
||||||
draggingEndPosX = x;
|
draggingEndPosX = x
|
||||||
const delta = (x - draggingStartPosX) / 10;
|
const delta = (x - draggingStartPosX) / 10
|
||||||
sidebar.style.setProperty(
|
sidebar.style.setProperty(
|
||||||
"--translate-x",
|
'--translate-x',
|
||||||
`-${clamp(0, isSideBarOpen ? 0 - delta : 18.75 - delta, 18.75)}rem`
|
`-${clamp(0, isSideBarOpen ? 0 - delta : 18.75 - delta, 18.75)}rem`
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
|
||||||
document.addEventListener("touchend", () => {
|
document.addEventListener('touchend', () => {
|
||||||
if (isDraggingSideBar) {
|
if (isDraggingSideBar) {
|
||||||
const delta = (draggingEndPosX - draggingStartPosX) / 10;
|
const delta = (draggingEndPosX - draggingStartPosX) / 10
|
||||||
isSideBarOpen = isSideBarOpen
|
isSideBarOpen = isSideBarOpen ? delta > -(18.75 / 2) : delta > 18.75 / 2
|
||||||
? delta > -(18.75 / 2)
|
|
||||||
: delta > 18.75 / 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isDraggingSideBar = false;
|
isDraggingSideBar = false
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
const sidebar = document.querySelector("#sidebar");
|
const sidebar = document.querySelector('#sidebar')
|
||||||
if (sidebar) {
|
if (sidebar) {
|
||||||
toggleSidebar(sidebar, isSideBarOpen);
|
toggleSidebar(sidebar, isSideBarOpen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -331,42 +351,46 @@
|
|||||||
children:h-100% children:w-12 children:inline-flex
|
children:h-100% children:w-12 children:inline-flex
|
||||||
children:items-center children:justify-center"
|
children:items-center children:justify-center"
|
||||||
>
|
>
|
||||||
<span
|
<button
|
||||||
title={isDark ? "Switch to Light mode" : "Switch to Dark mode"}
|
aria-label="Toggle dark mode"
|
||||||
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
title={isDark ? 'Switch to Light mode' : 'Switch to Dark mode'}
|
||||||
|
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
||||||
on:click={toggleDark}
|
on:click={toggleDark}
|
||||||
>
|
>
|
||||||
{#if isDark}
|
{#if isDark}
|
||||||
<div class="i-ph-sun" />
|
<div class="i-ph-sun"></div>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="i-ph-moon" />
|
<div class="i-ph-moon"></div>
|
||||||
{/if}
|
{/if}
|
||||||
</span>
|
</button>
|
||||||
<span
|
<button
|
||||||
|
aria-label="Minimize window"
|
||||||
title="Minimize"
|
title="Minimize"
|
||||||
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
||||||
on:click={minimize}
|
on:click={minimize}
|
||||||
>
|
>
|
||||||
<div class="i-codicon-chrome-minimize" />
|
<div class="i-codicon-chrome-minimize"></div>
|
||||||
</span>
|
</button>
|
||||||
<span
|
<button
|
||||||
title={isWindowMaximized ? "Restore" : "Maximize"}
|
aria-label="Maximize window"
|
||||||
class="hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
title={isWindowMaximized ? 'Restore' : 'Maximize'}
|
||||||
|
class="bg-inherit border-none hover:bg-hoverOverlay active:bg-hoverOverlayDarker dark:hover:bg-darkHoverOverlay dark:active:bg-darkHoverOverlayDarker"
|
||||||
on:click={toggleMaximize}
|
on:click={toggleMaximize}
|
||||||
>
|
>
|
||||||
{#if isWindowMaximized}
|
{#if isWindowMaximized}
|
||||||
<div class="i-codicon-chrome-restore" />
|
<div class="i-codicon-chrome-restore"></div>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="i-codicon-chrome-maximize" />
|
<div class="i-codicon-chrome-maximize"></div>
|
||||||
{/if}
|
{/if}
|
||||||
</span>
|
</button>
|
||||||
<span
|
<button
|
||||||
|
aria-label="Close window"
|
||||||
title="Close"
|
title="Close"
|
||||||
class="hover:bg-red-700 dark:hover:bg-red-700 hover:text-darkPrimaryText active:bg-red-700/90 dark:active:bg-red-700/90 active:text-darkPrimaryText"
|
class="bg-inherit border-none hover:bg-red-700 dark:hover:bg-red-700 hover:text-darkPrimaryText active:bg-red-700/90 dark:active:bg-red-700/90 active:text-darkPrimaryText"
|
||||||
on:click={close}
|
on:click={close}
|
||||||
>
|
>
|
||||||
<div class="i-codicon-chrome-close" />
|
<div class="i-codicon-chrome-close"></div>
|
||||||
</span>
|
</button>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -374,13 +398,13 @@
|
|||||||
<!-- Sidebar toggle, only visible on small screens -->
|
<!-- Sidebar toggle, only visible on small screens -->
|
||||||
<div
|
<div
|
||||||
id="sidebarToggle"
|
id="sidebarToggle"
|
||||||
class="z-2000 sidebar-toggle display-none lt-sm:flex justify-center absolute items-center w-8 h-8 rd-8
|
class="z-2000 sidebar-toggle hidden lt-sm:flex justify-center absolute items-center w-8 h-8 rd-8
|
||||||
bg-accent dark:bg-darkAccent active:bg-accentDark dark:active:bg-darkAccentDark"
|
bg-accent dark:bg-darkAccent active:bg-accentDark dark:active:bg-darkAccentDark"
|
||||||
>
|
>
|
||||||
{#if isSideBarOpen}
|
{#if isSideBarOpen}
|
||||||
<span class="i-codicon-close animate-duration-300ms animate-fade-in" />
|
<span class="i-codicon-close animate-duration-300ms animate-fade-in"></span>
|
||||||
{:else}
|
{:else}
|
||||||
<span class="i-codicon-menu animate-duration-300ms animate-fade-in" />
|
<span class="i-codicon-menu animate-duration-300ms animate-fade-in"></span>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -392,24 +416,21 @@
|
|||||||
class="lt-sm:h-screen lt-sm:shadow-lg lt-sm:shadow lt-sm:transition-transform lt-sm:absolute lt-sm:z-1999
|
class="lt-sm:h-screen lt-sm:shadow-lg lt-sm:shadow lt-sm:transition-transform lt-sm:absolute lt-sm:z-1999
|
||||||
bg-darkPrimaryLighter transition-colors-250 overflow-hidden grid select-none px-2"
|
bg-darkPrimaryLighter transition-colors-250 overflow-hidden grid select-none px-2"
|
||||||
>
|
>
|
||||||
<img
|
<a href="https://tauri.app" target="_blank">
|
||||||
on:click={() => open("https://tauri.app/")}
|
<img class="p-7" src="tauri_logo.png" alt="Tauri logo" />
|
||||||
class="self-center p-7 cursor-pointer"
|
</a>
|
||||||
src="tauri_logo.png"
|
|
||||||
alt="Tauri logo"
|
|
||||||
/>
|
|
||||||
{#if !isWindows}
|
{#if !isWindows}
|
||||||
<a href="##" class="nv justify-between h-8" on:click={toggleDark}>
|
<a href="##" class="nv justify-between h-8" on:click={toggleDark}>
|
||||||
{#if isDark}
|
{#if isDark}
|
||||||
Switch to Light mode
|
Switch to Light mode
|
||||||
<div class="i-ph-sun" />
|
<div class="i-ph-sun"></div>
|
||||||
{:else}
|
{:else}
|
||||||
Switch to Dark mode
|
Switch to Dark mode
|
||||||
<div class="i-ph-moon" />
|
<div class="i-ph-moon"></div>
|
||||||
{/if}
|
{/if}
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
<div class="bg-white/5 h-2px" />
|
<div class="bg-white/5 h-2px"></div>
|
||||||
<br />
|
<br />
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
@@ -419,7 +440,7 @@
|
|||||||
href="https://tauri.app/v1/guides/"
|
href="https://tauri.app/v1/guides/"
|
||||||
>
|
>
|
||||||
Documentation
|
Documentation
|
||||||
<span class="i-codicon-link-external" />
|
<span class="i-codicon-link-external"></span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="nv justify-between h-8"
|
class="nv justify-between h-8"
|
||||||
@@ -427,7 +448,7 @@
|
|||||||
href="https://github.com/tauri-apps/tauri"
|
href="https://github.com/tauri-apps/tauri"
|
||||||
>
|
>
|
||||||
GitHub
|
GitHub
|
||||||
<span class="i-codicon-link-external" />
|
<span class="i-codicon-link-external"></span>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
class="nv justify-between h-8"
|
class="nv justify-between h-8"
|
||||||
@@ -435,10 +456,10 @@
|
|||||||
href="https://github.com/tauri-apps/tauri/tree/dev/examples/api"
|
href="https://github.com/tauri-apps/tauri/tree/dev/examples/api"
|
||||||
>
|
>
|
||||||
Source
|
Source
|
||||||
<span class="i-codicon-link-external" />
|
<span class="i-codicon-link-external"></span>
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
<div class="bg-white/5 h-2px" />
|
<div class="bg-white/5 h-2px"></div>
|
||||||
<br />
|
<br />
|
||||||
<div
|
<div
|
||||||
class="flex flex-col overflow-y-auto children-h-10 children-flex-none gap-1"
|
class="flex flex-col overflow-y-auto children-h-10 children-flex-none gap-1"
|
||||||
@@ -449,11 +470,11 @@
|
|||||||
href="##"
|
href="##"
|
||||||
class="nv {selected === view ? 'nv_selected' : ''}"
|
class="nv {selected === view ? 'nv_selected' : ''}"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
select(view);
|
select(view)
|
||||||
isSideBarOpen = false;
|
isSideBarOpen = false
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div class="{view.icon} mr-2" />
|
<div class="{view.icon} mr-2"></div>
|
||||||
<p>{view.label}</p></a
|
<p>{view.label}</p></a
|
||||||
>
|
>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -482,21 +503,23 @@
|
|||||||
id="console"
|
id="console"
|
||||||
class="select-none h-15rem grid grid-rows-[2px_2rem_1fr] gap-1 overflow-hidden"
|
class="select-none h-15rem grid grid-rows-[2px_2rem_1fr] gap-1 overflow-hidden"
|
||||||
>
|
>
|
||||||
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
||||||
<div
|
<div
|
||||||
on:mousedown={startResizingConsole}
|
on:mousedown={startResizingConsole}
|
||||||
class="bg-black/20 h-2px cursor-ns-resize"
|
class="bg-black/20 h-2px cursor-ns-resize"
|
||||||
/>
|
></div>
|
||||||
<div class="flex justify-between items-center px-2">
|
<div class="flex justify-between items-center px-2">
|
||||||
<p class="font-semibold">Console</p>
|
<p class="font-semibold">Console</p>
|
||||||
<div
|
<button
|
||||||
class="cursor-pointer h-85% rd-1 p-1 flex justify-center items-center
|
aria-label="Clear Console"
|
||||||
|
class="cursor-pointer h-85% rd-1 p-1 flex justify-center items-center border-none bg-inherit
|
||||||
hover:bg-hoverOverlay dark:hover:bg-darkHoverOverlay
|
hover:bg-hoverOverlay dark:hover:bg-darkHoverOverlay
|
||||||
active:bg-hoverOverlay/25 dark:active:bg-darkHoverOverlay/25
|
active:bg-hoverOverlay/25 dark:active:bg-darkHoverOverlay/25
|
||||||
"
|
"
|
||||||
on:click={clear}
|
on:click={clear}
|
||||||
>
|
>
|
||||||
<div class="i-codicon-clear-all" />
|
<div class="i-codicon-clear-all"></div>
|
||||||
</div>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
bind:this={consoleTextEl}
|
bind:this={consoleTextEl}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
* {
|
* {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-family: "Rubik", sans-serif;
|
font-family: 'Rubik', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
export function arrayBufferToBase64(buffer, callback) {
|
export function arrayBufferToBase64(buffer, callback) {
|
||||||
const blob = new Blob([buffer], {
|
const blob = new Blob([buffer], {
|
||||||
type: "application/octet-binary",
|
type: 'application/octet-binary'
|
||||||
});
|
})
|
||||||
const reader = new FileReader();
|
const reader = new FileReader()
|
||||||
reader.onload = function (evt) {
|
reader.onload = function (evt) {
|
||||||
const dataurl = evt.target.result;
|
const dataurl = evt.target.result
|
||||||
callback(dataurl.substr(dataurl.indexOf(",") + 1));
|
callback(dataurl.substr(dataurl.indexOf(',') + 1))
|
||||||
};
|
}
|
||||||
reader.readAsDataURL(blob);
|
reader.readAsDataURL(blob)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,13 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
import "uno.css";
|
import 'uno.css'
|
||||||
import "./app.css";
|
import './app.css'
|
||||||
import App from "./App.svelte";
|
import App from './App.svelte'
|
||||||
|
import { mount } from 'svelte'
|
||||||
|
|
||||||
const app = new App({
|
const app = mount(App, {
|
||||||
target: document.querySelector("#app"),
|
target: document.querySelector('#app')
|
||||||
});
|
})
|
||||||
|
|
||||||
export default app;
|
export default app
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<script>
|
<script>
|
||||||
import { getMatches } from "@tauri-apps/plugin-cli";
|
import { getMatches } from '@tauri-apps/plugin-cli'
|
||||||
|
|
||||||
export let onMessage;
|
export let onMessage
|
||||||
|
|
||||||
function cliMatches() {
|
function cliMatches() {
|
||||||
getMatches().then(onMessage).catch(onMessage);
|
getMatches().then(onMessage).catch(onMessage)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<p>
|
<div>
|
||||||
This binary can be run from the terminal and takes the following arguments:
|
This binary can be run from the terminal and takes the following arguments:
|
||||||
<code class="code-block flex flex-wrap my-2">
|
<code class="code-block flex flex-wrap my-2">
|
||||||
<pre>
|
<pre>
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
--verbose</pre>
|
--verbose</pre>
|
||||||
</code>
|
</code>
|
||||||
Additionally, it has a <code>update --background</code> subcommand.
|
Additionally, it has a <code>update --background</code> subcommand.
|
||||||
</p>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div class="note">
|
<div class="note">
|
||||||
Note that the arguments are only parsed, not implemented.
|
Note that the arguments are only parsed, not implemented.
|
||||||
|
|||||||
@@ -1,59 +1,59 @@
|
|||||||
<script>
|
<script>
|
||||||
import * as clipboard from "@tauri-apps/plugin-clipboard-manager";
|
import * as clipboard from '@tauri-apps/plugin-clipboard-manager'
|
||||||
import { open } from "@tauri-apps/plugin-dialog";
|
import { open } from '@tauri-apps/plugin-dialog'
|
||||||
import { arrayBufferToBase64 } from "../lib/utils";
|
import { arrayBufferToBase64 } from '../lib/utils'
|
||||||
import { readFile } from "@tauri-apps/plugin-fs";
|
import { readFile } from '@tauri-apps/plugin-fs'
|
||||||
|
|
||||||
export let onMessage;
|
export let onMessage
|
||||||
export let insecureRenderHtml;
|
export let insecureRenderHtml
|
||||||
let text = "clipboard message";
|
let text = 'clipboard message'
|
||||||
|
|
||||||
function writeText() {
|
function writeText() {
|
||||||
clipboard
|
clipboard
|
||||||
.writeText(text)
|
.writeText(text)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
onMessage("Wrote to the clipboard");
|
onMessage('Wrote to the clipboard')
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function writeImage() {
|
async function writeImage() {
|
||||||
try {
|
try {
|
||||||
const res = await open({
|
const path = await open({
|
||||||
title: "Image to write to clipboard",
|
title: 'Image to write to clipboard',
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
name: "Clipboard IMG",
|
name: 'Clipboard IMG',
|
||||||
extensions: ["png", "jpg", "jpeg"],
|
extensions: ['png', 'jpg', 'jpeg']
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
});
|
})
|
||||||
const bytes = await readFile(res.path);
|
const bytes = await readFile(path)
|
||||||
await clipboard.writeImage(bytes);
|
await clipboard.writeImage(bytes)
|
||||||
onMessage("wrote image");
|
onMessage('wrote image')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
onMessage(e);
|
onMessage(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function read() {
|
async function read() {
|
||||||
try {
|
try {
|
||||||
const image = await clipboard.readImage();
|
const image = await clipboard.readImage()
|
||||||
arrayBufferToBase64(await image.rgba(), function (base64) {
|
arrayBufferToBase64(await image.rgba(), function (base64) {
|
||||||
const src = "data:image/png;base64," + base64;
|
const src = 'data:image/png;base64,' + base64
|
||||||
insecureRenderHtml('<img src="' + src + '"></img>');
|
insecureRenderHtml('<img src="' + src + '"></img>')
|
||||||
});
|
})
|
||||||
return;
|
return
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
|
|
||||||
clipboard
|
clipboard
|
||||||
.readText()
|
.readText()
|
||||||
.then((contents) => {
|
.then((contents) => {
|
||||||
onMessage(`Clipboard contents: ${contents}`);
|
onMessage(`Clipboard contents: ${contents}`)
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
onMessage(e);
|
onMessage(e)
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -65,6 +65,5 @@
|
|||||||
/>
|
/>
|
||||||
<button class="btn" type="button" on:click={writeText}>Write</button>
|
<button class="btn" type="button" on:click={writeText}>Write</button>
|
||||||
<button class="btn" type="button" on:click={writeImage}>Pick Image</button>
|
<button class="btn" type="button" on:click={writeImage}>Pick Image</button>
|
||||||
|
|
||||||
<button class="btn" type="button" on:click={read}>Read</button>
|
<button class="btn" type="button" on:click={read}>Read</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
let filter = null;
|
let filter = null;
|
||||||
let multiple = false;
|
let multiple = false;
|
||||||
let directory = false;
|
let directory = false;
|
||||||
|
let pickerMode = "document";
|
||||||
|
let fileAccessMode = "scoped";
|
||||||
|
|
||||||
function arrayBufferToBase64(buffer, callback) {
|
function arrayBufferToBase64(buffer, callback) {
|
||||||
var blob = new Blob([buffer], {
|
var blob = new Blob([buffer], {
|
||||||
@@ -44,55 +46,69 @@
|
|||||||
await message("Tauri is awesome!");
|
await message("Tauri is awesome!");
|
||||||
}
|
}
|
||||||
|
|
||||||
function openDialog() {
|
async function msgCustom(result) {
|
||||||
open({
|
const buttons = { yes: "awesome", no: "amazing", cancel: "stunning" };
|
||||||
title: "My wonderful open dialog",
|
await message(`Tauri is: `, { buttons })
|
||||||
defaultPath,
|
.then((res) => onMessage(`Tauri is ${res}`))
|
||||||
filters: filter
|
|
||||||
? [
|
|
||||||
{
|
|
||||||
name: "Tauri Example",
|
|
||||||
extensions: filter.split(",").map((f) => f.trim()),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
: [],
|
|
||||||
multiple,
|
|
||||||
directory,
|
|
||||||
})
|
|
||||||
.then(function (res) {
|
|
||||||
if (Array.isArray(res)) {
|
|
||||||
onMessage(res);
|
|
||||||
} else {
|
|
||||||
var pathToRead = res;
|
|
||||||
var isFile = pathToRead.match(/\S+\.\S+$/g);
|
|
||||||
readFile(pathToRead)
|
|
||||||
.then(function (response) {
|
|
||||||
if (isFile) {
|
|
||||||
if (
|
|
||||||
pathToRead.includes(".png") ||
|
|
||||||
pathToRead.includes(".jpg") ||
|
|
||||||
pathToRead.includes(".jpeg")
|
|
||||||
) {
|
|
||||||
arrayBufferToBase64(
|
|
||||||
new Uint8Array(response),
|
|
||||||
function (base64) {
|
|
||||||
var src = "data:image/png;base64," + base64;
|
|
||||||
insecureRenderHtml('<img src="' + src + '"></img>');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
onMessage(res);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
onMessage(res);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(onMessage(res));
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(onMessage);
|
.catch(onMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function openDialog() {
|
||||||
|
try {
|
||||||
|
var result = await open({
|
||||||
|
title: "My wonderful open dialog",
|
||||||
|
defaultPath,
|
||||||
|
filters: filter
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
name: "Tauri Example",
|
||||||
|
extensions: filter.split(",").map((f) => f.trim()),
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: [],
|
||||||
|
multiple,
|
||||||
|
directory,
|
||||||
|
pickerMode,
|
||||||
|
fileAccessMode,
|
||||||
|
})
|
||||||
|
|
||||||
|
if (Array.isArray(result)) {
|
||||||
|
onMessage(result);
|
||||||
|
} else {
|
||||||
|
var pathToRead = result;
|
||||||
|
var isFile = pathToRead.match(/\S+\.\S+$/g);
|
||||||
|
|
||||||
|
await readFile(pathToRead)
|
||||||
|
.then(function (res) {
|
||||||
|
if (isFile) {
|
||||||
|
if (
|
||||||
|
pathToRead.includes(".png") ||
|
||||||
|
pathToRead.includes(".jpg") ||
|
||||||
|
pathToRead.includes(".jpeg")
|
||||||
|
) {
|
||||||
|
arrayBufferToBase64(
|
||||||
|
new Uint8Array(res),
|
||||||
|
function (base64) {
|
||||||
|
var src = "data:image/png;base64," + base64;
|
||||||
|
insecureRenderHtml('<img src="' + src + '"></img>');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Convert byte array to UTF-8 string
|
||||||
|
const decoder = new TextDecoder('utf-8');
|
||||||
|
const text = decoder.decode(new Uint8Array(res));
|
||||||
|
onMessage(text);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
onMessage(res);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} catch(exception) {
|
||||||
|
onMessage(exception)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function saveDialog() {
|
function saveDialog() {
|
||||||
save({
|
save({
|
||||||
title: "My wonderful save dialog",
|
title: "My wonderful save dialog",
|
||||||
@@ -105,7 +121,7 @@
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
: [],
|
: [],
|
||||||
})
|
})
|
||||||
.then(onMessage)
|
.then(onMessage)
|
||||||
.catch(onMessage);
|
.catch(onMessage);
|
||||||
}
|
}
|
||||||
@@ -135,13 +151,35 @@
|
|||||||
<input type="checkbox" id="dialog-directory" bind:checked={directory} />
|
<input type="checkbox" id="dialog-directory" bind:checked={directory} />
|
||||||
<label for="dialog-directory">Directory</label>
|
<label for="dialog-directory">Directory</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="dialog-picker-mode">Picker Mode:</label>
|
||||||
|
<select id="dialog-picker-mode" bind:value={pickerMode}>
|
||||||
|
<option value="">None</option>
|
||||||
|
<option value="media">Media</option>
|
||||||
|
<option value="image">Image</option>
|
||||||
|
<option value="video">Video</option>
|
||||||
|
<option value="document">Document</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label for="dialog-file-access-mode">File Access Mode:</label>
|
||||||
|
<select id="dialog-file-access-mode" bind:value={fileAccessMode}>
|
||||||
|
<option value="copy">Copy</option>
|
||||||
|
<option value="scoped">Scoped</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<button class="btn" id="open-dialog" on:click={openDialog}>Open dialog</button>
|
|
||||||
<button class="btn" id="save-dialog" on:click={saveDialog}
|
<div class="flex flex-wrap flex-col md:flex-row gap-2 children:flex-shrink-0">
|
||||||
>Open save dialog</button
|
<button class="btn" id="open-dialog" on:click={openDialog}>Open dialog</button>
|
||||||
>
|
<button class="btn" id="save-dialog" on:click={saveDialog}
|
||||||
<button class="btn" id="prompt-dialog" on:click={prompt}>Prompt</button>
|
>Open save dialog</button
|
||||||
<button class="btn" id="custom-prompt-dialog" on:click={promptCustom}
|
>
|
||||||
>Prompt (custom)</button
|
<button class="btn" id="prompt-dialog" on:click={prompt}>Prompt</button>
|
||||||
>
|
<button class="btn" id="custom-prompt-dialog" on:click={promptCustom}
|
||||||
<button class="btn" id="message-dialog" on:click={msg}>Message</button>
|
>Prompt (custom)</button
|
||||||
|
>
|
||||||
|
<button class="btn" id="message-dialog" on:click={msg}>Message</button>
|
||||||
|
<button class="btn" id="message-dialog" on:click={msgCustom}>Message (custom)</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -1,183 +1,214 @@
|
|||||||
<script>
|
<script>
|
||||||
import * as fs from "@tauri-apps/plugin-fs";
|
import * as fs from '@tauri-apps/plugin-fs'
|
||||||
import { convertFileSrc } from "@tauri-apps/api/core";
|
import * as os from '@tauri-apps/plugin-os'
|
||||||
import { arrayBufferToBase64 } from "../lib/utils";
|
import { convertFileSrc } from '@tauri-apps/api/core'
|
||||||
|
import { arrayBufferToBase64 } from '../lib/utils'
|
||||||
|
import { onDestroy, onMount } from 'svelte'
|
||||||
|
|
||||||
export let onMessage;
|
const { onMessage, insecureRenderHtml } = $props()
|
||||||
export let insecureRenderHtml;
|
|
||||||
|
|
||||||
let path = "";
|
let path = $state('')
|
||||||
let img;
|
let img
|
||||||
let file;
|
/** @type {fs.FileHandle} */
|
||||||
let renameTo;
|
let file = $state()
|
||||||
let watchPath = "";
|
let renameTo = $state()
|
||||||
let watchDebounceDelay = 0;
|
let watchPath = $state('')
|
||||||
let watchRecursive = false;
|
let watchDebounceDelay = $state(0)
|
||||||
let unwatchFn;
|
let watchRecursive = $state(false)
|
||||||
let unwatchPath = "";
|
/** @type {fs.BaseDirectory | undefined} */
|
||||||
|
let baseDir = $state()
|
||||||
|
let unwatchFn
|
||||||
|
let unwatchPath = ''
|
||||||
|
let isMobile = $state(false)
|
||||||
|
|
||||||
function getDir() {
|
onMount(() => {
|
||||||
const dirSelect = document.getElementById("dir");
|
let platform = os.platform()
|
||||||
return dirSelect.value ? parseInt(dir.value) : null;
|
isMobile = platform === 'android' || platform === 'ios'
|
||||||
}
|
})
|
||||||
|
|
||||||
const DirOptions = Object.keys(fs.BaseDirectory)
|
const dirOptions = Object.keys(fs.BaseDirectory).filter((key) =>
|
||||||
.filter((key) => isNaN(parseInt(key)))
|
isNaN(parseInt(key))
|
||||||
.map((dir) => [dir, fs.BaseDirectory[dir]]);
|
)
|
||||||
|
|
||||||
function open() {
|
function open() {
|
||||||
fs.open(path, {
|
fs.open(path, {
|
||||||
baseDir: getDir(),
|
baseDir,
|
||||||
read: true,
|
read: true,
|
||||||
write: true,
|
write: true,
|
||||||
create: true,
|
create: true
|
||||||
})
|
})
|
||||||
.then((f) => {
|
.then((f) => {
|
||||||
file = f;
|
file = f
|
||||||
onMessage(`Opened ${path}`);
|
onMessage(`Opened ${path}`)
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
function mkdir() {
|
function mkdir() {
|
||||||
fs.mkdir(path, { baseDir: getDir() })
|
fs.mkdir(path, { baseDir, recursive: true })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
onMessage(`Created dir ${path}`);
|
onMessage(`Created dir ${path}`)
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove() {
|
function remove() {
|
||||||
fs.remove(path, { baseDir: getDir() })
|
fs.remove(path, { baseDir })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
onMessage(`Removed ${path}`);
|
onMessage(`Removed ${path}`)
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
function rename() {
|
function rename() {
|
||||||
fs.rename(path, renameTo, {
|
fs.rename(path, renameTo, {
|
||||||
oldPathBaseDir: getDir(),
|
oldPathBaseDir,
|
||||||
newPathBaseDir: getDir(),
|
newPathBaseDir
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
onMessage(`Renamed ${path} to ${renameTo}`);
|
onMessage(`Renamed ${path} to ${renameTo}`)
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
function truncate() {
|
function truncate() {
|
||||||
file
|
file
|
||||||
.truncate(0)
|
.truncate(0)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
onMessage(`Truncated file`);
|
onMessage(`Truncated file`)
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write() {
|
||||||
|
const encoder = new TextEncoder()
|
||||||
|
file
|
||||||
|
.write(encoder.encode('Hello from Tauri :)'))
|
||||||
|
.then(() => {
|
||||||
|
onMessage(`wrote to file`)
|
||||||
|
})
|
||||||
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
function stat() {
|
function stat() {
|
||||||
file
|
file
|
||||||
.stat()
|
.stat()
|
||||||
.then((stat) => {
|
.then((stat) => {
|
||||||
onMessage(`File stat ${JSON.stringify(stat)}`);
|
onMessage(`File stat ${JSON.stringify(stat)}`)
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
function read() {
|
function read() {
|
||||||
const opts = {
|
const opts = {
|
||||||
baseDir: getDir(),
|
baseDir
|
||||||
};
|
}
|
||||||
fs.stat(path, opts)
|
fs.stat(path, opts)
|
||||||
.then((stat) => {
|
.then((stat) => {
|
||||||
const isFile = stat.isFile;
|
const isFile = stat.isFile
|
||||||
|
|
||||||
const promise = isFile
|
const promise = isFile
|
||||||
? fs.readFile(path, opts)
|
? fs.readFile(path, opts)
|
||||||
: fs.readDir(path, opts);
|
: fs.readDir(path, opts)
|
||||||
promise
|
promise
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
if (isFile) {
|
if (isFile) {
|
||||||
if (path.includes(".png") || path.includes(".jpg")) {
|
if (path.includes('.png') || path.includes('.jpg')) {
|
||||||
arrayBufferToBase64(
|
arrayBufferToBase64(
|
||||||
new Uint8Array(response),
|
new Uint8Array(response),
|
||||||
function (base64) {
|
function (base64) {
|
||||||
const src = "data:image/png;base64," + base64;
|
const src = 'data:image/png;base64,' + base64
|
||||||
insecureRenderHtml('<img src="' + src + '"></img>');
|
insecureRenderHtml('<img src="' + src + '"></img>')
|
||||||
}
|
}
|
||||||
);
|
)
|
||||||
} else {
|
} else {
|
||||||
const value = String.fromCharCode.apply(null, response);
|
const value = String.fromCharCode.apply(null, response)
|
||||||
insecureRenderHtml(
|
insecureRenderHtml(
|
||||||
'<textarea id="file-response"></textarea><button id="file-save">Save</button>'
|
'<textarea id="file-response"></textarea><button id="file-save">Save</button>'
|
||||||
);
|
)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
const fileInput = document.getElementById("file-response");
|
const fileInput = document.getElementById('file-response')
|
||||||
fileInput.value = value;
|
fileInput.value = value
|
||||||
document
|
document
|
||||||
.getElementById("file-save")
|
.getElementById('file-save')
|
||||||
.addEventListener("click", function () {
|
.addEventListener('click', function () {
|
||||||
fs.writeTextFile(path, fileInput.value, {
|
fs.writeTextFile(path, fileInput.value, {
|
||||||
dir: getDir(),
|
baseDir
|
||||||
}).catch(onMessage);
|
}).catch(onMessage)
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
onMessage(response);
|
onMessage(response)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
function setSrc() {
|
function setSrc() {
|
||||||
img.src = convertFileSrc(path);
|
img.src = convertFileSrc(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
function watch() {
|
function watch() {
|
||||||
unwatch();
|
unwatch()
|
||||||
if (watchPath) {
|
if (watchPath) {
|
||||||
onMessage(`Watching ${watchPath} for changes`);
|
onMessage(`Watching ${watchPath} for changes`)
|
||||||
let options = {
|
let options = {
|
||||||
recursive: watchRecursive,
|
recursive: watchRecursive,
|
||||||
delayMs: parseInt(watchDebounceDelay),
|
delayMs: watchDebounceDelay
|
||||||
};
|
}
|
||||||
if (options.delayMs === 0) {
|
if (options.delayMs === 0) {
|
||||||
fs.watchImmediate(watchPath, onMessage, options)
|
fs.watchImmediate(watchPath, onMessage, options)
|
||||||
.then((fn) => {
|
.then((fn) => {
|
||||||
unwatchFn = fn;
|
unwatchFn = fn
|
||||||
unwatchPath = watchPath;
|
unwatchPath = watchPath
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
} else {
|
} else {
|
||||||
fs.watch(watchPath, onMessage, options)
|
fs.watch(watchPath, onMessage, options)
|
||||||
.then((fn) => {
|
.then((fn) => {
|
||||||
unwatchFn = fn;
|
unwatchFn = fn
|
||||||
unwatchPath = watchPath;
|
unwatchPath = watchPath
|
||||||
})
|
})
|
||||||
.catch(onMessage);
|
.catch(onMessage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function unwatch() {
|
function unwatch() {
|
||||||
if (unwatchFn) {
|
if (unwatchFn) {
|
||||||
onMessage(`Stopped watching ${unwatchPath} for changes`);
|
onMessage(`Stopped watching ${unwatchPath} for changes`)
|
||||||
unwatchFn();
|
unwatchFn()
|
||||||
}
|
}
|
||||||
unwatchFn = undefined;
|
unwatchFn = undefined
|
||||||
unwatchPath = undefined;
|
unwatchPath = undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
if (file) {
|
||||||
|
file.close()
|
||||||
|
}
|
||||||
|
if (unwatchFn) {
|
||||||
|
unwatchFn()
|
||||||
|
}
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex flex-col">
|
<div class="flex flex-col">
|
||||||
|
{#if isMobile}
|
||||||
|
<div>
|
||||||
|
On mobile, paths outside of App* paths require the use of dialogs
|
||||||
|
regardless of Tauri's scope mechanism.
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
{/if}
|
||||||
<div class="flex gap-1">
|
<div class="flex gap-1">
|
||||||
<select class="input" id="dir">
|
<select class="input" bind:value={baseDir}>
|
||||||
<option value="">None</option>
|
<option value={undefined} selected>None</option>
|
||||||
{#each DirOptions as dir}
|
{#each dirOptions as dir}
|
||||||
<option value={dir[1]}>{dir[0]}</option>
|
<option value={fs.BaseDirectory[dir]}>{dir}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
<input
|
<input
|
||||||
@@ -188,20 +219,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<button class="btn" on:click={open}>Open</button>
|
<button class="btn" onclick={open}>Open</button>
|
||||||
<button class="btn" on:click={read}>Read</button>
|
<button class="btn" onclick={read}>Read</button>
|
||||||
<button class="btn" on:click={mkdir}>Mkdir</button>
|
<button class="btn" onclick={mkdir}>Mkdir</button>
|
||||||
<button class="btn" on:click={remove}>Remove</button>
|
<button class="btn" onclick={remove}>Remove</button>
|
||||||
<div class="flex flex-row">
|
<div class="flex flex-row">
|
||||||
<button class="btn" on:click={rename}>Rename</button>
|
<button class="btn" onclick={rename}>Rename</button>
|
||||||
<input class="input" bind:value={renameTo} placeholder="To" />
|
<input class="input" bind:value={renameTo} placeholder="To" />
|
||||||
</div>
|
</div>
|
||||||
<button class="btn" type="button" on:click={setSrc}>Use as img src</button>
|
<button class="btn" type="button" onclick={setSrc}>Use as img src</button>
|
||||||
</div>
|
</div>
|
||||||
{#if file}
|
{#if file}
|
||||||
<div>
|
<div>
|
||||||
<button class="btn" on:click={truncate}>Truncate</button>
|
<button class="btn" onclick={write}>Write</button>
|
||||||
<button class="btn" on:click={stat}>Stat</button>
|
<button class="btn" onclick={truncate}>Truncate</button>
|
||||||
|
<button class="btn" onclick={stat}>Stat</button>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
@@ -230,8 +262,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div>
|
||||||
<button class="btn" on:click={watch}>Watch</button>
|
<button class="btn" onclick={watch}>Watch</button>
|
||||||
<button class="btn" on:click={unwatch}>Unwatch</button>
|
<button class="btn" onclick={unwatch}>Unwatch</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<script>
|
||||||
|
import {
|
||||||
|
checkPermissions,
|
||||||
|
requestPermissions,
|
||||||
|
getCurrentPosition
|
||||||
|
} from '@tauri-apps/plugin-geolocation'
|
||||||
|
|
||||||
|
export let onMessage
|
||||||
|
|
||||||
|
async function getPosition() {
|
||||||
|
let permissions = await checkPermissions()
|
||||||
|
if (
|
||||||
|
permissions.location === 'prompt' ||
|
||||||
|
permissions.location === 'prompt-with-rationale'
|
||||||
|
) {
|
||||||
|
permissions = await requestPermissions(['location'])
|
||||||
|
}
|
||||||
|
|
||||||
|
if (permissions.location === 'granted') {
|
||||||
|
getCurrentPosition().then(onMessage).catch(onMessage)
|
||||||
|
} else {
|
||||||
|
onMessage('permission denied')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<button class="btn" id="cli-matches" on:click={getPosition}>
|
||||||
|
Get Position
|
||||||
|
</button>
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<script>
|
||||||
|
import {
|
||||||
|
vibrate,
|
||||||
|
impactFeedback,
|
||||||
|
notificationFeedback,
|
||||||
|
selectionFeedback
|
||||||
|
} from '@tauri-apps/plugin-haptics'
|
||||||
|
|
||||||
|
export let onMessage
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
class="btn"
|
||||||
|
on:click={() => vibrate(300).then(onMessage).catch(onMessage)}
|
||||||
|
>vibrate short</button
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn"
|
||||||
|
on:click={() => vibrate(1500).then(onMessage).catch(onMessage)}
|
||||||
|
>vibrate long</button
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn"
|
||||||
|
on:click={() => impactFeedback('medium').then(onMessage).catch(onMessage)}
|
||||||
|
>impact medium</button
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn"
|
||||||
|
on:click={() =>
|
||||||
|
notificationFeedback('warning').then(onMessage).catch(onMessage)}
|
||||||
|
>notification warning</button
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn"
|
||||||
|
on:click={() => selectionFeedback().then(onMessage).catch(onMessage)}
|
||||||
|
>selection</button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Depending on your device settings for haptic feedback some of the buttons may
|
||||||
|
not work.
|
||||||
|
</p>
|
||||||
@@ -1,69 +1,69 @@
|
|||||||
<script>
|
<script>
|
||||||
import { fetch as tauriFetch } from "@tauri-apps/plugin-http";
|
import { fetch as tauriFetch } from '@tauri-apps/plugin-http'
|
||||||
import { JsonView } from "@zerodevx/svelte-json-view";
|
import { JsonView } from '@zerodevx/svelte-json-view'
|
||||||
|
|
||||||
let httpMethod = "GET";
|
let httpMethod = 'GET'
|
||||||
let httpBody = "";
|
let httpBody = ''
|
||||||
|
|
||||||
export let onMessage;
|
export let onMessage
|
||||||
|
|
||||||
async function makeHttpRequest() {
|
async function makeHttpRequest() {
|
||||||
let method = httpMethod || "GET";
|
let method = httpMethod || 'GET'
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
method: method || "GET",
|
method: method || 'GET',
|
||||||
headers: {},
|
headers: {}
|
||||||
};
|
}
|
||||||
|
|
||||||
let bodyType;
|
let bodyType
|
||||||
|
|
||||||
if (method !== "GET") {
|
if (method !== 'GET') {
|
||||||
options.body = httpBody;
|
options.body = httpBody
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(httpBody.startsWith("{") && httpBody.endsWith("}")) ||
|
(httpBody.startsWith('{') && httpBody.endsWith('}')) ||
|
||||||
(httpBody.startsWith("[") && httpBody.endsWith("]"))
|
(httpBody.startsWith('[') && httpBody.endsWith(']'))
|
||||||
) {
|
) {
|
||||||
options.headers["Content-Type"] = "application/json";
|
options.headers['Content-Type'] = 'application/json'
|
||||||
bodyType = "json";
|
bodyType = 'json'
|
||||||
} else if (httpBody !== "") {
|
} else if (httpBody !== '') {
|
||||||
bodyType = "text";
|
bodyType = 'text'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await tauriFetch("http://localhost:3003", options);
|
const response = await tauriFetch('http://localhost:3003', options)
|
||||||
const body =
|
const body =
|
||||||
bodyType === "json" ? await response.json() : await response.text();
|
bodyType === 'json' ? await response.json() : await response.text()
|
||||||
|
|
||||||
onMessage({
|
onMessage({
|
||||||
url: response.url,
|
url: response.url,
|
||||||
status: response.status,
|
status: response.status,
|
||||||
ok: response.ok,
|
ok: response.ok,
|
||||||
headers: Object.fromEntries(response.headers.entries()),
|
headers: Object.fromEntries(response.headers.entries()),
|
||||||
body,
|
body
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// http form
|
/// http form
|
||||||
let foo = "baz";
|
let foo = 'baz'
|
||||||
let bar = "qux";
|
let bar = 'qux'
|
||||||
let result = null;
|
let result = null
|
||||||
|
|
||||||
async function doPost() {
|
async function doPost() {
|
||||||
const form = new FormData();
|
const form = new FormData()
|
||||||
form.append("foo", foo);
|
form.append('foo', foo)
|
||||||
form.append("bar", bar);
|
form.append('bar', bar)
|
||||||
const response = await tauriFetch("http://localhost:3003/tauri", {
|
const response = await tauriFetch('http://localhost:3003/tauri', {
|
||||||
method: "POST",
|
method: 'POST',
|
||||||
body: form,
|
body: form
|
||||||
});
|
})
|
||||||
result = {
|
result = {
|
||||||
url: response.url,
|
url: response.url,
|
||||||
status: response.status,
|
status: response.status,
|
||||||
ok: response.ok,
|
ok: response.ok,
|
||||||
headers: Object.fromEntries(response.headers.entries()),
|
headers: Object.fromEntries(response.headers.entries()),
|
||||||
body: await response.text(),
|
body: await response.text()
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
placeholder="Request body"
|
placeholder="Request body"
|
||||||
rows="5"
|
rows="5"
|
||||||
bind:value={httpBody}
|
bind:value={httpBody}
|
||||||
/>
|
></textarea>
|
||||||
<br />
|
<br />
|
||||||
<button class="btn" id="make-request"> Make request </button>
|
<button class="btn" id="make-request"> Make request </button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user