+657
-17
LICENSE
+657
-17
LICENSE
···
1
-
MIT License
2
3
-
Copyright (c) 2024 Phaze
4
5
-
Permission is hereby granted, free of charge, to any person obtaining a copy
6
-
of this software and associated documentation files (the "Software"), to deal
7
-
in the Software without restriction, including without limitation the rights
8
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
-
copies of the Software, and to permit persons to whom the Software is
10
-
furnished to do so, subject to the following conditions:
11
12
-
The above copyright notice and this permission notice shall be included in all
13
-
copies or substantial portions of the Software.
14
15
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
-
SOFTWARE.
···
1
+
GNU AFFERO GENERAL PUBLIC LICENSE
2
+
Version 3, 19 November 2007
3
+
4
+
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
5
+
Everyone is permitted to copy and distribute verbatim copies
6
+
of this license document, but changing it is not allowed.
7
+
8
+
Preamble
9
+
10
+
The GNU Affero General Public License is a free, copyleft license for
11
+
software and other kinds of works, specifically designed to ensure
12
+
cooperation with the community in the case of network server software.
13
+
14
+
The licenses for most software and other practical works are designed
15
+
to take away your freedom to share and change the works. By contrast,
16
+
our General Public Licenses are intended to guarantee your freedom to
17
+
share and change all versions of a program--to make sure it remains free
18
+
software for all its users.
19
+
20
+
When we speak of free software, we are referring to freedom, not
21
+
price. Our General Public Licenses are designed to make sure that you
22
+
have the freedom to distribute copies of free software (and charge for
23
+
them if you wish), that you receive source code or can get it if you
24
+
want it, that you can change the software or use pieces of it in new
25
+
free programs, and that you know you can do these things.
26
+
27
+
Developers that use our General Public Licenses protect your rights
28
+
with two steps: (1) assert copyright on the software, and (2) offer
29
+
you this License which gives you legal permission to copy, distribute
30
+
and/or modify the software.
31
+
32
+
A secondary benefit of defending all users' freedom is that
33
+
improvements made in alternate versions of the program, if they
34
+
receive widespread use, become available for other developers to
35
+
incorporate. Many developers of free software are heartened and
36
+
encouraged by the resulting cooperation. However, in the case of
37
+
software used on network servers, this result may fail to come about.
38
+
The GNU General Public License permits making a modified version and
39
+
letting the public access it on a server without ever releasing its
40
+
source code to the public.
41
+
42
+
The GNU Affero General Public License is designed specifically to
43
+
ensure that, in such cases, the modified source code becomes available
44
+
to the community. It requires the operator of a network server to
45
+
provide the source code of the modified version running there to the
46
+
users of that server. Therefore, public use of a modified version, on
47
+
a publicly accessible server, gives the public access to the source
48
+
code of the modified version.
49
+
50
+
An older license, called the Affero General Public License and
51
+
published by Affero, was designed to accomplish similar goals. This is
52
+
a different license, not a version of the Affero GPL, but Affero has
53
+
released a new version of the Affero GPL which permits relicensing under
54
+
this license.
55
+
56
+
The precise terms and conditions for copying, distribution and
57
+
modification follow.
58
+
59
+
TERMS AND CONDITIONS
60
+
61
+
0. Definitions.
62
+
63
+
"This License" refers to version 3 of the GNU Affero General Public License.
64
+
65
+
"Copyright" also means copyright-like laws that apply to other kinds of
66
+
works, such as semiconductor masks.
67
+
68
+
"The Program" refers to any copyrightable work licensed under this
69
+
License. Each licensee is addressed as "you". "Licensees" and
70
+
"recipients" may be individuals or organizations.
71
+
72
+
To "modify" a work means to copy from or adapt all or part of the work
73
+
in a fashion requiring copyright permission, other than the making of an
74
+
exact copy. The resulting work is called a "modified version" of the
75
+
earlier work or a work "based on" the earlier work.
76
+
77
+
A "covered work" means either the unmodified Program or a work based
78
+
on the Program.
79
+
80
+
To "propagate" a work means to do anything with it that, without
81
+
permission, would make you directly or secondarily liable for
82
+
infringement under applicable copyright law, except executing it on a
83
+
computer or modifying a private copy. Propagation includes copying,
84
+
distribution (with or without modification), making available to the
85
+
public, and in some countries other activities as well.
86
+
87
+
To "convey" a work means any kind of propagation that enables other
88
+
parties to make or receive copies. Mere interaction with a user through
89
+
a computer network, with no transfer of a copy, is not conveying.
90
+
91
+
An interactive user interface displays "Appropriate Legal Notices"
92
+
to the extent that it includes a convenient and prominently visible
93
+
feature that (1) displays an appropriate copyright notice, and (2)
94
+
tells the user that there is no warranty for the work (except to the
95
+
extent that warranties are provided), that licensees may convey the
96
+
work under this License, and how to view a copy of this License. If
97
+
the interface presents a list of user commands or options, such as a
98
+
menu, a prominent item in the list meets this criterion.
99
+
100
+
1. Source Code.
101
+
102
+
The "source code" for a work means the preferred form of the work
103
+
for making modifications to it. "Object code" means any non-source
104
+
form of a work.
105
+
106
+
A "Standard Interface" means an interface that either is an official
107
+
standard defined by a recognized standards body, or, in the case of
108
+
interfaces specified for a particular programming language, one that
109
+
is widely used among developers working in that language.
110
+
111
+
The "System Libraries" of an executable work include anything, other
112
+
than the work as a whole, that (a) is included in the normal form of
113
+
packaging a Major Component, but which is not part of that Major
114
+
Component, and (b) serves only to enable use of the work with that
115
+
Major Component, or to implement a Standard Interface for which an
116
+
implementation is available to the public in source code form. A
117
+
"Major Component", in this context, means a major essential component
118
+
(kernel, window system, and so on) of the specific operating system
119
+
(if any) on which the executable work runs, or a compiler used to
120
+
produce the work, or an object code interpreter used to run it.
121
+
122
+
The "Corresponding Source" for a work in object code form means all
123
+
the source code needed to generate, install, and (for an executable
124
+
work) run the object code and to modify the work, including scripts to
125
+
control those activities. However, it does not include the work's
126
+
System Libraries, or general-purpose tools or generally available free
127
+
programs which are used unmodified in performing those activities but
128
+
which are not part of the work. For example, Corresponding Source
129
+
includes interface definition files associated with source files for
130
+
the work, and the source code for shared libraries and dynamically
131
+
linked subprograms that the work is specifically designed to require,
132
+
such as by intimate data communication or control flow between those
133
+
subprograms and other parts of the work.
134
+
135
+
The Corresponding Source need not include anything that users
136
+
can regenerate automatically from other parts of the Corresponding
137
+
Source.
138
+
139
+
The Corresponding Source for a work in source code form is that
140
+
same work.
141
+
142
+
2. Basic Permissions.
143
+
144
+
All rights granted under this License are granted for the term of
145
+
copyright on the Program, and are irrevocable provided the stated
146
+
conditions are met. This License explicitly affirms your unlimited
147
+
permission to run the unmodified Program. The output from running a
148
+
covered work is covered by this License only if the output, given its
149
+
content, constitutes a covered work. This License acknowledges your
150
+
rights of fair use or other equivalent, as provided by copyright law.
151
+
152
+
You may make, run and propagate covered works that you do not
153
+
convey, without conditions so long as your license otherwise remains
154
+
in force. You may convey covered works to others for the sole purpose
155
+
of having them make modifications exclusively for you, or provide you
156
+
with facilities for running those works, provided that you comply with
157
+
the terms of this License in conveying all material for which you do
158
+
not control copyright. Those thus making or running the covered works
159
+
for you must do so exclusively on your behalf, under your direction
160
+
and control, on terms that prohibit them from making any copies of
161
+
your copyrighted material outside their relationship with you.
162
+
163
+
Conveying under any other circumstances is permitted solely under
164
+
the conditions stated below. Sublicensing is not allowed; section 10
165
+
makes it unnecessary.
166
+
167
+
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
168
+
169
+
No covered work shall be deemed part of an effective technological
170
+
measure under any applicable law fulfilling obligations under article
171
+
11 of the WIPO copyright treaty adopted on 20 December 1996, or
172
+
similar laws prohibiting or restricting circumvention of such
173
+
measures.
174
175
+
When you convey a covered work, you waive any legal power to forbid
176
+
circumvention of technological measures to the extent such circumvention
177
+
is effected by exercising rights under this License with respect to
178
+
the covered work, and you disclaim any intention to limit operation or
179
+
modification of the work as a means of enforcing, against the work's
180
+
users, your or third parties' legal rights to forbid circumvention of
181
+
technological measures.
182
183
+
4. Conveying Verbatim Copies.
184
185
+
You may convey verbatim copies of the Program's source code as you
186
+
receive it, in any medium, provided that you conspicuously and
187
+
appropriately publish on each copy an appropriate copyright notice;
188
+
keep intact all notices stating that this License and any
189
+
non-permissive terms added in accord with section 7 apply to the code;
190
+
keep intact all notices of the absence of any warranty; and give all
191
+
recipients a copy of this License along with the Program.
192
+
193
+
You may charge any price or no price for each copy that you convey,
194
+
and you may offer support or warranty protection for a fee.
195
+
196
+
5. Conveying Modified Source Versions.
197
198
+
You may convey a work based on the Program, or the modifications to
199
+
produce it from the Program, in the form of source code under the
200
+
terms of section 4, provided that you also meet all of these conditions:
201
+
202
+
a) The work must carry prominent notices stating that you modified
203
+
it, and giving a relevant date.
204
+
205
+
b) The work must carry prominent notices stating that it is
206
+
released under this License and any conditions added under section
207
+
7. This requirement modifies the requirement in section 4 to
208
+
"keep intact all notices".
209
+
210
+
c) You must license the entire work, as a whole, under this
211
+
License to anyone who comes into possession of a copy. This
212
+
License will therefore apply, along with any applicable section 7
213
+
additional terms, to the whole of the work, and all its parts,
214
+
regardless of how they are packaged. This License gives no
215
+
permission to license the work in any other way, but it does not
216
+
invalidate such permission if you have separately received it.
217
+
218
+
d) If the work has interactive user interfaces, each must display
219
+
Appropriate Legal Notices; however, if the Program has interactive
220
+
interfaces that do not display Appropriate Legal Notices, your
221
+
work need not make them do so.
222
+
223
+
A compilation of a covered work with other separate and independent
224
+
works, which are not by their nature extensions of the covered work,
225
+
and which are not combined with it such as to form a larger program,
226
+
in or on a volume of a storage or distribution medium, is called an
227
+
"aggregate" if the compilation and its resulting copyright are not
228
+
used to limit the access or legal rights of the compilation's users
229
+
beyond what the individual works permit. Inclusion of a covered work
230
+
in an aggregate does not cause this License to apply to the other
231
+
parts of the aggregate.
232
+
233
+
6. Conveying Non-Source Forms.
234
+
235
+
You may convey a covered work in object code form under the terms
236
+
of sections 4 and 5, provided that you also convey the
237
+
machine-readable Corresponding Source under the terms of this License,
238
+
in one of these ways:
239
+
240
+
a) Convey the object code in, or embodied in, a physical product
241
+
(including a physical distribution medium), accompanied by the
242
+
Corresponding Source fixed on a durable physical medium
243
+
customarily used for software interchange.
244
+
245
+
b) Convey the object code in, or embodied in, a physical product
246
+
(including a physical distribution medium), accompanied by a
247
+
written offer, valid for at least three years and valid for as
248
+
long as you offer spare parts or customer support for that product
249
+
model, to give anyone who possesses the object code either (1) a
250
+
copy of the Corresponding Source for all the software in the
251
+
product that is covered by this License, on a durable physical
252
+
medium customarily used for software interchange, for a price no
253
+
more than your reasonable cost of physically performing this
254
+
conveying of source, or (2) access to copy the
255
+
Corresponding Source from a network server at no charge.
256
+
257
+
c) Convey individual copies of the object code with a copy of the
258
+
written offer to provide the Corresponding Source. This
259
+
alternative is allowed only occasionally and noncommercially, and
260
+
only if you received the object code with such an offer, in accord
261
+
with subsection 6b.
262
+
263
+
d) Convey the object code by offering access from a designated
264
+
place (gratis or for a charge), and offer equivalent access to the
265
+
Corresponding Source in the same way through the same place at no
266
+
further charge. You need not require recipients to copy the
267
+
Corresponding Source along with the object code. If the place to
268
+
copy the object code is a network server, the Corresponding Source
269
+
may be on a different server (operated by you or a third party)
270
+
that supports equivalent copying facilities, provided you maintain
271
+
clear directions next to the object code saying where to find the
272
+
Corresponding Source. Regardless of what server hosts the
273
+
Corresponding Source, you remain obligated to ensure that it is
274
+
available for as long as needed to satisfy these requirements.
275
+
276
+
e) Convey the object code using peer-to-peer transmission, provided
277
+
you inform other peers where the object code and Corresponding
278
+
Source of the work are being offered to the general public at no
279
+
charge under subsection 6d.
280
+
281
+
A separable portion of the object code, whose source code is excluded
282
+
from the Corresponding Source as a System Library, need not be
283
+
included in conveying the object code work.
284
+
285
+
A "User Product" is either (1) a "consumer product", which means any
286
+
tangible personal property which is normally used for personal, family,
287
+
or household purposes, or (2) anything designed or sold for incorporation
288
+
into a dwelling. In determining whether a product is a consumer product,
289
+
doubtful cases shall be resolved in favor of coverage. For a particular
290
+
product received by a particular user, "normally used" refers to a
291
+
typical or common use of that class of product, regardless of the status
292
+
of the particular user or of the way in which the particular user
293
+
actually uses, or expects or is expected to use, the product. A product
294
+
is a consumer product regardless of whether the product has substantial
295
+
commercial, industrial or non-consumer uses, unless such uses represent
296
+
the only significant mode of use of the product.
297
+
298
+
"Installation Information" for a User Product means any methods,
299
+
procedures, authorization keys, or other information required to install
300
+
and execute modified versions of a covered work in that User Product from
301
+
a modified version of its Corresponding Source. The information must
302
+
suffice to ensure that the continued functioning of the modified object
303
+
code is in no case prevented or interfered with solely because
304
+
modification has been made.
305
+
306
+
If you convey an object code work under this section in, or with, or
307
+
specifically for use in, a User Product, and the conveying occurs as
308
+
part of a transaction in which the right of possession and use of the
309
+
User Product is transferred to the recipient in perpetuity or for a
310
+
fixed term (regardless of how the transaction is characterized), the
311
+
Corresponding Source conveyed under this section must be accompanied
312
+
by the Installation Information. But this requirement does not apply
313
+
if neither you nor any third party retains the ability to install
314
+
modified object code on the User Product (for example, the work has
315
+
been installed in ROM).
316
+
317
+
The requirement to provide Installation Information does not include a
318
+
requirement to continue to provide support service, warranty, or updates
319
+
for a work that has been modified or installed by the recipient, or for
320
+
the User Product in which it has been modified or installed. Access to a
321
+
network may be denied when the modification itself materially and
322
+
adversely affects the operation of the network or violates the rules and
323
+
protocols for communication across the network.
324
+
325
+
Corresponding Source conveyed, and Installation Information provided,
326
+
in accord with this section must be in a format that is publicly
327
+
documented (and with an implementation available to the public in
328
+
source code form), and must require no special password or key for
329
+
unpacking, reading or copying.
330
+
331
+
7. Additional Terms.
332
+
333
+
"Additional permissions" are terms that supplement the terms of this
334
+
License by making exceptions from one or more of its conditions.
335
+
Additional permissions that are applicable to the entire Program shall
336
+
be treated as though they were included in this License, to the extent
337
+
that they are valid under applicable law. If additional permissions
338
+
apply only to part of the Program, that part may be used separately
339
+
under those permissions, but the entire Program remains governed by
340
+
this License without regard to the additional permissions.
341
+
342
+
When you convey a copy of a covered work, you may at your option
343
+
remove any additional permissions from that copy, or from any part of
344
+
it. (Additional permissions may be written to require their own
345
+
removal in certain cases when you modify the work.) You may place
346
+
additional permissions on material, added by you to a covered work,
347
+
for which you have or can give appropriate copyright permission.
348
+
349
+
Notwithstanding any other provision of this License, for material you
350
+
add to a covered work, you may (if authorized by the copyright holders of
351
+
that material) supplement the terms of this License with terms:
352
+
353
+
a) Disclaiming warranty or limiting liability differently from the
354
+
terms of sections 15 and 16 of this License; or
355
+
356
+
b) Requiring preservation of specified reasonable legal notices or
357
+
author attributions in that material or in the Appropriate Legal
358
+
Notices displayed by works containing it; or
359
+
360
+
c) Prohibiting misrepresentation of the origin of that material, or
361
+
requiring that modified versions of such material be marked in
362
+
reasonable ways as different from the original version; or
363
+
364
+
d) Limiting the use for publicity purposes of names of licensors or
365
+
authors of the material; or
366
+
367
+
e) Declining to grant rights under trademark law for use of some
368
+
trade names, trademarks, or service marks; or
369
+
370
+
f) Requiring indemnification of licensors and authors of that
371
+
material by anyone who conveys the material (or modified versions of
372
+
it) with contractual assumptions of liability to the recipient, for
373
+
any liability that these contractual assumptions directly impose on
374
+
those licensors and authors.
375
+
376
+
All other non-permissive additional terms are considered "further
377
+
restrictions" within the meaning of section 10. If the Program as you
378
+
received it, or any part of it, contains a notice stating that it is
379
+
governed by this License along with a term that is a further
380
+
restriction, you may remove that term. If a license document contains
381
+
a further restriction but permits relicensing or conveying under this
382
+
License, you may add to a covered work material governed by the terms
383
+
of that license document, provided that the further restriction does
384
+
not survive such relicensing or conveying.
385
+
386
+
If you add terms to a covered work in accord with this section, you
387
+
must place, in the relevant source files, a statement of the
388
+
additional terms that apply to those files, or a notice indicating
389
+
where to find the applicable terms.
390
+
391
+
Additional terms, permissive or non-permissive, may be stated in the
392
+
form of a separately written license, or stated as exceptions;
393
+
the above requirements apply either way.
394
+
395
+
8. Termination.
396
+
397
+
You may not propagate or modify a covered work except as expressly
398
+
provided under this License. Any attempt otherwise to propagate or
399
+
modify it is void, and will automatically terminate your rights under
400
+
this License (including any patent licenses granted under the third
401
+
paragraph of section 11).
402
+
403
+
However, if you cease all violation of this License, then your
404
+
license from a particular copyright holder is reinstated (a)
405
+
provisionally, unless and until the copyright holder explicitly and
406
+
finally terminates your license, and (b) permanently, if the copyright
407
+
holder fails to notify you of the violation by some reasonable means
408
+
prior to 60 days after the cessation.
409
+
410
+
Moreover, your license from a particular copyright holder is
411
+
reinstated permanently if the copyright holder notifies you of the
412
+
violation by some reasonable means, this is the first time you have
413
+
received notice of violation of this License (for any work) from that
414
+
copyright holder, and you cure the violation prior to 30 days after
415
+
your receipt of the notice.
416
+
417
+
Termination of your rights under this section does not terminate the
418
+
licenses of parties who have received copies or rights from you under
419
+
this License. If your rights have been terminated and not permanently
420
+
reinstated, you do not qualify to receive new licenses for the same
421
+
material under section 10.
422
+
423
+
9. Acceptance Not Required for Having Copies.
424
+
425
+
You are not required to accept this License in order to receive or
426
+
run a copy of the Program. Ancillary propagation of a covered work
427
+
occurring solely as a consequence of using peer-to-peer transmission
428
+
to receive a copy likewise does not require acceptance. However,
429
+
nothing other than this License grants you permission to propagate or
430
+
modify any covered work. These actions infringe copyright if you do
431
+
not accept this License. Therefore, by modifying or propagating a
432
+
covered work, you indicate your acceptance of this License to do so.
433
+
434
+
10. Automatic Licensing of Downstream Recipients.
435
+
436
+
Each time you convey a covered work, the recipient automatically
437
+
receives a license from the original licensors, to run, modify and
438
+
propagate that work, subject to this License. You are not responsible
439
+
for enforcing compliance by third parties with this License.
440
+
441
+
An "entity transaction" is a transaction transferring control of an
442
+
organization, or substantially all assets of one, or subdividing an
443
+
organization, or merging organizations. If propagation of a covered
444
+
work results from an entity transaction, each party to that
445
+
transaction who receives a copy of the work also receives whatever
446
+
licenses to the work the party's predecessor in interest had or could
447
+
give under the previous paragraph, plus a right to possession of the
448
+
Corresponding Source of the work from the predecessor in interest, if
449
+
the predecessor has it or can get it with reasonable efforts.
450
+
451
+
You may not impose any further restrictions on the exercise of the
452
+
rights granted or affirmed under this License. For example, you may
453
+
not impose a license fee, royalty, or other charge for exercise of
454
+
rights granted under this License, and you may not initiate litigation
455
+
(including a cross-claim or counterclaim in a lawsuit) alleging that
456
+
any patent claim is infringed by making, using, selling, offering for
457
+
sale, or importing the Program or any portion of it.
458
+
459
+
11. Patents.
460
+
461
+
A "contributor" is a copyright holder who authorizes use under this
462
+
License of the Program or a work on which the Program is based. The
463
+
work thus licensed is called the contributor's "contributor version".
464
+
465
+
A contributor's "essential patent claims" are all patent claims
466
+
owned or controlled by the contributor, whether already acquired or
467
+
hereafter acquired, that would be infringed by some manner, permitted
468
+
by this License, of making, using, or selling its contributor version,
469
+
but do not include claims that would be infringed only as a
470
+
consequence of further modification of the contributor version. For
471
+
purposes of this definition, "control" includes the right to grant
472
+
patent sublicenses in a manner consistent with the requirements of
473
+
this License.
474
+
475
+
Each contributor grants you a non-exclusive, worldwide, royalty-free
476
+
patent license under the contributor's essential patent claims, to
477
+
make, use, sell, offer for sale, import and otherwise run, modify and
478
+
propagate the contents of its contributor version.
479
+
480
+
In the following three paragraphs, a "patent license" is any express
481
+
agreement or commitment, however denominated, not to enforce a patent
482
+
(such as an express permission to practice a patent or covenant not to
483
+
sue for patent infringement). To "grant" such a patent license to a
484
+
party means to make such an agreement or commitment not to enforce a
485
+
patent against the party.
486
+
487
+
If you convey a covered work, knowingly relying on a patent license,
488
+
and the Corresponding Source of the work is not available for anyone
489
+
to copy, free of charge and under the terms of this License, through a
490
+
publicly available network server or other readily accessible means,
491
+
then you must either (1) cause the Corresponding Source to be so
492
+
available, or (2) arrange to deprive yourself of the benefit of the
493
+
patent license for this particular work, or (3) arrange, in a manner
494
+
consistent with the requirements of this License, to extend the patent
495
+
license to downstream recipients. "Knowingly relying" means you have
496
+
actual knowledge that, but for the patent license, your conveying the
497
+
covered work in a country, or your recipient's use of the covered work
498
+
in a country, would infringe one or more identifiable patents in that
499
+
country that you have reason to believe are valid.
500
+
501
+
If, pursuant to or in connection with a single transaction or
502
+
arrangement, you convey, or propagate by procuring conveyance of, a
503
+
covered work, and grant a patent license to some of the parties
504
+
receiving the covered work authorizing them to use, propagate, modify
505
+
or convey a specific copy of the covered work, then the patent license
506
+
you grant is automatically extended to all recipients of the covered
507
+
work and works based on it.
508
+
509
+
A patent license is "discriminatory" if it does not include within
510
+
the scope of its coverage, prohibits the exercise of, or is
511
+
conditioned on the non-exercise of one or more of the rights that are
512
+
specifically granted under this License. You may not convey a covered
513
+
work if you are a party to an arrangement with a third party that is
514
+
in the business of distributing software, under which you make payment
515
+
to the third party based on the extent of your activity of conveying
516
+
the work, and under which the third party grants, to any of the
517
+
parties who would receive the covered work from you, a discriminatory
518
+
patent license (a) in connection with copies of the covered work
519
+
conveyed by you (or copies made from those copies), or (b) primarily
520
+
for and in connection with specific products or compilations that
521
+
contain the covered work, unless you entered into that arrangement,
522
+
or that patent license was granted, prior to 28 March 2007.
523
+
524
+
Nothing in this License shall be construed as excluding or limiting
525
+
any implied license or other defenses to infringement that may
526
+
otherwise be available to you under applicable patent law.
527
+
528
+
12. No Surrender of Others' Freedom.
529
+
530
+
If conditions are imposed on you (whether by court order, agreement or
531
+
otherwise) that contradict the conditions of this License, they do not
532
+
excuse you from the conditions of this License. If you cannot convey a
533
+
covered work so as to satisfy simultaneously your obligations under this
534
+
License and any other pertinent obligations, then as a consequence you may
535
+
not convey it at all. For example, if you agree to terms that obligate you
536
+
to collect a royalty for further conveying from those to whom you convey
537
+
the Program, the only way you could satisfy both those terms and this
538
+
License would be to refrain entirely from conveying the Program.
539
+
540
+
13. Remote Network Interaction; Use with the GNU General Public License.
541
+
542
+
Notwithstanding any other provision of this License, if you modify the
543
+
Program, your modified version must prominently offer all users
544
+
interacting with it remotely through a computer network (if your version
545
+
supports such interaction) an opportunity to receive the Corresponding
546
+
Source of your version by providing access to the Corresponding Source
547
+
from a network server at no charge, through some standard or customary
548
+
means of facilitating copying of software. This Corresponding Source
549
+
shall include the Corresponding Source for any work covered by version 3
550
+
of the GNU General Public License that is incorporated pursuant to the
551
+
following paragraph.
552
+
553
+
Notwithstanding any other provision of this License, you have
554
+
permission to link or combine any covered work with a work licensed
555
+
under version 3 of the GNU General Public License into a single
556
+
combined work, and to convey the resulting work. The terms of this
557
+
License will continue to apply to the part which is the covered work,
558
+
but the work with which it is combined will remain governed by version
559
+
3 of the GNU General Public License.
560
+
561
+
14. Revised Versions of this License.
562
+
563
+
The Free Software Foundation may publish revised and/or new versions of
564
+
the GNU Affero General Public License from time to time. Such new versions
565
+
will be similar in spirit to the present version, but may differ in detail to
566
+
address new problems or concerns.
567
+
568
+
Each version is given a distinguishing version number. If the
569
+
Program specifies that a certain numbered version of the GNU Affero General
570
+
Public License "or any later version" applies to it, you have the
571
+
option of following the terms and conditions either of that numbered
572
+
version or of any later version published by the Free Software
573
+
Foundation. If the Program does not specify a version number of the
574
+
GNU Affero General Public License, you may choose any version ever published
575
+
by the Free Software Foundation.
576
+
577
+
If the Program specifies that a proxy can decide which future
578
+
versions of the GNU Affero General Public License can be used, that proxy's
579
+
public statement of acceptance of a version permanently authorizes you
580
+
to choose that version for the Program.
581
+
582
+
Later license versions may give you additional or different
583
+
permissions. However, no additional obligations are imposed on any
584
+
author or copyright holder as a result of your choosing to follow a
585
+
later version.
586
+
587
+
15. Disclaimer of Warranty.
588
+
589
+
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
590
+
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
591
+
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
592
+
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
593
+
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
594
+
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
595
+
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
596
+
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
597
+
598
+
16. Limitation of Liability.
599
+
600
+
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
601
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
602
+
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
603
+
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
604
+
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
605
+
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
606
+
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
607
+
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
608
+
SUCH DAMAGES.
609
+
610
+
17. Interpretation of Sections 15 and 16.
611
+
612
+
If the disclaimer of warranty and limitation of liability provided
613
+
above cannot be given local legal effect according to their terms,
614
+
reviewing courts shall apply local law that most closely approximates
615
+
an absolute waiver of all civil liability in connection with the
616
+
Program, unless a warranty or assumption of liability accompanies a
617
+
copy of the Program in return for a fee.
618
+
619
+
END OF TERMS AND CONDITIONS
620
+
621
+
How to Apply These Terms to Your New Programs
622
+
623
+
If you develop a new program, and you want it to be of the greatest
624
+
possible use to the public, the best way to achieve this is to make it
625
+
free software which everyone can redistribute and change under these terms.
626
+
627
+
To do so, attach the following notices to the program. It is safest
628
+
to attach them to the start of each source file to most effectively
629
+
state the exclusion of warranty; and each file should have at least
630
+
the "copyright" line and a pointer to where the full notice is found.
631
+
632
+
<one line to give the program's name and a brief idea of what it does.>
633
+
Copyright (C) 2025 Phaze
634
+
635
+
This program is free software: you can redistribute it and/or modify
636
+
it under the terms of the GNU Affero General Public License as published
637
+
by the Free Software Foundation, either version 3 of the License, or
638
+
(at your option) any later version.
639
+
640
+
This program is distributed in the hope that it will be useful,
641
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
642
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643
+
GNU Affero General Public License for more details.
644
+
645
+
You should have received a copy of the GNU Affero General Public License
646
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
647
+
648
+
Also add information on how to contact you by electronic and paper mail.
649
+
650
+
If your software can interact with users remotely through a computer
651
+
network, you should also make sure that it provides a way for users to
652
+
get its source. For example, if your program is a web application, its
653
+
interface could display a "Source" link that leads users to an archive
654
+
of the code. There are many ways you could offer source, and different
655
+
solutions will be better for different programs; see section 13 for the
656
+
specific requirements.
657
+
658
+
You should also get your employer (if you work as a programmer) or school,
659
+
if any, to sign a "copyright disclaimer" for the program, if necessary.
660
+
For more information on this, and how to apply and follow the GNU AGPL, see
661
+
<https://www.gnu.org/licenses/>.
+12
-14
README.md
+12
-14
README.md
···
1
# VRChat Photo Manager (BETA)
2
3
-
Install [here](https://cdn.phaz.uk/vrcpm/vrcpm-installer.exe)
4
5
-
This is the rust rewrite.
6
7
## Feedback / Bug Reports
8
···
10
11
Also for bug reports if you can, please try replicating the issue with a debug variant of the app and sending the logs along with your issue
12
13
-
You can download the debug EXEs using this url format:
14
-
https://cdn.phaz.uk/vrcpm/builds/debug/vrcpm-[YOUR-APP-VERSION]-debug.exe
15
16
You can find your app version under appllication settings.
17
18
-
(Please note that there are not debug releases for versions: 0.1.0, 0.1.1, 0.1.2, 0.1.3)
19
-
20
## A photo manager for VRChat.
21
22
-
Install [here](https://cdn.phaz.uk/vrcpm/vrcpm-installer.exe)
23
24
-

25
26
-
Support for:
27
-
- Files with VRCX metadata 
28
-
- Fetches world information from [VRCList](https://vrclist.com)
29
-
- Cloud backups 
30
-
- Searching for photos taken in specific worlds / with specific users 
31
-
- And much more in the works!
···
1
# VRChat Photo Manager (BETA)
2
3
+
Windows users: Download the setup.exe file [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest)
4
5
+
Linux Users:
6
+
- I publish .deb, .rpm and .AppImage files [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest)
7
+
- I also publish an [AUR](https://aur.archlinux.org/packages/vrchat-photo-manager) package
8
9
## Feedback / Bug Reports
10
···
12
13
Also for bug reports if you can, please try replicating the issue with a debug variant of the app and sending the logs along with your issue
14
15
+
You can download the debug EXEs [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases)
16
17
You can find your app version under appllication settings.
18
19
## A photo manager for VRChat.
20
21
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/bc702ee6-8891-463d-a987-c2db1dc24678" />
22
23
+
Files with VRCX metadata + Fetches world information from VRChat:
24
+
25
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/aae88c53-aab6-4520-bb89-d6f2bca1c51a" />
26
+
27
+
Searching for photos taken in specific worlds / with specific users:
28
29
+
<img width="1352" height="739" alt="image" src="https://github.com/user-attachments/assets/f9af1724-5bb2-4276-bc32-e818dab31750" />
+24
build-release.sh
+24
build-release.sh
···
···
1
+
#!/bin/bash
2
+
3
+
VERSION=0.2.7-hot1
4
+
5
+
# Linux builds
6
+
NO_STRIP=true pnpm tauri build
7
+
8
+
# Windows builds
9
+
pnpm tauri build --runner cargo-xwin --target x86_64-pc-windows-msvc
10
+
pnpm tauri build --debug --runner cargo-xwin --target x86_64-pc-windows-msvc
11
+
12
+
# Move Files
13
+
14
+
mkdir builds
15
+
mkdir builds/$VERSION
16
+
17
+
mv "src-tauri/target/release/bundle/appimage/VRChat Photo Manager_0.0.1_amd64.AppImage" builds/$VERSION/vrcpm-$VERSION.AppImage
18
+
mv "src-tauri/target/release/bundle/deb/VRChat Photo Manager_0.0.1_amd64.deb" builds/$VERSION/vrcpm-$VERSION.deb
19
+
mv "src-tauri/target/release/bundle/rpm/VRChat Photo Manager-0.0.1-1.x86_64.rpm" builds/$VERSION/vrcpm-$VERSION.rpm
20
+
21
+
mv src-tauri/target/x86_64-pc-windows-msvc/release/VRChatPhotoManager.exe builds/$VERSION/vrcpm-$VERSION.exe
22
+
mv src-tauri/target/x86_64-pc-windows-msvc/debug/VRChatPhotoManager.exe builds/$VERSION/vrcpm-$VERSION-debug.exe
23
+
24
+
mv "src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/VRChat Photo Manager_0.0.1_x64-setup.exe" builds/$VERSION/vrcpm-$VERSION-setup.exe
+80
-1
changelog
+80
-1
changelog
···
51
52
v0.2.2:
53
- Use more linux friendly directories
54
+
- Move away from localstorage and use the .config file
55
+
- Seems to be semi-stable on linux
56
+
- Update deeplink library
57
+
- Fix bugs with multiple screens displaying on frontend
58
+
- Fix caching issues with photo paths
59
+
- Fix VRCPM using way to many resources while being minimised after starting in the background
60
+
- Changed image resizing algorithm so preview images look less pixelated
61
+
- Fix issue where photos wouldn't display in the list if you opened the app before it had loaded
62
+
63
+
Hotfix 1:
64
+
- Fixed world cache not being saved to the config file
65
+
66
+
v0.2.3:
67
+
- Finally replaced the awful render function in the frontend, ( should use less resources when app is open )
68
+
- Fixed photos not being lined up
69
+
- Fixed filters not updating photo list
70
+
- Fixed adding / removing photos not updating the photo list
71
+
72
+
Hotfix 1:
73
+
- Fixed new installations immediately crashing
74
+
75
+
Dev Stuff:
76
+
- Split frontend up into many smaller files for easier editing
77
+
78
+
v0.2.4:
79
+
- Refactor loading system to not load all photos at the start
80
+
(should help with large numbers of photos)
81
+
- Update UI to work on webkitgtk
82
+
- Opening files on linux now works
83
+
- Fixed not rendering properly when using webkitgtk
84
+
- Switch world data api to vrchat
85
+
- Fixed icons being MASSIVE when using webkitgtk
86
+
- Photos are in the correct order on linux now
87
+
- Fixed photos not rendering if the window isn't resized or reopened when using webkitgtk
88
+
- Fixed scrolling being more and more snappy when the window is closed and reopened when using webkitgtk
89
+
- Fixed render being called multiple times per frame when using webkitgtk
90
+
91
+
Dev Stuff:
92
+
- Implemented a view transition handler, should help with transitions when the app is scaled
93
+
94
+
v0.2.5:
95
+
- Fixed the "Start with windows" button appearing on linux
96
+
- Fixed linux tray icon title
97
+
- Fixed build-release.sh script outputting the wrong names for windows builds
98
+
- Fixed clipboard on linux ( and sped it up on windows )
99
+
- Fixed some icons not fading out when moving to the settings menu
100
+
- Removed the auto updater
101
+
- Removed account login stuff
102
+
- Fixed app name on windows
103
+
- Update styles
104
+
- Fixed filters removing photos without metadata
105
+
106
+
v0.2.6:
107
+
- Fixed photos not being loaded if they're too low resolution
108
+
- Fixed "Open in folder" not selecting files on linux
109
+
- Fixed scroll to top button not animating out
110
+
- Fixed scroll to top button being ontop of filters menu
111
+
- Fixed photo ordering
112
+
- Fixed broken legacy named photos
113
+
- Fixed photos being loaded with the wrong resolution
114
+
115
+
- Added support for multilayer photos
116
+
- Added close to tray toggle
117
+
- Added update available prompt
118
+
119
+
- Remove all sync stuff
120
+
- Removed automatic updates
121
+
122
+
Hotfix 1:
123
+
- Fixed loading when an image file is corrupted
124
+
- Fixed update prompt when not connected to internet
125
+
126
+
v0.2.7:
127
+
- Fixed image resizing when window is thinner than image
128
+
- Fixed closing settings with keybinds
129
+
- Fixed the behaviour of changing the photo path
130
+
- Fixed loading photos in folders that aren't VRChat folders
131
+
132
+
Hotfix 1:
133
+
- Fixed resizing images (again)
+12
-11
package.json
+12
-11
package.json
···
12
},
13
"license": "MIT",
14
"dependencies": {
15
-
"@tauri-apps/api": "2.0.0-rc.0",
16
-
"@tauri-apps/plugin-http": "2.0.0-rc.1",
17
-
"@tauri-apps/plugin-process": "2.0.0-rc.0",
18
-
"@tauri-apps/plugin-shell": "2.0.0-rc.0",
19
-
"@types/animejs": "^3.1.12",
20
-
"animejs": "^3.2.2",
21
-
"solid-js": "^1.9.2"
22
},
23
"devDependencies": {
24
-
"@tauri-apps/cli": "2.0.0-rc.5",
25
-
"typescript": "^5.6.3",
26
-
"vite": "^5.4.9",
27
-
"vite-plugin-solid": "^2.10.2"
28
}
29
}
···
12
},
13
"license": "MIT",
14
"dependencies": {
15
+
"@tauri-apps/api": "2.9.0",
16
+
"@tauri-apps/plugin-deep-link": "^2.4.5",
17
+
"@tauri-apps/plugin-http": "2.5.4",
18
+
"@tauri-apps/plugin-process": "2.3.1",
19
+
"@tauri-apps/plugin-shell": "2.3.3",
20
+
"animejs": "^4.2.2",
21
+
"solid-js": "^1.9.10"
22
},
23
"devDependencies": {
24
+
"@tauri-apps/cli": "2.9.3",
25
+
"@types/animejs": "^3.1.13",
26
+
"typescript": "^5.9.3",
27
+
"vite": "^7.2.2",
28
+
"vite-plugin-solid": "^2.11.10"
29
}
30
}
+665
-709
pnpm-lock.yaml
+665
-709
pnpm-lock.yaml
···
9
.:
10
dependencies:
11
'@tauri-apps/api':
12
-
specifier: 2.0.0-rc.0
13
-
version: 2.0.0-rc.0
14
'@tauri-apps/plugin-http':
15
-
specifier: 2.0.0-rc.1
16
-
version: 2.0.0-rc.1
17
'@tauri-apps/plugin-process':
18
-
specifier: 2.0.0-rc.0
19
-
version: 2.0.0-rc.0
20
'@tauri-apps/plugin-shell':
21
-
specifier: 2.0.0-rc.0
22
-
version: 2.0.0-rc.0
23
-
'@types/animejs':
24
-
specifier: ^3.1.12
25
-
version: 3.1.12
26
animejs:
27
-
specifier: ^3.2.2
28
-
version: 3.2.2
29
solid-js:
30
-
specifier: ^1.9.2
31
-
version: 1.9.2
32
devDependencies:
33
'@tauri-apps/cli':
34
-
specifier: 2.0.0-rc.5
35
-
version: 2.0.0-rc.5
36
typescript:
37
-
specifier: ^5.6.3
38
-
version: 5.6.3
39
vite:
40
-
specifier: ^5.4.9
41
-
version: 5.4.9
42
vite-plugin-solid:
43
-
specifier: ^2.10.2
44
-
version: 2.10.2(solid-js@1.9.2)(vite@5.4.9)
45
46
packages:
47
48
-
'@ampproject/remapping@2.3.0':
49
-
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
50
-
engines: {node: '>=6.0.0'}
51
52
-
'@babel/code-frame@7.25.7':
53
-
resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==}
54
engines: {node: '>=6.9.0'}
55
56
-
'@babel/compat-data@7.25.8':
57
-
resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==}
58
engines: {node: '>=6.9.0'}
59
60
-
'@babel/core@7.25.8':
61
-
resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==}
62
engines: {node: '>=6.9.0'}
63
64
-
'@babel/generator@7.25.7':
65
-
resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==}
66
engines: {node: '>=6.9.0'}
67
68
-
'@babel/helper-compilation-targets@7.25.7':
69
-
resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==}
70
engines: {node: '>=6.9.0'}
71
72
'@babel/helper-module-imports@7.18.6':
73
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
74
engines: {node: '>=6.9.0'}
75
76
-
'@babel/helper-module-imports@7.25.7':
77
-
resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==}
78
engines: {node: '>=6.9.0'}
79
80
-
'@babel/helper-module-transforms@7.25.7':
81
-
resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==}
82
engines: {node: '>=6.9.0'}
83
peerDependencies:
84
'@babel/core': ^7.0.0
85
86
-
'@babel/helper-plugin-utils@7.25.7':
87
-
resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==}
88
-
engines: {node: '>=6.9.0'}
89
-
90
-
'@babel/helper-simple-access@7.25.7':
91
-
resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==}
92
engines: {node: '>=6.9.0'}
93
94
-
'@babel/helper-string-parser@7.25.7':
95
-
resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==}
96
engines: {node: '>=6.9.0'}
97
98
-
'@babel/helper-validator-identifier@7.25.7':
99
-
resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==}
100
engines: {node: '>=6.9.0'}
101
102
-
'@babel/helper-validator-option@7.25.7':
103
-
resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==}
104
engines: {node: '>=6.9.0'}
105
106
-
'@babel/helpers@7.25.7':
107
-
resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==}
108
engines: {node: '>=6.9.0'}
109
110
-
'@babel/highlight@7.25.7':
111
-
resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==}
112
-
engines: {node: '>=6.9.0'}
113
-
114
-
'@babel/parser@7.25.8':
115
-
resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==}
116
engines: {node: '>=6.0.0'}
117
hasBin: true
118
119
-
'@babel/plugin-syntax-jsx@7.25.7':
120
-
resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==}
121
engines: {node: '>=6.9.0'}
122
peerDependencies:
123
'@babel/core': ^7.0.0-0
124
125
-
'@babel/template@7.25.7':
126
-
resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==}
127
engines: {node: '>=6.9.0'}
128
129
-
'@babel/traverse@7.25.7':
130
-
resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==}
131
engines: {node: '>=6.9.0'}
132
133
-
'@babel/types@7.25.8':
134
-
resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==}
135
engines: {node: '>=6.9.0'}
136
137
-
'@esbuild/aix-ppc64@0.21.5':
138
-
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
139
-
engines: {node: '>=12'}
140
cpu: [ppc64]
141
os: [aix]
142
143
-
'@esbuild/android-arm64@0.21.5':
144
-
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
145
-
engines: {node: '>=12'}
146
cpu: [arm64]
147
os: [android]
148
149
-
'@esbuild/android-arm@0.21.5':
150
-
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
151
-
engines: {node: '>=12'}
152
cpu: [arm]
153
os: [android]
154
155
-
'@esbuild/android-x64@0.21.5':
156
-
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
157
-
engines: {node: '>=12'}
158
cpu: [x64]
159
os: [android]
160
161
-
'@esbuild/darwin-arm64@0.21.5':
162
-
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
163
-
engines: {node: '>=12'}
164
cpu: [arm64]
165
os: [darwin]
166
167
-
'@esbuild/darwin-x64@0.21.5':
168
-
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
169
-
engines: {node: '>=12'}
170
cpu: [x64]
171
os: [darwin]
172
173
-
'@esbuild/freebsd-arm64@0.21.5':
174
-
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
175
-
engines: {node: '>=12'}
176
cpu: [arm64]
177
os: [freebsd]
178
179
-
'@esbuild/freebsd-x64@0.21.5':
180
-
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
181
-
engines: {node: '>=12'}
182
cpu: [x64]
183
os: [freebsd]
184
185
-
'@esbuild/linux-arm64@0.21.5':
186
-
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
187
-
engines: {node: '>=12'}
188
cpu: [arm64]
189
os: [linux]
190
191
-
'@esbuild/linux-arm@0.21.5':
192
-
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
193
-
engines: {node: '>=12'}
194
cpu: [arm]
195
os: [linux]
196
197
-
'@esbuild/linux-ia32@0.21.5':
198
-
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
199
-
engines: {node: '>=12'}
200
cpu: [ia32]
201
os: [linux]
202
203
-
'@esbuild/linux-loong64@0.21.5':
204
-
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
205
-
engines: {node: '>=12'}
206
cpu: [loong64]
207
os: [linux]
208
209
-
'@esbuild/linux-mips64el@0.21.5':
210
-
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
211
-
engines: {node: '>=12'}
212
cpu: [mips64el]
213
os: [linux]
214
215
-
'@esbuild/linux-ppc64@0.21.5':
216
-
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
217
-
engines: {node: '>=12'}
218
cpu: [ppc64]
219
os: [linux]
220
221
-
'@esbuild/linux-riscv64@0.21.5':
222
-
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
223
-
engines: {node: '>=12'}
224
cpu: [riscv64]
225
os: [linux]
226
227
-
'@esbuild/linux-s390x@0.21.5':
228
-
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
229
-
engines: {node: '>=12'}
230
cpu: [s390x]
231
os: [linux]
232
233
-
'@esbuild/linux-x64@0.21.5':
234
-
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
235
-
engines: {node: '>=12'}
236
cpu: [x64]
237
os: [linux]
238
239
-
'@esbuild/netbsd-x64@0.21.5':
240
-
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
241
-
engines: {node: '>=12'}
242
cpu: [x64]
243
os: [netbsd]
244
245
-
'@esbuild/openbsd-x64@0.21.5':
246
-
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
247
-
engines: {node: '>=12'}
248
cpu: [x64]
249
os: [openbsd]
250
251
-
'@esbuild/sunos-x64@0.21.5':
252
-
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
253
-
engines: {node: '>=12'}
254
cpu: [x64]
255
os: [sunos]
256
257
-
'@esbuild/win32-arm64@0.21.5':
258
-
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
259
-
engines: {node: '>=12'}
260
cpu: [arm64]
261
os: [win32]
262
263
-
'@esbuild/win32-ia32@0.21.5':
264
-
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
265
-
engines: {node: '>=12'}
266
cpu: [ia32]
267
os: [win32]
268
269
-
'@esbuild/win32-x64@0.21.5':
270
-
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
271
-
engines: {node: '>=12'}
272
cpu: [x64]
273
os: [win32]
274
275
-
'@jest/schemas@29.6.3':
276
-
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
277
-
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
278
279
-
'@jridgewell/gen-mapping@0.3.5':
280
-
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
281
-
engines: {node: '>=6.0.0'}
282
283
'@jridgewell/resolve-uri@3.1.2':
284
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
285
engines: {node: '>=6.0.0'}
286
287
-
'@jridgewell/set-array@1.2.1':
288
-
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
289
-
engines: {node: '>=6.0.0'}
290
-
291
-
'@jridgewell/sourcemap-codec@1.5.0':
292
-
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
293
294
-
'@jridgewell/trace-mapping@0.3.25':
295
-
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
296
297
-
'@rollup/rollup-android-arm-eabi@4.24.0':
298
-
resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==}
299
cpu: [arm]
300
os: [android]
301
302
-
'@rollup/rollup-android-arm64@4.24.0':
303
-
resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==}
304
cpu: [arm64]
305
os: [android]
306
307
-
'@rollup/rollup-darwin-arm64@4.24.0':
308
-
resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==}
309
cpu: [arm64]
310
os: [darwin]
311
312
-
'@rollup/rollup-darwin-x64@4.24.0':
313
-
resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==}
314
cpu: [x64]
315
os: [darwin]
316
317
-
'@rollup/rollup-linux-arm-gnueabihf@4.24.0':
318
-
resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
319
cpu: [arm]
320
os: [linux]
321
322
-
'@rollup/rollup-linux-arm-musleabihf@4.24.0':
323
-
resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
324
cpu: [arm]
325
os: [linux]
326
327
-
'@rollup/rollup-linux-arm64-gnu@4.24.0':
328
-
resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
329
cpu: [arm64]
330
os: [linux]
331
332
-
'@rollup/rollup-linux-arm64-musl@4.24.0':
333
-
resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
334
cpu: [arm64]
335
os: [linux]
336
337
-
'@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
338
-
resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
339
cpu: [ppc64]
340
os: [linux]
341
342
-
'@rollup/rollup-linux-riscv64-gnu@4.24.0':
343
-
resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
344
cpu: [riscv64]
345
os: [linux]
346
347
-
'@rollup/rollup-linux-s390x-gnu@4.24.0':
348
-
resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
349
cpu: [s390x]
350
os: [linux]
351
352
-
'@rollup/rollup-linux-x64-gnu@4.24.0':
353
-
resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
354
cpu: [x64]
355
os: [linux]
356
357
-
'@rollup/rollup-linux-x64-musl@4.24.0':
358
-
resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
359
cpu: [x64]
360
os: [linux]
361
362
-
'@rollup/rollup-win32-arm64-msvc@4.24.0':
363
-
resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
364
cpu: [arm64]
365
os: [win32]
366
367
-
'@rollup/rollup-win32-ia32-msvc@4.24.0':
368
-
resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==}
369
cpu: [ia32]
370
os: [win32]
371
372
-
'@rollup/rollup-win32-x64-msvc@4.24.0':
373
-
resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==}
374
cpu: [x64]
375
os: [win32]
376
377
-
'@sinclair/typebox@0.27.8':
378
-
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
379
380
-
'@tauri-apps/api@2.0.0-rc.0':
381
-
resolution: {integrity: sha512-v454Qs3REHc3Za59U+/eSmBsdmF+3NE5+76+lFDaitVqN4ZglDHENDaMARYKGJVZuxiSkzyqG0SeG7lLQjVkPA==}
382
-
engines: {node: '>= 18.18', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
383
384
-
'@tauri-apps/api@2.0.2':
385
-
resolution: {integrity: sha512-3wSwmG+1kr6WrgAFKK5ijkNFPp8TT3FLj3YHUb5EwMO+3FxX4uWlfSWkeeBy+Kc1RsKzugtYLuuya+98Flj+3w==}
386
-
387
-
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.5':
388
-
resolution: {integrity: sha512-EoduJ5SeMfBKCe7I291JBH+lkrf2E0+mQF1rP+Jq4CjWPer11OeEcUSFtHURB3Z3ItzObQ7ALPulMGhMe6E9rg==}
389
engines: {node: '>= 10'}
390
cpu: [arm64]
391
os: [darwin]
392
393
-
'@tauri-apps/cli-darwin-x64@2.0.0-rc.5':
394
-
resolution: {integrity: sha512-GdphvNgQWAbVGoD6e2Z5auWFXBcmmbhiwf9UNoKpBQPLfFO6EEJHjXbACr/hAZsqT0nNpZLRoh/5v5HGTmU0XQ==}
395
engines: {node: '>= 10'}
396
cpu: [x64]
397
os: [darwin]
398
399
-
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.5':
400
-
resolution: {integrity: sha512-S47KwAfyRsO2qTqSoadHP4a1cjO9kfQi4QWkoaDjb0BEETdrhPM94qp43cnKP7QWW+msOToMTdlks9HYlhRUww==}
401
engines: {node: '>= 10'}
402
cpu: [arm]
403
os: [linux]
404
405
-
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.5':
406
-
resolution: {integrity: sha512-Ii9aP/24Rtlci5MaeSaqb6JOLt3cUBA4z4XmGz5VOLLZ+ntRxpfd3xNpLki04V2MOgbAu9BxLAp5UTzELc1/Rg==}
407
engines: {node: '>= 10'}
408
cpu: [arm64]
409
os: [linux]
410
411
-
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.5':
412
-
resolution: {integrity: sha512-noV2sDusI+DsEHl0uMOZ04sQmj65Jo9yjfSg2iv1fnfjBYVbwi6Qj/MaCqyApXESQrpv1XZB3kYI+CkyPnjj2Q==}
413
engines: {node: '>= 10'}
414
cpu: [arm64]
415
os: [linux]
416
417
-
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.5':
418
-
resolution: {integrity: sha512-iTe9gKO+qgFRjU1sxBvbI8bIRbkOedWvFm/yh8RFi1iJcFwbVnsHWQ8z7BwoNMJLnL2dseZgrGntmS5n9/xSSQ==}
419
engines: {node: '>= 10'}
420
cpu: [x64]
421
os: [linux]
422
423
-
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.5':
424
-
resolution: {integrity: sha512-R7EyfvfdMtRAKC3QxPn5jVGEH56R4g6hSnR5xXkFnEpioND7SNru5UMBGgseGJ22h/hdjFfqS2vc19291gkVsg==}
425
engines: {node: '>= 10'}
426
cpu: [x64]
427
os: [linux]
428
429
-
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.5':
430
-
resolution: {integrity: sha512-EE7CF//hMWsVZpu9IWXGLDDdMhAiNfHwfLnW4Na1INHKBBb/ynhOd4gKRC3Mi/kgcMfXJAq0nBJFw1mal1q7jg==}
431
engines: {node: '>= 10'}
432
cpu: [arm64]
433
os: [win32]
434
435
-
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.5':
436
-
resolution: {integrity: sha512-zJosPEw1X1H9nTNsrYVSypRLdMLOiLAY8hlBrgsmw7dmN61lOMLyItWsbiAezYeKIpaFeADurR+5qMHHwzbqeg==}
437
engines: {node: '>= 10'}
438
cpu: [ia32]
439
os: [win32]
440
441
-
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.5':
442
-
resolution: {integrity: sha512-PqxbL/e6GraazdwEKN1oX33gYCRf0ns6yuaxHafHM5+Zsv0MZpyPTPLDot/JLKvNBefk6QXZn5fKAIETVtQaGg==}
443
engines: {node: '>= 10'}
444
cpu: [x64]
445
os: [win32]
446
447
-
'@tauri-apps/cli@2.0.0-rc.5':
448
-
resolution: {integrity: sha512-JtFfJg8ZNOrj+S+8RKpcrNIcU5hw0X8JSNs2tUjQq0OZgqIGnRSILYjg7BaZDPEakQXUKsDEufbjbYVNJDIp8g==}
449
engines: {node: '>= 10'}
450
hasBin: true
451
452
-
'@tauri-apps/plugin-http@2.0.0-rc.1':
453
-
resolution: {integrity: sha512-j4WdTEKx0CFa6u8ubke0mo75pCrnu6XtrFtvjsh+zjuNYgMG/l0+A1woWXHm73f2Levskhs+KbKcLQA/nr8k2w==}
454
455
-
'@tauri-apps/plugin-process@2.0.0-rc.0':
456
-
resolution: {integrity: sha512-Z12D/kmQzG1vCVf+jLXPhPDUA0pEjFrsg4p0uwO2sotVLM9287IuTM+aIz9cuAYOxFLKcsnDG7amSCL9IfA1gw==}
457
458
-
'@tauri-apps/plugin-shell@2.0.0-rc.0':
459
-
resolution: {integrity: sha512-bhUcQcrqZoK8H1DFXapr5r1Z75oh6Kd5Tltz97XpZFLREEqp+KhN2Fvyh8r/fKAyenYsTYUIsDsyGdjdueuF9g==}
460
461
-
'@types/animejs@3.1.12':
462
-
resolution: {integrity: sha512-fpdH+ZtlO0kqjTOqRaBdsEmvpRNOayI8k4EVkEtitL5l6wducDOXk0rgQgfZqWf/ZX9DzXrHf257S5i9xTcISQ==}
463
464
'@types/babel__core@7.20.5':
465
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
466
467
-
'@types/babel__generator@7.6.8':
468
-
resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
469
470
'@types/babel__template@7.4.4':
471
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
472
473
-
'@types/babel__traverse@7.20.6':
474
-
resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
475
476
-
'@types/estree@1.0.6':
477
-
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
478
479
-
animejs@3.2.2:
480
-
resolution: {integrity: sha512-Ao95qWLpDPXXM+WrmwcKbl6uNlC5tjnowlaRYtuVDHHoygjtIPfDUoK9NthrlZsQSKjZXlmji2TrBUAVbiH0LQ==}
481
482
-
ansi-styles@3.2.1:
483
-
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
484
-
engines: {node: '>=4'}
485
-
486
-
ansi-styles@4.3.0:
487
-
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
488
-
engines: {node: '>=8'}
489
-
490
-
ansi-styles@5.2.0:
491
-
resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
492
-
engines: {node: '>=10'}
493
-
494
-
babel-plugin-jsx-dom-expressions@0.39.2:
495
-
resolution: {integrity: sha512-rCkSYFuLl5/XD+BXjZk1XxFAsIBgNe9WZ7xBHjQV1dBliI64kO+EWktAD3b6Bj/SXk+LpVXFyMVydhnI35svWQ==}
496
peerDependencies:
497
'@babel/core': ^7.20.12
498
499
-
babel-preset-solid@1.9.2:
500
-
resolution: {integrity: sha512-rWx968GIDghgFStRDQaoqelGspEm9rgPci/yNzNPFlkzMqHaL2yob+t7BbzyqZw5b9/llkzjqUNIOybT9Z9mcg==}
501
peerDependencies:
502
'@babel/core': ^7.0.0
503
504
-
browserslist@4.24.0:
505
-
resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==}
506
-
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
507
hasBin: true
508
509
-
caniuse-lite@1.0.30001669:
510
-
resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==}
511
512
-
chalk@2.4.2:
513
-
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
514
-
engines: {node: '>=4'}
515
-
516
-
chalk@4.1.2:
517
-
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
518
-
engines: {node: '>=10'}
519
-
520
-
color-convert@1.9.3:
521
-
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
522
-
523
-
color-convert@2.0.1:
524
-
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
525
-
engines: {node: '>=7.0.0'}
526
-
527
-
color-name@1.1.3:
528
-
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
529
-
530
-
color-name@1.1.4:
531
-
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
532
533
convert-source-map@2.0.0:
534
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
···
536
csstype@3.1.3:
537
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
538
539
-
debug@4.3.7:
540
-
resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
541
engines: {node: '>=6.0'}
542
peerDependencies:
543
supports-color: '*'
···
545
supports-color:
546
optional: true
547
548
-
diff-sequences@29.6.3:
549
-
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
550
-
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
551
552
-
electron-to-chromium@1.5.39:
553
-
resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==}
554
-
555
-
entities@4.5.0:
556
-
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
557
engines: {node: '>=0.12'}
558
559
-
esbuild@0.21.5:
560
-
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
561
-
engines: {node: '>=12'}
562
hasBin: true
563
564
escalade@3.2.0:
565
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
566
engines: {node: '>=6'}
567
568
-
escape-string-regexp@1.0.5:
569
-
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
570
-
engines: {node: '>=0.8.0'}
571
572
fsevents@2.3.3:
573
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
···
578
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
579
engines: {node: '>=6.9.0'}
580
581
-
globals@11.12.0:
582
-
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
583
-
engines: {node: '>=4'}
584
-
585
-
has-flag@3.0.0:
586
-
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
587
-
engines: {node: '>=4'}
588
-
589
-
has-flag@4.0.0:
590
-
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
591
-
engines: {node: '>=8'}
592
-
593
html-entities@2.3.3:
594
resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
595
···
597
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
598
engines: {node: '>=12.13'}
599
600
-
jest-diff@29.7.0:
601
-
resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
602
-
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
603
-
604
-
jest-get-type@29.6.3:
605
-
resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
606
-
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
607
-
608
js-tokens@4.0.0:
609
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
610
611
-
jsesc@3.0.2:
612
-
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
613
engines: {node: '>=6'}
614
hasBin: true
615
···
628
ms@2.1.3:
629
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
630
631
-
nanoid@3.3.7:
632
-
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
633
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
634
hasBin: true
635
636
-
node-releases@2.0.18:
637
-
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
638
639
-
parse5@7.2.0:
640
-
resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==}
641
642
-
picocolors@1.1.0:
643
-
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
644
645
-
postcss@8.4.47:
646
-
resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
647
engines: {node: ^10 || ^12 || >=14}
648
649
-
pretty-format@29.7.0:
650
-
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
651
-
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
652
-
653
-
react-is@18.3.1:
654
-
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
655
-
656
-
rollup@4.24.0:
657
-
resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==}
658
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
659
hasBin: true
660
···
662
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
663
hasBin: true
664
665
-
seroval-plugins@1.1.1:
666
-
resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==}
667
engines: {node: '>=10'}
668
peerDependencies:
669
seroval: ^1.0
670
671
-
seroval@1.1.1:
672
-
resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==}
673
engines: {node: '>=10'}
674
675
-
solid-js@1.9.2:
676
-
resolution: {integrity: sha512-fe/K03nV+kMFJYhAOE8AIQHcGxB4rMIEoEyrulbtmf217NffbbwBqJnJI4ovt16e+kaIt0czE2WA7mP/pYN9yg==}
677
678
solid-refresh@0.6.3:
679
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
684
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
685
engines: {node: '>=0.10.0'}
686
687
-
supports-color@5.5.0:
688
-
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
689
-
engines: {node: '>=4'}
690
-
691
-
supports-color@7.2.0:
692
-
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
693
-
engines: {node: '>=8'}
694
-
695
-
to-fast-properties@2.0.0:
696
-
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
697
-
engines: {node: '>=4'}
698
699
-
typescript@5.6.3:
700
-
resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
701
engines: {node: '>=14.17'}
702
hasBin: true
703
704
-
update-browserslist-db@1.1.1:
705
-
resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
706
hasBin: true
707
peerDependencies:
708
browserslist: '>= 4.21.0'
709
710
-
validate-html-nesting@1.2.2:
711
-
resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
712
-
713
-
vite-plugin-solid@2.10.2:
714
-
resolution: {integrity: sha512-AOEtwMe2baBSXMXdo+BUwECC8IFHcKS6WQV/1NEd+Q7vHPap5fmIhLcAzr+DUJ04/KHx/1UBU0l1/GWP+rMAPQ==}
715
peerDependencies:
716
'@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
717
solid-js: ^1.7.2
718
-
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
719
peerDependenciesMeta:
720
'@testing-library/jest-dom':
721
optional: true
722
723
-
vite@5.4.9:
724
-
resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==}
725
-
engines: {node: ^18.0.0 || >=20.0.0}
726
hasBin: true
727
peerDependencies:
728
-
'@types/node': ^18.0.0 || >=20.0.0
729
-
less: '*'
730
lightningcss: ^1.21.0
731
-
sass: '*'
732
-
sass-embedded: '*'
733
-
stylus: '*'
734
-
sugarss: '*'
735
-
terser: ^5.4.0
736
peerDependenciesMeta:
737
'@types/node':
738
optional: true
739
less:
740
optional: true
···
750
optional: true
751
terser:
752
optional: true
753
754
-
vitefu@0.2.5:
755
-
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
756
peerDependencies:
757
-
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
758
peerDependenciesMeta:
759
vite:
760
optional: true
···
764
765
snapshots:
766
767
-
'@ampproject/remapping@2.3.0':
768
-
dependencies:
769
-
'@jridgewell/gen-mapping': 0.3.5
770
-
'@jridgewell/trace-mapping': 0.3.25
771
-
772
-
'@babel/code-frame@7.25.7':
773
dependencies:
774
-
'@babel/highlight': 7.25.7
775
-
picocolors: 1.1.0
776
777
-
'@babel/compat-data@7.25.8': {}
778
779
-
'@babel/core@7.25.8':
780
dependencies:
781
-
'@ampproject/remapping': 2.3.0
782
-
'@babel/code-frame': 7.25.7
783
-
'@babel/generator': 7.25.7
784
-
'@babel/helper-compilation-targets': 7.25.7
785
-
'@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8)
786
-
'@babel/helpers': 7.25.7
787
-
'@babel/parser': 7.25.8
788
-
'@babel/template': 7.25.7
789
-
'@babel/traverse': 7.25.7
790
-
'@babel/types': 7.25.8
791
convert-source-map: 2.0.0
792
-
debug: 4.3.7
793
gensync: 1.0.0-beta.2
794
json5: 2.2.3
795
semver: 6.3.1
796
transitivePeerDependencies:
797
- supports-color
798
799
-
'@babel/generator@7.25.7':
800
dependencies:
801
-
'@babel/types': 7.25.8
802
-
'@jridgewell/gen-mapping': 0.3.5
803
-
'@jridgewell/trace-mapping': 0.3.25
804
-
jsesc: 3.0.2
805
806
-
'@babel/helper-compilation-targets@7.25.7':
807
dependencies:
808
-
'@babel/compat-data': 7.25.8
809
-
'@babel/helper-validator-option': 7.25.7
810
-
browserslist: 4.24.0
811
lru-cache: 5.1.1
812
semver: 6.3.1
813
814
'@babel/helper-module-imports@7.18.6':
815
dependencies:
816
-
'@babel/types': 7.25.8
817
818
-
'@babel/helper-module-imports@7.25.7':
819
dependencies:
820
-
'@babel/traverse': 7.25.7
821
-
'@babel/types': 7.25.8
822
transitivePeerDependencies:
823
- supports-color
824
825
-
'@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)':
826
dependencies:
827
-
'@babel/core': 7.25.8
828
-
'@babel/helper-module-imports': 7.25.7
829
-
'@babel/helper-simple-access': 7.25.7
830
-
'@babel/helper-validator-identifier': 7.25.7
831
-
'@babel/traverse': 7.25.7
832
transitivePeerDependencies:
833
- supports-color
834
835
-
'@babel/helper-plugin-utils@7.25.7': {}
836
837
-
'@babel/helper-simple-access@7.25.7':
838
-
dependencies:
839
-
'@babel/traverse': 7.25.7
840
-
'@babel/types': 7.25.8
841
-
transitivePeerDependencies:
842
-
- supports-color
843
844
-
'@babel/helper-string-parser@7.25.7': {}
845
-
846
-
'@babel/helper-validator-identifier@7.25.7': {}
847
-
848
-
'@babel/helper-validator-option@7.25.7': {}
849
850
-
'@babel/helpers@7.25.7':
851
-
dependencies:
852
-
'@babel/template': 7.25.7
853
-
'@babel/types': 7.25.8
854
855
-
'@babel/highlight@7.25.7':
856
dependencies:
857
-
'@babel/helper-validator-identifier': 7.25.7
858
-
chalk: 2.4.2
859
-
js-tokens: 4.0.0
860
-
picocolors: 1.1.0
861
862
-
'@babel/parser@7.25.8':
863
dependencies:
864
-
'@babel/types': 7.25.8
865
866
-
'@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)':
867
dependencies:
868
-
'@babel/core': 7.25.8
869
-
'@babel/helper-plugin-utils': 7.25.7
870
871
-
'@babel/template@7.25.7':
872
dependencies:
873
-
'@babel/code-frame': 7.25.7
874
-
'@babel/parser': 7.25.8
875
-
'@babel/types': 7.25.8
876
877
-
'@babel/traverse@7.25.7':
878
dependencies:
879
-
'@babel/code-frame': 7.25.7
880
-
'@babel/generator': 7.25.7
881
-
'@babel/parser': 7.25.8
882
-
'@babel/template': 7.25.7
883
-
'@babel/types': 7.25.8
884
-
debug: 4.3.7
885
-
globals: 11.12.0
886
transitivePeerDependencies:
887
- supports-color
888
889
-
'@babel/types@7.25.8':
890
dependencies:
891
-
'@babel/helper-string-parser': 7.25.7
892
-
'@babel/helper-validator-identifier': 7.25.7
893
-
to-fast-properties: 2.0.0
894
895
-
'@esbuild/aix-ppc64@0.21.5':
896
optional: true
897
898
-
'@esbuild/android-arm64@0.21.5':
899
optional: true
900
901
-
'@esbuild/android-arm@0.21.5':
902
optional: true
903
904
-
'@esbuild/android-x64@0.21.5':
905
optional: true
906
907
-
'@esbuild/darwin-arm64@0.21.5':
908
optional: true
909
910
-
'@esbuild/darwin-x64@0.21.5':
911
optional: true
912
913
-
'@esbuild/freebsd-arm64@0.21.5':
914
optional: true
915
916
-
'@esbuild/freebsd-x64@0.21.5':
917
optional: true
918
919
-
'@esbuild/linux-arm64@0.21.5':
920
optional: true
921
922
-
'@esbuild/linux-arm@0.21.5':
923
optional: true
924
925
-
'@esbuild/linux-ia32@0.21.5':
926
optional: true
927
928
-
'@esbuild/linux-loong64@0.21.5':
929
optional: true
930
931
-
'@esbuild/linux-mips64el@0.21.5':
932
optional: true
933
934
-
'@esbuild/linux-ppc64@0.21.5':
935
optional: true
936
937
-
'@esbuild/linux-riscv64@0.21.5':
938
optional: true
939
940
-
'@esbuild/linux-s390x@0.21.5':
941
optional: true
942
943
-
'@esbuild/linux-x64@0.21.5':
944
optional: true
945
946
-
'@esbuild/netbsd-x64@0.21.5':
947
optional: true
948
949
-
'@esbuild/openbsd-x64@0.21.5':
950
optional: true
951
952
-
'@esbuild/sunos-x64@0.21.5':
953
optional: true
954
955
-
'@esbuild/win32-arm64@0.21.5':
956
optional: true
957
958
-
'@esbuild/win32-ia32@0.21.5':
959
optional: true
960
961
-
'@esbuild/win32-x64@0.21.5':
962
optional: true
963
964
-
'@jest/schemas@29.6.3':
965
dependencies:
966
-
'@sinclair/typebox': 0.27.8
967
968
-
'@jridgewell/gen-mapping@0.3.5':
969
dependencies:
970
-
'@jridgewell/set-array': 1.2.1
971
-
'@jridgewell/sourcemap-codec': 1.5.0
972
-
'@jridgewell/trace-mapping': 0.3.25
973
974
'@jridgewell/resolve-uri@3.1.2': {}
975
976
-
'@jridgewell/set-array@1.2.1': {}
977
-
978
-
'@jridgewell/sourcemap-codec@1.5.0': {}
979
980
-
'@jridgewell/trace-mapping@0.3.25':
981
dependencies:
982
'@jridgewell/resolve-uri': 3.1.2
983
-
'@jridgewell/sourcemap-codec': 1.5.0
984
985
-
'@rollup/rollup-android-arm-eabi@4.24.0':
986
optional: true
987
988
-
'@rollup/rollup-android-arm64@4.24.0':
989
optional: true
990
991
-
'@rollup/rollup-darwin-arm64@4.24.0':
992
optional: true
993
994
-
'@rollup/rollup-darwin-x64@4.24.0':
995
optional: true
996
997
-
'@rollup/rollup-linux-arm-gnueabihf@4.24.0':
998
optional: true
999
1000
-
'@rollup/rollup-linux-arm-musleabihf@4.24.0':
1001
optional: true
1002
1003
-
'@rollup/rollup-linux-arm64-gnu@4.24.0':
1004
optional: true
1005
1006
-
'@rollup/rollup-linux-arm64-musl@4.24.0':
1007
optional: true
1008
1009
-
'@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
1010
optional: true
1011
1012
-
'@rollup/rollup-linux-riscv64-gnu@4.24.0':
1013
optional: true
1014
1015
-
'@rollup/rollup-linux-s390x-gnu@4.24.0':
1016
optional: true
1017
1018
-
'@rollup/rollup-linux-x64-gnu@4.24.0':
1019
optional: true
1020
1021
-
'@rollup/rollup-linux-x64-musl@4.24.0':
1022
optional: true
1023
1024
-
'@rollup/rollup-win32-arm64-msvc@4.24.0':
1025
optional: true
1026
1027
-
'@rollup/rollup-win32-ia32-msvc@4.24.0':
1028
optional: true
1029
1030
-
'@rollup/rollup-win32-x64-msvc@4.24.0':
1031
optional: true
1032
1033
-
'@sinclair/typebox@0.27.8': {}
1034
1035
-
'@tauri-apps/api@2.0.0-rc.0': {}
1036
1037
-
'@tauri-apps/api@2.0.2': {}
1038
1039
-
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.5':
1040
optional: true
1041
1042
-
'@tauri-apps/cli-darwin-x64@2.0.0-rc.5':
1043
optional: true
1044
1045
-
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.5':
1046
optional: true
1047
1048
-
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.5':
1049
optional: true
1050
1051
-
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.5':
1052
optional: true
1053
1054
-
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.5':
1055
optional: true
1056
1057
-
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.5':
1058
optional: true
1059
1060
-
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.5':
1061
optional: true
1062
1063
-
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.5':
1064
optional: true
1065
1066
-
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.5':
1067
optional: true
1068
1069
-
'@tauri-apps/cli@2.0.0-rc.5':
1070
optionalDependencies:
1071
-
'@tauri-apps/cli-darwin-arm64': 2.0.0-rc.5
1072
-
'@tauri-apps/cli-darwin-x64': 2.0.0-rc.5
1073
-
'@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.5
1074
-
'@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.5
1075
-
'@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.5
1076
-
'@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.5
1077
-
'@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.5
1078
-
'@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.5
1079
-
'@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.5
1080
-
'@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.5
1081
1082
-
'@tauri-apps/plugin-http@2.0.0-rc.1':
1083
dependencies:
1084
-
'@tauri-apps/api': 2.0.2
1085
1086
-
'@tauri-apps/plugin-process@2.0.0-rc.0':
1087
dependencies:
1088
-
'@tauri-apps/api': 2.0.0-rc.0
1089
1090
-
'@tauri-apps/plugin-shell@2.0.0-rc.0':
1091
dependencies:
1092
-
'@tauri-apps/api': 2.0.0-rc.0
1093
1094
-
'@types/animejs@3.1.12': {}
1095
1096
'@types/babel__core@7.20.5':
1097
dependencies:
1098
-
'@babel/parser': 7.25.8
1099
-
'@babel/types': 7.25.8
1100
-
'@types/babel__generator': 7.6.8
1101
'@types/babel__template': 7.4.4
1102
-
'@types/babel__traverse': 7.20.6
1103
1104
-
'@types/babel__generator@7.6.8':
1105
dependencies:
1106
-
'@babel/types': 7.25.8
1107
1108
'@types/babel__template@7.4.4':
1109
dependencies:
1110
-
'@babel/parser': 7.25.8
1111
-
'@babel/types': 7.25.8
1112
1113
-
'@types/babel__traverse@7.20.6':
1114
dependencies:
1115
-
'@babel/types': 7.25.8
1116
1117
-
'@types/estree@1.0.6': {}
1118
-
1119
-
animejs@3.2.2: {}
1120
1121
-
ansi-styles@3.2.1:
1122
-
dependencies:
1123
-
color-convert: 1.9.3
1124
1125
-
ansi-styles@4.3.0:
1126
dependencies:
1127
-
color-convert: 2.0.1
1128
-
1129
-
ansi-styles@5.2.0: {}
1130
-
1131
-
babel-plugin-jsx-dom-expressions@0.39.2(@babel/core@7.25.8):
1132
-
dependencies:
1133
-
'@babel/core': 7.25.8
1134
'@babel/helper-module-imports': 7.18.6
1135
-
'@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8)
1136
-
'@babel/types': 7.25.8
1137
html-entities: 2.3.3
1138
-
jest-diff: 29.7.0
1139
-
parse5: 7.2.0
1140
-
validate-html-nesting: 1.2.2
1141
-
1142
-
babel-preset-solid@1.9.2(@babel/core@7.25.8):
1143
-
dependencies:
1144
-
'@babel/core': 7.25.8
1145
-
babel-plugin-jsx-dom-expressions: 0.39.2(@babel/core@7.25.8)
1146
-
1147
-
browserslist@4.24.0:
1148
-
dependencies:
1149
-
caniuse-lite: 1.0.30001669
1150
-
electron-to-chromium: 1.5.39
1151
-
node-releases: 2.0.18
1152
-
update-browserslist-db: 1.1.1(browserslist@4.24.0)
1153
-
1154
-
caniuse-lite@1.0.30001669: {}
1155
1156
-
chalk@2.4.2:
1157
dependencies:
1158
-
ansi-styles: 3.2.1
1159
-
escape-string-regexp: 1.0.5
1160
-
supports-color: 5.5.0
1161
1162
-
chalk@4.1.2:
1163
-
dependencies:
1164
-
ansi-styles: 4.3.0
1165
-
supports-color: 7.2.0
1166
1167
-
color-convert@1.9.3:
1168
dependencies:
1169
-
color-name: 1.1.3
1170
1171
-
color-convert@2.0.1:
1172
-
dependencies:
1173
-
color-name: 1.1.4
1174
-
1175
-
color-name@1.1.3: {}
1176
-
1177
-
color-name@1.1.4: {}
1178
1179
convert-source-map@2.0.0: {}
1180
1181
csstype@3.1.3: {}
1182
1183
-
debug@4.3.7:
1184
dependencies:
1185
ms: 2.1.3
1186
1187
-
diff-sequences@29.6.3: {}
1188
1189
-
electron-to-chromium@1.5.39: {}
1190
-
1191
-
entities@4.5.0: {}
1192
1193
-
esbuild@0.21.5:
1194
optionalDependencies:
1195
-
'@esbuild/aix-ppc64': 0.21.5
1196
-
'@esbuild/android-arm': 0.21.5
1197
-
'@esbuild/android-arm64': 0.21.5
1198
-
'@esbuild/android-x64': 0.21.5
1199
-
'@esbuild/darwin-arm64': 0.21.5
1200
-
'@esbuild/darwin-x64': 0.21.5
1201
-
'@esbuild/freebsd-arm64': 0.21.5
1202
-
'@esbuild/freebsd-x64': 0.21.5
1203
-
'@esbuild/linux-arm': 0.21.5
1204
-
'@esbuild/linux-arm64': 0.21.5
1205
-
'@esbuild/linux-ia32': 0.21.5
1206
-
'@esbuild/linux-loong64': 0.21.5
1207
-
'@esbuild/linux-mips64el': 0.21.5
1208
-
'@esbuild/linux-ppc64': 0.21.5
1209
-
'@esbuild/linux-riscv64': 0.21.5
1210
-
'@esbuild/linux-s390x': 0.21.5
1211
-
'@esbuild/linux-x64': 0.21.5
1212
-
'@esbuild/netbsd-x64': 0.21.5
1213
-
'@esbuild/openbsd-x64': 0.21.5
1214
-
'@esbuild/sunos-x64': 0.21.5
1215
-
'@esbuild/win32-arm64': 0.21.5
1216
-
'@esbuild/win32-ia32': 0.21.5
1217
-
'@esbuild/win32-x64': 0.21.5
1218
1219
escalade@3.2.0: {}
1220
1221
-
escape-string-regexp@1.0.5: {}
1222
1223
fsevents@2.3.3:
1224
optional: true
1225
1226
gensync@1.0.0-beta.2: {}
1227
1228
-
globals@11.12.0: {}
1229
-
1230
-
has-flag@3.0.0: {}
1231
-
1232
-
has-flag@4.0.0: {}
1233
-
1234
html-entities@2.3.3: {}
1235
1236
is-what@4.1.16: {}
1237
1238
-
jest-diff@29.7.0:
1239
-
dependencies:
1240
-
chalk: 4.1.2
1241
-
diff-sequences: 29.6.3
1242
-
jest-get-type: 29.6.3
1243
-
pretty-format: 29.7.0
1244
-
1245
-
jest-get-type@29.6.3: {}
1246
-
1247
js-tokens@4.0.0: {}
1248
1249
-
jsesc@3.0.2: {}
1250
1251
json5@2.2.3: {}
1252
···
1260
1261
ms@2.1.3: {}
1262
1263
-
nanoid@3.3.7: {}
1264
1265
-
node-releases@2.0.18: {}
1266
1267
-
parse5@7.2.0:
1268
dependencies:
1269
-
entities: 4.5.0
1270
1271
-
picocolors@1.1.0: {}
1272
1273
-
postcss@8.4.47:
1274
-
dependencies:
1275
-
nanoid: 3.3.7
1276
-
picocolors: 1.1.0
1277
-
source-map-js: 1.2.1
1278
1279
-
pretty-format@29.7.0:
1280
dependencies:
1281
-
'@jest/schemas': 29.6.3
1282
-
ansi-styles: 5.2.0
1283
-
react-is: 18.3.1
1284
-
1285
-
react-is@18.3.1: {}
1286
1287
-
rollup@4.24.0:
1288
dependencies:
1289
-
'@types/estree': 1.0.6
1290
optionalDependencies:
1291
-
'@rollup/rollup-android-arm-eabi': 4.24.0
1292
-
'@rollup/rollup-android-arm64': 4.24.0
1293
-
'@rollup/rollup-darwin-arm64': 4.24.0
1294
-
'@rollup/rollup-darwin-x64': 4.24.0
1295
-
'@rollup/rollup-linux-arm-gnueabihf': 4.24.0
1296
-
'@rollup/rollup-linux-arm-musleabihf': 4.24.0
1297
-
'@rollup/rollup-linux-arm64-gnu': 4.24.0
1298
-
'@rollup/rollup-linux-arm64-musl': 4.24.0
1299
-
'@rollup/rollup-linux-powerpc64le-gnu': 4.24.0
1300
-
'@rollup/rollup-linux-riscv64-gnu': 4.24.0
1301
-
'@rollup/rollup-linux-s390x-gnu': 4.24.0
1302
-
'@rollup/rollup-linux-x64-gnu': 4.24.0
1303
-
'@rollup/rollup-linux-x64-musl': 4.24.0
1304
-
'@rollup/rollup-win32-arm64-msvc': 4.24.0
1305
-
'@rollup/rollup-win32-ia32-msvc': 4.24.0
1306
-
'@rollup/rollup-win32-x64-msvc': 4.24.0
1307
fsevents: 2.3.3
1308
1309
semver@6.3.1: {}
1310
1311
-
seroval-plugins@1.1.1(seroval@1.1.1):
1312
dependencies:
1313
-
seroval: 1.1.1
1314
1315
-
seroval@1.1.1: {}
1316
1317
-
solid-js@1.9.2:
1318
dependencies:
1319
csstype: 3.1.3
1320
-
seroval: 1.1.1
1321
-
seroval-plugins: 1.1.1(seroval@1.1.1)
1322
1323
-
solid-refresh@0.6.3(solid-js@1.9.2):
1324
dependencies:
1325
-
'@babel/generator': 7.25.7
1326
-
'@babel/helper-module-imports': 7.25.7
1327
-
'@babel/types': 7.25.8
1328
-
solid-js: 1.9.2
1329
transitivePeerDependencies:
1330
- supports-color
1331
1332
source-map-js@1.2.1: {}
1333
1334
-
supports-color@5.5.0:
1335
dependencies:
1336
-
has-flag: 3.0.0
1337
1338
-
supports-color@7.2.0:
1339
-
dependencies:
1340
-
has-flag: 4.0.0
1341
1342
-
to-fast-properties@2.0.0: {}
1343
-
1344
-
typescript@5.6.3: {}
1345
-
1346
-
update-browserslist-db@1.1.1(browserslist@4.24.0):
1347
dependencies:
1348
-
browserslist: 4.24.0
1349
escalade: 3.2.0
1350
-
picocolors: 1.1.0
1351
1352
-
validate-html-nesting@1.2.2: {}
1353
-
1354
-
vite-plugin-solid@2.10.2(solid-js@1.9.2)(vite@5.4.9):
1355
dependencies:
1356
-
'@babel/core': 7.25.8
1357
'@types/babel__core': 7.20.5
1358
-
babel-preset-solid: 1.9.2(@babel/core@7.25.8)
1359
merge-anything: 5.1.7
1360
-
solid-js: 1.9.2
1361
-
solid-refresh: 0.6.3(solid-js@1.9.2)
1362
-
vite: 5.4.9
1363
-
vitefu: 0.2.5(vite@5.4.9)
1364
transitivePeerDependencies:
1365
- supports-color
1366
1367
-
vite@5.4.9:
1368
dependencies:
1369
-
esbuild: 0.21.5
1370
-
postcss: 8.4.47
1371
-
rollup: 4.24.0
1372
optionalDependencies:
1373
fsevents: 2.3.3
1374
1375
-
vitefu@0.2.5(vite@5.4.9):
1376
-
dependencies:
1377
-
vite: 5.4.9
1378
1379
yallist@3.1.1: {}
···
9
.:
10
dependencies:
11
'@tauri-apps/api':
12
+
specifier: 2.9.0
13
+
version: 2.9.0
14
+
'@tauri-apps/plugin-deep-link':
15
+
specifier: ^2.4.5
16
+
version: 2.4.5
17
'@tauri-apps/plugin-http':
18
+
specifier: 2.5.4
19
+
version: 2.5.4
20
'@tauri-apps/plugin-process':
21
+
specifier: 2.3.1
22
+
version: 2.3.1
23
'@tauri-apps/plugin-shell':
24
+
specifier: 2.3.3
25
+
version: 2.3.3
26
animejs:
27
+
specifier: ^4.2.2
28
+
version: 4.2.2
29
solid-js:
30
+
specifier: ^1.9.10
31
+
version: 1.9.10
32
devDependencies:
33
'@tauri-apps/cli':
34
+
specifier: 2.9.3
35
+
version: 2.9.3
36
+
'@types/animejs':
37
+
specifier: ^3.1.13
38
+
version: 3.1.13
39
typescript:
40
+
specifier: ^5.9.3
41
+
version: 5.9.3
42
vite:
43
+
specifier: ^7.2.2
44
+
version: 7.2.2
45
vite-plugin-solid:
46
+
specifier: ^2.11.10
47
+
version: 2.11.10(solid-js@1.9.10)(vite@7.2.2)
48
49
packages:
50
51
+
'@babel/code-frame@7.27.1':
52
+
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
53
+
engines: {node: '>=6.9.0'}
54
55
+
'@babel/compat-data@7.28.5':
56
+
resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
57
engines: {node: '>=6.9.0'}
58
59
+
'@babel/core@7.28.5':
60
+
resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
61
engines: {node: '>=6.9.0'}
62
63
+
'@babel/generator@7.28.5':
64
+
resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
65
engines: {node: '>=6.9.0'}
66
67
+
'@babel/helper-compilation-targets@7.27.2':
68
+
resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
69
engines: {node: '>=6.9.0'}
70
71
+
'@babel/helper-globals@7.28.0':
72
+
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
73
engines: {node: '>=6.9.0'}
74
75
'@babel/helper-module-imports@7.18.6':
76
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
77
engines: {node: '>=6.9.0'}
78
79
+
'@babel/helper-module-imports@7.27.1':
80
+
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
81
engines: {node: '>=6.9.0'}
82
83
+
'@babel/helper-module-transforms@7.28.3':
84
+
resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
85
engines: {node: '>=6.9.0'}
86
peerDependencies:
87
'@babel/core': ^7.0.0
88
89
+
'@babel/helper-plugin-utils@7.27.1':
90
+
resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
91
engines: {node: '>=6.9.0'}
92
93
+
'@babel/helper-string-parser@7.27.1':
94
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
95
engines: {node: '>=6.9.0'}
96
97
+
'@babel/helper-validator-identifier@7.28.5':
98
+
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
99
engines: {node: '>=6.9.0'}
100
101
+
'@babel/helper-validator-option@7.27.1':
102
+
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
103
engines: {node: '>=6.9.0'}
104
105
+
'@babel/helpers@7.28.4':
106
+
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
107
engines: {node: '>=6.9.0'}
108
109
+
'@babel/parser@7.28.5':
110
+
resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
111
engines: {node: '>=6.0.0'}
112
hasBin: true
113
114
+
'@babel/plugin-syntax-jsx@7.27.1':
115
+
resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
116
engines: {node: '>=6.9.0'}
117
peerDependencies:
118
'@babel/core': ^7.0.0-0
119
120
+
'@babel/template@7.27.2':
121
+
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
122
engines: {node: '>=6.9.0'}
123
124
+
'@babel/traverse@7.28.5':
125
+
resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
126
engines: {node: '>=6.9.0'}
127
128
+
'@babel/types@7.28.5':
129
+
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
130
engines: {node: '>=6.9.0'}
131
132
+
'@esbuild/aix-ppc64@0.25.12':
133
+
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
134
+
engines: {node: '>=18'}
135
cpu: [ppc64]
136
os: [aix]
137
138
+
'@esbuild/android-arm64@0.25.12':
139
+
resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
140
+
engines: {node: '>=18'}
141
cpu: [arm64]
142
os: [android]
143
144
+
'@esbuild/android-arm@0.25.12':
145
+
resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
146
+
engines: {node: '>=18'}
147
cpu: [arm]
148
os: [android]
149
150
+
'@esbuild/android-x64@0.25.12':
151
+
resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
152
+
engines: {node: '>=18'}
153
cpu: [x64]
154
os: [android]
155
156
+
'@esbuild/darwin-arm64@0.25.12':
157
+
resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
158
+
engines: {node: '>=18'}
159
cpu: [arm64]
160
os: [darwin]
161
162
+
'@esbuild/darwin-x64@0.25.12':
163
+
resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
164
+
engines: {node: '>=18'}
165
cpu: [x64]
166
os: [darwin]
167
168
+
'@esbuild/freebsd-arm64@0.25.12':
169
+
resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
170
+
engines: {node: '>=18'}
171
cpu: [arm64]
172
os: [freebsd]
173
174
+
'@esbuild/freebsd-x64@0.25.12':
175
+
resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
176
+
engines: {node: '>=18'}
177
cpu: [x64]
178
os: [freebsd]
179
180
+
'@esbuild/linux-arm64@0.25.12':
181
+
resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
182
+
engines: {node: '>=18'}
183
cpu: [arm64]
184
os: [linux]
185
186
+
'@esbuild/linux-arm@0.25.12':
187
+
resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
188
+
engines: {node: '>=18'}
189
cpu: [arm]
190
os: [linux]
191
192
+
'@esbuild/linux-ia32@0.25.12':
193
+
resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
194
+
engines: {node: '>=18'}
195
cpu: [ia32]
196
os: [linux]
197
198
+
'@esbuild/linux-loong64@0.25.12':
199
+
resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
200
+
engines: {node: '>=18'}
201
cpu: [loong64]
202
os: [linux]
203
204
+
'@esbuild/linux-mips64el@0.25.12':
205
+
resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
206
+
engines: {node: '>=18'}
207
cpu: [mips64el]
208
os: [linux]
209
210
+
'@esbuild/linux-ppc64@0.25.12':
211
+
resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
212
+
engines: {node: '>=18'}
213
cpu: [ppc64]
214
os: [linux]
215
216
+
'@esbuild/linux-riscv64@0.25.12':
217
+
resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
218
+
engines: {node: '>=18'}
219
cpu: [riscv64]
220
os: [linux]
221
222
+
'@esbuild/linux-s390x@0.25.12':
223
+
resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
224
+
engines: {node: '>=18'}
225
cpu: [s390x]
226
os: [linux]
227
228
+
'@esbuild/linux-x64@0.25.12':
229
+
resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
230
+
engines: {node: '>=18'}
231
cpu: [x64]
232
os: [linux]
233
234
+
'@esbuild/netbsd-arm64@0.25.12':
235
+
resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
236
+
engines: {node: '>=18'}
237
+
cpu: [arm64]
238
+
os: [netbsd]
239
+
240
+
'@esbuild/netbsd-x64@0.25.12':
241
+
resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
242
+
engines: {node: '>=18'}
243
cpu: [x64]
244
os: [netbsd]
245
246
+
'@esbuild/openbsd-arm64@0.25.12':
247
+
resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
248
+
engines: {node: '>=18'}
249
+
cpu: [arm64]
250
+
os: [openbsd]
251
+
252
+
'@esbuild/openbsd-x64@0.25.12':
253
+
resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
254
+
engines: {node: '>=18'}
255
cpu: [x64]
256
os: [openbsd]
257
258
+
'@esbuild/openharmony-arm64@0.25.12':
259
+
resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
260
+
engines: {node: '>=18'}
261
+
cpu: [arm64]
262
+
os: [openharmony]
263
+
264
+
'@esbuild/sunos-x64@0.25.12':
265
+
resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
266
+
engines: {node: '>=18'}
267
cpu: [x64]
268
os: [sunos]
269
270
+
'@esbuild/win32-arm64@0.25.12':
271
+
resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
272
+
engines: {node: '>=18'}
273
cpu: [arm64]
274
os: [win32]
275
276
+
'@esbuild/win32-ia32@0.25.12':
277
+
resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
278
+
engines: {node: '>=18'}
279
cpu: [ia32]
280
os: [win32]
281
282
+
'@esbuild/win32-x64@0.25.12':
283
+
resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
284
+
engines: {node: '>=18'}
285
cpu: [x64]
286
os: [win32]
287
288
+
'@jridgewell/gen-mapping@0.3.13':
289
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
290
291
+
'@jridgewell/remapping@2.3.5':
292
+
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
293
294
'@jridgewell/resolve-uri@3.1.2':
295
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
296
engines: {node: '>=6.0.0'}
297
298
+
'@jridgewell/sourcemap-codec@1.5.5':
299
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
300
301
+
'@jridgewell/trace-mapping@0.3.31':
302
+
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
303
304
+
'@rollup/rollup-android-arm-eabi@4.52.5':
305
+
resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
306
cpu: [arm]
307
os: [android]
308
309
+
'@rollup/rollup-android-arm64@4.52.5':
310
+
resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
311
cpu: [arm64]
312
os: [android]
313
314
+
'@rollup/rollup-darwin-arm64@4.52.5':
315
+
resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
316
cpu: [arm64]
317
os: [darwin]
318
319
+
'@rollup/rollup-darwin-x64@4.52.5':
320
+
resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
321
cpu: [x64]
322
os: [darwin]
323
324
+
'@rollup/rollup-freebsd-arm64@4.52.5':
325
+
resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
326
+
cpu: [arm64]
327
+
os: [freebsd]
328
+
329
+
'@rollup/rollup-freebsd-x64@4.52.5':
330
+
resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
331
+
cpu: [x64]
332
+
os: [freebsd]
333
+
334
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
335
+
resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
336
cpu: [arm]
337
os: [linux]
338
339
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
340
+
resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
341
cpu: [arm]
342
os: [linux]
343
344
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
345
+
resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
346
cpu: [arm64]
347
os: [linux]
348
349
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
350
+
resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
351
cpu: [arm64]
352
os: [linux]
353
354
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
355
+
resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
356
+
cpu: [loong64]
357
+
os: [linux]
358
+
359
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
360
+
resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
361
cpu: [ppc64]
362
os: [linux]
363
364
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
365
+
resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
366
+
cpu: [riscv64]
367
+
os: [linux]
368
+
369
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
370
+
resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
371
cpu: [riscv64]
372
os: [linux]
373
374
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
375
+
resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
376
cpu: [s390x]
377
os: [linux]
378
379
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
380
+
resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
381
cpu: [x64]
382
os: [linux]
383
384
+
'@rollup/rollup-linux-x64-musl@4.52.5':
385
+
resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
386
cpu: [x64]
387
os: [linux]
388
389
+
'@rollup/rollup-openharmony-arm64@4.52.5':
390
+
resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
391
+
cpu: [arm64]
392
+
os: [openharmony]
393
+
394
+
'@rollup/rollup-win32-arm64-msvc@4.52.5':
395
+
resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
396
cpu: [arm64]
397
os: [win32]
398
399
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
400
+
resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
401
cpu: [ia32]
402
os: [win32]
403
404
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
405
+
resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
406
cpu: [x64]
407
os: [win32]
408
409
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
410
+
resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
411
+
cpu: [x64]
412
+
os: [win32]
413
414
+
'@tauri-apps/api@2.9.0':
415
+
resolution: {integrity: sha512-qD5tMjh7utwBk9/5PrTA/aGr3i5QaJ/Mlt7p8NilQ45WgbifUNPyKWsA63iQ8YfQq6R8ajMapU+/Q8nMcPRLNw==}
416
417
+
'@tauri-apps/cli-darwin-arm64@2.9.3':
418
+
resolution: {integrity: sha512-W8FQXZXQmQ0Fmj9UJXNrm2mLdIaLLriKVY7o/FzmizyIKTPIvHjfZALTNybbpTQRbJvKoGHLrW1DNzAWVDWJYg==}
419
engines: {node: '>= 10'}
420
cpu: [arm64]
421
os: [darwin]
422
423
+
'@tauri-apps/cli-darwin-x64@2.9.3':
424
+
resolution: {integrity: sha512-zDwu40rlshijt3TU6aRvzPUyVpapsx1sNfOlreDMTaMelQLHl6YoQzSRpLHYwrHrhimxyX2uDqnKIiuGel0Lhg==}
425
engines: {node: '>= 10'}
426
cpu: [x64]
427
os: [darwin]
428
429
+
'@tauri-apps/cli-linux-arm-gnueabihf@2.9.3':
430
+
resolution: {integrity: sha512-+Oc2OfcTRwYtW93VJqd/HOk77buORwC9IToj/qsEvM7bTMq6Kda4alpZprzwrCHYANSw+zD8PgjJdljTpe4p+g==}
431
engines: {node: '>= 10'}
432
cpu: [arm]
433
os: [linux]
434
435
+
'@tauri-apps/cli-linux-arm64-gnu@2.9.3':
436
+
resolution: {integrity: sha512-59GqU/J1n9wFyAtleoQOaU0oVIo+kwQynEw4meFDoKRXszKGor6lTsbsS3r0QKLSPbc0o/yYGJhqqCtkYjb/eg==}
437
engines: {node: '>= 10'}
438
cpu: [arm64]
439
os: [linux]
440
441
+
'@tauri-apps/cli-linux-arm64-musl@2.9.3':
442
+
resolution: {integrity: sha512-fzvG+jEn5/iYGNH6Z2IRMheYFC4pJdXa19BR9fFm6Bdn2cuajRLDKdUcEME/DCtwqclphXtFZTrT4oezY5vI/A==}
443
engines: {node: '>= 10'}
444
cpu: [arm64]
445
os: [linux]
446
447
+
'@tauri-apps/cli-linux-riscv64-gnu@2.9.3':
448
+
resolution: {integrity: sha512-qV8DZXI/fZwawk6T3Th1g6smiNC2KeQTk7XFgKvqZ6btC01z3UTsQmNGvI602zwm3Ld1TBZb4+rEWu2QmQimmw==}
449
+
engines: {node: '>= 10'}
450
+
cpu: [riscv64]
451
+
os: [linux]
452
+
453
+
'@tauri-apps/cli-linux-x64-gnu@2.9.3':
454
+
resolution: {integrity: sha512-tquyEONCNRfqEBWEe4eAHnxFN5yY5lFkCuD4w79XLIovUxVftQ684+xLp7zkhntkt4y20SMj2AgJa/+MOlx4Kg==}
455
engines: {node: '>= 10'}
456
cpu: [x64]
457
os: [linux]
458
459
+
'@tauri-apps/cli-linux-x64-musl@2.9.3':
460
+
resolution: {integrity: sha512-v2cBIB/6ji8DL+aiL5QUykU3ZO8OoJGyx50/qv2HQVzkf85KdaYSis3D/oVRemN/pcDz+vyCnnL3XnzFnDl4JQ==}
461
engines: {node: '>= 10'}
462
cpu: [x64]
463
os: [linux]
464
465
+
'@tauri-apps/cli-win32-arm64-msvc@2.9.3':
466
+
resolution: {integrity: sha512-ZGvBy7nvrHPbE0HeKp/ioaiw8bNgAHxWnb7JRZ4/G0A+oFj0SeSFxl9k5uU6FKnM7bHM23Gd1oeaDex9g5Fceg==}
467
engines: {node: '>= 10'}
468
cpu: [arm64]
469
os: [win32]
470
471
+
'@tauri-apps/cli-win32-ia32-msvc@2.9.3':
472
+
resolution: {integrity: sha512-UsgIwOnpCoY9NK9/65QiwgmWVIE80LE7SwRYVblGtmlY9RYfsYvpbItwsovA/AcHMTiO+OCvS/q9yLeqS3m6Sg==}
473
engines: {node: '>= 10'}
474
cpu: [ia32]
475
os: [win32]
476
477
+
'@tauri-apps/cli-win32-x64-msvc@2.9.3':
478
+
resolution: {integrity: sha512-fmw7NrrHE5m49idCvJAx9T9bsupjdJ0a3p3DPCNCZRGANU6R1tA1L+KTlVuUtdAldX2NqU/9UPo2SCslYKgJHQ==}
479
engines: {node: '>= 10'}
480
cpu: [x64]
481
os: [win32]
482
483
+
'@tauri-apps/cli@2.9.3':
484
+
resolution: {integrity: sha512-BQ7iLUXTQcyG1PpzLWeVSmBCedYDpnA/6Cm/kRFGtqjTf/eVUlyYO5S2ee07tLum3nWwDBWTGFZeruO8yEukfA==}
485
engines: {node: '>= 10'}
486
hasBin: true
487
488
+
'@tauri-apps/plugin-deep-link@2.4.5':
489
+
resolution: {integrity: sha512-Zf2RTj1D9IQQ45/jqW8XTKvql24HqlPjcpv0mV/O2jHQkNe11HOTZBVj6IK37qs+MWV7xZzcmazx/QVZnhAwaQ==}
490
491
+
'@tauri-apps/plugin-http@2.5.4':
492
+
resolution: {integrity: sha512-/i4U/9za3mrytTgfRn5RHneKubZE/dwRmshYwyMvNRlkWjvu1m4Ma72kcbVJMZFGXpkbl+qLyWMGrihtWB76Zg==}
493
494
+
'@tauri-apps/plugin-process@2.3.1':
495
+
resolution: {integrity: sha512-nCa4fGVaDL/B9ai03VyPOjfAHRHSBz5v6F/ObsB73r/dA3MHHhZtldaDMIc0V/pnUw9ehzr2iEG+XkSEyC0JJA==}
496
497
+
'@tauri-apps/plugin-shell@2.3.3':
498
+
resolution: {integrity: sha512-Xod+pRcFxmOWFWEnqH5yZcA7qwAMuaaDkMR1Sply+F8VfBj++CGnj2xf5UoialmjZ2Cvd8qrvSCbU+7GgNVsKQ==}
499
+
500
+
'@types/animejs@3.1.13':
501
+
resolution: {integrity: sha512-yWg9l1z7CAv/TKpty4/vupEh24jDGUZXv4r26StRkpUPQm04ztJaftgpto8vwdFs8SiTq6XfaPKCSI+wjzNMvQ==}
502
503
'@types/babel__core@7.20.5':
504
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
505
506
+
'@types/babel__generator@7.27.0':
507
+
resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
508
509
'@types/babel__template@7.4.4':
510
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
511
512
+
'@types/babel__traverse@7.28.0':
513
+
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
514
515
+
'@types/estree@1.0.8':
516
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
517
518
+
animejs@4.2.2:
519
+
resolution: {integrity: sha512-Ys3RuvLdAeI14fsdKCQy7ytu4057QX6Bb7m4jwmfd6iKmUmLquTwk1ut0e4NtRQgCeq/s2Lv5+oMBjz6c7ZuIg==}
520
521
+
babel-plugin-jsx-dom-expressions@0.40.3:
522
+
resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==}
523
peerDependencies:
524
'@babel/core': ^7.20.12
525
526
+
babel-preset-solid@1.9.10:
527
+
resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==}
528
peerDependencies:
529
'@babel/core': ^7.0.0
530
+
solid-js: ^1.9.10
531
+
peerDependenciesMeta:
532
+
solid-js:
533
+
optional: true
534
535
+
baseline-browser-mapping@2.8.25:
536
+
resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==}
537
hasBin: true
538
539
+
browserslist@4.27.0:
540
+
resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==}
541
+
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
542
+
hasBin: true
543
544
+
caniuse-lite@1.0.30001754:
545
+
resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==}
546
547
convert-source-map@2.0.0:
548
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
···
550
csstype@3.1.3:
551
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
552
553
+
debug@4.4.3:
554
+
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
555
engines: {node: '>=6.0'}
556
peerDependencies:
557
supports-color: '*'
···
559
supports-color:
560
optional: true
561
562
+
electron-to-chromium@1.5.248:
563
+
resolution: {integrity: sha512-zsur2yunphlyAO4gIubdJEXCK6KOVvtpiuDfCIqbM9FjcnMYiyn0ICa3hWfPr0nc41zcLWobgy1iL7VvoOyA2Q==}
564
565
+
entities@6.0.1:
566
+
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
567
engines: {node: '>=0.12'}
568
569
+
esbuild@0.25.12:
570
+
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
571
+
engines: {node: '>=18'}
572
hasBin: true
573
574
escalade@3.2.0:
575
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
576
engines: {node: '>=6'}
577
578
+
fdir@6.5.0:
579
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
580
+
engines: {node: '>=12.0.0'}
581
+
peerDependencies:
582
+
picomatch: ^3 || ^4
583
+
peerDependenciesMeta:
584
+
picomatch:
585
+
optional: true
586
587
fsevents@2.3.3:
588
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
···
593
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
594
engines: {node: '>=6.9.0'}
595
596
html-entities@2.3.3:
597
resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
598
···
600
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
601
engines: {node: '>=12.13'}
602
603
js-tokens@4.0.0:
604
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
605
606
+
jsesc@3.1.0:
607
+
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
608
engines: {node: '>=6'}
609
hasBin: true
610
···
623
ms@2.1.3:
624
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
625
626
+
nanoid@3.3.11:
627
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
628
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
629
hasBin: true
630
631
+
node-releases@2.0.27:
632
+
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
633
+
634
+
parse5@7.3.0:
635
+
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
636
637
+
picocolors@1.1.1:
638
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
639
640
+
picomatch@4.0.3:
641
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
642
+
engines: {node: '>=12'}
643
644
+
postcss@8.5.6:
645
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
646
engines: {node: ^10 || ^12 || >=14}
647
648
+
rollup@4.52.5:
649
+
resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
650
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
651
hasBin: true
652
···
654
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
655
hasBin: true
656
657
+
seroval-plugins@1.3.3:
658
+
resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
659
engines: {node: '>=10'}
660
peerDependencies:
661
seroval: ^1.0
662
663
+
seroval@1.3.2:
664
+
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
665
engines: {node: '>=10'}
666
667
+
solid-js@1.9.10:
668
+
resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==}
669
670
solid-refresh@0.6.3:
671
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
···
676
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
677
engines: {node: '>=0.10.0'}
678
679
+
tinyglobby@0.2.15:
680
+
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
681
+
engines: {node: '>=12.0.0'}
682
683
+
typescript@5.9.3:
684
+
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
685
engines: {node: '>=14.17'}
686
hasBin: true
687
688
+
update-browserslist-db@1.1.4:
689
+
resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
690
hasBin: true
691
peerDependencies:
692
browserslist: '>= 4.21.0'
693
694
+
vite-plugin-solid@2.11.10:
695
+
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
696
peerDependencies:
697
'@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
698
solid-js: ^1.7.2
699
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
700
peerDependenciesMeta:
701
'@testing-library/jest-dom':
702
optional: true
703
704
+
vite@7.2.2:
705
+
resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==}
706
+
engines: {node: ^20.19.0 || >=22.12.0}
707
hasBin: true
708
peerDependencies:
709
+
'@types/node': ^20.19.0 || >=22.12.0
710
+
jiti: '>=1.21.0'
711
+
less: ^4.0.0
712
lightningcss: ^1.21.0
713
+
sass: ^1.70.0
714
+
sass-embedded: ^1.70.0
715
+
stylus: '>=0.54.8'
716
+
sugarss: ^5.0.0
717
+
terser: ^5.16.0
718
+
tsx: ^4.8.1
719
+
yaml: ^2.4.2
720
peerDependenciesMeta:
721
'@types/node':
722
+
optional: true
723
+
jiti:
724
optional: true
725
less:
726
optional: true
···
736
optional: true
737
terser:
738
optional: true
739
+
tsx:
740
+
optional: true
741
+
yaml:
742
+
optional: true
743
744
+
vitefu@1.1.1:
745
+
resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
746
peerDependencies:
747
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
748
peerDependenciesMeta:
749
vite:
750
optional: true
···
754
755
snapshots:
756
757
+
'@babel/code-frame@7.27.1':
758
dependencies:
759
+
'@babel/helper-validator-identifier': 7.28.5
760
+
js-tokens: 4.0.0
761
+
picocolors: 1.1.1
762
763
+
'@babel/compat-data@7.28.5': {}
764
765
+
'@babel/core@7.28.5':
766
dependencies:
767
+
'@babel/code-frame': 7.27.1
768
+
'@babel/generator': 7.28.5
769
+
'@babel/helper-compilation-targets': 7.27.2
770
+
'@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
771
+
'@babel/helpers': 7.28.4
772
+
'@babel/parser': 7.28.5
773
+
'@babel/template': 7.27.2
774
+
'@babel/traverse': 7.28.5
775
+
'@babel/types': 7.28.5
776
+
'@jridgewell/remapping': 2.3.5
777
convert-source-map: 2.0.0
778
+
debug: 4.4.3
779
gensync: 1.0.0-beta.2
780
json5: 2.2.3
781
semver: 6.3.1
782
transitivePeerDependencies:
783
- supports-color
784
785
+
'@babel/generator@7.28.5':
786
dependencies:
787
+
'@babel/parser': 7.28.5
788
+
'@babel/types': 7.28.5
789
+
'@jridgewell/gen-mapping': 0.3.13
790
+
'@jridgewell/trace-mapping': 0.3.31
791
+
jsesc: 3.1.0
792
793
+
'@babel/helper-compilation-targets@7.27.2':
794
dependencies:
795
+
'@babel/compat-data': 7.28.5
796
+
'@babel/helper-validator-option': 7.27.1
797
+
browserslist: 4.27.0
798
lru-cache: 5.1.1
799
semver: 6.3.1
800
801
+
'@babel/helper-globals@7.28.0': {}
802
+
803
'@babel/helper-module-imports@7.18.6':
804
dependencies:
805
+
'@babel/types': 7.28.5
806
807
+
'@babel/helper-module-imports@7.27.1':
808
dependencies:
809
+
'@babel/traverse': 7.28.5
810
+
'@babel/types': 7.28.5
811
transitivePeerDependencies:
812
- supports-color
813
814
+
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
815
dependencies:
816
+
'@babel/core': 7.28.5
817
+
'@babel/helper-module-imports': 7.27.1
818
+
'@babel/helper-validator-identifier': 7.28.5
819
+
'@babel/traverse': 7.28.5
820
transitivePeerDependencies:
821
- supports-color
822
823
+
'@babel/helper-plugin-utils@7.27.1': {}
824
825
+
'@babel/helper-string-parser@7.27.1': {}
826
827
+
'@babel/helper-validator-identifier@7.28.5': {}
828
829
+
'@babel/helper-validator-option@7.27.1': {}
830
831
+
'@babel/helpers@7.28.4':
832
dependencies:
833
+
'@babel/template': 7.27.2
834
+
'@babel/types': 7.28.5
835
836
+
'@babel/parser@7.28.5':
837
dependencies:
838
+
'@babel/types': 7.28.5
839
840
+
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
841
dependencies:
842
+
'@babel/core': 7.28.5
843
+
'@babel/helper-plugin-utils': 7.27.1
844
845
+
'@babel/template@7.27.2':
846
dependencies:
847
+
'@babel/code-frame': 7.27.1
848
+
'@babel/parser': 7.28.5
849
+
'@babel/types': 7.28.5
850
851
+
'@babel/traverse@7.28.5':
852
dependencies:
853
+
'@babel/code-frame': 7.27.1
854
+
'@babel/generator': 7.28.5
855
+
'@babel/helper-globals': 7.28.0
856
+
'@babel/parser': 7.28.5
857
+
'@babel/template': 7.27.2
858
+
'@babel/types': 7.28.5
859
+
debug: 4.4.3
860
transitivePeerDependencies:
861
- supports-color
862
863
+
'@babel/types@7.28.5':
864
dependencies:
865
+
'@babel/helper-string-parser': 7.27.1
866
+
'@babel/helper-validator-identifier': 7.28.5
867
868
+
'@esbuild/aix-ppc64@0.25.12':
869
optional: true
870
871
+
'@esbuild/android-arm64@0.25.12':
872
optional: true
873
874
+
'@esbuild/android-arm@0.25.12':
875
optional: true
876
877
+
'@esbuild/android-x64@0.25.12':
878
optional: true
879
880
+
'@esbuild/darwin-arm64@0.25.12':
881
optional: true
882
883
+
'@esbuild/darwin-x64@0.25.12':
884
optional: true
885
886
+
'@esbuild/freebsd-arm64@0.25.12':
887
optional: true
888
889
+
'@esbuild/freebsd-x64@0.25.12':
890
optional: true
891
892
+
'@esbuild/linux-arm64@0.25.12':
893
optional: true
894
895
+
'@esbuild/linux-arm@0.25.12':
896
optional: true
897
898
+
'@esbuild/linux-ia32@0.25.12':
899
optional: true
900
901
+
'@esbuild/linux-loong64@0.25.12':
902
optional: true
903
904
+
'@esbuild/linux-mips64el@0.25.12':
905
optional: true
906
907
+
'@esbuild/linux-ppc64@0.25.12':
908
optional: true
909
910
+
'@esbuild/linux-riscv64@0.25.12':
911
optional: true
912
913
+
'@esbuild/linux-s390x@0.25.12':
914
optional: true
915
916
+
'@esbuild/linux-x64@0.25.12':
917
optional: true
918
919
+
'@esbuild/netbsd-arm64@0.25.12':
920
optional: true
921
922
+
'@esbuild/netbsd-x64@0.25.12':
923
optional: true
924
925
+
'@esbuild/openbsd-arm64@0.25.12':
926
optional: true
927
928
+
'@esbuild/openbsd-x64@0.25.12':
929
optional: true
930
931
+
'@esbuild/openharmony-arm64@0.25.12':
932
+
optional: true
933
+
934
+
'@esbuild/sunos-x64@0.25.12':
935
+
optional: true
936
+
937
+
'@esbuild/win32-arm64@0.25.12':
938
+
optional: true
939
+
940
+
'@esbuild/win32-ia32@0.25.12':
941
optional: true
942
943
+
'@esbuild/win32-x64@0.25.12':
944
optional: true
945
946
+
'@jridgewell/gen-mapping@0.3.13':
947
dependencies:
948
+
'@jridgewell/sourcemap-codec': 1.5.5
949
+
'@jridgewell/trace-mapping': 0.3.31
950
951
+
'@jridgewell/remapping@2.3.5':
952
dependencies:
953
+
'@jridgewell/gen-mapping': 0.3.13
954
+
'@jridgewell/trace-mapping': 0.3.31
955
956
'@jridgewell/resolve-uri@3.1.2': {}
957
958
+
'@jridgewell/sourcemap-codec@1.5.5': {}
959
960
+
'@jridgewell/trace-mapping@0.3.31':
961
dependencies:
962
'@jridgewell/resolve-uri': 3.1.2
963
+
'@jridgewell/sourcemap-codec': 1.5.5
964
965
+
'@rollup/rollup-android-arm-eabi@4.52.5':
966
optional: true
967
968
+
'@rollup/rollup-android-arm64@4.52.5':
969
optional: true
970
971
+
'@rollup/rollup-darwin-arm64@4.52.5':
972
optional: true
973
974
+
'@rollup/rollup-darwin-x64@4.52.5':
975
optional: true
976
977
+
'@rollup/rollup-freebsd-arm64@4.52.5':
978
optional: true
979
980
+
'@rollup/rollup-freebsd-x64@4.52.5':
981
optional: true
982
983
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
984
optional: true
985
986
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
987
optional: true
988
989
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
990
optional: true
991
992
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
993
optional: true
994
995
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
996
optional: true
997
998
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
999
optional: true
1000
1001
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
1002
optional: true
1003
1004
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
1005
optional: true
1006
1007
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
1008
optional: true
1009
1010
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
1011
optional: true
1012
1013
+
'@rollup/rollup-linux-x64-musl@4.52.5':
1014
+
optional: true
1015
1016
+
'@rollup/rollup-openharmony-arm64@4.52.5':
1017
+
optional: true
1018
1019
+
'@rollup/rollup-win32-arm64-msvc@4.52.5':
1020
+
optional: true
1021
1022
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
1023
optional: true
1024
1025
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
1026
optional: true
1027
1028
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
1029
optional: true
1030
1031
+
'@tauri-apps/api@2.9.0': {}
1032
+
1033
+
'@tauri-apps/cli-darwin-arm64@2.9.3':
1034
optional: true
1035
1036
+
'@tauri-apps/cli-darwin-x64@2.9.3':
1037
+
optional: true
1038
+
1039
+
'@tauri-apps/cli-linux-arm-gnueabihf@2.9.3':
1040
+
optional: true
1041
+
1042
+
'@tauri-apps/cli-linux-arm64-gnu@2.9.3':
1043
+
optional: true
1044
+
1045
+
'@tauri-apps/cli-linux-arm64-musl@2.9.3':
1046
+
optional: true
1047
+
1048
+
'@tauri-apps/cli-linux-riscv64-gnu@2.9.3':
1049
optional: true
1050
1051
+
'@tauri-apps/cli-linux-x64-gnu@2.9.3':
1052
optional: true
1053
1054
+
'@tauri-apps/cli-linux-x64-musl@2.9.3':
1055
optional: true
1056
1057
+
'@tauri-apps/cli-win32-arm64-msvc@2.9.3':
1058
optional: true
1059
1060
+
'@tauri-apps/cli-win32-ia32-msvc@2.9.3':
1061
optional: true
1062
1063
+
'@tauri-apps/cli-win32-x64-msvc@2.9.3':
1064
optional: true
1065
1066
+
'@tauri-apps/cli@2.9.3':
1067
optionalDependencies:
1068
+
'@tauri-apps/cli-darwin-arm64': 2.9.3
1069
+
'@tauri-apps/cli-darwin-x64': 2.9.3
1070
+
'@tauri-apps/cli-linux-arm-gnueabihf': 2.9.3
1071
+
'@tauri-apps/cli-linux-arm64-gnu': 2.9.3
1072
+
'@tauri-apps/cli-linux-arm64-musl': 2.9.3
1073
+
'@tauri-apps/cli-linux-riscv64-gnu': 2.9.3
1074
+
'@tauri-apps/cli-linux-x64-gnu': 2.9.3
1075
+
'@tauri-apps/cli-linux-x64-musl': 2.9.3
1076
+
'@tauri-apps/cli-win32-arm64-msvc': 2.9.3
1077
+
'@tauri-apps/cli-win32-ia32-msvc': 2.9.3
1078
+
'@tauri-apps/cli-win32-x64-msvc': 2.9.3
1079
+
1080
+
'@tauri-apps/plugin-deep-link@2.4.5':
1081
+
dependencies:
1082
+
'@tauri-apps/api': 2.9.0
1083
1084
+
'@tauri-apps/plugin-http@2.5.4':
1085
dependencies:
1086
+
'@tauri-apps/api': 2.9.0
1087
1088
+
'@tauri-apps/plugin-process@2.3.1':
1089
dependencies:
1090
+
'@tauri-apps/api': 2.9.0
1091
1092
+
'@tauri-apps/plugin-shell@2.3.3':
1093
dependencies:
1094
+
'@tauri-apps/api': 2.9.0
1095
1096
+
'@types/animejs@3.1.13': {}
1097
1098
'@types/babel__core@7.20.5':
1099
dependencies:
1100
+
'@babel/parser': 7.28.5
1101
+
'@babel/types': 7.28.5
1102
+
'@types/babel__generator': 7.27.0
1103
'@types/babel__template': 7.4.4
1104
+
'@types/babel__traverse': 7.28.0
1105
1106
+
'@types/babel__generator@7.27.0':
1107
dependencies:
1108
+
'@babel/types': 7.28.5
1109
1110
'@types/babel__template@7.4.4':
1111
dependencies:
1112
+
'@babel/parser': 7.28.5
1113
+
'@babel/types': 7.28.5
1114
1115
+
'@types/babel__traverse@7.28.0':
1116
dependencies:
1117
+
'@babel/types': 7.28.5
1118
1119
+
'@types/estree@1.0.8': {}
1120
1121
+
animejs@4.2.2: {}
1122
1123
+
babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5):
1124
dependencies:
1125
+
'@babel/core': 7.28.5
1126
'@babel/helper-module-imports': 7.18.6
1127
+
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
1128
+
'@babel/types': 7.28.5
1129
html-entities: 2.3.3
1130
+
parse5: 7.3.0
1131
1132
+
babel-preset-solid@1.9.10(@babel/core@7.28.5)(solid-js@1.9.10):
1133
dependencies:
1134
+
'@babel/core': 7.28.5
1135
+
babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.28.5)
1136
+
optionalDependencies:
1137
+
solid-js: 1.9.10
1138
1139
+
baseline-browser-mapping@2.8.25: {}
1140
1141
+
browserslist@4.27.0:
1142
dependencies:
1143
+
baseline-browser-mapping: 2.8.25
1144
+
caniuse-lite: 1.0.30001754
1145
+
electron-to-chromium: 1.5.248
1146
+
node-releases: 2.0.27
1147
+
update-browserslist-db: 1.1.4(browserslist@4.27.0)
1148
1149
+
caniuse-lite@1.0.30001754: {}
1150
1151
convert-source-map@2.0.0: {}
1152
1153
csstype@3.1.3: {}
1154
1155
+
debug@4.4.3:
1156
dependencies:
1157
ms: 2.1.3
1158
1159
+
electron-to-chromium@1.5.248: {}
1160
1161
+
entities@6.0.1: {}
1162
1163
+
esbuild@0.25.12:
1164
optionalDependencies:
1165
+
'@esbuild/aix-ppc64': 0.25.12
1166
+
'@esbuild/android-arm': 0.25.12
1167
+
'@esbuild/android-arm64': 0.25.12
1168
+
'@esbuild/android-x64': 0.25.12
1169
+
'@esbuild/darwin-arm64': 0.25.12
1170
+
'@esbuild/darwin-x64': 0.25.12
1171
+
'@esbuild/freebsd-arm64': 0.25.12
1172
+
'@esbuild/freebsd-x64': 0.25.12
1173
+
'@esbuild/linux-arm': 0.25.12
1174
+
'@esbuild/linux-arm64': 0.25.12
1175
+
'@esbuild/linux-ia32': 0.25.12
1176
+
'@esbuild/linux-loong64': 0.25.12
1177
+
'@esbuild/linux-mips64el': 0.25.12
1178
+
'@esbuild/linux-ppc64': 0.25.12
1179
+
'@esbuild/linux-riscv64': 0.25.12
1180
+
'@esbuild/linux-s390x': 0.25.12
1181
+
'@esbuild/linux-x64': 0.25.12
1182
+
'@esbuild/netbsd-arm64': 0.25.12
1183
+
'@esbuild/netbsd-x64': 0.25.12
1184
+
'@esbuild/openbsd-arm64': 0.25.12
1185
+
'@esbuild/openbsd-x64': 0.25.12
1186
+
'@esbuild/openharmony-arm64': 0.25.12
1187
+
'@esbuild/sunos-x64': 0.25.12
1188
+
'@esbuild/win32-arm64': 0.25.12
1189
+
'@esbuild/win32-ia32': 0.25.12
1190
+
'@esbuild/win32-x64': 0.25.12
1191
1192
escalade@3.2.0: {}
1193
1194
+
fdir@6.5.0(picomatch@4.0.3):
1195
+
optionalDependencies:
1196
+
picomatch: 4.0.3
1197
1198
fsevents@2.3.3:
1199
optional: true
1200
1201
gensync@1.0.0-beta.2: {}
1202
1203
html-entities@2.3.3: {}
1204
1205
is-what@4.1.16: {}
1206
1207
js-tokens@4.0.0: {}
1208
1209
+
jsesc@3.1.0: {}
1210
1211
json5@2.2.3: {}
1212
···
1220
1221
ms@2.1.3: {}
1222
1223
+
nanoid@3.3.11: {}
1224
1225
+
node-releases@2.0.27: {}
1226
1227
+
parse5@7.3.0:
1228
dependencies:
1229
+
entities: 6.0.1
1230
1231
+
picocolors@1.1.1: {}
1232
1233
+
picomatch@4.0.3: {}
1234
1235
+
postcss@8.5.6:
1236
dependencies:
1237
+
nanoid: 3.3.11
1238
+
picocolors: 1.1.1
1239
+
source-map-js: 1.2.1
1240
1241
+
rollup@4.52.5:
1242
dependencies:
1243
+
'@types/estree': 1.0.8
1244
optionalDependencies:
1245
+
'@rollup/rollup-android-arm-eabi': 4.52.5
1246
+
'@rollup/rollup-android-arm64': 4.52.5
1247
+
'@rollup/rollup-darwin-arm64': 4.52.5
1248
+
'@rollup/rollup-darwin-x64': 4.52.5
1249
+
'@rollup/rollup-freebsd-arm64': 4.52.5
1250
+
'@rollup/rollup-freebsd-x64': 4.52.5
1251
+
'@rollup/rollup-linux-arm-gnueabihf': 4.52.5
1252
+
'@rollup/rollup-linux-arm-musleabihf': 4.52.5
1253
+
'@rollup/rollup-linux-arm64-gnu': 4.52.5
1254
+
'@rollup/rollup-linux-arm64-musl': 4.52.5
1255
+
'@rollup/rollup-linux-loong64-gnu': 4.52.5
1256
+
'@rollup/rollup-linux-ppc64-gnu': 4.52.5
1257
+
'@rollup/rollup-linux-riscv64-gnu': 4.52.5
1258
+
'@rollup/rollup-linux-riscv64-musl': 4.52.5
1259
+
'@rollup/rollup-linux-s390x-gnu': 4.52.5
1260
+
'@rollup/rollup-linux-x64-gnu': 4.52.5
1261
+
'@rollup/rollup-linux-x64-musl': 4.52.5
1262
+
'@rollup/rollup-openharmony-arm64': 4.52.5
1263
+
'@rollup/rollup-win32-arm64-msvc': 4.52.5
1264
+
'@rollup/rollup-win32-ia32-msvc': 4.52.5
1265
+
'@rollup/rollup-win32-x64-gnu': 4.52.5
1266
+
'@rollup/rollup-win32-x64-msvc': 4.52.5
1267
fsevents: 2.3.3
1268
1269
semver@6.3.1: {}
1270
1271
+
seroval-plugins@1.3.3(seroval@1.3.2):
1272
dependencies:
1273
+
seroval: 1.3.2
1274
1275
+
seroval@1.3.2: {}
1276
1277
+
solid-js@1.9.10:
1278
dependencies:
1279
csstype: 3.1.3
1280
+
seroval: 1.3.2
1281
+
seroval-plugins: 1.3.3(seroval@1.3.2)
1282
1283
+
solid-refresh@0.6.3(solid-js@1.9.10):
1284
dependencies:
1285
+
'@babel/generator': 7.28.5
1286
+
'@babel/helper-module-imports': 7.27.1
1287
+
'@babel/types': 7.28.5
1288
+
solid-js: 1.9.10
1289
transitivePeerDependencies:
1290
- supports-color
1291
1292
source-map-js@1.2.1: {}
1293
1294
+
tinyglobby@0.2.15:
1295
dependencies:
1296
+
fdir: 6.5.0(picomatch@4.0.3)
1297
+
picomatch: 4.0.3
1298
1299
+
typescript@5.9.3: {}
1300
1301
+
update-browserslist-db@1.1.4(browserslist@4.27.0):
1302
dependencies:
1303
+
browserslist: 4.27.0
1304
escalade: 3.2.0
1305
+
picocolors: 1.1.1
1306
1307
+
vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@7.2.2):
1308
dependencies:
1309
+
'@babel/core': 7.28.5
1310
'@types/babel__core': 7.20.5
1311
+
babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10)
1312
merge-anything: 5.1.7
1313
+
solid-js: 1.9.10
1314
+
solid-refresh: 0.6.3(solid-js@1.9.10)
1315
+
vite: 7.2.2
1316
+
vitefu: 1.1.1(vite@7.2.2)
1317
transitivePeerDependencies:
1318
- supports-color
1319
1320
+
vite@7.2.2:
1321
dependencies:
1322
+
esbuild: 0.25.12
1323
+
fdir: 6.5.0(picomatch@4.0.3)
1324
+
picomatch: 4.0.3
1325
+
postcss: 8.5.6
1326
+
rollup: 4.52.5
1327
+
tinyglobby: 0.2.15
1328
optionalDependencies:
1329
fsevents: 2.3.3
1330
1331
+
vitefu@1.1.1(vite@7.2.2):
1332
+
optionalDependencies:
1333
+
vite: 7.2.2
1334
1335
yallist@3.1.1: {}
+1
-1
public/icon/angle-down-solid.svg
+1
-1
public/icon/angle-down-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/></svg>
+1
-1
public/icon/angle-up-solid.svg
+1
-1
public/icon/angle-up-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"/></svg>
+1
-1
public/icon/arrow-left-solid.svg
+1
-1
public/icon/arrow-left-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>
+1
-1
public/icon/arrow-right-solid.svg
+1
-1
public/icon/arrow-right-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/></svg>
+1
-1
public/icon/arrows-rotate-solid.svg
+1
-1
public/icon/arrows-rotate-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V432c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V432c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"/></svg>
+1
-1
public/icon/caret-down-solid.svg
+1
-1
public/icon/caret-down-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg>
+1
-1
public/icon/check-solid.svg
+1
-1
public/icon/check-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>
+1
-1
public/icon/clock-regular.svg
+1
-1
public/icon/clock-regular.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z"/></svg>
+1
-1
public/icon/copy-solid.svg
+1
-1
public/icon/copy-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"/></svg>
+1
public/icon/download-solid-full.svg
+1
public/icon/download-solid-full.svg
···
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M352 96C352 78.3 337.7 64 320 64C302.3 64 288 78.3 288 96L288 306.7L246.6 265.3C234.1 252.8 213.8 252.8 201.3 265.3C188.8 277.8 188.8 298.1 201.3 310.6L297.3 406.6C309.8 419.1 330.1 419.1 342.6 406.6L438.6 310.6C451.1 298.1 451.1 277.8 438.6 265.3C426.1 252.8 405.8 252.8 393.3 265.3L352 306.7L352 96zM160 384C124.7 384 96 412.7 96 448L96 480C96 515.3 124.7 544 160 544L480 544C515.3 544 544 515.3 544 480L544 448C544 412.7 515.3 384 480 384L433.1 384L376.5 440.6C345.3 471.8 294.6 471.8 263.4 440.6L206.9 384L160 384zM464 440C477.3 440 488 450.7 488 464C488 477.3 477.3 488 464 488C450.7 488 440 477.3 440 464C440 450.7 450.7 440 464 440z"/></svg>
+1
public/icon/gear-solid-full.svg
+1
public/icon/gear-solid-full.svg
···
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M259.1 73.5C262.1 58.7 275.2 48 290.4 48L350.2 48C365.4 48 378.5 58.7 381.5 73.5L396 143.5C410.1 149.5 423.3 157.2 435.3 166.3L503.1 143.8C517.5 139 533.3 145 540.9 158.2L570.8 210C578.4 223.2 575.7 239.8 564.3 249.9L511 297.3C511.9 304.7 512.3 312.3 512.3 320C512.3 327.7 511.8 335.3 511 342.7L564.4 390.2C575.8 400.3 578.4 417 570.9 430.1L541 481.9C533.4 495 517.6 501.1 503.2 496.3L435.4 473.8C423.3 482.9 410.1 490.5 396.1 496.6L381.7 566.5C378.6 581.4 365.5 592 350.4 592L290.6 592C275.4 592 262.3 581.3 259.3 566.5L244.9 496.6C230.8 490.6 217.7 482.9 205.6 473.8L137.5 496.3C123.1 501.1 107.3 495.1 99.7 481.9L69.8 430.1C62.2 416.9 64.9 400.3 76.3 390.2L129.7 342.7C128.8 335.3 128.4 327.7 128.4 320C128.4 312.3 128.9 304.7 129.7 297.3L76.3 249.8C64.9 239.7 62.3 223 69.8 209.9L99.7 158.1C107.3 144.9 123.1 138.9 137.5 143.7L205.3 166.2C217.4 157.1 230.6 149.5 244.6 143.4L259.1 73.5zM320.3 400C364.5 399.8 400.2 363.9 400 319.7C399.8 275.5 363.9 239.8 319.7 240C275.5 240.2 239.8 276.1 240 320.3C240.2 364.5 276.1 400.2 320.3 400z"/></svg>
+1
public/icon/layer-group-solid-full.svg
+1
public/icon/layer-group-solid-full.svg
···
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M296.5 69.2C311.4 62.3 328.6 62.3 343.5 69.2L562.1 170.2C570.6 174.1 576 182.6 576 192C576 201.4 570.6 209.9 562.1 213.8L343.5 314.8C328.6 321.7 311.4 321.7 296.5 314.8L77.9 213.8C69.4 209.8 64 201.3 64 192C64 182.7 69.4 174.1 77.9 170.2L296.5 69.2zM112.1 282.4L276.4 358.3C304.1 371.1 336 371.1 363.7 358.3L528 282.4L562.1 298.2C570.6 302.1 576 310.6 576 320C576 329.4 570.6 337.9 562.1 341.8L343.5 442.8C328.6 449.7 311.4 449.7 296.5 442.8L77.9 341.8C69.4 337.8 64 329.3 64 320C64 310.7 69.4 302.1 77.9 298.2L112 282.4zM77.9 426.2L112 410.4L276.3 486.3C304 499.1 335.9 499.1 363.6 486.3L527.9 410.4L562 426.2C570.5 430.1 575.9 438.6 575.9 448C575.9 457.4 570.5 465.9 562 469.8L343.4 570.8C328.5 577.7 311.3 577.7 296.4 570.8L77.9 469.8C69.4 465.8 64 457.3 64 448C64 438.7 69.4 430.1 77.9 426.2z"/></svg>
+1
-1
public/icon/minus-solid.svg
+1
-1
public/icon/minus-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
+1
-1
public/icon/sliders-solid.svg
+1
-1
public/icon/sliders-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z"/></svg>
+1
-1
public/icon/square-regular.svg
+1
-1
public/icon/square-regular.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
+1
-1
public/icon/trash-solid.svg
+1
-1
public/icon/trash-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>
+1
public/icon/user-solid.svg
+1
public/icon/user-solid.svg
···
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path fill="#fff" d="M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z"/></svg>
+1
-1
public/icon/x-solid.svg
+1
-1
public/icon/x-solid.svg
···
1
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"/></svg>
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="#fff" d="M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"/></svg>
+29
-205
src/Components/App.tsx
+29
-205
src/Components/App.tsx
···
1
-
import { createSignal, createEffect, Switch, Match, onMount } from "solid-js";
2
-
import { listen } from '@tauri-apps/api/event';
3
-
import { fetch } from "@tauri-apps/plugin-http"
4
-
import anime from "animejs";
5
-
import { invoke } from '@tauri-apps/api/core';
6
7
-
import NavBar from "./NavBar";
8
import PhotoList from "./PhotoList";
9
import PhotoViewer from "./PhotoViewer";
10
import SettingsMenu from "./SettingsMenu";
11
-
12
-
// TODO: Clean up frontend files, split up into smaller files PLEASE
13
-
14
-
function App() {
15
-
invoke('get_config_value_string', { key: 'start-in-bg' })
16
-
.then(str => {
17
-
if(str === "false")invoke('close_splashscreen')
18
-
})
19
-
20
-
let [ loggedIn, setLoggedIn ] = createSignal({ loggedIn: false, username: '', avatar: '', id: '', serverVersion: '0.0' });
21
-
let [ storageInfo, setStorageInfo ] = createSignal({ storage: 0, used: 0, sync: false });
22
-
let [ loadingType, setLoadingType ] = createSignal('load');
23
-
let [ currentPhotoView, setCurrentPhotoView ] = createSignal<any>(null);
24
-
let [ photoNavChoice, setPhotoNavChoice ] = createSignal<string>('');
25
-
26
-
let [ confirmationBoxText, setConfirmationBoxText ] = createSignal<string>('');
27
-
let confirmationBoxCallback = () => {}
28
-
29
-
let [ photoCount, setPhotoCount ] = createSignal(0);
30
-
let [ photoSize, setPhotoSize ] = createSignal(0);
31
-
32
-
let [ requestPhotoReload, setRequestPhotoReload ] = createSignal(false);
33
-
34
-
let [ isPhotosSyncing, setIsPhotosSyncing ] = createSignal(false);
35
-
36
-
let setConfirmationBox = ( text: string, cb: () => void ) => {
37
-
setConfirmationBoxText(text);
38
-
confirmationBoxCallback = cb;
39
-
}
40
-
41
-
invoke('get_config_value_string', { key: 'token' })
42
-
.then(token => {
43
-
if(token){
44
-
fetch('https://photos.phazed.xyz/api/v1/account?token='+token)
45
-
.then(data => data.json())
46
-
.then(data => {
47
-
if(!data.ok){
48
-
return console.error(data);
49
-
}
50
-
51
-
console.log(data.data);
52
-
setLoggedIn({ loggedIn: true, username: data.user.username, avatar: data.user.avatar, id: data.user._id, serverVersion: data.user.serverVersion });
53
-
setStorageInfo({ storage: data.user.storage, used: data.user.used, sync: data.user.settings.enableSync });
54
-
55
-
if(!isPhotosSyncing() && data.user.settings.enableSync){
56
-
setIsPhotosSyncing(true);
57
-
invoke('sync_photos', { token: token });
58
-
}
59
-
})
60
-
.catch(e => {
61
-
console.error(e);
62
-
})
63
-
}
64
-
})
65
-
66
-
setTimeout(() => {
67
-
setLoadingType('none');
68
-
}, 500);
69
-
70
-
let loadingBlackout: HTMLElement;
71
-
let loadingShown = false;
72
-
73
-
let confirmationBox: HTMLElement;
74
-
75
-
createEffect(() => {
76
-
if(confirmationBoxText() !== ''){
77
-
confirmationBox.style.display = 'block';
78
-
79
-
setTimeout(() => {
80
-
confirmationBox.style.opacity = '1';
81
-
}, 1);
82
-
} else{
83
-
confirmationBox.style.opacity = '0';
84
-
85
-
setTimeout(() => {
86
-
confirmationBox.style.display = 'none';
87
-
}, 250);
88
-
}
89
-
})
90
-
91
-
createEffect(() => {
92
-
let type = loadingType();
93
-
94
-
if(loadingShown != (type != 'none')){
95
-
loadingShown = (type != 'none');
96
-
97
-
if(loadingShown){
98
-
loadingBlackout.style.display = 'flex';
99
-
anime({
100
-
targets: loadingBlackout,
101
-
opacity: 1,
102
-
easing: 'easeInOutQuad',
103
-
duration: 250
104
-
})
105
-
} else{
106
-
anime({
107
-
targets: loadingBlackout,
108
-
opacity: 0,
109
-
easing: 'easeInOutQuad',
110
-
duration: 250,
111
-
complete: () => {
112
-
loadingBlackout.style.display = 'none';
113
-
}
114
-
})
115
-
}
116
-
}
117
-
})
118
-
119
-
listen('auth-callback', ( event: any ) => {
120
-
let token = event.payload;
121
-
122
-
fetch('https://photos.phazed.xyz/api/v1/account?token='+token)
123
-
.then(data => data.json())
124
-
.then(data => {
125
-
if(!data.ok){
126
-
console.error(data);
127
-
return setLoadingType('none');
128
-
}
129
-
130
-
console.log(data);
131
-
invoke('set_config_value_string', { key: 'token', value: token });
132
-
133
-
setLoadingType('none');
134
-
setLoggedIn({ loggedIn: true, username: data.user.username, avatar: data.user.avatar, id: data.user._id, serverVersion: data.user.serverVersion });
135
-
setStorageInfo({ storage: data.user.storage, used: data.user.used, sync: data.user.settings.enableSync });
136
137
-
if(!isPhotosSyncing() && data.user.settings.enableSync){
138
-
setIsPhotosSyncing(true);
139
-
invoke('sync_photos', { token: token });
140
-
}
141
-
})
142
-
.catch(e => {
143
-
setLoadingType('none');
144
-
console.error(e);
145
-
})
146
-
})
147
-
148
-
listen('auth-denied', () => {
149
-
setLoadingType('none');
150
-
console.warn('Authetication Denied');
151
-
})
152
153
onMount(() => {
154
-
anime.set('.settings',
155
{
156
display: 'none',
157
opacity: 0,
158
translateX: '500px'
159
})
160
})
161
162
return (
163
<div class="container">
164
-
<NavBar
165
-
setLoadingType={setLoadingType}
166
-
loggedIn={loggedIn}
167
-
setStorageInfo={setStorageInfo}
168
-
setIsPhotosSyncing={setIsPhotosSyncing} />
169
170
-
<PhotoList
171
-
storageInfo={storageInfo}
172
-
isPhotosSyncing={isPhotosSyncing}
173
-
setIsPhotosSyncing={setIsPhotosSyncing}
174
-
setCurrentPhotoView={setCurrentPhotoView}
175
-
currentPhotoView={currentPhotoView}
176
-
photoNavChoice={photoNavChoice}
177
-
setPhotoNavChoice={setPhotoNavChoice}
178
-
setConfirmationBox={setConfirmationBox}
179
-
loggedIn={loggedIn}
180
-
setPhotoCount={setPhotoCount}
181
-
setPhotoSize={setPhotoSize}
182
-
requestPhotoReload={requestPhotoReload}
183
-
setRequestPhotoReload={setRequestPhotoReload} />
184
-
185
-
<PhotoViewer
186
-
setPhotoNavChoice={setPhotoNavChoice}
187
-
currentPhotoView={currentPhotoView}
188
-
setCurrentPhotoView={setCurrentPhotoView}
189
-
storageInfo={storageInfo}
190
-
loggedIn={loggedIn}
191
-
setConfirmationBox={setConfirmationBox} />
192
-
193
-
<SettingsMenu
194
-
setLoggedIn={setLoggedIn}
195
-
setLoadingType={setLoadingType}
196
-
photoCount={photoCount}
197
-
photoSize={photoSize}
198
-
setRequestPhotoReload={setRequestPhotoReload}
199
-
loggedIn={loggedIn}
200
-
storageInfo={storageInfo}
201
-
setStorageInfo={setStorageInfo}
202
-
setConfirmationBox={setConfirmationBox} />
203
204
<div class="copy-notif">Image Copied!</div>
205
-
206
-
<div class="loading" ref={( el ) => loadingBlackout = el}>
207
-
<Switch>
208
-
<Match when={loadingType() === 'auth'}>
209
-
<p>Waiting for authentication in browser.</p>
210
-
</Match>
211
-
<Match when={loadingType() === 'load'}>
212
-
<p>Loading App...</p>
213
-
</Match>
214
-
</Switch>
215
-
</div>
216
-
217
-
<div class="confirmation-box" ref={( el ) => confirmationBox = el}>
218
-
<div class="confirmation-box-container">
219
-
{ confirmationBoxText() }<br /><br />
220
-
221
-
<div class="button-danger" onClick={() => { confirmationBoxCallback(); setConfirmationBoxText('') }}>Confirm</div>
222
-
<div class="button" onClick={() => setConfirmationBoxText('') }>Deny</div>
223
-
</div>
224
-
</div>
225
</div>
226
);
227
}
···
1
+
import { createSignal, onMount } from "solid-js";
2
3
import PhotoList from "./PhotoList";
4
import PhotoViewer from "./PhotoViewer";
5
import SettingsMenu from "./SettingsMenu";
6
+
import { animate, utils } from "animejs";
7
+
import { listen } from "@tauri-apps/api/event";
8
9
+
let App = () => {
10
+
let [ errorText, setErrorText ] = createSignal('');
11
12
onMount(() => {
13
+
utils.set('.settings',
14
{
15
display: 'none',
16
opacity: 0,
17
translateX: '500px'
18
})
19
+
20
+
listen<string>('vrcpm-error', ( ev ) => {
21
+
setErrorText(ev.payload);
22
+
23
+
utils.set('.error-notif', { translateX: '-50%', translateY: '-100px' });
24
+
animate('.error-notif', {
25
+
ease: 'outElastic',
26
+
opacity: 1,
27
+
translateY: '0px'
28
+
});
29
+
30
+
setTimeout(() => {
31
+
animate('.error-notif', {
32
+
ease: 'outElastic',
33
+
opacity: 0,
34
+
translateY: '-100px'
35
+
});
36
+
}, 2000);
37
+
});
38
})
39
40
return (
41
<div class="container">
42
+
<PhotoList />
43
+
<PhotoViewer />
44
45
+
<SettingsMenu />
46
47
<div class="copy-notif">Image Copied!</div>
48
+
<div class="error-notif">{ errorText() }</div>
49
</div>
50
);
51
}
+10
-12
src/Components/FilterMenu.tsx
+10
-12
src/Components/FilterMenu.tsx
···
1
-
enum FilterType{
2
-
USER, WORLD
3
-
}
4
5
-
class FilterMenuProps{
6
-
setFilterType!: ( type: FilterType ) => void;
7
-
setFilter!: ( filter: string ) => void;
8
-
}
9
-
10
-
let FilterMenu = ( props: FilterMenuProps ) => {
11
let selectionButtons: HTMLDivElement[] = [];
12
13
let select = ( index: number ) => {
···
17
18
return (
19
<>
20
<div class="filter-type-select">
21
<div class="selected-filter" ref={( el ) => selectionButtons.push(el)} onClick={() => {
22
select(0);
23
-
props.setFilterType(FilterType.USER);
24
}}>User</div>
25
<div ref={( el ) => selectionButtons.push(el)} onClick={() => {
26
select(1);
27
-
props.setFilterType(FilterType.WORLD);
28
}}>World</div>
29
</div>
30
31
-
<input class="filter-search" type="text" onInput={( el ) => props.setFilter(el.target.value)} placeholder="Enter Search Term..."></input>
32
</>
33
)
34
}
···
1
+
import { Show } from "solid-js";
2
+
import { FilterType } from "./Structs/FilterType";
3
4
+
let FilterMenu = () => {
5
let selectionButtons: HTMLDivElement[] = [];
6
7
let select = ( index: number ) => {
···
11
12
return (
13
<>
14
+
<Show when={!window.PhotoManager.HasBeenIndexed()}>
15
+
<div>Your photos aren't indexed due to the large number, filters may take a while to load.</div>
16
+
<div style={{ height: '8px' }}></div>
17
+
</Show>
18
<div class="filter-type-select">
19
<div class="selected-filter" ref={( el ) => selectionButtons.push(el)} onClick={() => {
20
select(0);
21
+
window.PhotoManager.SetFilterType(FilterType.USER);
22
}}>User</div>
23
<div ref={( el ) => selectionButtons.push(el)} onClick={() => {
24
select(1);
25
+
window.PhotoManager.SetFilterType(FilterType.WORLD);
26
}}>World</div>
27
</div>
28
29
+
<input class="filter-search" type="text" onInput={( el ) => window.PhotoManager.SetFilter(el.target.value)} placeholder="Enter Search Term..."></input>
30
</>
31
)
32
}
+43
src/Components/Managers/ConfirmationBoxManager.tsx
+43
src/Components/Managers/ConfirmationBoxManager.tsx
···
···
1
+
import { createEffect, createSignal, Setter } from "solid-js";
2
+
3
+
export class ConfirmationBoxManager{
4
+
private _confirmationBoxCallback = () => {};
5
+
private _setConfirmationBoxText: Setter<string>
6
+
7
+
constructor(){
8
+
let [ confirmationBoxText, setConfirmationBoxText ] = createSignal('');
9
+
this._setConfirmationBoxText = setConfirmationBoxText;
10
+
11
+
let confirmationBox: HTMLElement;
12
+
13
+
document.body.appendChild(<div class="confirmation-box" ref={( el ) => confirmationBox = el}>
14
+
<div class="confirmation-box-container">
15
+
{ confirmationBoxText() }<br /><br />
16
+
17
+
<div class="button-danger" onClick={() => { this._confirmationBoxCallback(); setConfirmationBoxText('') }}>Confirm</div>
18
+
<div class="button" onClick={() => setConfirmationBoxText('') }>Deny</div>
19
+
</div>
20
+
</div> as HTMLElement);
21
+
22
+
createEffect(() => {
23
+
if(confirmationBoxText() !== ''){
24
+
confirmationBox.style.display = 'block';
25
+
26
+
setTimeout(() => {
27
+
confirmationBox.style.opacity = '1';
28
+
}, 1);
29
+
} else{
30
+
confirmationBox.style.opacity = '0';
31
+
32
+
setTimeout(() => {
33
+
confirmationBox.style.display = 'none';
34
+
}, 250);
35
+
}
36
+
})
37
+
}
38
+
39
+
public SetConfirmationBox( text: string, cb: () => void ){
40
+
this._setConfirmationBoxText(text);
41
+
this._confirmationBoxCallback = cb;
42
+
}
43
+
}
+18
src/Components/Managers/LoadingManager.tsx
+18
src/Components/Managers/LoadingManager.tsx
···
···
1
+
import { createSignal, Setter, Show } from "solid-js";
2
+
3
+
export class LoadingManager{
4
+
public SetLoading: Setter<string>;
5
+
6
+
constructor(){
7
+
let [ loading, setLoading ] = createSignal("");
8
+
this.SetLoading = setLoading;
9
+
10
+
document.body.appendChild(
11
+
<div><Show when={loading() !== ""}>
12
+
<div class="loading">
13
+
<p>{ loading() }</p>
14
+
</div>
15
+
</Show></div> as HTMLElement
16
+
);
17
+
}
18
+
}
+178
src/Components/Managers/PhotoListRenderingManager.tsx
+178
src/Components/Managers/PhotoListRenderingManager.tsx
···
···
1
+
import { PhotoListPhoto } from "../Structs/PhotoListElements/PhotoListPhoto";
2
+
import { PhotoListText } from "../Structs/PhotoListElements/PhotoListText";
3
+
import { PhotoListElementType } from "../Structs/PhotoListElementType";
4
+
import { PhotoListRow } from "../Structs/PhotoListRow";
5
+
6
+
const MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
7
+
8
+
let multilayerIcon = new Image();
9
+
multilayerIcon.src = '/icon/layer-group-solid-full.svg';
10
+
11
+
export class PhotoListRenderingManager{
12
+
private _layout: PhotoListRow[] = [];
13
+
private _canvas!: HTMLCanvasElement;
14
+
15
+
private _isLoading = false;
16
+
17
+
constructor(){}
18
+
19
+
public SetCanvas( canvas: HTMLCanvasElement ){
20
+
this._canvas = canvas;
21
+
}
22
+
23
+
public ComputeLayout(){
24
+
this._layout = [];
25
+
26
+
let lastDateString = null;
27
+
let row = new PhotoListRow();
28
+
row.Height = 0;
29
+
30
+
for (let i = 0; i < window.PhotoManager.FilteredPhotos.length; i++) {
31
+
let photo = window.PhotoManager.FilteredPhotos[i];
32
+
33
+
// If date string has changed since the last photo, we should label the correct date above it
34
+
if(lastDateString !== photo.dateString){
35
+
this._layout.push(row);
36
+
row = new PhotoListRow();
37
+
38
+
row.Height = 50;
39
+
40
+
let dateParts = photo.dateString.split('-');
41
+
lastDateString = photo.dateString;
42
+
43
+
row.Elements = [ new PhotoListText(dateParts[2] + ' ' + MONTHS[parseInt(dateParts[1]) - 1] + ' ' + dateParts[0]) ];
44
+
45
+
this._layout.push(row);
46
+
row = new PhotoListRow();
47
+
}
48
+
49
+
// Check if the current row width plus another photo is too big to fit, push this row to the
50
+
// layout and add the photo to the next row instead
51
+
if(row.Width + photo.scaledWidth! + 10 > this._canvas.width - 100){
52
+
this._layout.push(row);
53
+
row = new PhotoListRow();
54
+
}
55
+
56
+
// We should now add this photo to the current row
57
+
row.Elements.push(new PhotoListPhoto(photo));
58
+
row.Width += photo.scaledWidth! + 10;
59
+
}
60
+
61
+
this._layout.push(row);
62
+
}
63
+
64
+
public Render( ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, scroll: number ){
65
+
let currentY = 0;
66
+
67
+
// Loop through each row
68
+
for (let i = 0; i < this._layout.length; i++) {
69
+
let row = this._layout[i];
70
+
71
+
// Cull rows that are out of frame
72
+
if(currentY - scroll > canvas.height){
73
+
// Reset frames for out of frame rows so they fade back in
74
+
row.Elements.forEach(el => {
75
+
if(el.Type === PhotoListElementType.PHOTO){
76
+
(el as PhotoListPhoto).Photo.frames = 0;
77
+
(el as PhotoListPhoto).Photo.shown = false;
78
+
}
79
+
});
80
+
81
+
return;
82
+
}
83
+
84
+
if(currentY - scroll < -row.Height){
85
+
// Reset frames for out of frame rows so they fade back in
86
+
row.Elements.forEach(el => {
87
+
if(el.Type === PhotoListElementType.PHOTO){
88
+
(el as PhotoListPhoto).Photo.frames = 0;
89
+
(el as PhotoListPhoto).Photo.shown = false;
90
+
}
91
+
});
92
+
93
+
currentY += row.Height + 10;
94
+
continue;
95
+
}
96
+
97
+
// === DEBUG ===
98
+
// ctx.strokeStyle = '#f00';
99
+
// ctx.strokeRect((canvas.width / 2) - row.Width / 2, currentY - 5 - scroll, row.Width, row.Height + 10);
100
+
101
+
// Loop through all elements in the row
102
+
let rowXPos = 10;
103
+
for (let j = 0; j < row.Elements.length; j++) {
104
+
let el = row.Elements[j];
105
+
106
+
switch(el.Type){
107
+
case PhotoListElementType.TEXT:
108
+
// If it is a text element we should centre the text in the middle of the canvas
109
+
// and then render that text
110
+
111
+
// === DEBUG ===
112
+
// ctx.strokeStyle = '#f00';
113
+
// ctx.strokeRect(0, currentY - scroll, canvas.width, row.Height);
114
+
115
+
ctx.textAlign = 'center';
116
+
ctx.textBaseline = 'middle';
117
+
ctx.globalAlpha = 1;
118
+
ctx.fillStyle = '#fff';
119
+
ctx.font = '30px Rubik';
120
+
121
+
ctx.fillText((el as PhotoListText).Text, canvas.width / 2, currentY - scroll + 25);
122
+
break;
123
+
case PhotoListElementType.PHOTO:
124
+
let photo = (el as PhotoListPhoto).Photo;
125
+
126
+
// === DEBUG ===
127
+
// ctx.strokeStyle = '#f00';
128
+
// ctx.strokeRect((rowXPos - row.Width / 2) + canvas.width / 2, currentY - scroll, photo.scaledWidth!, row.Height);
129
+
130
+
if(photo.error){
131
+
ctx.fillStyle = '#fff';
132
+
ctx.textAlign = 'center';
133
+
ctx.textBaseline = 'middle';
134
+
135
+
photo.x = (rowXPos - row.Width / 2) + canvas.width / 2;
136
+
photo.y = currentY - scroll;
137
+
138
+
ctx.font = '18px Rubik'
139
+
ctx.fillText('Error loading image.', photo.x + photo.scaledWidth! / 2, photo.y + photo.scaledHeight! / 2);
140
+
} else if(!photo.loaded)
141
+
// If the photo is not loaded, start a new task and load it in that task
142
+
setTimeout(() => photo.loadImage(), 1);
143
+
else{
144
+
photo.shown = true;
145
+
146
+
photo.x = (rowXPos - row.Width / 2) + canvas.width / 2;
147
+
photo.y = currentY - scroll;
148
+
149
+
// Photo is already loaded so we should draw it on the application
150
+
ctx.globalAlpha = photo.frames / 100;
151
+
ctx.drawImage(photo.image!, (rowXPos - row.Width / 2) + canvas.width / 2, currentY - scroll, photo.scaledWidth!, photo.scaledHeight!);
152
+
153
+
if(photo.isMultiLayer)
154
+
ctx.drawImage(multilayerIcon, ((rowXPos - row.Width / 2) + canvas.width / 2) + 5, (currentY - scroll) + 5, 20, 20);
155
+
156
+
if(photo.frames < 100)
157
+
photo.frames += 10;
158
+
}
159
+
160
+
rowXPos += photo.scaledWidth! + 10;
161
+
break;
162
+
}
163
+
}
164
+
165
+
currentY += row.Height + 10;
166
+
}
167
+
168
+
if(!this._isLoading){
169
+
console.log('Loading more photos...');
170
+
this._isLoading = true;
171
+
172
+
window.PhotoManager.LoadSomeAndReloadFilters()
173
+
.then(() => {
174
+
this._isLoading = false;
175
+
});
176
+
}
177
+
}
178
+
}
+281
src/Components/Managers/PhotoManager.tsx
+281
src/Components/Managers/PhotoManager.tsx
···
···
1
+
import { listen } from "@tauri-apps/api/event";
2
+
import { Accessor, createSignal } from "solid-js";
3
+
import { Photo } from "../Structs/Photo";
4
+
import { invoke } from "@tauri-apps/api/core";
5
+
import { PhotoMetadata } from "../Structs/PhotoMetadata";
6
+
import { Vars } from "../Structs/Vars";
7
+
import { FilterType } from "../FilterMenu";
8
+
import { MergeSort } from "../Utils/Sort";
9
+
10
+
export class PhotoManager{
11
+
public PhotoCount: Accessor<number>;
12
+
public PhotoSize: Accessor<number>;
13
+
14
+
public Photos: Photo[] = [];
15
+
public FilteredPhotos: Photo[] = [];
16
+
17
+
public HasFirstLoaded = false;
18
+
19
+
private _amountLoaded = 0;
20
+
private _finishedLoadingCallbacks: (() => void)[] = [];
21
+
22
+
private _filterType: FilterType = FilterType.USER;
23
+
private _filter: string = "";
24
+
25
+
private _lastLoaded: number = 0;
26
+
private _onLoadedMeta: any = {};
27
+
private _hasBeenIndexed: Accessor<boolean>;
28
+
29
+
constructor(){
30
+
let [ photoCount, setPhotoCount ] = createSignal(-1);
31
+
let [ photoSize, setPhotoSize ] = createSignal(-1);
32
+
33
+
this.PhotoCount = photoCount;
34
+
this.PhotoSize = photoSize;
35
+
36
+
let setHasBeenIndexed;
37
+
[ this._hasBeenIndexed, setHasBeenIndexed ] = createSignal(false);
38
+
39
+
listen('photos_loaded', ( event: any ) => {
40
+
let photoPaths = event.payload.photos.reverse();
41
+
console.log(photoPaths);
42
+
43
+
setPhotoCount(photoPaths.length);
44
+
setPhotoSize(event.payload.size);
45
+
46
+
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
47
+
setHasBeenIndexed(true);
48
+
49
+
let photoLayers: Photo[] = [];
50
+
51
+
photoPaths.forEach(( path: string, i: number ) => {
52
+
let photo
53
+
54
+
if(path.slice(0, 9) === "legacy://")
55
+
photo = new Photo(path.slice(9), true, i);
56
+
else
57
+
photo = new Photo(path, false, i);
58
+
59
+
if(!photo.legacy && photo.splitPath[4]){
60
+
photoLayers.push(photo);
61
+
} else
62
+
this.Photos.push(photo);
63
+
64
+
if(photoPaths.length <= Vars.MAX_PHOTOS_BULK_LOAD)
65
+
photo.loadMeta();
66
+
})
67
+
68
+
photoLayers.forEach(photo => {
69
+
let type = photo.splitPath[4];
70
+
photo.splitPath.pop();
71
+
72
+
let mainPhotoPath = photo.splitPath.join('_') + '.png';
73
+
let mainPhoto = this.Photos.find(x => x.path === mainPhotoPath);
74
+
75
+
if(!mainPhoto)
76
+
this.Photos.push(photo);
77
+
else{
78
+
mainPhoto.isMultiLayer = true;
79
+
80
+
switch(type){
81
+
case 'Player.png':
82
+
mainPhoto.playerLayer = photo;
83
+
break;
84
+
case 'Environment.png':
85
+
mainPhoto.environmentLayer = photo;
86
+
break;
87
+
}
88
+
}
89
+
});
90
+
91
+
this.Photos = MergeSort(this.Photos);
92
+
console.log(this.Photos[0]);
93
+
94
+
console.log(this.Photos.length + ' Photos found.');
95
+
96
+
if(this.Photos.length === 0 || photoPaths.length > Vars.MAX_PHOTOS_BULK_LOAD){
97
+
console.log('No photos found or over bulk load limit, Skipping loading stage.');
98
+
99
+
this.FilteredPhotos = this.Photos;
100
+
this.HasFirstLoaded = true;
101
+
102
+
this._finishedLoadingCallbacks.forEach(cb => cb());
103
+
}
104
+
});
105
+
106
+
listen('photo_meta_loaded', ( event: any ) => {
107
+
let data: PhotoMetadata = event.payload;
108
+
109
+
let photo = this.Photos.find(x => x.path === data.path);
110
+
if(!photo)return console.error('Cannot find photo.', data);
111
+
// NOTE: this is triggered by multilayer photo layers loading their metadata
112
+
// we don't need to store metadata of those photos as they inherit this
113
+
// data from the main photo.
114
+
115
+
photo.error = data.error;
116
+
this._lastLoaded = photo.index;
117
+
118
+
if(this._onLoadedMeta[photo.index]){
119
+
this._onLoadedMeta[photo.index]();
120
+
delete this._onLoadedMeta[photo.index];
121
+
}
122
+
123
+
photo.width = data.width;
124
+
photo.height = data.height;
125
+
126
+
let scale = Vars.PHOTO_HEIGHT / photo.height;
127
+
128
+
photo.scaledWidth = photo.width * scale;
129
+
photo.scaledHeight = Vars.PHOTO_HEIGHT;
130
+
131
+
photo.metadata = data.metadata.split('\u0000').filter(x => x !== '')[1];
132
+
this._amountLoaded++;
133
+
134
+
photo.loadingMeta = false;
135
+
photo.metaLoaded = true;
136
+
photo.onMetaLoaded();
137
+
138
+
window.PhotoListRenderingManager.ComputeLayout();
139
+
140
+
if(this._amountLoaded === this.Photos.length - 1 && !this.HasFirstLoaded){
141
+
this.FilteredPhotos = this.Photos;
142
+
this.HasFirstLoaded = true;
143
+
144
+
this._finishedLoadingCallbacks.forEach(cb => cb());
145
+
}
146
+
})
147
+
148
+
listen('photo_create', async ( event: any ) => {
149
+
let photo = new Photo(event.payload, false, 0);
150
+
151
+
if(photo.splitPath[4]){
152
+
let type = photo.splitPath[4];
153
+
photo.splitPath.pop();
154
+
155
+
let mainPhotoPath = photo.splitPath.join('_') + '.png';
156
+
let mainPhoto = this.Photos.find(x => x.path === mainPhotoPath);
157
+
158
+
if(!mainPhoto){
159
+
this.Photos.forEach(p => p.index++); // Probably a really dumb way of doing this
160
+
this.Photos.splice(0, 0, photo);
161
+
} else{
162
+
mainPhoto.isMultiLayer = true;
163
+
164
+
switch(type){
165
+
case 'Player.png':
166
+
mainPhoto.playerLayer = photo;
167
+
break;
168
+
case 'Environment.png':
169
+
mainPhoto.environmentLayer = photo;
170
+
break;
171
+
}
172
+
}
173
+
} else{
174
+
this.Photos.forEach(p => p.index++); // Probably a really dumb way of doing this
175
+
this.Photos.splice(0, 0, photo);
176
+
}
177
+
178
+
photo.onMetaLoaded = () => this.ReloadFilters();
179
+
photo.loadMeta();
180
+
})
181
+
182
+
listen('photo_remove', ( event: any ) => {
183
+
this.Photos = this.Photos.filter(x => x.path !== event.payload);
184
+
185
+
if(event.payload === window.PhotoViewerManager.CurrentPhoto()?.path)
186
+
window.PhotoViewerManager.Close()
187
+
188
+
this.ReloadFilters();
189
+
})
190
+
}
191
+
192
+
public SetFilterType( type: FilterType ){
193
+
this._filterType = type;
194
+
this.ReloadFilters();
195
+
}
196
+
197
+
public SetFilter( filter: string ){
198
+
this._filter = filter;
199
+
this.ReloadFilters();
200
+
}
201
+
202
+
public HasBeenIndexed(){
203
+
return this._hasBeenIndexed();
204
+
}
205
+
206
+
public LoadPhotoMetaAndWait( photo: Photo ){
207
+
return new Promise(res => {
208
+
photo.loadMeta();
209
+
this._onLoadedMeta[photo.index] = res;
210
+
})
211
+
}
212
+
213
+
public async LoadSomeAndReloadFilters(){
214
+
if(this.Photos.length < this._lastLoaded + 1)return;
215
+
216
+
for (let i = 1; i < 10; i++) {
217
+
if(!this.Photos[this._lastLoaded + 1])break;
218
+
await this.LoadPhotoMetaAndWait(this.Photos[this._lastLoaded + 1]);
219
+
}
220
+
221
+
this.ReloadFilters();
222
+
}
223
+
224
+
public ReloadFilters(){
225
+
this.FilteredPhotos = [];
226
+
227
+
if(this._filter === ''){
228
+
this.FilteredPhotos = this.Photos;
229
+
window.PhotoListRenderingManager.ComputeLayout();
230
+
231
+
return;
232
+
}
233
+
234
+
switch(this._filterType){
235
+
case FilterType.USER:
236
+
this.Photos.map(p => {
237
+
if(p.metadata){
238
+
try{
239
+
let meta = JSON.parse(p.metadata);
240
+
let photo = meta.players.find(( y: any ) =>
241
+
y.displayName.toLowerCase().includes(this._filter) ||
242
+
y.id === this._filter
243
+
);
244
+
245
+
if(photo)this.FilteredPhotos.push(p);
246
+
} catch(e){}
247
+
}
248
+
})
249
+
break;
250
+
case FilterType.WORLD:
251
+
this.Photos.map(p => {
252
+
if(p.metadata){
253
+
try{
254
+
let meta = JSON.parse(p.metadata);
255
+
let photo =
256
+
meta.world.name.toLowerCase().includes(this._filter) ||
257
+
meta.world.id === this._filter;
258
+
259
+
if(photo)this.FilteredPhotos.push(p);
260
+
} catch(e){}
261
+
}
262
+
})
263
+
break;
264
+
}
265
+
266
+
window.PhotoListRenderingManager.ComputeLayout();
267
+
}
268
+
269
+
public Load(){
270
+
this.Photos = [];
271
+
this.FilteredPhotos = [];
272
+
273
+
this._amountLoaded = 0;
274
+
275
+
invoke('load_photos');
276
+
}
277
+
278
+
public OnLoadingFinished( cb: () => void ){
279
+
this._finishedLoadingCallbacks.push(cb);
280
+
}
281
+
}
+40
src/Components/Managers/PhotoViewerManager.tsx
+40
src/Components/Managers/PhotoViewerManager.tsx
···
···
1
+
import { Accessor, createSignal, Setter } from "solid-js";
2
+
import { Photo } from "../Structs/Photo";
3
+
import { ViewState } from "./ViewManager";
4
+
5
+
export class PhotoViewerManager{
6
+
public CurrentPhoto: Accessor<Photo | null>;
7
+
private _setCurrentPhoto: Setter<Photo | null>;
8
+
9
+
private _currentPhotoIndex = 0;
10
+
11
+
constructor(){
12
+
[ this.CurrentPhoto, this._setCurrentPhoto ] = createSignal<Photo | null>(null);
13
+
}
14
+
15
+
public NextPhoto(){
16
+
if(!window.PhotoManager.FilteredPhotos[this._currentPhotoIndex + 1])return;
17
+
this._currentPhotoIndex++;
18
+
19
+
window.PhotoViewerManager.OpenPhoto(window.PhotoManager.FilteredPhotos[this._currentPhotoIndex]);
20
+
}
21
+
22
+
public PreviousPhoto(){
23
+
if(!window.PhotoManager.FilteredPhotos[this._currentPhotoIndex - 1])return;
24
+
this._currentPhotoIndex--;
25
+
26
+
window.PhotoViewerManager.OpenPhoto(window.PhotoManager.FilteredPhotos[this._currentPhotoIndex]);
27
+
}
28
+
29
+
public Close(){
30
+
window.ViewManager.ChangeState(ViewState.PHOTO_LIST);
31
+
this._setCurrentPhoto(null);
32
+
}
33
+
34
+
public OpenPhoto( photo: Photo ){
35
+
window.ViewManager.ChangeState(ViewState.PHOTO_VIEWER);
36
+
37
+
this._setCurrentPhoto(photo);
38
+
this._currentPhotoIndex = window.PhotoManager.FilteredPhotos.indexOf(photo);
39
+
}
40
+
}
+22
src/Components/Managers/ViewManager.tsx
+22
src/Components/Managers/ViewManager.tsx
···
···
1
+
export enum ViewState{
2
+
SETTINGS,
3
+
PHOTO_LIST,
4
+
PHOTO_VIEWER
5
+
}
6
+
7
+
export class ViewManager{
8
+
private _state: ViewState = ViewState.PHOTO_LIST;
9
+
private _eventListeners: { from: ViewState, to: ViewState, cb: () => void }[] = [];
10
+
11
+
public ChangeState( state: ViewState ){
12
+
console.log('From: ' + this._state + ' To: ' + state);
13
+
this._eventListeners.filter(x => x.from === this._state && x.to === state).forEach(c => c.cb());
14
+
this._state = state;
15
+
}
16
+
17
+
public GetState(){ return this._state; }
18
+
19
+
public OnStateTransition( from: ViewState, to: ViewState, cb: () => void ){
20
+
this._eventListeners.push({ from, to, cb });
21
+
}
22
+
}
+61
src/Components/Managers/WorldCacheManager.tsx
+61
src/Components/Managers/WorldCacheManager.tsx
···
···
1
+
import { invoke } from "@tauri-apps/api/core";
2
+
import { WorldCache } from "../Structs/WorldCache";
3
+
import { listen } from "@tauri-apps/api/event";
4
+
5
+
export class WorldCacheManager{
6
+
private _worldCache: WorldCache[] = [];
7
+
private _resolveWorld: ( world: WorldCache | null ) => void = () => {};
8
+
9
+
constructor(){
10
+
invoke('get_config_value_string', { key: 'worldcache' })
11
+
.then((data: any) => {
12
+
if(data)this._worldCache = JSON.parse(data);
13
+
})
14
+
15
+
listen('world_data', ( event: any ) => {
16
+
let worldData = {
17
+
expiresOn: Date.now() + 1.2096E+09,
18
+
worldData: {
19
+
id: event.payload.id,
20
+
name: event.payload.name,
21
+
author: event.payload.author,
22
+
authorId: event.payload.authorId,
23
+
desc: event.payload.desc,
24
+
img: event.payload.img,
25
+
maxUsers: event.payload.maxUsers,
26
+
visits: event.payload.visits,
27
+
favourites: event.payload.favourites,
28
+
tags: event.payload.tags,
29
+
from: event.payload.from,
30
+
fromSite: event.payload.fromSite,
31
+
found: event.payload.found
32
+
}
33
+
}
34
+
35
+
this._worldCache.push(worldData);
36
+
invoke('set_config_value_string', { key: 'worldcache', value: JSON.stringify(this._worldCache) });
37
+
38
+
this._resolveWorld(worldData);
39
+
})
40
+
}
41
+
42
+
getWorldById( id: string ): Promise<WorldCache | null>{
43
+
let promise = new Promise<WorldCache | null>(( res ) => { this._resolveWorld = res });
44
+
let worldData = this._worldCache.find(x => x.worldData.id === id);
45
+
46
+
if(!worldData){
47
+
console.log('Fetching new world data');
48
+
49
+
invoke('find_world_by_id', { worldId: id });
50
+
} else if(worldData.expiresOn < Date.now()){
51
+
console.log('Fetching new world data since cache has expired');
52
+
53
+
this._worldCache = this._worldCache.filter(x => x.worldData.id !== id);
54
+
invoke('find_world_by_id', { worldId: id });
55
+
} else{
56
+
this._resolveWorld(worldData);
57
+
}
58
+
59
+
return promise;
60
+
}
61
+
}
+296
-629
src/Components/PhotoList.tsx
+296
-629
src/Components/PhotoList.tsx
···
1
-
import { createEffect, onCleanup, onMount } from "solid-js";
2
-
import { invoke } from '@tauri-apps/api/core';
3
-
import { listen } from '@tauri-apps/api/event';
4
-
5
-
import anime from "animejs";
6
-
import FilterMenu, { FilterType } from "./FilterMenu";
7
-
8
-
const PHOTO_HEIGHT = 200;
9
-
const MAX_IMAGE_LOAD = 10;
10
-
11
-
let months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
12
-
13
-
class PhotoListProps{
14
-
setCurrentPhotoView!: ( view: any ) => any;
15
-
setPhotoCount!: ( value: any ) => any;
16
-
setPhotoSize!: ( value: any ) => any;
17
-
currentPhotoView!: () => any;
18
-
photoNavChoice!: () => string;
19
-
setPhotoNavChoice!: ( view: any ) => any;
20
-
setConfirmationBox!: ( text: string, cb: () => void ) => void;
21
-
requestPhotoReload!: () => boolean;
22
-
setRequestPhotoReload!: ( val: boolean ) => boolean;
23
-
storageInfo!: () => { storage: number, used: number, sync: boolean };
24
-
loggedIn!: () => { loggedIn: boolean, username: string, avatar: string, id: string, serverVersion: string };
25
-
isPhotosSyncing!: () => boolean;
26
-
setIsPhotosSyncing!: ( syncing: boolean ) => boolean;
27
-
}
28
-
29
-
enum ListPopup{
30
-
FILTERS,
31
-
NONE
32
-
}
33
-
34
-
let PhotoList = ( props: PhotoListProps ) => {
35
-
let amountLoaded = 0;
36
-
let imagesLoading = 0;
37
-
38
-
let hasFirstLoaded = false;
39
-
40
-
let photoTreeLoadingContainer: HTMLElement;
41
-
42
-
let scrollToTop: HTMLElement;
43
-
let scrollToTopActive = false;
44
-
45
-
let photoContainer: HTMLCanvasElement;
46
-
let photoContainerBG: HTMLCanvasElement;
47
-
48
-
let filterContainer: HTMLDivElement;
49
-
50
-
let ctx: CanvasRenderingContext2D;
51
-
let ctxBG: CanvasRenderingContext2D;
52
-
53
-
let photos: Photo[] = [];
54
-
let currentPhotoIndex: number = -1;
55
-
56
-
let scroll: number = 0;
57
-
let targetScroll: number = 0;
58
-
59
-
let quitRender: boolean = false;
60
-
let photoPath: string;
61
-
62
-
let currentPopup = ListPopup.NONE;
63
-
64
-
let filterType: FilterType = FilterType.USER;
65
-
let filter = '';
66
-
67
-
let filteredPhotos: Photo[] = [];
68
-
69
-
let closeWithKey = ( e: KeyboardEvent ) => {
70
-
if(e.key === 'Escape'){
71
-
closeCurrentPopup();
72
-
}
73
-
}
74
-
75
-
let closeCurrentPopup = () => {
76
-
switch(currentPopup){
77
-
case ListPopup.FILTERS:
78
-
anime({
79
-
targets: filterContainer,
80
-
opacity: 0,
81
-
easing: 'easeInOutQuad',
82
-
duration: 100,
83
-
complete: () => {
84
-
filterContainer.style.display = 'none';
85
-
currentPopup = ListPopup.NONE;
86
-
}
87
-
});
88
-
89
-
break;
90
-
}
91
-
}
92
-
93
-
createEffect(() => {
94
-
if(props.requestPhotoReload()){
95
-
props.setRequestPhotoReload(false);
96
-
reloadPhotos();
97
-
}
98
-
})
99
-
100
-
class PhotoMetadata{
101
-
width!: number;
102
-
height!: number;
103
-
metadata!: string;
104
-
path!: string;
105
-
}
106
-
107
-
class Photo{
108
-
path: string;
109
-
loaded: boolean = false;
110
-
loading: boolean = false;
111
-
metaLoaded: boolean = false;
112
-
image?: HTMLCanvasElement;
113
-
imageEl?: HTMLImageElement;
114
-
width?: number;
115
-
height?: number;
116
-
loadingRotate: number = 0;
117
-
metadata: any;
118
-
119
-
frames: number = 0;
120
-
shown: boolean = false;
121
-
122
-
x: number = 0;
123
-
y: number = 0;
124
-
scaledWidth?: number;
125
-
scaledHeight?: number;
126
-
127
-
dateString: string;
128
-
date: Date;
129
-
130
-
legacy: boolean = false;
131
-
132
-
public onMetaLoaded: () => void = () => {};
133
-
134
-
constructor( path: string, isLegacy: boolean = false ){
135
-
this.path = path;
136
-
this.legacy = isLegacy;
137
-
138
-
if(this.legacy)
139
-
this.dateString = this.path.split('_')[2];
140
-
else
141
-
this.dateString = this.path.split('_')[1];
142
-
143
-
let splitDateString = this.dateString.split('-');
144
-
145
-
this.date = new Date();
146
-
147
-
this.date.setFullYear(parseInt(splitDateString[0]));
148
-
this.date.setMonth(parseInt(splitDateString[1]));
149
-
this.date.setDate(parseInt(splitDateString[2]));
150
-
}
151
-
152
-
loadMeta(){
153
-
invoke('load_photo_meta', { photo: this.path });
154
-
}
155
-
156
-
loadImage(){
157
-
if(this.loading || this.loaded || imagesLoading >= MAX_IMAGE_LOAD)return;
158
-
159
-
this.loadMeta();
160
-
if(!this.metaLoaded)return;
161
-
162
-
this.loading = true;
163
-
164
-
imagesLoading++;
165
-
166
-
this.image = document.createElement('canvas');
167
-
168
-
this.imageEl = document.createElement('img');
169
-
this.imageEl.crossOrigin = 'anonymous';
170
-
171
-
this.imageEl.src = "http://photo.localhost/" + photoPath + this.path + "?downscale";
172
-
173
-
this.imageEl.onload = () => {
174
-
this.image!.width = this.scaledWidth!;
175
-
this.image!.height = this.scaledHeight!;
176
-
177
-
this.image!.getContext('2d')!.drawImage(this.imageEl!, 0, 0, this.scaledWidth!, this.scaledHeight!);
178
-
179
-
this.loaded = true;
180
-
this.loading = false;
181
-
182
-
imagesLoading--;
183
-
}
184
-
}
185
-
}
186
-
187
-
createEffect(() => {
188
-
let action = props.photoNavChoice();
189
-
190
-
switch(action){
191
-
case 'prev':
192
-
if(!filteredPhotos[currentPhotoIndex - 1])break;
193
-
props.setCurrentPhotoView(filteredPhotos[currentPhotoIndex - 1]);
194
-
195
-
currentPhotoIndex--;
196
-
break;
197
-
case 'next':
198
-
if(!filteredPhotos[currentPhotoIndex + 1])break;
199
-
props.setCurrentPhotoView(filteredPhotos[currentPhotoIndex + 1]);
200
-
201
-
currentPhotoIndex++;
202
-
break;
203
-
}
204
-
205
-
props.setPhotoNavChoice('');
206
-
})
207
-
208
-
let render = () => {
209
-
if(!quitRender)
210
-
requestAnimationFrame(render);
211
-
else
212
-
return quitRender = false;
213
-
214
-
if(!scrollToTopActive && scroll > photoContainer.height){
215
-
scrollToTop.style.display = 'flex';
216
-
anime({ targets: scrollToTop, opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
217
-
218
-
scrollToTopActive = true;
219
-
} else if(scrollToTopActive && scroll < photoContainer.height){
220
-
anime({ targets: scrollToTop, opacity: 0, translateY: '-10px', complete: () => scrollToTop.style.display = 'none', easing: 'easeInOutQuad', duration: 100 });
221
-
scrollToTopActive = false;
222
-
}
223
-
224
-
if(!ctx || !ctxBG)return;
225
-
ctx.clearRect(0, 0, photoContainer.width, photoContainer.height);
226
-
ctxBG.clearRect(0, 0, photoContainerBG.width, photoContainerBG.height);
227
-
228
-
let currentRow: Photo[] = [];
229
-
let currentRowWidth = 0;
230
-
let currentRowIndex = -1;
231
-
232
-
scroll = scroll + (targetScroll - scroll) * 0.2;
233
-
234
-
let lastPhoto;
235
-
for (let i = 0; i < filteredPhotos.length; i++) {
236
-
let p = filteredPhotos[i];
237
-
238
-
if(currentRowIndex * 210 - scroll > photoContainer.height){
239
-
p.shown = false;
240
-
continue;
241
-
}
242
-
243
-
if(!lastPhoto || (lastPhoto.dateString !== p.dateString)){
244
-
currentRowWidth -= 10;
245
-
246
-
let rowXPos = 0;
247
-
currentRow.forEach(photo => {
248
-
if(60 + currentRowIndex * 210 - scroll < -200)return photo.shown = false;
249
-
250
-
if(!photo.loaded)
251
-
setTimeout(() => photo.loadImage(), 1);
252
-
else{
253
-
if(!photo.shown){
254
-
photo.frames = 0;
255
-
photo.shown = true;
256
-
}
257
-
258
-
ctx.globalAlpha = photo.frames / 100;
259
-
ctx.drawImage(photo.image!, (rowXPos - currentRowWidth / 2) + photoContainer.width / 2, 60 + currentRowIndex * 210 - scroll, photo.scaledWidth!, 200);
260
-
261
-
photo.x = (rowXPos - currentRowWidth / 2) + photoContainer.width / 2;
262
-
photo.y = 60 + currentRowIndex * 210 - scroll;
263
-
264
-
if(photo.frames < 100)
265
-
photo.frames += 10;
266
-
}
267
-
268
-
rowXPos += photo.scaledWidth! + 10;
269
-
})
270
-
271
-
ctx.textAlign = 'center';
272
-
ctx.textBaseline = 'middle';
273
-
ctx.globalAlpha = 1;
274
-
ctx.fillStyle = '#fff';
275
-
ctx.font = '30px Rubik';
276
-
277
-
let dateParts = p.dateString.split('-');
278
-
ctx.fillText(dateParts[2] + ' ' + months[parseInt(dateParts[1]) - 1] + ' ' + dateParts[0], photoContainer.width / 2, 60 + (currentRowIndex + 1.2) * 210 - scroll);
279
-
280
-
currentRowWidth = 0;
281
-
currentRow = [];
282
-
currentRowIndex += 1.4;
283
-
}
284
-
285
-
if(currentRowWidth + p.scaledWidth! + 10 < photoContainer.width - 100){
286
-
currentRowWidth += p.scaledWidth! + 10;
287
-
currentRow.push(p);
288
-
} else{
289
-
currentRowWidth -= 10;
290
-
291
-
let rowXPos = 0;
292
-
currentRow.forEach(photo => {
293
-
if(60 + currentRowIndex * 210 - scroll < -200)return photo.shown = false;
294
-
295
-
if(!photo.loaded)
296
-
setTimeout(() => photo.loadImage(), 1);
297
-
else{
298
-
if(!photo.shown){
299
-
photo.frames = 0;
300
-
photo.shown = true;
301
-
}
302
-
303
-
ctx.globalAlpha = photo.frames / 100;
304
-
ctx.drawImage(photo.image!, (rowXPos - currentRowWidth / 2) + photoContainer.width / 2, 60 + currentRowIndex * 210 - scroll, photo.scaledWidth!, 200);
305
-
306
-
photo.x = (rowXPos - currentRowWidth / 2) + photoContainer.width / 2;
307
-
photo.y = 60 + currentRowIndex * 210 - scroll;
308
-
309
-
if(photo.frames < 100)
310
-
photo.frames += 10;
311
-
}
312
-
313
-
rowXPos += photo.scaledWidth! + 10;
314
-
})
315
-
316
-
currentRowWidth = 0;
317
-
currentRow = [];
318
-
currentRowIndex++;
319
-
320
-
currentRowWidth += p.scaledWidth! + 10;
321
-
currentRow.push(p);
322
-
}
323
-
324
-
lastPhoto = p;
325
-
}
326
-
327
-
if(currentRow.length > 0){
328
-
currentRowWidth -= 10;
329
-
330
-
let rowXPos = 0;
331
-
currentRow.forEach(photo => {
332
-
if(60 + currentRowIndex * 210 - scroll < -200)return photo.shown = false;
333
-
334
-
if(!photo.loaded)
335
-
setTimeout(() => photo.loadImage(), 1);
336
-
else{
337
-
if(!photo.shown){
338
-
photo.frames = 0;
339
-
photo.shown = true;
340
-
}
341
-
342
-
ctx.globalAlpha = photo.frames / 100;
343
-
ctx.drawImage(photo.image!, (rowXPos - currentRowWidth / 2) + photoContainer.width / 2, 60 + currentRowIndex * 210 - scroll, photo.scaledWidth!, 200);
344
-
345
-
photo.x = (rowXPos - currentRowWidth / 2) + photoContainer.width / 2;
346
-
photo.y = 60 + currentRowIndex * 210 - scroll;
347
-
348
-
if(photo.frames < 100)
349
-
photo.frames += 10;
350
-
}
351
-
352
-
rowXPos += photo.scaledWidth! + 10;
353
-
})
354
-
}
355
-
356
-
if(filteredPhotos.length == 0){
357
-
ctx.textAlign = 'center';
358
-
ctx.textBaseline = 'middle';
359
-
ctx.globalAlpha = 1;
360
-
ctx.fillStyle = '#fff';
361
-
ctx.font = '40px Rubik';
362
-
363
-
ctx.fillText("It's looking empty in here! You have no photos :O", photoContainer.width / 2, photoContainer.height / 2);
364
-
}
365
-
366
-
ctxBG.filter = 'blur(100px)';
367
-
ctxBG.drawImage(photoContainer, 0, 0);
368
-
}
369
-
370
-
listen('hide-window', () => {
371
-
quitRender = true;
372
-
})
373
-
374
-
listen('show-window', () => {
375
-
requestAnimationFrame(render);
376
-
})
377
-
378
-
listen('photo_meta_loaded', ( event: any ) => {
379
-
let data: PhotoMetadata = event.payload;
380
-
381
-
let photo = photos.find(x => x.path === data.path);
382
-
if(!photo)return;
383
-
384
-
photo.width = data.width;
385
-
photo.height = data.height;
386
-
387
-
let scale = PHOTO_HEIGHT / photo.height;
388
-
389
-
photo.scaledWidth = photo.width * scale;
390
-
photo.scaledHeight = PHOTO_HEIGHT;
391
-
392
-
photo.metadata = data.metadata.split('\u0000').filter(x => x !== '')[1];
393
-
amountLoaded++;
394
-
395
-
photo.metaLoaded = true;
396
-
photo.onMetaLoaded();
397
-
398
-
reloadFilters();
399
-
400
-
if(amountLoaded === photos.length && !hasFirstLoaded){
401
-
filteredPhotos = photos;
402
-
hasFirstLoaded = true;
403
-
404
-
anime({
405
-
targets: photoTreeLoadingContainer,
406
-
height: 0,
407
-
easing: 'easeInOutQuad',
408
-
duration: 500,
409
-
opacity: 0,
410
-
complete: () => {
411
-
photoTreeLoadingContainer.style.display = 'none';
412
-
}
413
-
})
414
-
415
-
anime({
416
-
targets: '.reload-photos',
417
-
opacity: 1,
418
-
duration: 150,
419
-
easing: 'easeInOutQuad'
420
-
})
421
-
422
-
render();
423
-
}
424
-
})
425
-
426
-
listen('photo_create', async ( event: any ) => {
427
-
let photo = new Photo(event.payload);
428
-
429
-
photos.splice(0, 0, photo);
430
-
photo.loadMeta();
431
-
432
-
if(!props.isPhotosSyncing() && props.storageInfo().sync){
433
-
props.setIsPhotosSyncing(true);
434
-
invoke('sync_photos', { token: (await invoke('get_config_value_string', { key: 'token' })) });
435
-
}
436
-
})
437
-
438
-
listen('photo_remove', ( event: any ) => {
439
-
photos = photos.filter(x => x.path !== event.payload);
440
-
filteredPhotos = filteredPhotos.filter(x => x.path !== event.payload);
441
-
442
-
if(event.payload === props.currentPhotoView().path){
443
-
currentPhotoIndex = -1;
444
-
props.setCurrentPhotoView(null);
445
-
}
446
-
})
447
-
448
-
let reloadPhotos = async () => {
449
-
photoPath = await invoke('get_user_photos_path') + '/';
450
-
451
-
photoTreeLoadingContainer.style.opacity = '1';
452
-
photoTreeLoadingContainer.style.height = '100%';
453
-
photoTreeLoadingContainer.style.display = 'flex';
454
-
455
-
quitRender = true;
456
-
amountLoaded = 0;
457
-
scroll = 0;
458
-
459
-
photos = [];
460
-
filteredPhotos = [];
461
-
462
-
anime({
463
-
targets: '.reload-photos',
464
-
opacity: 0,
465
-
duration: 150,
466
-
easing: 'easeInOutQuad'
467
-
})
468
-
469
-
invoke('load_photos');
470
-
}
471
-
472
-
let loadPhotos = async () => {
473
-
photoPath = await invoke('get_user_photos_path') + '/';
474
-
invoke('load_photos')
475
-
476
-
listen('photos_loaded', ( event: any ) => {
477
-
let photoPaths = event.payload.photos.reverse();
478
-
console.log(photoPaths);
479
-
480
-
props.setPhotoCount(photoPaths.length);
481
-
props.setPhotoSize(event.payload.size);
482
-
483
-
let doesHaveLegacy = false;
484
-
485
-
photoPaths.forEach(( path: string ) => {
486
-
let photo
487
-
488
-
if(path.slice(0, 9) === "legacy://"){
489
-
photo = new Photo(path.slice(9), true);
490
-
doesHaveLegacy = true;
491
-
} else
492
-
photo = new Photo(path, false);
493
-
494
-
photos.push(photo);
495
-
photo.loadMeta();
496
-
})
497
-
498
-
if(doesHaveLegacy){
499
-
photos = photos.sort(( a, b ) => b.date.valueOf() - a.date.valueOf());
500
-
}
501
-
})
502
-
}
503
-
504
-
onMount(() => {
505
-
ctx = photoContainer.getContext('2d')!;
506
-
ctxBG = photoContainerBG.getContext('2d')!;
507
-
loadPhotos();
508
-
509
-
anime.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
510
-
511
-
photoContainer.addEventListener('wheel', ( e: WheelEvent ) => {
512
-
targetScroll += e.deltaY;
513
-
514
-
if(targetScroll < 0)
515
-
targetScroll = 0;
516
-
});
517
-
518
-
window.addEventListener('keyup', closeWithKey);
519
-
520
-
photoContainer.width = window.innerWidth;
521
-
photoContainer.height = window.innerHeight;
522
-
523
-
photoContainerBG.width = window.innerWidth;
524
-
photoContainerBG.height = window.innerHeight;
525
-
526
-
window.addEventListener('resize', () => {
527
-
photoContainer.width = window.innerWidth;
528
-
photoContainer.height = window.innerHeight;
529
-
530
-
photoContainerBG.width = window.innerWidth;
531
-
photoContainerBG.height = window.innerHeight;
532
-
})
533
-
534
-
photoContainer.addEventListener('click', ( e: MouseEvent ) => {
535
-
let photo = filteredPhotos.find(x =>
536
-
e.clientX > x.x &&
537
-
e.clientY > x.y &&
538
-
e.clientX < x.x + x.scaledWidth! &&
539
-
e.clientY < x.y + x.scaledHeight! &&
540
-
x.shown
541
-
);
542
-
543
-
if(photo){
544
-
props.setCurrentPhotoView(photo);
545
-
currentPhotoIndex = filteredPhotos.indexOf(photo);
546
-
} else
547
-
currentPhotoIndex = -1;
548
-
})
549
-
})
550
-
551
-
onCleanup(() => {
552
-
window.removeEventListener('keyup', closeWithKey);
553
-
})
554
-
555
-
let reloadFilters = () => {
556
-
filteredPhotos = [];
557
-
558
-
switch(filterType){
559
-
case FilterType.USER:
560
-
photos.map(p => {
561
-
if(p.metadata){
562
-
let meta = JSON.parse(p.metadata);
563
-
let photo = meta.players.find(( y: any ) => y.displayName.toLowerCase().includes(filter) || y.id === filter);
564
-
565
-
if(photo)filteredPhotos.push(p);
566
-
}
567
-
})
568
-
break;
569
-
case FilterType.WORLD:
570
-
photos.map(p => {
571
-
if(p.metadata){
572
-
let meta = JSON.parse(p.metadata);
573
-
let photo = meta.world.name.toLowerCase().includes(filter) || meta.world.id === filter;
574
-
575
-
if(photo)filteredPhotos.push(p);
576
-
}
577
-
})
578
-
break;
579
-
}
580
-
}
581
-
582
-
return (
583
-
<div class="photo-list">
584
-
<div ref={filterContainer!} class="filter-container">
585
-
<FilterMenu
586
-
setFilter={( f ) => { filter = f.toLowerCase(); reloadFilters(); }}
587
-
setFilterType={( t ) => { filterType = t; reloadFilters(); }} />
588
-
</div>
589
-
590
-
<div class="photo-tree-loading" ref={( el ) => photoTreeLoadingContainer = el}>Scanning Photo Tree...</div>
591
-
592
-
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}>
593
-
<div class="icon">
594
-
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
595
-
</div>
596
-
</div>
597
-
<div class="reload-photos" onClick={() => props.setConfirmationBox("Are you sure you want to reload all photos? This can cause the application to slow down while it is loading...", () => window.location.reload())}>
598
-
<div class="icon" style={{ width: '17px' }}>
599
-
<img draggable="false" width="24" height="24" src="/icon/arrows-rotate-solid.svg"></img>
600
-
</div>
601
-
</div>
602
-
603
-
<div class="filter-options">
604
-
<div>
605
-
<div onClick={() => {
606
-
if(currentPopup != ListPopup.NONE)return closeCurrentPopup();
607
-
currentPopup = ListPopup.FILTERS;
608
-
609
-
filterContainer.style.display = 'block';
610
-
611
-
anime({
612
-
targets: filterContainer,
613
-
opacity: 1,
614
-
easing: 'easeInOutQuad',
615
-
duration: 100
616
-
});
617
-
}} class="icon" style={{ width: '20px', height: '5px', padding: '20px' }}>
618
-
<img draggable="false" width="24" height="24" src="/icon/sliders-solid.svg"></img>
619
-
</div>
620
-
<div class="icon-label">Filters</div>
621
-
</div>
622
-
</div>
623
-
624
-
<canvas class="photo-container" ref={( el ) => photoContainer = el}></canvas>
625
-
<canvas class="photo-container-bg" ref={( el ) => photoContainerBG = el}></canvas>
626
-
</div>
627
-
)
628
-
}
629
-
630
export default PhotoList;
···
1
+
import { createSignal, onCleanup, onMount, Show } from "solid-js";
2
+
import { listen } from '@tauri-apps/api/event';
3
+
import { Window } from "@tauri-apps/api/window";
4
+
5
+
import FilterMenu from "./FilterMenu";
6
+
import { ViewState } from "./Managers/ViewManager";
7
+
import { invoke } from "@tauri-apps/api/core";
8
+
import { animate, utils } from "animejs";
9
+
10
+
enum ListPopup{
11
+
FILTERS,
12
+
NONE
13
+
}
14
+
15
+
let PhotoList = () => {
16
+
let scrollToTop: HTMLElement;
17
+
let scrollToTopActive = false;
18
+
19
+
let photoContainer: HTMLCanvasElement;
20
+
21
+
let filterContainer: HTMLDivElement;
22
+
23
+
let ctx: CanvasRenderingContext2D;
24
+
25
+
let scroll: number = 0;
26
+
let targetScroll: number = 0;
27
+
28
+
let quitRender: boolean = true;
29
+
30
+
let currentPopup = ListPopup.NONE;
31
+
32
+
let [ updateAvailable, setUpdateAvailable ] = createSignal(false);
33
+
34
+
Window.getCurrent().isVisible().then(visible => {
35
+
quitRender = !visible;
36
+
})
37
+
38
+
39
+
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.SETTINGS, () => {
40
+
animate(photoContainer, { opacity: 0.5, filter: 'blur(10px)', easing: 'easeInOutQuad', duration: 100 });
41
+
animate('.filter-options', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
42
+
animate('.scroll-to-top', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
43
+
});
44
+
45
+
window.ViewManager.OnStateTransition(ViewState.SETTINGS, ViewState.PHOTO_LIST, () => {
46
+
animate(photoContainer, { opacity: 1, filter: 'blur(0px)', easing: 'easeInOutQuad', duration: 100, onComplete: () => photoContainer.style.filter = '' });
47
+
animate('.filter-options', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
48
+
animate('.scroll-to-top', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
49
+
});
50
+
51
+
52
+
window.ViewManager.OnStateTransition(ViewState.PHOTO_LIST, ViewState.PHOTO_VIEWER, () => {
53
+
animate(photoContainer, { opacity: 0.5, filter: 'blur(10px)', easing: 'easeInOutQuad', duration: 100 });
54
+
animate('.filter-options', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
55
+
animate('.scroll-to-top', { opacity: 0, easing: 'easeInOutQuad', duration: 100 });
56
+
});
57
+
58
+
window.ViewManager.OnStateTransition(ViewState.PHOTO_VIEWER, ViewState.PHOTO_LIST, () => {
59
+
animate(photoContainer, { opacity: 1, filter: 'blur(0px)', easing: 'easeInOutQuad', duration: 100, onComplete: () => photoContainer.style.filter = '' });
60
+
animate('.filter-options', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
61
+
animate('.scroll-to-top', { opacity: 1, easing: 'easeInOutQuad', duration: 100 });
62
+
});
63
+
64
+
65
+
let closeWithKey = ( e: KeyboardEvent ) => {
66
+
if(e.key === 'Escape'){
67
+
closeCurrentPopup();
68
+
}
69
+
}
70
+
71
+
let onResize = () => {
72
+
photoContainer.width = window.innerWidth;
73
+
photoContainer.height = window.innerHeight;
74
+
75
+
window.PhotoListRenderingManager.ComputeLayout();
76
+
}
77
+
78
+
let closeCurrentPopup = () => {
79
+
switch(currentPopup){
80
+
case ListPopup.FILTERS:
81
+
animate(filterContainer!, {
82
+
opacity: 0,
83
+
translateY: '10px',
84
+
easing: 'easeInOutQuad',
85
+
duration: 100,
86
+
onComplete: () => {
87
+
filterContainer!.style.display = 'none';
88
+
currentPopup = ListPopup.NONE;
89
+
}
90
+
});
91
+
92
+
break;
93
+
}
94
+
}
95
+
96
+
let render = () => {
97
+
if(!quitRender)
98
+
requestAnimationFrame(render);
99
+
else
100
+
return quitRender = false;
101
+
102
+
if(!scrollToTopActive && scroll > photoContainer.height){
103
+
scrollToTop.style.display = 'flex';
104
+
animate(scrollToTop, { opacity: 1, translateY: '0px', easing: 'easeInOutQuad', duration: 100 });
105
+
106
+
scrollToTopActive = true;
107
+
} else if(scrollToTopActive && scroll < photoContainer.height){
108
+
animate(scrollToTop, { opacity: 0, translateY: '-10px', onComplete: () => scrollToTop.style.display = 'none', easing: 'easeInOutQuad', duration: 100 });
109
+
110
+
scrollToTopActive = false;
111
+
}
112
+
113
+
if(!ctx)return;
114
+
ctx.clearRect(0, 0, photoContainer.width, photoContainer.height);
115
+
116
+
scroll = scroll + (targetScroll - scroll) * 0.1;
117
+
118
+
window.PhotoListRenderingManager.Render(ctx, photoContainer!, scroll);
119
+
120
+
if(window.PhotoManager.FilteredPhotos.length == 0){
121
+
ctx.textAlign = 'center';
122
+
ctx.textBaseline = 'middle';
123
+
ctx.globalAlpha = 1;
124
+
ctx.fillStyle = '#fff';
125
+
ctx.font = '40px Rubik';
126
+
127
+
ctx.fillText("It's looking empty in here! You have no photos :O", photoContainer.width / 2, photoContainer.height / 2);
128
+
}
129
+
}
130
+
131
+
listen('hide-window', () => {
132
+
quitRender = true;
133
+
console.log('Hide Window');
134
+
})
135
+
136
+
listen('show-window', () => {
137
+
if(quitRender)quitRender = false;
138
+
console.log('Shown Window');
139
+
140
+
photoContainer.width = window.innerWidth;
141
+
photoContainer.height = window.innerHeight;
142
+
143
+
if(window.PhotoManager.HasFirstLoaded){
144
+
requestAnimationFrame(render);
145
+
window.PhotoManager.HasFirstLoaded = false;
146
+
}
147
+
})
148
+
149
+
window.PhotoManager.OnLoadingFinished(() => {
150
+
invoke('close_splashscreen');
151
+
152
+
animate('.reload-photos', {
153
+
opacity: 1,
154
+
duration: 150,
155
+
easing: 'easeInOutQuad'
156
+
})
157
+
158
+
window.PhotoListRenderingManager.SetCanvas(photoContainer!);
159
+
render();
160
+
});
161
+
162
+
onMount(() => {
163
+
// Update Stuff
164
+
fetch('https://api.github.com/repos/phaze-the-dumb/VRChat-Photo-Manager/releases/latest')
165
+
.then(data => {
166
+
if(data.status !== 200)return;
167
+
168
+
data.json().then(async data => {
169
+
let currentVersion = await invoke('get_version');
170
+
setUpdateAvailable(data.tag_name !== currentVersion);
171
+
})
172
+
})
173
+
.catch(e => {
174
+
console.error(e);
175
+
setUpdateAvailable(false);
176
+
})
177
+
178
+
// Other Stuff
179
+
ctx = photoContainer.getContext('2d')!;
180
+
181
+
window.PhotoManager.Load();
182
+
183
+
utils.set(scrollToTop, { opacity: 0, translateY: '-10px', display: 'none' });
184
+
185
+
photoContainer.onwheel = ( e: WheelEvent ) => {
186
+
targetScroll += e.deltaY * 2;
187
+
188
+
if(targetScroll < 0)
189
+
targetScroll = 0;
190
+
};
191
+
192
+
window.addEventListener('keyup', closeWithKey);
193
+
window.addEventListener('resize', onResize);
194
+
195
+
photoContainer.width = window.innerWidth;
196
+
photoContainer.height = window.innerHeight;
197
+
198
+
photoContainer.onclick = ( e: MouseEvent ) => {
199
+
let photo = window.PhotoManager.FilteredPhotos.find(x =>
200
+
e.clientX > x.x &&
201
+
e.clientY > x.y &&
202
+
e.clientX < x.x + x.scaledWidth! &&
203
+
e.clientY < x.y + x.scaledHeight! &&
204
+
x.shown
205
+
);
206
+
207
+
if(photo)
208
+
window.PhotoViewerManager.OpenPhoto(photo);
209
+
// else
210
+
// currentPhotoIndex = -1;
211
+
}
212
+
})
213
+
214
+
onCleanup(() => {
215
+
photoContainer.onwheel = () => {};
216
+
photoContainer.onclick = () => {};
217
+
218
+
window.removeEventListener('keyup', closeWithKey);
219
+
window.removeEventListener('resize', onResize);
220
+
})
221
+
222
+
return (
223
+
<div class="photo-list">
224
+
<div ref={filterContainer!} class="filter-container">
225
+
<FilterMenu />
226
+
</div>
227
+
228
+
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}>
229
+
<div class="icon">
230
+
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
231
+
</div>
232
+
</div>
233
+
234
+
<div class="filter-options">
235
+
<div>
236
+
<div onClick={() => {
237
+
if(currentPopup != ListPopup.NONE)return closeCurrentPopup();
238
+
currentPopup = ListPopup.FILTERS;
239
+
240
+
filterContainer!.style.display = 'block';
241
+
242
+
animate(filterContainer!, {
243
+
opacity: 1,
244
+
translateY: 0,
245
+
easing: 'easeInOutQuad',
246
+
duration: 100
247
+
});
248
+
}} class="icon">
249
+
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/sliders-solid.svg"></img>
250
+
</div>
251
+
<div class="icon-label">Filters</div>
252
+
</div>
253
+
254
+
<div>
255
+
<div onClick={() => {
256
+
window.location.reload();
257
+
}} class="icon">
258
+
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/arrows-rotate-solid.svg"></img>
259
+
</div>
260
+
<div class="icon-label">Reload Photos</div>
261
+
</div>
262
+
263
+
<div>
264
+
<div onClick={() => {
265
+
utils.set('.settings', { display: 'block' });
266
+
animate('.settings', {
267
+
opacity: 1,
268
+
translateX: '0px',
269
+
easing: 'easeInOutQuad',
270
+
duration: 250
271
+
})
272
+
273
+
window.ViewManager.ChangeState(ViewState.SETTINGS);
274
+
}} class="icon">
275
+
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/gear-solid-full.svg"></img>
276
+
</div>
277
+
<div class="icon-label">Settings</div>
278
+
</div>
279
+
280
+
<Show when={updateAvailable()}>
281
+
<div>
282
+
<div onClick={() => {
283
+
invoke('open_url', { url: 'https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases/latest' });
284
+
}} class="icon">
285
+
<img draggable="false" style={{ width: "20px", height: "20px" }} src="/icon/download-solid-full.svg"></img>
286
+
</div>
287
+
<div class="icon-label">Update Available</div>
288
+
</div>
289
+
</Show>
290
+
</div>
291
+
292
+
<canvas class="photo-container" ref={( el ) => photoContainer = el}></canvas>
293
+
</div>
294
+
)
295
+
}
296
+
297
export default PhotoList;
+304
-265
src/Components/PhotoViewer.tsx
+304
-265
src/Components/PhotoViewer.tsx
···
1
import { For, Show, createEffect, onCleanup, onMount } from "solid-js";
2
import { invoke } from '@tauri-apps/api/core';
3
-
import { listen } from '@tauri-apps/api/event';
4
-
import anime from 'animejs';
5
-
6
-
class PhotoViewerProps{
7
-
currentPhotoView!: () => any;
8
-
setCurrentPhotoView!: ( view: any ) => any;
9
-
setPhotoNavChoice!: ( view: any ) => any;
10
-
setConfirmationBox!: ( text: string, cb: () => void ) => void;
11
-
storageInfo!: () => { storage: number, used: number, sync: boolean };
12
-
loggedIn!: () => { loggedIn: boolean, username: string, avatar: string, id: string, serverVersion: string };
13
-
}
14
-
15
-
class WorldCache{
16
-
expiresOn!: number;
17
-
worldData!: {
18
-
id: string,
19
-
name: string,
20
-
author: string,
21
-
authorId: string,
22
-
desc: string,
23
-
img: string,
24
-
maxUsers: number,
25
-
visits: number,
26
-
favourites: number,
27
-
tags: any,
28
-
from: string,
29
-
fromSite: string,
30
-
found: boolean
31
-
}
32
-
}
33
-
34
-
let worldCache: WorldCache[] = [];
35
-
36
-
invoke('get_config_value_string', { key: 'worldcache' })
37
-
.then((data: any) => {
38
-
if(data)worldCache = JSON.parse(data);
39
-
})
40
41
-
let PhotoViewer = ( props: PhotoViewerProps ) => {
42
let viewer: HTMLElement;
43
let imageViewer: HTMLImageElement;
44
let isOpen = false;
···
51
let photoTrayCloseBtn: HTMLElement;
52
53
let worldInfoContainer: HTMLElement;
54
-
let photoPath: string;
55
56
let viewerContextMenu: HTMLElement;
57
let viewerContextMenuButtons: HTMLElement[] = [];
58
59
let allowedToOpenTray = false;
60
-
let trayInAnimation = false;
61
62
let switchPhotoWithKey = ( e: KeyboardEvent ) => {
63
switch(e.key){
64
case 'Escape':
65
-
props.setCurrentPhotoView(null);
66
67
break;
68
case 'ArrowUp':
···
75
break;
76
case 'ArrowLeft':
77
window.CloseAllPopups.forEach(p => p());
78
-
props.setPhotoNavChoice('prev');
79
80
break;
81
case 'ArrowRight':
82
window.CloseAllPopups.forEach(p => p());
83
-
props.setPhotoNavChoice('next');
84
85
break;
86
}
87
}
88
89
-
let openTray = () => {
90
-
if(trayOpen || trayInAnimation)return;
91
92
trayOpen = true;
93
-
trayInAnimation = true;
94
95
window.CloseAllPopups.forEach(p => p());
96
-
anime({ targets: photoTray, bottom: '0px', duration: 500 });
97
98
-
anime({
99
-
targets: photoControls,
100
bottom: '160px',
101
scale: '0.75',
102
opacity: 0,
103
duration: 500,
104
-
complete: () => {
105
photoControls.style.display = 'none';
106
-
trayInAnimation = false;
107
}
108
});
109
110
photoTrayCloseBtn.style.display = 'flex';
111
-
anime({
112
-
targets: photoTrayCloseBtn,
113
bottom: '160px',
114
opacity: 1,
115
scale: 1,
116
duration: 500
117
})
118
}
119
120
let closeTray = () => {
121
-
if(!trayOpen || trayInAnimation)return;
122
-
trayInAnimation = true;
123
124
window.CloseAllPopups.forEach(p => p());
125
-
anime({ targets: photoTray, bottom: '-150px', duration: 500 });
126
127
-
anime({
128
-
targets: photoTrayCloseBtn,
129
bottom: '10px',
130
scale: '0.75',
131
opacity: 0,
132
duration: 500,
133
-
complete: () => {
134
photoTrayCloseBtn.style.display = 'none';
135
-
trayOpen = false;
136
-
trayInAnimation = false;
137
}
138
});
139
140
photoControls.style.display = 'flex';
141
-
anime({
142
-
targets: photoControls,
143
bottom: '10px',
144
opacity: 1,
145
scale: 1,
146
duration: 500,
147
})
148
}
149
150
onMount(() => {
151
-
anime.set(photoControls, { translateX: '-50%' });
152
-
anime.set(photoTrayCloseBtn, { translateX: '-50%', opacity: 0, scale: '0.75', bottom: '10px' });
153
154
window.addEventListener('keyup', switchPhotoWithKey);
155
156
let contextMenuOpen = false;
157
window.CloseAllPopups.push(() => {
158
contextMenuOpen = false;
159
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
160
161
-
anime({
162
-
targets: viewerContextMenu,
163
opacity: 0,
164
easing: 'easeInOutQuad',
165
rotate: '30deg',
166
duration: 100,
167
-
complete: () => {
168
viewerContextMenu.style.display = 'none';
169
}
170
})
171
});
172
173
viewerContextMenuButtons[0].onclick = async () => {
174
window.CloseAllPopups.forEach(p => p());
175
// Context Menu -> Open file location
176
177
-
let path = await invoke('get_user_photos_path') + '\\' + props.currentPhotoView().path;
178
invoke('open_folder', { url: path });
179
}
180
181
viewerContextMenuButtons[1].onclick = () => {
182
window.CloseAllPopups.forEach(p => p());
183
// Context Menu -> Copy image
184
-
185
-
let canvas = document.createElement('canvas');
186
-
let ctx = canvas.getContext('2d')!;
187
-
188
-
canvas.width = props.currentPhotoView().width;
189
-
canvas.height = props.currentPhotoView().height;
190
-
191
-
ctx.drawImage(imageViewer, 0, 0);
192
-
193
-
canvas.toBlob(( blob ) => {
194
-
navigator.clipboard.write([
195
-
new ClipboardItem({
196
-
'image/png': blob!
197
-
})
198
-
]);
199
-
200
-
canvas.remove();
201
-
202
-
anime.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
203
-
anime({
204
-
targets: '.copy-notif',
205
-
opacity: 1,
206
-
translateY: '0px'
207
-
});
208
-
209
-
setTimeout(() => {
210
-
anime({
211
-
targets: '.copy-notif',
212
-
opacity: 0,
213
-
translateY: '-100px'
214
-
});
215
-
}, 2000);
216
-
});
217
}
218
219
imageViewer.oncontextmenu = ( e ) => {
220
if(contextMenuOpen){
221
contextMenuOpen = false;
222
223
-
anime.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
224
225
-
anime({
226
-
targets: viewerContextMenu,
227
opacity: 0,
228
rotate: '30deg',
229
easing: 'easeInOutQuad',
230
duration: 100,
231
-
complete: () => {
232
viewerContextMenu.style.display = 'none';
233
}
234
})
···
239
viewerContextMenu.style.left = e.clientX + 'px';
240
viewerContextMenu.style.display = 'block';
241
242
-
anime.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
243
244
-
anime({
245
-
targets: viewerContextMenu,
246
opacity: 1,
247
rotate: '0deg',
248
easing: 'easeInOutQuad',
···
252
}
253
254
createEffect(() => {
255
-
let photo = props.currentPhotoView();
256
allowedToOpenTray = false;
257
258
imageViewer.style.opacity = '0';
259
260
if(photo){
261
-
(async () => {
262
-
if(!photoPath)
263
-
photoPath = await invoke('get_user_photos_path') + '/';
264
265
-
imageViewer.src = 'http://photo.localhost/' + (photoPath + props.currentPhotoView().path).split('\\').join('/') + "?full";
266
-
imageViewer.crossOrigin = 'anonymous';
267
-
})();
268
269
-
anime({
270
-
targets: imageViewer,
271
opacity: 1,
272
delay: 50,
273
duration: 150,
···
275
})
276
277
let handleMetaDataLoaded = () => {
278
if(photo.metadata){
279
photo.onMetaLoaded = () => {}
280
281
-
let meta = JSON.parse(photo.metadata);
282
-
let worldData = worldCache.find(x => x.worldData.id === meta.world.id);
283
284
-
allowedToOpenTray = true;
285
-
trayButton.style.display = 'flex';
286
-
287
-
photoTray.innerHTML = '';
288
-
photoTray.appendChild(
289
-
<div class="photo-tray-columns">
290
-
<div class="photo-tray-column" style={{ width: '20%' }}><br />
291
-
<div class="tray-heading">People</div>
292
-
293
-
<For each={meta.players}>
294
-
{( item ) =>
295
-
<div>
296
-
{ item.displayName }
297
-
<Show when={item.id}>
298
-
<img width="15" src="/icon/up-right-from-square-solid.svg" onClick={() => invoke('open_url', { url: 'https://vrchat.com/home/user/' + item.id })} style={{ "margin-left": '10px', "font-size": '12px', 'color': '#bbb', cursor: 'pointer' }} />
299
-
</Show>
300
-
</div>
301
-
}
302
-
</For><br />
303
-
</div>
304
-
<div class="photo-tray-column"><br />
305
-
<div class="tray-heading">World</div>
306
-
307
-
<div ref={( el ) => worldInfoContainer = el}>Loading World Data...</div>
308
-
</div>
309
-
</div> as Node
310
-
);
311
312
-
if(!worldData){
313
-
console.log('Fetching new world data');
314
-
315
-
invoke('find_world_by_id', { worldId: meta.world.id });
316
-
} else if(worldData.expiresOn < Date.now()){
317
-
console.log('Fetching new world data since cache has expired');
318
-
319
-
worldCache = worldCache.filter(x => x.worldData.id !== meta.world.id)
320
-
invoke('find_world_by_id', { worldId: meta.world.id });
321
-
} else
322
-
loadWorldData(worldData);
323
} else{
324
trayButton.style.display = 'none';
325
closeTray();
326
}
327
}
328
329
-
photo.onMetaLoaded = () => handleMetaDataLoaded();
330
handleMetaDataLoaded();
331
-
332
-
photo.loadImage();
333
}
334
335
if(photo && !isOpen){
336
viewer.style.display = 'flex';
337
338
-
anime({
339
-
targets: viewer,
340
opacity: 1,
341
easing: 'easeInOutQuad',
342
duration: 150
343
});
344
-
345
-
anime({
346
-
targets: '.navbar',
347
-
top: '-50px'
348
-
})
349
350
-
anime.set('.prev-button', { left: '-50px', top: '50%' });
351
-
anime.set('.next-button', { right: '-50px', top: '50%' });
352
353
-
anime({ targets: '.prev-button', left: '0', easing: 'easeInOutQuad', duration: 100 });
354
-
anime({ targets: '.next-button', right: '0', easing: 'easeInOutQuad', duration: 100 });
355
356
window.CloseAllPopups.forEach(p => p());
357
} else if(!photo && isOpen){
358
-
anime({
359
-
targets: viewer,
360
opacity: 0,
361
easing: 'easeInOutQuad',
362
duration: 150,
363
-
complete: () => {
364
viewer.style.display = 'none';
365
}
366
});
367
-
368
-
anime({
369
-
targets: '.navbar',
370
-
top: '0px'
371
-
})
372
373
window.CloseAllPopups.forEach(p => p());
374
375
-
anime({ targets: '.prev-button', top: '75%', easing: 'easeInOutQuad', duration: 100 });
376
-
anime({ targets: '.next-button', top: '75%', easing: 'easeInOutQuad', duration: 100 });
377
}
378
379
isOpen = photo != null;
···
385
})
386
387
let loadWorldData = ( data: WorldCache ) => {
388
-
let meta = props.currentPhotoView().metadata;
389
if(!meta)return;
390
391
worldInfoContainer.innerHTML = '';
···
403
404
<br />
405
<div class="world-tags">
406
-
<For each={JSON.parse(data.worldData.tags.split('\\\\').join("").split('\\').join("").slice(1, -1))}>
407
{( tag ) =>
408
<div>{ tag.replace("author_tag_", "").replace("system_", "") }</div>
409
}
···
414
)
415
}
416
417
-
listen('world_data', ( event: any ) => {
418
-
let worldData = {
419
-
expiresOn: Date.now() + 1.2096E+09,
420
-
worldData: {
421
-
id: event.payload.id,
422
-
name: event.payload.name.split('\\').join('').slice(1, -1),
423
-
author: event.payload.author.split('\\').join('').slice(1, -1),
424
-
authorId: event.payload.authorId.split('\\').join('').slice(1, -1),
425
-
desc: event.payload.desc.split('\\').join('').slice(1, -1),
426
-
img: event.payload.img.split('\\').join('').slice(1, -1),
427
-
maxUsers: event.payload.maxUsers,
428
-
visits: event.payload.visits,
429
-
favourites: event.payload.favourites,
430
-
tags: event.payload.tags,
431
-
from: event.payload.from,
432
-
fromSite: event.payload.fromSite,
433
-
found: event.payload.found
434
-
}
435
-
}
436
437
-
worldCache.push(worldData);
438
-
invoke('set_config_value_string', { key: 'worldcache', value: worldCache });
439
440
-
loadWorldData(worldData);
441
-
})
442
443
return (
444
<div class="photo-viewer" ref={( el ) => viewer = el}>
445
<div class="photo-context-menu" ref={( el ) => viewerContextMenu = el}>
446
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Open file location</div>
447
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Copy image</div>
448
</div>
449
450
-
<div class="viewer-close viewer-button" onClick={() => props.setCurrentPhotoView(null)}>
451
-
<div class="icon" style={{ width: '10px', margin: '0' }}>
452
<img draggable="false" src="/icon/x-solid.svg"></img>
453
</div>
454
</div>
455
-
<img class="image-container" ref={( el ) => imageViewer = el} />
456
457
<div class="prev-button" onClick={() => {
458
window.CloseAllPopups.forEach(p => p());
459
-
props.setPhotoNavChoice('prev');
460
}}>
461
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
462
<img draggable="false" src="/icon/arrow-left-solid.svg"></img>
463
</div>
464
</div>
465
466
<div class="next-button" onClick={() => {
467
window.CloseAllPopups.forEach(p => p());
468
-
props.setPhotoNavChoice('next');
469
}}>
470
-
<div class="icon" style={{ width: '15px', margin: '0' }}>
471
<img draggable="false" src="/icon/arrow-right-solid.svg"></img>
472
</div>
473
</div>
···
478
onClick={() => closeTray()}
479
ref={( el ) => photoTrayCloseBtn = el}
480
>
481
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
482
<img draggable="false" src="/icon/angle-down-solid.svg"></img>
483
</div>
484
</div>
485
486
<div class="control-buttons" ref={( el ) => photoControls = el}>
487
<div class="viewer-button"
488
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
489
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
490
-
onClick={() => {
491
-
let canvas = document.createElement('canvas');
492
-
let ctx = canvas.getContext('2d')!;
493
-
494
-
canvas.width = props.currentPhotoView().width;
495
-
canvas.height = props.currentPhotoView().height;
496
-
497
-
ctx.drawImage(imageViewer, 0, 0);
498
-
499
-
canvas.toBlob(( blob ) => {
500
-
navigator.clipboard.write([
501
-
new ClipboardItem({
502
-
'image/png': blob!
503
-
})
504
-
]);
505
-
506
-
canvas.remove();
507
-
508
-
anime.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
509
-
anime({
510
-
targets: '.copy-notif',
511
-
opacity: 1,
512
-
translateY: '0px'
513
-
});
514
-
515
-
setTimeout(() => {
516
-
anime({
517
-
targets: '.copy-notif',
518
-
opacity: 0,
519
-
translateY: '-100px'
520
-
});
521
-
}, 2000);
522
-
});
523
-
}}
524
-
>
525
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
526
<img draggable="false" src="/icon/copy-solid.svg"></img>
527
</div>
528
</div>
529
<div class="viewer-button" style={{ width: '50px' }}
530
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '70px', height: '30px', 'margin-left': '10px', 'margin-right': '10px' })}
531
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '50px', height: '30px', 'margin-left': '20px', 'margin-right': '20px' })}
532
ref={( el ) => trayButton = el}
533
onClick={() => openTray()}
534
>
535
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
536
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
537
</div>
538
</div>
539
<div class="viewer-button"
540
-
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
541
-
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
542
-
onClick={() => props.setConfirmationBox("Are you sure you want to delete this photo?", async () => { invoke("delete_photo", {
543
-
path: props.currentPhotoView().path,
544
-
token: (await invoke('get_config_value_string', { key: 'token' })) || "none",
545
-
isSyncing: props.loggedIn().loggedIn ? props.storageInfo().sync : false
546
-
});
547
})}>
548
-
<div class="icon" style={{ width: '12px', margin: '0' }}>
549
<img draggable="false" src="/icon/trash-solid.svg"></img>
550
</div>
551
</div>
···
1
import { For, Show, createEffect, onCleanup, onMount } from "solid-js";
2
import { invoke } from '@tauri-apps/api/core';
3
+
import { WorldCache } from "./Structs/WorldCache";
4
+
import { animate, JSAnimation, utils } from "animejs";
5
6
+
let PhotoViewer = () => {
7
let viewer: HTMLElement;
8
let imageViewer: HTMLImageElement;
9
let isOpen = false;
···
16
let photoTrayCloseBtn: HTMLElement;
17
18
let worldInfoContainer: HTMLElement;
19
20
let viewerContextMenu: HTMLElement;
21
let viewerContextMenuButtons: HTMLElement[] = [];
22
23
let allowedToOpenTray = false;
24
+
25
+
let authorProfileButton: HTMLDivElement;
26
+
27
+
let photoLayerManager!: HTMLDivElement;
28
29
let switchPhotoWithKey = ( e: KeyboardEvent ) => {
30
switch(e.key){
31
case 'Escape':
32
+
window.PhotoViewerManager.Close();
33
34
break;
35
case 'ArrowUp':
···
42
break;
43
case 'ArrowLeft':
44
window.CloseAllPopups.forEach(p => p());
45
+
window.PhotoViewerManager.PreviousPhoto();
46
47
break;
48
case 'ArrowRight':
49
window.CloseAllPopups.forEach(p => p());
50
+
window.PhotoViewerManager.NextPhoto();
51
52
break;
53
}
54
}
55
56
+
let trayAnimation: JSAnimation[] = [];
57
58
+
let openTray = () => {
59
+
if(trayOpen)return;
60
trayOpen = true;
61
+
62
+
trayAnimation.forEach(anim => anim.cancel());
63
64
window.CloseAllPopups.forEach(p => p());
65
+
trayAnimation[0] = animate(photoTray, { bottom: '-150px', duration: 500, ease: 'outElastic' });
66
67
+
trayAnimation[1] = animate(photoControls, {
68
bottom: '160px',
69
+
ease: 'outElastic',
70
scale: '0.75',
71
opacity: 0,
72
duration: 500,
73
+
onComplete: () => {
74
photoControls.style.display = 'none';
75
}
76
});
77
78
photoTrayCloseBtn.style.display = 'flex';
79
+
trayAnimation[2] = animate(photoTrayCloseBtn, {
80
bottom: '160px',
81
+
ease: 'outElastic',
82
opacity: 1,
83
scale: 1,
84
duration: 500
85
})
86
}
87
88
+
let copyImage = () => {
89
+
let path;
90
+
let photo = window.PhotoViewerManager.CurrentPhoto()!;
91
+
92
+
switch(layerManagerViewing){
93
+
case LayerManagerView.DEFAULT:
94
+
path = photo.path;
95
+
break;
96
+
case LayerManagerView.ENVIRONMENT:
97
+
path = photo.environmentLayer!.path;
98
+
break;
99
+
case LayerManagerView.PLAYER:
100
+
path = photo.playerLayer!.path;
101
+
break;
102
+
}
103
+
104
+
invoke('copy_image', { path })
105
+
.then(() => {
106
+
utils.set('.copy-notif', { translateX: '-50%', translateY: '-100px' });
107
+
animate('.copy-notif', {
108
+
ease: 'outElastic',
109
+
opacity: 1,
110
+
translateY: '0px'
111
+
});
112
+
113
+
setTimeout(() => {
114
+
animate('.copy-notif', {
115
+
ease: 'outElastic',
116
+
opacity: 0,
117
+
translateY: '-100px'
118
+
});
119
+
}, 2000);
120
+
})
121
+
}
122
+
123
let closeTray = () => {
124
+
if(!trayOpen)return;
125
+
trayOpen = false;
126
+
127
+
trayAnimation.forEach(anim => anim.cancel());
128
129
window.CloseAllPopups.forEach(p => p());
130
+
trayAnimation[0] = animate(photoTray, { bottom: '-300px', duration: 500, ease: 'outElastic' });
131
132
+
trayAnimation[2] = animate(photoTrayCloseBtn, {
133
bottom: '10px',
134
scale: '0.75',
135
+
ease: 'outElastic',
136
opacity: 0,
137
duration: 500,
138
+
onComplete: () => {
139
photoTrayCloseBtn.style.display = 'none';
140
}
141
});
142
143
photoControls.style.display = 'flex';
144
+
trayAnimation[1] = animate(photoControls, {
145
bottom: '10px',
146
+
ease: 'outElastic',
147
opacity: 1,
148
scale: 1,
149
duration: 500,
150
})
151
}
152
153
+
let resizeImage = () => {
154
+
let dstWidth;
155
+
let dstHeight;
156
+
157
+
let imgHeight = imageViewer.naturalHeight;
158
+
let imgWidth = imageViewer.naturalWidth;
159
+
160
+
if(
161
+
imgWidth / window.innerWidth <
162
+
imgHeight / window.innerHeight
163
+
) {
164
+
dstWidth = imgWidth * (window.innerHeight / imgHeight);
165
+
dstHeight = window.innerHeight;
166
+
} else{
167
+
dstWidth = window.innerWidth;
168
+
dstHeight = imgHeight * (window.innerWidth / imgWidth);
169
+
}
170
+
171
+
imageViewer.style.width = dstWidth + 'px';
172
+
imageViewer.style.height = dstHeight + 'px';
173
+
}
174
+
175
onMount(() => {
176
+
utils.set(photoControls, { translateX: '-50%' });
177
+
utils.set(photoTrayCloseBtn, { translateX: '-50%', opacity: 0, scale: '0.75', bottom: '10px' });
178
+
utils.set(photoLayerManager, { translateY: '20px', opacity: 0, display: 'none' });
179
180
window.addEventListener('keyup', switchPhotoWithKey);
181
+
window.addEventListener('resize', () => resizeImage());
182
183
let contextMenuOpen = false;
184
window.CloseAllPopups.push(() => {
185
contextMenuOpen = false;
186
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
187
188
+
animate(viewerContextMenu, {
189
opacity: 0,
190
easing: 'easeInOutQuad',
191
rotate: '30deg',
192
duration: 100,
193
+
onComplete: () => {
194
viewerContextMenu.style.display = 'none';
195
}
196
})
197
});
198
199
+
window.CloseAllPopups.push(() => {
200
+
layerManagerOpen = false;
201
+
if(layerManagerAnimation)layerManagerAnimation.cancel();
202
+
203
+
layerManagerAnimation = animate(photoLayerManager, { translateY: '20px', opacity: 0, duration: 100, onComplete: () => utils.set(photoLayerManager, { display: 'none' }) });
204
+
});
205
+
206
viewerContextMenuButtons[0].onclick = async () => {
207
window.CloseAllPopups.forEach(p => p());
208
// Context Menu -> Open file location
209
210
+
let path = await invoke('get_user_photos_path') + '\\' + window.PhotoViewerManager.CurrentPhoto()?.path;
211
invoke('open_folder', { url: path });
212
}
213
214
viewerContextMenuButtons[1].onclick = () => {
215
window.CloseAllPopups.forEach(p => p());
216
// Context Menu -> Copy image
217
+
copyImage();
218
}
219
220
imageViewer.oncontextmenu = ( e ) => {
221
if(contextMenuOpen){
222
contextMenuOpen = false;
223
224
+
utils.set(viewerContextMenu, { opacity: 1, rotate: '0deg' });
225
226
+
animate(viewerContextMenu, {
227
opacity: 0,
228
rotate: '30deg',
229
easing: 'easeInOutQuad',
230
duration: 100,
231
+
onComplete: () => {
232
viewerContextMenu.style.display = 'none';
233
}
234
})
···
239
viewerContextMenu.style.left = e.clientX + 'px';
240
viewerContextMenu.style.display = 'block';
241
242
+
utils.set(viewerContextMenu, { opacity: 0, rotate: '-30deg' });
243
244
+
animate(viewerContextMenu, {
245
opacity: 1,
246
rotate: '0deg',
247
easing: 'easeInOutQuad',
···
251
}
252
253
createEffect(() => {
254
+
let photo = window.PhotoViewerManager.CurrentPhoto();
255
allowedToOpenTray = false;
256
257
imageViewer.style.opacity = '0';
258
259
if(photo){
260
+
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + window.PhotoViewerManager.CurrentPhoto()?.path.split('\\').join('/') + "?full";
261
+
imageViewer.crossOrigin = 'anonymous';
262
263
+
imageViewer.onload = () => { resizeImage(); }
264
265
+
animate(imageViewer, {
266
opacity: 1,
267
delay: 50,
268
duration: 150,
···
270
})
271
272
let handleMetaDataLoaded = () => {
273
+
console.log(photo.metadata);
274
if(photo.metadata){
275
photo.onMetaLoaded = () => {}
276
277
+
try{
278
+
// Try JSON format ( VRCX )
279
+
let meta = JSON.parse(photo.metadata);
280
+
281
+
allowedToOpenTray = true;
282
+
trayButton.style.display = 'flex';
283
+
284
+
authorProfileButton!.style.display = 'none';
285
+
286
+
photoTray.innerHTML = '';
287
+
photoTray.appendChild(
288
+
<div class="photo-tray-columns">
289
+
<div class="photo-tray-column" style={{ width: '20%' }}><br />
290
+
<div class="tray-heading">People</div>
291
+
292
+
<For each={meta.players}>
293
+
{( item ) =>
294
+
<div>
295
+
{ item.displayName }
296
+
<Show when={item.id}>
297
+
<img width="15" src="/icon/up-right-from-square-solid.svg" onClick={() => invoke('open_url', { url: 'https://vrchat.com/home/user/' + item.id })} style={{ "margin-left": '10px', "font-size": '12px', 'color': '#bbb', cursor: 'pointer' }} />
298
+
</Show>
299
+
</div>
300
+
}
301
+
</For><br />
302
+
</div>
303
+
<div class="photo-tray-column"><br />
304
+
<div class="tray-heading">World</div>
305
+
306
+
<div ref={( el ) => worldInfoContainer = el}>Loading World Data...</div>
307
+
</div>
308
+
</div> as Node
309
+
);
310
+
311
+
window.WorldCacheManager.getWorldById(meta.world.id)
312
+
.then(worldData => {
313
+
if(worldData)
314
+
loadWorldData(worldData);
315
+
});
316
+
} catch(e){
317
+
try{
318
+
// Not json lets try XML (vrc prints)
319
+
let parser = new DOMParser();
320
+
let doc = parser.parseFromString(photo.metadata, "text/xml");
321
+
322
+
let id = doc.getElementsByTagName('xmp:Author')[0]!.innerHTML;
323
+
324
+
authorProfileButton!.style.display = 'flex';
325
+
authorProfileButton!.onclick = () => {
326
+
console.log(id);
327
+
invoke('open_url', { url: 'https://vrchat.com/home/user/' + id });
328
+
}
329
+
} catch(e){
330
+
console.error(e);
331
+
console.log('Couldn\'t decode metadata')
332
333
+
authorProfileButton!.style.display = 'none';
334
+
}
335
336
+
trayButton.style.display = 'none';
337
+
closeTray();
338
+
}
339
} else{
340
trayButton.style.display = 'none';
341
+
authorProfileButton!.style.display = 'none';
342
+
343
closeTray();
344
}
345
}
346
347
handleMetaDataLoaded();
348
}
349
350
if(photo && !isOpen){
351
viewer.style.display = 'flex';
352
353
+
animate(viewer, {
354
opacity: 1,
355
easing: 'easeInOutQuad',
356
duration: 150
357
});
358
359
+
utils.set('.prev-button', { left: '-50px', top: '50%' });
360
+
utils.set('.next-button', { right: '-50px', top: '50%' });
361
362
+
animate('.prev-button', { left: '0', easing: 'easeInOutQuad', duration: 100 });
363
+
animate('.next-button', { right: '0', easing: 'easeInOutQuad', duration: 100 });
364
365
window.CloseAllPopups.forEach(p => p());
366
} else if(!photo && isOpen){
367
+
animate(viewer, {
368
opacity: 0,
369
easing: 'easeInOutQuad',
370
duration: 150,
371
+
onComplete: () => {
372
viewer.style.display = 'none';
373
}
374
});
375
376
window.CloseAllPopups.forEach(p => p());
377
378
+
animate('.prev-button', { top: '75%', easing: 'easeInOutQuad', duration: 100 });
379
+
animate('.next-button', { top: '75%', easing: 'easeInOutQuad', duration: 100 });
380
}
381
382
isOpen = photo != null;
···
388
})
389
390
let loadWorldData = ( data: WorldCache ) => {
391
+
let meta = window.PhotoViewerManager.CurrentPhoto()?.metadata;
392
if(!meta)return;
393
394
worldInfoContainer.innerHTML = '';
···
406
407
<br />
408
<div class="world-tags">
409
+
<For each={data.worldData.tags}>
410
{( tag ) =>
411
<div>{ tag.replace("author_tag_", "").replace("system_", "") }</div>
412
}
···
417
)
418
}
419
420
+
enum LayerManagerView{
421
+
DEFAULT,
422
+
PLAYER,
423
+
ENVIRONMENT
424
+
}
425
+
426
+
let layerManagerOpen = false;
427
+
let layerManagerAnimation: null | JSAnimation = null;
428
+
let layerManagerViewing = LayerManagerView.DEFAULT;
429
+
430
+
let toggleLayerManager = () => {
431
+
if(layerManagerOpen){
432
+
// Close
433
+
layerManagerOpen = false;
434
+
if(layerManagerAnimation)layerManagerAnimation.cancel();
435
436
+
layerManagerAnimation = animate(photoLayerManager, { translateY: '20px', opacity: 0, duration: 100, onComplete: () => utils.set(photoLayerManager, { display: 'none' }) });
437
+
} else{
438
+
// Open
439
+
layerManagerOpen = true;
440
+
if(layerManagerAnimation)layerManagerAnimation.cancel();
441
442
+
utils.set(photoLayerManager, { display: 'block' });
443
+
layerManagerAnimation = animate(photoLayerManager, { translateY: '0px', opacity: 1, duration: 100 });
444
+
}
445
+
}
446
447
return (
448
<div class="photo-viewer" ref={( el ) => viewer = el}>
449
+
<div class="photo-layer-manager" ref={photoLayerManager}>
450
+
<Show when={window.PhotoViewerManager.CurrentPhoto()?.playerLayer}>
451
+
<div class="photo-layer-manager-layer" onClick={() => {
452
+
let photo = window.PhotoViewerManager.CurrentPhoto()?.playerLayer;
453
+
if(!photo)return;
454
+
455
+
layerManagerViewing = LayerManagerView.PLAYER;
456
+
457
+
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + photo.path.split('\\').join('/') + "?full";
458
+
imageViewer.crossOrigin = 'anonymous';
459
+
}}>Player Layer</div>
460
+
</Show>
461
+
<Show when={window.PhotoViewerManager.CurrentPhoto()?.environmentLayer}>
462
+
<div class="photo-layer-manager-layer" onClick={() => {
463
+
let photo = window.PhotoViewerManager.CurrentPhoto()?.environmentLayer;
464
+
if(!photo)return;
465
+
466
+
layerManagerViewing = LayerManagerView.ENVIRONMENT;
467
+
468
+
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + photo.path.split('\\').join('/') + "?full";
469
+
imageViewer.crossOrigin = 'anonymous';
470
+
}}>Environment Layer</div>
471
+
</Show>
472
+
<div class="photo-layer-manager-layer" onClick={() => {
473
+
let photo = window.PhotoViewerManager.CurrentPhoto();
474
+
if(!photo)return;
475
+
476
+
layerManagerViewing = LayerManagerView.DEFAULT;
477
+
478
+
imageViewer.src = (window.OS === "windows" ? "http://photo.localhost/" : 'photo://localhost/') + photo.path.split('\\').join('/') + "?full";
479
+
imageViewer.crossOrigin = 'anonymous';
480
+
}}>Default Layer</div>
481
+
</div>
482
+
483
<div class="photo-context-menu" ref={( el ) => viewerContextMenu = el}>
484
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Open file location</div>
485
<div ref={( el ) => viewerContextMenuButtons.push(el)}>Copy image</div>
486
</div>
487
488
+
<div class="viewer-close viewer-button" onClick={() => window.PhotoViewerManager.Close()}>
489
+
<div class="icon-small" style={{ width: '10px', margin: '0' }}>
490
<img draggable="false" src="/icon/x-solid.svg"></img>
491
</div>
492
</div>
493
+
494
+
<div style={{
495
+
width: '100%',
496
+
height: '100%',
497
+
display: 'flex',
498
+
"justify-content": 'center',
499
+
'align-items': 'center'
500
+
}}>
501
+
<img class="image-container" ref={( el ) => imageViewer = el} />
502
+
</div>
503
504
<div class="prev-button" onClick={() => {
505
window.CloseAllPopups.forEach(p => p());
506
+
window.PhotoViewerManager.PreviousPhoto();
507
}}>
508
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
509
<img draggable="false" src="/icon/arrow-left-solid.svg"></img>
510
</div>
511
</div>
512
513
<div class="next-button" onClick={() => {
514
window.CloseAllPopups.forEach(p => p());
515
+
window.PhotoViewerManager.NextPhoto();
516
}}>
517
+
<div class="icon-small" style={{ width: '15px', margin: '0' }}>
518
<img draggable="false" src="/icon/arrow-right-solid.svg"></img>
519
</div>
520
</div>
···
525
onClick={() => closeTray()}
526
ref={( el ) => photoTrayCloseBtn = el}
527
>
528
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
529
<img draggable="false" src="/icon/angle-down-solid.svg"></img>
530
</div>
531
</div>
532
533
<div class="control-buttons" ref={( el ) => photoControls = el}>
534
<div class="viewer-button"
535
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
536
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
537
+
onClick={() => { copyImage(); }}>
538
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
539
<img draggable="false" src="/icon/copy-solid.svg"></img>
540
</div>
541
</div>
542
<div class="viewer-button" style={{ width: '50px' }}
543
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '70px', height: '30px', 'margin-left': '10px', 'margin-right': '10px' })}
544
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '50px', height: '30px', 'margin-left': '20px', 'margin-right': '20px' })}
545
ref={( el ) => trayButton = el}
546
onClick={() => openTray()}
547
>
548
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
549
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
550
</div>
551
</div>
552
+
553
<div class="viewer-button"
554
+
ref={authorProfileButton!}
555
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
556
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
557
+
>
558
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
559
+
<img draggable="false" src="/icon/user-solid.svg"></img>
560
+
</div>
561
+
</div>
562
+
563
+
<Show when={window.PhotoViewerManager.CurrentPhoto()?.isMultiLayer}>
564
+
<div class="viewer-button"
565
+
onClick={toggleLayerManager}
566
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
567
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
568
+
>
569
+
<div class="icon-small" style={{ width: '17px', margin: '0' }}>
570
+
<img draggable="false" src="/icon/layer-group-solid-full.svg"></img>
571
+
</div>
572
+
</div>
573
+
</Show>
574
+
575
+
<div class="viewer-button"
576
+
onMouseOver={( el ) => animate(el.currentTarget, { width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
577
+
onMouseLeave={( el ) => animate(el.currentTarget, { width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
578
+
onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("Are you sure you want to delete this photo?", async () => {
579
+
let photo = window.PhotoViewerManager.CurrentPhoto();
580
+
if(!photo)return;
581
+
582
+
invoke("delete_photo", { path: photo.path });
583
+
584
+
if(photo.playerLayer)invoke("delete_photo", { path: photo.playerLayer.path });
585
+
if(photo.environmentLayer)invoke("delete_photo", { path: photo.environmentLayer.path });
586
})}>
587
+
<div class="icon-small" style={{ width: '12px', margin: '0' }}>
588
<img draggable="false" src="/icon/trash-solid.svg"></img>
589
</div>
590
</div>
+196
-248
src/Components/SettingsMenu.tsx
+196
-248
src/Components/SettingsMenu.tsx
···
1
-
import { createSignal, onCleanup, onMount, Show } from "solid-js";
2
import { bytesToFormatted } from "../utils";
3
import { invoke } from '@tauri-apps/api/core';
4
-
import anime from "animejs";
5
-
import { fetch } from "@tauri-apps/plugin-http"
6
-
7
-
class SettingsMenuProps{
8
-
setLoadingType!: ( type: string ) => string;
9
-
photoCount!: () => number;
10
-
photoSize!: () => number;
11
-
setRequestPhotoReload!: ( val: boolean ) => boolean;
12
-
loggedIn!: () => { loggedIn: boolean, username: string, avatar: string, id: string, serverVersion: string };
13
-
storageInfo!: () => { storage: number, used: number, sync: boolean };
14
-
setStorageInfo!: ( info: { storage: number, used: number, sync: boolean } ) => { storage: number, used: number, sync: boolean };
15
-
setConfirmationBox!: ( text: string, cb: () => void ) => void;
16
-
setLoggedIn!: ( val: { loggedIn: boolean, username: string, avatar: string, id: string, serverVersion: string } ) => { loggedIn: boolean, username: string, avatar: string, id: string, serverVersion: string };
17
-
}
18
19
-
let SettingsMenu = ( props: SettingsMenuProps ) => {
20
-
let sliderBar: HTMLElement;
21
-
let settingsContainer: HTMLElement;
22
-
let currentButton = 0;
23
-
let lastClickedButton = -1;
24
let finalPathConfirm: HTMLElement;
25
let finalPathInput: HTMLElement;
26
let finalPathData: string;
27
let finalPathPreviousData: string;
28
29
-
let [ deletingPhotos, setDeletingPhotos ] = createSignal(false);
30
-
31
let closeWithKey = ( e: KeyboardEvent ) => {
32
if(e.key === 'Escape'){
33
-
anime({
34
-
targets: '.settings',
35
opacity: 0,
36
translateX: '500px',
37
easing: 'easeInOutQuad',
38
duration: 250,
39
-
complete: () => {
40
-
anime.set('.settings', { display: 'none' });
41
}
42
})
43
}
···
47
if(await invoke('get_config_value_string', { key: 'transparent' }) === "true"){
48
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
49
50
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
51
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
52
} else{
53
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
54
55
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
56
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
57
}
58
59
-
let sliderMouseDown = false;
60
-
let mouseStartX = 0;
61
62
-
let width = window.innerWidth;
63
-
let buttons = [ 370, 680 ];
64
65
-
let sliderPos = width / 2 - buttons[currentButton];
66
-
let sliderScale = width / (buttons[1] - buttons[0]);
67
68
-
let render = () => {
69
-
requestAnimationFrame(render);
70
71
-
if(!sliderMouseDown){
72
-
sliderPos = sliderPos + (width / 2 - buttons[currentButton] - sliderPos) * 0.25;
73
-
anime.set(sliderBar, { translateX: sliderPos });
74
75
-
settingsContainer.style.left = (sliderPos - (width / 2 - buttons[0])) * sliderScale + 'px';
76
-
}
77
-
}
78
79
-
render();
80
-
anime.set(sliderBar, { translateX: sliderPos });
81
82
-
sliderBar.addEventListener('touchstart', ( e: TouchEvent ) => {
83
-
sliderMouseDown = true;
84
-
mouseStartX = e.touches[0].clientX;
85
-
})
86
87
-
window.addEventListener('touchmove', ( e: TouchEvent ) => {
88
-
if(sliderMouseDown){
89
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
90
-
settingsContainer.style.left = (sliderPos - (mouseStartX - e.touches[0].clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
91
-
}
92
-
})
93
94
window.addEventListener('keyup', closeWithKey);
95
96
-
window.addEventListener('touchend', ( e: TouchEvent ) => {
97
-
if(sliderMouseDown){
98
-
sliderPos = sliderPos - (mouseStartX - e.touches[0].clientX);
99
100
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
101
-
sliderMouseDown = false;
102
103
-
if(Math.abs(mouseStartX - e.touches[0].clientX) > 50){
104
-
let shortestDistance = 0;
105
-
let selectedButton = -1;
106
107
-
buttons.forEach(( pos, indx ) => {
108
-
let dis = Math.abs(sliderPos - (width / 2 - pos));
109
110
-
if(selectedButton === -1){
111
-
shortestDistance = dis;
112
-
selectedButton = indx;
113
-
} else if(shortestDistance > dis){
114
-
shortestDistance = dis;
115
-
selectedButton = indx;
116
-
}
117
-
})
118
119
-
currentButton = selectedButton;
120
-
} else if(lastClickedButton != -1){
121
-
currentButton = lastClickedButton;
122
-
lastClickedButton = -1
123
-
}
124
-
}
125
-
})
126
127
-
sliderBar.addEventListener('mousedown', ( e: MouseEvent ) => {
128
-
sliderMouseDown = true;
129
-
mouseStartX = e.clientX;
130
-
});
131
132
-
window.addEventListener('mousemove', ( e: MouseEvent ) => {
133
-
if(sliderMouseDown){
134
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
135
-
settingsContainer.style.left = sliderPos - (mouseStartX - e.clientX) + 'px';
136
-
settingsContainer.style.left = (sliderPos - (mouseStartX - e.clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
137
-
}
138
-
})
139
140
-
window.addEventListener('mouseup', ( e: MouseEvent ) => {
141
-
if(sliderMouseDown){
142
-
sliderPos = sliderPos - (mouseStartX - e.clientX);
143
144
-
anime.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
145
-
sliderMouseDown = false;
146
147
-
if(Math.abs(mouseStartX - e.clientX) > 50){
148
-
let shortestDistance = 0;
149
-
let selectedButton = -1;
150
151
-
buttons.forEach(( pos, indx ) => {
152
-
let dis = Math.abs(sliderPos - (width / 2 - pos));
153
154
-
if(selectedButton === -1){
155
-
shortestDistance = dis;
156
-
selectedButton = indx;
157
-
} else if(shortestDistance > dis){
158
-
shortestDistance = dis;
159
-
selectedButton = indx;
160
-
}
161
-
})
162
163
-
currentButton = selectedButton;
164
-
} else if(lastClickedButton != -1){
165
-
currentButton = lastClickedButton;
166
-
lastClickedButton = -1
167
-
}
168
-
}
169
-
})
170
171
-
window.addEventListener('resize', () => {
172
-
width = window.innerWidth;
173
-
sliderPos = width / 2 - buttons[currentButton];
174
-
sliderScale = width / (buttons[1] - buttons[0]);
175
176
-
anime.set(sliderBar, { translateX: sliderPos });
177
-
})
178
179
-
sliderBar.addEventListener('wheel', ( e: WheelEvent ) => {
180
-
if(e.deltaY > 0){
181
-
if(buttons[currentButton + 1])
182
-
currentButton++;
183
-
} else{
184
-
if(buttons[currentButton - 1])
185
-
currentButton--;
186
-
}
187
-
})
188
})
189
190
onCleanup(() => {
191
window.removeEventListener('keyup', closeWithKey);
192
})
193
194
-
let refreshAccount = async () => {
195
-
fetch('https://photos.phazed.xyz/api/v1/account?token='+(await invoke('get_config_value_string', { key: 'token' }))!)
196
-
.then(data => data.json())
197
-
.then(data => {
198
-
if(!data.ok){
199
-
console.error(data);
200
-
return;
201
-
}
202
-
203
-
console.log(data);
204
-
props.setLoggedIn({ loggedIn: true, username: data.user.username, avatar: data.user.avatar, id: data.user._id, serverVersion: data.user.serverVersion });
205
-
props.setStorageInfo({ storage: data.user.storage, used: data.user.used, sync: data.user.settings.enableSync });
206
-
})
207
-
.catch(e => {
208
-
console.error(e);
209
-
})
210
-
}
211
-
212
return (
213
<div class="settings">
214
-
<div class="settings-container" ref={( el ) => settingsContainer = el}>
215
<div class="settings-block">
216
<h1>Storage Settings</h1>
217
-
<p>{ props.photoCount() } Photos ({ bytesToFormatted(props.photoSize(), 0) })</p>
218
219
<div class="selector">
220
<input type="checkbox" id="start-in-bg-check" ref={async ( el ) => {
···
230
231
<label for="start-in-bg-check">
232
<div class="selection-box">
233
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
234
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
235
</div>
236
</div>
···
238
</div>
239
240
<div class="selector">
241
-
<input type="checkbox" id="start-with-win-check" ref={async ( el ) => {
242
-
el.checked = await invoke('get_config_value_string', { key: 'start-with-win' }) === "true" ? true : false;
243
}} onChange={( el ) => {
244
if(el.target.checked){
245
-
invoke('set_config_value_string', { key: 'start-with-win', value: 'true' });
246
-
invoke("start_with_win", { start: true });
247
} else{
248
-
invoke('set_config_value_string', { key: 'start-with-win', value: 'false' });
249
-
invoke("start_with_win", { start: false });
250
}
251
}} />
252
-
Start with windows
253
254
-
<label for="start-with-win-check">
255
<div class="selection-box">
256
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
257
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
258
</div>
259
</div>
260
</label>
261
</div>
262
263
<div class="selector">
264
<input type="checkbox" id="transparent-check" ref={async ( el ) => {
···
267
if(el.target.checked){
268
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
269
270
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
271
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
272
} else{
273
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
274
275
-
anime({ targets: document.body, background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
276
-
anime({ targets: '.settings', background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
277
}
278
}} />
279
Window Transparency
280
281
<label for="transparent-check">
282
<div class="selection-box">
283
-
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
284
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
285
</div>
286
</div>
···
305
</span>
306
<span style={{ display: 'none' }} ref={( el ) => finalPathConfirm = el}>
307
<span class="path" style={{ color: 'green' }} onClick={async () => {
308
-
finalPathPreviousData = finalPathData;
309
-
finalPathConfirm.style.display = 'none';
310
311
-
await invoke('change_final_path', { newPath: finalPathData });
312
-
await invoke('relaunch');
313
314
-
anime({
315
-
targets: '.settings',
316
-
opacity: 0,
317
-
translateX: '500px',
318
-
easing: 'easeInOutQuad',
319
-
duration: 250,
320
-
complete: () => {
321
-
anime.set('.settings', { display: 'none' });
322
-
}
323
-
})
324
325
-
props.setRequestPhotoReload(true);
326
}}>
327
Save
328
</span>
···
345
<br />
346
<p>VRChat Photo Manager supports photos with extra metadata provided by VRCX.</p>
347
</div>
348
-
<div class="settings-block">
349
-
<h1>Account Settings</h1>
350
-
351
-
<Show when={props.loggedIn().loggedIn} fallback={
352
-
<div>
353
-
You aren't logged in. To enable cloud sync and sharing features you need to login to your PhazeID.<br /><br />
354
-
<div class="button" onClick={() => {
355
-
props.setLoadingType('auth');
356
-
357
-
setTimeout(() => {
358
-
props.setLoadingType('none');
359
-
}, 5000);
360
-
361
-
invoke('start_user_auth');
362
-
}}>Login</div>
363
-
</div>
364
-
}>
365
-
<div class="account-profile">
366
-
<div class="account-pfp" style={{ background: `url('https://cdn.phazed.xyz/id/avatars/${props.loggedIn().id}/${props.loggedIn().avatar}.png')` }}></div>
367
-
<div class="account-desc">
368
-
<div class="reload-photos" onClick={() => refreshAccount()} style={{ opacity: 1 }}>
369
-
<div class="icon" style={{ width: '17px' }}>
370
-
<img draggable="false" width="17" height="17" src="/icon/arrows-rotate-solid.svg"></img>
371
-
</div>
372
-
</div>
373
-
<h2>{ props.loggedIn().username }</h2>
374
-
375
-
<Show when={props.storageInfo().sync}>
376
-
<div class="storage-bar">
377
-
<div class="storage-bar-inner" style={{ width: ((props.storageInfo().used / props.storageInfo().storage) * 100) + '%' }}></div>
378
-
</div>
379
-
380
-
<div>
381
-
{ bytesToFormatted(props.storageInfo().used, 0) } / { bytesToFormatted(props.storageInfo().storage, 0) }<br /><br />
382
-
383
-
<span style={{ 'font-size': '10px' }}>Server Version: { props.loggedIn().serverVersion }</span>
384
-
</div>
385
-
</Show>
386
-
</div>
387
-
</div>
388
-
389
-
<div class="account-notice">To enable cloud storage or get more storage please contact "_phaz" on discord</div>
390
-
391
-
<div class="account-notice" style={{ display: 'flex' }}>
392
-
<Show when={!deletingPhotos()} fallback={ "We are deleting your photos, please leave this window open while we delete them." }>
393
-
<div class="button-danger" onClick={() => props.setConfirmationBox("You are about to delete all your photos from the cloud, and disable syncing. This will NOT delete any local files.", async () => {
394
-
props.setStorageInfo({ used: 0, storage: 0, sync: false });
395
-
setDeletingPhotos(true);
396
-
397
-
fetch('https://photos-cdn.phazed.xyz/api/v1/allphotos', {
398
-
method: 'DELETE',
399
-
headers: { auth: (await invoke('get_config_value_string', { key: 'token' }))! }
400
-
})
401
-
.then(data => data.json())
402
-
.then(data => {
403
-
console.log(data);
404
-
setDeletingPhotos(false);
405
-
})
406
-
})}>Delete All Photos.</div> <div>This deletes all photos stored in the cloud and disables syncing.</div>
407
-
</Show>
408
-
</div>
409
-
</Show>
410
-
</div>
411
</div>
412
413
-
<div class="slide-bar-tri"></div>
414
<div class="slide-bar">
415
<div class="inner-slide-bar" ref={( el ) => sliderBar = el}>
416
<div class="slider-dot"></div>
···
421
<div class="slider-text" onMouseDown={() => lastClickedButton = 0}>Program Settings</div>
422
<div class="slider-dot"></div>
423
<div class="slider-dot"></div>
424
-
<div class="slider-text" onMouseDown={() => lastClickedButton = 1}>Account Settings</div>
425
<div class="slider-dot"></div>
426
<div class="slider-dot"></div>
427
<div class="slider-dot"></div>
428
<div class="slider-dot"></div>
429
<div class="slider-dot"></div>
430
</div>
431
-
</div>
432
</div>
433
)
434
}
···
1
+
import { onCleanup, onMount, Show } from "solid-js";
2
import { bytesToFormatted } from "../utils";
3
import { invoke } from '@tauri-apps/api/core';
4
+
import { ViewState } from "./Managers/ViewManager";
5
+
import { animate, utils } from "animejs";
6
7
+
let SettingsMenu = () => {
8
+
// let sliderBar: HTMLElement;
9
+
// let settingsContainer: HTMLElement;
10
+
// let currentButton = 0;
11
+
// let lastClickedButton = -1;
12
let finalPathConfirm: HTMLElement;
13
let finalPathInput: HTMLElement;
14
let finalPathData: string;
15
let finalPathPreviousData: string;
16
17
let closeWithKey = ( e: KeyboardEvent ) => {
18
if(e.key === 'Escape'){
19
+
window.ViewManager.ChangeState(ViewState.PHOTO_LIST);
20
+
console.log('h');
21
+
animate('.settings',{
22
opacity: 0,
23
translateX: '500px',
24
easing: 'easeInOutQuad',
25
duration: 250,
26
+
onComplete: () => {
27
+
console.log('h');
28
+
utils.set('.settings', { display: 'none' });
29
}
30
})
31
}
···
35
if(await invoke('get_config_value_string', { key: 'transparent' }) === "true"){
36
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
37
38
+
animate(document.body, { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
39
+
animate('.settings', { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
40
} else{
41
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
42
43
+
animate(document.body, { background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
44
+
animate('.settings', { background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
45
}
46
47
+
// let sliderMouseDown = false;
48
+
// let mouseStartX = 0;
49
50
+
// let width = window.innerWidth;
51
+
// let buttons = [ 370, 680 ];
52
53
+
// let sliderPos = width / 2 - buttons[currentButton];
54
+
// let sliderScale = width / (buttons[1] - buttons[0]);
55
56
+
// let render = () => {
57
+
// requestAnimationFrame(render);
58
59
+
// if(!sliderMouseDown){
60
+
// sliderPos = sliderPos + (width / 2 - buttons[currentButton] - sliderPos) * 0.25;
61
+
// utils.set(sliderBar, { translateX: sliderPos });
62
63
+
// settingsContainer.style.left = (sliderPos - (width / 2 - buttons[0])) * sliderScale + 'px';
64
+
// }
65
+
// }
66
67
+
// render();
68
+
// utils.set(sliderBar, { translateX: sliderPos });
69
70
+
// sliderBar.addEventListener('touchstart', ( e: TouchEvent ) => {
71
+
// sliderMouseDown = true;
72
+
// mouseStartX = e.touches[0].clientX;
73
+
// })
74
75
+
// window.addEventListener('touchmove', ( e: TouchEvent ) => {
76
+
// if(sliderMouseDown){
77
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
78
+
// settingsContainer.style.left = (sliderPos - (mouseStartX - e.touches[0].clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
79
+
// }
80
+
// })
81
82
window.addEventListener('keyup', closeWithKey);
83
84
+
// window.addEventListener('touchend', ( e: TouchEvent ) => {
85
+
// if(sliderMouseDown){
86
+
// sliderPos = sliderPos - (mouseStartX - e.touches[0].clientX);
87
88
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.touches[0].clientX) });
89
+
// sliderMouseDown = false;
90
91
+
// if(Math.abs(mouseStartX - e.touches[0].clientX) > 50){
92
+
// let shortestDistance = 0;
93
+
// let selectedButton = -1;
94
95
+
// buttons.forEach(( pos, indx ) => {
96
+
// let dis = Math.abs(sliderPos - (width / 2 - pos));
97
98
+
// if(selectedButton === -1){
99
+
// shortestDistance = dis;
100
+
// selectedButton = indx;
101
+
// } else if(shortestDistance > dis){
102
+
// shortestDistance = dis;
103
+
// selectedButton = indx;
104
+
// }
105
+
// })
106
107
+
// currentButton = selectedButton;
108
+
// } else if(lastClickedButton != -1){
109
+
// currentButton = lastClickedButton;
110
+
// lastClickedButton = -1
111
+
// }
112
+
// }
113
+
// })
114
115
+
// sliderBar.addEventListener('mousedown', ( e: MouseEvent ) => {
116
+
// sliderMouseDown = true;
117
+
// mouseStartX = e.clientX;
118
+
// });
119
120
+
// window.addEventListener('mousemove', ( e: MouseEvent ) => {
121
+
// if(sliderMouseDown){
122
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
123
+
// settingsContainer.style.left = sliderPos - (mouseStartX - e.clientX) + 'px';
124
+
// settingsContainer.style.left = (sliderPos - (mouseStartX - e.clientX) - (width / 2 - buttons[0])) * sliderScale + 'px';
125
+
// }
126
+
// })
127
128
+
// window.addEventListener('mouseup', ( e: MouseEvent ) => {
129
+
// if(sliderMouseDown){
130
+
// sliderPos = sliderPos - (mouseStartX - e.clientX);
131
132
+
// utils.set(sliderBar, { translateX: sliderPos - (mouseStartX - e.clientX) });
133
+
// sliderMouseDown = false;
134
135
+
// if(Math.abs(mouseStartX - e.clientX) > 50){
136
+
// let shortestDistance = 0;
137
+
// let selectedButton = -1;
138
139
+
// buttons.forEach(( pos, indx ) => {
140
+
// let dis = Math.abs(sliderPos - (width / 2 - pos));
141
142
+
// if(selectedButton === -1){
143
+
// shortestDistance = dis;
144
+
// selectedButton = indx;
145
+
// } else if(shortestDistance > dis){
146
+
// shortestDistance = dis;
147
+
// selectedButton = indx;
148
+
// }
149
+
// })
150
151
+
// currentButton = selectedButton;
152
+
// } else if(lastClickedButton != -1){
153
+
// currentButton = lastClickedButton;
154
+
// lastClickedButton = -1
155
+
// }
156
+
// }
157
+
// })
158
159
+
// window.addEventListener('resize', () => {
160
+
// width = window.innerWidth;
161
+
// sliderPos = width / 2 - buttons[currentButton];
162
+
// sliderScale = width / (buttons[1] - buttons[0]);
163
164
+
// utils.set(sliderBar, { translateX: sliderPos });
165
+
// })
166
167
+
// sliderBar.addEventListener('wheel', ( e: WheelEvent ) => {
168
+
// if(e.deltaY > 0){
169
+
// if(buttons[currentButton + 1])
170
+
// currentButton++;
171
+
// } else{
172
+
// if(buttons[currentButton - 1])
173
+
// currentButton--;
174
+
// }
175
+
// })
176
})
177
178
onCleanup(() => {
179
window.removeEventListener('keyup', closeWithKey);
180
})
181
182
return (
183
<div class="settings">
184
+
<div class="settings-close" onClick={() => {
185
+
window.ViewManager.ChangeState(ViewState.PHOTO_LIST);
186
+
animate('.settings',
187
+
{
188
+
opacity: 0,
189
+
translateX: '500px',
190
+
easing: 'easeInOutQuad',
191
+
duration: 250,
192
+
onComplete: () => {
193
+
utils.set('.settings', { display: 'none' });
194
+
}
195
+
})
196
+
}}>
197
+
<div class="icon"><img draggable="false" src="/icon/x-solid.svg"></img></div>
198
+
</div>
199
+
{/* <div class="settings-container" ref={( el ) => settingsContainer = el}> */}
200
+
<div class="settings-container">
201
<div class="settings-block">
202
<h1>Storage Settings</h1>
203
+
<p>{ window.PhotoManager.PhotoCount() } Photos ({ bytesToFormatted(window.PhotoManager.PhotoSize(), 0) })</p>
204
205
<div class="selector">
206
<input type="checkbox" id="start-in-bg-check" ref={async ( el ) => {
···
216
217
<label for="start-in-bg-check">
218
<div class="selection-box">
219
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
220
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
221
</div>
222
</div>
···
224
</div>
225
226
<div class="selector">
227
+
<input type="checkbox" id="close-to-tray-check" ref={async ( el ) => {
228
+
el.checked = await invoke('get_config_value_string', { key: 'close-to-tray' }) === "true" ? true : false;
229
}} onChange={( el ) => {
230
if(el.target.checked){
231
+
invoke('set_config_value_string', { key: 'close-to-tray', value: 'true' });
232
} else{
233
+
invoke('set_config_value_string', { key: 'close-to-tray', value: 'false' });
234
}
235
}} />
236
+
Close to tray
237
238
+
<label for="close-to-tray-check">
239
<div class="selection-box">
240
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
241
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
242
</div>
243
</div>
244
</label>
245
</div>
246
+
247
+
<Show when={window.OS === 'windows'}>
248
+
<div class="selector">
249
+
<input type="checkbox" id="start-with-win-check" ref={async ( el ) => {
250
+
el.checked = await invoke('get_config_value_string', { key: 'start-with-win' }) === "true" ? true : false;
251
+
}} onChange={( el ) => {
252
+
if(el.target.checked){
253
+
invoke('set_config_value_string', { key: 'start-with-win', value: 'true' });
254
+
invoke("start_with_win", { start: true });
255
+
} else{
256
+
invoke('set_config_value_string', { key: 'start-with-win', value: 'false' });
257
+
invoke("start_with_win", { start: false });
258
+
}
259
+
}} />
260
+
Start with windows
261
+
262
+
<label for="start-with-win-check">
263
+
<div class="selection-box">
264
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
265
+
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
266
+
</div>
267
+
</div>
268
+
</label>
269
+
</div>
270
+
</Show>
271
272
<div class="selector">
273
<input type="checkbox" id="transparent-check" ref={async ( el ) => {
···
276
if(el.target.checked){
277
invoke('set_config_value_string', { key: 'transparent', value: 'true' });
278
279
+
animate(document.body, { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
280
+
animate('.settings', { background: 'rgba(0, 0, 0, 0.5)', easing: 'linear', duration: 100 });
281
} else{
282
invoke('set_config_value_string', { key: 'transparent', value: 'false' });
283
284
+
animate(document.body, { background: 'rgba(0, 0, 0, 1)', easing: 'linear', duration: 100 });
285
+
animate('.settings', { background: 'rgba(0, 0, 0, 0)', easing: 'linear', duration: 100 });
286
}
287
}} />
288
Window Transparency
289
290
<label for="transparent-check">
291
<div class="selection-box">
292
+
<div class="icon-small" style={{ margin: '0', display: 'inline-flex' }}>
293
<img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img>
294
</div>
295
</div>
···
314
</span>
315
<span style={{ display: 'none' }} ref={( el ) => finalPathConfirm = el}>
316
<span class="path" style={{ color: 'green' }} onClick={async () => {
317
+
let changed = await invoke('change_final_path', { newPath: finalPathData });
318
319
+
if(changed){
320
+
finalPathPreviousData = finalPathData;
321
+
finalPathConfirm.style.display = 'none';
322
323
+
window.location.reload();
324
325
+
animate('.settings', {
326
+
opacity: 0,
327
+
translateX: '500px',
328
+
easing: 'easeInOutQuad',
329
+
duration: 250,
330
+
onComplete: () => {
331
+
utils.set('.settings', { display: 'none' });
332
+
}
333
+
})
334
+
335
+
window.location.reload();
336
+
}
337
}}>
338
Save
339
</span>
···
356
<br />
357
<p>VRChat Photo Manager supports photos with extra metadata provided by VRCX.</p>
358
</div>
359
</div>
360
361
+
{/* <div class="slide-bar-tri"></div>
362
<div class="slide-bar">
363
<div class="inner-slide-bar" ref={( el ) => sliderBar = el}>
364
<div class="slider-dot"></div>
···
369
<div class="slider-text" onMouseDown={() => lastClickedButton = 0}>Program Settings</div>
370
<div class="slider-dot"></div>
371
<div class="slider-dot"></div>
372
+
<div class="slider-text" onMouseDown={() => lastClickedButton = 1}>Sync Settings</div>
373
<div class="slider-dot"></div>
374
<div class="slider-dot"></div>
375
<div class="slider-dot"></div>
376
<div class="slider-dot"></div>
377
<div class="slider-dot"></div>
378
</div>
379
+
</div> */}
380
</div>
381
)
382
}
+130
src/Components/Structs/Photo.ts
+130
src/Components/Structs/Photo.ts
···
···
1
+
import { invoke } from "@tauri-apps/api/core";
2
+
import { Vars } from "./Vars";
3
+
4
+
let imagesLoading = 0;
5
+
6
+
export class Photo{
7
+
path: string;
8
+
loaded: boolean = false;
9
+
loadingMeta: boolean = false;
10
+
loading: boolean = false;
11
+
metaLoaded: boolean = false;
12
+
image?: HTMLCanvasElement;
13
+
imageEl?: HTMLImageElement;
14
+
width?: number;
15
+
height?: number;
16
+
loadingRotate: number = 0;
17
+
metadata: any;
18
+
19
+
error: boolean = false;
20
+
21
+
frames: number = 0;
22
+
shown: boolean = false;
23
+
24
+
x: number = 0;
25
+
y: number = 0;
26
+
scaledWidth?: number;
27
+
scaledHeight?: number;
28
+
29
+
dateString: string;
30
+
date: Date;
31
+
32
+
legacy: boolean = false;
33
+
index: number = 0;
34
+
35
+
splitPath: string[];
36
+
37
+
playerLayer: Photo | null = null;
38
+
environmentLayer: Photo | null = null;
39
+
isMultiLayer = false;
40
+
41
+
public onMetaLoaded: () => void = () => {};
42
+
43
+
constructor( path: string, isLegacy: boolean = false, i: number ){
44
+
this.path = path;
45
+
this.legacy = isLegacy;
46
+
this.index = i;
47
+
48
+
let split = this.path.split('_');
49
+
this.splitPath = split;
50
+
51
+
if(this.legacy)
52
+
this.dateString = split[2];
53
+
else
54
+
this.dateString = split[1];
55
+
56
+
let timeString;
57
+
if(this.legacy)
58
+
timeString = split[3];
59
+
else
60
+
timeString = split[2];
61
+
62
+
let splitDateString = this.dateString.split('-');
63
+
let splitTimeString = timeString.split('-');
64
+
65
+
this.date = new Date();
66
+
67
+
this.date.setFullYear(parseInt(splitDateString[0]));
68
+
this.date.setMonth(parseInt(splitDateString[1]));
69
+
this.date.setDate(parseInt(splitDateString[2]));
70
+
71
+
this.date.setHours(parseInt(splitTimeString[0]));
72
+
this.date.setMinutes(parseInt(splitTimeString[1]));
73
+
this.date.setSeconds(parseInt(splitTimeString[2]));
74
+
75
+
let resSplit;
76
+
if(this.legacy)
77
+
resSplit = split[0].split('x')
78
+
else
79
+
resSplit = split[3].split('x')
80
+
81
+
// let width = parseInt(resSplit[0]);
82
+
// let height = parseInt(resSplit[1]);
83
+
84
+
// if(!isNaN(width) || !isNaN(height)){
85
+
// this.width = width;
86
+
// this.height = height;
87
+
88
+
// let scale = Vars.PHOTO_HEIGHT / this.height;
89
+
90
+
// this.scaledWidth = this.width * scale;
91
+
// this.scaledHeight = Vars.PHOTO_HEIGHT;
92
+
// }
93
+
}
94
+
95
+
loadMeta(){
96
+
this.loadingMeta = true;
97
+
invoke('load_photo_meta', { photo: this.path });
98
+
}
99
+
100
+
loadImage(){
101
+
if(this.loadingMeta || this.loading || this.loaded || imagesLoading >= Vars.MAX_IMAGE_LOAD)return;
102
+
if(!this.metaLoaded)return this.loadMeta();
103
+
104
+
this.loading = true;
105
+
imagesLoading++;
106
+
107
+
this.image = document.createElement('canvas');
108
+
109
+
this.imageEl = document.createElement('img');
110
+
this.imageEl.crossOrigin = 'anonymous';
111
+
112
+
this.imageEl.src = (window.OS === "windows" ? "http://photo.localhost/" : "photo://localhost/") + this.path + "?downscale";
113
+
114
+
this.imageEl.onload = () => {
115
+
this.image!.width = this.scaledWidth!;
116
+
this.image!.height = this.scaledHeight!;
117
+
118
+
this.image!.getContext('2d')!.drawImage(this.imageEl!, 0, 0, this.scaledWidth!, this.scaledHeight!);
119
+
120
+
this.loaded = true;
121
+
this.loading = false;
122
+
123
+
imagesLoading--;
124
+
}
125
+
126
+
this.imageEl.onerror = () => {
127
+
console.log('Cannot load image');
128
+
}
129
+
}
130
+
}
+5
src/Components/Structs/PhotoListElement.ts
+5
src/Components/Structs/PhotoListElement.ts
+3
src/Components/Structs/PhotoListElementType.ts
+3
src/Components/Structs/PhotoListElementType.ts
+13
src/Components/Structs/PhotoListElements/PhotoListPhoto.ts
+13
src/Components/Structs/PhotoListElements/PhotoListPhoto.ts
···
···
1
+
import { Photo } from "../Photo";
2
+
import { PhotoListElement } from "../PhotoListElement";
3
+
import { PhotoListElementType } from "../PhotoListElementType";
4
+
5
+
export class PhotoListPhoto extends PhotoListElement{
6
+
public Photo!: Photo;
7
+
8
+
constructor( photo: Photo ){
9
+
super();
10
+
this.Type = PhotoListElementType.PHOTO;
11
+
this.Photo = photo;
12
+
}
13
+
}
+12
src/Components/Structs/PhotoListElements/PhotoListText.ts
+12
src/Components/Structs/PhotoListElements/PhotoListText.ts
···
···
1
+
import { PhotoListElement } from "../PhotoListElement";
2
+
import { PhotoListElementType } from "../PhotoListElementType";
3
+
4
+
export class PhotoListText extends PhotoListElement{
5
+
public Text!: string;
6
+
7
+
constructor( text: string ){
8
+
super();
9
+
this.Type = PhotoListElementType.TEXT;
10
+
this.Text = text;
11
+
}
12
+
}
+8
src/Components/Structs/PhotoListRow.ts
+8
src/Components/Structs/PhotoListRow.ts
+7
src/Components/Structs/PhotoMetadata.ts
+7
src/Components/Structs/PhotoMetadata.ts
+6
src/Components/Structs/ProfileData.ts
+6
src/Components/Structs/ProfileData.ts
+5
src/Components/Structs/StorageData.ts
+5
src/Components/Structs/StorageData.ts
+6
src/Components/Structs/Vars.ts
+6
src/Components/Structs/Vars.ts
+18
src/Components/Structs/WorldCache.ts
+18
src/Components/Structs/WorldCache.ts
···
···
1
+
export class WorldCache{
2
+
expiresOn!: number;
3
+
worldData!: {
4
+
id: string,
5
+
name: string,
6
+
author: string,
7
+
authorId: string,
8
+
desc: string,
9
+
img: string,
10
+
maxUsers: number,
11
+
visits: number,
12
+
favourites: number,
13
+
tags: string[],
14
+
from: string,
15
+
fromSite: string,
16
+
found: boolean
17
+
}
18
+
}
+31
src/Components/Utils/Sort.ts
+31
src/Components/Utils/Sort.ts
···
···
1
+
import { Photo } from "../Structs/Photo";
2
+
3
+
// https://www.geeksforgeeks.org/typescript/how-to-use-merge-sort-with-typescript/
4
+
export let MergeSort = ( array: Photo[] ): Photo[] => {
5
+
if (array.length <= 1) {
6
+
return array;
7
+
}
8
+
const middle = Math.floor(array.length / 2);
9
+
const leftHalf = array.slice(0, middle);
10
+
const rightHalf = array.slice(middle);
11
+
return Merge(MergeSort(leftHalf), MergeSort(rightHalf));
12
+
}
13
+
14
+
let Merge = ( left: Photo[], right: Photo[] ): Photo[] => {
15
+
let result: Photo[] = [];
16
+
let leftIndex = 0;
17
+
let rightIndex = 0;
18
+
19
+
while (leftIndex < left.length &&
20
+
rightIndex < right.length) {
21
+
if (left[leftIndex].date > right[rightIndex].date) {
22
+
result.push(left[leftIndex]);
23
+
leftIndex++;
24
+
} else {
25
+
result.push(right[rightIndex]);
26
+
rightIndex++;
27
+
}
28
+
}
29
+
30
+
return result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));
31
+
}
+72
src/css/filters.css
+72
src/css/filters.css
···
···
1
+
2
+
.filter-options{
3
+
position: fixed;
4
+
top: 10px;
5
+
left: 10px;
6
+
}
7
+
8
+
.filter-container{
9
+
display: none;
10
+
position: fixed;
11
+
bottom: 0;
12
+
left: 0;
13
+
width: 100vw;
14
+
padding: 10px 200px;
15
+
background: rgba(85, 85, 85, 0.904);
16
+
transform: translateY(10px);
17
+
color: #fff;
18
+
text-align: center;
19
+
box-shadow: #0005 0 0 10px;
20
+
opacity: 0;
21
+
z-index: 150;
22
+
}
23
+
24
+
.filter-container > .filter-title{
25
+
font-size: 30px;
26
+
}
27
+
28
+
.filter-type-select{
29
+
display: flex;
30
+
justify-content: center;
31
+
align-items: center;
32
+
width: 75%;
33
+
margin: auto;
34
+
}
35
+
36
+
.filter-type-select > div{
37
+
width: 100%;
38
+
border: #fff 4px solid;
39
+
border-left: #fff 2px solid;
40
+
border-right: #fff 2px solid;
41
+
padding: 5px 0;
42
+
cursor: pointer;
43
+
user-select: none;
44
+
-webkit-user-select: none;
45
+
}
46
+
47
+
.filter-type-select > div:first-child{
48
+
border-left: #fff 4px solid;
49
+
border-radius: 10px 0 0 10px;
50
+
}
51
+
52
+
.filter-type-select > div:last-child{
53
+
border-right: #fff 4px solid;
54
+
border-radius: 0 10px 10px 0;
55
+
}
56
+
57
+
.filter-type-select > .selected-filter{
58
+
background: #00ccff55;
59
+
}
60
+
61
+
.filter-search{
62
+
margin-top: 10px;
63
+
padding: 5px;
64
+
border: #fff 4px solid;
65
+
border-radius: 10px;
66
+
background: #0008;
67
+
outline: none;
68
+
color: white;
69
+
font-size: 15px;
70
+
font-family: 'Rubik';
71
+
width: calc(75% - 18px);
72
+
}
+38
src/css/icons.css
+38
src/css/icons.css
···
···
1
+
.icon{
2
+
width: 40px;
3
+
height: 40px;
4
+
padding: 10px;
5
+
display: flex;
6
+
align-items: center;
7
+
justify-content: center;
8
+
height: 100%;
9
+
cursor: pointer;
10
+
user-select: none;
11
+
-webkit-user-select: none;
12
+
}
13
+
14
+
.icon-small{
15
+
display: flex;
16
+
align-items: center;
17
+
justify-content: center;
18
+
height: 100%;
19
+
}
20
+
21
+
.icon-label{
22
+
margin-top: -20px;
23
+
margin-right: -200px;
24
+
width: 200px;
25
+
color: white;
26
+
pointer-events: none;
27
+
transform: translate(20px, -9px);
28
+
opacity: 0;
29
+
transition: 0.25s;
30
+
user-select: none;
31
+
-webkit-user-select: none;
32
+
}
33
+
34
+
.icon:hover ~ .icon-label{
35
+
opacity: 1;
36
+
transform: translate(40px, -9px);
37
+
}
38
+
+24
src/css/list.css
+24
src/css/list.css
···
···
1
+
.photo-list{
2
+
width: 100%;
3
+
height: 100%;
4
+
position: fixed;
5
+
top: 0;
6
+
left: 0;
7
+
overflow: hidden;
8
+
}
9
+
10
+
.scroll-to-top{
11
+
position: fixed;
12
+
bottom: 10px;
13
+
right: 10px;
14
+
color: white;
15
+
width: 40px;
16
+
height: 40px;
17
+
cursor: pointer;
18
+
border-radius: 50%;
19
+
border: 2px solid white;
20
+
display: flex;
21
+
justify-content: center;
22
+
align-items: center;
23
+
z-index: 100;
24
+
}
+84
src/css/settings.css
+84
src/css/settings.css
···
···
1
+
.settings{
2
+
position: fixed;
3
+
top: 0;
4
+
left: 0;
5
+
width: 100%;
6
+
height: 100%;
7
+
background: rgba(0, 0, 0, 0.4);
8
+
}
9
+
10
+
.settings-container{
11
+
position: fixed;
12
+
top: 50px;
13
+
left: 0px;
14
+
width: 200%;
15
+
height: calc(100% - 100px);
16
+
display: flex;
17
+
}
18
+
19
+
.settings-close{
20
+
position: absolute;
21
+
top: 10px;
22
+
left: 10px;
23
+
z-index: 100;
24
+
cursor: pointer;
25
+
user-select: none;
26
+
width: 40px;
27
+
height: 40px;
28
+
}
29
+
30
+
.settings-block{
31
+
width: 50%;
32
+
height: 100%;
33
+
color: white;
34
+
text-align: center;
35
+
}
36
+
37
+
.selector{
38
+
padding: 10px 20px;
39
+
border-radius: 10px;
40
+
background: #000a;
41
+
display: inline-block;
42
+
margin: 10px;
43
+
}
44
+
45
+
.selector .selection-box{
46
+
height: 20px;
47
+
background: #777a;
48
+
margin: 5px -10px 0 -10px;
49
+
border-radius: 8px;
50
+
user-select: none;
51
+
-webkit-user-select: none;
52
+
cursor: pointer;
53
+
transition: 0.25s;
54
+
color: #fff1;
55
+
}
56
+
57
+
.selector .selection-box:hover{
58
+
height: 20px;
59
+
background: #777a;
60
+
margin: 5px -10px 0 -10px;
61
+
border-radius: 8px;
62
+
user-select: none;
63
+
-webkit-user-select: none;
64
+
cursor: pointer;
65
+
transition: 0.25s;
66
+
color: #fff5;
67
+
}
68
+
69
+
.selector input{
70
+
display: none;
71
+
}
72
+
73
+
.selector input:checked ~ label .selection-box{
74
+
background: rgba(0, 146, 204, 0.705);
75
+
color: #fff;
76
+
}
77
+
78
+
.path{
79
+
padding: 5px 10px;
80
+
background: #000a;
81
+
border-radius: 5px;
82
+
margin-left: 5px;
83
+
cursor: pointer;
84
+
}
+55
src/css/slide-bar.css
+55
src/css/slide-bar.css
···
···
1
+
.slide-bar{
2
+
position: fixed;
3
+
bottom: 0;
4
+
left: 0;
5
+
width: 100%;
6
+
height: 50px;
7
+
border-top: #aaa 1px solid;
8
+
mask-image: linear-gradient(to left, #0000 0%, #000 20%, #000 80%, #0000 100%);
9
+
background: #aaa2;
10
+
box-shadow: #000 0 0 10px;
11
+
overflow: hidden;
12
+
}
13
+
14
+
.inner-slide-bar{
15
+
display: flex;
16
+
height: 50px;
17
+
width: 200%;
18
+
color: white;
19
+
align-items: center;
20
+
cursor: pointer;
21
+
user-select: none;
22
+
-webkit-user-select: none;
23
+
}
24
+
25
+
.slider-dot{
26
+
width: 5px;
27
+
height: 5px;
28
+
border-radius: 5px;
29
+
background: #aaa;
30
+
margin: auto 25px;
31
+
}
32
+
33
+
.slider-text{
34
+
width: 200px;
35
+
text-align: center;
36
+
height: 50px;
37
+
display: flex;
38
+
justify-content: center;
39
+
align-items: center;
40
+
color: #aaa;
41
+
transition: 0.25s;
42
+
}
43
+
44
+
.slider-text:hover{
45
+
color: #fff;
46
+
}
47
+
48
+
.slide-bar-tri{
49
+
position: fixed;
50
+
bottom: 40px;
51
+
left: 50%;
52
+
transform: translateX(-50%);
53
+
border: transparent solid 5px;
54
+
border-top: #fff solid 5px;
55
+
}
+82
src/css/tray.css
+82
src/css/tray.css
···
···
1
+
.photo-tray{
2
+
position: fixed;
3
+
bottom: -300px;
4
+
left: 0;
5
+
width: 100%;
6
+
height: 300px;
7
+
background: rgba(43, 43, 43, 0.76);
8
+
backdrop-filter: blur(10px);
9
+
-webkit-backdrop-filter: blur(10px);
10
+
box-shadow: #0008 0 0 10px;
11
+
padding-bottom: 150px;
12
+
}
13
+
14
+
.photo-tray-close{
15
+
position: fixed;
16
+
bottom: 160px;
17
+
left: 50%;
18
+
transform: translate(-50%);
19
+
color: white;
20
+
background: rgba(43, 43, 43, 0.76);
21
+
backdrop-filter: blur(10px);
22
+
-webkit-backdrop-filter: blur(10px);
23
+
box-shadow: #0008 0 0 10px;
24
+
display: flex;
25
+
justify-content: center;
26
+
align-items: center;
27
+
height: 30px;
28
+
width: 50px;
29
+
border-radius: 50px;
30
+
cursor: pointer;
31
+
font-size: 12px;
32
+
user-select: none;
33
+
-webkit-user-select: none;
34
+
transition: 0.25s width;
35
+
}
36
+
37
+
.photo-tray-close:hover{
38
+
width: 70px;
39
+
}
40
+
41
+
.photo-tray-columns{
42
+
width: 100%;
43
+
height: 100%;
44
+
display: flex;
45
+
color: white;
46
+
text-align: center;
47
+
}
48
+
49
+
.photo-tray-column{
50
+
height: 100%;
51
+
width: 100%;
52
+
scrollbar-width: thin;
53
+
overflow-y: auto;
54
+
overflow-x: hidden;
55
+
mask-image: linear-gradient(to bottom, #0000 0%, #000 10%, #000 90%, #0000 100%);
56
+
}
57
+
58
+
.tray-heading{
59
+
font-weight: bold;
60
+
font-size: 20px;
61
+
}
62
+
63
+
.world-tags{
64
+
display: flex;
65
+
width: 100%;
66
+
justify-content: center;
67
+
align-items: center;
68
+
}
69
+
70
+
.world-tags div{
71
+
padding: 0 10px;
72
+
color: #bbb;
73
+
transition: 0.25s;
74
+
}
75
+
76
+
.world-tags div:hover{
77
+
color: #ddd;
78
+
}
79
+
80
+
.world-name{
81
+
font-size: 17px;
82
+
}
+193
src/css/viewer.css
+193
src/css/viewer.css
···
···
1
+
2
+
.photo-container{
3
+
width: 100%;
4
+
height: 100%;
5
+
}
6
+
7
+
.photo-container-bg{
8
+
width: 100%;
9
+
height: 100%;
10
+
position: fixed;
11
+
top: 0;
12
+
left: 0;
13
+
z-index: -1;
14
+
/* filter: blur(100px); */
15
+
}
16
+
17
+
.single-photo-container{
18
+
margin: 10px;
19
+
display: inline-block;
20
+
}
21
+
22
+
.photo-viewer{
23
+
justify-content: center;
24
+
width: 100%;
25
+
height: 100%;
26
+
position: fixed;
27
+
top: 0;
28
+
left: 0;
29
+
z-index: 5;
30
+
background: #0009;
31
+
opacity: 0;
32
+
display: none;
33
+
}
34
+
35
+
.photo-context-menu{
36
+
position: fixed;
37
+
top: 0;
38
+
left: 0;
39
+
padding: 10px;
40
+
border-radius: 5px;
41
+
background: rgba(43, 43, 43, 0.76);
42
+
color: #aaa;
43
+
box-shadow: #0005 0 0 10px;
44
+
opacity: 0;
45
+
}
46
+
47
+
.photo-context-menu > div{
48
+
padding: 2px 10px;
49
+
width: 100;
50
+
text-align: center;
51
+
transition: 0.1s;
52
+
}
53
+
54
+
.photo-context-menu > div:hover{
55
+
color: #fff;
56
+
cursor: pointer;
57
+
user-select: none;
58
+
-webkit-user-select: none;
59
+
}
60
+
61
+
.image-container{
62
+
max-width: none;
63
+
max-height: none;
64
+
background-size: contain !important;
65
+
background-repeat: no-repeat !important;
66
+
background-position: center !important;
67
+
opacity: 0;
68
+
}
69
+
70
+
.viewer-button{
71
+
color: white;
72
+
width: 30px;
73
+
height: 30px;
74
+
display: flex;
75
+
justify-content: center;
76
+
align-items: center;
77
+
border-radius: 50px;
78
+
font-size: 12px;
79
+
background: #8885;
80
+
user-select: none;
81
+
-webkit-user-select: none;
82
+
cursor: pointer;
83
+
z-index: 7;
84
+
background: rgba(43, 43, 43, 0.76);
85
+
}
86
+
87
+
.viewer-close{
88
+
position: fixed;
89
+
top: 10px;
90
+
right: 10px;
91
+
width: 35px;
92
+
height: 35px;
93
+
}
94
+
95
+
.prev-button{
96
+
transition: 0.25s;
97
+
position: fixed;
98
+
top: 50%;
99
+
left: 0;
100
+
color: white;
101
+
width: 50px;
102
+
height: 150px;
103
+
display: flex;
104
+
justify-content: center;
105
+
align-items: center;
106
+
transform: translateY(-50%);
107
+
background: rgba(255, 255, 255, 0.144);
108
+
border-radius: 0 15px 15px 0;
109
+
cursor: pointer;
110
+
user-select: none;
111
+
-webkit-user-select: none;
112
+
box-shadow: #000 0 0 10px;
113
+
}
114
+
115
+
.prev-button:hover{
116
+
background: rgba(255, 255, 255, 0.349);
117
+
}
118
+
119
+
.next-button{
120
+
transition: 0.25s;
121
+
position: fixed;
122
+
top: 50%;
123
+
right: 0;
124
+
color: white;
125
+
width: 50px;
126
+
height: 150px;
127
+
display: flex;
128
+
justify-content: center;
129
+
align-items: center;
130
+
transform: translateY(-50%);
131
+
background: rgba(255, 255, 255, 0.144);
132
+
border-radius: 15px 0 0 15px;
133
+
cursor: pointer;
134
+
user-select: none;
135
+
-webkit-user-select: none;
136
+
box-shadow: #000 0 0 10px;
137
+
}
138
+
139
+
.next-button:hover{
140
+
background: rgba(255, 255, 255, 0.349);
141
+
}
142
+
143
+
.control-buttons{
144
+
position: fixed;
145
+
bottom: 10px;
146
+
left: 50%;
147
+
transform: translateX(-50%);
148
+
display: flex;
149
+
}
150
+
151
+
.control-buttons div{
152
+
margin: 0 20px;
153
+
}
154
+
155
+
.copy-notif{
156
+
position: fixed;
157
+
top: 40px;
158
+
left: 50%;
159
+
color: white;
160
+
transform: translateX(-50%) translateY(-100px);
161
+
background: rgba(43, 43, 43, 0.76);
162
+
padding: 10px 40px;
163
+
backdrop-filter: blur(10px);
164
+
-webkit-backdrop-filter: blur(10px);
165
+
border-radius: 50px;
166
+
box-shadow: #000 0 0 10px;
167
+
z-index: 12;
168
+
opacity: 0;
169
+
pointer-events: none;
170
+
}
171
+
172
+
.photo-layer-manager{
173
+
background: rgba(43, 43, 43, 0.76);
174
+
color: #fff;
175
+
padding: 10px;
176
+
backdrop-filter: blur(10px);
177
+
position: fixed;
178
+
bottom: 10px;
179
+
left: 10px;
180
+
border-radius: 10px;
181
+
}
182
+
183
+
.photo-layer-manager-layer{
184
+
cursor: pointer;
185
+
-webkit-user-select: none;
186
+
user-select: none;
187
+
padding: 5px 20px;
188
+
transition: 0.1s;
189
+
}
190
+
191
+
.photo-layer-manager-layer:hover{
192
+
color: #bbb;
193
+
}
+63
-23
src/index.tsx
+63
-23
src/index.tsx
···
1
-
/* @refresh reload */
2
-
import { render } from "solid-js/web";
3
-
4
-
declare global{
5
-
interface Window {
6
-
CloseAllPopups: (() => void)[]
7
-
}
8
-
}
9
-
10
-
window.CloseAllPopups = [];
11
-
12
-
window.oncontextmenu = ( e ) => e.preventDefault();
13
-
14
-
import "./styles.css";
15
-
import App from "./Components/App";
16
-
17
-
render(() => <App />, document.getElementById("root") as HTMLElement);
18
-
19
-
let f = new FontFace('Rubik', 'url(https://cdn.phaz.uk/fonts/rubik/Rubik-VariableFont_wght.ttf)');
20
-
21
-
f.load().then((font) => {
22
-
document.fonts.add(font);
23
-
});
···
1
+
/* @refresh reload */
2
+
import { render } from "solid-js/web";
3
+
4
+
declare global{
5
+
interface Window {
6
+
LoadingManager: LoadingManager;
7
+
PhotoManager: PhotoManager;
8
+
ConfirmationBoxManager: ConfirmationBoxManager;
9
+
PhotoViewerManager: PhotoViewerManager;
10
+
WorldCacheManager: WorldCacheManager;
11
+
PhotoListRenderingManager: PhotoListRenderingManager;
12
+
ViewManager: ViewManager;
13
+
14
+
CloseAllPopups: (() => void)[];
15
+
OS: string;
16
+
17
+
}
18
+
}
19
+
20
+
window.CloseAllPopups = [];
21
+
22
+
window.oncontextmenu = ( e ) => e.preventDefault();
23
+
24
+
import './css/icons.css';
25
+
import './css/tray.css';
26
+
import './css/settings.css';
27
+
import './css/slide-bar.css';
28
+
import './css/viewer.css';
29
+
import './css/filters.css';
30
+
import './css/list.css';
31
+
32
+
import "./styles.css";
33
+
34
+
import App from "./Components/App";
35
+
import { invoke } from "@tauri-apps/api/core";
36
+
37
+
import { LoadingManager } from "./Components/Managers/LoadingManager";
38
+
import { PhotoManager } from "./Components/Managers/PhotoManager";
39
+
import { ConfirmationBoxManager } from "./Components/Managers/ConfirmationBoxManager";
40
+
import { PhotoViewerManager } from "./Components/Managers/PhotoViewerManager";
41
+
import { WorldCacheManager } from "./Components/Managers/WorldCacheManager";
42
+
import { PhotoListRenderingManager } from "./Components/Managers/PhotoListRenderingManager";
43
+
import { ViewManager } from "./Components/Managers/ViewManager";
44
+
45
+
window.LoadingManager = new LoadingManager();
46
+
window.PhotoManager = new PhotoManager();
47
+
window.ConfirmationBoxManager = new ConfirmationBoxManager();
48
+
window.PhotoViewerManager = new PhotoViewerManager();
49
+
window.WorldCacheManager = new WorldCacheManager();
50
+
window.PhotoListRenderingManager = new PhotoListRenderingManager();
51
+
window.ViewManager = new ViewManager();
52
+
53
+
(async () => {
54
+
window.OS = await invoke('get_os');
55
+
56
+
render(() => <App />, document.getElementById("root") as HTMLElement);
57
+
58
+
let f = new FontFace('Rubik', 'url(https://cdn.phaz.uk/fonts/rubik/Rubik-VariableFont_wght.ttf)');
59
+
60
+
f.load().then((font) => {
61
+
document.fonts.add(font);
62
+
});
63
+
})();
+119
-832
src/styles.css
+119
-832
src/styles.css
···
1
-
@font-face {
2
-
font-family: Rubik;
3
-
src: url(https://cdn.phazed.xyz/fonts/rubik/Rubik-VariableFont_wght.ttf);
4
-
}
5
-
6
-
body{
7
-
background: #000;
8
-
margin: 0;
9
-
font-family: Rubik, 'Courier New';
10
-
}
11
-
12
-
.loading{
13
-
position: fixed;
14
-
z-index: 10000;
15
-
top: 0;
16
-
left: 0;
17
-
width: 100%;
18
-
height: 100%;
19
-
background: black;
20
-
display: flex;
21
-
opacity: 1;
22
-
color: white;
23
-
justify-content: center;
24
-
align-items: center;
25
-
}
26
-
27
-
.navbar{
28
-
background: #555a;
29
-
position: fixed;
30
-
top: 0;
31
-
left: 0;
32
-
width: 100%;
33
-
margin-top: -50px;
34
-
padding-top: 50px;
35
-
height: 50px;
36
-
display: flex;
37
-
backdrop-filter: blur(10px);
38
-
z-index: 10;
39
-
box-shadow: #000 0 0 10px;
40
-
}
41
-
42
-
.navbar .tabs{
43
-
width: calc(100% - 450px);
44
-
height: 100%;
45
-
display: flex;
46
-
}
47
-
48
-
.navbar .account{
49
-
width: 100px;
50
-
height: 100%;
51
-
display: flex;
52
-
justify-content: center;
53
-
align-items: center;
54
-
transition: 0.1s;
55
-
cursor: pointer;
56
-
user-select: none;
57
-
}
58
-
59
-
.navbar .account:hover{
60
-
background: #0005;
61
-
}
62
-
63
-
.navbar .control-lights{
64
-
width: 150px;
65
-
height: 50px;
66
-
display: flex;
67
-
justify-content: center;
68
-
align-items: center;
69
-
}
70
-
71
-
.control-lights .light{
72
-
user-select: none;
73
-
font-size: 20px;
74
-
text-align: center;
75
-
color: white;
76
-
width: 100%;
77
-
cursor: pointer;
78
-
display: flex;
79
-
justify-content: center;
80
-
align-items: center;
81
-
height: 50px;
82
-
filter: invert(100%);
83
-
}
84
-
85
-
.control-lights .light:hover{
86
-
background: #fff5;
87
-
}
88
-
89
-
.control-lights .light img{
90
-
width: 25%;
91
-
}
92
-
93
-
.icon{
94
-
width: 15px;
95
-
filter: invert(100%);
96
-
display: flex;
97
-
align-items: center;
98
-
justify-content: center;
99
-
height: 100%;
100
-
}
101
-
102
-
.icon-label{
103
-
margin-top: -20px;
104
-
margin-right: -200px;
105
-
width: 200px;
106
-
color: white;
107
-
pointer-events: none;
108
-
transform: translate(40px, -12px);
109
-
opacity: 0;
110
-
transition: 0.25s;
111
-
user-select: none;
112
-
}
113
-
114
-
.icon:hover ~ .icon-label{
115
-
opacity: 1;
116
-
transform: translate(60px, -12px);
117
-
}
118
-
119
-
.user-pfp{
120
-
width: 35px;
121
-
height: 35px;
122
-
background-size: cover !important;
123
-
background-position: center !important;
124
-
border-radius: 50%;
125
-
margin-right: 10px;
126
-
}
127
-
128
-
.account-dropdown{
129
-
font-size: 20px;
130
-
color: white;
131
-
}
132
-
133
-
.nav-tab{
134
-
color: white;
135
-
width: 150px;
136
-
height: 100%;
137
-
transition: 0.1s;
138
-
cursor: pointer;
139
-
user-select: none;
140
-
justify-content: center;
141
-
align-items: center;
142
-
display: flex;
143
-
}
144
-
145
-
.nav-tab:hover{
146
-
background: #0005;
147
-
}
148
-
149
-
.dropdown{
150
-
position: fixed;
151
-
right: 125px;
152
-
top: 60px;
153
-
background: #555a;
154
-
height: 60px;
155
-
width: 150px;
156
-
border-radius: 5px;
157
-
backdrop-filter: blur(5px);
158
-
z-index: 10;
159
-
}
160
-
161
-
.dropdown-button{
162
-
width: 100%;
163
-
text-align: center;
164
-
padding: 5.5px 0;
165
-
color: #aaa;
166
-
cursor: pointer;
167
-
user-select: none;
168
-
transition: 0.1s;
169
-
}
170
-
171
-
.dropdown-button:hover{
172
-
color: #fff;
173
-
}
174
-
175
-
.photo-list{
176
-
width: 100%;
177
-
height: 100%;
178
-
position: fixed;
179
-
top: 0;
180
-
left: 0;
181
-
overflow: hidden;
182
-
}
183
-
184
-
.filter-options{
185
-
position: fixed;
186
-
top: 55px;
187
-
left: 5px;
188
-
width: 40px;
189
-
height: 50px;
190
-
}
191
-
192
-
.filter-options img{
193
-
cursor: pointer;
194
-
user-select: none;
195
-
}
196
-
197
-
.filter-container{
198
-
display: none;
199
-
position: fixed;
200
-
bottom: 0;
201
-
left: 50%;
202
-
width: 600px;
203
-
height: 83px;
204
-
transform: translate(-50%);
205
-
padding: 10px;
206
-
border-radius: 5px 5px 0 0;
207
-
backdrop-filter: blur(5px);
208
-
background: #555a;
209
-
color: #fff;
210
-
text-align: center;
211
-
box-shadow: #0005 0 0 10px;
212
-
opacity: 0;
213
-
}
214
-
215
-
.filter-container > .filter-title{
216
-
font-size: 30px;
217
-
}
218
-
219
-
.filter-type-select{
220
-
display: flex;
221
-
justify-content: center;
222
-
align-items: center;
223
-
width: 75%;
224
-
margin: auto;
225
-
}
226
-
227
-
.filter-type-select > div{
228
-
width: 100%;
229
-
border: #fff 4px solid;
230
-
border-left: #fff 2px solid;
231
-
border-right: #fff 2px solid;
232
-
padding: 5px 0;
233
-
cursor: pointer;
234
-
user-select: none;
235
-
}
236
-
237
-
.filter-type-select > div:first-child{
238
-
border-left: #fff 4px solid;
239
-
border-radius: 10px 0 0 10px;
240
-
}
241
-
242
-
.filter-type-select > div:last-child{
243
-
border-right: #fff 4px solid;
244
-
border-radius: 0 10px 10px 0;
245
-
}
246
-
247
-
.filter-type-select > .selected-filter{
248
-
background: #00ccff55;
249
-
}
250
-
251
-
.filter-search{
252
-
margin-top: 10px;
253
-
padding: 5px;
254
-
border: #fff 4px solid;
255
-
border-radius: 10px;
256
-
background: #0008;
257
-
outline: none;
258
-
color: white;
259
-
font-size: 15px;
260
-
font-family: 'Rubik';
261
-
width: calc(75% - 18px);
262
-
}
263
-
264
-
.date-list{
265
-
mask-image: linear-gradient(to bottom, #0000, #000, #0000);
266
-
overflow: auto;
267
-
scrollbar-width: thin;
268
-
height: calc(100% - 100px);
269
-
padding: 50px 0;
270
-
}
271
-
272
-
.date-list-date{
273
-
padding: 10px;
274
-
user-select: none;
275
-
cursor: pointer;
276
-
transition: 0.1s;
277
-
border-radius: 10px;
278
-
}
279
-
280
-
.date-list-date:hover{
281
-
background: #0005;
282
-
box-shadow: inset #0005 0 0 10px;
283
-
}
284
-
285
-
.photo-tree-loading{
286
-
width: 100%;
287
-
height: 100%;
288
-
display: flex;
289
-
justify-content: center;
290
-
align-items: center;
291
-
color: white;
292
-
font-size: 20px;
293
-
}
294
-
295
-
.loading-bar{
296
-
width: 500px;
297
-
height: 8px;
298
-
border-radius: 12px;
299
-
background: #333;
300
-
margin-top: 10px;
301
-
padding: 2px;
302
-
}
303
-
304
-
.loading-bar-inner{
305
-
width: 0%;
306
-
height: 8px;
307
-
border-radius: 18px;
308
-
background: #00ccff;
309
-
}
310
-
311
-
.photo-container{
312
-
width: 100%;
313
-
height: 100%;
314
-
}
315
-
316
-
.photo-container-bg{
317
-
width: 100%;
318
-
height: 100%;
319
-
position: fixed;
320
-
top: 0;
321
-
left: 0;
322
-
z-index: -1;
323
-
}
324
-
325
-
.single-photo-container{
326
-
margin: 10px;
327
-
display: inline-block;
328
-
}
329
-
330
-
.photo-viewer{
331
-
justify-content: center;
332
-
width: 100%;
333
-
height: 100%;
334
-
position: fixed;
335
-
top: 0;
336
-
left: 0;
337
-
z-index: 5;
338
-
background: #0009;
339
-
backdrop-filter: blur(75px);
340
-
opacity: 0;
341
-
display: none;
342
-
}
343
-
344
-
.photo-context-menu{
345
-
position: fixed;
346
-
top: 0;
347
-
left: 0;
348
-
padding: 10px;
349
-
border-radius: 5px;
350
-
backdrop-filter: blur(5px);
351
-
background: #555a;
352
-
color: #aaa;
353
-
box-shadow: #0005 0 0 10px;
354
-
opacity: 0;
355
-
}
356
-
357
-
.photo-context-menu > div{
358
-
padding: 2px 10px;
359
-
width: calc(100% - 10px);
360
-
text-align: center;
361
-
transition: 0.1s;
362
-
}
363
-
364
-
.photo-context-menu > div:hover{
365
-
color: #fff;
366
-
cursor: pointer;
367
-
user-select: none;
368
-
}
369
-
370
-
.image-container{
371
-
height: 100%;
372
-
background-size: contain !important;
373
-
background-repeat: no-repeat !important;
374
-
background-position: center !important;
375
-
opacity: 0;
376
-
}
377
-
378
-
.viewer-button{
379
-
color: white;
380
-
width: 30px;
381
-
height: 30px;
382
-
display: flex;
383
-
justify-content: center;
384
-
align-items: center;
385
-
border-radius: 50px;
386
-
font-size: 12px;
387
-
background: #8885;
388
-
backdrop-filter: blur(10px);
389
-
user-select: none;
390
-
cursor: pointer;
391
-
z-index: 7;
392
-
box-shadow: #0008 0 0 10px;
393
-
}
394
-
395
-
.viewer-close{
396
-
position: fixed;
397
-
top: 10px;
398
-
right: 10px;
399
-
width: 35px;
400
-
height: 35px;
401
-
}
402
-
403
-
.prev-button{
404
-
transition: 0.25s;
405
-
position: fixed;
406
-
top: 50%;
407
-
left: 0;
408
-
color: white;
409
-
width: 50px;
410
-
height: 150px;
411
-
display: flex;
412
-
justify-content: center;
413
-
align-items: center;
414
-
transform: translateY(-50%);
415
-
background: rgba(255, 255, 255, 0.144);
416
-
backdrop-filter: blur(50px);
417
-
border-radius: 0 15px 15px 0;
418
-
cursor: pointer;
419
-
user-select: none;
420
-
box-shadow: #000 0 0 10px;
421
-
}
422
-
423
-
.prev-button:hover{
424
-
background: rgba(255, 255, 255, 0.349);
425
-
}
426
-
427
-
.next-button{
428
-
transition: 0.25s;
429
-
position: fixed;
430
-
top: 50%;
431
-
right: 0;
432
-
color: white;
433
-
width: 50px;
434
-
height: 150px;
435
-
display: flex;
436
-
justify-content: center;
437
-
align-items: center;
438
-
transform: translateY(-50%);
439
-
background: rgba(255, 255, 255, 0.144);
440
-
backdrop-filter: blur(50px);
441
-
border-radius: 15px 0 0 15px;
442
-
cursor: pointer;
443
-
user-select: none;
444
-
box-shadow: #000 0 0 10px;
445
-
}
446
-
447
-
.next-button:hover{
448
-
background: rgba(255, 255, 255, 0.349);
449
-
}
450
-
451
-
.reload-photos{
452
-
position: fixed;
453
-
top: 70px;
454
-
right: 20px;
455
-
color: white;
456
-
user-select: none;
457
-
cursor: pointer;
458
-
opacity: 0;
459
-
}
460
-
461
-
.confirmation-box{
462
-
position: fixed;
463
-
top: 0;
464
-
left: 0;
465
-
width: 100%;
466
-
height: 100%;
467
-
z-index: 15;
468
-
background: #0005;
469
-
transition: 0.25s;
470
-
backdrop-filter: blur(10px);
471
-
}
472
-
473
-
.confirmation-box-container{
474
-
position: fixed;
475
-
top: 50%;
476
-
left: 50%;
477
-
transform: translate(-50%, -50%);
478
-
color: white;
479
-
text-align: center;
480
-
background: #9995;
481
-
padding: 10px;
482
-
width: 60%;
483
-
border-radius: 10px;
484
-
box-shadow: #000 0 0 10px;
485
-
font-size: 18px;
486
-
backdrop-filter: blur(10px);
487
-
}
488
-
489
-
.button-danger{
490
-
display: inline-block;
491
-
backdrop-filter: blur(10px);
492
-
padding: 10px;
493
-
background: rgba(255, 0, 0, 0.333);
494
-
box-shadow: #0005 inset 0 0 10px;
495
-
border-radius: 50px;
496
-
margin: 0 10px;
497
-
cursor: pointer;
498
-
user-select: none;
499
-
width: 200px;
500
-
transition: 0.25s;
501
-
}
502
-
503
-
.button{
504
-
display: inline-block;
505
-
padding: 10px;
506
-
backdrop-filter: blur(10px);
507
-
background: #9995;
508
-
box-shadow: #0005 inset 0 0 10px;
509
-
border-radius: 50px;
510
-
margin: 0 10px;
511
-
cursor: pointer;
512
-
user-select: none;
513
-
width: 200px;
514
-
transition: 0.25s;
515
-
}
516
-
517
-
.button:hover{
518
-
box-shadow: #000a inset 0 0 10px;
519
-
}
520
-
521
-
.button-danger:hover{
522
-
box-shadow: #000a inset 0 0 10px;
523
-
}
524
-
525
-
.control-buttons{
526
-
position: fixed;
527
-
bottom: 10px;
528
-
left: 50%;
529
-
transform: translateX(-50%);
530
-
display: flex;
531
-
}
532
-
533
-
.control-buttons div{
534
-
margin: 0 20px;
535
-
}
536
-
537
-
.copy-notif{
538
-
position: fixed;
539
-
top: 40px;
540
-
left: 50%;
541
-
color: white;
542
-
transform: translateX(-50%) translateY(-100px);
543
-
background: #8885;
544
-
padding: 10px 40px;
545
-
backdrop-filter: blur(10px);
546
-
border-radius: 50px;
547
-
box-shadow: #000 0 0 10px;
548
-
z-index: 12;
549
-
opacity: 0;
550
-
pointer-events: none;
551
-
}
552
-
553
-
.photo-tray{
554
-
position: fixed;
555
-
bottom: -150px;
556
-
left: 0;
557
-
width: 100%;
558
-
height: 150px;
559
-
background: #7778;
560
-
backdrop-filter: blur(10px);
561
-
box-shadow: #0008 0 0 10px;
562
-
padding-bottom: 150px;
563
-
margin-bottom: -150px;
564
-
}
565
-
566
-
.photo-tray-close{
567
-
position: fixed;
568
-
bottom: 160px;
569
-
left: 50%;
570
-
transform: translate(-50%);
571
-
color: white;
572
-
background: #8885;
573
-
backdrop-filter: blur(10px);
574
-
box-shadow: #0008 0 0 10px;
575
-
display: flex;
576
-
justify-content: center;
577
-
align-items: center;
578
-
height: 30px;
579
-
width: 50px;
580
-
border-radius: 50px;
581
-
cursor: pointer;
582
-
font-size: 12px;
583
-
user-select: none;
584
-
transition: 0.25s width;
585
-
}
586
-
587
-
.photo-tray-close:hover{
588
-
width: 70px;
589
-
}
590
-
591
-
.photo-tray-columns{
592
-
width: 100%;
593
-
height: 100%;
594
-
display: flex;
595
-
color: white;
596
-
text-align: center;
597
-
}
598
-
599
-
.photo-tray-column{
600
-
height: 100%;
601
-
width: 100%;
602
-
scrollbar-width: thin;
603
-
overflow-y: auto;
604
-
overflow-x: hidden;
605
-
mask-image: linear-gradient(to bottom, #0000 0%, #000 10%, #000 90%, #0000 100%);
606
-
}
607
-
608
-
.tray-heading{
609
-
font-weight: bold;
610
-
font-size: 20px;
611
-
}
612
-
613
-
.world-tags{
614
-
display: flex;
615
-
width: 100%;
616
-
justify-content: center;
617
-
align-items: center;
618
-
}
619
-
620
-
.world-tags div{
621
-
padding: 0 10px;
622
-
color: #bbb;
623
-
transition: 0.25s;
624
-
}
625
-
626
-
.world-tags div:hover{
627
-
color: #ddd;
628
-
}
629
-
630
-
.world-name{
631
-
font-size: 17px;
632
-
}
633
-
634
-
.settings{
635
-
position: fixed;
636
-
top: 0;
637
-
left: 0;
638
-
width: 100%;
639
-
height: 100%;
640
-
background: rgba(0, 0, 0, 0.4);
641
-
backdrop-filter: blur(100px);
642
-
}
643
-
644
-
.slide-bar{
645
-
position: fixed;
646
-
bottom: 0;
647
-
left: 0;
648
-
width: 100%;
649
-
height: 50px;
650
-
border-top: #aaa 1px solid;
651
-
overflow-x: hidden;
652
-
mask-image: linear-gradient(to left, #0000 0%, #000 20%, #000 80%, #0000 100%);
653
-
background: #aaa2;
654
-
box-shadow: #000 0 0 10px;
655
-
}
656
-
657
-
.inner-slide-bar{
658
-
display: flex;
659
-
height: 50px;
660
-
width: 200%;
661
-
color: white;
662
-
align-items: center;
663
-
cursor: pointer;
664
-
user-select: none;
665
-
}
666
-
667
-
.slider-dot{
668
-
width: 5px;
669
-
height: 5px;
670
-
border-radius: 5px;
671
-
background: #aaa;
672
-
margin: auto 25px;
673
-
}
674
-
675
-
.slider-text{
676
-
width: 200px;
677
-
text-align: center;
678
-
height: 50px;
679
-
display: flex;
680
-
justify-content: center;
681
-
align-items: center;
682
-
color: #aaa;
683
-
transition: 0.25s;
684
-
}
685
-
686
-
.slider-text:hover{
687
-
color: #fff;
688
-
}
689
-
690
-
.slide-bar-tri{
691
-
position: fixed;
692
-
bottom: 40px;
693
-
left: 50%;
694
-
transform: translateX(-50%);
695
-
border: transparent solid 5px;
696
-
border-top: #fff solid 5px;
697
-
}
698
-
699
-
.settings-container{
700
-
position: fixed;
701
-
top: 50px;
702
-
left: 0px;
703
-
width: 200%;
704
-
height: calc(100% - 100px);
705
-
display: flex;
706
-
}
707
-
708
-
.settings-block{
709
-
width: 50%;
710
-
height: 100%;
711
-
color: white;
712
-
text-align: center;
713
-
}
714
-
715
-
.selector{
716
-
padding: 10px 20px;
717
-
border-radius: 10px;
718
-
background: #000a;
719
-
display: inline-block;
720
-
margin: 10px;
721
-
}
722
-
723
-
.selector .selection-box{
724
-
height: 20px;
725
-
background: #777a;
726
-
margin: 5px -10px 0 -10px;
727
-
border-radius: 8px;
728
-
user-select: none;
729
-
cursor: pointer;
730
-
transition: 0.25s;
731
-
color: #fff1;
732
-
}
733
-
734
-
.selector .selection-box:hover{
735
-
height: 20px;
736
-
background: #777a;
737
-
margin: 5px -10px 0 -10px;
738
-
border-radius: 8px;
739
-
user-select: none;
740
-
cursor: pointer;
741
-
transition: 0.25s;
742
-
color: #fff5;
743
-
}
744
-
745
-
.selector input{
746
-
display: none;
747
-
}
748
-
749
-
.selector input:checked ~ label .selection-box{
750
-
background: rgba(0, 146, 204, 0.705);
751
-
color: #fff;
752
-
}
753
-
754
-
.path{
755
-
padding: 5px 10px;
756
-
background: #000a;
757
-
border-radius: 5px;
758
-
margin-left: 5px;
759
-
cursor: pointer;
760
-
}
761
-
762
-
.scroll-to-top{
763
-
position: fixed;
764
-
bottom: 10px;
765
-
right: 10px;
766
-
color: white;
767
-
width: 40px;
768
-
height: 40px;
769
-
cursor: pointer;
770
-
border-radius: 50%;
771
-
border: 2px solid white;
772
-
display: flex;
773
-
justify-content: center;
774
-
align-items: center;
775
-
}
776
-
777
-
.account-profile{
778
-
margin: auto;
779
-
width: 50%;
780
-
height: 200px;
781
-
display: flex;
782
-
}
783
-
784
-
.account-pfp{
785
-
width: 200px;
786
-
height: 200px;
787
-
background-position: center !important;
788
-
background-size: cover !important;
789
-
border-radius: 50%;
790
-
box-shadow: #0005 0 0 10px;
791
-
position: relative;
792
-
z-index: 10;
793
-
}
794
-
795
-
.account-desc{
796
-
width: calc(100% - 200px);
797
-
padding-left: 100px;
798
-
height: 150px;
799
-
margin: 25px 0;
800
-
margin-left: -100px;
801
-
background: #0009;
802
-
border-radius: 10px;
803
-
box-shadow: #0005 0 0 10px;
804
-
}
805
-
806
-
.storage-bar{
807
-
width: calc(100% - 20px);
808
-
height: 10px;
809
-
margin-left: 10px;
810
-
background: #555;
811
-
border-radius: 10px;
812
-
display: flex;
813
-
justify-content: left;
814
-
align-items: center;
815
-
margin-bottom: 2px;
816
-
}
817
-
818
-
.storage-bar-inner{
819
-
margin: 2px;
820
-
height: 6px;
821
-
background: #00ccff;
822
-
border-radius: 10px;
823
-
}
824
-
825
-
.account-notice{
826
-
background: #0007;
827
-
border-radius: 5px;
828
-
box-shadow: #0005 0 0 10px;
829
-
padding: 10px;
830
-
margin: auto;
831
-
width: calc(50% - 20px);
832
-
margin-top: 25px;
833
}
···
1
+
@font-face {
2
+
font-family: Rubik;
3
+
src: url(https://cdn.phazed.xyz/fonts/rubik/Rubik-VariableFont_wght.ttf);
4
+
}
5
+
6
+
body{
7
+
background: #000;
8
+
margin: 0;
9
+
font-family: Rubik, 'Courier New';
10
+
overflow: hidden;
11
+
}
12
+
13
+
* {
14
+
box-sizing: border-box;
15
+
}
16
+
17
+
.loading{
18
+
position: fixed;
19
+
z-index: 10000;
20
+
top: 0;
21
+
left: 0;
22
+
width: 100%;
23
+
height: 100%;
24
+
background: black;
25
+
display: flex;
26
+
opacity: 1;
27
+
color: white;
28
+
justify-content: center;
29
+
align-items: center;
30
+
}
31
+
32
+
.confirmation-box{
33
+
position: fixed;
34
+
top: 0;
35
+
left: 0;
36
+
width: 100%;
37
+
height: 100%;
38
+
z-index: 15;
39
+
background: rgba(0, 0, 0, 0.76);
40
+
transition: 0.25s;
41
+
}
42
+
43
+
.confirmation-box-container{
44
+
position: fixed;
45
+
top: 50%;
46
+
left: 50%;
47
+
transform: translate(-50%, -50%);
48
+
color: white;
49
+
text-align: center;
50
+
background: #9995;
51
+
padding: 10px;
52
+
width: 60%;
53
+
border-radius: 10px;
54
+
box-shadow: #000 0 0 10px;
55
+
font-size: 18px;
56
+
-webkit-backdrop-filter: blur(10px);
57
+
backdrop-filter: blur(10px);
58
+
}
59
+
60
+
.button-danger{
61
+
display: inline-block;
62
+
-webkit-backdrop-filter: blur(10px);
63
+
backdrop-filter: blur(10px);
64
+
padding: 10px;
65
+
background: rgba(255, 0, 0, 0.333);
66
+
box-shadow: #0005 inset 0 0 10px;
67
+
border-radius: 50px;
68
+
margin: 0 10px;
69
+
cursor: pointer;
70
+
user-select: none;
71
+
-webkit-user-select: none;
72
+
width: 200px;
73
+
transition: 0.25s;
74
+
}
75
+
76
+
.button{
77
+
display: inline-block;
78
+
padding: 10px;
79
+
backdrop-filter: blur(10px);
80
+
-webkit-backdrop-filter: blur(10px);
81
+
background: #9995;
82
+
box-shadow: #0005 inset 0 0 10px;
83
+
border-radius: 50px;
84
+
margin: 0 10px;
85
+
cursor: pointer;
86
+
user-select: none;
87
+
-webkit-user-select: none;
88
+
width: 200px;
89
+
transition: 0.25s;
90
+
}
91
+
92
+
.button:hover{
93
+
box-shadow: #000a inset 0 0 10px;
94
+
}
95
+
96
+
.button-danger:hover{
97
+
box-shadow: #000a inset 0 0 10px;
98
+
}
99
+
100
+
img{
101
+
max-width: 100%;
102
+
max-height: 100%;
103
+
}
104
+
105
+
.error-notif{
106
+
position: fixed;
107
+
top: 40px;
108
+
left: 50%;
109
+
color: white;
110
+
transform: translateX(-50%) translateY(-100px);
111
+
background: rgba(43, 43, 43, 0.76);
112
+
padding: 10px 40px;
113
+
backdrop-filter: blur(10px);
114
+
-webkit-backdrop-filter: blur(10px);
115
+
border-radius: 50px;
116
+
box-shadow: #000 0 0 10px;
117
+
z-index: 12;
118
+
opacity: 0;
119
+
pointer-events: none;
120
}
+2313
-1260
src-tauri/Cargo.lock
+2313
-1260
src-tauri/Cargo.lock
···
1
# This file is automatically @generated by Cargo.
2
# It is not intended for manual editing.
3
-
version = 3
4
5
[[package]]
6
-
name = "addr2line"
7
-
version = "0.24.2"
8
-
source = "registry+https://github.com/rust-lang/crates.io-index"
9
-
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
10
dependencies = [
11
-
"gimli",
12
]
13
14
[[package]]
15
-
name = "adler"
16
-
version = "1.0.2"
17
-
source = "registry+https://github.com/rust-lang/crates.io-index"
18
-
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
19
-
20
-
[[package]]
21
name = "adler2"
22
-
version = "2.0.0"
23
source = "registry+https://github.com/rust-lang/crates.io-index"
24
-
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
25
26
[[package]]
27
name = "aho-corasick"
28
-
version = "1.1.3"
29
source = "registry+https://github.com/rust-lang/crates.io-index"
30
-
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
31
dependencies = [
32
"memchr",
33
]
34
35
[[package]]
36
name = "aligned-vec"
37
-
version = "0.5.0"
38
source = "registry+https://github.com/rust-lang/crates.io-index"
39
-
checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
40
41
[[package]]
42
name = "alloc-no-stdlib"
···
54
]
55
56
[[package]]
57
-
name = "android-tzdata"
58
-
version = "0.1.1"
59
-
source = "registry+https://github.com/rust-lang/crates.io-index"
60
-
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
61
-
62
-
[[package]]
63
name = "android_system_properties"
64
version = "0.1.5"
65
source = "registry+https://github.com/rust-lang/crates.io-index"
···
70
71
[[package]]
72
name = "anyhow"
73
-
version = "1.0.89"
74
source = "registry+https://github.com/rust-lang/crates.io-index"
75
-
checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
76
77
[[package]]
78
name = "arbitrary"
79
-
version = "1.3.2"
80
source = "registry+https://github.com/rust-lang/crates.io-index"
81
-
checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
82
83
[[package]]
84
name = "arg_enum_proc_macro"
···
88
dependencies = [
89
"proc-macro2",
90
"quote",
91
-
"syn 2.0.79",
92
]
93
94
[[package]]
···
98
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
99
100
[[package]]
101
name = "atk"
102
-
version = "0.18.0"
103
source = "registry+https://github.com/rust-lang/crates.io-index"
104
-
checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4"
105
dependencies = [
106
"atk-sys",
107
"glib",
···
110
111
[[package]]
112
name = "atk-sys"
113
-
version = "0.18.0"
114
source = "registry+https://github.com/rust-lang/crates.io-index"
115
-
checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009"
116
dependencies = [
117
"glib-sys",
118
"gobject-sys",
···
128
129
[[package]]
130
name = "autocfg"
131
-
version = "1.4.0"
132
source = "registry+https://github.com/rust-lang/crates.io-index"
133
-
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
134
135
[[package]]
136
name = "av1-grain"
137
-
version = "0.2.3"
138
source = "registry+https://github.com/rust-lang/crates.io-index"
139
-
checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf"
140
dependencies = [
141
"anyhow",
142
"arrayvec",
···
148
149
[[package]]
150
name = "avif-serialize"
151
-
version = "0.8.2"
152
source = "registry+https://github.com/rust-lang/crates.io-index"
153
-
checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62"
154
dependencies = [
155
"arrayvec",
156
]
157
158
[[package]]
159
-
name = "backtrace"
160
-
version = "0.3.74"
161
-
source = "registry+https://github.com/rust-lang/crates.io-index"
162
-
checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
163
-
dependencies = [
164
-
"addr2line",
165
-
"cfg-if",
166
-
"libc",
167
-
"miniz_oxide 0.8.0",
168
-
"object",
169
-
"rustc-demangle",
170
-
"windows-targets 0.52.6",
171
-
]
172
-
173
-
[[package]]
174
name = "base64"
175
version = "0.21.7"
176
source = "registry+https://github.com/rust-lang/crates.io-index"
···
184
185
[[package]]
186
name = "bit_field"
187
-
version = "0.10.2"
188
source = "registry+https://github.com/rust-lang/crates.io-index"
189
-
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
190
191
[[package]]
192
name = "bitflags"
···
196
197
[[package]]
198
name = "bitflags"
199
-
version = "2.6.0"
200
source = "registry+https://github.com/rust-lang/crates.io-index"
201
-
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
202
dependencies = [
203
-
"serde",
204
]
205
206
[[package]]
207
name = "bitstream-io"
208
-
version = "2.5.3"
209
-
source = "registry+https://github.com/rust-lang/crates.io-index"
210
-
checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452"
211
-
212
-
[[package]]
213
-
name = "block"
214
-
version = "0.1.6"
215
source = "registry+https://github.com/rust-lang/crates.io-index"
216
-
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
217
218
[[package]]
219
name = "block-buffer"
···
234
]
235
236
[[package]]
237
name = "brotli"
238
-
version = "6.0.0"
239
source = "registry+https://github.com/rust-lang/crates.io-index"
240
-
checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b"
241
dependencies = [
242
"alloc-no-stdlib",
243
"alloc-stdlib",
···
246
247
[[package]]
248
name = "brotli-decompressor"
249
-
version = "4.0.1"
250
source = "registry+https://github.com/rust-lang/crates.io-index"
251
-
checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362"
252
dependencies = [
253
"alloc-no-stdlib",
254
"alloc-stdlib",
···
256
257
[[package]]
258
name = "built"
259
-
version = "0.7.4"
260
source = "registry+https://github.com/rust-lang/crates.io-index"
261
-
checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4"
262
263
[[package]]
264
name = "bumpalo"
265
-
version = "3.16.0"
266
source = "registry+https://github.com/rust-lang/crates.io-index"
267
-
checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
268
269
[[package]]
270
name = "bytemuck"
271
-
version = "1.19.0"
272
source = "registry+https://github.com/rust-lang/crates.io-index"
273
-
checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d"
274
275
[[package]]
276
name = "byteorder"
···
286
287
[[package]]
288
name = "bytes"
289
-
version = "1.7.2"
290
source = "registry+https://github.com/rust-lang/crates.io-index"
291
-
checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
292
dependencies = [
293
"serde",
294
]
···
299
source = "registry+https://github.com/rust-lang/crates.io-index"
300
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
301
dependencies = [
302
-
"bitflags 2.6.0",
303
"cairo-sys-rs",
304
"glib",
305
"libc",
306
"once_cell",
307
-
"thiserror",
308
]
309
310
[[package]]
···
320
321
[[package]]
322
name = "camino"
323
-
version = "1.1.9"
324
source = "registry+https://github.com/rust-lang/crates.io-index"
325
-
checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
326
dependencies = [
327
-
"serde",
328
]
329
330
[[package]]
331
name = "cargo-platform"
332
-
version = "0.1.8"
333
source = "registry+https://github.com/rust-lang/crates.io-index"
334
-
checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
335
dependencies = [
336
"serde",
337
]
338
339
[[package]]
340
name = "cargo_metadata"
341
-
version = "0.18.1"
342
source = "registry+https://github.com/rust-lang/crates.io-index"
343
-
checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
344
dependencies = [
345
"camino",
346
"cargo-platform",
347
"semver",
348
"serde",
349
"serde_json",
350
-
"thiserror",
351
]
352
353
[[package]]
354
name = "cargo_toml"
355
-
version = "0.17.2"
356
source = "registry+https://github.com/rust-lang/crates.io-index"
357
-
checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719"
358
dependencies = [
359
"serde",
360
-
"toml 0.8.2",
361
]
362
363
[[package]]
364
name = "cc"
365
-
version = "1.1.30"
366
source = "registry+https://github.com/rust-lang/crates.io-index"
367
-
checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945"
368
dependencies = [
369
"jobserver",
370
"libc",
371
"shlex",
···
400
401
[[package]]
402
name = "cfg-if"
403
-
version = "1.0.0"
404
source = "registry+https://github.com/rust-lang/crates.io-index"
405
-
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
406
407
[[package]]
408
name = "cfg_aliases"
···
412
413
[[package]]
414
name = "chrono"
415
-
version = "0.4.38"
416
source = "registry+https://github.com/rust-lang/crates.io-index"
417
-
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
418
dependencies = [
419
-
"android-tzdata",
420
"iana-time-zone",
421
"num-traits",
422
"serde",
423
-
"windows-targets 0.52.6",
424
-
]
425
-
426
-
[[package]]
427
-
name = "cocoa"
428
-
version = "0.26.0"
429
-
source = "registry+https://github.com/rust-lang/crates.io-index"
430
-
checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2"
431
-
dependencies = [
432
-
"bitflags 2.6.0",
433
-
"block",
434
-
"cocoa-foundation",
435
-
"core-foundation 0.10.0",
436
-
"core-graphics",
437
-
"foreign-types 0.5.0",
438
-
"libc",
439
-
"objc",
440
]
441
442
[[package]]
443
-
name = "cocoa-foundation"
444
-
version = "0.2.0"
445
source = "registry+https://github.com/rust-lang/crates.io-index"
446
-
checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d"
447
dependencies = [
448
-
"bitflags 2.6.0",
449
-
"block",
450
-
"core-foundation 0.10.0",
451
-
"core-graphics-types",
452
-
"libc",
453
-
"objc",
454
]
455
456
[[package]]
···
470
]
471
472
[[package]]
473
name = "convert_case"
474
version = "0.4.0"
475
source = "registry+https://github.com/rust-lang/crates.io-index"
···
488
489
[[package]]
490
name = "cookie_store"
491
-
version = "0.21.0"
492
source = "registry+https://github.com/rust-lang/crates.io-index"
493
-
checksum = "4934e6b7e8419148b6ef56950d277af8561060b56afd59e2aadf98b59fce6baa"
494
dependencies = [
495
"cookie",
496
-
"idna 0.5.0",
497
"log",
498
"publicsuffix",
499
"serde",
···
515
516
[[package]]
517
name = "core-foundation"
518
-
version = "0.10.0"
519
source = "registry+https://github.com/rust-lang/crates.io-index"
520
-
checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"
521
dependencies = [
522
"core-foundation-sys",
523
"libc",
···
535
source = "registry+https://github.com/rust-lang/crates.io-index"
536
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
537
dependencies = [
538
-
"bitflags 2.6.0",
539
-
"core-foundation 0.10.0",
540
"core-graphics-types",
541
"foreign-types 0.5.0",
542
"libc",
···
548
source = "registry+https://github.com/rust-lang/crates.io-index"
549
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
550
dependencies = [
551
-
"bitflags 2.6.0",
552
-
"core-foundation 0.10.0",
553
"libc",
554
]
555
556
[[package]]
557
name = "cpufeatures"
558
-
version = "0.2.14"
559
source = "registry+https://github.com/rust-lang/crates.io-index"
560
-
checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0"
561
dependencies = [
562
"libc",
563
]
564
565
[[package]]
566
name = "crc32fast"
567
-
version = "1.4.2"
568
source = "registry+https://github.com/rust-lang/crates.io-index"
569
-
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
570
dependencies = [
571
"cfg-if",
572
]
573
574
[[package]]
575
name = "crossbeam-channel"
576
-
version = "0.5.13"
577
source = "registry+https://github.com/rust-lang/crates.io-index"
578
-
checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
579
dependencies = [
580
"crossbeam-utils",
581
]
582
583
[[package]]
584
name = "crossbeam-deque"
585
-
version = "0.8.5"
586
source = "registry+https://github.com/rust-lang/crates.io-index"
587
-
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
588
dependencies = [
589
"crossbeam-epoch",
590
"crossbeam-utils",
···
601
602
[[package]]
603
name = "crossbeam-utils"
604
-
version = "0.8.20"
605
source = "registry+https://github.com/rust-lang/crates.io-index"
606
-
checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
607
608
[[package]]
609
name = "crunchy"
610
-
version = "0.2.2"
611
source = "registry+https://github.com/rust-lang/crates.io-index"
612
-
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
613
614
[[package]]
615
name = "crypto-common"
···
623
624
[[package]]
625
name = "cssparser"
626
-
version = "0.27.2"
627
source = "registry+https://github.com/rust-lang/crates.io-index"
628
-
checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a"
629
dependencies = [
630
"cssparser-macros",
631
"dtoa-short",
632
-
"itoa 0.4.8",
633
"matches",
634
-
"phf 0.8.0",
635
"proc-macro2",
636
"quote",
637
"smallvec",
···
645
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
646
dependencies = [
647
"quote",
648
-
"syn 2.0.79",
649
]
650
651
[[package]]
652
name = "ctor"
653
-
version = "0.2.8"
654
source = "registry+https://github.com/rust-lang/crates.io-index"
655
-
checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
656
dependencies = [
657
"quote",
658
-
"syn 2.0.79",
659
]
660
661
[[package]]
662
name = "darling"
663
-
version = "0.20.10"
664
source = "registry+https://github.com/rust-lang/crates.io-index"
665
-
checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
666
dependencies = [
667
"darling_core",
668
"darling_macro",
···
670
671
[[package]]
672
name = "darling_core"
673
-
version = "0.20.10"
674
source = "registry+https://github.com/rust-lang/crates.io-index"
675
-
checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
676
dependencies = [
677
"fnv",
678
"ident_case",
679
"proc-macro2",
680
"quote",
681
"strsim",
682
-
"syn 2.0.79",
683
]
684
685
[[package]]
686
name = "darling_macro"
687
-
version = "0.20.10"
688
source = "registry+https://github.com/rust-lang/crates.io-index"
689
-
checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
690
dependencies = [
691
"darling_core",
692
"quote",
693
-
"syn 2.0.79",
694
]
695
696
[[package]]
697
name = "data-url"
698
-
version = "0.3.1"
699
source = "registry+https://github.com/rust-lang/crates.io-index"
700
-
checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
701
702
[[package]]
703
name = "deranged"
704
-
version = "0.3.11"
705
source = "registry+https://github.com/rust-lang/crates.io-index"
706
-
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
707
dependencies = [
708
"powerfmt",
709
-
"serde",
710
]
711
712
[[package]]
713
name = "derive_more"
714
-
version = "0.99.18"
715
source = "registry+https://github.com/rust-lang/crates.io-index"
716
-
checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
717
dependencies = [
718
"convert_case",
719
"proc-macro2",
720
"quote",
721
"rustc_version",
722
-
"syn 2.0.79",
723
]
724
725
[[package]]
···
734
735
[[package]]
736
name = "dirs"
737
-
version = "5.0.1"
738
source = "registry+https://github.com/rust-lang/crates.io-index"
739
-
checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
740
dependencies = [
741
"dirs-sys",
742
]
743
744
[[package]]
745
name = "dirs-sys"
746
-
version = "0.4.1"
747
source = "registry+https://github.com/rust-lang/crates.io-index"
748
-
checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
749
dependencies = [
750
"libc",
751
"option-ext",
752
"redox_users",
753
-
"windows-sys 0.48.0",
754
]
755
756
[[package]]
···
760
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
761
762
[[package]]
763
name = "dlopen2"
764
-
version = "0.7.0"
765
source = "registry+https://github.com/rust-lang/crates.io-index"
766
-
checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6"
767
dependencies = [
768
"dlopen2_derive",
769
"libc",
···
773
774
[[package]]
775
name = "dlopen2_derive"
776
-
version = "0.4.0"
777
source = "registry+https://github.com/rust-lang/crates.io-index"
778
-
checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
779
dependencies = [
780
"proc-macro2",
781
"quote",
782
-
"syn 2.0.79",
783
]
784
785
[[package]]
786
name = "document-features"
787
-
version = "0.2.10"
788
source = "registry+https://github.com/rust-lang/crates.io-index"
789
-
checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0"
790
dependencies = [
791
"litrs",
792
]
793
794
[[package]]
795
name = "dpi"
796
-
version = "0.1.1"
797
source = "registry+https://github.com/rust-lang/crates.io-index"
798
-
checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
799
dependencies = [
800
"serde",
801
]
802
803
[[package]]
804
name = "dtoa"
805
-
version = "1.0.9"
806
source = "registry+https://github.com/rust-lang/crates.io-index"
807
-
checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653"
808
809
[[package]]
810
name = "dtoa-short"
···
823
824
[[package]]
825
name = "dyn-clone"
826
-
version = "1.0.17"
827
source = "registry+https://github.com/rust-lang/crates.io-index"
828
-
checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
829
830
[[package]]
831
name = "either"
832
-
version = "1.13.0"
833
source = "registry+https://github.com/rust-lang/crates.io-index"
834
-
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
835
836
[[package]]
837
name = "embed-resource"
838
-
version = "2.5.0"
839
source = "registry+https://github.com/rust-lang/crates.io-index"
840
-
checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa"
841
dependencies = [
842
"cc",
843
"memchr",
844
"rustc_version",
845
-
"toml 0.8.2",
846
"vswhom",
847
-
"winreg 0.52.0",
848
]
849
850
[[package]]
···
855
856
[[package]]
857
name = "encoding_rs"
858
-
version = "0.8.34"
859
source = "registry+https://github.com/rust-lang/crates.io-index"
860
-
checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
861
dependencies = [
862
"cfg-if",
863
]
864
865
[[package]]
866
name = "equivalent"
867
-
version = "1.0.1"
868
source = "registry+https://github.com/rust-lang/crates.io-index"
869
-
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
870
871
[[package]]
872
name = "erased-serde"
873
-
version = "0.4.5"
874
source = "registry+https://github.com/rust-lang/crates.io-index"
875
-
checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d"
876
dependencies = [
877
"serde",
878
"typeid",
879
]
880
881
[[package]]
882
name = "errno"
883
-
version = "0.3.9"
884
source = "registry+https://github.com/rust-lang/crates.io-index"
885
-
checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
886
dependencies = [
887
"libc",
888
-
"windows-sys 0.52.0",
889
]
890
891
[[package]]
892
name = "exr"
893
-
version = "1.72.0"
894
source = "registry+https://github.com/rust-lang/crates.io-index"
895
-
checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4"
896
dependencies = [
897
"bit_field",
898
-
"flume",
899
"half",
900
"lebe",
901
-
"miniz_oxide 0.7.4",
902
"rayon-core",
903
"smallvec",
904
"zune-inflate",
···
906
907
[[package]]
908
name = "fast_image_resize"
909
-
version = "4.2.1"
910
source = "registry+https://github.com/rust-lang/crates.io-index"
911
-
checksum = "2ca4b58827213977eabab8ee8d8258db8441338f3a1832a1c0f2de3372175531"
912
dependencies = [
913
"bytemuck",
914
"cfg-if",
915
"document-features",
916
"image",
917
"num-traits",
918
-
"thiserror",
919
]
920
921
[[package]]
922
name = "fastrand"
923
-
version = "2.1.1"
924
source = "registry+https://github.com/rust-lang/crates.io-index"
925
-
checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
926
927
[[package]]
928
-
name = "fdeflate"
929
-
version = "0.3.5"
930
source = "registry+https://github.com/rust-lang/crates.io-index"
931
-
checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab"
932
dependencies = [
933
-
"simd-adler32",
934
]
935
936
[[package]]
937
-
name = "field-offset"
938
-
version = "0.3.6"
939
source = "registry+https://github.com/rust-lang/crates.io-index"
940
-
checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
941
dependencies = [
942
-
"memoffset",
943
-
"rustc_version",
944
]
945
946
[[package]]
947
-
name = "filetime"
948
-
version = "0.2.25"
949
source = "registry+https://github.com/rust-lang/crates.io-index"
950
-
checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
951
dependencies = [
952
-
"cfg-if",
953
-
"libc",
954
-
"libredox",
955
-
"windows-sys 0.59.0",
956
]
957
958
[[package]]
959
-
name = "flate2"
960
-
version = "1.0.34"
961
source = "registry+https://github.com/rust-lang/crates.io-index"
962
-
checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
963
dependencies = [
964
-
"crc32fast",
965
-
"miniz_oxide 0.8.0",
966
]
967
968
[[package]]
969
-
name = "fluent-uri"
970
version = "0.1.4"
971
source = "registry+https://github.com/rust-lang/crates.io-index"
972
-
checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d"
973
-
dependencies = [
974
-
"bitflags 1.3.2",
975
-
]
976
977
[[package]]
978
-
name = "flume"
979
-
version = "0.11.0"
980
source = "registry+https://github.com/rust-lang/crates.io-index"
981
-
checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181"
982
dependencies = [
983
-
"spin",
984
]
985
986
[[package]]
···
1016
dependencies = [
1017
"proc-macro2",
1018
"quote",
1019
-
"syn 2.0.79",
1020
]
1021
1022
[[package]]
···
1033
1034
[[package]]
1035
name = "form_urlencoded"
1036
-
version = "1.2.1"
1037
source = "registry+https://github.com/rust-lang/crates.io-index"
1038
-
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
1039
dependencies = [
1040
"percent-encoding",
1041
]
···
1091
version = "0.3.31"
1092
source = "registry+https://github.com/rust-lang/crates.io-index"
1093
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
1094
1095
[[package]]
1096
name = "futures-macro"
···
1100
dependencies = [
1101
"proc-macro2",
1102
"quote",
1103
-
"syn 2.0.79",
1104
]
1105
1106
[[package]]
···
1143
1144
[[package]]
1145
name = "gdk"
1146
-
version = "0.18.0"
1147
source = "registry+https://github.com/rust-lang/crates.io-index"
1148
-
checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646"
1149
dependencies = [
1150
"cairo-rs",
1151
"gdk-pixbuf",
···
1184
1185
[[package]]
1186
name = "gdk-sys"
1187
-
version = "0.18.0"
1188
source = "registry+https://github.com/rust-lang/crates.io-index"
1189
-
checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2"
1190
dependencies = [
1191
"cairo-sys-rs",
1192
"gdk-pixbuf-sys",
···
1201
1202
[[package]]
1203
name = "gdkwayland-sys"
1204
-
version = "0.18.0"
1205
source = "registry+https://github.com/rust-lang/crates.io-index"
1206
-
checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a"
1207
dependencies = [
1208
"gdk-sys",
1209
"glib-sys",
···
1215
1216
[[package]]
1217
name = "gdkx11"
1218
-
version = "0.18.0"
1219
source = "registry+https://github.com/rust-lang/crates.io-index"
1220
-
checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce"
1221
dependencies = [
1222
"gdk",
1223
"gdkx11-sys",
···
1229
1230
[[package]]
1231
name = "gdkx11-sys"
1232
-
version = "0.18.0"
1233
source = "registry+https://github.com/rust-lang/crates.io-index"
1234
-
checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043"
1235
dependencies = [
1236
"gdk-sys",
1237
"glib-sys",
···
1242
1243
[[package]]
1244
name = "generic-array"
1245
-
version = "0.14.7"
1246
source = "registry+https://github.com/rust-lang/crates.io-index"
1247
-
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
1248
dependencies = [
1249
"typenum",
1250
"version_check",
1251
]
1252
1253
[[package]]
1254
name = "getrandom"
1255
version = "0.1.16"
1256
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1263
1264
[[package]]
1265
name = "getrandom"
1266
-
version = "0.2.15"
1267
source = "registry+https://github.com/rust-lang/crates.io-index"
1268
-
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
1269
dependencies = [
1270
"cfg-if",
1271
"libc",
1272
-
"wasi 0.11.0+wasi-snapshot-preview1",
1273
]
1274
1275
[[package]]
1276
-
name = "gif"
1277
-
version = "0.13.1"
1278
source = "registry+https://github.com/rust-lang/crates.io-index"
1279
-
checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2"
1280
dependencies = [
1281
-
"color_quant",
1282
-
"weezl",
1283
]
1284
1285
[[package]]
1286
-
name = "gimli"
1287
-
version = "0.31.1"
1288
source = "registry+https://github.com/rust-lang/crates.io-index"
1289
-
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
1290
1291
[[package]]
1292
name = "gio"
···
1304
"once_cell",
1305
"pin-project-lite",
1306
"smallvec",
1307
-
"thiserror",
1308
]
1309
1310
[[package]]
···
1326
source = "registry+https://github.com/rust-lang/crates.io-index"
1327
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
1328
dependencies = [
1329
-
"bitflags 2.6.0",
1330
"futures-channel",
1331
"futures-core",
1332
"futures-executor",
···
1340
"memchr",
1341
"once_cell",
1342
"smallvec",
1343
-
"thiserror",
1344
]
1345
1346
[[package]]
···
1354
"proc-macro-error",
1355
"proc-macro2",
1356
"quote",
1357
-
"syn 2.0.79",
1358
]
1359
1360
[[package]]
···
1369
1370
[[package]]
1371
name = "glob"
1372
-
version = "0.3.1"
1373
source = "registry+https://github.com/rust-lang/crates.io-index"
1374
-
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
1375
1376
[[package]]
1377
name = "gobject-sys"
···
1386
1387
[[package]]
1388
name = "gtk"
1389
-
version = "0.18.1"
1390
source = "registry+https://github.com/rust-lang/crates.io-index"
1391
-
checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c"
1392
dependencies = [
1393
"atk",
1394
"cairo-rs",
···
1407
1408
[[package]]
1409
name = "gtk-sys"
1410
-
version = "0.18.0"
1411
source = "registry+https://github.com/rust-lang/crates.io-index"
1412
-
checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722"
1413
dependencies = [
1414
"atk-sys",
1415
"cairo-sys-rs",
···
1425
1426
[[package]]
1427
name = "gtk3-macros"
1428
-
version = "0.18.0"
1429
source = "registry+https://github.com/rust-lang/crates.io-index"
1430
-
checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e"
1431
dependencies = [
1432
"proc-macro-crate 1.3.1",
1433
"proc-macro-error",
1434
"proc-macro2",
1435
"quote",
1436
-
"syn 2.0.79",
1437
]
1438
1439
[[package]]
1440
name = "h2"
1441
-
version = "0.4.6"
1442
source = "registry+https://github.com/rust-lang/crates.io-index"
1443
-
checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205"
1444
dependencies = [
1445
"atomic-waker",
1446
"bytes",
···
1448
"futures-core",
1449
"futures-sink",
1450
"http",
1451
-
"indexmap 2.6.0",
1452
"slab",
1453
"tokio",
1454
"tokio-util",
···
1457
1458
[[package]]
1459
name = "half"
1460
-
version = "2.4.1"
1461
source = "registry+https://github.com/rust-lang/crates.io-index"
1462
-
checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
1463
dependencies = [
1464
"cfg-if",
1465
"crunchy",
1466
]
1467
1468
[[package]]
···
1473
1474
[[package]]
1475
name = "hashbrown"
1476
-
version = "0.15.0"
1477
source = "registry+https://github.com/rust-lang/crates.io-index"
1478
-
checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb"
1479
1480
[[package]]
1481
name = "heck"
···
1491
1492
[[package]]
1493
name = "hermit-abi"
1494
-
version = "0.3.9"
1495
source = "registry+https://github.com/rust-lang/crates.io-index"
1496
-
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
1497
1498
[[package]]
1499
name = "hex"
···
1503
1504
[[package]]
1505
name = "html5ever"
1506
-
version = "0.26.0"
1507
source = "registry+https://github.com/rust-lang/crates.io-index"
1508
-
checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7"
1509
dependencies = [
1510
"log",
1511
"mac",
1512
"markup5ever",
1513
-
"proc-macro2",
1514
-
"quote",
1515
-
"syn 1.0.109",
1516
]
1517
1518
[[package]]
1519
name = "http"
1520
-
version = "1.1.0"
1521
source = "registry+https://github.com/rust-lang/crates.io-index"
1522
-
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
1523
dependencies = [
1524
"bytes",
1525
"fnv",
1526
-
"itoa 1.0.11",
1527
]
1528
1529
[[package]]
···
1538
1539
[[package]]
1540
name = "http-body-util"
1541
-
version = "0.1.2"
1542
source = "registry+https://github.com/rust-lang/crates.io-index"
1543
-
checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"
1544
dependencies = [
1545
"bytes",
1546
-
"futures-util",
1547
"http",
1548
"http-body",
1549
"pin-project-lite",
···
1551
1552
[[package]]
1553
name = "httparse"
1554
-
version = "1.9.5"
1555
source = "registry+https://github.com/rust-lang/crates.io-index"
1556
-
checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
1557
1558
[[package]]
1559
name = "hyper"
1560
-
version = "1.5.0"
1561
source = "registry+https://github.com/rust-lang/crates.io-index"
1562
-
checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a"
1563
dependencies = [
1564
"bytes",
1565
"futures-channel",
1566
-
"futures-util",
1567
"h2",
1568
"http",
1569
"http-body",
1570
"httparse",
1571
-
"itoa 1.0.11",
1572
"pin-project-lite",
1573
"smallvec",
1574
"tokio",
1575
"want",
···
1577
1578
[[package]]
1579
name = "hyper-rustls"
1580
-
version = "0.27.3"
1581
source = "registry+https://github.com/rust-lang/crates.io-index"
1582
-
checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
1583
dependencies = [
1584
-
"futures-util",
1585
"http",
1586
"hyper",
1587
"hyper-util",
···
1611
1612
[[package]]
1613
name = "hyper-util"
1614
-
version = "0.1.9"
1615
source = "registry+https://github.com/rust-lang/crates.io-index"
1616
-
checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
1617
dependencies = [
1618
"bytes",
1619
"futures-channel",
1620
"futures-util",
1621
"http",
1622
"http-body",
1623
"hyper",
1624
"pin-project-lite",
1625
"socket2",
1626
"tokio",
1627
"tower-service",
1628
"tracing",
1629
]
1630
1631
[[package]]
1632
name = "iana-time-zone"
1633
-
version = "0.1.61"
1634
source = "registry+https://github.com/rust-lang/crates.io-index"
1635
-
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
1636
dependencies = [
1637
"android_system_properties",
1638
"core-foundation-sys",
1639
"iana-time-zone-haiku",
1640
"js-sys",
1641
"wasm-bindgen",
1642
-
"windows-core 0.52.0",
1643
]
1644
1645
[[package]]
···
1653
1654
[[package]]
1655
name = "ico"
1656
-
version = "0.3.0"
1657
source = "registry+https://github.com/rust-lang/crates.io-index"
1658
-
checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae"
1659
dependencies = [
1660
"byteorder",
1661
-
"png",
1662
]
1663
1664
[[package]]
···
1669
1670
[[package]]
1671
name = "idna"
1672
-
version = "0.3.0"
1673
source = "registry+https://github.com/rust-lang/crates.io-index"
1674
-
checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
1675
dependencies = [
1676
-
"unicode-bidi",
1677
-
"unicode-normalization",
1678
]
1679
1680
[[package]]
1681
-
name = "idna"
1682
-
version = "0.5.0"
1683
source = "registry+https://github.com/rust-lang/crates.io-index"
1684
-
checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
1685
dependencies = [
1686
-
"unicode-bidi",
1687
-
"unicode-normalization",
1688
]
1689
1690
[[package]]
1691
name = "image"
1692
-
version = "0.25.3"
1693
source = "registry+https://github.com/rust-lang/crates.io-index"
1694
-
checksum = "d97eb9a8e0cd5b76afea91d7eecd5cf8338cd44ced04256cf1f800474b227c52"
1695
dependencies = [
1696
"bytemuck",
1697
"byteorder-lite",
···
1699
"exr",
1700
"gif",
1701
"image-webp",
1702
"num-traits",
1703
-
"png",
1704
"qoi",
1705
"ravif",
1706
"rayon",
···
1712
1713
[[package]]
1714
name = "image-webp"
1715
-
version = "0.2.0"
1716
source = "registry+https://github.com/rust-lang/crates.io-index"
1717
-
checksum = "e031e8e3d94711a9ccb5d6ea357439ef3dcbed361798bd4071dc4d9793fbe22f"
1718
dependencies = [
1719
"byteorder-lite",
1720
"quick-error",
···
1722
1723
[[package]]
1724
name = "imgref"
1725
-
version = "1.11.0"
1726
source = "registry+https://github.com/rust-lang/crates.io-index"
1727
-
checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
1728
1729
[[package]]
1730
name = "indexmap"
···
1739
1740
[[package]]
1741
name = "indexmap"
1742
-
version = "2.6.0"
1743
source = "registry+https://github.com/rust-lang/crates.io-index"
1744
-
checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
1745
dependencies = [
1746
"equivalent",
1747
-
"hashbrown 0.15.0",
1748
"serde",
1749
-
]
1750
-
1751
-
[[package]]
1752
-
name = "infer"
1753
-
version = "0.13.0"
1754
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1755
-
checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc"
1756
-
dependencies = [
1757
-
"cfb",
1758
]
1759
1760
[[package]]
1761
name = "infer"
1762
-
version = "0.16.0"
1763
source = "registry+https://github.com/rust-lang/crates.io-index"
1764
-
checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847"
1765
dependencies = [
1766
"cfb",
1767
]
1768
1769
[[package]]
1770
name = "inotify"
1771
-
version = "0.9.6"
1772
source = "registry+https://github.com/rust-lang/crates.io-index"
1773
-
checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
1774
dependencies = [
1775
-
"bitflags 1.3.2",
1776
"inotify-sys",
1777
"libc",
1778
]
···
1787
]
1788
1789
[[package]]
1790
-
name = "instant"
1791
-
version = "0.1.13"
1792
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1793
-
checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
1794
-
dependencies = [
1795
-
"cfg-if",
1796
-
]
1797
-
1798
-
[[package]]
1799
name = "interpolate_name"
1800
version = "0.2.4"
1801
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1803
dependencies = [
1804
"proc-macro2",
1805
"quote",
1806
-
"syn 2.0.79",
1807
]
1808
1809
[[package]]
1810
-
name = "interprocess"
1811
-
version = "1.2.1"
1812
source = "registry+https://github.com/rust-lang/crates.io-index"
1813
-
checksum = "81f2533f3be42fffe3b5e63b71aeca416c1c3bc33e4e27be018521e76b1f38fb"
1814
-
dependencies = [
1815
-
"cfg-if",
1816
-
"libc",
1817
-
"rustc_version",
1818
-
"to_method",
1819
-
"winapi",
1820
-
]
1821
1822
[[package]]
1823
-
name = "ipnet"
1824
-
version = "2.10.1"
1825
source = "registry+https://github.com/rust-lang/crates.io-index"
1826
-
checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708"
1827
1828
[[package]]
1829
name = "is-docker"
···
1855
1856
[[package]]
1857
name = "itoa"
1858
-
version = "0.4.8"
1859
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1860
-
checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
1861
-
1862
-
[[package]]
1863
-
name = "itoa"
1864
-
version = "1.0.11"
1865
source = "registry+https://github.com/rust-lang/crates.io-index"
1866
-
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
1867
1868
[[package]]
1869
name = "javascriptcore-rs"
···
1899
"combine",
1900
"jni-sys",
1901
"log",
1902
-
"thiserror",
1903
"walkdir",
1904
"windows-sys 0.45.0",
1905
]
···
1912
1913
[[package]]
1914
name = "jobserver"
1915
-
version = "0.1.32"
1916
source = "registry+https://github.com/rust-lang/crates.io-index"
1917
-
checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
1918
dependencies = [
1919
"libc",
1920
]
1921
1922
[[package]]
1923
-
name = "jpeg-decoder"
1924
-
version = "0.3.1"
1925
-
source = "registry+https://github.com/rust-lang/crates.io-index"
1926
-
checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
1927
-
1928
-
[[package]]
1929
name = "js-sys"
1930
-
version = "0.3.72"
1931
source = "registry+https://github.com/rust-lang/crates.io-index"
1932
-
checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"
1933
dependencies = [
1934
"wasm-bindgen",
1935
]
1936
1937
[[package]]
1938
name = "json-patch"
1939
-
version = "2.0.0"
1940
source = "registry+https://github.com/rust-lang/crates.io-index"
1941
-
checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc"
1942
dependencies = [
1943
"jsonptr",
1944
"serde",
1945
"serde_json",
1946
-
"thiserror",
1947
]
1948
1949
[[package]]
1950
name = "jsonptr"
1951
-
version = "0.4.7"
1952
source = "registry+https://github.com/rust-lang/crates.io-index"
1953
-
checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627"
1954
dependencies = [
1955
-
"fluent-uri",
1956
"serde",
1957
"serde_json",
1958
]
···
1963
source = "registry+https://github.com/rust-lang/crates.io-index"
1964
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
1965
dependencies = [
1966
-
"bitflags 2.6.0",
1967
"serde",
1968
"unicode-segmentation",
1969
]
1970
1971
[[package]]
1972
name = "kqueue"
1973
-
version = "1.0.8"
1974
source = "registry+https://github.com/rust-lang/crates.io-index"
1975
-
checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
1976
dependencies = [
1977
"kqueue-sys",
1978
"libc",
···
1990
1991
[[package]]
1992
name = "kuchikiki"
1993
-
version = "0.8.2"
1994
source = "registry+https://github.com/rust-lang/crates.io-index"
1995
-
checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8"
1996
dependencies = [
1997
"cssparser",
1998
"html5ever",
1999
-
"indexmap 1.9.3",
2000
-
"matches",
2001
"selectors",
2002
]
2003
···
2009
2010
[[package]]
2011
name = "lebe"
2012
-
version = "0.5.2"
2013
source = "registry+https://github.com/rust-lang/crates.io-index"
2014
-
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
2015
2016
[[package]]
2017
name = "libappindicator"
···
2039
2040
[[package]]
2041
name = "libc"
2042
-
version = "0.2.159"
2043
source = "registry+https://github.com/rust-lang/crates.io-index"
2044
-
checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
2045
2046
[[package]]
2047
name = "libfuzzer-sys"
2048
-
version = "0.4.7"
2049
source = "registry+https://github.com/rust-lang/crates.io-index"
2050
-
checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7"
2051
dependencies = [
2052
"arbitrary",
2053
"cc",
2054
-
"once_cell",
2055
]
2056
2057
[[package]]
···
2066
2067
[[package]]
2068
name = "libredox"
2069
-
version = "0.1.3"
2070
source = "registry+https://github.com/rust-lang/crates.io-index"
2071
-
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
2072
dependencies = [
2073
-
"bitflags 2.6.0",
2074
"libc",
2075
-
"redox_syscall",
2076
]
2077
2078
[[package]]
2079
name = "linux-raw-sys"
2080
-
version = "0.4.14"
2081
source = "registry+https://github.com/rust-lang/crates.io-index"
2082
-
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
2083
2084
[[package]]
2085
name = "litrs"
2086
-
version = "0.4.1"
2087
source = "registry+https://github.com/rust-lang/crates.io-index"
2088
-
checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5"
2089
2090
[[package]]
2091
name = "lock_api"
2092
-
version = "0.4.12"
2093
source = "registry+https://github.com/rust-lang/crates.io-index"
2094
-
checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
2095
dependencies = [
2096
-
"autocfg",
2097
"scopeguard",
2098
]
2099
2100
[[package]]
2101
name = "log"
2102
-
version = "0.4.22"
2103
source = "registry+https://github.com/rust-lang/crates.io-index"
2104
-
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
2105
2106
[[package]]
2107
name = "loop9"
···
2113
]
2114
2115
[[package]]
2116
name = "mac"
2117
version = "0.1.1"
2118
source = "registry+https://github.com/rust-lang/crates.io-index"
2119
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
2120
2121
[[package]]
2122
-
name = "malloc_buf"
2123
-
version = "0.0.6"
2124
source = "registry+https://github.com/rust-lang/crates.io-index"
2125
-
checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
2126
dependencies = [
2127
-
"libc",
2128
]
2129
2130
[[package]]
2131
-
name = "markup5ever"
2132
-
version = "0.11.0"
2133
source = "registry+https://github.com/rust-lang/crates.io-index"
2134
-
checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016"
2135
dependencies = [
2136
-
"log",
2137
-
"phf 0.10.1",
2138
-
"phf_codegen 0.10.0",
2139
-
"string_cache",
2140
-
"string_cache_codegen",
2141
-
"tendril",
2142
]
2143
2144
[[package]]
···
2154
checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
2155
dependencies = [
2156
"cfg-if",
2157
]
2158
2159
[[package]]
2160
name = "memchr"
2161
-
version = "2.7.4"
2162
source = "registry+https://github.com/rust-lang/crates.io-index"
2163
-
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
2164
2165
[[package]]
2166
name = "memoffset"
···
2178
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
2179
2180
[[package]]
2181
-
name = "minimal-lexical"
2182
-
version = "0.2.1"
2183
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2184
-
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
2185
-
2186
-
[[package]]
2187
name = "miniz_oxide"
2188
-
version = "0.7.4"
2189
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2190
-
checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
2191
-
dependencies = [
2192
-
"adler",
2193
-
]
2194
-
2195
-
[[package]]
2196
-
name = "miniz_oxide"
2197
-
version = "0.8.0"
2198
source = "registry+https://github.com/rust-lang/crates.io-index"
2199
-
checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
2200
dependencies = [
2201
"adler2",
2202
"simd-adler32",
···
2204
2205
[[package]]
2206
name = "mio"
2207
-
version = "0.8.11"
2208
source = "registry+https://github.com/rust-lang/crates.io-index"
2209
-
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
2210
dependencies = [
2211
"libc",
2212
"log",
2213
-
"wasi 0.11.0+wasi-snapshot-preview1",
2214
-
"windows-sys 0.48.0",
2215
]
2216
2217
[[package]]
2218
-
name = "mio"
2219
-
version = "1.0.2"
2220
source = "registry+https://github.com/rust-lang/crates.io-index"
2221
-
checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"
2222
dependencies = [
2223
-
"hermit-abi",
2224
-
"libc",
2225
-
"wasi 0.11.0+wasi-snapshot-preview1",
2226
-
"windows-sys 0.52.0",
2227
]
2228
2229
[[package]]
···
2239
2240
[[package]]
2241
name = "muda"
2242
-
version = "0.15.1"
2243
source = "registry+https://github.com/rust-lang/crates.io-index"
2244
-
checksum = "b8123dfd4996055ac9b15a60ad263b44b01e539007523ad7a4a533a3d93b0591"
2245
dependencies = [
2246
"crossbeam-channel",
2247
"dpi",
2248
"gtk",
2249
"keyboard-types",
2250
-
"objc2 0.5.2",
2251
"objc2-app-kit",
2252
-
"objc2-foundation",
2253
"once_cell",
2254
-
"png",
2255
"serde",
2256
-
"thiserror",
2257
-
"windows-sys 0.59.0",
2258
]
2259
2260
[[package]]
2261
name = "native-tls"
2262
-
version = "0.2.12"
2263
source = "registry+https://github.com/rust-lang/crates.io-index"
2264
-
checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466"
2265
dependencies = [
2266
"libc",
2267
"log",
···
2280
source = "registry+https://github.com/rust-lang/crates.io-index"
2281
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
2282
dependencies = [
2283
-
"bitflags 2.6.0",
2284
"jni-sys",
2285
"log",
2286
"ndk-sys",
2287
"num_enum",
2288
"raw-window-handle",
2289
-
"thiserror",
2290
]
2291
2292
[[package]]
···
2311
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
2312
2313
[[package]]
2314
name = "nodrop"
2315
version = "0.1.14"
2316
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2318
2319
[[package]]
2320
name = "nom"
2321
-
version = "7.1.3"
2322
source = "registry+https://github.com/rust-lang/crates.io-index"
2323
-
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
2324
dependencies = [
2325
"memchr",
2326
-
"minimal-lexical",
2327
]
2328
2329
[[package]]
···
2334
2335
[[package]]
2336
name = "notify"
2337
-
version = "6.1.1"
2338
source = "registry+https://github.com/rust-lang/crates.io-index"
2339
-
checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
2340
dependencies = [
2341
-
"bitflags 2.6.0",
2342
-
"crossbeam-channel",
2343
-
"filetime",
2344
"fsevent-sys",
2345
"inotify",
2346
"kqueue",
2347
"libc",
2348
"log",
2349
-
"mio 0.8.11",
2350
"walkdir",
2351
-
"windows-sys 0.48.0",
2352
]
2353
2354
[[package]]
2355
name = "num-bigint"
2356
version = "0.4.6"
2357
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2375
dependencies = [
2376
"proc-macro2",
2377
"quote",
2378
-
"syn 2.0.79",
2379
]
2380
2381
[[package]]
···
2409
2410
[[package]]
2411
name = "num_enum"
2412
-
version = "0.7.3"
2413
source = "registry+https://github.com/rust-lang/crates.io-index"
2414
-
checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179"
2415
dependencies = [
2416
"num_enum_derive",
2417
]
2418
2419
[[package]]
2420
name = "num_enum_derive"
2421
-
version = "0.7.3"
2422
source = "registry+https://github.com/rust-lang/crates.io-index"
2423
-
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
2424
dependencies = [
2425
-
"proc-macro-crate 2.0.2",
2426
"proc-macro2",
2427
"quote",
2428
-
"syn 2.0.79",
2429
-
]
2430
-
2431
-
[[package]]
2432
-
name = "objc"
2433
-
version = "0.2.7"
2434
-
source = "registry+https://github.com/rust-lang/crates.io-index"
2435
-
checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
2436
-
dependencies = [
2437
-
"malloc_buf",
2438
]
2439
2440
[[package]]
···
2442
version = "0.3.5"
2443
source = "registry+https://github.com/rust-lang/crates.io-index"
2444
checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310"
2445
-
dependencies = [
2446
-
"cc",
2447
-
]
2448
2449
[[package]]
2450
name = "objc2"
2451
-
version = "0.4.1"
2452
source = "registry+https://github.com/rust-lang/crates.io-index"
2453
-
checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d"
2454
dependencies = [
2455
"objc-sys",
2456
-
"objc2-encode 3.0.0",
2457
]
2458
2459
[[package]]
2460
name = "objc2"
2461
-
version = "0.5.2"
2462
source = "registry+https://github.com/rust-lang/crates.io-index"
2463
-
checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804"
2464
dependencies = [
2465
-
"objc-sys",
2466
-
"objc2-encode 4.0.3",
2467
]
2468
2469
[[package]]
2470
name = "objc2-app-kit"
2471
-
version = "0.2.2"
2472
source = "registry+https://github.com/rust-lang/crates.io-index"
2473
-
checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
2474
dependencies = [
2475
-
"bitflags 2.6.0",
2476
-
"block2",
2477
"libc",
2478
-
"objc2 0.5.2",
2479
"objc2-core-data",
2480
"objc2-core-image",
2481
-
"objc2-foundation",
2482
-
"objc2-quartz-core",
2483
]
2484
2485
[[package]]
2486
name = "objc2-cloud-kit"
2487
-
version = "0.2.2"
2488
source = "registry+https://github.com/rust-lang/crates.io-index"
2489
-
checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009"
2490
dependencies = [
2491
-
"bitflags 2.6.0",
2492
-
"block2",
2493
-
"objc2 0.5.2",
2494
-
"objc2-core-location",
2495
-
"objc2-foundation",
2496
]
2497
2498
[[package]]
2499
-
name = "objc2-contacts"
2500
-
version = "0.2.2"
2501
source = "registry+https://github.com/rust-lang/crates.io-index"
2502
-
checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889"
2503
dependencies = [
2504
-
"block2",
2505
-
"objc2 0.5.2",
2506
-
"objc2-foundation",
2507
]
2508
2509
[[package]]
2510
-
name = "objc2-core-data"
2511
-
version = "0.2.2"
2512
source = "registry+https://github.com/rust-lang/crates.io-index"
2513
-
checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
2514
dependencies = [
2515
-
"bitflags 2.6.0",
2516
-
"block2",
2517
-
"objc2 0.5.2",
2518
-
"objc2-foundation",
2519
]
2520
2521
[[package]]
2522
name = "objc2-core-image"
2523
-
version = "0.2.2"
2524
source = "registry+https://github.com/rust-lang/crates.io-index"
2525
-
checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
2526
dependencies = [
2527
-
"block2",
2528
-
"objc2 0.5.2",
2529
-
"objc2-foundation",
2530
-
"objc2-metal",
2531
]
2532
2533
[[package]]
2534
-
name = "objc2-core-location"
2535
-
version = "0.2.2"
2536
source = "registry+https://github.com/rust-lang/crates.io-index"
2537
-
checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781"
2538
dependencies = [
2539
-
"block2",
2540
-
"objc2 0.5.2",
2541
-
"objc2-contacts",
2542
-
"objc2-foundation",
2543
]
2544
2545
[[package]]
2546
name = "objc2-encode"
2547
-
version = "3.0.0"
2548
source = "registry+https://github.com/rust-lang/crates.io-index"
2549
-
checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666"
2550
2551
[[package]]
2552
-
name = "objc2-encode"
2553
-
version = "4.0.3"
2554
source = "registry+https://github.com/rust-lang/crates.io-index"
2555
-
checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8"
2556
2557
[[package]]
2558
name = "objc2-foundation"
···
2560
source = "registry+https://github.com/rust-lang/crates.io-index"
2561
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
2562
dependencies = [
2563
-
"bitflags 2.6.0",
2564
-
"block2",
2565
"libc",
2566
"objc2 0.5.2",
2567
]
2568
2569
[[package]]
2570
-
name = "objc2-link-presentation"
2571
-
version = "0.2.2"
2572
source = "registry+https://github.com/rust-lang/crates.io-index"
2573
-
checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398"
2574
dependencies = [
2575
-
"block2",
2576
-
"objc2 0.5.2",
2577
-
"objc2-app-kit",
2578
-
"objc2-foundation",
2579
]
2580
2581
[[package]]
2582
-
name = "objc2-metal"
2583
-
version = "0.2.2"
2584
source = "registry+https://github.com/rust-lang/crates.io-index"
2585
-
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
2586
dependencies = [
2587
-
"bitflags 2.6.0",
2588
-
"block2",
2589
-
"objc2 0.5.2",
2590
-
"objc2-foundation",
2591
]
2592
2593
[[package]]
2594
-
name = "objc2-quartz-core"
2595
-
version = "0.2.2"
2596
source = "registry+https://github.com/rust-lang/crates.io-index"
2597
-
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
2598
dependencies = [
2599
-
"bitflags 2.6.0",
2600
-
"block2",
2601
-
"objc2 0.5.2",
2602
-
"objc2-foundation",
2603
-
"objc2-metal",
2604
]
2605
2606
[[package]]
2607
-
name = "objc2-symbols"
2608
version = "0.2.2"
2609
source = "registry+https://github.com/rust-lang/crates.io-index"
2610
-
checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc"
2611
dependencies = [
2612
"objc2 0.5.2",
2613
-
"objc2-foundation",
2614
]
2615
2616
[[package]]
2617
-
name = "objc2-ui-kit"
2618
version = "0.2.2"
2619
source = "registry+https://github.com/rust-lang/crates.io-index"
2620
-
checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f"
2621
dependencies = [
2622
-
"bitflags 2.6.0",
2623
-
"block2",
2624
"objc2 0.5.2",
2625
-
"objc2-cloud-kit",
2626
-
"objc2-core-data",
2627
-
"objc2-core-image",
2628
-
"objc2-core-location",
2629
-
"objc2-foundation",
2630
-
"objc2-link-presentation",
2631
-
"objc2-quartz-core",
2632
-
"objc2-symbols",
2633
-
"objc2-uniform-type-identifiers",
2634
-
"objc2-user-notifications",
2635
]
2636
2637
[[package]]
2638
-
name = "objc2-uniform-type-identifiers"
2639
-
version = "0.2.2"
2640
source = "registry+https://github.com/rust-lang/crates.io-index"
2641
-
checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe"
2642
dependencies = [
2643
-
"block2",
2644
-
"objc2 0.5.2",
2645
-
"objc2-foundation",
2646
]
2647
2648
[[package]]
2649
-
name = "objc2-user-notifications"
2650
-
version = "0.2.2"
2651
source = "registry+https://github.com/rust-lang/crates.io-index"
2652
-
checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3"
2653
dependencies = [
2654
-
"bitflags 2.6.0",
2655
-
"block2",
2656
-
"objc2 0.5.2",
2657
-
"objc2-core-location",
2658
-
"objc2-foundation",
2659
]
2660
2661
[[package]]
2662
-
name = "objc2-web-kit"
2663
-
version = "0.2.2"
2664
source = "registry+https://github.com/rust-lang/crates.io-index"
2665
-
checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65"
2666
dependencies = [
2667
-
"bitflags 2.6.0",
2668
-
"block2",
2669
-
"objc2 0.5.2",
2670
-
"objc2-app-kit",
2671
-
"objc2-foundation",
2672
]
2673
2674
[[package]]
2675
-
name = "object"
2676
-
version = "0.36.5"
2677
source = "registry+https://github.com/rust-lang/crates.io-index"
2678
-
checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
2679
dependencies = [
2680
-
"memchr",
2681
]
2682
2683
[[package]]
2684
name = "once_cell"
2685
-
version = "1.20.2"
2686
source = "registry+https://github.com/rust-lang/crates.io-index"
2687
-
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
2688
2689
[[package]]
2690
name = "open"
2691
-
version = "5.3.0"
2692
source = "registry+https://github.com/rust-lang/crates.io-index"
2693
-
checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3"
2694
dependencies = [
2695
"is-wsl",
2696
"libc",
2697
"pathdiff",
···
2699
2700
[[package]]
2701
name = "openssl"
2702
-
version = "0.10.67"
2703
source = "registry+https://github.com/rust-lang/crates.io-index"
2704
-
checksum = "7b8cefcf97f41316955f9294cd61f639bdcfa9f2f230faac6cb896aa8ab64704"
2705
dependencies = [
2706
-
"bitflags 2.6.0",
2707
"cfg-if",
2708
"foreign-types 0.3.2",
2709
"libc",
···
2720
dependencies = [
2721
"proc-macro2",
2722
"quote",
2723
-
"syn 2.0.79",
2724
]
2725
2726
[[package]]
2727
name = "openssl-probe"
2728
-
version = "0.1.5"
2729
source = "registry+https://github.com/rust-lang/crates.io-index"
2730
-
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
2731
2732
[[package]]
2733
name = "openssl-sys"
2734
-
version = "0.9.104"
2735
source = "registry+https://github.com/rust-lang/crates.io-index"
2736
-
checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741"
2737
dependencies = [
2738
"cc",
2739
"libc",
···
2748
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
2749
2750
[[package]]
2751
name = "os_pipe"
2752
-
version = "1.2.1"
2753
source = "registry+https://github.com/rust-lang/crates.io-index"
2754
-
checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982"
2755
dependencies = [
2756
"libc",
2757
-
"windows-sys 0.59.0",
2758
]
2759
2760
[[package]]
···
2783
]
2784
2785
[[package]]
2786
name = "parking_lot"
2787
-
version = "0.12.3"
2788
source = "registry+https://github.com/rust-lang/crates.io-index"
2789
-
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
2790
dependencies = [
2791
"lock_api",
2792
"parking_lot_core",
···
2794
2795
[[package]]
2796
name = "parking_lot_core"
2797
-
version = "0.9.10"
2798
source = "registry+https://github.com/rust-lang/crates.io-index"
2799
-
checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
2800
dependencies = [
2801
"cfg-if",
2802
"libc",
2803
"redox_syscall",
2804
"smallvec",
2805
-
"windows-targets 0.52.6",
2806
]
2807
2808
[[package]]
···
2813
2814
[[package]]
2815
name = "pathdiff"
2816
-
version = "0.2.2"
2817
source = "registry+https://github.com/rust-lang/crates.io-index"
2818
-
checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361"
2819
2820
[[package]]
2821
name = "percent-encoding"
2822
-
version = "2.3.1"
2823
source = "registry+https://github.com/rust-lang/crates.io-index"
2824
-
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
2825
2826
[[package]]
2827
name = "phf"
···
2829
source = "registry+https://github.com/rust-lang/crates.io-index"
2830
checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
2831
dependencies = [
2832
-
"phf_macros 0.8.0",
2833
"phf_shared 0.8.0",
2834
-
"proc-macro-hack",
2835
]
2836
2837
[[package]]
···
2840
source = "registry+https://github.com/rust-lang/crates.io-index"
2841
checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
2842
dependencies = [
2843
"phf_shared 0.10.0",
2844
]
2845
2846
[[package]]
2847
name = "phf"
2848
-
version = "0.11.2"
2849
source = "registry+https://github.com/rust-lang/crates.io-index"
2850
-
checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
2851
dependencies = [
2852
-
"phf_macros 0.11.2",
2853
-
"phf_shared 0.11.2",
2854
]
2855
2856
[[package]]
···
2865
2866
[[package]]
2867
name = "phf_codegen"
2868
-
version = "0.10.0"
2869
source = "registry+https://github.com/rust-lang/crates.io-index"
2870
-
checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd"
2871
dependencies = [
2872
-
"phf_generator 0.10.0",
2873
-
"phf_shared 0.10.0",
2874
]
2875
2876
[[package]]
···
2895
2896
[[package]]
2897
name = "phf_generator"
2898
-
version = "0.11.2"
2899
source = "registry+https://github.com/rust-lang/crates.io-index"
2900
-
checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
2901
dependencies = [
2902
-
"phf_shared 0.11.2",
2903
"rand 0.8.5",
2904
]
2905
2906
[[package]]
2907
name = "phf_macros"
2908
-
version = "0.8.0"
2909
source = "registry+https://github.com/rust-lang/crates.io-index"
2910
-
checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c"
2911
dependencies = [
2912
-
"phf_generator 0.8.0",
2913
-
"phf_shared 0.8.0",
2914
"proc-macro-hack",
2915
"proc-macro2",
2916
"quote",
···
2919
2920
[[package]]
2921
name = "phf_macros"
2922
-
version = "0.11.2"
2923
source = "registry+https://github.com/rust-lang/crates.io-index"
2924
-
checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
2925
dependencies = [
2926
-
"phf_generator 0.11.2",
2927
-
"phf_shared 0.11.2",
2928
"proc-macro2",
2929
"quote",
2930
-
"syn 2.0.79",
2931
]
2932
2933
[[package]]
···
2936
source = "registry+https://github.com/rust-lang/crates.io-index"
2937
checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
2938
dependencies = [
2939
-
"siphasher",
2940
]
2941
2942
[[package]]
···
2945
source = "registry+https://github.com/rust-lang/crates.io-index"
2946
checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
2947
dependencies = [
2948
-
"siphasher",
2949
]
2950
2951
[[package]]
2952
name = "phf_shared"
2953
-
version = "0.11.2"
2954
source = "registry+https://github.com/rust-lang/crates.io-index"
2955
-
checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
2956
dependencies = [
2957
-
"siphasher",
2958
]
2959
2960
[[package]]
2961
name = "pin-project-lite"
2962
-
version = "0.2.14"
2963
source = "registry+https://github.com/rust-lang/crates.io-index"
2964
-
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
2965
2966
[[package]]
2967
name = "pin-utils"
···
2970
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
2971
2972
[[package]]
2973
name = "pkg-config"
2974
-
version = "0.3.31"
2975
source = "registry+https://github.com/rust-lang/crates.io-index"
2976
-
checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
2977
2978
[[package]]
2979
name = "plist"
2980
-
version = "1.7.0"
2981
source = "registry+https://github.com/rust-lang/crates.io-index"
2982
-
checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
2983
dependencies = [
2984
"base64 0.22.1",
2985
-
"indexmap 2.6.0",
2986
"quick-xml",
2987
"serde",
2988
"time",
···
2990
2991
[[package]]
2992
name = "png"
2993
-
version = "0.17.14"
2994
source = "registry+https://github.com/rust-lang/crates.io-index"
2995
-
checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0"
2996
dependencies = [
2997
"bitflags 1.3.2",
2998
"crc32fast",
2999
"fdeflate",
3000
"flate2",
3001
-
"miniz_oxide 0.8.0",
3002
]
3003
3004
[[package]]
···
3009
3010
[[package]]
3011
name = "ppv-lite86"
3012
-
version = "0.2.20"
3013
source = "registry+https://github.com/rust-lang/crates.io-index"
3014
-
checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
3015
dependencies = [
3016
"zerocopy",
3017
]
···
3038
source = "registry+https://github.com/rust-lang/crates.io-index"
3039
checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
3040
dependencies = [
3041
-
"toml_datetime",
3042
"toml_edit 0.20.2",
3043
]
3044
3045
[[package]]
3046
name = "proc-macro-error"
3047
version = "1.0.4"
3048
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3074
3075
[[package]]
3076
name = "proc-macro2"
3077
-
version = "1.0.88"
3078
source = "registry+https://github.com/rust-lang/crates.io-index"
3079
-
checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9"
3080
dependencies = [
3081
"unicode-ident",
3082
]
3083
3084
[[package]]
3085
name = "profiling"
3086
-
version = "1.0.16"
3087
source = "registry+https://github.com/rust-lang/crates.io-index"
3088
-
checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d"
3089
dependencies = [
3090
"profiling-procmacros",
3091
]
3092
3093
[[package]]
3094
name = "profiling-procmacros"
3095
-
version = "1.0.16"
3096
source = "registry+https://github.com/rust-lang/crates.io-index"
3097
-
checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30"
3098
dependencies = [
3099
"quote",
3100
-
"syn 2.0.79",
3101
]
3102
3103
[[package]]
···
3108
3109
[[package]]
3110
name = "publicsuffix"
3111
-
version = "2.2.3"
3112
source = "registry+https://github.com/rust-lang/crates.io-index"
3113
-
checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457"
3114
dependencies = [
3115
-
"idna 0.3.0",
3116
"psl-types",
3117
]
3118
3119
[[package]]
3120
name = "qoi"
3121
version = "0.4.1"
3122
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3133
3134
[[package]]
3135
name = "quick-xml"
3136
-
version = "0.32.0"
3137
source = "registry+https://github.com/rust-lang/crates.io-index"
3138
-
checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2"
3139
dependencies = [
3140
"memchr",
3141
]
3142
3143
[[package]]
3144
name = "quinn"
3145
-
version = "0.11.5"
3146
source = "registry+https://github.com/rust-lang/crates.io-index"
3147
-
checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684"
3148
dependencies = [
3149
"bytes",
3150
"pin-project-lite",
3151
"quinn-proto",
3152
"quinn-udp",
3153
"rustc-hash",
3154
"rustls",
3155
"socket2",
3156
-
"thiserror",
3157
"tokio",
3158
"tracing",
3159
]
3160
3161
[[package]]
3162
name = "quinn-proto"
3163
-
version = "0.11.8"
3164
source = "registry+https://github.com/rust-lang/crates.io-index"
3165
-
checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6"
3166
dependencies = [
3167
"bytes",
3168
-
"rand 0.8.5",
3169
"ring",
3170
"rustc-hash",
3171
"rustls",
3172
"slab",
3173
-
"thiserror",
3174
"tinyvec",
3175
"tracing",
3176
]
3177
3178
[[package]]
3179
name = "quinn-udp"
3180
-
version = "0.5.5"
3181
source = "registry+https://github.com/rust-lang/crates.io-index"
3182
-
checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b"
3183
dependencies = [
3184
"libc",
3185
"once_cell",
3186
"socket2",
3187
"tracing",
3188
-
"windows-sys 0.59.0",
3189
]
3190
3191
[[package]]
3192
name = "quote"
3193
-
version = "1.0.37"
3194
source = "registry+https://github.com/rust-lang/crates.io-index"
3195
-
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
3196
dependencies = [
3197
"proc-macro2",
3198
]
3199
3200
[[package]]
3201
name = "rand"
3202
version = "0.7.3"
3203
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3223
]
3224
3225
[[package]]
3226
name = "rand_chacha"
3227
version = "0.2.2"
3228
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3243
]
3244
3245
[[package]]
3246
name = "rand_core"
3247
version = "0.5.1"
3248
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3257
source = "registry+https://github.com/rust-lang/crates.io-index"
3258
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
3259
dependencies = [
3260
-
"getrandom 0.2.15",
3261
]
3262
3263
[[package]]
···
3308
"rand_chacha 0.3.1",
3309
"simd_helpers",
3310
"system-deps",
3311
-
"thiserror",
3312
"v_frame",
3313
"wasm-bindgen",
3314
]
3315
3316
[[package]]
3317
name = "ravif"
3318
-
version = "0.11.10"
3319
source = "registry+https://github.com/rust-lang/crates.io-index"
3320
-
checksum = "a8f0bfd976333248de2078d350bfdf182ff96e168a24d23d2436cef320dd4bdd"
3321
dependencies = [
3322
"avif-serialize",
3323
"imgref",
3324
"loop9",
3325
"quick-error",
3326
"rav1e",
3327
"rgb",
3328
]
3329
···
3335
3336
[[package]]
3337
name = "rayon"
3338
-
version = "1.10.0"
3339
source = "registry+https://github.com/rust-lang/crates.io-index"
3340
-
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
3341
dependencies = [
3342
"either",
3343
"rayon-core",
···
3345
3346
[[package]]
3347
name = "rayon-core"
3348
-
version = "1.12.1"
3349
source = "registry+https://github.com/rust-lang/crates.io-index"
3350
-
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
3351
dependencies = [
3352
"crossbeam-deque",
3353
"crossbeam-utils",
···
3355
3356
[[package]]
3357
name = "redox_syscall"
3358
-
version = "0.5.7"
3359
source = "registry+https://github.com/rust-lang/crates.io-index"
3360
-
checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"
3361
dependencies = [
3362
-
"bitflags 2.6.0",
3363
]
3364
3365
[[package]]
3366
name = "redox_users"
3367
-
version = "0.4.6"
3368
source = "registry+https://github.com/rust-lang/crates.io-index"
3369
-
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
3370
dependencies = [
3371
-
"getrandom 0.2.15",
3372
"libredox",
3373
-
"thiserror",
3374
]
3375
3376
[[package]]
3377
name = "regex"
3378
-
version = "1.11.0"
3379
source = "registry+https://github.com/rust-lang/crates.io-index"
3380
-
checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8"
3381
dependencies = [
3382
"aho-corasick",
3383
"memchr",
···
3387
3388
[[package]]
3389
name = "regex-automata"
3390
-
version = "0.4.8"
3391
source = "registry+https://github.com/rust-lang/crates.io-index"
3392
-
checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3"
3393
dependencies = [
3394
"aho-corasick",
3395
"memchr",
···
3398
3399
[[package]]
3400
name = "regex-syntax"
3401
-
version = "0.8.5"
3402
source = "registry+https://github.com/rust-lang/crates.io-index"
3403
-
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
3404
3405
[[package]]
3406
name = "reqwest"
3407
-
version = "0.12.8"
3408
source = "registry+https://github.com/rust-lang/crates.io-index"
3409
-
checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b"
3410
dependencies = [
3411
"base64 0.22.1",
3412
"bytes",
···
3424
"hyper-rustls",
3425
"hyper-tls",
3426
"hyper-util",
3427
-
"ipnet",
3428
"js-sys",
3429
"log",
3430
"mime",
3431
"native-tls",
3432
-
"once_cell",
3433
"percent-encoding",
3434
"pin-project-lite",
3435
"quinn",
3436
"rustls",
3437
-
"rustls-pemfile",
3438
"rustls-pki-types",
3439
"serde",
3440
"serde_json",
3441
"serde_urlencoded",
3442
"sync_wrapper",
3443
-
"system-configuration",
3444
"tokio",
3445
"tokio-native-tls",
3446
"tokio-rustls",
3447
"tokio-util",
3448
"tower-service",
3449
"url",
3450
"wasm-bindgen",
···
3452
"wasm-streams",
3453
"web-sys",
3454
"webpki-roots",
3455
-
"windows-registry",
3456
]
3457
3458
[[package]]
3459
name = "rgb"
3460
-
version = "0.8.50"
3461
source = "registry+https://github.com/rust-lang/crates.io-index"
3462
-
checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a"
3463
3464
[[package]]
3465
name = "ring"
3466
-
version = "0.17.8"
3467
source = "registry+https://github.com/rust-lang/crates.io-index"
3468
-
checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
3469
dependencies = [
3470
"cc",
3471
"cfg-if",
3472
-
"getrandom 0.2.15",
3473
"libc",
3474
-
"spin",
3475
"untrusted",
3476
"windows-sys 0.52.0",
3477
]
3478
3479
[[package]]
3480
-
name = "rustc-demangle"
3481
-
version = "0.1.24"
3482
source = "registry+https://github.com/rust-lang/crates.io-index"
3483
-
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
3484
3485
[[package]]
3486
name = "rustc-hash"
3487
-
version = "2.0.0"
3488
source = "registry+https://github.com/rust-lang/crates.io-index"
3489
-
checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
3490
3491
[[package]]
3492
name = "rustc_version"
···
3499
3500
[[package]]
3501
name = "rustix"
3502
-
version = "0.38.37"
3503
source = "registry+https://github.com/rust-lang/crates.io-index"
3504
-
checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811"
3505
dependencies = [
3506
-
"bitflags 2.6.0",
3507
"errno",
3508
"libc",
3509
"linux-raw-sys",
3510
-
"windows-sys 0.52.0",
3511
]
3512
3513
[[package]]
3514
name = "rustls"
3515
-
version = "0.23.15"
3516
source = "registry+https://github.com/rust-lang/crates.io-index"
3517
-
checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993"
3518
dependencies = [
3519
"once_cell",
3520
"ring",
···
3525
]
3526
3527
[[package]]
3528
-
name = "rustls-pemfile"
3529
-
version = "2.2.0"
3530
source = "registry+https://github.com/rust-lang/crates.io-index"
3531
-
checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
3532
dependencies = [
3533
-
"rustls-pki-types",
3534
]
3535
3536
[[package]]
3537
-
name = "rustls-pki-types"
3538
-
version = "1.10.0"
3539
-
source = "registry+https://github.com/rust-lang/crates.io-index"
3540
-
checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
3541
-
3542
-
[[package]]
3543
name = "rustls-webpki"
3544
-
version = "0.102.8"
3545
source = "registry+https://github.com/rust-lang/crates.io-index"
3546
-
checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
3547
dependencies = [
3548
"ring",
3549
"rustls-pki-types",
···
3551
]
3552
3553
[[package]]
3554
name = "ryu"
3555
-
version = "1.0.18"
3556
source = "registry+https://github.com/rust-lang/crates.io-index"
3557
-
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
3558
3559
[[package]]
3560
name = "same-file"
···
3567
3568
[[package]]
3569
name = "schannel"
3570
-
version = "0.1.26"
3571
source = "registry+https://github.com/rust-lang/crates.io-index"
3572
-
checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1"
3573
dependencies = [
3574
-
"windows-sys 0.59.0",
3575
]
3576
3577
[[package]]
3578
name = "schemars"
3579
-
version = "0.8.21"
3580
source = "registry+https://github.com/rust-lang/crates.io-index"
3581
-
checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92"
3582
dependencies = [
3583
"dyn-clone",
3584
"indexmap 1.9.3",
···
3590
]
3591
3592
[[package]]
3593
name = "schemars_derive"
3594
-
version = "0.8.21"
3595
source = "registry+https://github.com/rust-lang/crates.io-index"
3596
-
checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e"
3597
dependencies = [
3598
"proc-macro2",
3599
"quote",
3600
"serde_derive_internals",
3601
-
"syn 2.0.79",
3602
]
3603
3604
[[package]]
···
3613
source = "registry+https://github.com/rust-lang/crates.io-index"
3614
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
3615
dependencies = [
3616
-
"bitflags 2.6.0",
3617
"core-foundation 0.9.4",
3618
"core-foundation-sys",
3619
"libc",
···
3622
3623
[[package]]
3624
name = "security-framework-sys"
3625
-
version = "2.12.0"
3626
source = "registry+https://github.com/rust-lang/crates.io-index"
3627
-
checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6"
3628
dependencies = [
3629
"core-foundation-sys",
3630
"libc",
···
3632
3633
[[package]]
3634
name = "selectors"
3635
-
version = "0.22.0"
3636
source = "registry+https://github.com/rust-lang/crates.io-index"
3637
-
checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe"
3638
dependencies = [
3639
"bitflags 1.3.2",
3640
"cssparser",
3641
"derive_more",
3642
"fxhash",
3643
"log",
3644
-
"matches",
3645
"phf 0.8.0",
3646
"phf_codegen 0.8.0",
3647
"precomputed-hash",
3648
"servo_arc",
3649
"smallvec",
3650
-
"thin-slice",
3651
]
3652
3653
[[package]]
3654
name = "semver"
3655
-
version = "1.0.23"
3656
source = "registry+https://github.com/rust-lang/crates.io-index"
3657
-
checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
3658
dependencies = [
3659
"serde",
3660
]
3661
3662
[[package]]
3663
name = "serde"
3664
-
version = "1.0.210"
3665
source = "registry+https://github.com/rust-lang/crates.io-index"
3666
-
checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a"
3667
dependencies = [
3668
"serde_derive",
3669
]
3670
3671
[[package]]
3672
name = "serde-untagged"
3673
-
version = "0.1.6"
3674
source = "registry+https://github.com/rust-lang/crates.io-index"
3675
-
checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6"
3676
dependencies = [
3677
"erased-serde",
3678
"serde",
3679
"typeid",
3680
]
3681
3682
[[package]]
3683
name = "serde_derive"
3684
-
version = "1.0.210"
3685
source = "registry+https://github.com/rust-lang/crates.io-index"
3686
-
checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f"
3687
dependencies = [
3688
"proc-macro2",
3689
"quote",
3690
-
"syn 2.0.79",
3691
]
3692
3693
[[package]]
···
3698
dependencies = [
3699
"proc-macro2",
3700
"quote",
3701
-
"syn 2.0.79",
3702
]
3703
3704
[[package]]
3705
name = "serde_json"
3706
-
version = "1.0.128"
3707
source = "registry+https://github.com/rust-lang/crates.io-index"
3708
-
checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
3709
dependencies = [
3710
-
"itoa 1.0.11",
3711
"memchr",
3712
"ryu",
3713
"serde",
3714
]
3715
3716
[[package]]
3717
name = "serde_repr"
3718
-
version = "0.1.19"
3719
source = "registry+https://github.com/rust-lang/crates.io-index"
3720
-
checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
3721
dependencies = [
3722
"proc-macro2",
3723
"quote",
3724
-
"syn 2.0.79",
3725
]
3726
3727
[[package]]
3728
name = "serde_spanned"
3729
-
version = "0.6.8"
3730
source = "registry+https://github.com/rust-lang/crates.io-index"
3731
-
checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
3732
dependencies = [
3733
"serde",
3734
]
3735
3736
[[package]]
3737
name = "serde_urlencoded"
3738
version = "0.7.1"
3739
source = "registry+https://github.com/rust-lang/crates.io-index"
3740
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
3741
dependencies = [
3742
"form_urlencoded",
3743
-
"itoa 1.0.11",
3744
"ryu",
3745
"serde",
3746
]
3747
3748
[[package]]
3749
name = "serde_with"
3750
-
version = "3.11.0"
3751
source = "registry+https://github.com/rust-lang/crates.io-index"
3752
-
checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
3753
dependencies = [
3754
"base64 0.22.1",
3755
"chrono",
3756
"hex",
3757
"indexmap 1.9.3",
3758
-
"indexmap 2.6.0",
3759
-
"serde",
3760
-
"serde_derive",
3761
"serde_json",
3762
"serde_with_macros",
3763
"time",
···
3765
3766
[[package]]
3767
name = "serde_with_macros"
3768
-
version = "3.11.0"
3769
source = "registry+https://github.com/rust-lang/crates.io-index"
3770
-
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
3771
dependencies = [
3772
"darling",
3773
"proc-macro2",
3774
"quote",
3775
-
"syn 2.0.79",
3776
]
3777
3778
[[package]]
3779
name = "serialize-to-javascript"
3780
-
version = "0.1.1"
3781
source = "registry+https://github.com/rust-lang/crates.io-index"
3782
-
checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
3783
dependencies = [
3784
"serde",
3785
"serde_json",
···
3788
3789
[[package]]
3790
name = "serialize-to-javascript-impl"
3791
-
version = "0.1.1"
3792
source = "registry+https://github.com/rust-lang/crates.io-index"
3793
-
checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
3794
dependencies = [
3795
"proc-macro2",
3796
"quote",
3797
-
"syn 1.0.109",
3798
]
3799
3800
[[package]]
3801
name = "servo_arc"
3802
-
version = "0.1.1"
3803
source = "registry+https://github.com/rust-lang/crates.io-index"
3804
-
checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432"
3805
dependencies = [
3806
"nodrop",
3807
"stable_deref_trait",
···
3809
3810
[[package]]
3811
name = "sha2"
3812
-
version = "0.10.8"
3813
source = "registry+https://github.com/rust-lang/crates.io-index"
3814
-
checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
3815
dependencies = [
3816
"cfg-if",
3817
"cpufeatures",
···
3820
3821
[[package]]
3822
name = "shared_child"
3823
-
version = "1.0.1"
3824
source = "registry+https://github.com/rust-lang/crates.io-index"
3825
-
checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c"
3826
dependencies = [
3827
"libc",
3828
-
"windows-sys 0.59.0",
3829
]
3830
3831
[[package]]
···
3835
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
3836
3837
[[package]]
3838
name = "simd-adler32"
3839
version = "0.3.7"
3840
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3856
checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
3857
3858
[[package]]
3859
name = "slab"
3860
-
version = "0.4.9"
3861
source = "registry+https://github.com/rust-lang/crates.io-index"
3862
-
checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
3863
-
dependencies = [
3864
-
"autocfg",
3865
-
]
3866
3867
[[package]]
3868
name = "smallvec"
3869
-
version = "1.13.2"
3870
source = "registry+https://github.com/rust-lang/crates.io-index"
3871
-
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
3872
3873
[[package]]
3874
name = "socket2"
3875
-
version = "0.5.7"
3876
source = "registry+https://github.com/rust-lang/crates.io-index"
3877
-
checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
3878
dependencies = [
3879
"libc",
3880
-
"windows-sys 0.52.0",
3881
]
3882
3883
[[package]]
···
3893
"js-sys",
3894
"log",
3895
"objc2 0.5.2",
3896
-
"objc2-foundation",
3897
-
"objc2-quartz-core",
3898
"raw-window-handle",
3899
"redox_syscall",
3900
"wasm-bindgen",
···
3929
]
3930
3931
[[package]]
3932
-
name = "spin"
3933
-
version = "0.9.8"
3934
source = "registry+https://github.com/rust-lang/crates.io-index"
3935
-
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
3936
-
dependencies = [
3937
-
"lock_api",
3938
-
]
3939
3940
[[package]]
3941
-
name = "stable_deref_trait"
3942
-
version = "1.2.0"
3943
source = "registry+https://github.com/rust-lang/crates.io-index"
3944
-
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
3945
3946
[[package]]
3947
name = "string_cache"
3948
-
version = "0.8.7"
3949
source = "registry+https://github.com/rust-lang/crates.io-index"
3950
-
checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
3951
dependencies = [
3952
"new_debug_unreachable",
3953
-
"once_cell",
3954
"parking_lot",
3955
-
"phf_shared 0.10.0",
3956
"precomputed-hash",
3957
"serde",
3958
]
3959
3960
[[package]]
3961
name = "string_cache_codegen"
3962
-
version = "0.5.2"
3963
source = "registry+https://github.com/rust-lang/crates.io-index"
3964
-
checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
3965
dependencies = [
3966
-
"phf_generator 0.10.0",
3967
-
"phf_shared 0.10.0",
3968
"proc-macro2",
3969
"quote",
3970
]
···
4005
4006
[[package]]
4007
name = "syn"
4008
-
version = "2.0.79"
4009
source = "registry+https://github.com/rust-lang/crates.io-index"
4010
-
checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590"
4011
dependencies = [
4012
"proc-macro2",
4013
"quote",
···
4016
4017
[[package]]
4018
name = "sync_wrapper"
4019
-
version = "1.0.1"
4020
source = "registry+https://github.com/rust-lang/crates.io-index"
4021
-
checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
4022
dependencies = [
4023
"futures-core",
4024
]
4025
4026
[[package]]
4027
name = "system-configuration"
4028
version = "0.6.1"
4029
source = "registry+https://github.com/rust-lang/crates.io-index"
4030
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
4031
dependencies = [
4032
-
"bitflags 2.6.0",
4033
"core-foundation 0.9.4",
4034
"system-configuration-sys",
4035
]
···
4059
4060
[[package]]
4061
name = "tao"
4062
-
version = "0.30.3"
4063
source = "registry+https://github.com/rust-lang/crates.io-index"
4064
-
checksum = "a0dbbebe82d02044dfa481adca1550d6dd7bd16e086bc34fa0fbecceb5a63751"
4065
dependencies = [
4066
-
"bitflags 2.6.0",
4067
-
"cocoa",
4068
-
"core-foundation 0.10.0",
4069
"core-graphics",
4070
"crossbeam-channel",
4071
"dispatch",
···
4074
"gdkwayland-sys",
4075
"gdkx11-sys",
4076
"gtk",
4077
-
"instant",
4078
"jni",
4079
"lazy_static",
4080
"libc",
···
4082
"ndk",
4083
"ndk-context",
4084
"ndk-sys",
4085
-
"objc",
4086
"once_cell",
4087
"parking_lot",
4088
"raw-window-handle",
···
4091
"unicode-segmentation",
4092
"url",
4093
"windows",
4094
-
"windows-core 0.58.0",
4095
"windows-version",
4096
"x11-dl",
4097
]
···
4104
dependencies = [
4105
"proc-macro2",
4106
"quote",
4107
-
"syn 2.0.79",
4108
]
4109
4110
[[package]]
···
4115
4116
[[package]]
4117
name = "tauri"
4118
-
version = "2.0.4"
4119
source = "registry+https://github.com/rust-lang/crates.io-index"
4120
-
checksum = "44438500b50708bfc1e6083844e135d1b516325aae58710dcd8fb67e050ae87c"
4121
dependencies = [
4122
"anyhow",
4123
"bytes",
4124
"dirs",
4125
"dunce",
4126
"embed_plist",
4127
-
"futures-util",
4128
-
"getrandom 0.2.15",
4129
"glob",
4130
"gtk",
4131
"heck 0.5.0",
···
4136
"log",
4137
"mime",
4138
"muda",
4139
-
"objc2 0.5.2",
4140
"objc2-app-kit",
4141
-
"objc2-foundation",
4142
"percent-encoding",
4143
"plist",
4144
"raw-window-handle",
···
4152
"tauri-macros",
4153
"tauri-runtime",
4154
"tauri-runtime-wry",
4155
-
"tauri-utils 2.0.1",
4156
-
"thiserror",
4157
"tokio",
4158
"tray-icon",
4159
"url",
4160
-
"urlpattern",
4161
"webkit2gtk",
4162
"webview2-com",
4163
"window-vibrancy",
···
4166
4167
[[package]]
4168
name = "tauri-build"
4169
-
version = "2.0.1"
4170
source = "registry+https://github.com/rust-lang/crates.io-index"
4171
-
checksum = "935f9b3c49b22b3e2e485a57f46d61cd1ae07b1cbb2ba87387a387caf2d8c4e7"
4172
dependencies = [
4173
"anyhow",
4174
"cargo_toml",
···
4176
"glob",
4177
"heck 0.5.0",
4178
"json-patch",
4179
-
"schemars",
4180
"semver",
4181
"serde",
4182
"serde_json",
4183
-
"tauri-utils 2.0.1",
4184
"tauri-winres",
4185
-
"toml 0.8.2",
4186
"walkdir",
4187
]
4188
4189
[[package]]
4190
name = "tauri-codegen"
4191
-
version = "2.0.1"
4192
source = "registry+https://github.com/rust-lang/crates.io-index"
4193
-
checksum = "95d7443dd4f0b597704b6a14b964ee2ed16e99928d8e6292ae9825f09fbcd30e"
4194
dependencies = [
4195
"base64 0.22.1",
4196
"brotli",
4197
"ico",
4198
"json-patch",
4199
"plist",
4200
-
"png",
4201
"proc-macro2",
4202
"quote",
4203
"semver",
4204
"serde",
4205
"serde_json",
4206
"sha2",
4207
-
"syn 2.0.79",
4208
-
"tauri-utils 2.0.1",
4209
-
"thiserror",
4210
"time",
4211
"url",
4212
"uuid",
···
4215
4216
[[package]]
4217
name = "tauri-macros"
4218
-
version = "2.0.1"
4219
source = "registry+https://github.com/rust-lang/crates.io-index"
4220
-
checksum = "4d2c0963ccfc3f5194415f2cce7acc975942a8797fbabfb0aa1ed6f59326ae7f"
4221
dependencies = [
4222
"heck 0.5.0",
4223
"proc-macro2",
4224
"quote",
4225
-
"syn 2.0.79",
4226
"tauri-codegen",
4227
-
"tauri-utils 2.0.1",
4228
]
4229
4230
[[package]]
4231
name = "tauri-plugin"
4232
-
version = "2.0.1"
4233
source = "registry+https://github.com/rust-lang/crates.io-index"
4234
-
checksum = "b2e6660a409963e4d57b9bfab4addd141eeff41bd3a7fb14e13004a832cf7ef6"
4235
dependencies = [
4236
"anyhow",
4237
"glob",
4238
"plist",
4239
-
"schemars",
4240
"serde",
4241
"serde_json",
4242
-
"tauri-utils 2.0.1",
4243
-
"toml 0.8.2",
4244
"walkdir",
4245
]
4246
4247
[[package]]
4248
name = "tauri-plugin-deep-link"
4249
-
version = "0.1.2"
4250
source = "registry+https://github.com/rust-lang/crates.io-index"
4251
-
checksum = "4536f5f6602e8fdfaa7b3b185076c2a0704f8eb7015f4e58461eb483ec3ed1f8"
4252
dependencies = [
4253
-
"dirs",
4254
-
"interprocess",
4255
-
"log",
4256
-
"objc2 0.4.1",
4257
-
"once_cell",
4258
-
"tauri-utils 1.6.1",
4259
-
"windows-sys 0.48.0",
4260
-
"winreg 0.50.0",
4261
]
4262
4263
[[package]]
4264
name = "tauri-plugin-fs"
4265
-
version = "2.0.1"
4266
source = "registry+https://github.com/rust-lang/crates.io-index"
4267
-
checksum = "ab300488ebec3487ca5f56289692e7e45feb07eea8d5e1dba497f7dc9dd9c407"
4268
dependencies = [
4269
"anyhow",
4270
"dunce",
4271
"glob",
4272
"percent-encoding",
4273
-
"schemars",
4274
"serde",
4275
"serde_json",
4276
"serde_repr",
4277
"tauri",
4278
"tauri-plugin",
4279
-
"thiserror",
4280
"url",
4281
-
"uuid",
4282
]
4283
4284
[[package]]
4285
name = "tauri-plugin-http"
4286
-
version = "2.0.1"
4287
source = "registry+https://github.com/rust-lang/crates.io-index"
4288
-
checksum = "784333f1632d96c94346e8145bfe52970923a38a0e6eacd3dccaa12289275acf"
4289
dependencies = [
4290
"data-url",
4291
"http",
4292
"regex",
4293
"reqwest",
4294
-
"schemars",
4295
"serde",
4296
"serde_json",
4297
"tauri",
4298
"tauri-plugin",
4299
"tauri-plugin-fs",
4300
-
"thiserror",
4301
"tokio",
4302
"url",
4303
"urlpattern",
···
4305
4306
[[package]]
4307
name = "tauri-plugin-process"
4308
-
version = "2.0.1"
4309
source = "registry+https://github.com/rust-lang/crates.io-index"
4310
-
checksum = "ae06a00087c148962a52814a2d7265b1a0505bced5ffb74f8c284a5f96a4d03d"
4311
dependencies = [
4312
"tauri",
4313
"tauri-plugin",
···
4315
4316
[[package]]
4317
name = "tauri-plugin-shell"
4318
-
version = "2.0.1"
4319
source = "registry+https://github.com/rust-lang/crates.io-index"
4320
-
checksum = "371fb9aca2823990a2d0db7970573be5fdf07881fcaa2b835b29631feb84aec1"
4321
dependencies = [
4322
"encoding_rs",
4323
"log",
4324
"open",
4325
"os_pipe",
4326
"regex",
4327
-
"schemars",
4328
"serde",
4329
"serde_json",
4330
"shared_child",
4331
"tauri",
4332
"tauri-plugin",
4333
-
"thiserror",
4334
"tokio",
4335
]
4336
4337
[[package]]
4338
name = "tauri-runtime"
4339
-
version = "2.1.0"
4340
source = "registry+https://github.com/rust-lang/crates.io-index"
4341
-
checksum = "c8f437293d6f5e5dce829250f4dbdce4e0b52905e297a6689cc2963eb53ac728"
4342
dependencies = [
4343
"dpi",
4344
"gtk",
4345
"http",
4346
"jni",
4347
"raw-window-handle",
4348
"serde",
4349
"serde_json",
4350
-
"tauri-utils 2.0.1",
4351
-
"thiserror",
4352
"url",
4353
"windows",
4354
]
4355
4356
[[package]]
4357
name = "tauri-runtime-wry"
4358
-
version = "2.1.1"
4359
source = "registry+https://github.com/rust-lang/crates.io-index"
4360
-
checksum = "1431602bcc71f2f840ad623915c9842ecc32999b867c4a787d975a17a9625cc6"
4361
dependencies = [
4362
"gtk",
4363
"http",
4364
"jni",
4365
"log",
4366
-
"objc2 0.5.2",
4367
"objc2-app-kit",
4368
-
"objc2-foundation",
4369
"percent-encoding",
4370
"raw-window-handle",
4371
"softbuffer",
4372
"tao",
4373
"tauri-runtime",
4374
-
"tauri-utils 2.0.1",
4375
"url",
4376
"webkit2gtk",
4377
"webview2-com",
···
4381
4382
[[package]]
4383
name = "tauri-utils"
4384
-
version = "1.6.1"
4385
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4386
-
checksum = "83a0c939e88d82903a0a7dfb28388b12a3c03504d6bd6086550edaa3b6d8beaa"
4387
-
dependencies = [
4388
-
"ctor",
4389
-
"dunce",
4390
-
"heck 0.5.0",
4391
-
"html5ever",
4392
-
"infer 0.13.0",
4393
-
"json-patch",
4394
-
"kuchikiki",
4395
-
"log",
4396
-
"memchr",
4397
-
"phf 0.11.2",
4398
-
"semver",
4399
-
"serde",
4400
-
"serde_json",
4401
-
"serde_with",
4402
-
"thiserror",
4403
-
"url",
4404
-
"windows-version",
4405
-
]
4406
-
4407
-
[[package]]
4408
-
name = "tauri-utils"
4409
-
version = "2.0.1"
4410
source = "registry+https://github.com/rust-lang/crates.io-index"
4411
-
checksum = "c38b0230d6880cf6dd07b6d7dd7789a0869f98ac12146e0d18d1c1049215a045"
4412
dependencies = [
4413
"brotli",
4414
"cargo_metadata",
4415
"ctor",
4416
"dunce",
4417
"glob",
4418
"html5ever",
4419
-
"infer 0.16.0",
4420
"json-patch",
4421
"kuchikiki",
4422
"log",
4423
"memchr",
4424
-
"phf 0.11.2",
4425
"proc-macro2",
4426
"quote",
4427
"regex",
4428
-
"schemars",
4429
"semver",
4430
"serde",
4431
"serde-untagged",
4432
"serde_json",
4433
"serde_with",
4434
"swift-rs",
4435
-
"thiserror",
4436
-
"toml 0.8.2",
4437
"url",
4438
"urlpattern",
4439
"uuid",
···
4442
4443
[[package]]
4444
name = "tauri-winres"
4445
-
version = "0.1.1"
4446
source = "registry+https://github.com/rust-lang/crates.io-index"
4447
-
checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb"
4448
dependencies = [
4449
"embed-resource",
4450
-
"toml 0.7.8",
4451
]
4452
4453
[[package]]
4454
name = "tempfile"
4455
-
version = "3.13.0"
4456
source = "registry+https://github.com/rust-lang/crates.io-index"
4457
-
checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b"
4458
dependencies = [
4459
-
"cfg-if",
4460
"fastrand",
4461
"once_cell",
4462
"rustix",
4463
-
"windows-sys 0.59.0",
4464
]
4465
4466
[[package]]
···
4475
]
4476
4477
[[package]]
4478
-
name = "thin-slice"
4479
-
version = "0.1.1"
4480
source = "registry+https://github.com/rust-lang/crates.io-index"
4481
-
checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
4482
4483
[[package]]
4484
name = "thiserror"
4485
-
version = "1.0.64"
4486
source = "registry+https://github.com/rust-lang/crates.io-index"
4487
-
checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
4488
dependencies = [
4489
-
"thiserror-impl",
4490
]
4491
4492
[[package]]
4493
name = "thiserror-impl"
4494
-
version = "1.0.64"
4495
source = "registry+https://github.com/rust-lang/crates.io-index"
4496
-
checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
4497
dependencies = [
4498
"proc-macro2",
4499
"quote",
4500
-
"syn 2.0.79",
4501
]
4502
4503
[[package]]
4504
name = "tiff"
4505
-
version = "0.9.1"
4506
source = "registry+https://github.com/rust-lang/crates.io-index"
4507
-
checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
4508
dependencies = [
4509
"flate2",
4510
-
"jpeg-decoder",
4511
"weezl",
4512
]
4513
4514
[[package]]
4515
name = "time"
4516
-
version = "0.3.36"
4517
source = "registry+https://github.com/rust-lang/crates.io-index"
4518
-
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
4519
dependencies = [
4520
"deranged",
4521
-
"itoa 1.0.11",
4522
"num-conv",
4523
"powerfmt",
4524
"serde",
···
4528
4529
[[package]]
4530
name = "time-core"
4531
-
version = "0.1.2"
4532
source = "registry+https://github.com/rust-lang/crates.io-index"
4533
-
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
4534
4535
[[package]]
4536
name = "time-macros"
4537
-
version = "0.2.18"
4538
source = "registry+https://github.com/rust-lang/crates.io-index"
4539
-
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
4540
dependencies = [
4541
"num-conv",
4542
"time-core",
4543
]
4544
4545
[[package]]
4546
name = "tinyvec"
4547
-
version = "1.8.0"
4548
source = "registry+https://github.com/rust-lang/crates.io-index"
4549
-
checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
4550
dependencies = [
4551
"tinyvec_macros",
4552
]
···
4558
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
4559
4560
[[package]]
4561
-
name = "to_method"
4562
-
version = "1.1.0"
4563
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4564
-
checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8"
4565
-
4566
-
[[package]]
4567
name = "tokio"
4568
-
version = "1.40.0"
4569
source = "registry+https://github.com/rust-lang/crates.io-index"
4570
-
checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
4571
dependencies = [
4572
-
"backtrace",
4573
"bytes",
4574
"libc",
4575
-
"mio 1.0.2",
4576
"pin-project-lite",
4577
"socket2",
4578
"tokio-macros",
4579
-
"windows-sys 0.52.0",
4580
]
4581
4582
[[package]]
4583
name = "tokio-macros"
4584
-
version = "2.4.0"
4585
source = "registry+https://github.com/rust-lang/crates.io-index"
4586
-
checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
4587
dependencies = [
4588
"proc-macro2",
4589
"quote",
4590
-
"syn 2.0.79",
4591
]
4592
4593
[[package]]
···
4602
4603
[[package]]
4604
name = "tokio-rustls"
4605
-
version = "0.26.0"
4606
source = "registry+https://github.com/rust-lang/crates.io-index"
4607
-
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
4608
dependencies = [
4609
"rustls",
4610
-
"rustls-pki-types",
4611
"tokio",
4612
]
4613
4614
[[package]]
4615
name = "tokio-util"
4616
-
version = "0.7.12"
4617
source = "registry+https://github.com/rust-lang/crates.io-index"
4618
-
checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"
4619
dependencies = [
4620
"bytes",
4621
"futures-core",
···
4626
4627
[[package]]
4628
name = "toml"
4629
-
version = "0.7.8"
4630
source = "registry+https://github.com/rust-lang/crates.io-index"
4631
-
checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
4632
dependencies = [
4633
"serde",
4634
-
"serde_spanned",
4635
-
"toml_datetime",
4636
-
"toml_edit 0.19.15",
4637
]
4638
4639
[[package]]
4640
name = "toml"
4641
-
version = "0.8.2"
4642
source = "registry+https://github.com/rust-lang/crates.io-index"
4643
-
checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
4644
dependencies = [
4645
-
"serde",
4646
-
"serde_spanned",
4647
-
"toml_datetime",
4648
-
"toml_edit 0.20.2",
4649
]
4650
4651
[[package]]
···
4658
]
4659
4660
[[package]]
4661
name = "toml_edit"
4662
version = "0.19.15"
4663
source = "registry+https://github.com/rust-lang/crates.io-index"
4664
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
4665
dependencies = [
4666
-
"indexmap 2.6.0",
4667
-
"serde",
4668
-
"serde_spanned",
4669
-
"toml_datetime",
4670
-
"winnow",
4671
]
4672
4673
[[package]]
···
4676
source = "registry+https://github.com/rust-lang/crates.io-index"
4677
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
4678
dependencies = [
4679
-
"indexmap 2.6.0",
4680
"serde",
4681
-
"serde_spanned",
4682
-
"toml_datetime",
4683
-
"winnow",
4684
]
4685
4686
[[package]]
4687
name = "tower-service"
4688
version = "0.3.3"
4689
source = "registry+https://github.com/rust-lang/crates.io-index"
···
4691
4692
[[package]]
4693
name = "tracing"
4694
-
version = "0.1.40"
4695
source = "registry+https://github.com/rust-lang/crates.io-index"
4696
-
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
4697
dependencies = [
4698
"pin-project-lite",
4699
"tracing-core",
4700
]
4701
4702
[[package]]
4703
name = "tracing-core"
4704
-
version = "0.1.32"
4705
source = "registry+https://github.com/rust-lang/crates.io-index"
4706
-
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
4707
dependencies = [
4708
"once_cell",
4709
]
4710
4711
[[package]]
4712
name = "tray-icon"
4713
-
version = "0.19.1"
4714
source = "registry+https://github.com/rust-lang/crates.io-index"
4715
-
checksum = "7c92af36a182b46206723bdf8a7942e20838cde1cf062e5b97854d57eb01763b"
4716
dependencies = [
4717
-
"core-graphics",
4718
"crossbeam-channel",
4719
"dirs",
4720
"libappindicator",
4721
"muda",
4722
-
"objc2 0.5.2",
4723
"objc2-app-kit",
4724
-
"objc2-foundation",
4725
"once_cell",
4726
-
"png",
4727
"serde",
4728
-
"thiserror",
4729
-
"windows-sys 0.59.0",
4730
]
4731
4732
[[package]]
···
4737
4738
[[package]]
4739
name = "typeid"
4740
-
version = "1.0.2"
4741
source = "registry+https://github.com/rust-lang/crates.io-index"
4742
-
checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e"
4743
4744
[[package]]
4745
name = "typenum"
4746
-
version = "1.17.0"
4747
source = "registry+https://github.com/rust-lang/crates.io-index"
4748
-
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
4749
4750
[[package]]
4751
name = "unic-char-property"
···
4789
]
4790
4791
[[package]]
4792
-
name = "unicode-bidi"
4793
-
version = "0.3.17"
4794
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4795
-
checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
4796
-
4797
-
[[package]]
4798
name = "unicode-ident"
4799
-
version = "1.0.13"
4800
-
source = "registry+https://github.com/rust-lang/crates.io-index"
4801
-
checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
4802
-
4803
-
[[package]]
4804
-
name = "unicode-normalization"
4805
-
version = "0.1.24"
4806
source = "registry+https://github.com/rust-lang/crates.io-index"
4807
-
checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
4808
-
dependencies = [
4809
-
"tinyvec",
4810
-
]
4811
4812
[[package]]
4813
name = "unicode-segmentation"
···
4823
4824
[[package]]
4825
name = "url"
4826
-
version = "2.5.2"
4827
source = "registry+https://github.com/rust-lang/crates.io-index"
4828
-
checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
4829
dependencies = [
4830
"form_urlencoded",
4831
-
"idna 0.5.0",
4832
"percent-encoding",
4833
"serde",
4834
]
···
4852
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
4853
4854
[[package]]
4855
name = "uuid"
4856
-
version = "1.11.0"
4857
source = "registry+https://github.com/rust-lang/crates.io-index"
4858
-
checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a"
4859
dependencies = [
4860
-
"getrandom 0.2.15",
4861
"serde",
4862
]
4863
4864
[[package]]
4865
name = "v_frame"
4866
-
version = "0.3.8"
4867
source = "registry+https://github.com/rust-lang/crates.io-index"
4868
-
checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b"
4869
dependencies = [
4870
"aligned-vec",
4871
"num-traits",
···
4880
4881
[[package]]
4882
name = "version-compare"
4883
-
version = "0.2.0"
4884
source = "registry+https://github.com/rust-lang/crates.io-index"
4885
-
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
4886
4887
[[package]]
4888
name = "version_check"
···
4891
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
4892
4893
[[package]]
4894
-
name = "vrcpm-rs"
4895
-
version = "0.2.1"
4896
-
dependencies = [
4897
-
"dirs",
4898
-
"fast_image_resize",
4899
-
"image",
4900
-
"mslnk",
4901
-
"notify",
4902
-
"open",
4903
-
"regex",
4904
-
"reqwest",
4905
-
"serde",
4906
-
"serde_json",
4907
-
"tauri",
4908
-
"tauri-build",
4909
-
"tauri-plugin-deep-link",
4910
-
"tauri-plugin-http",
4911
-
"tauri-plugin-process",
4912
-
"tauri-plugin-shell",
4913
-
]
4914
-
4915
-
[[package]]
4916
name = "vswhom"
4917
version = "0.1.0"
4918
source = "registry+https://github.com/rust-lang/crates.io-index"
···
4924
4925
[[package]]
4926
name = "vswhom-sys"
4927
-
version = "0.1.2"
4928
source = "registry+https://github.com/rust-lang/crates.io-index"
4929
-
checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18"
4930
dependencies = [
4931
"cc",
4932
"libc",
···
4959
4960
[[package]]
4961
name = "wasi"
4962
-
version = "0.11.0+wasi-snapshot-preview1"
4963
source = "registry+https://github.com/rust-lang/crates.io-index"
4964
-
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
4965
4966
[[package]]
4967
-
name = "wasm-bindgen"
4968
-
version = "0.2.95"
4969
source = "registry+https://github.com/rust-lang/crates.io-index"
4970
-
checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"
4971
dependencies = [
4972
-
"cfg-if",
4973
-
"once_cell",
4974
-
"wasm-bindgen-macro",
4975
]
4976
4977
[[package]]
4978
-
name = "wasm-bindgen-backend"
4979
-
version = "0.2.95"
4980
source = "registry+https://github.com/rust-lang/crates.io-index"
4981
-
checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"
4982
dependencies = [
4983
-
"bumpalo",
4984
-
"log",
4985
"once_cell",
4986
-
"proc-macro2",
4987
-
"quote",
4988
-
"syn 2.0.79",
4989
"wasm-bindgen-shared",
4990
]
4991
4992
[[package]]
4993
name = "wasm-bindgen-futures"
4994
-
version = "0.4.45"
4995
source = "registry+https://github.com/rust-lang/crates.io-index"
4996
-
checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b"
4997
dependencies = [
4998
"cfg-if",
4999
"js-sys",
5000
"wasm-bindgen",
5001
"web-sys",
5002
]
5003
5004
[[package]]
5005
name = "wasm-bindgen-macro"
5006
-
version = "0.2.95"
5007
source = "registry+https://github.com/rust-lang/crates.io-index"
5008
-
checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"
5009
dependencies = [
5010
"quote",
5011
"wasm-bindgen-macro-support",
···
5013
5014
[[package]]
5015
name = "wasm-bindgen-macro-support"
5016
-
version = "0.2.95"
5017
source = "registry+https://github.com/rust-lang/crates.io-index"
5018
-
checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"
5019
dependencies = [
5020
"proc-macro2",
5021
"quote",
5022
-
"syn 2.0.79",
5023
-
"wasm-bindgen-backend",
5024
"wasm-bindgen-shared",
5025
]
5026
5027
[[package]]
5028
name = "wasm-bindgen-shared"
5029
-
version = "0.2.95"
5030
source = "registry+https://github.com/rust-lang/crates.io-index"
5031
-
checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"
5032
5033
[[package]]
5034
name = "wasm-streams"
5035
-
version = "0.4.1"
5036
source = "registry+https://github.com/rust-lang/crates.io-index"
5037
-
checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd"
5038
dependencies = [
5039
"futures-util",
5040
"js-sys",
···
5045
5046
[[package]]
5047
name = "web-sys"
5048
-
version = "0.3.72"
5049
source = "registry+https://github.com/rust-lang/crates.io-index"
5050
-
checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112"
5051
dependencies = [
5052
"js-sys",
5053
"wasm-bindgen",
···
5099
5100
[[package]]
5101
name = "webpki-roots"
5102
-
version = "0.26.6"
5103
source = "registry+https://github.com/rust-lang/crates.io-index"
5104
-
checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958"
5105
dependencies = [
5106
"rustls-pki-types",
5107
]
5108
5109
[[package]]
5110
name = "webview2-com"
5111
-
version = "0.33.0"
5112
source = "registry+https://github.com/rust-lang/crates.io-index"
5113
-
checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c"
5114
dependencies = [
5115
"webview2-com-macros",
5116
"webview2-com-sys",
5117
"windows",
5118
-
"windows-core 0.58.0",
5119
"windows-implement",
5120
"windows-interface",
5121
]
···
5128
dependencies = [
5129
"proc-macro2",
5130
"quote",
5131
-
"syn 2.0.79",
5132
]
5133
5134
[[package]]
5135
name = "webview2-com-sys"
5136
-
version = "0.33.0"
5137
source = "registry+https://github.com/rust-lang/crates.io-index"
5138
-
checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886"
5139
dependencies = [
5140
-
"thiserror",
5141
"windows",
5142
-
"windows-core 0.58.0",
5143
]
5144
5145
[[package]]
5146
name = "weezl"
5147
-
version = "0.1.8"
5148
source = "registry+https://github.com/rust-lang/crates.io-index"
5149
-
checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
5150
5151
[[package]]
5152
name = "winapi"
···
5166
5167
[[package]]
5168
name = "winapi-util"
5169
-
version = "0.1.9"
5170
source = "registry+https://github.com/rust-lang/crates.io-index"
5171
-
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
5172
dependencies = [
5173
-
"windows-sys 0.59.0",
5174
]
5175
5176
[[package]]
···
5181
5182
[[package]]
5183
name = "window-vibrancy"
5184
-
version = "0.5.2"
5185
source = "registry+https://github.com/rust-lang/crates.io-index"
5186
-
checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150"
5187
dependencies = [
5188
-
"objc2 0.5.2",
5189
"objc2-app-kit",
5190
-
"objc2-foundation",
5191
"raw-window-handle",
5192
"windows-sys 0.59.0",
5193
"windows-version",
···
5195
5196
[[package]]
5197
name = "windows"
5198
-
version = "0.58.0"
5199
source = "registry+https://github.com/rust-lang/crates.io-index"
5200
-
checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
5201
dependencies = [
5202
-
"windows-core 0.58.0",
5203
-
"windows-targets 0.52.6",
5204
]
5205
5206
[[package]]
5207
name = "windows-core"
5208
-
version = "0.52.0"
5209
source = "registry+https://github.com/rust-lang/crates.io-index"
5210
-
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
5211
dependencies = [
5212
-
"windows-targets 0.52.6",
5213
]
5214
5215
[[package]]
5216
name = "windows-core"
5217
-
version = "0.58.0"
5218
source = "registry+https://github.com/rust-lang/crates.io-index"
5219
-
checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
5220
dependencies = [
5221
"windows-implement",
5222
"windows-interface",
5223
-
"windows-result",
5224
-
"windows-strings",
5225
-
"windows-targets 0.52.6",
5226
]
5227
5228
[[package]]
5229
name = "windows-implement"
5230
-
version = "0.58.0"
5231
source = "registry+https://github.com/rust-lang/crates.io-index"
5232
-
checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
5233
dependencies = [
5234
"proc-macro2",
5235
"quote",
5236
-
"syn 2.0.79",
5237
]
5238
5239
[[package]]
5240
name = "windows-interface"
5241
-
version = "0.58.0"
5242
source = "registry+https://github.com/rust-lang/crates.io-index"
5243
-
checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
5244
dependencies = [
5245
"proc-macro2",
5246
"quote",
5247
-
"syn 2.0.79",
5248
]
5249
5250
[[package]]
5251
name = "windows-registry"
5252
-
version = "0.2.0"
5253
source = "registry+https://github.com/rust-lang/crates.io-index"
5254
-
checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0"
5255
dependencies = [
5256
-
"windows-result",
5257
-
"windows-strings",
5258
-
"windows-targets 0.52.6",
5259
]
5260
5261
[[package]]
5262
name = "windows-result"
5263
-
version = "0.2.0"
5264
source = "registry+https://github.com/rust-lang/crates.io-index"
5265
-
checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
5266
dependencies = [
5267
-
"windows-targets 0.52.6",
5268
]
5269
5270
[[package]]
5271
name = "windows-strings"
5272
-
version = "0.1.0"
5273
source = "registry+https://github.com/rust-lang/crates.io-index"
5274
-
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
5275
dependencies = [
5276
-
"windows-result",
5277
-
"windows-targets 0.52.6",
5278
]
5279
5280
[[package]]
5281
-
name = "windows-sys"
5282
-
version = "0.45.0"
5283
source = "registry+https://github.com/rust-lang/crates.io-index"
5284
-
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
5285
dependencies = [
5286
-
"windows-targets 0.42.2",
5287
]
5288
5289
[[package]]
5290
name = "windows-sys"
5291
-
version = "0.48.0"
5292
source = "registry+https://github.com/rust-lang/crates.io-index"
5293
-
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
5294
dependencies = [
5295
-
"windows-targets 0.48.5",
5296
]
5297
5298
[[package]]
···
5314
]
5315
5316
[[package]]
5317
name = "windows-targets"
5318
version = "0.42.2"
5319
source = "registry+https://github.com/rust-lang/crates.io-index"
···
5330
5331
[[package]]
5332
name = "windows-targets"
5333
-
version = "0.48.5"
5334
-
source = "registry+https://github.com/rust-lang/crates.io-index"
5335
-
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
5336
-
dependencies = [
5337
-
"windows_aarch64_gnullvm 0.48.5",
5338
-
"windows_aarch64_msvc 0.48.5",
5339
-
"windows_i686_gnu 0.48.5",
5340
-
"windows_i686_msvc 0.48.5",
5341
-
"windows_x86_64_gnu 0.48.5",
5342
-
"windows_x86_64_gnullvm 0.48.5",
5343
-
"windows_x86_64_msvc 0.48.5",
5344
-
]
5345
-
5346
-
[[package]]
5347
-
name = "windows-targets"
5348
version = "0.52.6"
5349
source = "registry+https://github.com/rust-lang/crates.io-index"
5350
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
···
5352
"windows_aarch64_gnullvm 0.52.6",
5353
"windows_aarch64_msvc 0.52.6",
5354
"windows_i686_gnu 0.52.6",
5355
-
"windows_i686_gnullvm",
5356
"windows_i686_msvc 0.52.6",
5357
"windows_x86_64_gnu 0.52.6",
5358
"windows_x86_64_gnullvm 0.52.6",
···
5360
]
5361
5362
[[package]]
5363
name = "windows-version"
5364
-
version = "0.1.1"
5365
source = "registry+https://github.com/rust-lang/crates.io-index"
5366
-
checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515"
5367
dependencies = [
5368
-
"windows-targets 0.52.6",
5369
]
5370
5371
[[package]]
···
5376
5377
[[package]]
5378
name = "windows_aarch64_gnullvm"
5379
-
version = "0.48.5"
5380
source = "registry+https://github.com/rust-lang/crates.io-index"
5381
-
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
5382
5383
[[package]]
5384
name = "windows_aarch64_gnullvm"
5385
-
version = "0.52.6"
5386
source = "registry+https://github.com/rust-lang/crates.io-index"
5387
-
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
5388
5389
[[package]]
5390
name = "windows_aarch64_msvc"
···
5394
5395
[[package]]
5396
name = "windows_aarch64_msvc"
5397
-
version = "0.48.5"
5398
source = "registry+https://github.com/rust-lang/crates.io-index"
5399
-
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
5400
5401
[[package]]
5402
name = "windows_aarch64_msvc"
5403
-
version = "0.52.6"
5404
source = "registry+https://github.com/rust-lang/crates.io-index"
5405
-
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
5406
5407
[[package]]
5408
name = "windows_i686_gnu"
···
5412
5413
[[package]]
5414
name = "windows_i686_gnu"
5415
-
version = "0.48.5"
5416
source = "registry+https://github.com/rust-lang/crates.io-index"
5417
-
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
5418
5419
[[package]]
5420
name = "windows_i686_gnu"
5421
-
version = "0.52.6"
5422
source = "registry+https://github.com/rust-lang/crates.io-index"
5423
-
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
5424
5425
[[package]]
5426
name = "windows_i686_gnullvm"
···
5429
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
5430
5431
[[package]]
5432
name = "windows_i686_msvc"
5433
version = "0.42.2"
5434
source = "registry+https://github.com/rust-lang/crates.io-index"
···
5436
5437
[[package]]
5438
name = "windows_i686_msvc"
5439
-
version = "0.48.5"
5440
source = "registry+https://github.com/rust-lang/crates.io-index"
5441
-
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
5442
5443
[[package]]
5444
name = "windows_i686_msvc"
5445
-
version = "0.52.6"
5446
source = "registry+https://github.com/rust-lang/crates.io-index"
5447
-
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
5448
5449
[[package]]
5450
name = "windows_x86_64_gnu"
···
5454
5455
[[package]]
5456
name = "windows_x86_64_gnu"
5457
-
version = "0.48.5"
5458
source = "registry+https://github.com/rust-lang/crates.io-index"
5459
-
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
5460
5461
[[package]]
5462
name = "windows_x86_64_gnu"
5463
-
version = "0.52.6"
5464
source = "registry+https://github.com/rust-lang/crates.io-index"
5465
-
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
5466
5467
[[package]]
5468
name = "windows_x86_64_gnullvm"
···
5472
5473
[[package]]
5474
name = "windows_x86_64_gnullvm"
5475
-
version = "0.48.5"
5476
source = "registry+https://github.com/rust-lang/crates.io-index"
5477
-
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
5478
5479
[[package]]
5480
name = "windows_x86_64_gnullvm"
5481
-
version = "0.52.6"
5482
source = "registry+https://github.com/rust-lang/crates.io-index"
5483
-
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
5484
5485
[[package]]
5486
name = "windows_x86_64_msvc"
···
5490
5491
[[package]]
5492
name = "windows_x86_64_msvc"
5493
-
version = "0.48.5"
5494
source = "registry+https://github.com/rust-lang/crates.io-index"
5495
-
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
5496
5497
[[package]]
5498
name = "windows_x86_64_msvc"
5499
-
version = "0.52.6"
5500
source = "registry+https://github.com/rust-lang/crates.io-index"
5501
-
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
5502
5503
[[package]]
5504
name = "winnow"
···
5510
]
5511
5512
[[package]]
5513
-
name = "winreg"
5514
-
version = "0.50.0"
5515
source = "registry+https://github.com/rust-lang/crates.io-index"
5516
-
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
5517
dependencies = [
5518
-
"cfg-if",
5519
-
"windows-sys 0.48.0",
5520
]
5521
5522
[[package]]
5523
name = "winreg"
5524
-
version = "0.52.0"
5525
source = "registry+https://github.com/rust-lang/crates.io-index"
5526
-
checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
5527
dependencies = [
5528
"cfg-if",
5529
-
"windows-sys 0.48.0",
5530
]
5531
5532
[[package]]
5533
name = "wry"
5534
-
version = "0.46.2"
5535
source = "registry+https://github.com/rust-lang/crates.io-index"
5536
-
checksum = "6fa1c8c760041c64ce6be99f83d6cb55fe3fcd85a1ad46d32895f6e65cee87ba"
5537
dependencies = [
5538
"base64 0.22.1",
5539
-
"block2",
5540
"crossbeam-channel",
5541
"dpi",
5542
"dunce",
5543
"gdkx11",
···
5549
"kuchikiki",
5550
"libc",
5551
"ndk",
5552
-
"objc2 0.5.2",
5553
"objc2-app-kit",
5554
-
"objc2-foundation",
5555
"objc2-ui-kit",
5556
"objc2-web-kit",
5557
"once_cell",
···
5560
"sha2",
5561
"soup3",
5562
"tao-macros",
5563
-
"thiserror",
5564
"webkit2gtk",
5565
"webkit2gtk-sys",
5566
"webview2-com",
5567
"windows",
5568
-
"windows-core 0.58.0",
5569
"windows-version",
5570
"x11-dl",
5571
]
···
5592
]
5593
5594
[[package]]
5595
name = "zerocopy"
5596
-
version = "0.7.35"
5597
source = "registry+https://github.com/rust-lang/crates.io-index"
5598
-
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
5599
dependencies = [
5600
-
"byteorder",
5601
"zerocopy-derive",
5602
]
5603
5604
[[package]]
5605
name = "zerocopy-derive"
5606
-
version = "0.7.35"
5607
source = "registry+https://github.com/rust-lang/crates.io-index"
5608
-
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
5609
dependencies = [
5610
"proc-macro2",
5611
"quote",
5612
-
"syn 2.0.79",
5613
]
5614
5615
[[package]]
5616
name = "zeroize"
5617
-
version = "1.8.1"
5618
source = "registry+https://github.com/rust-lang/crates.io-index"
5619
-
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
5620
5621
[[package]]
5622
name = "zune-core"
···
5635
5636
[[package]]
5637
name = "zune-jpeg"
5638
-
version = "0.4.13"
5639
source = "registry+https://github.com/rust-lang/crates.io-index"
5640
-
checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768"
5641
dependencies = [
5642
"zune-core",
5643
]
···
1
# This file is automatically @generated by Cargo.
2
# It is not intended for manual editing.
3
+
version = 4
4
5
[[package]]
6
+
name = "VRChatPhotoManager"
7
+
version = "0.2.7"
8
dependencies = [
9
+
"arboard",
10
+
"dirs",
11
+
"fast_image_resize",
12
+
"image",
13
+
"mslnk",
14
+
"notify",
15
+
"open",
16
+
"regex",
17
+
"reqwest",
18
+
"serde",
19
+
"serde_json",
20
+
"tauri",
21
+
"tauri-build",
22
+
"tauri-plugin-http",
23
+
"tauri-plugin-process",
24
+
"tauri-plugin-shell",
25
+
"tauri-plugin-single-instance",
26
]
27
28
[[package]]
29
name = "adler2"
30
+
version = "2.0.1"
31
source = "registry+https://github.com/rust-lang/crates.io-index"
32
+
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
33
34
[[package]]
35
name = "aho-corasick"
36
+
version = "1.1.4"
37
source = "registry+https://github.com/rust-lang/crates.io-index"
38
+
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
39
dependencies = [
40
"memchr",
41
]
42
43
[[package]]
44
name = "aligned-vec"
45
+
version = "0.6.4"
46
source = "registry+https://github.com/rust-lang/crates.io-index"
47
+
checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b"
48
+
dependencies = [
49
+
"equator",
50
+
]
51
52
[[package]]
53
name = "alloc-no-stdlib"
···
65
]
66
67
[[package]]
68
name = "android_system_properties"
69
version = "0.1.5"
70
source = "registry+https://github.com/rust-lang/crates.io-index"
···
75
76
[[package]]
77
name = "anyhow"
78
+
version = "1.0.100"
79
source = "registry+https://github.com/rust-lang/crates.io-index"
80
+
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
81
82
[[package]]
83
name = "arbitrary"
84
+
version = "1.4.2"
85
source = "registry+https://github.com/rust-lang/crates.io-index"
86
+
checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
87
+
88
+
[[package]]
89
+
name = "arboard"
90
+
version = "3.6.1"
91
+
source = "registry+https://github.com/rust-lang/crates.io-index"
92
+
checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf"
93
+
dependencies = [
94
+
"clipboard-win",
95
+
"image",
96
+
"log",
97
+
"objc2 0.6.3",
98
+
"objc2-app-kit",
99
+
"objc2-core-foundation",
100
+
"objc2-core-graphics",
101
+
"objc2-foundation 0.3.2",
102
+
"parking_lot",
103
+
"percent-encoding",
104
+
"windows-sys 0.60.2",
105
+
"x11rb",
106
+
]
107
108
[[package]]
109
name = "arg_enum_proc_macro"
···
113
dependencies = [
114
"proc-macro2",
115
"quote",
116
+
"syn 2.0.109",
117
]
118
119
[[package]]
···
123
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
124
125
[[package]]
126
+
name = "async-broadcast"
127
+
version = "0.7.2"
128
+
source = "registry+https://github.com/rust-lang/crates.io-index"
129
+
checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
130
+
dependencies = [
131
+
"event-listener",
132
+
"event-listener-strategy",
133
+
"futures-core",
134
+
"pin-project-lite",
135
+
]
136
+
137
+
[[package]]
138
+
name = "async-channel"
139
+
version = "2.5.0"
140
+
source = "registry+https://github.com/rust-lang/crates.io-index"
141
+
checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
142
+
dependencies = [
143
+
"concurrent-queue",
144
+
"event-listener-strategy",
145
+
"futures-core",
146
+
"pin-project-lite",
147
+
]
148
+
149
+
[[package]]
150
+
name = "async-executor"
151
+
version = "1.13.3"
152
+
source = "registry+https://github.com/rust-lang/crates.io-index"
153
+
checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
154
+
dependencies = [
155
+
"async-task",
156
+
"concurrent-queue",
157
+
"fastrand",
158
+
"futures-lite",
159
+
"pin-project-lite",
160
+
"slab",
161
+
]
162
+
163
+
[[package]]
164
+
name = "async-io"
165
+
version = "2.6.0"
166
+
source = "registry+https://github.com/rust-lang/crates.io-index"
167
+
checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
168
+
dependencies = [
169
+
"autocfg",
170
+
"cfg-if",
171
+
"concurrent-queue",
172
+
"futures-io",
173
+
"futures-lite",
174
+
"parking",
175
+
"polling",
176
+
"rustix",
177
+
"slab",
178
+
"windows-sys 0.61.2",
179
+
]
180
+
181
+
[[package]]
182
+
name = "async-lock"
183
+
version = "3.4.1"
184
+
source = "registry+https://github.com/rust-lang/crates.io-index"
185
+
checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc"
186
+
dependencies = [
187
+
"event-listener",
188
+
"event-listener-strategy",
189
+
"pin-project-lite",
190
+
]
191
+
192
+
[[package]]
193
+
name = "async-process"
194
+
version = "2.5.0"
195
+
source = "registry+https://github.com/rust-lang/crates.io-index"
196
+
checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
197
+
dependencies = [
198
+
"async-channel",
199
+
"async-io",
200
+
"async-lock",
201
+
"async-signal",
202
+
"async-task",
203
+
"blocking",
204
+
"cfg-if",
205
+
"event-listener",
206
+
"futures-lite",
207
+
"rustix",
208
+
]
209
+
210
+
[[package]]
211
+
name = "async-recursion"
212
+
version = "1.1.1"
213
+
source = "registry+https://github.com/rust-lang/crates.io-index"
214
+
checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
215
+
dependencies = [
216
+
"proc-macro2",
217
+
"quote",
218
+
"syn 2.0.109",
219
+
]
220
+
221
+
[[package]]
222
+
name = "async-signal"
223
+
version = "0.2.13"
224
+
source = "registry+https://github.com/rust-lang/crates.io-index"
225
+
checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
226
+
dependencies = [
227
+
"async-io",
228
+
"async-lock",
229
+
"atomic-waker",
230
+
"cfg-if",
231
+
"futures-core",
232
+
"futures-io",
233
+
"rustix",
234
+
"signal-hook-registry",
235
+
"slab",
236
+
"windows-sys 0.61.2",
237
+
]
238
+
239
+
[[package]]
240
+
name = "async-task"
241
+
version = "4.7.1"
242
+
source = "registry+https://github.com/rust-lang/crates.io-index"
243
+
checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
244
+
245
+
[[package]]
246
+
name = "async-trait"
247
+
version = "0.1.89"
248
+
source = "registry+https://github.com/rust-lang/crates.io-index"
249
+
checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
250
+
dependencies = [
251
+
"proc-macro2",
252
+
"quote",
253
+
"syn 2.0.109",
254
+
]
255
+
256
+
[[package]]
257
name = "atk"
258
+
version = "0.18.2"
259
source = "registry+https://github.com/rust-lang/crates.io-index"
260
+
checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b"
261
dependencies = [
262
"atk-sys",
263
"glib",
···
266
267
[[package]]
268
name = "atk-sys"
269
+
version = "0.18.2"
270
source = "registry+https://github.com/rust-lang/crates.io-index"
271
+
checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086"
272
dependencies = [
273
"glib-sys",
274
"gobject-sys",
···
284
285
[[package]]
286
name = "autocfg"
287
+
version = "1.5.0"
288
source = "registry+https://github.com/rust-lang/crates.io-index"
289
+
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
290
291
[[package]]
292
name = "av1-grain"
293
+
version = "0.2.5"
294
source = "registry+https://github.com/rust-lang/crates.io-index"
295
+
checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8"
296
dependencies = [
297
"anyhow",
298
"arrayvec",
···
304
305
[[package]]
306
name = "avif-serialize"
307
+
version = "0.8.6"
308
source = "registry+https://github.com/rust-lang/crates.io-index"
309
+
checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f"
310
dependencies = [
311
"arrayvec",
312
]
313
314
[[package]]
315
name = "base64"
316
version = "0.21.7"
317
source = "registry+https://github.com/rust-lang/crates.io-index"
···
325
326
[[package]]
327
name = "bit_field"
328
+
version = "0.10.3"
329
source = "registry+https://github.com/rust-lang/crates.io-index"
330
+
checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
331
332
[[package]]
333
name = "bitflags"
···
337
338
[[package]]
339
name = "bitflags"
340
+
version = "2.10.0"
341
source = "registry+https://github.com/rust-lang/crates.io-index"
342
+
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
343
dependencies = [
344
+
"serde_core",
345
]
346
347
[[package]]
348
name = "bitstream-io"
349
+
version = "2.6.0"
350
source = "registry+https://github.com/rust-lang/crates.io-index"
351
+
checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2"
352
353
[[package]]
354
name = "block-buffer"
···
369
]
370
371
[[package]]
372
+
name = "block2"
373
+
version = "0.6.2"
374
+
source = "registry+https://github.com/rust-lang/crates.io-index"
375
+
checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
376
+
dependencies = [
377
+
"objc2 0.6.3",
378
+
]
379
+
380
+
[[package]]
381
+
name = "blocking"
382
+
version = "1.6.2"
383
+
source = "registry+https://github.com/rust-lang/crates.io-index"
384
+
checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21"
385
+
dependencies = [
386
+
"async-channel",
387
+
"async-task",
388
+
"futures-io",
389
+
"futures-lite",
390
+
"piper",
391
+
]
392
+
393
+
[[package]]
394
name = "brotli"
395
+
version = "8.0.2"
396
source = "registry+https://github.com/rust-lang/crates.io-index"
397
+
checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
398
dependencies = [
399
"alloc-no-stdlib",
400
"alloc-stdlib",
···
403
404
[[package]]
405
name = "brotli-decompressor"
406
+
version = "5.0.0"
407
source = "registry+https://github.com/rust-lang/crates.io-index"
408
+
checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
409
dependencies = [
410
"alloc-no-stdlib",
411
"alloc-stdlib",
···
413
414
[[package]]
415
name = "built"
416
+
version = "0.7.7"
417
source = "registry+https://github.com/rust-lang/crates.io-index"
418
+
checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b"
419
420
[[package]]
421
name = "bumpalo"
422
+
version = "3.19.0"
423
source = "registry+https://github.com/rust-lang/crates.io-index"
424
+
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
425
426
[[package]]
427
name = "bytemuck"
428
+
version = "1.24.0"
429
source = "registry+https://github.com/rust-lang/crates.io-index"
430
+
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
431
432
[[package]]
433
name = "byteorder"
···
443
444
[[package]]
445
name = "bytes"
446
+
version = "1.10.1"
447
source = "registry+https://github.com/rust-lang/crates.io-index"
448
+
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
449
dependencies = [
450
"serde",
451
]
···
456
source = "registry+https://github.com/rust-lang/crates.io-index"
457
checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
458
dependencies = [
459
+
"bitflags 2.10.0",
460
"cairo-sys-rs",
461
"glib",
462
"libc",
463
"once_cell",
464
+
"thiserror 1.0.69",
465
]
466
467
[[package]]
···
477
478
[[package]]
479
name = "camino"
480
+
version = "1.2.1"
481
source = "registry+https://github.com/rust-lang/crates.io-index"
482
+
checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609"
483
dependencies = [
484
+
"serde_core",
485
]
486
487
[[package]]
488
name = "cargo-platform"
489
+
version = "0.1.9"
490
source = "registry+https://github.com/rust-lang/crates.io-index"
491
+
checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
492
dependencies = [
493
"serde",
494
]
495
496
[[package]]
497
name = "cargo_metadata"
498
+
version = "0.19.2"
499
source = "registry+https://github.com/rust-lang/crates.io-index"
500
+
checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
501
dependencies = [
502
"camino",
503
"cargo-platform",
504
"semver",
505
"serde",
506
"serde_json",
507
+
"thiserror 2.0.17",
508
]
509
510
[[package]]
511
name = "cargo_toml"
512
+
version = "0.22.3"
513
source = "registry+https://github.com/rust-lang/crates.io-index"
514
+
checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
515
dependencies = [
516
"serde",
517
+
"toml 0.9.8",
518
]
519
520
[[package]]
521
name = "cc"
522
+
version = "1.2.45"
523
source = "registry+https://github.com/rust-lang/crates.io-index"
524
+
checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe"
525
dependencies = [
526
+
"find-msvc-tools",
527
"jobserver",
528
"libc",
529
"shlex",
···
558
559
[[package]]
560
name = "cfg-if"
561
+
version = "1.0.4"
562
source = "registry+https://github.com/rust-lang/crates.io-index"
563
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
564
565
[[package]]
566
name = "cfg_aliases"
···
570
571
[[package]]
572
name = "chrono"
573
+
version = "0.4.42"
574
source = "registry+https://github.com/rust-lang/crates.io-index"
575
+
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
576
dependencies = [
577
"iana-time-zone",
578
"num-traits",
579
"serde",
580
+
"windows-link 0.2.1",
581
]
582
583
[[package]]
584
+
name = "clipboard-win"
585
+
version = "5.4.1"
586
source = "registry+https://github.com/rust-lang/crates.io-index"
587
+
checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4"
588
dependencies = [
589
+
"error-code",
590
]
591
592
[[package]]
···
606
]
607
608
[[package]]
609
+
name = "concurrent-queue"
610
+
version = "2.5.0"
611
+
source = "registry+https://github.com/rust-lang/crates.io-index"
612
+
checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
613
+
dependencies = [
614
+
"crossbeam-utils",
615
+
]
616
+
617
+
[[package]]
618
+
name = "const-random"
619
+
version = "0.1.18"
620
+
source = "registry+https://github.com/rust-lang/crates.io-index"
621
+
checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
622
+
dependencies = [
623
+
"const-random-macro",
624
+
]
625
+
626
+
[[package]]
627
+
name = "const-random-macro"
628
+
version = "0.1.16"
629
+
source = "registry+https://github.com/rust-lang/crates.io-index"
630
+
checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
631
+
dependencies = [
632
+
"getrandom 0.2.16",
633
+
"once_cell",
634
+
"tiny-keccak",
635
+
]
636
+
637
+
[[package]]
638
name = "convert_case"
639
version = "0.4.0"
640
source = "registry+https://github.com/rust-lang/crates.io-index"
···
653
654
[[package]]
655
name = "cookie_store"
656
+
version = "0.21.1"
657
source = "registry+https://github.com/rust-lang/crates.io-index"
658
+
checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9"
659
dependencies = [
660
"cookie",
661
+
"document-features",
662
+
"idna",
663
"log",
664
"publicsuffix",
665
"serde",
···
681
682
[[package]]
683
name = "core-foundation"
684
+
version = "0.10.1"
685
source = "registry+https://github.com/rust-lang/crates.io-index"
686
+
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
687
dependencies = [
688
"core-foundation-sys",
689
"libc",
···
701
source = "registry+https://github.com/rust-lang/crates.io-index"
702
checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
703
dependencies = [
704
+
"bitflags 2.10.0",
705
+
"core-foundation 0.10.1",
706
"core-graphics-types",
707
"foreign-types 0.5.0",
708
"libc",
···
714
source = "registry+https://github.com/rust-lang/crates.io-index"
715
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
716
dependencies = [
717
+
"bitflags 2.10.0",
718
+
"core-foundation 0.10.1",
719
"libc",
720
]
721
722
[[package]]
723
name = "cpufeatures"
724
+
version = "0.2.17"
725
source = "registry+https://github.com/rust-lang/crates.io-index"
726
+
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
727
dependencies = [
728
"libc",
729
]
730
731
[[package]]
732
name = "crc32fast"
733
+
version = "1.5.0"
734
source = "registry+https://github.com/rust-lang/crates.io-index"
735
+
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
736
dependencies = [
737
"cfg-if",
738
]
739
740
[[package]]
741
name = "crossbeam-channel"
742
+
version = "0.5.15"
743
source = "registry+https://github.com/rust-lang/crates.io-index"
744
+
checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
745
dependencies = [
746
"crossbeam-utils",
747
]
748
749
[[package]]
750
name = "crossbeam-deque"
751
+
version = "0.8.6"
752
source = "registry+https://github.com/rust-lang/crates.io-index"
753
+
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
754
dependencies = [
755
"crossbeam-epoch",
756
"crossbeam-utils",
···
767
768
[[package]]
769
name = "crossbeam-utils"
770
+
version = "0.8.21"
771
source = "registry+https://github.com/rust-lang/crates.io-index"
772
+
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
773
774
[[package]]
775
name = "crunchy"
776
+
version = "0.2.4"
777
source = "registry+https://github.com/rust-lang/crates.io-index"
778
+
checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
779
780
[[package]]
781
name = "crypto-common"
···
789
790
[[package]]
791
name = "cssparser"
792
+
version = "0.29.6"
793
source = "registry+https://github.com/rust-lang/crates.io-index"
794
+
checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa"
795
dependencies = [
796
"cssparser-macros",
797
"dtoa-short",
798
+
"itoa",
799
"matches",
800
+
"phf 0.10.1",
801
"proc-macro2",
802
"quote",
803
"smallvec",
···
811
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
812
dependencies = [
813
"quote",
814
+
"syn 2.0.109",
815
]
816
817
[[package]]
818
name = "ctor"
819
+
version = "0.2.9"
820
source = "registry+https://github.com/rust-lang/crates.io-index"
821
+
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
822
dependencies = [
823
"quote",
824
+
"syn 2.0.109",
825
]
826
827
[[package]]
828
name = "darling"
829
+
version = "0.21.3"
830
source = "registry+https://github.com/rust-lang/crates.io-index"
831
+
checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
832
dependencies = [
833
"darling_core",
834
"darling_macro",
···
836
837
[[package]]
838
name = "darling_core"
839
+
version = "0.21.3"
840
source = "registry+https://github.com/rust-lang/crates.io-index"
841
+
checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
842
dependencies = [
843
"fnv",
844
"ident_case",
845
"proc-macro2",
846
"quote",
847
"strsim",
848
+
"syn 2.0.109",
849
]
850
851
[[package]]
852
name = "darling_macro"
853
+
version = "0.21.3"
854
source = "registry+https://github.com/rust-lang/crates.io-index"
855
+
checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
856
dependencies = [
857
"darling_core",
858
"quote",
859
+
"syn 2.0.109",
860
]
861
862
[[package]]
863
name = "data-url"
864
+
version = "0.3.2"
865
source = "registry+https://github.com/rust-lang/crates.io-index"
866
+
checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
867
868
[[package]]
869
name = "deranged"
870
+
version = "0.5.5"
871
source = "registry+https://github.com/rust-lang/crates.io-index"
872
+
checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
873
dependencies = [
874
"powerfmt",
875
+
"serde_core",
876
]
877
878
[[package]]
879
name = "derive_more"
880
+
version = "0.99.20"
881
source = "registry+https://github.com/rust-lang/crates.io-index"
882
+
checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f"
883
dependencies = [
884
"convert_case",
885
"proc-macro2",
886
"quote",
887
"rustc_version",
888
+
"syn 2.0.109",
889
]
890
891
[[package]]
···
900
901
[[package]]
902
name = "dirs"
903
+
version = "6.0.0"
904
source = "registry+https://github.com/rust-lang/crates.io-index"
905
+
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
906
dependencies = [
907
"dirs-sys",
908
]
909
910
[[package]]
911
name = "dirs-sys"
912
+
version = "0.5.0"
913
source = "registry+https://github.com/rust-lang/crates.io-index"
914
+
checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
915
dependencies = [
916
"libc",
917
"option-ext",
918
"redox_users",
919
+
"windows-sys 0.61.2",
920
]
921
922
[[package]]
···
926
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
927
928
[[package]]
929
+
name = "dispatch2"
930
+
version = "0.3.0"
931
+
source = "registry+https://github.com/rust-lang/crates.io-index"
932
+
checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
933
+
dependencies = [
934
+
"bitflags 2.10.0",
935
+
"objc2 0.6.3",
936
+
]
937
+
938
+
[[package]]
939
+
name = "displaydoc"
940
+
version = "0.2.5"
941
+
source = "registry+https://github.com/rust-lang/crates.io-index"
942
+
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
943
+
dependencies = [
944
+
"proc-macro2",
945
+
"quote",
946
+
"syn 2.0.109",
947
+
]
948
+
949
+
[[package]]
950
name = "dlopen2"
951
+
version = "0.8.0"
952
source = "registry+https://github.com/rust-lang/crates.io-index"
953
+
checksum = "b54f373ccf864bf587a89e880fb7610f8d73f3045f13580948ccbcaff26febff"
954
dependencies = [
955
"dlopen2_derive",
956
"libc",
···
960
961
[[package]]
962
name = "dlopen2_derive"
963
+
version = "0.4.1"
964
source = "registry+https://github.com/rust-lang/crates.io-index"
965
+
checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4"
966
dependencies = [
967
"proc-macro2",
968
"quote",
969
+
"syn 2.0.109",
970
+
]
971
+
972
+
[[package]]
973
+
name = "dlv-list"
974
+
version = "0.5.2"
975
+
source = "registry+https://github.com/rust-lang/crates.io-index"
976
+
checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
977
+
dependencies = [
978
+
"const-random",
979
]
980
981
[[package]]
982
name = "document-features"
983
+
version = "0.2.12"
984
source = "registry+https://github.com/rust-lang/crates.io-index"
985
+
checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
986
dependencies = [
987
"litrs",
988
]
989
990
[[package]]
991
name = "dpi"
992
+
version = "0.1.2"
993
source = "registry+https://github.com/rust-lang/crates.io-index"
994
+
checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
995
dependencies = [
996
"serde",
997
]
998
999
[[package]]
1000
name = "dtoa"
1001
+
version = "1.0.10"
1002
source = "registry+https://github.com/rust-lang/crates.io-index"
1003
+
checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04"
1004
1005
[[package]]
1006
name = "dtoa-short"
···
1019
1020
[[package]]
1021
name = "dyn-clone"
1022
+
version = "1.0.20"
1023
source = "registry+https://github.com/rust-lang/crates.io-index"
1024
+
checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
1025
1026
[[package]]
1027
name = "either"
1028
+
version = "1.15.0"
1029
source = "registry+https://github.com/rust-lang/crates.io-index"
1030
+
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
1031
1032
[[package]]
1033
name = "embed-resource"
1034
+
version = "3.0.6"
1035
source = "registry+https://github.com/rust-lang/crates.io-index"
1036
+
checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
1037
dependencies = [
1038
"cc",
1039
"memchr",
1040
"rustc_version",
1041
+
"toml 0.9.8",
1042
"vswhom",
1043
+
"winreg",
1044
]
1045
1046
[[package]]
···
1051
1052
[[package]]
1053
name = "encoding_rs"
1054
+
version = "0.8.35"
1055
source = "registry+https://github.com/rust-lang/crates.io-index"
1056
+
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
1057
dependencies = [
1058
"cfg-if",
1059
]
1060
1061
[[package]]
1062
+
name = "endi"
1063
+
version = "1.1.0"
1064
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1065
+
checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
1066
+
1067
+
[[package]]
1068
+
name = "enumflags2"
1069
+
version = "0.7.12"
1070
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1071
+
checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
1072
+
dependencies = [
1073
+
"enumflags2_derive",
1074
+
"serde",
1075
+
]
1076
+
1077
+
[[package]]
1078
+
name = "enumflags2_derive"
1079
+
version = "0.7.12"
1080
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1081
+
checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
1082
+
dependencies = [
1083
+
"proc-macro2",
1084
+
"quote",
1085
+
"syn 2.0.109",
1086
+
]
1087
+
1088
+
[[package]]
1089
+
name = "equator"
1090
+
version = "0.4.2"
1091
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1092
+
checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc"
1093
+
dependencies = [
1094
+
"equator-macro",
1095
+
]
1096
+
1097
+
[[package]]
1098
+
name = "equator-macro"
1099
+
version = "0.4.2"
1100
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1101
+
checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3"
1102
+
dependencies = [
1103
+
"proc-macro2",
1104
+
"quote",
1105
+
"syn 2.0.109",
1106
+
]
1107
+
1108
+
[[package]]
1109
name = "equivalent"
1110
+
version = "1.0.2"
1111
source = "registry+https://github.com/rust-lang/crates.io-index"
1112
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
1113
1114
[[package]]
1115
name = "erased-serde"
1116
+
version = "0.4.9"
1117
source = "registry+https://github.com/rust-lang/crates.io-index"
1118
+
checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3"
1119
dependencies = [
1120
"serde",
1121
+
"serde_core",
1122
"typeid",
1123
]
1124
1125
[[package]]
1126
name = "errno"
1127
+
version = "0.3.14"
1128
source = "registry+https://github.com/rust-lang/crates.io-index"
1129
+
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1130
dependencies = [
1131
"libc",
1132
+
"windows-sys 0.61.2",
1133
+
]
1134
+
1135
+
[[package]]
1136
+
name = "error-code"
1137
+
version = "3.3.2"
1138
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1139
+
checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
1140
+
1141
+
[[package]]
1142
+
name = "event-listener"
1143
+
version = "5.4.1"
1144
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1145
+
checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1146
+
dependencies = [
1147
+
"concurrent-queue",
1148
+
"parking",
1149
+
"pin-project-lite",
1150
+
]
1151
+
1152
+
[[package]]
1153
+
name = "event-listener-strategy"
1154
+
version = "0.5.4"
1155
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1156
+
checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
1157
+
dependencies = [
1158
+
"event-listener",
1159
+
"pin-project-lite",
1160
]
1161
1162
[[package]]
1163
name = "exr"
1164
+
version = "1.73.0"
1165
source = "registry+https://github.com/rust-lang/crates.io-index"
1166
+
checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0"
1167
dependencies = [
1168
"bit_field",
1169
"half",
1170
"lebe",
1171
+
"miniz_oxide",
1172
"rayon-core",
1173
"smallvec",
1174
"zune-inflate",
···
1176
1177
[[package]]
1178
name = "fast_image_resize"
1179
+
version = "5.3.0"
1180
source = "registry+https://github.com/rust-lang/crates.io-index"
1181
+
checksum = "1bd1eda71e8af93f8b00e189404235d82f4de77ea4a0d182b44a7f03994d647c"
1182
dependencies = [
1183
"bytemuck",
1184
"cfg-if",
1185
"document-features",
1186
"image",
1187
"num-traits",
1188
+
"thiserror 2.0.17",
1189
]
1190
1191
[[package]]
1192
name = "fastrand"
1193
+
version = "2.3.0"
1194
source = "registry+https://github.com/rust-lang/crates.io-index"
1195
+
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
1196
1197
[[package]]
1198
+
name = "fax"
1199
+
version = "0.2.6"
1200
source = "registry+https://github.com/rust-lang/crates.io-index"
1201
+
checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
1202
dependencies = [
1203
+
"fax_derive",
1204
]
1205
1206
[[package]]
1207
+
name = "fax_derive"
1208
+
version = "0.2.0"
1209
source = "registry+https://github.com/rust-lang/crates.io-index"
1210
+
checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
1211
dependencies = [
1212
+
"proc-macro2",
1213
+
"quote",
1214
+
"syn 2.0.109",
1215
]
1216
1217
[[package]]
1218
+
name = "fdeflate"
1219
+
version = "0.3.7"
1220
source = "registry+https://github.com/rust-lang/crates.io-index"
1221
+
checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
1222
dependencies = [
1223
+
"simd-adler32",
1224
]
1225
1226
[[package]]
1227
+
name = "field-offset"
1228
+
version = "0.3.6"
1229
source = "registry+https://github.com/rust-lang/crates.io-index"
1230
+
checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
1231
dependencies = [
1232
+
"memoffset",
1233
+
"rustc_version",
1234
]
1235
1236
[[package]]
1237
+
name = "find-msvc-tools"
1238
version = "0.1.4"
1239
source = "registry+https://github.com/rust-lang/crates.io-index"
1240
+
checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
1241
1242
[[package]]
1243
+
name = "flate2"
1244
+
version = "1.1.5"
1245
source = "registry+https://github.com/rust-lang/crates.io-index"
1246
+
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
1247
dependencies = [
1248
+
"crc32fast",
1249
+
"miniz_oxide",
1250
]
1251
1252
[[package]]
···
1282
dependencies = [
1283
"proc-macro2",
1284
"quote",
1285
+
"syn 2.0.109",
1286
]
1287
1288
[[package]]
···
1299
1300
[[package]]
1301
name = "form_urlencoded"
1302
+
version = "1.2.2"
1303
source = "registry+https://github.com/rust-lang/crates.io-index"
1304
+
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
1305
dependencies = [
1306
"percent-encoding",
1307
]
···
1357
version = "0.3.31"
1358
source = "registry+https://github.com/rust-lang/crates.io-index"
1359
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
1360
+
1361
+
[[package]]
1362
+
name = "futures-lite"
1363
+
version = "2.6.1"
1364
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1365
+
checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
1366
+
dependencies = [
1367
+
"fastrand",
1368
+
"futures-core",
1369
+
"futures-io",
1370
+
"parking",
1371
+
"pin-project-lite",
1372
+
]
1373
1374
[[package]]
1375
name = "futures-macro"
···
1379
dependencies = [
1380
"proc-macro2",
1381
"quote",
1382
+
"syn 2.0.109",
1383
]
1384
1385
[[package]]
···
1422
1423
[[package]]
1424
name = "gdk"
1425
+
version = "0.18.2"
1426
source = "registry+https://github.com/rust-lang/crates.io-index"
1427
+
checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691"
1428
dependencies = [
1429
"cairo-rs",
1430
"gdk-pixbuf",
···
1463
1464
[[package]]
1465
name = "gdk-sys"
1466
+
version = "0.18.2"
1467
source = "registry+https://github.com/rust-lang/crates.io-index"
1468
+
checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7"
1469
dependencies = [
1470
"cairo-sys-rs",
1471
"gdk-pixbuf-sys",
···
1480
1481
[[package]]
1482
name = "gdkwayland-sys"
1483
+
version = "0.18.2"
1484
source = "registry+https://github.com/rust-lang/crates.io-index"
1485
+
checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69"
1486
dependencies = [
1487
"gdk-sys",
1488
"glib-sys",
···
1494
1495
[[package]]
1496
name = "gdkx11"
1497
+
version = "0.18.2"
1498
source = "registry+https://github.com/rust-lang/crates.io-index"
1499
+
checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe"
1500
dependencies = [
1501
"gdk",
1502
"gdkx11-sys",
···
1508
1509
[[package]]
1510
name = "gdkx11-sys"
1511
+
version = "0.18.2"
1512
source = "registry+https://github.com/rust-lang/crates.io-index"
1513
+
checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d"
1514
dependencies = [
1515
"gdk-sys",
1516
"glib-sys",
···
1521
1522
[[package]]
1523
name = "generic-array"
1524
+
version = "0.14.9"
1525
source = "registry+https://github.com/rust-lang/crates.io-index"
1526
+
checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"
1527
dependencies = [
1528
"typenum",
1529
"version_check",
1530
]
1531
1532
[[package]]
1533
+
name = "gethostname"
1534
+
version = "1.1.0"
1535
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1536
+
checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
1537
+
dependencies = [
1538
+
"rustix",
1539
+
"windows-link 0.2.1",
1540
+
]
1541
+
1542
+
[[package]]
1543
name = "getrandom"
1544
version = "0.1.16"
1545
source = "registry+https://github.com/rust-lang/crates.io-index"
···
1552
1553
[[package]]
1554
name = "getrandom"
1555
+
version = "0.2.16"
1556
source = "registry+https://github.com/rust-lang/crates.io-index"
1557
+
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
1558
dependencies = [
1559
"cfg-if",
1560
+
"js-sys",
1561
"libc",
1562
+
"wasi 0.11.1+wasi-snapshot-preview1",
1563
+
"wasm-bindgen",
1564
]
1565
1566
[[package]]
1567
+
name = "getrandom"
1568
+
version = "0.3.4"
1569
source = "registry+https://github.com/rust-lang/crates.io-index"
1570
+
checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
1571
dependencies = [
1572
+
"cfg-if",
1573
+
"js-sys",
1574
+
"libc",
1575
+
"r-efi",
1576
+
"wasip2",
1577
+
"wasm-bindgen",
1578
]
1579
1580
[[package]]
1581
+
name = "gif"
1582
+
version = "0.13.3"
1583
source = "registry+https://github.com/rust-lang/crates.io-index"
1584
+
checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b"
1585
+
dependencies = [
1586
+
"color_quant",
1587
+
"weezl",
1588
+
]
1589
1590
[[package]]
1591
name = "gio"
···
1603
"once_cell",
1604
"pin-project-lite",
1605
"smallvec",
1606
+
"thiserror 1.0.69",
1607
]
1608
1609
[[package]]
···
1625
source = "registry+https://github.com/rust-lang/crates.io-index"
1626
checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
1627
dependencies = [
1628
+
"bitflags 2.10.0",
1629
"futures-channel",
1630
"futures-core",
1631
"futures-executor",
···
1639
"memchr",
1640
"once_cell",
1641
"smallvec",
1642
+
"thiserror 1.0.69",
1643
]
1644
1645
[[package]]
···
1653
"proc-macro-error",
1654
"proc-macro2",
1655
"quote",
1656
+
"syn 2.0.109",
1657
]
1658
1659
[[package]]
···
1668
1669
[[package]]
1670
name = "glob"
1671
+
version = "0.3.3"
1672
source = "registry+https://github.com/rust-lang/crates.io-index"
1673
+
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
1674
1675
[[package]]
1676
name = "gobject-sys"
···
1685
1686
[[package]]
1687
name = "gtk"
1688
+
version = "0.18.2"
1689
source = "registry+https://github.com/rust-lang/crates.io-index"
1690
+
checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a"
1691
dependencies = [
1692
"atk",
1693
"cairo-rs",
···
1706
1707
[[package]]
1708
name = "gtk-sys"
1709
+
version = "0.18.2"
1710
source = "registry+https://github.com/rust-lang/crates.io-index"
1711
+
checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414"
1712
dependencies = [
1713
"atk-sys",
1714
"cairo-sys-rs",
···
1724
1725
[[package]]
1726
name = "gtk3-macros"
1727
+
version = "0.18.2"
1728
source = "registry+https://github.com/rust-lang/crates.io-index"
1729
+
checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d"
1730
dependencies = [
1731
"proc-macro-crate 1.3.1",
1732
"proc-macro-error",
1733
"proc-macro2",
1734
"quote",
1735
+
"syn 2.0.109",
1736
]
1737
1738
[[package]]
1739
name = "h2"
1740
+
version = "0.4.12"
1741
source = "registry+https://github.com/rust-lang/crates.io-index"
1742
+
checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
1743
dependencies = [
1744
"atomic-waker",
1745
"bytes",
···
1747
"futures-core",
1748
"futures-sink",
1749
"http",
1750
+
"indexmap 2.12.0",
1751
"slab",
1752
"tokio",
1753
"tokio-util",
···
1756
1757
[[package]]
1758
name = "half"
1759
+
version = "2.7.1"
1760
source = "registry+https://github.com/rust-lang/crates.io-index"
1761
+
checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
1762
dependencies = [
1763
"cfg-if",
1764
"crunchy",
1765
+
"zerocopy",
1766
]
1767
1768
[[package]]
···
1773
1774
[[package]]
1775
name = "hashbrown"
1776
+
version = "0.14.5"
1777
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1778
+
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
1779
+
1780
+
[[package]]
1781
+
name = "hashbrown"
1782
+
version = "0.16.0"
1783
source = "registry+https://github.com/rust-lang/crates.io-index"
1784
+
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
1785
1786
[[package]]
1787
name = "heck"
···
1797
1798
[[package]]
1799
name = "hermit-abi"
1800
+
version = "0.5.2"
1801
source = "registry+https://github.com/rust-lang/crates.io-index"
1802
+
checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
1803
1804
[[package]]
1805
name = "hex"
···
1809
1810
[[package]]
1811
name = "html5ever"
1812
+
version = "0.29.1"
1813
source = "registry+https://github.com/rust-lang/crates.io-index"
1814
+
checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c"
1815
dependencies = [
1816
"log",
1817
"mac",
1818
"markup5ever",
1819
+
"match_token",
1820
]
1821
1822
[[package]]
1823
name = "http"
1824
+
version = "1.3.1"
1825
source = "registry+https://github.com/rust-lang/crates.io-index"
1826
+
checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
1827
dependencies = [
1828
"bytes",
1829
"fnv",
1830
+
"itoa",
1831
]
1832
1833
[[package]]
···
1842
1843
[[package]]
1844
name = "http-body-util"
1845
+
version = "0.1.3"
1846
source = "registry+https://github.com/rust-lang/crates.io-index"
1847
+
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
1848
dependencies = [
1849
"bytes",
1850
+
"futures-core",
1851
"http",
1852
"http-body",
1853
"pin-project-lite",
···
1855
1856
[[package]]
1857
name = "httparse"
1858
+
version = "1.10.1"
1859
source = "registry+https://github.com/rust-lang/crates.io-index"
1860
+
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
1861
1862
[[package]]
1863
name = "hyper"
1864
+
version = "1.7.0"
1865
source = "registry+https://github.com/rust-lang/crates.io-index"
1866
+
checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
1867
dependencies = [
1868
+
"atomic-waker",
1869
"bytes",
1870
"futures-channel",
1871
+
"futures-core",
1872
"h2",
1873
"http",
1874
"http-body",
1875
"httparse",
1876
+
"itoa",
1877
"pin-project-lite",
1878
+
"pin-utils",
1879
"smallvec",
1880
"tokio",
1881
"want",
···
1883
1884
[[package]]
1885
name = "hyper-rustls"
1886
+
version = "0.27.7"
1887
source = "registry+https://github.com/rust-lang/crates.io-index"
1888
+
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
1889
dependencies = [
1890
"http",
1891
"hyper",
1892
"hyper-util",
···
1916
1917
[[package]]
1918
name = "hyper-util"
1919
+
version = "0.1.17"
1920
source = "registry+https://github.com/rust-lang/crates.io-index"
1921
+
checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
1922
dependencies = [
1923
+
"base64 0.22.1",
1924
"bytes",
1925
"futures-channel",
1926
+
"futures-core",
1927
"futures-util",
1928
"http",
1929
"http-body",
1930
"hyper",
1931
+
"ipnet",
1932
+
"libc",
1933
+
"percent-encoding",
1934
"pin-project-lite",
1935
"socket2",
1936
+
"system-configuration",
1937
"tokio",
1938
"tower-service",
1939
"tracing",
1940
+
"windows-registry",
1941
]
1942
1943
[[package]]
1944
name = "iana-time-zone"
1945
+
version = "0.1.64"
1946
source = "registry+https://github.com/rust-lang/crates.io-index"
1947
+
checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
1948
dependencies = [
1949
"android_system_properties",
1950
"core-foundation-sys",
1951
"iana-time-zone-haiku",
1952
"js-sys",
1953
+
"log",
1954
"wasm-bindgen",
1955
+
"windows-core 0.62.2",
1956
]
1957
1958
[[package]]
···
1966
1967
[[package]]
1968
name = "ico"
1969
+
version = "0.4.0"
1970
source = "registry+https://github.com/rust-lang/crates.io-index"
1971
+
checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
1972
dependencies = [
1973
"byteorder",
1974
+
"png 0.17.16",
1975
+
]
1976
+
1977
+
[[package]]
1978
+
name = "icu_collections"
1979
+
version = "2.1.1"
1980
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1981
+
checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
1982
+
dependencies = [
1983
+
"displaydoc",
1984
+
"potential_utf",
1985
+
"yoke",
1986
+
"zerofrom",
1987
+
"zerovec",
1988
+
]
1989
+
1990
+
[[package]]
1991
+
name = "icu_locale_core"
1992
+
version = "2.1.1"
1993
+
source = "registry+https://github.com/rust-lang/crates.io-index"
1994
+
checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
1995
+
dependencies = [
1996
+
"displaydoc",
1997
+
"litemap",
1998
+
"tinystr",
1999
+
"writeable",
2000
+
"zerovec",
2001
+
]
2002
+
2003
+
[[package]]
2004
+
name = "icu_normalizer"
2005
+
version = "2.1.1"
2006
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2007
+
checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
2008
+
dependencies = [
2009
+
"icu_collections",
2010
+
"icu_normalizer_data",
2011
+
"icu_properties",
2012
+
"icu_provider",
2013
+
"smallvec",
2014
+
"zerovec",
2015
+
]
2016
+
2017
+
[[package]]
2018
+
name = "icu_normalizer_data"
2019
+
version = "2.1.1"
2020
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2021
+
checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
2022
+
2023
+
[[package]]
2024
+
name = "icu_properties"
2025
+
version = "2.1.1"
2026
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2027
+
checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
2028
+
dependencies = [
2029
+
"icu_collections",
2030
+
"icu_locale_core",
2031
+
"icu_properties_data",
2032
+
"icu_provider",
2033
+
"zerotrie",
2034
+
"zerovec",
2035
+
]
2036
+
2037
+
[[package]]
2038
+
name = "icu_properties_data"
2039
+
version = "2.1.1"
2040
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2041
+
checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
2042
+
2043
+
[[package]]
2044
+
name = "icu_provider"
2045
+
version = "2.1.1"
2046
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2047
+
checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
2048
+
dependencies = [
2049
+
"displaydoc",
2050
+
"icu_locale_core",
2051
+
"writeable",
2052
+
"yoke",
2053
+
"zerofrom",
2054
+
"zerotrie",
2055
+
"zerovec",
2056
]
2057
2058
[[package]]
···
2063
2064
[[package]]
2065
name = "idna"
2066
+
version = "1.1.0"
2067
source = "registry+https://github.com/rust-lang/crates.io-index"
2068
+
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
2069
dependencies = [
2070
+
"idna_adapter",
2071
+
"smallvec",
2072
+
"utf8_iter",
2073
]
2074
2075
[[package]]
2076
+
name = "idna_adapter"
2077
+
version = "1.2.1"
2078
source = "registry+https://github.com/rust-lang/crates.io-index"
2079
+
checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
2080
dependencies = [
2081
+
"icu_normalizer",
2082
+
"icu_properties",
2083
]
2084
2085
[[package]]
2086
name = "image"
2087
+
version = "0.25.8"
2088
source = "registry+https://github.com/rust-lang/crates.io-index"
2089
+
checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7"
2090
dependencies = [
2091
"bytemuck",
2092
"byteorder-lite",
···
2094
"exr",
2095
"gif",
2096
"image-webp",
2097
+
"moxcms",
2098
"num-traits",
2099
+
"png 0.18.0",
2100
"qoi",
2101
"ravif",
2102
"rayon",
···
2108
2109
[[package]]
2110
name = "image-webp"
2111
+
version = "0.2.4"
2112
source = "registry+https://github.com/rust-lang/crates.io-index"
2113
+
checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
2114
dependencies = [
2115
"byteorder-lite",
2116
"quick-error",
···
2118
2119
[[package]]
2120
name = "imgref"
2121
+
version = "1.12.0"
2122
source = "registry+https://github.com/rust-lang/crates.io-index"
2123
+
checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8"
2124
2125
[[package]]
2126
name = "indexmap"
···
2135
2136
[[package]]
2137
name = "indexmap"
2138
+
version = "2.12.0"
2139
source = "registry+https://github.com/rust-lang/crates.io-index"
2140
+
checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
2141
dependencies = [
2142
"equivalent",
2143
+
"hashbrown 0.16.0",
2144
"serde",
2145
+
"serde_core",
2146
]
2147
2148
[[package]]
2149
name = "infer"
2150
+
version = "0.19.0"
2151
source = "registry+https://github.com/rust-lang/crates.io-index"
2152
+
checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7"
2153
dependencies = [
2154
"cfb",
2155
]
2156
2157
[[package]]
2158
name = "inotify"
2159
+
version = "0.11.0"
2160
source = "registry+https://github.com/rust-lang/crates.io-index"
2161
+
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
2162
dependencies = [
2163
+
"bitflags 2.10.0",
2164
"inotify-sys",
2165
"libc",
2166
]
···
2175
]
2176
2177
[[package]]
2178
name = "interpolate_name"
2179
version = "0.2.4"
2180
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2182
dependencies = [
2183
"proc-macro2",
2184
"quote",
2185
+
"syn 2.0.109",
2186
]
2187
2188
[[package]]
2189
+
name = "ipnet"
2190
+
version = "2.11.0"
2191
source = "registry+https://github.com/rust-lang/crates.io-index"
2192
+
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
2193
2194
[[package]]
2195
+
name = "iri-string"
2196
+
version = "0.7.9"
2197
source = "registry+https://github.com/rust-lang/crates.io-index"
2198
+
checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
2199
+
dependencies = [
2200
+
"memchr",
2201
+
"serde",
2202
+
]
2203
2204
[[package]]
2205
name = "is-docker"
···
2231
2232
[[package]]
2233
name = "itoa"
2234
+
version = "1.0.15"
2235
source = "registry+https://github.com/rust-lang/crates.io-index"
2236
+
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
2237
2238
[[package]]
2239
name = "javascriptcore-rs"
···
2269
"combine",
2270
"jni-sys",
2271
"log",
2272
+
"thiserror 1.0.69",
2273
"walkdir",
2274
"windows-sys 0.45.0",
2275
]
···
2282
2283
[[package]]
2284
name = "jobserver"
2285
+
version = "0.1.34"
2286
source = "registry+https://github.com/rust-lang/crates.io-index"
2287
+
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
2288
dependencies = [
2289
+
"getrandom 0.3.4",
2290
"libc",
2291
]
2292
2293
[[package]]
2294
name = "js-sys"
2295
+
version = "0.3.82"
2296
source = "registry+https://github.com/rust-lang/crates.io-index"
2297
+
checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
2298
dependencies = [
2299
+
"once_cell",
2300
"wasm-bindgen",
2301
]
2302
2303
[[package]]
2304
name = "json-patch"
2305
+
version = "3.0.1"
2306
source = "registry+https://github.com/rust-lang/crates.io-index"
2307
+
checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08"
2308
dependencies = [
2309
"jsonptr",
2310
"serde",
2311
"serde_json",
2312
+
"thiserror 1.0.69",
2313
]
2314
2315
[[package]]
2316
name = "jsonptr"
2317
+
version = "0.6.3"
2318
source = "registry+https://github.com/rust-lang/crates.io-index"
2319
+
checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70"
2320
dependencies = [
2321
"serde",
2322
"serde_json",
2323
]
···
2328
source = "registry+https://github.com/rust-lang/crates.io-index"
2329
checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
2330
dependencies = [
2331
+
"bitflags 2.10.0",
2332
"serde",
2333
"unicode-segmentation",
2334
]
2335
2336
[[package]]
2337
name = "kqueue"
2338
+
version = "1.1.1"
2339
source = "registry+https://github.com/rust-lang/crates.io-index"
2340
+
checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a"
2341
dependencies = [
2342
"kqueue-sys",
2343
"libc",
···
2355
2356
[[package]]
2357
name = "kuchikiki"
2358
+
version = "0.8.8-speedreader"
2359
source = "registry+https://github.com/rust-lang/crates.io-index"
2360
+
checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2"
2361
dependencies = [
2362
"cssparser",
2363
"html5ever",
2364
+
"indexmap 2.12.0",
2365
"selectors",
2366
]
2367
···
2373
2374
[[package]]
2375
name = "lebe"
2376
+
version = "0.5.3"
2377
source = "registry+https://github.com/rust-lang/crates.io-index"
2378
+
checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
2379
2380
[[package]]
2381
name = "libappindicator"
···
2403
2404
[[package]]
2405
name = "libc"
2406
+
version = "0.2.177"
2407
source = "registry+https://github.com/rust-lang/crates.io-index"
2408
+
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
2409
2410
[[package]]
2411
name = "libfuzzer-sys"
2412
+
version = "0.4.10"
2413
source = "registry+https://github.com/rust-lang/crates.io-index"
2414
+
checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404"
2415
dependencies = [
2416
"arbitrary",
2417
"cc",
2418
]
2419
2420
[[package]]
···
2429
2430
[[package]]
2431
name = "libredox"
2432
+
version = "0.1.10"
2433
source = "registry+https://github.com/rust-lang/crates.io-index"
2434
+
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
2435
dependencies = [
2436
+
"bitflags 2.10.0",
2437
"libc",
2438
]
2439
2440
[[package]]
2441
name = "linux-raw-sys"
2442
+
version = "0.11.0"
2443
source = "registry+https://github.com/rust-lang/crates.io-index"
2444
+
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
2445
+
2446
+
[[package]]
2447
+
name = "litemap"
2448
+
version = "0.8.1"
2449
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2450
+
checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
2451
2452
[[package]]
2453
name = "litrs"
2454
+
version = "1.0.0"
2455
source = "registry+https://github.com/rust-lang/crates.io-index"
2456
+
checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
2457
2458
[[package]]
2459
name = "lock_api"
2460
+
version = "0.4.14"
2461
source = "registry+https://github.com/rust-lang/crates.io-index"
2462
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
2463
dependencies = [
2464
"scopeguard",
2465
]
2466
2467
[[package]]
2468
name = "log"
2469
+
version = "0.4.28"
2470
source = "registry+https://github.com/rust-lang/crates.io-index"
2471
+
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
2472
2473
[[package]]
2474
name = "loop9"
···
2480
]
2481
2482
[[package]]
2483
+
name = "lru-slab"
2484
+
version = "0.1.2"
2485
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2486
+
checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
2487
+
2488
+
[[package]]
2489
name = "mac"
2490
version = "0.1.1"
2491
source = "registry+https://github.com/rust-lang/crates.io-index"
2492
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
2493
2494
[[package]]
2495
+
name = "markup5ever"
2496
+
version = "0.14.1"
2497
source = "registry+https://github.com/rust-lang/crates.io-index"
2498
+
checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18"
2499
dependencies = [
2500
+
"log",
2501
+
"phf 0.11.3",
2502
+
"phf_codegen 0.11.3",
2503
+
"string_cache",
2504
+
"string_cache_codegen",
2505
+
"tendril",
2506
]
2507
2508
[[package]]
2509
+
name = "match_token"
2510
+
version = "0.1.0"
2511
source = "registry+https://github.com/rust-lang/crates.io-index"
2512
+
checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b"
2513
dependencies = [
2514
+
"proc-macro2",
2515
+
"quote",
2516
+
"syn 2.0.109",
2517
]
2518
2519
[[package]]
···
2529
checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
2530
dependencies = [
2531
"cfg-if",
2532
+
"rayon",
2533
]
2534
2535
[[package]]
2536
name = "memchr"
2537
+
version = "2.7.6"
2538
source = "registry+https://github.com/rust-lang/crates.io-index"
2539
+
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
2540
2541
[[package]]
2542
name = "memoffset"
···
2554
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
2555
2556
[[package]]
2557
name = "miniz_oxide"
2558
+
version = "0.8.9"
2559
source = "registry+https://github.com/rust-lang/crates.io-index"
2560
+
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
2561
dependencies = [
2562
"adler2",
2563
"simd-adler32",
···
2565
2566
[[package]]
2567
name = "mio"
2568
+
version = "1.1.0"
2569
source = "registry+https://github.com/rust-lang/crates.io-index"
2570
+
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
2571
dependencies = [
2572
"libc",
2573
"log",
2574
+
"wasi 0.11.1+wasi-snapshot-preview1",
2575
+
"windows-sys 0.61.2",
2576
]
2577
2578
[[package]]
2579
+
name = "moxcms"
2580
+
version = "0.7.9"
2581
source = "registry+https://github.com/rust-lang/crates.io-index"
2582
+
checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6"
2583
dependencies = [
2584
+
"num-traits",
2585
+
"pxfm",
2586
]
2587
2588
[[package]]
···
2598
2599
[[package]]
2600
name = "muda"
2601
+
version = "0.17.1"
2602
source = "registry+https://github.com/rust-lang/crates.io-index"
2603
+
checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a"
2604
dependencies = [
2605
"crossbeam-channel",
2606
"dpi",
2607
"gtk",
2608
"keyboard-types",
2609
+
"objc2 0.6.3",
2610
"objc2-app-kit",
2611
+
"objc2-core-foundation",
2612
+
"objc2-foundation 0.3.2",
2613
"once_cell",
2614
+
"png 0.17.16",
2615
"serde",
2616
+
"thiserror 2.0.17",
2617
+
"windows-sys 0.60.2",
2618
]
2619
2620
[[package]]
2621
name = "native-tls"
2622
+
version = "0.2.14"
2623
source = "registry+https://github.com/rust-lang/crates.io-index"
2624
+
checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
2625
dependencies = [
2626
"libc",
2627
"log",
···
2640
source = "registry+https://github.com/rust-lang/crates.io-index"
2641
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
2642
dependencies = [
2643
+
"bitflags 2.10.0",
2644
"jni-sys",
2645
"log",
2646
"ndk-sys",
2647
"num_enum",
2648
"raw-window-handle",
2649
+
"thiserror 1.0.69",
2650
]
2651
2652
[[package]]
···
2671
checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
2672
2673
[[package]]
2674
+
name = "nix"
2675
+
version = "0.30.1"
2676
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2677
+
checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
2678
+
dependencies = [
2679
+
"bitflags 2.10.0",
2680
+
"cfg-if",
2681
+
"cfg_aliases",
2682
+
"libc",
2683
+
"memoffset",
2684
+
]
2685
+
2686
+
[[package]]
2687
name = "nodrop"
2688
version = "0.1.14"
2689
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2691
2692
[[package]]
2693
name = "nom"
2694
+
version = "8.0.0"
2695
source = "registry+https://github.com/rust-lang/crates.io-index"
2696
+
checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
2697
dependencies = [
2698
"memchr",
2699
]
2700
2701
[[package]]
···
2706
2707
[[package]]
2708
name = "notify"
2709
+
version = "8.2.0"
2710
source = "registry+https://github.com/rust-lang/crates.io-index"
2711
+
checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
2712
dependencies = [
2713
+
"bitflags 2.10.0",
2714
"fsevent-sys",
2715
"inotify",
2716
"kqueue",
2717
"libc",
2718
"log",
2719
+
"mio",
2720
+
"notify-types",
2721
"walkdir",
2722
+
"windows-sys 0.60.2",
2723
]
2724
2725
[[package]]
2726
+
name = "notify-types"
2727
+
version = "2.0.0"
2728
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2729
+
checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d"
2730
+
2731
+
[[package]]
2732
name = "num-bigint"
2733
version = "0.4.6"
2734
source = "registry+https://github.com/rust-lang/crates.io-index"
···
2752
dependencies = [
2753
"proc-macro2",
2754
"quote",
2755
+
"syn 2.0.109",
2756
]
2757
2758
[[package]]
···
2786
2787
[[package]]
2788
name = "num_enum"
2789
+
version = "0.7.5"
2790
source = "registry+https://github.com/rust-lang/crates.io-index"
2791
+
checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
2792
dependencies = [
2793
"num_enum_derive",
2794
+
"rustversion",
2795
]
2796
2797
[[package]]
2798
name = "num_enum_derive"
2799
+
version = "0.7.5"
2800
source = "registry+https://github.com/rust-lang/crates.io-index"
2801
+
checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
2802
dependencies = [
2803
+
"proc-macro-crate 3.4.0",
2804
"proc-macro2",
2805
"quote",
2806
+
"syn 2.0.109",
2807
]
2808
2809
[[package]]
···
2811
version = "0.3.5"
2812
source = "registry+https://github.com/rust-lang/crates.io-index"
2813
checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310"
2814
2815
[[package]]
2816
name = "objc2"
2817
+
version = "0.5.2"
2818
source = "registry+https://github.com/rust-lang/crates.io-index"
2819
+
checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804"
2820
dependencies = [
2821
"objc-sys",
2822
+
"objc2-encode",
2823
]
2824
2825
[[package]]
2826
name = "objc2"
2827
+
version = "0.6.3"
2828
source = "registry+https://github.com/rust-lang/crates.io-index"
2829
+
checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
2830
dependencies = [
2831
+
"objc2-encode",
2832
+
"objc2-exception-helper",
2833
]
2834
2835
[[package]]
2836
name = "objc2-app-kit"
2837
+
version = "0.3.2"
2838
source = "registry+https://github.com/rust-lang/crates.io-index"
2839
+
checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
2840
dependencies = [
2841
+
"bitflags 2.10.0",
2842
+
"block2 0.6.2",
2843
"libc",
2844
+
"objc2 0.6.3",
2845
+
"objc2-cloud-kit",
2846
"objc2-core-data",
2847
+
"objc2-core-foundation",
2848
+
"objc2-core-graphics",
2849
"objc2-core-image",
2850
+
"objc2-core-text",
2851
+
"objc2-core-video",
2852
+
"objc2-foundation 0.3.2",
2853
+
"objc2-quartz-core 0.3.2",
2854
]
2855
2856
[[package]]
2857
name = "objc2-cloud-kit"
2858
+
version = "0.3.2"
2859
source = "registry+https://github.com/rust-lang/crates.io-index"
2860
+
checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
2861
dependencies = [
2862
+
"bitflags 2.10.0",
2863
+
"objc2 0.6.3",
2864
+
"objc2-foundation 0.3.2",
2865
]
2866
2867
[[package]]
2868
+
name = "objc2-core-data"
2869
+
version = "0.3.2"
2870
source = "registry+https://github.com/rust-lang/crates.io-index"
2871
+
checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
2872
dependencies = [
2873
+
"bitflags 2.10.0",
2874
+
"objc2 0.6.3",
2875
+
"objc2-foundation 0.3.2",
2876
+
]
2877
+
2878
+
[[package]]
2879
+
name = "objc2-core-foundation"
2880
+
version = "0.3.2"
2881
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2882
+
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
2883
+
dependencies = [
2884
+
"bitflags 2.10.0",
2885
+
"dispatch2",
2886
+
"objc2 0.6.3",
2887
]
2888
2889
[[package]]
2890
+
name = "objc2-core-graphics"
2891
+
version = "0.3.2"
2892
source = "registry+https://github.com/rust-lang/crates.io-index"
2893
+
checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
2894
dependencies = [
2895
+
"bitflags 2.10.0",
2896
+
"dispatch2",
2897
+
"objc2 0.6.3",
2898
+
"objc2-core-foundation",
2899
+
"objc2-io-surface",
2900
]
2901
2902
[[package]]
2903
name = "objc2-core-image"
2904
+
version = "0.3.2"
2905
source = "registry+https://github.com/rust-lang/crates.io-index"
2906
+
checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
2907
dependencies = [
2908
+
"objc2 0.6.3",
2909
+
"objc2-foundation 0.3.2",
2910
]
2911
2912
[[package]]
2913
+
name = "objc2-core-text"
2914
+
version = "0.3.2"
2915
source = "registry+https://github.com/rust-lang/crates.io-index"
2916
+
checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d"
2917
dependencies = [
2918
+
"bitflags 2.10.0",
2919
+
"objc2 0.6.3",
2920
+
"objc2-core-foundation",
2921
+
"objc2-core-graphics",
2922
+
]
2923
+
2924
+
[[package]]
2925
+
name = "objc2-core-video"
2926
+
version = "0.3.2"
2927
+
source = "registry+https://github.com/rust-lang/crates.io-index"
2928
+
checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6"
2929
+
dependencies = [
2930
+
"bitflags 2.10.0",
2931
+
"objc2 0.6.3",
2932
+
"objc2-core-foundation",
2933
+
"objc2-core-graphics",
2934
+
"objc2-io-surface",
2935
]
2936
2937
[[package]]
2938
name = "objc2-encode"
2939
+
version = "4.1.0"
2940
source = "registry+https://github.com/rust-lang/crates.io-index"
2941
+
checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
2942
2943
[[package]]
2944
+
name = "objc2-exception-helper"
2945
+
version = "0.1.1"
2946
source = "registry+https://github.com/rust-lang/crates.io-index"
2947
+
checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a"
2948
+
dependencies = [
2949
+
"cc",
2950
+
]
2951
2952
[[package]]
2953
name = "objc2-foundation"
···
2955
source = "registry+https://github.com/rust-lang/crates.io-index"
2956
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
2957
dependencies = [
2958
+
"bitflags 2.10.0",
2959
+
"block2 0.5.1",
2960
"libc",
2961
"objc2 0.5.2",
2962
]
2963
2964
[[package]]
2965
+
name = "objc2-foundation"
2966
+
version = "0.3.2"
2967
source = "registry+https://github.com/rust-lang/crates.io-index"
2968
+
checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
2969
dependencies = [
2970
+
"bitflags 2.10.0",
2971
+
"block2 0.6.2",
2972
+
"libc",
2973
+
"objc2 0.6.3",
2974
+
"objc2-core-foundation",
2975
]
2976
2977
[[package]]
2978
+
name = "objc2-io-surface"
2979
+
version = "0.3.2"
2980
source = "registry+https://github.com/rust-lang/crates.io-index"
2981
+
checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
2982
dependencies = [
2983
+
"bitflags 2.10.0",
2984
+
"objc2 0.6.3",
2985
+
"objc2-core-foundation",
2986
]
2987
2988
[[package]]
2989
+
name = "objc2-javascript-core"
2990
+
version = "0.3.2"
2991
source = "registry+https://github.com/rust-lang/crates.io-index"
2992
+
checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586"
2993
dependencies = [
2994
+
"objc2 0.6.3",
2995
+
"objc2-core-foundation",
2996
]
2997
2998
[[package]]
2999
+
name = "objc2-metal"
3000
version = "0.2.2"
3001
source = "registry+https://github.com/rust-lang/crates.io-index"
3002
+
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
3003
dependencies = [
3004
+
"bitflags 2.10.0",
3005
+
"block2 0.5.1",
3006
"objc2 0.5.2",
3007
+
"objc2-foundation 0.2.2",
3008
]
3009
3010
[[package]]
3011
+
name = "objc2-quartz-core"
3012
version = "0.2.2"
3013
source = "registry+https://github.com/rust-lang/crates.io-index"
3014
+
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
3015
dependencies = [
3016
+
"bitflags 2.10.0",
3017
+
"block2 0.5.1",
3018
"objc2 0.5.2",
3019
+
"objc2-foundation 0.2.2",
3020
+
"objc2-metal",
3021
]
3022
3023
[[package]]
3024
+
name = "objc2-quartz-core"
3025
+
version = "0.3.2"
3026
source = "registry+https://github.com/rust-lang/crates.io-index"
3027
+
checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
3028
dependencies = [
3029
+
"bitflags 2.10.0",
3030
+
"objc2 0.6.3",
3031
+
"objc2-foundation 0.3.2",
3032
]
3033
3034
[[package]]
3035
+
name = "objc2-security"
3036
+
version = "0.3.2"
3037
source = "registry+https://github.com/rust-lang/crates.io-index"
3038
+
checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a"
3039
dependencies = [
3040
+
"bitflags 2.10.0",
3041
+
"objc2 0.6.3",
3042
+
"objc2-core-foundation",
3043
]
3044
3045
[[package]]
3046
+
name = "objc2-ui-kit"
3047
+
version = "0.3.2"
3048
source = "registry+https://github.com/rust-lang/crates.io-index"
3049
+
checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
3050
dependencies = [
3051
+
"bitflags 2.10.0",
3052
+
"objc2 0.6.3",
3053
+
"objc2-core-foundation",
3054
+
"objc2-foundation 0.3.2",
3055
]
3056
3057
[[package]]
3058
+
name = "objc2-web-kit"
3059
+
version = "0.3.2"
3060
source = "registry+https://github.com/rust-lang/crates.io-index"
3061
+
checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f"
3062
dependencies = [
3063
+
"bitflags 2.10.0",
3064
+
"block2 0.6.2",
3065
+
"objc2 0.6.3",
3066
+
"objc2-app-kit",
3067
+
"objc2-core-foundation",
3068
+
"objc2-foundation 0.3.2",
3069
+
"objc2-javascript-core",
3070
+
"objc2-security",
3071
]
3072
3073
[[package]]
3074
name = "once_cell"
3075
+
version = "1.21.3"
3076
source = "registry+https://github.com/rust-lang/crates.io-index"
3077
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
3078
3079
[[package]]
3080
name = "open"
3081
+
version = "5.3.2"
3082
source = "registry+https://github.com/rust-lang/crates.io-index"
3083
+
checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95"
3084
dependencies = [
3085
+
"dunce",
3086
"is-wsl",
3087
"libc",
3088
"pathdiff",
···
3090
3091
[[package]]
3092
name = "openssl"
3093
+
version = "0.10.74"
3094
source = "registry+https://github.com/rust-lang/crates.io-index"
3095
+
checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
3096
dependencies = [
3097
+
"bitflags 2.10.0",
3098
"cfg-if",
3099
"foreign-types 0.3.2",
3100
"libc",
···
3111
dependencies = [
3112
"proc-macro2",
3113
"quote",
3114
+
"syn 2.0.109",
3115
]
3116
3117
[[package]]
3118
name = "openssl-probe"
3119
+
version = "0.1.6"
3120
source = "registry+https://github.com/rust-lang/crates.io-index"
3121
+
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
3122
3123
[[package]]
3124
name = "openssl-sys"
3125
+
version = "0.9.110"
3126
source = "registry+https://github.com/rust-lang/crates.io-index"
3127
+
checksum = "0a9f0075ba3c21b09f8e8b2026584b1d18d49388648f2fbbf3c97ea8deced8e2"
3128
dependencies = [
3129
"cc",
3130
"libc",
···
3139
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
3140
3141
[[package]]
3142
+
name = "ordered-multimap"
3143
+
version = "0.7.3"
3144
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3145
+
checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
3146
+
dependencies = [
3147
+
"dlv-list",
3148
+
"hashbrown 0.14.5",
3149
+
]
3150
+
3151
+
[[package]]
3152
+
name = "ordered-stream"
3153
+
version = "0.2.0"
3154
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3155
+
checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
3156
+
dependencies = [
3157
+
"futures-core",
3158
+
"pin-project-lite",
3159
+
]
3160
+
3161
+
[[package]]
3162
name = "os_pipe"
3163
+
version = "1.2.3"
3164
source = "registry+https://github.com/rust-lang/crates.io-index"
3165
+
checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
3166
dependencies = [
3167
"libc",
3168
+
"windows-sys 0.61.2",
3169
]
3170
3171
[[package]]
···
3194
]
3195
3196
[[package]]
3197
+
name = "parking"
3198
+
version = "2.2.1"
3199
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3200
+
checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
3201
+
3202
+
[[package]]
3203
name = "parking_lot"
3204
+
version = "0.12.5"
3205
source = "registry+https://github.com/rust-lang/crates.io-index"
3206
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
3207
dependencies = [
3208
"lock_api",
3209
"parking_lot_core",
···
3211
3212
[[package]]
3213
name = "parking_lot_core"
3214
+
version = "0.9.12"
3215
source = "registry+https://github.com/rust-lang/crates.io-index"
3216
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
3217
dependencies = [
3218
"cfg-if",
3219
"libc",
3220
"redox_syscall",
3221
"smallvec",
3222
+
"windows-link 0.2.1",
3223
]
3224
3225
[[package]]
···
3230
3231
[[package]]
3232
name = "pathdiff"
3233
+
version = "0.2.3"
3234
source = "registry+https://github.com/rust-lang/crates.io-index"
3235
+
checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
3236
3237
[[package]]
3238
name = "percent-encoding"
3239
+
version = "2.3.2"
3240
source = "registry+https://github.com/rust-lang/crates.io-index"
3241
+
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
3242
3243
[[package]]
3244
name = "phf"
···
3246
source = "registry+https://github.com/rust-lang/crates.io-index"
3247
checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
3248
dependencies = [
3249
"phf_shared 0.8.0",
3250
]
3251
3252
[[package]]
···
3255
source = "registry+https://github.com/rust-lang/crates.io-index"
3256
checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
3257
dependencies = [
3258
+
"phf_macros 0.10.0",
3259
"phf_shared 0.10.0",
3260
+
"proc-macro-hack",
3261
]
3262
3263
[[package]]
3264
name = "phf"
3265
+
version = "0.11.3"
3266
source = "registry+https://github.com/rust-lang/crates.io-index"
3267
+
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
3268
dependencies = [
3269
+
"phf_macros 0.11.3",
3270
+
"phf_shared 0.11.3",
3271
]
3272
3273
[[package]]
···
3282
3283
[[package]]
3284
name = "phf_codegen"
3285
+
version = "0.11.3"
3286
source = "registry+https://github.com/rust-lang/crates.io-index"
3287
+
checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
3288
dependencies = [
3289
+
"phf_generator 0.11.3",
3290
+
"phf_shared 0.11.3",
3291
]
3292
3293
[[package]]
···
3312
3313
[[package]]
3314
name = "phf_generator"
3315
+
version = "0.11.3"
3316
source = "registry+https://github.com/rust-lang/crates.io-index"
3317
+
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
3318
dependencies = [
3319
+
"phf_shared 0.11.3",
3320
"rand 0.8.5",
3321
]
3322
3323
[[package]]
3324
name = "phf_macros"
3325
+
version = "0.10.0"
3326
source = "registry+https://github.com/rust-lang/crates.io-index"
3327
+
checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
3328
dependencies = [
3329
+
"phf_generator 0.10.0",
3330
+
"phf_shared 0.10.0",
3331
"proc-macro-hack",
3332
"proc-macro2",
3333
"quote",
···
3336
3337
[[package]]
3338
name = "phf_macros"
3339
+
version = "0.11.3"
3340
source = "registry+https://github.com/rust-lang/crates.io-index"
3341
+
checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
3342
dependencies = [
3343
+
"phf_generator 0.11.3",
3344
+
"phf_shared 0.11.3",
3345
"proc-macro2",
3346
"quote",
3347
+
"syn 2.0.109",
3348
]
3349
3350
[[package]]
···
3353
source = "registry+https://github.com/rust-lang/crates.io-index"
3354
checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
3355
dependencies = [
3356
+
"siphasher 0.3.11",
3357
]
3358
3359
[[package]]
···
3362
source = "registry+https://github.com/rust-lang/crates.io-index"
3363
checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
3364
dependencies = [
3365
+
"siphasher 0.3.11",
3366
]
3367
3368
[[package]]
3369
name = "phf_shared"
3370
+
version = "0.11.3"
3371
source = "registry+https://github.com/rust-lang/crates.io-index"
3372
+
checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
3373
dependencies = [
3374
+
"siphasher 1.0.1",
3375
]
3376
3377
[[package]]
3378
name = "pin-project-lite"
3379
+
version = "0.2.16"
3380
source = "registry+https://github.com/rust-lang/crates.io-index"
3381
+
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
3382
3383
[[package]]
3384
name = "pin-utils"
···
3387
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
3388
3389
[[package]]
3390
+
name = "piper"
3391
+
version = "0.2.4"
3392
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3393
+
checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
3394
+
dependencies = [
3395
+
"atomic-waker",
3396
+
"fastrand",
3397
+
"futures-io",
3398
+
]
3399
+
3400
+
[[package]]
3401
name = "pkg-config"
3402
+
version = "0.3.32"
3403
source = "registry+https://github.com/rust-lang/crates.io-index"
3404
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
3405
3406
[[package]]
3407
name = "plist"
3408
+
version = "1.8.0"
3409
source = "registry+https://github.com/rust-lang/crates.io-index"
3410
+
checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
3411
dependencies = [
3412
"base64 0.22.1",
3413
+
"indexmap 2.12.0",
3414
"quick-xml",
3415
"serde",
3416
"time",
···
3418
3419
[[package]]
3420
name = "png"
3421
+
version = "0.17.16"
3422
source = "registry+https://github.com/rust-lang/crates.io-index"
3423
+
checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
3424
dependencies = [
3425
"bitflags 1.3.2",
3426
"crc32fast",
3427
"fdeflate",
3428
"flate2",
3429
+
"miniz_oxide",
3430
+
]
3431
+
3432
+
[[package]]
3433
+
name = "png"
3434
+
version = "0.18.0"
3435
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3436
+
checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
3437
+
dependencies = [
3438
+
"bitflags 2.10.0",
3439
+
"crc32fast",
3440
+
"fdeflate",
3441
+
"flate2",
3442
+
"miniz_oxide",
3443
+
]
3444
+
3445
+
[[package]]
3446
+
name = "polling"
3447
+
version = "3.11.0"
3448
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3449
+
checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
3450
+
dependencies = [
3451
+
"cfg-if",
3452
+
"concurrent-queue",
3453
+
"hermit-abi",
3454
+
"pin-project-lite",
3455
+
"rustix",
3456
+
"windows-sys 0.61.2",
3457
+
]
3458
+
3459
+
[[package]]
3460
+
name = "potential_utf"
3461
+
version = "0.1.4"
3462
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3463
+
checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
3464
+
dependencies = [
3465
+
"zerovec",
3466
]
3467
3468
[[package]]
···
3473
3474
[[package]]
3475
name = "ppv-lite86"
3476
+
version = "0.2.21"
3477
source = "registry+https://github.com/rust-lang/crates.io-index"
3478
+
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
3479
dependencies = [
3480
"zerocopy",
3481
]
···
3502
source = "registry+https://github.com/rust-lang/crates.io-index"
3503
checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
3504
dependencies = [
3505
+
"toml_datetime 0.6.3",
3506
"toml_edit 0.20.2",
3507
]
3508
3509
[[package]]
3510
+
name = "proc-macro-crate"
3511
+
version = "3.4.0"
3512
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3513
+
checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
3514
+
dependencies = [
3515
+
"toml_edit 0.23.7",
3516
+
]
3517
+
3518
+
[[package]]
3519
name = "proc-macro-error"
3520
version = "1.0.4"
3521
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3547
3548
[[package]]
3549
name = "proc-macro2"
3550
+
version = "1.0.103"
3551
source = "registry+https://github.com/rust-lang/crates.io-index"
3552
+
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
3553
dependencies = [
3554
"unicode-ident",
3555
]
3556
3557
[[package]]
3558
name = "profiling"
3559
+
version = "1.0.17"
3560
source = "registry+https://github.com/rust-lang/crates.io-index"
3561
+
checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
3562
dependencies = [
3563
"profiling-procmacros",
3564
]
3565
3566
[[package]]
3567
name = "profiling-procmacros"
3568
+
version = "1.0.17"
3569
source = "registry+https://github.com/rust-lang/crates.io-index"
3570
+
checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
3571
dependencies = [
3572
"quote",
3573
+
"syn 2.0.109",
3574
]
3575
3576
[[package]]
···
3581
3582
[[package]]
3583
name = "publicsuffix"
3584
+
version = "2.3.0"
3585
source = "registry+https://github.com/rust-lang/crates.io-index"
3586
+
checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf"
3587
dependencies = [
3588
+
"idna",
3589
"psl-types",
3590
]
3591
3592
[[package]]
3593
+
name = "pxfm"
3594
+
version = "0.1.25"
3595
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3596
+
checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84"
3597
+
dependencies = [
3598
+
"num-traits",
3599
+
]
3600
+
3601
+
[[package]]
3602
name = "qoi"
3603
version = "0.4.1"
3604
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3615
3616
[[package]]
3617
name = "quick-xml"
3618
+
version = "0.38.3"
3619
source = "registry+https://github.com/rust-lang/crates.io-index"
3620
+
checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89"
3621
dependencies = [
3622
"memchr",
3623
]
3624
3625
[[package]]
3626
name = "quinn"
3627
+
version = "0.11.9"
3628
source = "registry+https://github.com/rust-lang/crates.io-index"
3629
+
checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
3630
dependencies = [
3631
"bytes",
3632
+
"cfg_aliases",
3633
"pin-project-lite",
3634
"quinn-proto",
3635
"quinn-udp",
3636
"rustc-hash",
3637
"rustls",
3638
"socket2",
3639
+
"thiserror 2.0.17",
3640
"tokio",
3641
"tracing",
3642
+
"web-time",
3643
]
3644
3645
[[package]]
3646
name = "quinn-proto"
3647
+
version = "0.11.13"
3648
source = "registry+https://github.com/rust-lang/crates.io-index"
3649
+
checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
3650
dependencies = [
3651
"bytes",
3652
+
"getrandom 0.3.4",
3653
+
"lru-slab",
3654
+
"rand 0.9.2",
3655
"ring",
3656
"rustc-hash",
3657
"rustls",
3658
+
"rustls-pki-types",
3659
"slab",
3660
+
"thiserror 2.0.17",
3661
"tinyvec",
3662
"tracing",
3663
+
"web-time",
3664
]
3665
3666
[[package]]
3667
name = "quinn-udp"
3668
+
version = "0.5.14"
3669
source = "registry+https://github.com/rust-lang/crates.io-index"
3670
+
checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
3671
dependencies = [
3672
+
"cfg_aliases",
3673
"libc",
3674
"once_cell",
3675
"socket2",
3676
"tracing",
3677
+
"windows-sys 0.60.2",
3678
]
3679
3680
[[package]]
3681
name = "quote"
3682
+
version = "1.0.42"
3683
source = "registry+https://github.com/rust-lang/crates.io-index"
3684
+
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
3685
dependencies = [
3686
"proc-macro2",
3687
]
3688
3689
[[package]]
3690
+
name = "r-efi"
3691
+
version = "5.3.0"
3692
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3693
+
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
3694
+
3695
+
[[package]]
3696
name = "rand"
3697
version = "0.7.3"
3698
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3718
]
3719
3720
[[package]]
3721
+
name = "rand"
3722
+
version = "0.9.2"
3723
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3724
+
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
3725
+
dependencies = [
3726
+
"rand_chacha 0.9.0",
3727
+
"rand_core 0.9.3",
3728
+
]
3729
+
3730
+
[[package]]
3731
name = "rand_chacha"
3732
version = "0.2.2"
3733
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3748
]
3749
3750
[[package]]
3751
+
name = "rand_chacha"
3752
+
version = "0.9.0"
3753
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3754
+
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
3755
+
dependencies = [
3756
+
"ppv-lite86",
3757
+
"rand_core 0.9.3",
3758
+
]
3759
+
3760
+
[[package]]
3761
name = "rand_core"
3762
version = "0.5.1"
3763
source = "registry+https://github.com/rust-lang/crates.io-index"
···
3772
source = "registry+https://github.com/rust-lang/crates.io-index"
3773
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
3774
dependencies = [
3775
+
"getrandom 0.2.16",
3776
+
]
3777
+
3778
+
[[package]]
3779
+
name = "rand_core"
3780
+
version = "0.9.3"
3781
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3782
+
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
3783
+
dependencies = [
3784
+
"getrandom 0.3.4",
3785
]
3786
3787
[[package]]
···
3832
"rand_chacha 0.3.1",
3833
"simd_helpers",
3834
"system-deps",
3835
+
"thiserror 1.0.69",
3836
"v_frame",
3837
"wasm-bindgen",
3838
]
3839
3840
[[package]]
3841
name = "ravif"
3842
+
version = "0.11.20"
3843
source = "registry+https://github.com/rust-lang/crates.io-index"
3844
+
checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b"
3845
dependencies = [
3846
"avif-serialize",
3847
"imgref",
3848
"loop9",
3849
"quick-error",
3850
"rav1e",
3851
+
"rayon",
3852
"rgb",
3853
]
3854
···
3860
3861
[[package]]
3862
name = "rayon"
3863
+
version = "1.11.0"
3864
source = "registry+https://github.com/rust-lang/crates.io-index"
3865
+
checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
3866
dependencies = [
3867
"either",
3868
"rayon-core",
···
3870
3871
[[package]]
3872
name = "rayon-core"
3873
+
version = "1.13.0"
3874
source = "registry+https://github.com/rust-lang/crates.io-index"
3875
+
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
3876
dependencies = [
3877
"crossbeam-deque",
3878
"crossbeam-utils",
···
3880
3881
[[package]]
3882
name = "redox_syscall"
3883
+
version = "0.5.18"
3884
source = "registry+https://github.com/rust-lang/crates.io-index"
3885
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
3886
dependencies = [
3887
+
"bitflags 2.10.0",
3888
]
3889
3890
[[package]]
3891
name = "redox_users"
3892
+
version = "0.5.2"
3893
source = "registry+https://github.com/rust-lang/crates.io-index"
3894
+
checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
3895
dependencies = [
3896
+
"getrandom 0.2.16",
3897
"libredox",
3898
+
"thiserror 2.0.17",
3899
+
]
3900
+
3901
+
[[package]]
3902
+
name = "ref-cast"
3903
+
version = "1.0.25"
3904
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3905
+
checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
3906
+
dependencies = [
3907
+
"ref-cast-impl",
3908
+
]
3909
+
3910
+
[[package]]
3911
+
name = "ref-cast-impl"
3912
+
version = "1.0.25"
3913
+
source = "registry+https://github.com/rust-lang/crates.io-index"
3914
+
checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
3915
+
dependencies = [
3916
+
"proc-macro2",
3917
+
"quote",
3918
+
"syn 2.0.109",
3919
]
3920
3921
[[package]]
3922
name = "regex"
3923
+
version = "1.12.2"
3924
source = "registry+https://github.com/rust-lang/crates.io-index"
3925
+
checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
3926
dependencies = [
3927
"aho-corasick",
3928
"memchr",
···
3932
3933
[[package]]
3934
name = "regex-automata"
3935
+
version = "0.4.13"
3936
source = "registry+https://github.com/rust-lang/crates.io-index"
3937
+
checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
3938
dependencies = [
3939
"aho-corasick",
3940
"memchr",
···
3943
3944
[[package]]
3945
name = "regex-syntax"
3946
+
version = "0.8.8"
3947
source = "registry+https://github.com/rust-lang/crates.io-index"
3948
+
checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
3949
3950
[[package]]
3951
name = "reqwest"
3952
+
version = "0.12.24"
3953
source = "registry+https://github.com/rust-lang/crates.io-index"
3954
+
checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
3955
dependencies = [
3956
"base64 0.22.1",
3957
"bytes",
···
3969
"hyper-rustls",
3970
"hyper-tls",
3971
"hyper-util",
3972
"js-sys",
3973
"log",
3974
"mime",
3975
"native-tls",
3976
"percent-encoding",
3977
"pin-project-lite",
3978
"quinn",
3979
"rustls",
3980
"rustls-pki-types",
3981
"serde",
3982
"serde_json",
3983
"serde_urlencoded",
3984
"sync_wrapper",
3985
"tokio",
3986
"tokio-native-tls",
3987
"tokio-rustls",
3988
"tokio-util",
3989
+
"tower",
3990
+
"tower-http",
3991
"tower-service",
3992
"url",
3993
"wasm-bindgen",
···
3995
"wasm-streams",
3996
"web-sys",
3997
"webpki-roots",
3998
]
3999
4000
[[package]]
4001
name = "rgb"
4002
+
version = "0.8.52"
4003
source = "registry+https://github.com/rust-lang/crates.io-index"
4004
+
checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce"
4005
4006
[[package]]
4007
name = "ring"
4008
+
version = "0.17.14"
4009
source = "registry+https://github.com/rust-lang/crates.io-index"
4010
+
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
4011
dependencies = [
4012
"cc",
4013
"cfg-if",
4014
+
"getrandom 0.2.16",
4015
"libc",
4016
"untrusted",
4017
"windows-sys 0.52.0",
4018
]
4019
4020
[[package]]
4021
+
name = "rust-ini"
4022
+
version = "0.21.3"
4023
source = "registry+https://github.com/rust-lang/crates.io-index"
4024
+
checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
4025
+
dependencies = [
4026
+
"cfg-if",
4027
+
"ordered-multimap",
4028
+
]
4029
4030
[[package]]
4031
name = "rustc-hash"
4032
+
version = "2.1.1"
4033
source = "registry+https://github.com/rust-lang/crates.io-index"
4034
+
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
4035
4036
[[package]]
4037
name = "rustc_version"
···
4044
4045
[[package]]
4046
name = "rustix"
4047
+
version = "1.1.2"
4048
source = "registry+https://github.com/rust-lang/crates.io-index"
4049
+
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
4050
dependencies = [
4051
+
"bitflags 2.10.0",
4052
"errno",
4053
"libc",
4054
"linux-raw-sys",
4055
+
"windows-sys 0.61.2",
4056
]
4057
4058
[[package]]
4059
name = "rustls"
4060
+
version = "0.23.35"
4061
source = "registry+https://github.com/rust-lang/crates.io-index"
4062
+
checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
4063
dependencies = [
4064
"once_cell",
4065
"ring",
···
4070
]
4071
4072
[[package]]
4073
+
name = "rustls-pki-types"
4074
+
version = "1.13.0"
4075
source = "registry+https://github.com/rust-lang/crates.io-index"
4076
+
checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
4077
dependencies = [
4078
+
"web-time",
4079
+
"zeroize",
4080
]
4081
4082
[[package]]
4083
name = "rustls-webpki"
4084
+
version = "0.103.8"
4085
source = "registry+https://github.com/rust-lang/crates.io-index"
4086
+
checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
4087
dependencies = [
4088
"ring",
4089
"rustls-pki-types",
···
4091
]
4092
4093
[[package]]
4094
+
name = "rustversion"
4095
+
version = "1.0.22"
4096
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4097
+
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
4098
+
4099
+
[[package]]
4100
name = "ryu"
4101
+
version = "1.0.20"
4102
source = "registry+https://github.com/rust-lang/crates.io-index"
4103
+
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
4104
4105
[[package]]
4106
name = "same-file"
···
4113
4114
[[package]]
4115
name = "schannel"
4116
+
version = "0.1.28"
4117
source = "registry+https://github.com/rust-lang/crates.io-index"
4118
+
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
4119
dependencies = [
4120
+
"windows-sys 0.61.2",
4121
]
4122
4123
[[package]]
4124
name = "schemars"
4125
+
version = "0.8.22"
4126
source = "registry+https://github.com/rust-lang/crates.io-index"
4127
+
checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615"
4128
dependencies = [
4129
"dyn-clone",
4130
"indexmap 1.9.3",
···
4136
]
4137
4138
[[package]]
4139
+
name = "schemars"
4140
+
version = "0.9.0"
4141
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4142
+
checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
4143
+
dependencies = [
4144
+
"dyn-clone",
4145
+
"ref-cast",
4146
+
"serde",
4147
+
"serde_json",
4148
+
]
4149
+
4150
+
[[package]]
4151
+
name = "schemars"
4152
+
version = "1.1.0"
4153
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4154
+
checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
4155
+
dependencies = [
4156
+
"dyn-clone",
4157
+
"ref-cast",
4158
+
"serde",
4159
+
"serde_json",
4160
+
]
4161
+
4162
+
[[package]]
4163
name = "schemars_derive"
4164
+
version = "0.8.22"
4165
source = "registry+https://github.com/rust-lang/crates.io-index"
4166
+
checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d"
4167
dependencies = [
4168
"proc-macro2",
4169
"quote",
4170
"serde_derive_internals",
4171
+
"syn 2.0.109",
4172
]
4173
4174
[[package]]
···
4183
source = "registry+https://github.com/rust-lang/crates.io-index"
4184
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
4185
dependencies = [
4186
+
"bitflags 2.10.0",
4187
"core-foundation 0.9.4",
4188
"core-foundation-sys",
4189
"libc",
···
4192
4193
[[package]]
4194
name = "security-framework-sys"
4195
+
version = "2.15.0"
4196
source = "registry+https://github.com/rust-lang/crates.io-index"
4197
+
checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
4198
dependencies = [
4199
"core-foundation-sys",
4200
"libc",
···
4202
4203
[[package]]
4204
name = "selectors"
4205
+
version = "0.24.0"
4206
source = "registry+https://github.com/rust-lang/crates.io-index"
4207
+
checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416"
4208
dependencies = [
4209
"bitflags 1.3.2",
4210
"cssparser",
4211
"derive_more",
4212
"fxhash",
4213
"log",
4214
"phf 0.8.0",
4215
"phf_codegen 0.8.0",
4216
"precomputed-hash",
4217
"servo_arc",
4218
"smallvec",
4219
]
4220
4221
[[package]]
4222
name = "semver"
4223
+
version = "1.0.27"
4224
source = "registry+https://github.com/rust-lang/crates.io-index"
4225
+
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
4226
dependencies = [
4227
"serde",
4228
+
"serde_core",
4229
]
4230
4231
[[package]]
4232
name = "serde"
4233
+
version = "1.0.228"
4234
source = "registry+https://github.com/rust-lang/crates.io-index"
4235
+
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
4236
dependencies = [
4237
+
"serde_core",
4238
"serde_derive",
4239
]
4240
4241
[[package]]
4242
name = "serde-untagged"
4243
+
version = "0.1.9"
4244
source = "registry+https://github.com/rust-lang/crates.io-index"
4245
+
checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
4246
dependencies = [
4247
"erased-serde",
4248
"serde",
4249
+
"serde_core",
4250
"typeid",
4251
]
4252
4253
[[package]]
4254
+
name = "serde_core"
4255
+
version = "1.0.228"
4256
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4257
+
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
4258
+
dependencies = [
4259
+
"serde_derive",
4260
+
]
4261
+
4262
+
[[package]]
4263
name = "serde_derive"
4264
+
version = "1.0.228"
4265
source = "registry+https://github.com/rust-lang/crates.io-index"
4266
+
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
4267
dependencies = [
4268
"proc-macro2",
4269
"quote",
4270
+
"syn 2.0.109",
4271
]
4272
4273
[[package]]
···
4278
dependencies = [
4279
"proc-macro2",
4280
"quote",
4281
+
"syn 2.0.109",
4282
]
4283
4284
[[package]]
4285
name = "serde_json"
4286
+
version = "1.0.145"
4287
source = "registry+https://github.com/rust-lang/crates.io-index"
4288
+
checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
4289
dependencies = [
4290
+
"itoa",
4291
"memchr",
4292
"ryu",
4293
"serde",
4294
+
"serde_core",
4295
]
4296
4297
[[package]]
4298
name = "serde_repr"
4299
+
version = "0.1.20"
4300
source = "registry+https://github.com/rust-lang/crates.io-index"
4301
+
checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
4302
dependencies = [
4303
"proc-macro2",
4304
"quote",
4305
+
"syn 2.0.109",
4306
]
4307
4308
[[package]]
4309
name = "serde_spanned"
4310
+
version = "0.6.9"
4311
source = "registry+https://github.com/rust-lang/crates.io-index"
4312
+
checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
4313
dependencies = [
4314
"serde",
4315
]
4316
4317
[[package]]
4318
+
name = "serde_spanned"
4319
+
version = "1.0.3"
4320
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4321
+
checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392"
4322
+
dependencies = [
4323
+
"serde_core",
4324
+
]
4325
+
4326
+
[[package]]
4327
name = "serde_urlencoded"
4328
version = "0.7.1"
4329
source = "registry+https://github.com/rust-lang/crates.io-index"
4330
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
4331
dependencies = [
4332
"form_urlencoded",
4333
+
"itoa",
4334
"ryu",
4335
"serde",
4336
]
4337
4338
[[package]]
4339
name = "serde_with"
4340
+
version = "3.15.1"
4341
source = "registry+https://github.com/rust-lang/crates.io-index"
4342
+
checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04"
4343
dependencies = [
4344
"base64 0.22.1",
4345
"chrono",
4346
"hex",
4347
"indexmap 1.9.3",
4348
+
"indexmap 2.12.0",
4349
+
"schemars 0.9.0",
4350
+
"schemars 1.1.0",
4351
+
"serde_core",
4352
"serde_json",
4353
"serde_with_macros",
4354
"time",
···
4356
4357
[[package]]
4358
name = "serde_with_macros"
4359
+
version = "3.15.1"
4360
source = "registry+https://github.com/rust-lang/crates.io-index"
4361
+
checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955"
4362
dependencies = [
4363
"darling",
4364
"proc-macro2",
4365
"quote",
4366
+
"syn 2.0.109",
4367
]
4368
4369
[[package]]
4370
name = "serialize-to-javascript"
4371
+
version = "0.1.2"
4372
source = "registry+https://github.com/rust-lang/crates.io-index"
4373
+
checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5"
4374
dependencies = [
4375
"serde",
4376
"serde_json",
···
4379
4380
[[package]]
4381
name = "serialize-to-javascript-impl"
4382
+
version = "0.1.2"
4383
source = "registry+https://github.com/rust-lang/crates.io-index"
4384
+
checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
4385
dependencies = [
4386
"proc-macro2",
4387
"quote",
4388
+
"syn 2.0.109",
4389
]
4390
4391
[[package]]
4392
name = "servo_arc"
4393
+
version = "0.2.0"
4394
source = "registry+https://github.com/rust-lang/crates.io-index"
4395
+
checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741"
4396
dependencies = [
4397
"nodrop",
4398
"stable_deref_trait",
···
4400
4401
[[package]]
4402
name = "sha2"
4403
+
version = "0.10.9"
4404
source = "registry+https://github.com/rust-lang/crates.io-index"
4405
+
checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
4406
dependencies = [
4407
"cfg-if",
4408
"cpufeatures",
···
4411
4412
[[package]]
4413
name = "shared_child"
4414
+
version = "1.1.1"
4415
source = "registry+https://github.com/rust-lang/crates.io-index"
4416
+
checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7"
4417
dependencies = [
4418
"libc",
4419
+
"sigchld",
4420
+
"windows-sys 0.60.2",
4421
]
4422
4423
[[package]]
···
4427
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
4428
4429
[[package]]
4430
+
name = "sigchld"
4431
+
version = "0.2.4"
4432
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4433
+
checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1"
4434
+
dependencies = [
4435
+
"libc",
4436
+
"os_pipe",
4437
+
"signal-hook",
4438
+
]
4439
+
4440
+
[[package]]
4441
+
name = "signal-hook"
4442
+
version = "0.3.18"
4443
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4444
+
checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
4445
+
dependencies = [
4446
+
"libc",
4447
+
"signal-hook-registry",
4448
+
]
4449
+
4450
+
[[package]]
4451
+
name = "signal-hook-registry"
4452
+
version = "1.4.6"
4453
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4454
+
checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
4455
+
dependencies = [
4456
+
"libc",
4457
+
]
4458
+
4459
+
[[package]]
4460
name = "simd-adler32"
4461
version = "0.3.7"
4462
source = "registry+https://github.com/rust-lang/crates.io-index"
···
4478
checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
4479
4480
[[package]]
4481
+
name = "siphasher"
4482
+
version = "1.0.1"
4483
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4484
+
checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
4485
+
4486
+
[[package]]
4487
name = "slab"
4488
+
version = "0.4.11"
4489
source = "registry+https://github.com/rust-lang/crates.io-index"
4490
+
checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
4491
4492
[[package]]
4493
name = "smallvec"
4494
+
version = "1.15.1"
4495
source = "registry+https://github.com/rust-lang/crates.io-index"
4496
+
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
4497
4498
[[package]]
4499
name = "socket2"
4500
+
version = "0.6.1"
4501
source = "registry+https://github.com/rust-lang/crates.io-index"
4502
+
checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
4503
dependencies = [
4504
"libc",
4505
+
"windows-sys 0.60.2",
4506
]
4507
4508
[[package]]
···
4518
"js-sys",
4519
"log",
4520
"objc2 0.5.2",
4521
+
"objc2-foundation 0.2.2",
4522
+
"objc2-quartz-core 0.2.2",
4523
"raw-window-handle",
4524
"redox_syscall",
4525
"wasm-bindgen",
···
4554
]
4555
4556
[[package]]
4557
+
name = "stable_deref_trait"
4558
+
version = "1.2.1"
4559
source = "registry+https://github.com/rust-lang/crates.io-index"
4560
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
4561
4562
[[package]]
4563
+
name = "static_assertions"
4564
+
version = "1.1.0"
4565
source = "registry+https://github.com/rust-lang/crates.io-index"
4566
+
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
4567
4568
[[package]]
4569
name = "string_cache"
4570
+
version = "0.8.9"
4571
source = "registry+https://github.com/rust-lang/crates.io-index"
4572
+
checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f"
4573
dependencies = [
4574
"new_debug_unreachable",
4575
"parking_lot",
4576
+
"phf_shared 0.11.3",
4577
"precomputed-hash",
4578
"serde",
4579
]
4580
4581
[[package]]
4582
name = "string_cache_codegen"
4583
+
version = "0.5.4"
4584
source = "registry+https://github.com/rust-lang/crates.io-index"
4585
+
checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0"
4586
dependencies = [
4587
+
"phf_generator 0.11.3",
4588
+
"phf_shared 0.11.3",
4589
"proc-macro2",
4590
"quote",
4591
]
···
4626
4627
[[package]]
4628
name = "syn"
4629
+
version = "2.0.109"
4630
source = "registry+https://github.com/rust-lang/crates.io-index"
4631
+
checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
4632
dependencies = [
4633
"proc-macro2",
4634
"quote",
···
4637
4638
[[package]]
4639
name = "sync_wrapper"
4640
+
version = "1.0.2"
4641
source = "registry+https://github.com/rust-lang/crates.io-index"
4642
+
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
4643
dependencies = [
4644
"futures-core",
4645
]
4646
4647
[[package]]
4648
+
name = "synstructure"
4649
+
version = "0.13.2"
4650
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4651
+
checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
4652
+
dependencies = [
4653
+
"proc-macro2",
4654
+
"quote",
4655
+
"syn 2.0.109",
4656
+
]
4657
+
4658
+
[[package]]
4659
name = "system-configuration"
4660
version = "0.6.1"
4661
source = "registry+https://github.com/rust-lang/crates.io-index"
4662
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
4663
dependencies = [
4664
+
"bitflags 2.10.0",
4665
"core-foundation 0.9.4",
4666
"system-configuration-sys",
4667
]
···
4691
4692
[[package]]
4693
name = "tao"
4694
+
version = "0.34.5"
4695
source = "registry+https://github.com/rust-lang/crates.io-index"
4696
+
checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
4697
dependencies = [
4698
+
"bitflags 2.10.0",
4699
+
"block2 0.6.2",
4700
+
"core-foundation 0.10.1",
4701
"core-graphics",
4702
"crossbeam-channel",
4703
"dispatch",
···
4706
"gdkwayland-sys",
4707
"gdkx11-sys",
4708
"gtk",
4709
"jni",
4710
"lazy_static",
4711
"libc",
···
4713
"ndk",
4714
"ndk-context",
4715
"ndk-sys",
4716
+
"objc2 0.6.3",
4717
+
"objc2-app-kit",
4718
+
"objc2-foundation 0.3.2",
4719
"once_cell",
4720
"parking_lot",
4721
"raw-window-handle",
···
4724
"unicode-segmentation",
4725
"url",
4726
"windows",
4727
+
"windows-core 0.61.2",
4728
"windows-version",
4729
"x11-dl",
4730
]
···
4737
dependencies = [
4738
"proc-macro2",
4739
"quote",
4740
+
"syn 2.0.109",
4741
]
4742
4743
[[package]]
···
4748
4749
[[package]]
4750
name = "tauri"
4751
+
version = "2.9.2"
4752
source = "registry+https://github.com/rust-lang/crates.io-index"
4753
+
checksum = "8bceb52453e507c505b330afe3398510e87f428ea42b6e76ecb6bd63b15965b5"
4754
dependencies = [
4755
"anyhow",
4756
"bytes",
4757
+
"cookie",
4758
"dirs",
4759
"dunce",
4760
"embed_plist",
4761
+
"getrandom 0.3.4",
4762
"glob",
4763
"gtk",
4764
"heck 0.5.0",
···
4769
"log",
4770
"mime",
4771
"muda",
4772
+
"objc2 0.6.3",
4773
"objc2-app-kit",
4774
+
"objc2-foundation 0.3.2",
4775
+
"objc2-ui-kit",
4776
+
"objc2-web-kit",
4777
"percent-encoding",
4778
"plist",
4779
"raw-window-handle",
···
4787
"tauri-macros",
4788
"tauri-runtime",
4789
"tauri-runtime-wry",
4790
+
"tauri-utils",
4791
+
"thiserror 2.0.17",
4792
"tokio",
4793
"tray-icon",
4794
"url",
4795
"webkit2gtk",
4796
"webview2-com",
4797
"window-vibrancy",
···
4800
4801
[[package]]
4802
name = "tauri-build"
4803
+
version = "2.5.1"
4804
source = "registry+https://github.com/rust-lang/crates.io-index"
4805
+
checksum = "a924b6c50fe83193f0f8b14072afa7c25b7a72752a2a73d9549b463f5fe91a38"
4806
dependencies = [
4807
"anyhow",
4808
"cargo_toml",
···
4810
"glob",
4811
"heck 0.5.0",
4812
"json-patch",
4813
+
"schemars 0.8.22",
4814
"semver",
4815
"serde",
4816
"serde_json",
4817
+
"tauri-utils",
4818
"tauri-winres",
4819
+
"toml 0.9.8",
4820
"walkdir",
4821
]
4822
4823
[[package]]
4824
name = "tauri-codegen"
4825
+
version = "2.5.0"
4826
source = "registry+https://github.com/rust-lang/crates.io-index"
4827
+
checksum = "6c1fe64c74cc40f90848281a90058a6db931eb400b60205840e09801ee30f190"
4828
dependencies = [
4829
"base64 0.22.1",
4830
"brotli",
4831
"ico",
4832
"json-patch",
4833
"plist",
4834
+
"png 0.17.16",
4835
"proc-macro2",
4836
"quote",
4837
"semver",
4838
"serde",
4839
"serde_json",
4840
"sha2",
4841
+
"syn 2.0.109",
4842
+
"tauri-utils",
4843
+
"thiserror 2.0.17",
4844
"time",
4845
"url",
4846
"uuid",
···
4849
4850
[[package]]
4851
name = "tauri-macros"
4852
+
version = "2.5.0"
4853
source = "registry+https://github.com/rust-lang/crates.io-index"
4854
+
checksum = "260c5d2eb036b76206b9fca20b7be3614cfd21046c5396f7959e0e64a4b07f2f"
4855
dependencies = [
4856
"heck 0.5.0",
4857
"proc-macro2",
4858
"quote",
4859
+
"syn 2.0.109",
4860
"tauri-codegen",
4861
+
"tauri-utils",
4862
]
4863
4864
[[package]]
4865
name = "tauri-plugin"
4866
+
version = "2.5.1"
4867
source = "registry+https://github.com/rust-lang/crates.io-index"
4868
+
checksum = "076c78a474a7247c90cad0b6e87e593c4c620ed4efdb79cbe0214f0021f6c39d"
4869
dependencies = [
4870
"anyhow",
4871
"glob",
4872
"plist",
4873
+
"schemars 0.8.22",
4874
"serde",
4875
"serde_json",
4876
+
"tauri-utils",
4877
+
"toml 0.9.8",
4878
"walkdir",
4879
]
4880
4881
[[package]]
4882
name = "tauri-plugin-deep-link"
4883
+
version = "2.4.5"
4884
source = "registry+https://github.com/rust-lang/crates.io-index"
4885
+
checksum = "6e82759f7c7d51de3cbde51c04b3f2332de52436ed84541182cd8944b04e9e73"
4886
dependencies = [
4887
+
"dunce",
4888
+
"plist",
4889
+
"rust-ini",
4890
+
"serde",
4891
+
"serde_json",
4892
+
"tauri",
4893
+
"tauri-plugin",
4894
+
"tauri-utils",
4895
+
"thiserror 2.0.17",
4896
+
"tracing",
4897
+
"url",
4898
+
"windows-registry",
4899
+
"windows-result 0.3.4",
4900
]
4901
4902
[[package]]
4903
name = "tauri-plugin-fs"
4904
+
version = "2.4.4"
4905
source = "registry+https://github.com/rust-lang/crates.io-index"
4906
+
checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9"
4907
dependencies = [
4908
"anyhow",
4909
"dunce",
4910
"glob",
4911
"percent-encoding",
4912
+
"schemars 0.8.22",
4913
"serde",
4914
"serde_json",
4915
"serde_repr",
4916
"tauri",
4917
"tauri-plugin",
4918
+
"tauri-utils",
4919
+
"thiserror 2.0.17",
4920
+
"toml 0.9.8",
4921
"url",
4922
]
4923
4924
[[package]]
4925
name = "tauri-plugin-http"
4926
+
version = "2.5.4"
4927
source = "registry+https://github.com/rust-lang/crates.io-index"
4928
+
checksum = "c00685aceab12643cf024f712ab0448ba8fcadf86f2391d49d2e5aa732aacc70"
4929
dependencies = [
4930
+
"bytes",
4931
+
"cookie_store",
4932
"data-url",
4933
"http",
4934
"regex",
4935
"reqwest",
4936
+
"schemars 0.8.22",
4937
"serde",
4938
"serde_json",
4939
"tauri",
4940
"tauri-plugin",
4941
"tauri-plugin-fs",
4942
+
"thiserror 2.0.17",
4943
"tokio",
4944
"url",
4945
"urlpattern",
···
4947
4948
[[package]]
4949
name = "tauri-plugin-process"
4950
+
version = "2.3.1"
4951
source = "registry+https://github.com/rust-lang/crates.io-index"
4952
+
checksum = "d55511a7bf6cd70c8767b02c97bf8134fa434daf3926cfc1be0a0f94132d165a"
4953
dependencies = [
4954
"tauri",
4955
"tauri-plugin",
···
4957
4958
[[package]]
4959
name = "tauri-plugin-shell"
4960
+
version = "2.3.3"
4961
source = "registry+https://github.com/rust-lang/crates.io-index"
4962
+
checksum = "c374b6db45f2a8a304f0273a15080d98c70cde86178855fc24653ba657a1144c"
4963
dependencies = [
4964
"encoding_rs",
4965
"log",
4966
"open",
4967
"os_pipe",
4968
"regex",
4969
+
"schemars 0.8.22",
4970
"serde",
4971
"serde_json",
4972
"shared_child",
4973
"tauri",
4974
"tauri-plugin",
4975
+
"thiserror 2.0.17",
4976
"tokio",
4977
]
4978
4979
[[package]]
4980
+
name = "tauri-plugin-single-instance"
4981
+
version = "2.3.6"
4982
+
source = "registry+https://github.com/rust-lang/crates.io-index"
4983
+
checksum = "dd707f8c86b4e3004e2c141fa24351f1909ba40ce1b8437e30d5ed5277dd3710"
4984
+
dependencies = [
4985
+
"serde",
4986
+
"serde_json",
4987
+
"tauri",
4988
+
"tauri-plugin-deep-link",
4989
+
"thiserror 2.0.17",
4990
+
"tracing",
4991
+
"windows-sys 0.60.2",
4992
+
"zbus",
4993
+
]
4994
+
4995
+
[[package]]
4996
name = "tauri-runtime"
4997
+
version = "2.9.1"
4998
source = "registry+https://github.com/rust-lang/crates.io-index"
4999
+
checksum = "9368f09358496f2229313fccb37682ad116b7f46fa76981efe116994a0628926"
5000
dependencies = [
5001
+
"cookie",
5002
"dpi",
5003
"gtk",
5004
"http",
5005
"jni",
5006
+
"objc2 0.6.3",
5007
+
"objc2-ui-kit",
5008
+
"objc2-web-kit",
5009
"raw-window-handle",
5010
"serde",
5011
"serde_json",
5012
+
"tauri-utils",
5013
+
"thiserror 2.0.17",
5014
"url",
5015
+
"webkit2gtk",
5016
+
"webview2-com",
5017
"windows",
5018
]
5019
5020
[[package]]
5021
name = "tauri-runtime-wry"
5022
+
version = "2.9.1"
5023
source = "registry+https://github.com/rust-lang/crates.io-index"
5024
+
checksum = "929f5df216f5c02a9e894554401bcdab6eec3e39ec6a4a7731c7067fc8688a93"
5025
dependencies = [
5026
"gtk",
5027
"http",
5028
"jni",
5029
"log",
5030
+
"objc2 0.6.3",
5031
"objc2-app-kit",
5032
+
"objc2-foundation 0.3.2",
5033
+
"once_cell",
5034
"percent-encoding",
5035
"raw-window-handle",
5036
"softbuffer",
5037
"tao",
5038
"tauri-runtime",
5039
+
"tauri-utils",
5040
"url",
5041
"webkit2gtk",
5042
"webview2-com",
···
5046
5047
[[package]]
5048
name = "tauri-utils"
5049
+
version = "2.8.0"
5050
source = "registry+https://github.com/rust-lang/crates.io-index"
5051
+
checksum = "f6b8bbe426abdbf52d050e52ed693130dbd68375b9ad82a3fb17efb4c8d85673"
5052
dependencies = [
5053
+
"anyhow",
5054
"brotli",
5055
"cargo_metadata",
5056
"ctor",
5057
"dunce",
5058
"glob",
5059
"html5ever",
5060
+
"http",
5061
+
"infer",
5062
"json-patch",
5063
"kuchikiki",
5064
"log",
5065
"memchr",
5066
+
"phf 0.11.3",
5067
"proc-macro2",
5068
"quote",
5069
"regex",
5070
+
"schemars 0.8.22",
5071
"semver",
5072
"serde",
5073
"serde-untagged",
5074
"serde_json",
5075
"serde_with",
5076
"swift-rs",
5077
+
"thiserror 2.0.17",
5078
+
"toml 0.9.8",
5079
"url",
5080
"urlpattern",
5081
"uuid",
···
5084
5085
[[package]]
5086
name = "tauri-winres"
5087
+
version = "0.3.3"
5088
source = "registry+https://github.com/rust-lang/crates.io-index"
5089
+
checksum = "fd21509dd1fa9bd355dc29894a6ff10635880732396aa38c0066c1e6c1ab8074"
5090
dependencies = [
5091
"embed-resource",
5092
+
"toml 0.9.8",
5093
]
5094
5095
[[package]]
5096
name = "tempfile"
5097
+
version = "3.23.0"
5098
source = "registry+https://github.com/rust-lang/crates.io-index"
5099
+
checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
5100
dependencies = [
5101
"fastrand",
5102
+
"getrandom 0.3.4",
5103
"once_cell",
5104
"rustix",
5105
+
"windows-sys 0.61.2",
5106
]
5107
5108
[[package]]
···
5117
]
5118
5119
[[package]]
5120
+
name = "thiserror"
5121
+
version = "1.0.69"
5122
source = "registry+https://github.com/rust-lang/crates.io-index"
5123
+
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
5124
+
dependencies = [
5125
+
"thiserror-impl 1.0.69",
5126
+
]
5127
5128
[[package]]
5129
name = "thiserror"
5130
+
version = "2.0.17"
5131
source = "registry+https://github.com/rust-lang/crates.io-index"
5132
+
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
5133
dependencies = [
5134
+
"thiserror-impl 2.0.17",
5135
]
5136
5137
[[package]]
5138
name = "thiserror-impl"
5139
+
version = "1.0.69"
5140
source = "registry+https://github.com/rust-lang/crates.io-index"
5141
+
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
5142
dependencies = [
5143
"proc-macro2",
5144
"quote",
5145
+
"syn 2.0.109",
5146
+
]
5147
+
5148
+
[[package]]
5149
+
name = "thiserror-impl"
5150
+
version = "2.0.17"
5151
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5152
+
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
5153
+
dependencies = [
5154
+
"proc-macro2",
5155
+
"quote",
5156
+
"syn 2.0.109",
5157
]
5158
5159
[[package]]
5160
name = "tiff"
5161
+
version = "0.10.3"
5162
source = "registry+https://github.com/rust-lang/crates.io-index"
5163
+
checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
5164
dependencies = [
5165
+
"fax",
5166
"flate2",
5167
+
"half",
5168
+
"quick-error",
5169
"weezl",
5170
+
"zune-jpeg",
5171
]
5172
5173
[[package]]
5174
name = "time"
5175
+
version = "0.3.44"
5176
source = "registry+https://github.com/rust-lang/crates.io-index"
5177
+
checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
5178
dependencies = [
5179
"deranged",
5180
+
"itoa",
5181
"num-conv",
5182
"powerfmt",
5183
"serde",
···
5187
5188
[[package]]
5189
name = "time-core"
5190
+
version = "0.1.6"
5191
source = "registry+https://github.com/rust-lang/crates.io-index"
5192
+
checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
5193
5194
[[package]]
5195
name = "time-macros"
5196
+
version = "0.2.24"
5197
source = "registry+https://github.com/rust-lang/crates.io-index"
5198
+
checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
5199
dependencies = [
5200
"num-conv",
5201
"time-core",
5202
]
5203
5204
[[package]]
5205
+
name = "tiny-keccak"
5206
+
version = "2.0.2"
5207
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5208
+
checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
5209
+
dependencies = [
5210
+
"crunchy",
5211
+
]
5212
+
5213
+
[[package]]
5214
+
name = "tinystr"
5215
+
version = "0.8.2"
5216
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5217
+
checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
5218
+
dependencies = [
5219
+
"displaydoc",
5220
+
"zerovec",
5221
+
]
5222
+
5223
+
[[package]]
5224
name = "tinyvec"
5225
+
version = "1.10.0"
5226
source = "registry+https://github.com/rust-lang/crates.io-index"
5227
+
checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
5228
dependencies = [
5229
"tinyvec_macros",
5230
]
···
5236
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
5237
5238
[[package]]
5239
name = "tokio"
5240
+
version = "1.48.0"
5241
source = "registry+https://github.com/rust-lang/crates.io-index"
5242
+
checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
5243
dependencies = [
5244
"bytes",
5245
"libc",
5246
+
"mio",
5247
"pin-project-lite",
5248
"socket2",
5249
"tokio-macros",
5250
+
"windows-sys 0.61.2",
5251
]
5252
5253
[[package]]
5254
name = "tokio-macros"
5255
+
version = "2.6.0"
5256
source = "registry+https://github.com/rust-lang/crates.io-index"
5257
+
checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
5258
dependencies = [
5259
"proc-macro2",
5260
"quote",
5261
+
"syn 2.0.109",
5262
]
5263
5264
[[package]]
···
5273
5274
[[package]]
5275
name = "tokio-rustls"
5276
+
version = "0.26.4"
5277
source = "registry+https://github.com/rust-lang/crates.io-index"
5278
+
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
5279
dependencies = [
5280
"rustls",
5281
"tokio",
5282
]
5283
5284
[[package]]
5285
name = "tokio-util"
5286
+
version = "0.7.17"
5287
source = "registry+https://github.com/rust-lang/crates.io-index"
5288
+
checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
5289
dependencies = [
5290
"bytes",
5291
"futures-core",
···
5296
5297
[[package]]
5298
name = "toml"
5299
+
version = "0.8.2"
5300
source = "registry+https://github.com/rust-lang/crates.io-index"
5301
+
checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
5302
dependencies = [
5303
"serde",
5304
+
"serde_spanned 0.6.9",
5305
+
"toml_datetime 0.6.3",
5306
+
"toml_edit 0.20.2",
5307
]
5308
5309
[[package]]
5310
name = "toml"
5311
+
version = "0.9.8"
5312
source = "registry+https://github.com/rust-lang/crates.io-index"
5313
+
checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8"
5314
dependencies = [
5315
+
"indexmap 2.12.0",
5316
+
"serde_core",
5317
+
"serde_spanned 1.0.3",
5318
+
"toml_datetime 0.7.3",
5319
+
"toml_parser",
5320
+
"toml_writer",
5321
+
"winnow 0.7.13",
5322
]
5323
5324
[[package]]
···
5331
]
5332
5333
[[package]]
5334
+
name = "toml_datetime"
5335
+
version = "0.7.3"
5336
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5337
+
checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533"
5338
+
dependencies = [
5339
+
"serde_core",
5340
+
]
5341
+
5342
+
[[package]]
5343
name = "toml_edit"
5344
version = "0.19.15"
5345
source = "registry+https://github.com/rust-lang/crates.io-index"
5346
checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
5347
dependencies = [
5348
+
"indexmap 2.12.0",
5349
+
"toml_datetime 0.6.3",
5350
+
"winnow 0.5.40",
5351
]
5352
5353
[[package]]
···
5356
source = "registry+https://github.com/rust-lang/crates.io-index"
5357
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
5358
dependencies = [
5359
+
"indexmap 2.12.0",
5360
"serde",
5361
+
"serde_spanned 0.6.9",
5362
+
"toml_datetime 0.6.3",
5363
+
"winnow 0.5.40",
5364
+
]
5365
+
5366
+
[[package]]
5367
+
name = "toml_edit"
5368
+
version = "0.23.7"
5369
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5370
+
checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d"
5371
+
dependencies = [
5372
+
"indexmap 2.12.0",
5373
+
"toml_datetime 0.7.3",
5374
+
"toml_parser",
5375
+
"winnow 0.7.13",
5376
+
]
5377
+
5378
+
[[package]]
5379
+
name = "toml_parser"
5380
+
version = "1.0.4"
5381
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5382
+
checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e"
5383
+
dependencies = [
5384
+
"winnow 0.7.13",
5385
+
]
5386
+
5387
+
[[package]]
5388
+
name = "toml_writer"
5389
+
version = "1.0.4"
5390
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5391
+
checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"
5392
+
5393
+
[[package]]
5394
+
name = "tower"
5395
+
version = "0.5.2"
5396
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5397
+
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
5398
+
dependencies = [
5399
+
"futures-core",
5400
+
"futures-util",
5401
+
"pin-project-lite",
5402
+
"sync_wrapper",
5403
+
"tokio",
5404
+
"tower-layer",
5405
+
"tower-service",
5406
]
5407
5408
[[package]]
5409
+
name = "tower-http"
5410
+
version = "0.6.6"
5411
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5412
+
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
5413
+
dependencies = [
5414
+
"bitflags 2.10.0",
5415
+
"bytes",
5416
+
"futures-util",
5417
+
"http",
5418
+
"http-body",
5419
+
"iri-string",
5420
+
"pin-project-lite",
5421
+
"tower",
5422
+
"tower-layer",
5423
+
"tower-service",
5424
+
]
5425
+
5426
+
[[package]]
5427
+
name = "tower-layer"
5428
+
version = "0.3.3"
5429
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5430
+
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
5431
+
5432
+
[[package]]
5433
name = "tower-service"
5434
version = "0.3.3"
5435
source = "registry+https://github.com/rust-lang/crates.io-index"
···
5437
5438
[[package]]
5439
name = "tracing"
5440
+
version = "0.1.41"
5441
source = "registry+https://github.com/rust-lang/crates.io-index"
5442
+
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
5443
dependencies = [
5444
"pin-project-lite",
5445
+
"tracing-attributes",
5446
"tracing-core",
5447
]
5448
5449
[[package]]
5450
+
name = "tracing-attributes"
5451
+
version = "0.1.30"
5452
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5453
+
checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
5454
+
dependencies = [
5455
+
"proc-macro2",
5456
+
"quote",
5457
+
"syn 2.0.109",
5458
+
]
5459
+
5460
+
[[package]]
5461
name = "tracing-core"
5462
+
version = "0.1.34"
5463
source = "registry+https://github.com/rust-lang/crates.io-index"
5464
+
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
5465
dependencies = [
5466
"once_cell",
5467
]
5468
5469
[[package]]
5470
name = "tray-icon"
5471
+
version = "0.21.2"
5472
source = "registry+https://github.com/rust-lang/crates.io-index"
5473
+
checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b"
5474
dependencies = [
5475
"crossbeam-channel",
5476
"dirs",
5477
"libappindicator",
5478
"muda",
5479
+
"objc2 0.6.3",
5480
"objc2-app-kit",
5481
+
"objc2-core-foundation",
5482
+
"objc2-core-graphics",
5483
+
"objc2-foundation 0.3.2",
5484
"once_cell",
5485
+
"png 0.17.16",
5486
"serde",
5487
+
"thiserror 2.0.17",
5488
+
"windows-sys 0.60.2",
5489
]
5490
5491
[[package]]
···
5496
5497
[[package]]
5498
name = "typeid"
5499
+
version = "1.0.3"
5500
source = "registry+https://github.com/rust-lang/crates.io-index"
5501
+
checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
5502
5503
[[package]]
5504
name = "typenum"
5505
+
version = "1.19.0"
5506
source = "registry+https://github.com/rust-lang/crates.io-index"
5507
+
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
5508
+
5509
+
[[package]]
5510
+
name = "uds_windows"
5511
+
version = "1.1.0"
5512
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5513
+
checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
5514
+
dependencies = [
5515
+
"memoffset",
5516
+
"tempfile",
5517
+
"winapi",
5518
+
]
5519
5520
[[package]]
5521
name = "unic-char-property"
···
5559
]
5560
5561
[[package]]
5562
name = "unicode-ident"
5563
+
version = "1.0.22"
5564
source = "registry+https://github.com/rust-lang/crates.io-index"
5565
+
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
5566
5567
[[package]]
5568
name = "unicode-segmentation"
···
5578
5579
[[package]]
5580
name = "url"
5581
+
version = "2.5.7"
5582
source = "registry+https://github.com/rust-lang/crates.io-index"
5583
+
checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
5584
dependencies = [
5585
"form_urlencoded",
5586
+
"idna",
5587
"percent-encoding",
5588
"serde",
5589
]
···
5607
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
5608
5609
[[package]]
5610
+
name = "utf8_iter"
5611
+
version = "1.0.4"
5612
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5613
+
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
5614
+
5615
+
[[package]]
5616
name = "uuid"
5617
+
version = "1.18.1"
5618
source = "registry+https://github.com/rust-lang/crates.io-index"
5619
+
checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"
5620
dependencies = [
5621
+
"getrandom 0.3.4",
5622
+
"js-sys",
5623
"serde",
5624
+
"wasm-bindgen",
5625
]
5626
5627
[[package]]
5628
name = "v_frame"
5629
+
version = "0.3.9"
5630
source = "registry+https://github.com/rust-lang/crates.io-index"
5631
+
checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2"
5632
dependencies = [
5633
"aligned-vec",
5634
"num-traits",
···
5643
5644
[[package]]
5645
name = "version-compare"
5646
+
version = "0.2.1"
5647
source = "registry+https://github.com/rust-lang/crates.io-index"
5648
+
checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
5649
5650
[[package]]
5651
name = "version_check"
···
5654
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
5655
5656
[[package]]
5657
name = "vswhom"
5658
version = "0.1.0"
5659
source = "registry+https://github.com/rust-lang/crates.io-index"
···
5665
5666
[[package]]
5667
name = "vswhom-sys"
5668
+
version = "0.1.3"
5669
source = "registry+https://github.com/rust-lang/crates.io-index"
5670
+
checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150"
5671
dependencies = [
5672
"cc",
5673
"libc",
···
5700
5701
[[package]]
5702
name = "wasi"
5703
+
version = "0.11.1+wasi-snapshot-preview1"
5704
source = "registry+https://github.com/rust-lang/crates.io-index"
5705
+
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
5706
5707
[[package]]
5708
+
name = "wasip2"
5709
+
version = "1.0.1+wasi-0.2.4"
5710
source = "registry+https://github.com/rust-lang/crates.io-index"
5711
+
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
5712
dependencies = [
5713
+
"wit-bindgen",
5714
]
5715
5716
[[package]]
5717
+
name = "wasm-bindgen"
5718
+
version = "0.2.105"
5719
source = "registry+https://github.com/rust-lang/crates.io-index"
5720
+
checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
5721
dependencies = [
5722
+
"cfg-if",
5723
"once_cell",
5724
+
"rustversion",
5725
+
"wasm-bindgen-macro",
5726
"wasm-bindgen-shared",
5727
]
5728
5729
[[package]]
5730
name = "wasm-bindgen-futures"
5731
+
version = "0.4.55"
5732
source = "registry+https://github.com/rust-lang/crates.io-index"
5733
+
checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
5734
dependencies = [
5735
"cfg-if",
5736
"js-sys",
5737
+
"once_cell",
5738
"wasm-bindgen",
5739
"web-sys",
5740
]
5741
5742
[[package]]
5743
name = "wasm-bindgen-macro"
5744
+
version = "0.2.105"
5745
source = "registry+https://github.com/rust-lang/crates.io-index"
5746
+
checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
5747
dependencies = [
5748
"quote",
5749
"wasm-bindgen-macro-support",
···
5751
5752
[[package]]
5753
name = "wasm-bindgen-macro-support"
5754
+
version = "0.2.105"
5755
source = "registry+https://github.com/rust-lang/crates.io-index"
5756
+
checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
5757
dependencies = [
5758
+
"bumpalo",
5759
"proc-macro2",
5760
"quote",
5761
+
"syn 2.0.109",
5762
"wasm-bindgen-shared",
5763
]
5764
5765
[[package]]
5766
name = "wasm-bindgen-shared"
5767
+
version = "0.2.105"
5768
source = "registry+https://github.com/rust-lang/crates.io-index"
5769
+
checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
5770
+
dependencies = [
5771
+
"unicode-ident",
5772
+
]
5773
5774
[[package]]
5775
name = "wasm-streams"
5776
+
version = "0.4.2"
5777
source = "registry+https://github.com/rust-lang/crates.io-index"
5778
+
checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
5779
dependencies = [
5780
"futures-util",
5781
"js-sys",
···
5786
5787
[[package]]
5788
name = "web-sys"
5789
+
version = "0.3.82"
5790
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5791
+
checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
5792
+
dependencies = [
5793
+
"js-sys",
5794
+
"wasm-bindgen",
5795
+
]
5796
+
5797
+
[[package]]
5798
+
name = "web-time"
5799
+
version = "1.1.0"
5800
source = "registry+https://github.com/rust-lang/crates.io-index"
5801
+
checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
5802
dependencies = [
5803
"js-sys",
5804
"wasm-bindgen",
···
5850
5851
[[package]]
5852
name = "webpki-roots"
5853
+
version = "1.0.4"
5854
source = "registry+https://github.com/rust-lang/crates.io-index"
5855
+
checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
5856
dependencies = [
5857
"rustls-pki-types",
5858
]
5859
5860
[[package]]
5861
name = "webview2-com"
5862
+
version = "0.38.0"
5863
source = "registry+https://github.com/rust-lang/crates.io-index"
5864
+
checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4"
5865
dependencies = [
5866
"webview2-com-macros",
5867
"webview2-com-sys",
5868
"windows",
5869
+
"windows-core 0.61.2",
5870
"windows-implement",
5871
"windows-interface",
5872
]
···
5879
dependencies = [
5880
"proc-macro2",
5881
"quote",
5882
+
"syn 2.0.109",
5883
]
5884
5885
[[package]]
5886
name = "webview2-com-sys"
5887
+
version = "0.38.0"
5888
source = "registry+https://github.com/rust-lang/crates.io-index"
5889
+
checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c"
5890
dependencies = [
5891
+
"thiserror 2.0.17",
5892
"windows",
5893
+
"windows-core 0.61.2",
5894
]
5895
5896
[[package]]
5897
name = "weezl"
5898
+
version = "0.1.10"
5899
source = "registry+https://github.com/rust-lang/crates.io-index"
5900
+
checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
5901
5902
[[package]]
5903
name = "winapi"
···
5917
5918
[[package]]
5919
name = "winapi-util"
5920
+
version = "0.1.11"
5921
source = "registry+https://github.com/rust-lang/crates.io-index"
5922
+
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
5923
dependencies = [
5924
+
"windows-sys 0.61.2",
5925
]
5926
5927
[[package]]
···
5932
5933
[[package]]
5934
name = "window-vibrancy"
5935
+
version = "0.6.0"
5936
source = "registry+https://github.com/rust-lang/crates.io-index"
5937
+
checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
5938
dependencies = [
5939
+
"objc2 0.6.3",
5940
"objc2-app-kit",
5941
+
"objc2-core-foundation",
5942
+
"objc2-foundation 0.3.2",
5943
"raw-window-handle",
5944
"windows-sys 0.59.0",
5945
"windows-version",
···
5947
5948
[[package]]
5949
name = "windows"
5950
+
version = "0.61.3"
5951
source = "registry+https://github.com/rust-lang/crates.io-index"
5952
+
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
5953
dependencies = [
5954
+
"windows-collections",
5955
+
"windows-core 0.61.2",
5956
+
"windows-future",
5957
+
"windows-link 0.1.3",
5958
+
"windows-numerics",
5959
+
]
5960
+
5961
+
[[package]]
5962
+
name = "windows-collections"
5963
+
version = "0.2.0"
5964
+
source = "registry+https://github.com/rust-lang/crates.io-index"
5965
+
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
5966
+
dependencies = [
5967
+
"windows-core 0.61.2",
5968
]
5969
5970
[[package]]
5971
name = "windows-core"
5972
+
version = "0.61.2"
5973
source = "registry+https://github.com/rust-lang/crates.io-index"
5974
+
checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
5975
dependencies = [
5976
+
"windows-implement",
5977
+
"windows-interface",
5978
+
"windows-link 0.1.3",
5979
+
"windows-result 0.3.4",
5980
+
"windows-strings 0.4.2",
5981
]
5982
5983
[[package]]
5984
name = "windows-core"
5985
+
version = "0.62.2"
5986
source = "registry+https://github.com/rust-lang/crates.io-index"
5987
+
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
5988
dependencies = [
5989
"windows-implement",
5990
"windows-interface",
5991
+
"windows-link 0.2.1",
5992
+
"windows-result 0.4.1",
5993
+
"windows-strings 0.5.1",
5994
+
]
5995
+
5996
+
[[package]]
5997
+
name = "windows-future"
5998
+
version = "0.2.1"
5999
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6000
+
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
6001
+
dependencies = [
6002
+
"windows-core 0.61.2",
6003
+
"windows-link 0.1.3",
6004
+
"windows-threading",
6005
]
6006
6007
[[package]]
6008
name = "windows-implement"
6009
+
version = "0.60.2"
6010
source = "registry+https://github.com/rust-lang/crates.io-index"
6011
+
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
6012
dependencies = [
6013
"proc-macro2",
6014
"quote",
6015
+
"syn 2.0.109",
6016
]
6017
6018
[[package]]
6019
name = "windows-interface"
6020
+
version = "0.59.3"
6021
source = "registry+https://github.com/rust-lang/crates.io-index"
6022
+
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
6023
dependencies = [
6024
"proc-macro2",
6025
"quote",
6026
+
"syn 2.0.109",
6027
+
]
6028
+
6029
+
[[package]]
6030
+
name = "windows-link"
6031
+
version = "0.1.3"
6032
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6033
+
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
6034
+
6035
+
[[package]]
6036
+
name = "windows-link"
6037
+
version = "0.2.1"
6038
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6039
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
6040
+
6041
+
[[package]]
6042
+
name = "windows-numerics"
6043
+
version = "0.2.0"
6044
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6045
+
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
6046
+
dependencies = [
6047
+
"windows-core 0.61.2",
6048
+
"windows-link 0.1.3",
6049
]
6050
6051
[[package]]
6052
name = "windows-registry"
6053
+
version = "0.5.3"
6054
source = "registry+https://github.com/rust-lang/crates.io-index"
6055
+
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
6056
dependencies = [
6057
+
"windows-link 0.1.3",
6058
+
"windows-result 0.3.4",
6059
+
"windows-strings 0.4.2",
6060
]
6061
6062
[[package]]
6063
name = "windows-result"
6064
+
version = "0.3.4"
6065
source = "registry+https://github.com/rust-lang/crates.io-index"
6066
+
checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
6067
dependencies = [
6068
+
"windows-link 0.1.3",
6069
+
]
6070
+
6071
+
[[package]]
6072
+
name = "windows-result"
6073
+
version = "0.4.1"
6074
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6075
+
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
6076
+
dependencies = [
6077
+
"windows-link 0.2.1",
6078
]
6079
6080
[[package]]
6081
name = "windows-strings"
6082
+
version = "0.4.2"
6083
source = "registry+https://github.com/rust-lang/crates.io-index"
6084
+
checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
6085
dependencies = [
6086
+
"windows-link 0.1.3",
6087
]
6088
6089
[[package]]
6090
+
name = "windows-strings"
6091
+
version = "0.5.1"
6092
source = "registry+https://github.com/rust-lang/crates.io-index"
6093
+
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
6094
dependencies = [
6095
+
"windows-link 0.2.1",
6096
]
6097
6098
[[package]]
6099
name = "windows-sys"
6100
+
version = "0.45.0"
6101
source = "registry+https://github.com/rust-lang/crates.io-index"
6102
+
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
6103
dependencies = [
6104
+
"windows-targets 0.42.2",
6105
]
6106
6107
[[package]]
···
6123
]
6124
6125
[[package]]
6126
+
name = "windows-sys"
6127
+
version = "0.60.2"
6128
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6129
+
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
6130
+
dependencies = [
6131
+
"windows-targets 0.53.5",
6132
+
]
6133
+
6134
+
[[package]]
6135
+
name = "windows-sys"
6136
+
version = "0.61.2"
6137
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6138
+
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
6139
+
dependencies = [
6140
+
"windows-link 0.2.1",
6141
+
]
6142
+
6143
+
[[package]]
6144
name = "windows-targets"
6145
version = "0.42.2"
6146
source = "registry+https://github.com/rust-lang/crates.io-index"
···
6157
6158
[[package]]
6159
name = "windows-targets"
6160
version = "0.52.6"
6161
source = "registry+https://github.com/rust-lang/crates.io-index"
6162
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
···
6164
"windows_aarch64_gnullvm 0.52.6",
6165
"windows_aarch64_msvc 0.52.6",
6166
"windows_i686_gnu 0.52.6",
6167
+
"windows_i686_gnullvm 0.52.6",
6168
"windows_i686_msvc 0.52.6",
6169
"windows_x86_64_gnu 0.52.6",
6170
"windows_x86_64_gnullvm 0.52.6",
···
6172
]
6173
6174
[[package]]
6175
+
name = "windows-targets"
6176
+
version = "0.53.5"
6177
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6178
+
checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
6179
+
dependencies = [
6180
+
"windows-link 0.2.1",
6181
+
"windows_aarch64_gnullvm 0.53.1",
6182
+
"windows_aarch64_msvc 0.53.1",
6183
+
"windows_i686_gnu 0.53.1",
6184
+
"windows_i686_gnullvm 0.53.1",
6185
+
"windows_i686_msvc 0.53.1",
6186
+
"windows_x86_64_gnu 0.53.1",
6187
+
"windows_x86_64_gnullvm 0.53.1",
6188
+
"windows_x86_64_msvc 0.53.1",
6189
+
]
6190
+
6191
+
[[package]]
6192
+
name = "windows-threading"
6193
+
version = "0.1.0"
6194
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6195
+
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
6196
+
dependencies = [
6197
+
"windows-link 0.1.3",
6198
+
]
6199
+
6200
+
[[package]]
6201
name = "windows-version"
6202
+
version = "0.1.7"
6203
source = "registry+https://github.com/rust-lang/crates.io-index"
6204
+
checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
6205
dependencies = [
6206
+
"windows-link 0.2.1",
6207
]
6208
6209
[[package]]
···
6214
6215
[[package]]
6216
name = "windows_aarch64_gnullvm"
6217
+
version = "0.52.6"
6218
source = "registry+https://github.com/rust-lang/crates.io-index"
6219
+
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
6220
6221
[[package]]
6222
name = "windows_aarch64_gnullvm"
6223
+
version = "0.53.1"
6224
source = "registry+https://github.com/rust-lang/crates.io-index"
6225
+
checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
6226
6227
[[package]]
6228
name = "windows_aarch64_msvc"
···
6232
6233
[[package]]
6234
name = "windows_aarch64_msvc"
6235
+
version = "0.52.6"
6236
source = "registry+https://github.com/rust-lang/crates.io-index"
6237
+
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
6238
6239
[[package]]
6240
name = "windows_aarch64_msvc"
6241
+
version = "0.53.1"
6242
source = "registry+https://github.com/rust-lang/crates.io-index"
6243
+
checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
6244
6245
[[package]]
6246
name = "windows_i686_gnu"
···
6250
6251
[[package]]
6252
name = "windows_i686_gnu"
6253
+
version = "0.52.6"
6254
source = "registry+https://github.com/rust-lang/crates.io-index"
6255
+
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
6256
6257
[[package]]
6258
name = "windows_i686_gnu"
6259
+
version = "0.53.1"
6260
source = "registry+https://github.com/rust-lang/crates.io-index"
6261
+
checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
6262
6263
[[package]]
6264
name = "windows_i686_gnullvm"
···
6267
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
6268
6269
[[package]]
6270
+
name = "windows_i686_gnullvm"
6271
+
version = "0.53.1"
6272
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6273
+
checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
6274
+
6275
+
[[package]]
6276
name = "windows_i686_msvc"
6277
version = "0.42.2"
6278
source = "registry+https://github.com/rust-lang/crates.io-index"
···
6280
6281
[[package]]
6282
name = "windows_i686_msvc"
6283
+
version = "0.52.6"
6284
source = "registry+https://github.com/rust-lang/crates.io-index"
6285
+
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
6286
6287
[[package]]
6288
name = "windows_i686_msvc"
6289
+
version = "0.53.1"
6290
source = "registry+https://github.com/rust-lang/crates.io-index"
6291
+
checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
6292
6293
[[package]]
6294
name = "windows_x86_64_gnu"
···
6298
6299
[[package]]
6300
name = "windows_x86_64_gnu"
6301
+
version = "0.52.6"
6302
source = "registry+https://github.com/rust-lang/crates.io-index"
6303
+
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
6304
6305
[[package]]
6306
name = "windows_x86_64_gnu"
6307
+
version = "0.53.1"
6308
source = "registry+https://github.com/rust-lang/crates.io-index"
6309
+
checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
6310
6311
[[package]]
6312
name = "windows_x86_64_gnullvm"
···
6316
6317
[[package]]
6318
name = "windows_x86_64_gnullvm"
6319
+
version = "0.52.6"
6320
source = "registry+https://github.com/rust-lang/crates.io-index"
6321
+
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
6322
6323
[[package]]
6324
name = "windows_x86_64_gnullvm"
6325
+
version = "0.53.1"
6326
source = "registry+https://github.com/rust-lang/crates.io-index"
6327
+
checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
6328
6329
[[package]]
6330
name = "windows_x86_64_msvc"
···
6334
6335
[[package]]
6336
name = "windows_x86_64_msvc"
6337
+
version = "0.52.6"
6338
source = "registry+https://github.com/rust-lang/crates.io-index"
6339
+
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
6340
6341
[[package]]
6342
name = "windows_x86_64_msvc"
6343
+
version = "0.53.1"
6344
source = "registry+https://github.com/rust-lang/crates.io-index"
6345
+
checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
6346
6347
[[package]]
6348
name = "winnow"
···
6354
]
6355
6356
[[package]]
6357
+
name = "winnow"
6358
+
version = "0.7.13"
6359
source = "registry+https://github.com/rust-lang/crates.io-index"
6360
+
checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf"
6361
dependencies = [
6362
+
"memchr",
6363
]
6364
6365
[[package]]
6366
name = "winreg"
6367
+
version = "0.55.0"
6368
source = "registry+https://github.com/rust-lang/crates.io-index"
6369
+
checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97"
6370
dependencies = [
6371
"cfg-if",
6372
+
"windows-sys 0.59.0",
6373
]
6374
6375
[[package]]
6376
+
name = "wit-bindgen"
6377
+
version = "0.46.0"
6378
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6379
+
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
6380
+
6381
+
[[package]]
6382
+
name = "writeable"
6383
+
version = "0.6.2"
6384
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6385
+
checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
6386
+
6387
+
[[package]]
6388
name = "wry"
6389
+
version = "0.53.5"
6390
source = "registry+https://github.com/rust-lang/crates.io-index"
6391
+
checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2"
6392
dependencies = [
6393
"base64 0.22.1",
6394
+
"block2 0.6.2",
6395
+
"cookie",
6396
"crossbeam-channel",
6397
+
"dirs",
6398
"dpi",
6399
"dunce",
6400
"gdkx11",
···
6406
"kuchikiki",
6407
"libc",
6408
"ndk",
6409
+
"objc2 0.6.3",
6410
"objc2-app-kit",
6411
+
"objc2-core-foundation",
6412
+
"objc2-foundation 0.3.2",
6413
"objc2-ui-kit",
6414
"objc2-web-kit",
6415
"once_cell",
···
6418
"sha2",
6419
"soup3",
6420
"tao-macros",
6421
+
"thiserror 2.0.17",
6422
+
"url",
6423
"webkit2gtk",
6424
"webkit2gtk-sys",
6425
"webview2-com",
6426
"windows",
6427
+
"windows-core 0.61.2",
6428
"windows-version",
6429
"x11-dl",
6430
]
···
6451
]
6452
6453
[[package]]
6454
+
name = "x11rb"
6455
+
version = "0.13.2"
6456
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6457
+
checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
6458
+
dependencies = [
6459
+
"gethostname",
6460
+
"rustix",
6461
+
"x11rb-protocol",
6462
+
]
6463
+
6464
+
[[package]]
6465
+
name = "x11rb-protocol"
6466
+
version = "0.13.2"
6467
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6468
+
checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
6469
+
6470
+
[[package]]
6471
+
name = "yoke"
6472
+
version = "0.8.1"
6473
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6474
+
checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
6475
+
dependencies = [
6476
+
"stable_deref_trait",
6477
+
"yoke-derive",
6478
+
"zerofrom",
6479
+
]
6480
+
6481
+
[[package]]
6482
+
name = "yoke-derive"
6483
+
version = "0.8.1"
6484
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6485
+
checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
6486
+
dependencies = [
6487
+
"proc-macro2",
6488
+
"quote",
6489
+
"syn 2.0.109",
6490
+
"synstructure",
6491
+
]
6492
+
6493
+
[[package]]
6494
+
name = "zbus"
6495
+
version = "5.12.0"
6496
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6497
+
checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91"
6498
+
dependencies = [
6499
+
"async-broadcast",
6500
+
"async-executor",
6501
+
"async-io",
6502
+
"async-lock",
6503
+
"async-process",
6504
+
"async-recursion",
6505
+
"async-task",
6506
+
"async-trait",
6507
+
"blocking",
6508
+
"enumflags2",
6509
+
"event-listener",
6510
+
"futures-core",
6511
+
"futures-lite",
6512
+
"hex",
6513
+
"nix",
6514
+
"ordered-stream",
6515
+
"serde",
6516
+
"serde_repr",
6517
+
"tracing",
6518
+
"uds_windows",
6519
+
"uuid",
6520
+
"windows-sys 0.61.2",
6521
+
"winnow 0.7.13",
6522
+
"zbus_macros",
6523
+
"zbus_names",
6524
+
"zvariant",
6525
+
]
6526
+
6527
+
[[package]]
6528
+
name = "zbus_macros"
6529
+
version = "5.12.0"
6530
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6531
+
checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314"
6532
+
dependencies = [
6533
+
"proc-macro-crate 3.4.0",
6534
+
"proc-macro2",
6535
+
"quote",
6536
+
"syn 2.0.109",
6537
+
"zbus_names",
6538
+
"zvariant",
6539
+
"zvariant_utils",
6540
+
]
6541
+
6542
+
[[package]]
6543
+
name = "zbus_names"
6544
+
version = "4.2.0"
6545
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6546
+
checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
6547
+
dependencies = [
6548
+
"serde",
6549
+
"static_assertions",
6550
+
"winnow 0.7.13",
6551
+
"zvariant",
6552
+
]
6553
+
6554
+
[[package]]
6555
name = "zerocopy"
6556
+
version = "0.8.27"
6557
source = "registry+https://github.com/rust-lang/crates.io-index"
6558
+
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
6559
dependencies = [
6560
"zerocopy-derive",
6561
]
6562
6563
[[package]]
6564
name = "zerocopy-derive"
6565
+
version = "0.8.27"
6566
source = "registry+https://github.com/rust-lang/crates.io-index"
6567
+
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
6568
dependencies = [
6569
"proc-macro2",
6570
"quote",
6571
+
"syn 2.0.109",
6572
+
]
6573
+
6574
+
[[package]]
6575
+
name = "zerofrom"
6576
+
version = "0.1.6"
6577
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6578
+
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
6579
+
dependencies = [
6580
+
"zerofrom-derive",
6581
+
]
6582
+
6583
+
[[package]]
6584
+
name = "zerofrom-derive"
6585
+
version = "0.1.6"
6586
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6587
+
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
6588
+
dependencies = [
6589
+
"proc-macro2",
6590
+
"quote",
6591
+
"syn 2.0.109",
6592
+
"synstructure",
6593
]
6594
6595
[[package]]
6596
name = "zeroize"
6597
+
version = "1.8.2"
6598
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6599
+
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
6600
+
6601
+
[[package]]
6602
+
name = "zerotrie"
6603
+
version = "0.2.3"
6604
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6605
+
checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
6606
+
dependencies = [
6607
+
"displaydoc",
6608
+
"yoke",
6609
+
"zerofrom",
6610
+
]
6611
+
6612
+
[[package]]
6613
+
name = "zerovec"
6614
+
version = "0.11.5"
6615
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6616
+
checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
6617
+
dependencies = [
6618
+
"yoke",
6619
+
"zerofrom",
6620
+
"zerovec-derive",
6621
+
]
6622
+
6623
+
[[package]]
6624
+
name = "zerovec-derive"
6625
+
version = "0.11.2"
6626
source = "registry+https://github.com/rust-lang/crates.io-index"
6627
+
checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
6628
+
dependencies = [
6629
+
"proc-macro2",
6630
+
"quote",
6631
+
"syn 2.0.109",
6632
+
]
6633
6634
[[package]]
6635
name = "zune-core"
···
6648
6649
[[package]]
6650
name = "zune-jpeg"
6651
+
version = "0.4.21"
6652
source = "registry+https://github.com/rust-lang/crates.io-index"
6653
+
checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
6654
dependencies = [
6655
"zune-core",
6656
]
6657
+
6658
+
[[package]]
6659
+
name = "zvariant"
6660
+
version = "5.8.0"
6661
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6662
+
checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c"
6663
+
dependencies = [
6664
+
"endi",
6665
+
"enumflags2",
6666
+
"serde",
6667
+
"winnow 0.7.13",
6668
+
"zvariant_derive",
6669
+
"zvariant_utils",
6670
+
]
6671
+
6672
+
[[package]]
6673
+
name = "zvariant_derive"
6674
+
version = "5.8.0"
6675
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6676
+
checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006"
6677
+
dependencies = [
6678
+
"proc-macro-crate 3.4.0",
6679
+
"proc-macro2",
6680
+
"quote",
6681
+
"syn 2.0.109",
6682
+
"zvariant_utils",
6683
+
]
6684
+
6685
+
[[package]]
6686
+
name = "zvariant_utils"
6687
+
version = "3.2.1"
6688
+
source = "registry+https://github.com/rust-lang/crates.io-index"
6689
+
checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599"
6690
+
dependencies = [
6691
+
"proc-macro2",
6692
+
"quote",
6693
+
"serde",
6694
+
"syn 2.0.109",
6695
+
"winnow 0.7.13",
6696
+
]
+19
-15
src-tauri/Cargo.toml
+19
-15
src-tauri/Cargo.toml
···
1
[package]
2
-
name = "vrcpm-rs"
3
-
version = "0.2.1"
4
description = "VRChat Photo Manager"
5
authors = ["_phaz"]
6
edition = "2021"
···
11
tauri-build = { version = "2.0.0-rc", features = [] }
12
13
[dependencies]
14
-
tauri = { version = "2.0.0-rc", features = ["tray-icon", "image-png"] }
15
serde = { version = "1.0", features = ["derive"] }
16
serde_json = "1.0"
17
-
open = "5.1.2"
18
-
tauri-plugin-deep-link = "0.1.2"
19
-
dirs = "5.0.1"
20
-
notify = "6.1.1"
21
-
regex = "1.10.4"
22
reqwest = { version = "0.12", features = ["blocking"] }
23
-
tauri-plugin-shell = "2.0.0-rc.2"
24
-
tauri-plugin-http = "2.0.0-rc.0"
25
-
tauri-plugin-process = "2.0.0-rc.0"
26
-
image = "0.25.2"
27
-
fast_image_resize = { version = "4.2.1", features = [ "image" ] }
28
-
29
[target.'cfg(windows)'.dependencies]
30
-
mslnk = { version = "0.1.8" }
31
32
[features]
33
# this feature is used for production builds or when `devPath` points to the filesystem
34
# DO NOT REMOVE!!
35
custom-protocol = ["tauri/custom-protocol"]
···
1
[package]
2
+
name = "VRChatPhotoManager"
3
+
version = "0.2.7-hot1"
4
description = "VRChat Photo Manager"
5
authors = ["_phaz"]
6
edition = "2021"
···
11
tauri-build = { version = "2.0.0-rc", features = [] }
12
13
[dependencies]
14
+
tauri = { version = "2.9", features = [ "tray-icon", "image-png", "devtools" ] }
15
serde = { version = "1.0", features = ["derive"] }
16
serde_json = "1.0"
17
+
open = "5.3"
18
+
dirs = "6.0"
19
+
notify = "8.2"
20
+
regex = "1.12"
21
reqwest = { version = "0.12", features = ["blocking"] }
22
+
image = "0.25"
23
+
fast_image_resize = { version = "5.3", features = [ "image" ] }
24
+
arboard = "3.6"
25
+
tauri-plugin-single-instance = { version = "2.3", features = ["deep-link"] }
26
+
tauri-plugin-shell = "2.3"
27
+
tauri-plugin-http = "2.5"
28
+
tauri-plugin-process = "2.3"
29
[target.'cfg(windows)'.dependencies]
30
+
mslnk = { version = "0.1" }
31
32
[features]
33
# this feature is used for production builds or when `devPath` points to the filesystem
34
# DO NOT REMOVE!!
35
custom-protocol = ["tauri/custom-protocol"]
36
+
37
+
[profile.release.package.wry]
38
+
debug = true
39
+
debug-assertions = true
+1
-1
src-tauri/build.rs
+1
-1
src-tauri/build.rs
+1
-1
src-tauri/gen/schemas/acl-manifests.json
+1
-1
src-tauri/gen/schemas/acl-manifests.json
···
1
-
{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"http":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n","permissions":["allow-fetch","allow-fetch-cancel","allow-fetch-read-body","allow-fetch-send"]},"permissions":{"allow-fetch":{"identifier":"allow-fetch","description":"Enables the fetch command without any pre-configured scope.","commands":{"allow":["fetch"],"deny":[]}},"allow-fetch-cancel":{"identifier":"allow-fetch-cancel","description":"Enables the fetch_cancel command without any pre-configured scope.","commands":{"allow":["fetch_cancel"],"deny":[]}},"allow-fetch-read-body":{"identifier":"allow-fetch-read-body","description":"Enables the fetch_read_body command without any pre-configured scope.","commands":{"allow":["fetch_read_body"],"deny":[]}},"allow-fetch-send":{"identifier":"allow-fetch-send","description":"Enables the fetch_send command without any pre-configured scope.","commands":{"allow":["fetch_send"],"deny":[]}},"deny-fetch":{"identifier":"deny-fetch","description":"Denies the fetch command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch"]}},"deny-fetch-cancel":{"identifier":"deny-fetch-cancel","description":"Denies the fetch_cancel command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_cancel"]}},"deny-fetch-read-body":{"identifier":"deny-fetch-read-body","description":"Denies the fetch_read_body command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_read_body"]}},"deny-fetch-send":{"identifier":"deny-fetch-send","description":"Denies the fetch_send command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_send"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"},{"properties":{"url":{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"}},"required":["url"],"type":"object"}],"description":"HTTP scope entry.","title":"HttpScopeEntry"}},"process":{"default_permission":{"identifier":"default","description":"This permission set configures which\nprocess feeatures are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n","permissions":["allow-exit","allow-restart"]},"permissions":{"allow-exit":{"identifier":"allow-exit","description":"Enables the exit command without any pre-configured scope.","commands":{"allow":["exit"],"deny":[]}},"allow-restart":{"identifier":"allow-restart","description":"Enables the restart command without any pre-configured scope.","commands":{"allow":["restart"],"deny":[]}},"deny-exit":{"identifier":"deny-exit","description":"Denies the exit command without any pre-configured scope.","commands":{"allow":[],"deny":["exit"]}},"deny-restart":{"identifier":"deny-restart","description":"Denies the restart command without any pre-configured scope.","commands":{"allow":[],"deny":["restart"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"}},"required":["cmd","name"],"type":"object"},{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["name","sidecar"],"type":"object"}],"definitions":{"ShellScopeEntryAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}}}
···
1
+
{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set.","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version","allow-identifier","allow-bundle-type","allow-register-listener","allow-remove-listener"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-bundle-type":{"identifier":"allow-bundle-type","description":"Enables the bundle_type command without any pre-configured scope.","commands":{"allow":["bundle_type"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-fetch-data-store-identifiers":{"identifier":"allow-fetch-data-store-identifiers","description":"Enables the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":["fetch_data_store_identifiers"],"deny":[]}},"allow-identifier":{"identifier":"allow-identifier","description":"Enables the identifier command without any pre-configured scope.","commands":{"allow":["identifier"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-register-listener":{"identifier":"allow-register-listener","description":"Enables the register_listener command without any pre-configured scope.","commands":{"allow":["register_listener"],"deny":[]}},"allow-remove-data-store":{"identifier":"allow-remove-data-store","description":"Enables the remove_data_store command without any pre-configured scope.","commands":{"allow":["remove_data_store"],"deny":[]}},"allow-remove-listener":{"identifier":"allow-remove-listener","description":"Enables the remove_listener command without any pre-configured scope.","commands":{"allow":["remove_listener"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-set-dock-visibility":{"identifier":"allow-set-dock-visibility","description":"Enables the set_dock_visibility command without any pre-configured scope.","commands":{"allow":["set_dock_visibility"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-bundle-type":{"identifier":"deny-bundle-type","description":"Denies the bundle_type command without any pre-configured scope.","commands":{"allow":[],"deny":["bundle_type"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-fetch-data-store-identifiers":{"identifier":"deny-fetch-data-store-identifiers","description":"Denies the fetch_data_store_identifiers command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_data_store_identifiers"]}},"deny-identifier":{"identifier":"deny-identifier","description":"Denies the identifier command without any pre-configured scope.","commands":{"allow":[],"deny":["identifier"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-register-listener":{"identifier":"deny-register-listener","description":"Denies the register_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["register_listener"]}},"deny-remove-data-store":{"identifier":"deny-remove-data-store","description":"Denies the remove_data_store command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_data_store"]}},"deny-remove-listener":{"identifier":"deny-remove-listener","description":"Denies the remove_listener command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_listener"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-set-dock-visibility":{"identifier":"deny-set-dock-visibility","description":"Denies the set_dock_visibility command without any pre-configured scope.","commands":{"allow":[],"deny":["set_dock_visibility"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin, which enables all commands.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-auto-resize":{"identifier":"allow-set-webview-auto-resize","description":"Enables the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":["set_webview_auto_resize"],"deny":[]}},"allow-set-webview-background-color":{"identifier":"allow-set-webview-background-color","description":"Enables the set_webview_background_color command without any pre-configured scope.","commands":{"allow":["set_webview_background_color"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-auto-resize":{"identifier":"deny-set-webview-auto-resize","description":"Denies the set_webview_auto_resize command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_auto_resize"]}},"deny-set-webview-background-color":{"identifier":"deny-set-webview-background-color","description":"Denies the set_webview_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_background_color"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-is-always-on-top","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-always-on-top":{"identifier":"allow-is-always-on-top","description":"Enables the is_always_on_top command without any pre-configured scope.","commands":{"allow":["is_always_on_top"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-background-color":{"identifier":"allow-set-background-color","description":"Enables the set_background_color command without any pre-configured scope.","commands":{"allow":["set_background_color"],"deny":[]}},"allow-set-badge-count":{"identifier":"allow-set-badge-count","description":"Enables the set_badge_count command without any pre-configured scope.","commands":{"allow":["set_badge_count"],"deny":[]}},"allow-set-badge-label":{"identifier":"allow-set-badge-label","description":"Enables the set_badge_label command without any pre-configured scope.","commands":{"allow":["set_badge_label"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-focusable":{"identifier":"allow-set-focusable","description":"Enables the set_focusable command without any pre-configured scope.","commands":{"allow":["set_focusable"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-overlay-icon":{"identifier":"allow-set-overlay-icon","description":"Enables the set_overlay_icon command without any pre-configured scope.","commands":{"allow":["set_overlay_icon"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-simple-fullscreen":{"identifier":"allow-set-simple-fullscreen","description":"Enables the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":["set_simple_fullscreen"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-always-on-top":{"identifier":"deny-is-always-on-top","description":"Denies the is_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["is_always_on_top"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-background-color":{"identifier":"deny-set-background-color","description":"Denies the set_background_color command without any pre-configured scope.","commands":{"allow":[],"deny":["set_background_color"]}},"deny-set-badge-count":{"identifier":"deny-set-badge-count","description":"Denies the set_badge_count command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_count"]}},"deny-set-badge-label":{"identifier":"deny-set-badge-label","description":"Denies the set_badge_label command without any pre-configured scope.","commands":{"allow":[],"deny":["set_badge_label"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-focusable":{"identifier":"deny-set-focusable","description":"Denies the set_focusable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focusable"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-overlay-icon":{"identifier":"deny-set-overlay-icon","description":"Denies the set_overlay_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_overlay_icon"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-simple-fullscreen":{"identifier":"deny-set-simple-fullscreen","description":"Denies the set_simple_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_simple_fullscreen"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"http":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n","permissions":["allow-fetch","allow-fetch-cancel","allow-fetch-read-body","allow-fetch-send"]},"permissions":{"allow-fetch":{"identifier":"allow-fetch","description":"Enables the fetch command without any pre-configured scope.","commands":{"allow":["fetch"],"deny":[]}},"allow-fetch-cancel":{"identifier":"allow-fetch-cancel","description":"Enables the fetch_cancel command without any pre-configured scope.","commands":{"allow":["fetch_cancel"],"deny":[]}},"allow-fetch-read-body":{"identifier":"allow-fetch-read-body","description":"Enables the fetch_read_body command without any pre-configured scope.","commands":{"allow":["fetch_read_body"],"deny":[]}},"allow-fetch-send":{"identifier":"allow-fetch-send","description":"Enables the fetch_send command without any pre-configured scope.","commands":{"allow":["fetch_send"],"deny":[]}},"deny-fetch":{"identifier":"deny-fetch","description":"Denies the fetch command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch"]}},"deny-fetch-cancel":{"identifier":"deny-fetch-cancel","description":"Denies the fetch_cancel command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_cancel"]}},"deny-fetch-read-body":{"identifier":"deny-fetch-read-body","description":"Denies the fetch_read_body command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_read_body"]}},"deny-fetch-send":{"identifier":"deny-fetch-send","description":"Denies the fetch_send command without any pre-configured scope.","commands":{"allow":[],"deny":["fetch_send"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"},{"properties":{"url":{"description":"A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"","type":"string"}},"required":["url"],"type":"object"}],"description":"HTTP scope entry.","title":"HttpScopeEntry"}},"process":{"default_permission":{"identifier":"default","description":"This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n","permissions":["allow-exit","allow-restart"]},"permissions":{"allow-exit":{"identifier":"allow-exit","description":"Enables the exit command without any pre-configured scope.","commands":{"allow":["exit"],"deny":[]}},"allow-restart":{"identifier":"allow-restart","description":"Enables the restart command without any pre-configured scope.","commands":{"allow":["restart"],"deny":[]}},"deny-exit":{"identifier":"deny-exit","description":"Denies the exit command without any pre-configured scope.","commands":{"allow":[],"deny":["exit"]}},"deny-restart":{"identifier":"deny-restart","description":"Denies the restart command without any pre-configured scope.","commands":{"allow":[],"deny":["restart"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"}},"required":["cmd","name"],"type":"object"},{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["name","sidecar"],"type":"object"}],"definitions":{"ShellScopeEntryAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}}}
+894
-361
src-tauri/gen/schemas/desktop-schema.json
+894
-361
src-tauri/gen/schemas/desktop-schema.json
···
37
],
38
"definitions": {
39
"Capability": {
40
-
"description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```",
41
"type": "object",
42
"required": [
43
"identifier",
···
49
"type": "string"
50
},
51
"description": {
52
-
"description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.",
53
"default": "",
54
"type": "string"
55
},
···
70
"type": "boolean"
71
},
72
"windows": {
73
-
"description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
74
"type": "array",
75
"items": {
76
"type": "string"
77
}
78
},
79
"webviews": {
80
-
"description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
81
"type": "array",
82
"items": {
83
"type": "string"
84
}
85
},
86
"permissions": {
87
-
"description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```",
88
"type": "array",
89
"items": {
90
"$ref": "#/definitions/PermissionEntry"
···
140
"identifier": {
141
"anyOf": [
142
{
143
-
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n",
144
"type": "string",
145
-
"const": "http:default"
146
},
147
{
148
"description": "Enables the fetch command without any pre-configured scope.",
149
"type": "string",
150
-
"const": "http:allow-fetch"
151
},
152
{
153
"description": "Enables the fetch_cancel command without any pre-configured scope.",
154
"type": "string",
155
-
"const": "http:allow-fetch-cancel"
156
},
157
{
158
"description": "Enables the fetch_read_body command without any pre-configured scope.",
159
"type": "string",
160
-
"const": "http:allow-fetch-read-body"
161
},
162
{
163
"description": "Enables the fetch_send command without any pre-configured scope.",
164
"type": "string",
165
-
"const": "http:allow-fetch-send"
166
},
167
{
168
"description": "Denies the fetch command without any pre-configured scope.",
169
"type": "string",
170
-
"const": "http:deny-fetch"
171
},
172
{
173
"description": "Denies the fetch_cancel command without any pre-configured scope.",
174
"type": "string",
175
-
"const": "http:deny-fetch-cancel"
176
},
177
{
178
"description": "Denies the fetch_read_body command without any pre-configured scope.",
179
"type": "string",
180
-
"const": "http:deny-fetch-read-body"
181
},
182
{
183
"description": "Denies the fetch_send command without any pre-configured scope.",
184
"type": "string",
185
-
"const": "http:deny-fetch-send"
186
}
187
]
188
}
···
257
"identifier": {
258
"anyOf": [
259
{
260
-
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n",
261
"type": "string",
262
-
"const": "shell:default"
263
},
264
{
265
"description": "Enables the execute command without any pre-configured scope.",
266
"type": "string",
267
-
"const": "shell:allow-execute"
268
},
269
{
270
"description": "Enables the kill command without any pre-configured scope.",
271
"type": "string",
272
-
"const": "shell:allow-kill"
273
},
274
{
275
"description": "Enables the open command without any pre-configured scope.",
276
"type": "string",
277
-
"const": "shell:allow-open"
278
},
279
{
280
"description": "Enables the spawn command without any pre-configured scope.",
281
"type": "string",
282
-
"const": "shell:allow-spawn"
283
},
284
{
285
"description": "Enables the stdin_write command without any pre-configured scope.",
286
"type": "string",
287
-
"const": "shell:allow-stdin-write"
288
},
289
{
290
"description": "Denies the execute command without any pre-configured scope.",
291
"type": "string",
292
-
"const": "shell:deny-execute"
293
},
294
{
295
"description": "Denies the kill command without any pre-configured scope.",
296
"type": "string",
297
-
"const": "shell:deny-kill"
298
},
299
{
300
"description": "Denies the open command without any pre-configured scope.",
301
"type": "string",
302
-
"const": "shell:deny-open"
303
},
304
{
305
"description": "Denies the spawn command without any pre-configured scope.",
306
"type": "string",
307
-
"const": "shell:deny-spawn"
308
},
309
{
310
"description": "Denies the stdin_write command without any pre-configured scope.",
311
"type": "string",
312
-
"const": "shell:deny-stdin-write"
313
}
314
]
315
}
···
493
"description": "Permission identifier",
494
"oneOf": [
495
{
496
-
"description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n",
497
"type": "string",
498
-
"const": "core:default"
499
},
500
{
501
-
"description": "Default permissions for the plugin.",
502
"type": "string",
503
-
"const": "core:app:default"
504
},
505
{
506
"description": "Enables the app_hide command without any pre-configured scope.",
507
"type": "string",
508
-
"const": "core:app:allow-app-hide"
509
},
510
{
511
"description": "Enables the app_show command without any pre-configured scope.",
512
"type": "string",
513
-
"const": "core:app:allow-app-show"
514
},
515
{
516
"description": "Enables the default_window_icon command without any pre-configured scope.",
517
"type": "string",
518
-
"const": "core:app:allow-default-window-icon"
519
},
520
{
521
"description": "Enables the name command without any pre-configured scope.",
522
"type": "string",
523
-
"const": "core:app:allow-name"
524
},
525
{
526
"description": "Enables the set_app_theme command without any pre-configured scope.",
527
"type": "string",
528
-
"const": "core:app:allow-set-app-theme"
529
},
530
{
531
"description": "Enables the tauri_version command without any pre-configured scope.",
532
"type": "string",
533
-
"const": "core:app:allow-tauri-version"
534
},
535
{
536
"description": "Enables the version command without any pre-configured scope.",
537
"type": "string",
538
-
"const": "core:app:allow-version"
539
},
540
{
541
"description": "Denies the app_hide command without any pre-configured scope.",
542
"type": "string",
543
-
"const": "core:app:deny-app-hide"
544
},
545
{
546
"description": "Denies the app_show command without any pre-configured scope.",
547
"type": "string",
548
-
"const": "core:app:deny-app-show"
549
},
550
{
551
"description": "Denies the default_window_icon command without any pre-configured scope.",
552
"type": "string",
553
-
"const": "core:app:deny-default-window-icon"
554
},
555
{
556
"description": "Denies the name command without any pre-configured scope.",
557
"type": "string",
558
-
"const": "core:app:deny-name"
559
},
560
{
561
"description": "Denies the set_app_theme command without any pre-configured scope.",
562
"type": "string",
563
-
"const": "core:app:deny-set-app-theme"
564
},
565
{
566
"description": "Denies the tauri_version command without any pre-configured scope.",
567
"type": "string",
568
-
"const": "core:app:deny-tauri-version"
569
},
570
{
571
"description": "Denies the version command without any pre-configured scope.",
572
"type": "string",
573
-
"const": "core:app:deny-version"
574
},
575
{
576
-
"description": "Default permissions for the plugin.",
577
"type": "string",
578
-
"const": "core:event:default"
579
},
580
{
581
"description": "Enables the emit command without any pre-configured scope.",
582
"type": "string",
583
-
"const": "core:event:allow-emit"
584
},
585
{
586
"description": "Enables the emit_to command without any pre-configured scope.",
587
"type": "string",
588
-
"const": "core:event:allow-emit-to"
589
},
590
{
591
"description": "Enables the listen command without any pre-configured scope.",
592
"type": "string",
593
-
"const": "core:event:allow-listen"
594
},
595
{
596
"description": "Enables the unlisten command without any pre-configured scope.",
597
"type": "string",
598
-
"const": "core:event:allow-unlisten"
599
},
600
{
601
"description": "Denies the emit command without any pre-configured scope.",
602
"type": "string",
603
-
"const": "core:event:deny-emit"
604
},
605
{
606
"description": "Denies the emit_to command without any pre-configured scope.",
607
"type": "string",
608
-
"const": "core:event:deny-emit-to"
609
},
610
{
611
"description": "Denies the listen command without any pre-configured scope.",
612
"type": "string",
613
-
"const": "core:event:deny-listen"
614
},
615
{
616
"description": "Denies the unlisten command without any pre-configured scope.",
617
"type": "string",
618
-
"const": "core:event:deny-unlisten"
619
},
620
{
621
-
"description": "Default permissions for the plugin.",
622
"type": "string",
623
-
"const": "core:image:default"
624
},
625
{
626
"description": "Enables the from_bytes command without any pre-configured scope.",
627
"type": "string",
628
-
"const": "core:image:allow-from-bytes"
629
},
630
{
631
"description": "Enables the from_path command without any pre-configured scope.",
632
"type": "string",
633
-
"const": "core:image:allow-from-path"
634
},
635
{
636
"description": "Enables the new command without any pre-configured scope.",
637
"type": "string",
638
-
"const": "core:image:allow-new"
639
},
640
{
641
"description": "Enables the rgba command without any pre-configured scope.",
642
"type": "string",
643
-
"const": "core:image:allow-rgba"
644
},
645
{
646
"description": "Enables the size command without any pre-configured scope.",
647
"type": "string",
648
-
"const": "core:image:allow-size"
649
},
650
{
651
"description": "Denies the from_bytes command without any pre-configured scope.",
652
"type": "string",
653
-
"const": "core:image:deny-from-bytes"
654
},
655
{
656
"description": "Denies the from_path command without any pre-configured scope.",
657
"type": "string",
658
-
"const": "core:image:deny-from-path"
659
},
660
{
661
"description": "Denies the new command without any pre-configured scope.",
662
"type": "string",
663
-
"const": "core:image:deny-new"
664
},
665
{
666
"description": "Denies the rgba command without any pre-configured scope.",
667
"type": "string",
668
-
"const": "core:image:deny-rgba"
669
},
670
{
671
"description": "Denies the size command without any pre-configured scope.",
672
"type": "string",
673
-
"const": "core:image:deny-size"
674
},
675
{
676
-
"description": "Default permissions for the plugin.",
677
"type": "string",
678
-
"const": "core:menu:default"
679
},
680
{
681
"description": "Enables the append command without any pre-configured scope.",
682
"type": "string",
683
-
"const": "core:menu:allow-append"
684
},
685
{
686
"description": "Enables the create_default command without any pre-configured scope.",
687
"type": "string",
688
-
"const": "core:menu:allow-create-default"
689
},
690
{
691
"description": "Enables the get command without any pre-configured scope.",
692
"type": "string",
693
-
"const": "core:menu:allow-get"
694
},
695
{
696
"description": "Enables the insert command without any pre-configured scope.",
697
"type": "string",
698
-
"const": "core:menu:allow-insert"
699
},
700
{
701
"description": "Enables the is_checked command without any pre-configured scope.",
702
"type": "string",
703
-
"const": "core:menu:allow-is-checked"
704
},
705
{
706
"description": "Enables the is_enabled command without any pre-configured scope.",
707
"type": "string",
708
-
"const": "core:menu:allow-is-enabled"
709
},
710
{
711
"description": "Enables the items command without any pre-configured scope.",
712
"type": "string",
713
-
"const": "core:menu:allow-items"
714
},
715
{
716
"description": "Enables the new command without any pre-configured scope.",
717
"type": "string",
718
-
"const": "core:menu:allow-new"
719
},
720
{
721
"description": "Enables the popup command without any pre-configured scope.",
722
"type": "string",
723
-
"const": "core:menu:allow-popup"
724
},
725
{
726
"description": "Enables the prepend command without any pre-configured scope.",
727
"type": "string",
728
-
"const": "core:menu:allow-prepend"
729
},
730
{
731
"description": "Enables the remove command without any pre-configured scope.",
732
"type": "string",
733
-
"const": "core:menu:allow-remove"
734
},
735
{
736
"description": "Enables the remove_at command without any pre-configured scope.",
737
"type": "string",
738
-
"const": "core:menu:allow-remove-at"
739
},
740
{
741
"description": "Enables the set_accelerator command without any pre-configured scope.",
742
"type": "string",
743
-
"const": "core:menu:allow-set-accelerator"
744
},
745
{
746
"description": "Enables the set_as_app_menu command without any pre-configured scope.",
747
"type": "string",
748
-
"const": "core:menu:allow-set-as-app-menu"
749
},
750
{
751
"description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.",
752
"type": "string",
753
-
"const": "core:menu:allow-set-as-help-menu-for-nsapp"
754
},
755
{
756
"description": "Enables the set_as_window_menu command without any pre-configured scope.",
757
"type": "string",
758
-
"const": "core:menu:allow-set-as-window-menu"
759
},
760
{
761
"description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
762
"type": "string",
763
-
"const": "core:menu:allow-set-as-windows-menu-for-nsapp"
764
},
765
{
766
"description": "Enables the set_checked command without any pre-configured scope.",
767
"type": "string",
768
-
"const": "core:menu:allow-set-checked"
769
},
770
{
771
"description": "Enables the set_enabled command without any pre-configured scope.",
772
"type": "string",
773
-
"const": "core:menu:allow-set-enabled"
774
},
775
{
776
"description": "Enables the set_icon command without any pre-configured scope.",
777
"type": "string",
778
-
"const": "core:menu:allow-set-icon"
779
},
780
{
781
"description": "Enables the set_text command without any pre-configured scope.",
782
"type": "string",
783
-
"const": "core:menu:allow-set-text"
784
},
785
{
786
"description": "Enables the text command without any pre-configured scope.",
787
"type": "string",
788
-
"const": "core:menu:allow-text"
789
},
790
{
791
"description": "Denies the append command without any pre-configured scope.",
792
"type": "string",
793
-
"const": "core:menu:deny-append"
794
},
795
{
796
"description": "Denies the create_default command without any pre-configured scope.",
797
"type": "string",
798
-
"const": "core:menu:deny-create-default"
799
},
800
{
801
"description": "Denies the get command without any pre-configured scope.",
802
"type": "string",
803
-
"const": "core:menu:deny-get"
804
},
805
{
806
"description": "Denies the insert command without any pre-configured scope.",
807
"type": "string",
808
-
"const": "core:menu:deny-insert"
809
},
810
{
811
"description": "Denies the is_checked command without any pre-configured scope.",
812
"type": "string",
813
-
"const": "core:menu:deny-is-checked"
814
},
815
{
816
"description": "Denies the is_enabled command without any pre-configured scope.",
817
"type": "string",
818
-
"const": "core:menu:deny-is-enabled"
819
},
820
{
821
"description": "Denies the items command without any pre-configured scope.",
822
"type": "string",
823
-
"const": "core:menu:deny-items"
824
},
825
{
826
"description": "Denies the new command without any pre-configured scope.",
827
"type": "string",
828
-
"const": "core:menu:deny-new"
829
},
830
{
831
"description": "Denies the popup command without any pre-configured scope.",
832
"type": "string",
833
-
"const": "core:menu:deny-popup"
834
},
835
{
836
"description": "Denies the prepend command without any pre-configured scope.",
837
"type": "string",
838
-
"const": "core:menu:deny-prepend"
839
},
840
{
841
"description": "Denies the remove command without any pre-configured scope.",
842
"type": "string",
843
-
"const": "core:menu:deny-remove"
844
},
845
{
846
"description": "Denies the remove_at command without any pre-configured scope.",
847
"type": "string",
848
-
"const": "core:menu:deny-remove-at"
849
},
850
{
851
"description": "Denies the set_accelerator command without any pre-configured scope.",
852
"type": "string",
853
-
"const": "core:menu:deny-set-accelerator"
854
},
855
{
856
"description": "Denies the set_as_app_menu command without any pre-configured scope.",
857
"type": "string",
858
-
"const": "core:menu:deny-set-as-app-menu"
859
},
860
{
861
"description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.",
862
"type": "string",
863
-
"const": "core:menu:deny-set-as-help-menu-for-nsapp"
864
},
865
{
866
"description": "Denies the set_as_window_menu command without any pre-configured scope.",
867
"type": "string",
868
-
"const": "core:menu:deny-set-as-window-menu"
869
},
870
{
871
"description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
872
"type": "string",
873
-
"const": "core:menu:deny-set-as-windows-menu-for-nsapp"
874
},
875
{
876
"description": "Denies the set_checked command without any pre-configured scope.",
877
"type": "string",
878
-
"const": "core:menu:deny-set-checked"
879
},
880
{
881
"description": "Denies the set_enabled command without any pre-configured scope.",
882
"type": "string",
883
-
"const": "core:menu:deny-set-enabled"
884
},
885
{
886
"description": "Denies the set_icon command without any pre-configured scope.",
887
"type": "string",
888
-
"const": "core:menu:deny-set-icon"
889
},
890
{
891
"description": "Denies the set_text command without any pre-configured scope.",
892
"type": "string",
893
-
"const": "core:menu:deny-set-text"
894
},
895
{
896
"description": "Denies the text command without any pre-configured scope.",
897
"type": "string",
898
-
"const": "core:menu:deny-text"
899
},
900
{
901
-
"description": "Default permissions for the plugin.",
902
"type": "string",
903
-
"const": "core:path:default"
904
},
905
{
906
"description": "Enables the basename command without any pre-configured scope.",
907
"type": "string",
908
-
"const": "core:path:allow-basename"
909
},
910
{
911
"description": "Enables the dirname command without any pre-configured scope.",
912
"type": "string",
913
-
"const": "core:path:allow-dirname"
914
},
915
{
916
"description": "Enables the extname command without any pre-configured scope.",
917
"type": "string",
918
-
"const": "core:path:allow-extname"
919
},
920
{
921
"description": "Enables the is_absolute command without any pre-configured scope.",
922
"type": "string",
923
-
"const": "core:path:allow-is-absolute"
924
},
925
{
926
"description": "Enables the join command without any pre-configured scope.",
927
"type": "string",
928
-
"const": "core:path:allow-join"
929
},
930
{
931
"description": "Enables the normalize command without any pre-configured scope.",
932
"type": "string",
933
-
"const": "core:path:allow-normalize"
934
},
935
{
936
"description": "Enables the resolve command without any pre-configured scope.",
937
"type": "string",
938
-
"const": "core:path:allow-resolve"
939
},
940
{
941
"description": "Enables the resolve_directory command without any pre-configured scope.",
942
"type": "string",
943
-
"const": "core:path:allow-resolve-directory"
944
},
945
{
946
"description": "Denies the basename command without any pre-configured scope.",
947
"type": "string",
948
-
"const": "core:path:deny-basename"
949
},
950
{
951
"description": "Denies the dirname command without any pre-configured scope.",
952
"type": "string",
953
-
"const": "core:path:deny-dirname"
954
},
955
{
956
"description": "Denies the extname command without any pre-configured scope.",
957
"type": "string",
958
-
"const": "core:path:deny-extname"
959
},
960
{
961
"description": "Denies the is_absolute command without any pre-configured scope.",
962
"type": "string",
963
-
"const": "core:path:deny-is-absolute"
964
},
965
{
966
"description": "Denies the join command without any pre-configured scope.",
967
"type": "string",
968
-
"const": "core:path:deny-join"
969
},
970
{
971
"description": "Denies the normalize command without any pre-configured scope.",
972
"type": "string",
973
-
"const": "core:path:deny-normalize"
974
},
975
{
976
"description": "Denies the resolve command without any pre-configured scope.",
977
"type": "string",
978
-
"const": "core:path:deny-resolve"
979
},
980
{
981
"description": "Denies the resolve_directory command without any pre-configured scope.",
982
"type": "string",
983
-
"const": "core:path:deny-resolve-directory"
984
},
985
{
986
-
"description": "Default permissions for the plugin.",
987
"type": "string",
988
-
"const": "core:resources:default"
989
},
990
{
991
"description": "Enables the close command without any pre-configured scope.",
992
"type": "string",
993
-
"const": "core:resources:allow-close"
994
},
995
{
996
"description": "Denies the close command without any pre-configured scope.",
997
"type": "string",
998
-
"const": "core:resources:deny-close"
999
},
1000
{
1001
-
"description": "Default permissions for the plugin.",
1002
"type": "string",
1003
-
"const": "core:tray:default"
1004
},
1005
{
1006
"description": "Enables the get_by_id command without any pre-configured scope.",
1007
"type": "string",
1008
-
"const": "core:tray:allow-get-by-id"
1009
},
1010
{
1011
"description": "Enables the new command without any pre-configured scope.",
1012
"type": "string",
1013
-
"const": "core:tray:allow-new"
1014
},
1015
{
1016
"description": "Enables the remove_by_id command without any pre-configured scope.",
1017
"type": "string",
1018
-
"const": "core:tray:allow-remove-by-id"
1019
},
1020
{
1021
"description": "Enables the set_icon command without any pre-configured scope.",
1022
"type": "string",
1023
-
"const": "core:tray:allow-set-icon"
1024
},
1025
{
1026
"description": "Enables the set_icon_as_template command without any pre-configured scope.",
1027
"type": "string",
1028
-
"const": "core:tray:allow-set-icon-as-template"
1029
},
1030
{
1031
"description": "Enables the set_menu command without any pre-configured scope.",
1032
"type": "string",
1033
-
"const": "core:tray:allow-set-menu"
1034
},
1035
{
1036
"description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.",
1037
"type": "string",
1038
-
"const": "core:tray:allow-set-show-menu-on-left-click"
1039
},
1040
{
1041
"description": "Enables the set_temp_dir_path command without any pre-configured scope.",
1042
"type": "string",
1043
-
"const": "core:tray:allow-set-temp-dir-path"
1044
},
1045
{
1046
"description": "Enables the set_title command without any pre-configured scope.",
1047
"type": "string",
1048
-
"const": "core:tray:allow-set-title"
1049
},
1050
{
1051
"description": "Enables the set_tooltip command without any pre-configured scope.",
1052
"type": "string",
1053
-
"const": "core:tray:allow-set-tooltip"
1054
},
1055
{
1056
"description": "Enables the set_visible command without any pre-configured scope.",
1057
"type": "string",
1058
-
"const": "core:tray:allow-set-visible"
1059
},
1060
{
1061
"description": "Denies the get_by_id command without any pre-configured scope.",
1062
"type": "string",
1063
-
"const": "core:tray:deny-get-by-id"
1064
},
1065
{
1066
"description": "Denies the new command without any pre-configured scope.",
1067
"type": "string",
1068
-
"const": "core:tray:deny-new"
1069
},
1070
{
1071
"description": "Denies the remove_by_id command without any pre-configured scope.",
1072
"type": "string",
1073
-
"const": "core:tray:deny-remove-by-id"
1074
},
1075
{
1076
"description": "Denies the set_icon command without any pre-configured scope.",
1077
"type": "string",
1078
-
"const": "core:tray:deny-set-icon"
1079
},
1080
{
1081
"description": "Denies the set_icon_as_template command without any pre-configured scope.",
1082
"type": "string",
1083
-
"const": "core:tray:deny-set-icon-as-template"
1084
},
1085
{
1086
"description": "Denies the set_menu command without any pre-configured scope.",
1087
"type": "string",
1088
-
"const": "core:tray:deny-set-menu"
1089
},
1090
{
1091
"description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.",
1092
"type": "string",
1093
-
"const": "core:tray:deny-set-show-menu-on-left-click"
1094
},
1095
{
1096
"description": "Denies the set_temp_dir_path command without any pre-configured scope.",
1097
"type": "string",
1098
-
"const": "core:tray:deny-set-temp-dir-path"
1099
},
1100
{
1101
"description": "Denies the set_title command without any pre-configured scope.",
1102
"type": "string",
1103
-
"const": "core:tray:deny-set-title"
1104
},
1105
{
1106
"description": "Denies the set_tooltip command without any pre-configured scope.",
1107
"type": "string",
1108
-
"const": "core:tray:deny-set-tooltip"
1109
},
1110
{
1111
"description": "Denies the set_visible command without any pre-configured scope.",
1112
"type": "string",
1113
-
"const": "core:tray:deny-set-visible"
1114
},
1115
{
1116
-
"description": "Default permissions for the plugin.",
1117
"type": "string",
1118
-
"const": "core:webview:default"
1119
},
1120
{
1121
"description": "Enables the clear_all_browsing_data command without any pre-configured scope.",
1122
"type": "string",
1123
-
"const": "core:webview:allow-clear-all-browsing-data"
1124
},
1125
{
1126
"description": "Enables the create_webview command without any pre-configured scope.",
1127
"type": "string",
1128
-
"const": "core:webview:allow-create-webview"
1129
},
1130
{
1131
"description": "Enables the create_webview_window command without any pre-configured scope.",
1132
"type": "string",
1133
-
"const": "core:webview:allow-create-webview-window"
1134
},
1135
{
1136
"description": "Enables the get_all_webviews command without any pre-configured scope.",
1137
"type": "string",
1138
-
"const": "core:webview:allow-get-all-webviews"
1139
},
1140
{
1141
"description": "Enables the internal_toggle_devtools command without any pre-configured scope.",
1142
"type": "string",
1143
-
"const": "core:webview:allow-internal-toggle-devtools"
1144
},
1145
{
1146
"description": "Enables the print command without any pre-configured scope.",
1147
"type": "string",
1148
-
"const": "core:webview:allow-print"
1149
},
1150
{
1151
"description": "Enables the reparent command without any pre-configured scope.",
1152
"type": "string",
1153
-
"const": "core:webview:allow-reparent"
1154
},
1155
{
1156
"description": "Enables the set_webview_focus command without any pre-configured scope.",
1157
"type": "string",
1158
-
"const": "core:webview:allow-set-webview-focus"
1159
},
1160
{
1161
"description": "Enables the set_webview_position command without any pre-configured scope.",
1162
"type": "string",
1163
-
"const": "core:webview:allow-set-webview-position"
1164
},
1165
{
1166
"description": "Enables the set_webview_size command without any pre-configured scope.",
1167
"type": "string",
1168
-
"const": "core:webview:allow-set-webview-size"
1169
},
1170
{
1171
"description": "Enables the set_webview_zoom command without any pre-configured scope.",
1172
"type": "string",
1173
-
"const": "core:webview:allow-set-webview-zoom"
1174
},
1175
{
1176
"description": "Enables the webview_close command without any pre-configured scope.",
1177
"type": "string",
1178
-
"const": "core:webview:allow-webview-close"
1179
},
1180
{
1181
"description": "Enables the webview_hide command without any pre-configured scope.",
1182
"type": "string",
1183
-
"const": "core:webview:allow-webview-hide"
1184
},
1185
{
1186
"description": "Enables the webview_position command without any pre-configured scope.",
1187
"type": "string",
1188
-
"const": "core:webview:allow-webview-position"
1189
},
1190
{
1191
"description": "Enables the webview_show command without any pre-configured scope.",
1192
"type": "string",
1193
-
"const": "core:webview:allow-webview-show"
1194
},
1195
{
1196
"description": "Enables the webview_size command without any pre-configured scope.",
1197
"type": "string",
1198
-
"const": "core:webview:allow-webview-size"
1199
},
1200
{
1201
"description": "Denies the clear_all_browsing_data command without any pre-configured scope.",
1202
"type": "string",
1203
-
"const": "core:webview:deny-clear-all-browsing-data"
1204
},
1205
{
1206
"description": "Denies the create_webview command without any pre-configured scope.",
1207
"type": "string",
1208
-
"const": "core:webview:deny-create-webview"
1209
},
1210
{
1211
"description": "Denies the create_webview_window command without any pre-configured scope.",
1212
"type": "string",
1213
-
"const": "core:webview:deny-create-webview-window"
1214
},
1215
{
1216
"description": "Denies the get_all_webviews command without any pre-configured scope.",
1217
"type": "string",
1218
-
"const": "core:webview:deny-get-all-webviews"
1219
},
1220
{
1221
"description": "Denies the internal_toggle_devtools command without any pre-configured scope.",
1222
"type": "string",
1223
-
"const": "core:webview:deny-internal-toggle-devtools"
1224
},
1225
{
1226
"description": "Denies the print command without any pre-configured scope.",
1227
"type": "string",
1228
-
"const": "core:webview:deny-print"
1229
},
1230
{
1231
"description": "Denies the reparent command without any pre-configured scope.",
1232
"type": "string",
1233
-
"const": "core:webview:deny-reparent"
1234
},
1235
{
1236
"description": "Denies the set_webview_focus command without any pre-configured scope.",
1237
"type": "string",
1238
-
"const": "core:webview:deny-set-webview-focus"
1239
},
1240
{
1241
"description": "Denies the set_webview_position command without any pre-configured scope.",
1242
"type": "string",
1243
-
"const": "core:webview:deny-set-webview-position"
1244
},
1245
{
1246
"description": "Denies the set_webview_size command without any pre-configured scope.",
1247
"type": "string",
1248
-
"const": "core:webview:deny-set-webview-size"
1249
},
1250
{
1251
"description": "Denies the set_webview_zoom command without any pre-configured scope.",
1252
"type": "string",
1253
-
"const": "core:webview:deny-set-webview-zoom"
1254
},
1255
{
1256
"description": "Denies the webview_close command without any pre-configured scope.",
1257
"type": "string",
1258
-
"const": "core:webview:deny-webview-close"
1259
},
1260
{
1261
"description": "Denies the webview_hide command without any pre-configured scope.",
1262
"type": "string",
1263
-
"const": "core:webview:deny-webview-hide"
1264
},
1265
{
1266
"description": "Denies the webview_position command without any pre-configured scope.",
1267
"type": "string",
1268
-
"const": "core:webview:deny-webview-position"
1269
},
1270
{
1271
"description": "Denies the webview_show command without any pre-configured scope.",
1272
"type": "string",
1273
-
"const": "core:webview:deny-webview-show"
1274
},
1275
{
1276
"description": "Denies the webview_size command without any pre-configured scope.",
1277
"type": "string",
1278
-
"const": "core:webview:deny-webview-size"
1279
},
1280
{
1281
-
"description": "Default permissions for the plugin.",
1282
"type": "string",
1283
-
"const": "core:window:default"
1284
},
1285
{
1286
"description": "Enables the available_monitors command without any pre-configured scope.",
1287
"type": "string",
1288
-
"const": "core:window:allow-available-monitors"
1289
},
1290
{
1291
"description": "Enables the center command without any pre-configured scope.",
1292
"type": "string",
1293
-
"const": "core:window:allow-center"
1294
},
1295
{
1296
"description": "Enables the close command without any pre-configured scope.",
1297
"type": "string",
1298
-
"const": "core:window:allow-close"
1299
},
1300
{
1301
"description": "Enables the create command without any pre-configured scope.",
1302
"type": "string",
1303
-
"const": "core:window:allow-create"
1304
},
1305
{
1306
"description": "Enables the current_monitor command without any pre-configured scope.",
1307
"type": "string",
1308
-
"const": "core:window:allow-current-monitor"
1309
},
1310
{
1311
"description": "Enables the cursor_position command without any pre-configured scope.",
1312
"type": "string",
1313
-
"const": "core:window:allow-cursor-position"
1314
},
1315
{
1316
"description": "Enables the destroy command without any pre-configured scope.",
1317
"type": "string",
1318
-
"const": "core:window:allow-destroy"
1319
},
1320
{
1321
"description": "Enables the get_all_windows command without any pre-configured scope.",
1322
"type": "string",
1323
-
"const": "core:window:allow-get-all-windows"
1324
},
1325
{
1326
"description": "Enables the hide command without any pre-configured scope.",
1327
"type": "string",
1328
-
"const": "core:window:allow-hide"
1329
},
1330
{
1331
"description": "Enables the inner_position command without any pre-configured scope.",
1332
"type": "string",
1333
-
"const": "core:window:allow-inner-position"
1334
},
1335
{
1336
"description": "Enables the inner_size command without any pre-configured scope.",
1337
"type": "string",
1338
-
"const": "core:window:allow-inner-size"
1339
},
1340
{
1341
"description": "Enables the internal_toggle_maximize command without any pre-configured scope.",
1342
"type": "string",
1343
-
"const": "core:window:allow-internal-toggle-maximize"
1344
},
1345
{
1346
"description": "Enables the is_closable command without any pre-configured scope.",
1347
"type": "string",
1348
-
"const": "core:window:allow-is-closable"
1349
},
1350
{
1351
"description": "Enables the is_decorated command without any pre-configured scope.",
1352
"type": "string",
1353
-
"const": "core:window:allow-is-decorated"
1354
},
1355
{
1356
"description": "Enables the is_enabled command without any pre-configured scope.",
1357
"type": "string",
1358
-
"const": "core:window:allow-is-enabled"
1359
},
1360
{
1361
"description": "Enables the is_focused command without any pre-configured scope.",
1362
"type": "string",
1363
-
"const": "core:window:allow-is-focused"
1364
},
1365
{
1366
"description": "Enables the is_fullscreen command without any pre-configured scope.",
1367
"type": "string",
1368
-
"const": "core:window:allow-is-fullscreen"
1369
},
1370
{
1371
"description": "Enables the is_maximizable command without any pre-configured scope.",
1372
"type": "string",
1373
-
"const": "core:window:allow-is-maximizable"
1374
},
1375
{
1376
"description": "Enables the is_maximized command without any pre-configured scope.",
1377
"type": "string",
1378
-
"const": "core:window:allow-is-maximized"
1379
},
1380
{
1381
"description": "Enables the is_minimizable command without any pre-configured scope.",
1382
"type": "string",
1383
-
"const": "core:window:allow-is-minimizable"
1384
},
1385
{
1386
"description": "Enables the is_minimized command without any pre-configured scope.",
1387
"type": "string",
1388
-
"const": "core:window:allow-is-minimized"
1389
},
1390
{
1391
"description": "Enables the is_resizable command without any pre-configured scope.",
1392
"type": "string",
1393
-
"const": "core:window:allow-is-resizable"
1394
},
1395
{
1396
"description": "Enables the is_visible command without any pre-configured scope.",
1397
"type": "string",
1398
-
"const": "core:window:allow-is-visible"
1399
},
1400
{
1401
"description": "Enables the maximize command without any pre-configured scope.",
1402
"type": "string",
1403
-
"const": "core:window:allow-maximize"
1404
},
1405
{
1406
"description": "Enables the minimize command without any pre-configured scope.",
1407
"type": "string",
1408
-
"const": "core:window:allow-minimize"
1409
},
1410
{
1411
"description": "Enables the monitor_from_point command without any pre-configured scope.",
1412
"type": "string",
1413
-
"const": "core:window:allow-monitor-from-point"
1414
},
1415
{
1416
"description": "Enables the outer_position command without any pre-configured scope.",
1417
"type": "string",
1418
-
"const": "core:window:allow-outer-position"
1419
},
1420
{
1421
"description": "Enables the outer_size command without any pre-configured scope.",
1422
"type": "string",
1423
-
"const": "core:window:allow-outer-size"
1424
},
1425
{
1426
"description": "Enables the primary_monitor command without any pre-configured scope.",
1427
"type": "string",
1428
-
"const": "core:window:allow-primary-monitor"
1429
},
1430
{
1431
"description": "Enables the request_user_attention command without any pre-configured scope.",
1432
"type": "string",
1433
-
"const": "core:window:allow-request-user-attention"
1434
},
1435
{
1436
"description": "Enables the scale_factor command without any pre-configured scope.",
1437
"type": "string",
1438
-
"const": "core:window:allow-scale-factor"
1439
},
1440
{
1441
"description": "Enables the set_always_on_bottom command without any pre-configured scope.",
1442
"type": "string",
1443
-
"const": "core:window:allow-set-always-on-bottom"
1444
},
1445
{
1446
"description": "Enables the set_always_on_top command without any pre-configured scope.",
1447
"type": "string",
1448
-
"const": "core:window:allow-set-always-on-top"
1449
},
1450
{
1451
"description": "Enables the set_closable command without any pre-configured scope.",
1452
"type": "string",
1453
-
"const": "core:window:allow-set-closable"
1454
},
1455
{
1456
"description": "Enables the set_content_protected command without any pre-configured scope.",
1457
"type": "string",
1458
-
"const": "core:window:allow-set-content-protected"
1459
},
1460
{
1461
"description": "Enables the set_cursor_grab command without any pre-configured scope.",
1462
"type": "string",
1463
-
"const": "core:window:allow-set-cursor-grab"
1464
},
1465
{
1466
"description": "Enables the set_cursor_icon command without any pre-configured scope.",
1467
"type": "string",
1468
-
"const": "core:window:allow-set-cursor-icon"
1469
},
1470
{
1471
"description": "Enables the set_cursor_position command without any pre-configured scope.",
1472
"type": "string",
1473
-
"const": "core:window:allow-set-cursor-position"
1474
},
1475
{
1476
"description": "Enables the set_cursor_visible command without any pre-configured scope.",
1477
"type": "string",
1478
-
"const": "core:window:allow-set-cursor-visible"
1479
},
1480
{
1481
"description": "Enables the set_decorations command without any pre-configured scope.",
1482
"type": "string",
1483
-
"const": "core:window:allow-set-decorations"
1484
},
1485
{
1486
"description": "Enables the set_effects command without any pre-configured scope.",
1487
"type": "string",
1488
-
"const": "core:window:allow-set-effects"
1489
},
1490
{
1491
"description": "Enables the set_enabled command without any pre-configured scope.",
1492
"type": "string",
1493
-
"const": "core:window:allow-set-enabled"
1494
},
1495
{
1496
"description": "Enables the set_focus command without any pre-configured scope.",
1497
"type": "string",
1498
-
"const": "core:window:allow-set-focus"
1499
},
1500
{
1501
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1502
"type": "string",
1503
-
"const": "core:window:allow-set-fullscreen"
1504
},
1505
{
1506
"description": "Enables the set_icon command without any pre-configured scope.",
1507
"type": "string",
1508
-
"const": "core:window:allow-set-icon"
1509
},
1510
{
1511
"description": "Enables the set_ignore_cursor_events command without any pre-configured scope.",
1512
"type": "string",
1513
-
"const": "core:window:allow-set-ignore-cursor-events"
1514
},
1515
{
1516
"description": "Enables the set_max_size command without any pre-configured scope.",
1517
"type": "string",
1518
-
"const": "core:window:allow-set-max-size"
1519
},
1520
{
1521
"description": "Enables the set_maximizable command without any pre-configured scope.",
1522
"type": "string",
1523
-
"const": "core:window:allow-set-maximizable"
1524
},
1525
{
1526
"description": "Enables the set_min_size command without any pre-configured scope.",
1527
"type": "string",
1528
-
"const": "core:window:allow-set-min-size"
1529
},
1530
{
1531
"description": "Enables the set_minimizable command without any pre-configured scope.",
1532
"type": "string",
1533
-
"const": "core:window:allow-set-minimizable"
1534
},
1535
{
1536
"description": "Enables the set_position command without any pre-configured scope.",
1537
"type": "string",
1538
-
"const": "core:window:allow-set-position"
1539
},
1540
{
1541
"description": "Enables the set_progress_bar command without any pre-configured scope.",
1542
"type": "string",
1543
-
"const": "core:window:allow-set-progress-bar"
1544
},
1545
{
1546
"description": "Enables the set_resizable command without any pre-configured scope.",
1547
"type": "string",
1548
-
"const": "core:window:allow-set-resizable"
1549
},
1550
{
1551
"description": "Enables the set_shadow command without any pre-configured scope.",
1552
"type": "string",
1553
-
"const": "core:window:allow-set-shadow"
1554
},
1555
{
1556
"description": "Enables the set_size command without any pre-configured scope.",
1557
"type": "string",
1558
-
"const": "core:window:allow-set-size"
1559
},
1560
{
1561
"description": "Enables the set_size_constraints command without any pre-configured scope.",
1562
"type": "string",
1563
-
"const": "core:window:allow-set-size-constraints"
1564
},
1565
{
1566
"description": "Enables the set_skip_taskbar command without any pre-configured scope.",
1567
"type": "string",
1568
-
"const": "core:window:allow-set-skip-taskbar"
1569
},
1570
{
1571
"description": "Enables the set_theme command without any pre-configured scope.",
1572
"type": "string",
1573
-
"const": "core:window:allow-set-theme"
1574
},
1575
{
1576
"description": "Enables the set_title command without any pre-configured scope.",
1577
"type": "string",
1578
-
"const": "core:window:allow-set-title"
1579
},
1580
{
1581
"description": "Enables the set_title_bar_style command without any pre-configured scope.",
1582
"type": "string",
1583
-
"const": "core:window:allow-set-title-bar-style"
1584
},
1585
{
1586
"description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.",
1587
"type": "string",
1588
-
"const": "core:window:allow-set-visible-on-all-workspaces"
1589
},
1590
{
1591
"description": "Enables the show command without any pre-configured scope.",
1592
"type": "string",
1593
-
"const": "core:window:allow-show"
1594
},
1595
{
1596
"description": "Enables the start_dragging command without any pre-configured scope.",
1597
"type": "string",
1598
-
"const": "core:window:allow-start-dragging"
1599
},
1600
{
1601
"description": "Enables the start_resize_dragging command without any pre-configured scope.",
1602
"type": "string",
1603
-
"const": "core:window:allow-start-resize-dragging"
1604
},
1605
{
1606
"description": "Enables the theme command without any pre-configured scope.",
1607
"type": "string",
1608
-
"const": "core:window:allow-theme"
1609
},
1610
{
1611
"description": "Enables the title command without any pre-configured scope.",
1612
"type": "string",
1613
-
"const": "core:window:allow-title"
1614
},
1615
{
1616
"description": "Enables the toggle_maximize command without any pre-configured scope.",
1617
"type": "string",
1618
-
"const": "core:window:allow-toggle-maximize"
1619
},
1620
{
1621
"description": "Enables the unmaximize command without any pre-configured scope.",
1622
"type": "string",
1623
-
"const": "core:window:allow-unmaximize"
1624
},
1625
{
1626
"description": "Enables the unminimize command without any pre-configured scope.",
1627
"type": "string",
1628
-
"const": "core:window:allow-unminimize"
1629
},
1630
{
1631
"description": "Denies the available_monitors command without any pre-configured scope.",
1632
"type": "string",
1633
-
"const": "core:window:deny-available-monitors"
1634
},
1635
{
1636
"description": "Denies the center command without any pre-configured scope.",
1637
"type": "string",
1638
-
"const": "core:window:deny-center"
1639
},
1640
{
1641
"description": "Denies the close command without any pre-configured scope.",
1642
"type": "string",
1643
-
"const": "core:window:deny-close"
1644
},
1645
{
1646
"description": "Denies the create command without any pre-configured scope.",
1647
"type": "string",
1648
-
"const": "core:window:deny-create"
1649
},
1650
{
1651
"description": "Denies the current_monitor command without any pre-configured scope.",
1652
"type": "string",
1653
-
"const": "core:window:deny-current-monitor"
1654
},
1655
{
1656
"description": "Denies the cursor_position command without any pre-configured scope.",
1657
"type": "string",
1658
-
"const": "core:window:deny-cursor-position"
1659
},
1660
{
1661
"description": "Denies the destroy command without any pre-configured scope.",
1662
"type": "string",
1663
-
"const": "core:window:deny-destroy"
1664
},
1665
{
1666
"description": "Denies the get_all_windows command without any pre-configured scope.",
1667
"type": "string",
1668
-
"const": "core:window:deny-get-all-windows"
1669
},
1670
{
1671
"description": "Denies the hide command without any pre-configured scope.",
1672
"type": "string",
1673
-
"const": "core:window:deny-hide"
1674
},
1675
{
1676
"description": "Denies the inner_position command without any pre-configured scope.",
1677
"type": "string",
1678
-
"const": "core:window:deny-inner-position"
1679
},
1680
{
1681
"description": "Denies the inner_size command without any pre-configured scope.",
1682
"type": "string",
1683
-
"const": "core:window:deny-inner-size"
1684
},
1685
{
1686
"description": "Denies the internal_toggle_maximize command without any pre-configured scope.",
1687
"type": "string",
1688
-
"const": "core:window:deny-internal-toggle-maximize"
1689
},
1690
{
1691
"description": "Denies the is_closable command without any pre-configured scope.",
1692
"type": "string",
1693
-
"const": "core:window:deny-is-closable"
1694
},
1695
{
1696
"description": "Denies the is_decorated command without any pre-configured scope.",
1697
"type": "string",
1698
-
"const": "core:window:deny-is-decorated"
1699
},
1700
{
1701
"description": "Denies the is_enabled command without any pre-configured scope.",
1702
"type": "string",
1703
-
"const": "core:window:deny-is-enabled"
1704
},
1705
{
1706
"description": "Denies the is_focused command without any pre-configured scope.",
1707
"type": "string",
1708
-
"const": "core:window:deny-is-focused"
1709
},
1710
{
1711
"description": "Denies the is_fullscreen command without any pre-configured scope.",
1712
"type": "string",
1713
-
"const": "core:window:deny-is-fullscreen"
1714
},
1715
{
1716
"description": "Denies the is_maximizable command without any pre-configured scope.",
1717
"type": "string",
1718
-
"const": "core:window:deny-is-maximizable"
1719
},
1720
{
1721
"description": "Denies the is_maximized command without any pre-configured scope.",
1722
"type": "string",
1723
-
"const": "core:window:deny-is-maximized"
1724
},
1725
{
1726
"description": "Denies the is_minimizable command without any pre-configured scope.",
1727
"type": "string",
1728
-
"const": "core:window:deny-is-minimizable"
1729
},
1730
{
1731
"description": "Denies the is_minimized command without any pre-configured scope.",
1732
"type": "string",
1733
-
"const": "core:window:deny-is-minimized"
1734
},
1735
{
1736
"description": "Denies the is_resizable command without any pre-configured scope.",
1737
"type": "string",
1738
-
"const": "core:window:deny-is-resizable"
1739
},
1740
{
1741
"description": "Denies the is_visible command without any pre-configured scope.",
1742
"type": "string",
1743
-
"const": "core:window:deny-is-visible"
1744
},
1745
{
1746
"description": "Denies the maximize command without any pre-configured scope.",
1747
"type": "string",
1748
-
"const": "core:window:deny-maximize"
1749
},
1750
{
1751
"description": "Denies the minimize command without any pre-configured scope.",
1752
"type": "string",
1753
-
"const": "core:window:deny-minimize"
1754
},
1755
{
1756
"description": "Denies the monitor_from_point command without any pre-configured scope.",
1757
"type": "string",
1758
-
"const": "core:window:deny-monitor-from-point"
1759
},
1760
{
1761
"description": "Denies the outer_position command without any pre-configured scope.",
1762
"type": "string",
1763
-
"const": "core:window:deny-outer-position"
1764
},
1765
{
1766
"description": "Denies the outer_size command without any pre-configured scope.",
1767
"type": "string",
1768
-
"const": "core:window:deny-outer-size"
1769
},
1770
{
1771
"description": "Denies the primary_monitor command without any pre-configured scope.",
1772
"type": "string",
1773
-
"const": "core:window:deny-primary-monitor"
1774
},
1775
{
1776
"description": "Denies the request_user_attention command without any pre-configured scope.",
1777
"type": "string",
1778
-
"const": "core:window:deny-request-user-attention"
1779
},
1780
{
1781
"description": "Denies the scale_factor command without any pre-configured scope.",
1782
"type": "string",
1783
-
"const": "core:window:deny-scale-factor"
1784
},
1785
{
1786
"description": "Denies the set_always_on_bottom command without any pre-configured scope.",
1787
"type": "string",
1788
-
"const": "core:window:deny-set-always-on-bottom"
1789
},
1790
{
1791
"description": "Denies the set_always_on_top command without any pre-configured scope.",
1792
"type": "string",
1793
-
"const": "core:window:deny-set-always-on-top"
1794
},
1795
{
1796
"description": "Denies the set_closable command without any pre-configured scope.",
1797
"type": "string",
1798
-
"const": "core:window:deny-set-closable"
1799
},
1800
{
1801
"description": "Denies the set_content_protected command without any pre-configured scope.",
1802
"type": "string",
1803
-
"const": "core:window:deny-set-content-protected"
1804
},
1805
{
1806
"description": "Denies the set_cursor_grab command without any pre-configured scope.",
1807
"type": "string",
1808
-
"const": "core:window:deny-set-cursor-grab"
1809
},
1810
{
1811
"description": "Denies the set_cursor_icon command without any pre-configured scope.",
1812
"type": "string",
1813
-
"const": "core:window:deny-set-cursor-icon"
1814
},
1815
{
1816
"description": "Denies the set_cursor_position command without any pre-configured scope.",
1817
"type": "string",
1818
-
"const": "core:window:deny-set-cursor-position"
1819
},
1820
{
1821
"description": "Denies the set_cursor_visible command without any pre-configured scope.",
1822
"type": "string",
1823
-
"const": "core:window:deny-set-cursor-visible"
1824
},
1825
{
1826
"description": "Denies the set_decorations command without any pre-configured scope.",
1827
"type": "string",
1828
-
"const": "core:window:deny-set-decorations"
1829
},
1830
{
1831
"description": "Denies the set_effects command without any pre-configured scope.",
1832
"type": "string",
1833
-
"const": "core:window:deny-set-effects"
1834
},
1835
{
1836
"description": "Denies the set_enabled command without any pre-configured scope.",
1837
"type": "string",
1838
-
"const": "core:window:deny-set-enabled"
1839
},
1840
{
1841
"description": "Denies the set_focus command without any pre-configured scope.",
1842
"type": "string",
1843
-
"const": "core:window:deny-set-focus"
1844
},
1845
{
1846
"description": "Denies the set_fullscreen command without any pre-configured scope.",
1847
"type": "string",
1848
-
"const": "core:window:deny-set-fullscreen"
1849
},
1850
{
1851
"description": "Denies the set_icon command without any pre-configured scope.",
1852
"type": "string",
1853
-
"const": "core:window:deny-set-icon"
1854
},
1855
{
1856
"description": "Denies the set_ignore_cursor_events command without any pre-configured scope.",
1857
"type": "string",
1858
-
"const": "core:window:deny-set-ignore-cursor-events"
1859
},
1860
{
1861
"description": "Denies the set_max_size command without any pre-configured scope.",
1862
"type": "string",
1863
-
"const": "core:window:deny-set-max-size"
1864
},
1865
{
1866
"description": "Denies the set_maximizable command without any pre-configured scope.",
1867
"type": "string",
1868
-
"const": "core:window:deny-set-maximizable"
1869
},
1870
{
1871
"description": "Denies the set_min_size command without any pre-configured scope.",
1872
"type": "string",
1873
-
"const": "core:window:deny-set-min-size"
1874
},
1875
{
1876
"description": "Denies the set_minimizable command without any pre-configured scope.",
1877
"type": "string",
1878
-
"const": "core:window:deny-set-minimizable"
1879
},
1880
{
1881
"description": "Denies the set_position command without any pre-configured scope.",
1882
"type": "string",
1883
-
"const": "core:window:deny-set-position"
1884
},
1885
{
1886
"description": "Denies the set_progress_bar command without any pre-configured scope.",
1887
"type": "string",
1888
-
"const": "core:window:deny-set-progress-bar"
1889
},
1890
{
1891
"description": "Denies the set_resizable command without any pre-configured scope.",
1892
"type": "string",
1893
-
"const": "core:window:deny-set-resizable"
1894
},
1895
{
1896
"description": "Denies the set_shadow command without any pre-configured scope.",
1897
"type": "string",
1898
-
"const": "core:window:deny-set-shadow"
1899
},
1900
{
1901
"description": "Denies the set_size command without any pre-configured scope.",
1902
"type": "string",
1903
-
"const": "core:window:deny-set-size"
1904
},
1905
{
1906
"description": "Denies the set_size_constraints command without any pre-configured scope.",
1907
"type": "string",
1908
-
"const": "core:window:deny-set-size-constraints"
1909
},
1910
{
1911
"description": "Denies the set_skip_taskbar command without any pre-configured scope.",
1912
"type": "string",
1913
-
"const": "core:window:deny-set-skip-taskbar"
1914
},
1915
{
1916
"description": "Denies the set_theme command without any pre-configured scope.",
1917
"type": "string",
1918
-
"const": "core:window:deny-set-theme"
1919
},
1920
{
1921
"description": "Denies the set_title command without any pre-configured scope.",
1922
"type": "string",
1923
-
"const": "core:window:deny-set-title"
1924
},
1925
{
1926
"description": "Denies the set_title_bar_style command without any pre-configured scope.",
1927
"type": "string",
1928
-
"const": "core:window:deny-set-title-bar-style"
1929
},
1930
{
1931
"description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.",
1932
"type": "string",
1933
-
"const": "core:window:deny-set-visible-on-all-workspaces"
1934
},
1935
{
1936
"description": "Denies the show command without any pre-configured scope.",
1937
"type": "string",
1938
-
"const": "core:window:deny-show"
1939
},
1940
{
1941
"description": "Denies the start_dragging command without any pre-configured scope.",
1942
"type": "string",
1943
-
"const": "core:window:deny-start-dragging"
1944
},
1945
{
1946
"description": "Denies the start_resize_dragging command without any pre-configured scope.",
1947
"type": "string",
1948
-
"const": "core:window:deny-start-resize-dragging"
1949
},
1950
{
1951
"description": "Denies the theme command without any pre-configured scope.",
1952
"type": "string",
1953
-
"const": "core:window:deny-theme"
1954
},
1955
{
1956
"description": "Denies the title command without any pre-configured scope.",
1957
"type": "string",
1958
-
"const": "core:window:deny-title"
1959
},
1960
{
1961
"description": "Denies the toggle_maximize command without any pre-configured scope.",
1962
"type": "string",
1963
-
"const": "core:window:deny-toggle-maximize"
1964
},
1965
{
1966
"description": "Denies the unmaximize command without any pre-configured scope.",
1967
"type": "string",
1968
-
"const": "core:window:deny-unmaximize"
1969
},
1970
{
1971
"description": "Denies the unminimize command without any pre-configured scope.",
1972
"type": "string",
1973
-
"const": "core:window:deny-unminimize"
1974
},
1975
{
1976
-
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n",
1977
"type": "string",
1978
-
"const": "http:default"
1979
},
1980
{
1981
"description": "Enables the fetch command without any pre-configured scope.",
1982
"type": "string",
1983
-
"const": "http:allow-fetch"
1984
},
1985
{
1986
"description": "Enables the fetch_cancel command without any pre-configured scope.",
1987
"type": "string",
1988
-
"const": "http:allow-fetch-cancel"
1989
},
1990
{
1991
"description": "Enables the fetch_read_body command without any pre-configured scope.",
1992
"type": "string",
1993
-
"const": "http:allow-fetch-read-body"
1994
},
1995
{
1996
"description": "Enables the fetch_send command without any pre-configured scope.",
1997
"type": "string",
1998
-
"const": "http:allow-fetch-send"
1999
},
2000
{
2001
"description": "Denies the fetch command without any pre-configured scope.",
2002
"type": "string",
2003
-
"const": "http:deny-fetch"
2004
},
2005
{
2006
"description": "Denies the fetch_cancel command without any pre-configured scope.",
2007
"type": "string",
2008
-
"const": "http:deny-fetch-cancel"
2009
},
2010
{
2011
"description": "Denies the fetch_read_body command without any pre-configured scope.",
2012
"type": "string",
2013
-
"const": "http:deny-fetch-read-body"
2014
},
2015
{
2016
"description": "Denies the fetch_send command without any pre-configured scope.",
2017
"type": "string",
2018
-
"const": "http:deny-fetch-send"
2019
},
2020
{
2021
-
"description": "This permission set configures which\nprocess feeatures are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n",
2022
"type": "string",
2023
-
"const": "process:default"
2024
},
2025
{
2026
"description": "Enables the exit command without any pre-configured scope.",
2027
"type": "string",
2028
-
"const": "process:allow-exit"
2029
},
2030
{
2031
"description": "Enables the restart command without any pre-configured scope.",
2032
"type": "string",
2033
-
"const": "process:allow-restart"
2034
},
2035
{
2036
"description": "Denies the exit command without any pre-configured scope.",
2037
"type": "string",
2038
-
"const": "process:deny-exit"
2039
},
2040
{
2041
"description": "Denies the restart command without any pre-configured scope.",
2042
"type": "string",
2043
-
"const": "process:deny-restart"
2044
},
2045
{
2046
-
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n",
2047
"type": "string",
2048
-
"const": "shell:default"
2049
},
2050
{
2051
"description": "Enables the execute command without any pre-configured scope.",
2052
"type": "string",
2053
-
"const": "shell:allow-execute"
2054
},
2055
{
2056
"description": "Enables the kill command without any pre-configured scope.",
2057
"type": "string",
2058
-
"const": "shell:allow-kill"
2059
},
2060
{
2061
"description": "Enables the open command without any pre-configured scope.",
2062
"type": "string",
2063
-
"const": "shell:allow-open"
2064
},
2065
{
2066
"description": "Enables the spawn command without any pre-configured scope.",
2067
"type": "string",
2068
-
"const": "shell:allow-spawn"
2069
},
2070
{
2071
"description": "Enables the stdin_write command without any pre-configured scope.",
2072
"type": "string",
2073
-
"const": "shell:allow-stdin-write"
2074
},
2075
{
2076
"description": "Denies the execute command without any pre-configured scope.",
2077
"type": "string",
2078
-
"const": "shell:deny-execute"
2079
},
2080
{
2081
"description": "Denies the kill command without any pre-configured scope.",
2082
"type": "string",
2083
-
"const": "shell:deny-kill"
2084
},
2085
{
2086
"description": "Denies the open command without any pre-configured scope.",
2087
"type": "string",
2088
-
"const": "shell:deny-open"
2089
},
2090
{
2091
"description": "Denies the spawn command without any pre-configured scope.",
2092
"type": "string",
2093
-
"const": "shell:deny-spawn"
2094
},
2095
{
2096
"description": "Denies the stdin_write command without any pre-configured scope.",
2097
"type": "string",
2098
-
"const": "shell:deny-stdin-write"
2099
}
2100
]
2101
},
···
37
],
38
"definitions": {
39
"Capability": {
40
+
"description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
41
"type": "object",
42
"required": [
43
"identifier",
···
49
"type": "string"
50
},
51
"description": {
52
+
"description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.",
53
"default": "",
54
"type": "string"
55
},
···
70
"type": "boolean"
71
},
72
"windows": {
73
+
"description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
74
"type": "array",
75
"items": {
76
"type": "string"
77
}
78
},
79
"webviews": {
80
+
"description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
81
"type": "array",
82
"items": {
83
"type": "string"
84
}
85
},
86
"permissions": {
87
+
"description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```",
88
"type": "array",
89
"items": {
90
"$ref": "#/definitions/PermissionEntry"
···
140
"identifier": {
141
"anyOf": [
142
{
143
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
144
"type": "string",
145
+
"const": "http:default",
146
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
147
},
148
{
149
"description": "Enables the fetch command without any pre-configured scope.",
150
"type": "string",
151
+
"const": "http:allow-fetch",
152
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
153
},
154
{
155
"description": "Enables the fetch_cancel command without any pre-configured scope.",
156
"type": "string",
157
+
"const": "http:allow-fetch-cancel",
158
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
159
},
160
{
161
"description": "Enables the fetch_read_body command without any pre-configured scope.",
162
"type": "string",
163
+
"const": "http:allow-fetch-read-body",
164
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
165
},
166
{
167
"description": "Enables the fetch_send command without any pre-configured scope.",
168
"type": "string",
169
+
"const": "http:allow-fetch-send",
170
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
171
},
172
{
173
"description": "Denies the fetch command without any pre-configured scope.",
174
"type": "string",
175
+
"const": "http:deny-fetch",
176
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
177
},
178
{
179
"description": "Denies the fetch_cancel command without any pre-configured scope.",
180
"type": "string",
181
+
"const": "http:deny-fetch-cancel",
182
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
183
},
184
{
185
"description": "Denies the fetch_read_body command without any pre-configured scope.",
186
"type": "string",
187
+
"const": "http:deny-fetch-read-body",
188
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
189
},
190
{
191
"description": "Denies the fetch_send command without any pre-configured scope.",
192
"type": "string",
193
+
"const": "http:deny-fetch-send",
194
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
195
}
196
]
197
}
···
266
"identifier": {
267
"anyOf": [
268
{
269
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
270
"type": "string",
271
+
"const": "shell:default",
272
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
273
},
274
{
275
"description": "Enables the execute command without any pre-configured scope.",
276
"type": "string",
277
+
"const": "shell:allow-execute",
278
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
279
},
280
{
281
"description": "Enables the kill command without any pre-configured scope.",
282
"type": "string",
283
+
"const": "shell:allow-kill",
284
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
285
},
286
{
287
"description": "Enables the open command without any pre-configured scope.",
288
"type": "string",
289
+
"const": "shell:allow-open",
290
+
"markdownDescription": "Enables the open command without any pre-configured scope."
291
},
292
{
293
"description": "Enables the spawn command without any pre-configured scope.",
294
"type": "string",
295
+
"const": "shell:allow-spawn",
296
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
297
},
298
{
299
"description": "Enables the stdin_write command without any pre-configured scope.",
300
"type": "string",
301
+
"const": "shell:allow-stdin-write",
302
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
303
},
304
{
305
"description": "Denies the execute command without any pre-configured scope.",
306
"type": "string",
307
+
"const": "shell:deny-execute",
308
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
309
},
310
{
311
"description": "Denies the kill command without any pre-configured scope.",
312
"type": "string",
313
+
"const": "shell:deny-kill",
314
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
315
},
316
{
317
"description": "Denies the open command without any pre-configured scope.",
318
"type": "string",
319
+
"const": "shell:deny-open",
320
+
"markdownDescription": "Denies the open command without any pre-configured scope."
321
},
322
{
323
"description": "Denies the spawn command without any pre-configured scope.",
324
"type": "string",
325
+
"const": "shell:deny-spawn",
326
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
327
},
328
{
329
"description": "Denies the stdin_write command without any pre-configured scope.",
330
"type": "string",
331
+
"const": "shell:deny-stdin-write",
332
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
333
}
334
]
335
}
···
513
"description": "Permission identifier",
514
"oneOf": [
515
{
516
+
"description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`",
517
"type": "string",
518
+
"const": "core:default",
519
+
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
},
521
{
522
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
523
"type": "string",
524
+
"const": "core:app:default",
525
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
526
},
527
{
528
"description": "Enables the app_hide command without any pre-configured scope.",
529
"type": "string",
530
+
"const": "core:app:allow-app-hide",
531
+
"markdownDescription": "Enables the app_hide command without any pre-configured scope."
532
},
533
{
534
"description": "Enables the app_show command without any pre-configured scope.",
535
"type": "string",
536
+
"const": "core:app:allow-app-show",
537
+
"markdownDescription": "Enables the app_show command without any pre-configured scope."
538
+
},
539
+
{
540
+
"description": "Enables the bundle_type command without any pre-configured scope.",
541
+
"type": "string",
542
+
"const": "core:app:allow-bundle-type",
543
+
"markdownDescription": "Enables the bundle_type command without any pre-configured scope."
544
},
545
{
546
"description": "Enables the default_window_icon command without any pre-configured scope.",
547
"type": "string",
548
+
"const": "core:app:allow-default-window-icon",
549
+
"markdownDescription": "Enables the default_window_icon command without any pre-configured scope."
550
+
},
551
+
{
552
+
"description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.",
553
+
"type": "string",
554
+
"const": "core:app:allow-fetch-data-store-identifiers",
555
+
"markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope."
556
+
},
557
+
{
558
+
"description": "Enables the identifier command without any pre-configured scope.",
559
+
"type": "string",
560
+
"const": "core:app:allow-identifier",
561
+
"markdownDescription": "Enables the identifier command without any pre-configured scope."
562
},
563
{
564
"description": "Enables the name command without any pre-configured scope.",
565
"type": "string",
566
+
"const": "core:app:allow-name",
567
+
"markdownDescription": "Enables the name command without any pre-configured scope."
568
+
},
569
+
{
570
+
"description": "Enables the register_listener command without any pre-configured scope.",
571
+
"type": "string",
572
+
"const": "core:app:allow-register-listener",
573
+
"markdownDescription": "Enables the register_listener command without any pre-configured scope."
574
+
},
575
+
{
576
+
"description": "Enables the remove_data_store command without any pre-configured scope.",
577
+
"type": "string",
578
+
"const": "core:app:allow-remove-data-store",
579
+
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
580
+
},
581
+
{
582
+
"description": "Enables the remove_listener command without any pre-configured scope.",
583
+
"type": "string",
584
+
"const": "core:app:allow-remove-listener",
585
+
"markdownDescription": "Enables the remove_listener command without any pre-configured scope."
586
},
587
{
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
589
"type": "string",
590
+
"const": "core:app:allow-set-app-theme",
591
+
"markdownDescription": "Enables the set_app_theme command without any pre-configured scope."
592
+
},
593
+
{
594
+
"description": "Enables the set_dock_visibility command without any pre-configured scope.",
595
+
"type": "string",
596
+
"const": "core:app:allow-set-dock-visibility",
597
+
"markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope."
598
},
599
{
600
"description": "Enables the tauri_version command without any pre-configured scope.",
601
"type": "string",
602
+
"const": "core:app:allow-tauri-version",
603
+
"markdownDescription": "Enables the tauri_version command without any pre-configured scope."
604
},
605
{
606
"description": "Enables the version command without any pre-configured scope.",
607
"type": "string",
608
+
"const": "core:app:allow-version",
609
+
"markdownDescription": "Enables the version command without any pre-configured scope."
610
},
611
{
612
"description": "Denies the app_hide command without any pre-configured scope.",
613
"type": "string",
614
+
"const": "core:app:deny-app-hide",
615
+
"markdownDescription": "Denies the app_hide command without any pre-configured scope."
616
},
617
{
618
"description": "Denies the app_show command without any pre-configured scope.",
619
"type": "string",
620
+
"const": "core:app:deny-app-show",
621
+
"markdownDescription": "Denies the app_show command without any pre-configured scope."
622
+
},
623
+
{
624
+
"description": "Denies the bundle_type command without any pre-configured scope.",
625
+
"type": "string",
626
+
"const": "core:app:deny-bundle-type",
627
+
"markdownDescription": "Denies the bundle_type command without any pre-configured scope."
628
},
629
{
630
"description": "Denies the default_window_icon command without any pre-configured scope.",
631
"type": "string",
632
+
"const": "core:app:deny-default-window-icon",
633
+
"markdownDescription": "Denies the default_window_icon command without any pre-configured scope."
634
+
},
635
+
{
636
+
"description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.",
637
+
"type": "string",
638
+
"const": "core:app:deny-fetch-data-store-identifiers",
639
+
"markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope."
640
+
},
641
+
{
642
+
"description": "Denies the identifier command without any pre-configured scope.",
643
+
"type": "string",
644
+
"const": "core:app:deny-identifier",
645
+
"markdownDescription": "Denies the identifier command without any pre-configured scope."
646
},
647
{
648
"description": "Denies the name command without any pre-configured scope.",
649
"type": "string",
650
+
"const": "core:app:deny-name",
651
+
"markdownDescription": "Denies the name command without any pre-configured scope."
652
+
},
653
+
{
654
+
"description": "Denies the register_listener command without any pre-configured scope.",
655
+
"type": "string",
656
+
"const": "core:app:deny-register-listener",
657
+
"markdownDescription": "Denies the register_listener command without any pre-configured scope."
658
+
},
659
+
{
660
+
"description": "Denies the remove_data_store command without any pre-configured scope.",
661
+
"type": "string",
662
+
"const": "core:app:deny-remove-data-store",
663
+
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
664
+
},
665
+
{
666
+
"description": "Denies the remove_listener command without any pre-configured scope.",
667
+
"type": "string",
668
+
"const": "core:app:deny-remove-listener",
669
+
"markdownDescription": "Denies the remove_listener command without any pre-configured scope."
670
},
671
{
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
673
"type": "string",
674
+
"const": "core:app:deny-set-app-theme",
675
+
"markdownDescription": "Denies the set_app_theme command without any pre-configured scope."
676
+
},
677
+
{
678
+
"description": "Denies the set_dock_visibility command without any pre-configured scope.",
679
+
"type": "string",
680
+
"const": "core:app:deny-set-dock-visibility",
681
+
"markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope."
682
},
683
{
684
"description": "Denies the tauri_version command without any pre-configured scope.",
685
"type": "string",
686
+
"const": "core:app:deny-tauri-version",
687
+
"markdownDescription": "Denies the tauri_version command without any pre-configured scope."
688
},
689
{
690
"description": "Denies the version command without any pre-configured scope.",
691
"type": "string",
692
+
"const": "core:app:deny-version",
693
+
"markdownDescription": "Denies the version command without any pre-configured scope."
694
},
695
{
696
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`",
697
"type": "string",
698
+
"const": "core:event:default",
699
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`"
700
},
701
{
702
"description": "Enables the emit command without any pre-configured scope.",
703
"type": "string",
704
+
"const": "core:event:allow-emit",
705
+
"markdownDescription": "Enables the emit command without any pre-configured scope."
706
},
707
{
708
"description": "Enables the emit_to command without any pre-configured scope.",
709
"type": "string",
710
+
"const": "core:event:allow-emit-to",
711
+
"markdownDescription": "Enables the emit_to command without any pre-configured scope."
712
},
713
{
714
"description": "Enables the listen command without any pre-configured scope.",
715
"type": "string",
716
+
"const": "core:event:allow-listen",
717
+
"markdownDescription": "Enables the listen command without any pre-configured scope."
718
},
719
{
720
"description": "Enables the unlisten command without any pre-configured scope.",
721
"type": "string",
722
+
"const": "core:event:allow-unlisten",
723
+
"markdownDescription": "Enables the unlisten command without any pre-configured scope."
724
},
725
{
726
"description": "Denies the emit command without any pre-configured scope.",
727
"type": "string",
728
+
"const": "core:event:deny-emit",
729
+
"markdownDescription": "Denies the emit command without any pre-configured scope."
730
},
731
{
732
"description": "Denies the emit_to command without any pre-configured scope.",
733
"type": "string",
734
+
"const": "core:event:deny-emit-to",
735
+
"markdownDescription": "Denies the emit_to command without any pre-configured scope."
736
},
737
{
738
"description": "Denies the listen command without any pre-configured scope.",
739
"type": "string",
740
+
"const": "core:event:deny-listen",
741
+
"markdownDescription": "Denies the listen command without any pre-configured scope."
742
},
743
{
744
"description": "Denies the unlisten command without any pre-configured scope.",
745
"type": "string",
746
+
"const": "core:event:deny-unlisten",
747
+
"markdownDescription": "Denies the unlisten command without any pre-configured scope."
748
},
749
{
750
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`",
751
"type": "string",
752
+
"const": "core:image:default",
753
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`"
754
},
755
{
756
"description": "Enables the from_bytes command without any pre-configured scope.",
757
"type": "string",
758
+
"const": "core:image:allow-from-bytes",
759
+
"markdownDescription": "Enables the from_bytes command without any pre-configured scope."
760
},
761
{
762
"description": "Enables the from_path command without any pre-configured scope.",
763
"type": "string",
764
+
"const": "core:image:allow-from-path",
765
+
"markdownDescription": "Enables the from_path command without any pre-configured scope."
766
},
767
{
768
"description": "Enables the new command without any pre-configured scope.",
769
"type": "string",
770
+
"const": "core:image:allow-new",
771
+
"markdownDescription": "Enables the new command without any pre-configured scope."
772
},
773
{
774
"description": "Enables the rgba command without any pre-configured scope.",
775
"type": "string",
776
+
"const": "core:image:allow-rgba",
777
+
"markdownDescription": "Enables the rgba command without any pre-configured scope."
778
},
779
{
780
"description": "Enables the size command without any pre-configured scope.",
781
"type": "string",
782
+
"const": "core:image:allow-size",
783
+
"markdownDescription": "Enables the size command without any pre-configured scope."
784
},
785
{
786
"description": "Denies the from_bytes command without any pre-configured scope.",
787
"type": "string",
788
+
"const": "core:image:deny-from-bytes",
789
+
"markdownDescription": "Denies the from_bytes command without any pre-configured scope."
790
},
791
{
792
"description": "Denies the from_path command without any pre-configured scope.",
793
"type": "string",
794
+
"const": "core:image:deny-from-path",
795
+
"markdownDescription": "Denies the from_path command without any pre-configured scope."
796
},
797
{
798
"description": "Denies the new command without any pre-configured scope.",
799
"type": "string",
800
+
"const": "core:image:deny-new",
801
+
"markdownDescription": "Denies the new command without any pre-configured scope."
802
},
803
{
804
"description": "Denies the rgba command without any pre-configured scope.",
805
"type": "string",
806
+
"const": "core:image:deny-rgba",
807
+
"markdownDescription": "Denies the rgba command without any pre-configured scope."
808
},
809
{
810
"description": "Denies the size command without any pre-configured scope.",
811
"type": "string",
812
+
"const": "core:image:deny-size",
813
+
"markdownDescription": "Denies the size command without any pre-configured scope."
814
},
815
{
816
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`",
817
"type": "string",
818
+
"const": "core:menu:default",
819
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`"
820
},
821
{
822
"description": "Enables the append command without any pre-configured scope.",
823
"type": "string",
824
+
"const": "core:menu:allow-append",
825
+
"markdownDescription": "Enables the append command without any pre-configured scope."
826
},
827
{
828
"description": "Enables the create_default command without any pre-configured scope.",
829
"type": "string",
830
+
"const": "core:menu:allow-create-default",
831
+
"markdownDescription": "Enables the create_default command without any pre-configured scope."
832
},
833
{
834
"description": "Enables the get command without any pre-configured scope.",
835
"type": "string",
836
+
"const": "core:menu:allow-get",
837
+
"markdownDescription": "Enables the get command without any pre-configured scope."
838
},
839
{
840
"description": "Enables the insert command without any pre-configured scope.",
841
"type": "string",
842
+
"const": "core:menu:allow-insert",
843
+
"markdownDescription": "Enables the insert command without any pre-configured scope."
844
},
845
{
846
"description": "Enables the is_checked command without any pre-configured scope.",
847
"type": "string",
848
+
"const": "core:menu:allow-is-checked",
849
+
"markdownDescription": "Enables the is_checked command without any pre-configured scope."
850
},
851
{
852
"description": "Enables the is_enabled command without any pre-configured scope.",
853
"type": "string",
854
+
"const": "core:menu:allow-is-enabled",
855
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
856
},
857
{
858
"description": "Enables the items command without any pre-configured scope.",
859
"type": "string",
860
+
"const": "core:menu:allow-items",
861
+
"markdownDescription": "Enables the items command without any pre-configured scope."
862
},
863
{
864
"description": "Enables the new command without any pre-configured scope.",
865
"type": "string",
866
+
"const": "core:menu:allow-new",
867
+
"markdownDescription": "Enables the new command without any pre-configured scope."
868
},
869
{
870
"description": "Enables the popup command without any pre-configured scope.",
871
"type": "string",
872
+
"const": "core:menu:allow-popup",
873
+
"markdownDescription": "Enables the popup command without any pre-configured scope."
874
},
875
{
876
"description": "Enables the prepend command without any pre-configured scope.",
877
"type": "string",
878
+
"const": "core:menu:allow-prepend",
879
+
"markdownDescription": "Enables the prepend command without any pre-configured scope."
880
},
881
{
882
"description": "Enables the remove command without any pre-configured scope.",
883
"type": "string",
884
+
"const": "core:menu:allow-remove",
885
+
"markdownDescription": "Enables the remove command without any pre-configured scope."
886
},
887
{
888
"description": "Enables the remove_at command without any pre-configured scope.",
889
"type": "string",
890
+
"const": "core:menu:allow-remove-at",
891
+
"markdownDescription": "Enables the remove_at command without any pre-configured scope."
892
},
893
{
894
"description": "Enables the set_accelerator command without any pre-configured scope.",
895
"type": "string",
896
+
"const": "core:menu:allow-set-accelerator",
897
+
"markdownDescription": "Enables the set_accelerator command without any pre-configured scope."
898
},
899
{
900
"description": "Enables the set_as_app_menu command without any pre-configured scope.",
901
"type": "string",
902
+
"const": "core:menu:allow-set-as-app-menu",
903
+
"markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope."
904
},
905
{
906
"description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.",
907
"type": "string",
908
+
"const": "core:menu:allow-set-as-help-menu-for-nsapp",
909
+
"markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope."
910
},
911
{
912
"description": "Enables the set_as_window_menu command without any pre-configured scope.",
913
"type": "string",
914
+
"const": "core:menu:allow-set-as-window-menu",
915
+
"markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope."
916
},
917
{
918
"description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
919
"type": "string",
920
+
"const": "core:menu:allow-set-as-windows-menu-for-nsapp",
921
+
"markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope."
922
},
923
{
924
"description": "Enables the set_checked command without any pre-configured scope.",
925
"type": "string",
926
+
"const": "core:menu:allow-set-checked",
927
+
"markdownDescription": "Enables the set_checked command without any pre-configured scope."
928
},
929
{
930
"description": "Enables the set_enabled command without any pre-configured scope.",
931
"type": "string",
932
+
"const": "core:menu:allow-set-enabled",
933
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
934
},
935
{
936
"description": "Enables the set_icon command without any pre-configured scope.",
937
"type": "string",
938
+
"const": "core:menu:allow-set-icon",
939
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
940
},
941
{
942
"description": "Enables the set_text command without any pre-configured scope.",
943
"type": "string",
944
+
"const": "core:menu:allow-set-text",
945
+
"markdownDescription": "Enables the set_text command without any pre-configured scope."
946
},
947
{
948
"description": "Enables the text command without any pre-configured scope.",
949
"type": "string",
950
+
"const": "core:menu:allow-text",
951
+
"markdownDescription": "Enables the text command without any pre-configured scope."
952
},
953
{
954
"description": "Denies the append command without any pre-configured scope.",
955
"type": "string",
956
+
"const": "core:menu:deny-append",
957
+
"markdownDescription": "Denies the append command without any pre-configured scope."
958
},
959
{
960
"description": "Denies the create_default command without any pre-configured scope.",
961
"type": "string",
962
+
"const": "core:menu:deny-create-default",
963
+
"markdownDescription": "Denies the create_default command without any pre-configured scope."
964
},
965
{
966
"description": "Denies the get command without any pre-configured scope.",
967
"type": "string",
968
+
"const": "core:menu:deny-get",
969
+
"markdownDescription": "Denies the get command without any pre-configured scope."
970
},
971
{
972
"description": "Denies the insert command without any pre-configured scope.",
973
"type": "string",
974
+
"const": "core:menu:deny-insert",
975
+
"markdownDescription": "Denies the insert command without any pre-configured scope."
976
},
977
{
978
"description": "Denies the is_checked command without any pre-configured scope.",
979
"type": "string",
980
+
"const": "core:menu:deny-is-checked",
981
+
"markdownDescription": "Denies the is_checked command without any pre-configured scope."
982
},
983
{
984
"description": "Denies the is_enabled command without any pre-configured scope.",
985
"type": "string",
986
+
"const": "core:menu:deny-is-enabled",
987
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
988
},
989
{
990
"description": "Denies the items command without any pre-configured scope.",
991
"type": "string",
992
+
"const": "core:menu:deny-items",
993
+
"markdownDescription": "Denies the items command without any pre-configured scope."
994
},
995
{
996
"description": "Denies the new command without any pre-configured scope.",
997
"type": "string",
998
+
"const": "core:menu:deny-new",
999
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1000
},
1001
{
1002
"description": "Denies the popup command without any pre-configured scope.",
1003
"type": "string",
1004
+
"const": "core:menu:deny-popup",
1005
+
"markdownDescription": "Denies the popup command without any pre-configured scope."
1006
},
1007
{
1008
"description": "Denies the prepend command without any pre-configured scope.",
1009
"type": "string",
1010
+
"const": "core:menu:deny-prepend",
1011
+
"markdownDescription": "Denies the prepend command without any pre-configured scope."
1012
},
1013
{
1014
"description": "Denies the remove command without any pre-configured scope.",
1015
"type": "string",
1016
+
"const": "core:menu:deny-remove",
1017
+
"markdownDescription": "Denies the remove command without any pre-configured scope."
1018
},
1019
{
1020
"description": "Denies the remove_at command without any pre-configured scope.",
1021
"type": "string",
1022
+
"const": "core:menu:deny-remove-at",
1023
+
"markdownDescription": "Denies the remove_at command without any pre-configured scope."
1024
},
1025
{
1026
"description": "Denies the set_accelerator command without any pre-configured scope.",
1027
"type": "string",
1028
+
"const": "core:menu:deny-set-accelerator",
1029
+
"markdownDescription": "Denies the set_accelerator command without any pre-configured scope."
1030
},
1031
{
1032
"description": "Denies the set_as_app_menu command without any pre-configured scope.",
1033
"type": "string",
1034
+
"const": "core:menu:deny-set-as-app-menu",
1035
+
"markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope."
1036
},
1037
{
1038
"description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.",
1039
"type": "string",
1040
+
"const": "core:menu:deny-set-as-help-menu-for-nsapp",
1041
+
"markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope."
1042
},
1043
{
1044
"description": "Denies the set_as_window_menu command without any pre-configured scope.",
1045
"type": "string",
1046
+
"const": "core:menu:deny-set-as-window-menu",
1047
+
"markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope."
1048
},
1049
{
1050
"description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
1051
"type": "string",
1052
+
"const": "core:menu:deny-set-as-windows-menu-for-nsapp",
1053
+
"markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope."
1054
},
1055
{
1056
"description": "Denies the set_checked command without any pre-configured scope.",
1057
"type": "string",
1058
+
"const": "core:menu:deny-set-checked",
1059
+
"markdownDescription": "Denies the set_checked command without any pre-configured scope."
1060
},
1061
{
1062
"description": "Denies the set_enabled command without any pre-configured scope.",
1063
"type": "string",
1064
+
"const": "core:menu:deny-set-enabled",
1065
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
1066
},
1067
{
1068
"description": "Denies the set_icon command without any pre-configured scope.",
1069
"type": "string",
1070
+
"const": "core:menu:deny-set-icon",
1071
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1072
},
1073
{
1074
"description": "Denies the set_text command without any pre-configured scope.",
1075
"type": "string",
1076
+
"const": "core:menu:deny-set-text",
1077
+
"markdownDescription": "Denies the set_text command without any pre-configured scope."
1078
},
1079
{
1080
"description": "Denies the text command without any pre-configured scope.",
1081
"type": "string",
1082
+
"const": "core:menu:deny-text",
1083
+
"markdownDescription": "Denies the text command without any pre-configured scope."
1084
},
1085
{
1086
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`",
1087
"type": "string",
1088
+
"const": "core:path:default",
1089
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`"
1090
},
1091
{
1092
"description": "Enables the basename command without any pre-configured scope.",
1093
"type": "string",
1094
+
"const": "core:path:allow-basename",
1095
+
"markdownDescription": "Enables the basename command without any pre-configured scope."
1096
},
1097
{
1098
"description": "Enables the dirname command without any pre-configured scope.",
1099
"type": "string",
1100
+
"const": "core:path:allow-dirname",
1101
+
"markdownDescription": "Enables the dirname command without any pre-configured scope."
1102
},
1103
{
1104
"description": "Enables the extname command without any pre-configured scope.",
1105
"type": "string",
1106
+
"const": "core:path:allow-extname",
1107
+
"markdownDescription": "Enables the extname command without any pre-configured scope."
1108
},
1109
{
1110
"description": "Enables the is_absolute command without any pre-configured scope.",
1111
"type": "string",
1112
+
"const": "core:path:allow-is-absolute",
1113
+
"markdownDescription": "Enables the is_absolute command without any pre-configured scope."
1114
},
1115
{
1116
"description": "Enables the join command without any pre-configured scope.",
1117
"type": "string",
1118
+
"const": "core:path:allow-join",
1119
+
"markdownDescription": "Enables the join command without any pre-configured scope."
1120
},
1121
{
1122
"description": "Enables the normalize command without any pre-configured scope.",
1123
"type": "string",
1124
+
"const": "core:path:allow-normalize",
1125
+
"markdownDescription": "Enables the normalize command without any pre-configured scope."
1126
},
1127
{
1128
"description": "Enables the resolve command without any pre-configured scope.",
1129
"type": "string",
1130
+
"const": "core:path:allow-resolve",
1131
+
"markdownDescription": "Enables the resolve command without any pre-configured scope."
1132
},
1133
{
1134
"description": "Enables the resolve_directory command without any pre-configured scope.",
1135
"type": "string",
1136
+
"const": "core:path:allow-resolve-directory",
1137
+
"markdownDescription": "Enables the resolve_directory command without any pre-configured scope."
1138
},
1139
{
1140
"description": "Denies the basename command without any pre-configured scope.",
1141
"type": "string",
1142
+
"const": "core:path:deny-basename",
1143
+
"markdownDescription": "Denies the basename command without any pre-configured scope."
1144
},
1145
{
1146
"description": "Denies the dirname command without any pre-configured scope.",
1147
"type": "string",
1148
+
"const": "core:path:deny-dirname",
1149
+
"markdownDescription": "Denies the dirname command without any pre-configured scope."
1150
},
1151
{
1152
"description": "Denies the extname command without any pre-configured scope.",
1153
"type": "string",
1154
+
"const": "core:path:deny-extname",
1155
+
"markdownDescription": "Denies the extname command without any pre-configured scope."
1156
},
1157
{
1158
"description": "Denies the is_absolute command without any pre-configured scope.",
1159
"type": "string",
1160
+
"const": "core:path:deny-is-absolute",
1161
+
"markdownDescription": "Denies the is_absolute command without any pre-configured scope."
1162
},
1163
{
1164
"description": "Denies the join command without any pre-configured scope.",
1165
"type": "string",
1166
+
"const": "core:path:deny-join",
1167
+
"markdownDescription": "Denies the join command without any pre-configured scope."
1168
},
1169
{
1170
"description": "Denies the normalize command without any pre-configured scope.",
1171
"type": "string",
1172
+
"const": "core:path:deny-normalize",
1173
+
"markdownDescription": "Denies the normalize command without any pre-configured scope."
1174
},
1175
{
1176
"description": "Denies the resolve command without any pre-configured scope.",
1177
"type": "string",
1178
+
"const": "core:path:deny-resolve",
1179
+
"markdownDescription": "Denies the resolve command without any pre-configured scope."
1180
},
1181
{
1182
"description": "Denies the resolve_directory command without any pre-configured scope.",
1183
"type": "string",
1184
+
"const": "core:path:deny-resolve-directory",
1185
+
"markdownDescription": "Denies the resolve_directory command without any pre-configured scope."
1186
},
1187
{
1188
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`",
1189
"type": "string",
1190
+
"const": "core:resources:default",
1191
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`"
1192
},
1193
{
1194
"description": "Enables the close command without any pre-configured scope.",
1195
"type": "string",
1196
+
"const": "core:resources:allow-close",
1197
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1198
},
1199
{
1200
"description": "Denies the close command without any pre-configured scope.",
1201
"type": "string",
1202
+
"const": "core:resources:deny-close",
1203
+
"markdownDescription": "Denies the close command without any pre-configured scope."
1204
},
1205
{
1206
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`",
1207
"type": "string",
1208
+
"const": "core:tray:default",
1209
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`"
1210
},
1211
{
1212
"description": "Enables the get_by_id command without any pre-configured scope.",
1213
"type": "string",
1214
+
"const": "core:tray:allow-get-by-id",
1215
+
"markdownDescription": "Enables the get_by_id command without any pre-configured scope."
1216
},
1217
{
1218
"description": "Enables the new command without any pre-configured scope.",
1219
"type": "string",
1220
+
"const": "core:tray:allow-new",
1221
+
"markdownDescription": "Enables the new command without any pre-configured scope."
1222
},
1223
{
1224
"description": "Enables the remove_by_id command without any pre-configured scope.",
1225
"type": "string",
1226
+
"const": "core:tray:allow-remove-by-id",
1227
+
"markdownDescription": "Enables the remove_by_id command without any pre-configured scope."
1228
},
1229
{
1230
"description": "Enables the set_icon command without any pre-configured scope.",
1231
"type": "string",
1232
+
"const": "core:tray:allow-set-icon",
1233
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1234
},
1235
{
1236
"description": "Enables the set_icon_as_template command without any pre-configured scope.",
1237
"type": "string",
1238
+
"const": "core:tray:allow-set-icon-as-template",
1239
+
"markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope."
1240
},
1241
{
1242
"description": "Enables the set_menu command without any pre-configured scope.",
1243
"type": "string",
1244
+
"const": "core:tray:allow-set-menu",
1245
+
"markdownDescription": "Enables the set_menu command without any pre-configured scope."
1246
},
1247
{
1248
"description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.",
1249
"type": "string",
1250
+
"const": "core:tray:allow-set-show-menu-on-left-click",
1251
+
"markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope."
1252
},
1253
{
1254
"description": "Enables the set_temp_dir_path command without any pre-configured scope.",
1255
"type": "string",
1256
+
"const": "core:tray:allow-set-temp-dir-path",
1257
+
"markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope."
1258
},
1259
{
1260
"description": "Enables the set_title command without any pre-configured scope.",
1261
"type": "string",
1262
+
"const": "core:tray:allow-set-title",
1263
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1264
},
1265
{
1266
"description": "Enables the set_tooltip command without any pre-configured scope.",
1267
"type": "string",
1268
+
"const": "core:tray:allow-set-tooltip",
1269
+
"markdownDescription": "Enables the set_tooltip command without any pre-configured scope."
1270
},
1271
{
1272
"description": "Enables the set_visible command without any pre-configured scope.",
1273
"type": "string",
1274
+
"const": "core:tray:allow-set-visible",
1275
+
"markdownDescription": "Enables the set_visible command without any pre-configured scope."
1276
},
1277
{
1278
"description": "Denies the get_by_id command without any pre-configured scope.",
1279
"type": "string",
1280
+
"const": "core:tray:deny-get-by-id",
1281
+
"markdownDescription": "Denies the get_by_id command without any pre-configured scope."
1282
},
1283
{
1284
"description": "Denies the new command without any pre-configured scope.",
1285
"type": "string",
1286
+
"const": "core:tray:deny-new",
1287
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1288
},
1289
{
1290
"description": "Denies the remove_by_id command without any pre-configured scope.",
1291
"type": "string",
1292
+
"const": "core:tray:deny-remove-by-id",
1293
+
"markdownDescription": "Denies the remove_by_id command without any pre-configured scope."
1294
},
1295
{
1296
"description": "Denies the set_icon command without any pre-configured scope.",
1297
"type": "string",
1298
+
"const": "core:tray:deny-set-icon",
1299
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1300
},
1301
{
1302
"description": "Denies the set_icon_as_template command without any pre-configured scope.",
1303
"type": "string",
1304
+
"const": "core:tray:deny-set-icon-as-template",
1305
+
"markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope."
1306
},
1307
{
1308
"description": "Denies the set_menu command without any pre-configured scope.",
1309
"type": "string",
1310
+
"const": "core:tray:deny-set-menu",
1311
+
"markdownDescription": "Denies the set_menu command without any pre-configured scope."
1312
},
1313
{
1314
"description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.",
1315
"type": "string",
1316
+
"const": "core:tray:deny-set-show-menu-on-left-click",
1317
+
"markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope."
1318
},
1319
{
1320
"description": "Denies the set_temp_dir_path command without any pre-configured scope.",
1321
"type": "string",
1322
+
"const": "core:tray:deny-set-temp-dir-path",
1323
+
"markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope."
1324
},
1325
{
1326
"description": "Denies the set_title command without any pre-configured scope.",
1327
"type": "string",
1328
+
"const": "core:tray:deny-set-title",
1329
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
1330
},
1331
{
1332
"description": "Denies the set_tooltip command without any pre-configured scope.",
1333
"type": "string",
1334
+
"const": "core:tray:deny-set-tooltip",
1335
+
"markdownDescription": "Denies the set_tooltip command without any pre-configured scope."
1336
},
1337
{
1338
"description": "Denies the set_visible command without any pre-configured scope.",
1339
"type": "string",
1340
+
"const": "core:tray:deny-set-visible",
1341
+
"markdownDescription": "Denies the set_visible command without any pre-configured scope."
1342
},
1343
{
1344
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`",
1345
"type": "string",
1346
+
"const": "core:webview:default",
1347
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`"
1348
},
1349
{
1350
"description": "Enables the clear_all_browsing_data command without any pre-configured scope.",
1351
"type": "string",
1352
+
"const": "core:webview:allow-clear-all-browsing-data",
1353
+
"markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope."
1354
},
1355
{
1356
"description": "Enables the create_webview command without any pre-configured scope.",
1357
"type": "string",
1358
+
"const": "core:webview:allow-create-webview",
1359
+
"markdownDescription": "Enables the create_webview command without any pre-configured scope."
1360
},
1361
{
1362
"description": "Enables the create_webview_window command without any pre-configured scope.",
1363
"type": "string",
1364
+
"const": "core:webview:allow-create-webview-window",
1365
+
"markdownDescription": "Enables the create_webview_window command without any pre-configured scope."
1366
},
1367
{
1368
"description": "Enables the get_all_webviews command without any pre-configured scope.",
1369
"type": "string",
1370
+
"const": "core:webview:allow-get-all-webviews",
1371
+
"markdownDescription": "Enables the get_all_webviews command without any pre-configured scope."
1372
},
1373
{
1374
"description": "Enables the internal_toggle_devtools command without any pre-configured scope.",
1375
"type": "string",
1376
+
"const": "core:webview:allow-internal-toggle-devtools",
1377
+
"markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope."
1378
},
1379
{
1380
"description": "Enables the print command without any pre-configured scope.",
1381
"type": "string",
1382
+
"const": "core:webview:allow-print",
1383
+
"markdownDescription": "Enables the print command without any pre-configured scope."
1384
},
1385
{
1386
"description": "Enables the reparent command without any pre-configured scope.",
1387
"type": "string",
1388
+
"const": "core:webview:allow-reparent",
1389
+
"markdownDescription": "Enables the reparent command without any pre-configured scope."
1390
+
},
1391
+
{
1392
+
"description": "Enables the set_webview_auto_resize command without any pre-configured scope.",
1393
+
"type": "string",
1394
+
"const": "core:webview:allow-set-webview-auto-resize",
1395
+
"markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope."
1396
+
},
1397
+
{
1398
+
"description": "Enables the set_webview_background_color command without any pre-configured scope.",
1399
+
"type": "string",
1400
+
"const": "core:webview:allow-set-webview-background-color",
1401
+
"markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope."
1402
},
1403
{
1404
"description": "Enables the set_webview_focus command without any pre-configured scope.",
1405
"type": "string",
1406
+
"const": "core:webview:allow-set-webview-focus",
1407
+
"markdownDescription": "Enables the set_webview_focus command without any pre-configured scope."
1408
},
1409
{
1410
"description": "Enables the set_webview_position command without any pre-configured scope.",
1411
"type": "string",
1412
+
"const": "core:webview:allow-set-webview-position",
1413
+
"markdownDescription": "Enables the set_webview_position command without any pre-configured scope."
1414
},
1415
{
1416
"description": "Enables the set_webview_size command without any pre-configured scope.",
1417
"type": "string",
1418
+
"const": "core:webview:allow-set-webview-size",
1419
+
"markdownDescription": "Enables the set_webview_size command without any pre-configured scope."
1420
},
1421
{
1422
"description": "Enables the set_webview_zoom command without any pre-configured scope.",
1423
"type": "string",
1424
+
"const": "core:webview:allow-set-webview-zoom",
1425
+
"markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope."
1426
},
1427
{
1428
"description": "Enables the webview_close command without any pre-configured scope.",
1429
"type": "string",
1430
+
"const": "core:webview:allow-webview-close",
1431
+
"markdownDescription": "Enables the webview_close command without any pre-configured scope."
1432
},
1433
{
1434
"description": "Enables the webview_hide command without any pre-configured scope.",
1435
"type": "string",
1436
+
"const": "core:webview:allow-webview-hide",
1437
+
"markdownDescription": "Enables the webview_hide command without any pre-configured scope."
1438
},
1439
{
1440
"description": "Enables the webview_position command without any pre-configured scope.",
1441
"type": "string",
1442
+
"const": "core:webview:allow-webview-position",
1443
+
"markdownDescription": "Enables the webview_position command without any pre-configured scope."
1444
},
1445
{
1446
"description": "Enables the webview_show command without any pre-configured scope.",
1447
"type": "string",
1448
+
"const": "core:webview:allow-webview-show",
1449
+
"markdownDescription": "Enables the webview_show command without any pre-configured scope."
1450
},
1451
{
1452
"description": "Enables the webview_size command without any pre-configured scope.",
1453
"type": "string",
1454
+
"const": "core:webview:allow-webview-size",
1455
+
"markdownDescription": "Enables the webview_size command without any pre-configured scope."
1456
},
1457
{
1458
"description": "Denies the clear_all_browsing_data command without any pre-configured scope.",
1459
"type": "string",
1460
+
"const": "core:webview:deny-clear-all-browsing-data",
1461
+
"markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope."
1462
},
1463
{
1464
"description": "Denies the create_webview command without any pre-configured scope.",
1465
"type": "string",
1466
+
"const": "core:webview:deny-create-webview",
1467
+
"markdownDescription": "Denies the create_webview command without any pre-configured scope."
1468
},
1469
{
1470
"description": "Denies the create_webview_window command without any pre-configured scope.",
1471
"type": "string",
1472
+
"const": "core:webview:deny-create-webview-window",
1473
+
"markdownDescription": "Denies the create_webview_window command without any pre-configured scope."
1474
},
1475
{
1476
"description": "Denies the get_all_webviews command without any pre-configured scope.",
1477
"type": "string",
1478
+
"const": "core:webview:deny-get-all-webviews",
1479
+
"markdownDescription": "Denies the get_all_webviews command without any pre-configured scope."
1480
},
1481
{
1482
"description": "Denies the internal_toggle_devtools command without any pre-configured scope.",
1483
"type": "string",
1484
+
"const": "core:webview:deny-internal-toggle-devtools",
1485
+
"markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope."
1486
},
1487
{
1488
"description": "Denies the print command without any pre-configured scope.",
1489
"type": "string",
1490
+
"const": "core:webview:deny-print",
1491
+
"markdownDescription": "Denies the print command without any pre-configured scope."
1492
},
1493
{
1494
"description": "Denies the reparent command without any pre-configured scope.",
1495
"type": "string",
1496
+
"const": "core:webview:deny-reparent",
1497
+
"markdownDescription": "Denies the reparent command without any pre-configured scope."
1498
+
},
1499
+
{
1500
+
"description": "Denies the set_webview_auto_resize command without any pre-configured scope.",
1501
+
"type": "string",
1502
+
"const": "core:webview:deny-set-webview-auto-resize",
1503
+
"markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope."
1504
+
},
1505
+
{
1506
+
"description": "Denies the set_webview_background_color command without any pre-configured scope.",
1507
+
"type": "string",
1508
+
"const": "core:webview:deny-set-webview-background-color",
1509
+
"markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope."
1510
},
1511
{
1512
"description": "Denies the set_webview_focus command without any pre-configured scope.",
1513
"type": "string",
1514
+
"const": "core:webview:deny-set-webview-focus",
1515
+
"markdownDescription": "Denies the set_webview_focus command without any pre-configured scope."
1516
},
1517
{
1518
"description": "Denies the set_webview_position command without any pre-configured scope.",
1519
"type": "string",
1520
+
"const": "core:webview:deny-set-webview-position",
1521
+
"markdownDescription": "Denies the set_webview_position command without any pre-configured scope."
1522
},
1523
{
1524
"description": "Denies the set_webview_size command without any pre-configured scope.",
1525
"type": "string",
1526
+
"const": "core:webview:deny-set-webview-size",
1527
+
"markdownDescription": "Denies the set_webview_size command without any pre-configured scope."
1528
},
1529
{
1530
"description": "Denies the set_webview_zoom command without any pre-configured scope.",
1531
"type": "string",
1532
+
"const": "core:webview:deny-set-webview-zoom",
1533
+
"markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope."
1534
},
1535
{
1536
"description": "Denies the webview_close command without any pre-configured scope.",
1537
"type": "string",
1538
+
"const": "core:webview:deny-webview-close",
1539
+
"markdownDescription": "Denies the webview_close command without any pre-configured scope."
1540
},
1541
{
1542
"description": "Denies the webview_hide command without any pre-configured scope.",
1543
"type": "string",
1544
+
"const": "core:webview:deny-webview-hide",
1545
+
"markdownDescription": "Denies the webview_hide command without any pre-configured scope."
1546
},
1547
{
1548
"description": "Denies the webview_position command without any pre-configured scope.",
1549
"type": "string",
1550
+
"const": "core:webview:deny-webview-position",
1551
+
"markdownDescription": "Denies the webview_position command without any pre-configured scope."
1552
},
1553
{
1554
"description": "Denies the webview_show command without any pre-configured scope.",
1555
"type": "string",
1556
+
"const": "core:webview:deny-webview-show",
1557
+
"markdownDescription": "Denies the webview_show command without any pre-configured scope."
1558
},
1559
{
1560
"description": "Denies the webview_size command without any pre-configured scope.",
1561
"type": "string",
1562
+
"const": "core:webview:deny-webview-size",
1563
+
"markdownDescription": "Denies the webview_size command without any pre-configured scope."
1564
},
1565
{
1566
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`",
1567
"type": "string",
1568
+
"const": "core:window:default",
1569
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`"
1570
},
1571
{
1572
"description": "Enables the available_monitors command without any pre-configured scope.",
1573
"type": "string",
1574
+
"const": "core:window:allow-available-monitors",
1575
+
"markdownDescription": "Enables the available_monitors command without any pre-configured scope."
1576
},
1577
{
1578
"description": "Enables the center command without any pre-configured scope.",
1579
"type": "string",
1580
+
"const": "core:window:allow-center",
1581
+
"markdownDescription": "Enables the center command without any pre-configured scope."
1582
},
1583
{
1584
"description": "Enables the close command without any pre-configured scope.",
1585
"type": "string",
1586
+
"const": "core:window:allow-close",
1587
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1588
},
1589
{
1590
"description": "Enables the create command without any pre-configured scope.",
1591
"type": "string",
1592
+
"const": "core:window:allow-create",
1593
+
"markdownDescription": "Enables the create command without any pre-configured scope."
1594
},
1595
{
1596
"description": "Enables the current_monitor command without any pre-configured scope.",
1597
"type": "string",
1598
+
"const": "core:window:allow-current-monitor",
1599
+
"markdownDescription": "Enables the current_monitor command without any pre-configured scope."
1600
},
1601
{
1602
"description": "Enables the cursor_position command without any pre-configured scope.",
1603
"type": "string",
1604
+
"const": "core:window:allow-cursor-position",
1605
+
"markdownDescription": "Enables the cursor_position command without any pre-configured scope."
1606
},
1607
{
1608
"description": "Enables the destroy command without any pre-configured scope.",
1609
"type": "string",
1610
+
"const": "core:window:allow-destroy",
1611
+
"markdownDescription": "Enables the destroy command without any pre-configured scope."
1612
},
1613
{
1614
"description": "Enables the get_all_windows command without any pre-configured scope.",
1615
"type": "string",
1616
+
"const": "core:window:allow-get-all-windows",
1617
+
"markdownDescription": "Enables the get_all_windows command without any pre-configured scope."
1618
},
1619
{
1620
"description": "Enables the hide command without any pre-configured scope.",
1621
"type": "string",
1622
+
"const": "core:window:allow-hide",
1623
+
"markdownDescription": "Enables the hide command without any pre-configured scope."
1624
},
1625
{
1626
"description": "Enables the inner_position command without any pre-configured scope.",
1627
"type": "string",
1628
+
"const": "core:window:allow-inner-position",
1629
+
"markdownDescription": "Enables the inner_position command without any pre-configured scope."
1630
},
1631
{
1632
"description": "Enables the inner_size command without any pre-configured scope.",
1633
"type": "string",
1634
+
"const": "core:window:allow-inner-size",
1635
+
"markdownDescription": "Enables the inner_size command without any pre-configured scope."
1636
},
1637
{
1638
"description": "Enables the internal_toggle_maximize command without any pre-configured scope.",
1639
"type": "string",
1640
+
"const": "core:window:allow-internal-toggle-maximize",
1641
+
"markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope."
1642
+
},
1643
+
{
1644
+
"description": "Enables the is_always_on_top command without any pre-configured scope.",
1645
+
"type": "string",
1646
+
"const": "core:window:allow-is-always-on-top",
1647
+
"markdownDescription": "Enables the is_always_on_top command without any pre-configured scope."
1648
},
1649
{
1650
"description": "Enables the is_closable command without any pre-configured scope.",
1651
"type": "string",
1652
+
"const": "core:window:allow-is-closable",
1653
+
"markdownDescription": "Enables the is_closable command without any pre-configured scope."
1654
},
1655
{
1656
"description": "Enables the is_decorated command without any pre-configured scope.",
1657
"type": "string",
1658
+
"const": "core:window:allow-is-decorated",
1659
+
"markdownDescription": "Enables the is_decorated command without any pre-configured scope."
1660
},
1661
{
1662
"description": "Enables the is_enabled command without any pre-configured scope.",
1663
"type": "string",
1664
+
"const": "core:window:allow-is-enabled",
1665
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
1666
},
1667
{
1668
"description": "Enables the is_focused command without any pre-configured scope.",
1669
"type": "string",
1670
+
"const": "core:window:allow-is-focused",
1671
+
"markdownDescription": "Enables the is_focused command without any pre-configured scope."
1672
},
1673
{
1674
"description": "Enables the is_fullscreen command without any pre-configured scope.",
1675
"type": "string",
1676
+
"const": "core:window:allow-is-fullscreen",
1677
+
"markdownDescription": "Enables the is_fullscreen command without any pre-configured scope."
1678
},
1679
{
1680
"description": "Enables the is_maximizable command without any pre-configured scope.",
1681
"type": "string",
1682
+
"const": "core:window:allow-is-maximizable",
1683
+
"markdownDescription": "Enables the is_maximizable command without any pre-configured scope."
1684
},
1685
{
1686
"description": "Enables the is_maximized command without any pre-configured scope.",
1687
"type": "string",
1688
+
"const": "core:window:allow-is-maximized",
1689
+
"markdownDescription": "Enables the is_maximized command without any pre-configured scope."
1690
},
1691
{
1692
"description": "Enables the is_minimizable command without any pre-configured scope.",
1693
"type": "string",
1694
+
"const": "core:window:allow-is-minimizable",
1695
+
"markdownDescription": "Enables the is_minimizable command without any pre-configured scope."
1696
},
1697
{
1698
"description": "Enables the is_minimized command without any pre-configured scope.",
1699
"type": "string",
1700
+
"const": "core:window:allow-is-minimized",
1701
+
"markdownDescription": "Enables the is_minimized command without any pre-configured scope."
1702
},
1703
{
1704
"description": "Enables the is_resizable command without any pre-configured scope.",
1705
"type": "string",
1706
+
"const": "core:window:allow-is-resizable",
1707
+
"markdownDescription": "Enables the is_resizable command without any pre-configured scope."
1708
},
1709
{
1710
"description": "Enables the is_visible command without any pre-configured scope.",
1711
"type": "string",
1712
+
"const": "core:window:allow-is-visible",
1713
+
"markdownDescription": "Enables the is_visible command without any pre-configured scope."
1714
},
1715
{
1716
"description": "Enables the maximize command without any pre-configured scope.",
1717
"type": "string",
1718
+
"const": "core:window:allow-maximize",
1719
+
"markdownDescription": "Enables the maximize command without any pre-configured scope."
1720
},
1721
{
1722
"description": "Enables the minimize command without any pre-configured scope.",
1723
"type": "string",
1724
+
"const": "core:window:allow-minimize",
1725
+
"markdownDescription": "Enables the minimize command without any pre-configured scope."
1726
},
1727
{
1728
"description": "Enables the monitor_from_point command without any pre-configured scope.",
1729
"type": "string",
1730
+
"const": "core:window:allow-monitor-from-point",
1731
+
"markdownDescription": "Enables the monitor_from_point command without any pre-configured scope."
1732
},
1733
{
1734
"description": "Enables the outer_position command without any pre-configured scope.",
1735
"type": "string",
1736
+
"const": "core:window:allow-outer-position",
1737
+
"markdownDescription": "Enables the outer_position command without any pre-configured scope."
1738
},
1739
{
1740
"description": "Enables the outer_size command without any pre-configured scope.",
1741
"type": "string",
1742
+
"const": "core:window:allow-outer-size",
1743
+
"markdownDescription": "Enables the outer_size command without any pre-configured scope."
1744
},
1745
{
1746
"description": "Enables the primary_monitor command without any pre-configured scope.",
1747
"type": "string",
1748
+
"const": "core:window:allow-primary-monitor",
1749
+
"markdownDescription": "Enables the primary_monitor command without any pre-configured scope."
1750
},
1751
{
1752
"description": "Enables the request_user_attention command without any pre-configured scope.",
1753
"type": "string",
1754
+
"const": "core:window:allow-request-user-attention",
1755
+
"markdownDescription": "Enables the request_user_attention command without any pre-configured scope."
1756
},
1757
{
1758
"description": "Enables the scale_factor command without any pre-configured scope.",
1759
"type": "string",
1760
+
"const": "core:window:allow-scale-factor",
1761
+
"markdownDescription": "Enables the scale_factor command without any pre-configured scope."
1762
},
1763
{
1764
"description": "Enables the set_always_on_bottom command without any pre-configured scope.",
1765
"type": "string",
1766
+
"const": "core:window:allow-set-always-on-bottom",
1767
+
"markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope."
1768
},
1769
{
1770
"description": "Enables the set_always_on_top command without any pre-configured scope.",
1771
"type": "string",
1772
+
"const": "core:window:allow-set-always-on-top",
1773
+
"markdownDescription": "Enables the set_always_on_top command without any pre-configured scope."
1774
+
},
1775
+
{
1776
+
"description": "Enables the set_background_color command without any pre-configured scope.",
1777
+
"type": "string",
1778
+
"const": "core:window:allow-set-background-color",
1779
+
"markdownDescription": "Enables the set_background_color command without any pre-configured scope."
1780
+
},
1781
+
{
1782
+
"description": "Enables the set_badge_count command without any pre-configured scope.",
1783
+
"type": "string",
1784
+
"const": "core:window:allow-set-badge-count",
1785
+
"markdownDescription": "Enables the set_badge_count command without any pre-configured scope."
1786
+
},
1787
+
{
1788
+
"description": "Enables the set_badge_label command without any pre-configured scope.",
1789
+
"type": "string",
1790
+
"const": "core:window:allow-set-badge-label",
1791
+
"markdownDescription": "Enables the set_badge_label command without any pre-configured scope."
1792
},
1793
{
1794
"description": "Enables the set_closable command without any pre-configured scope.",
1795
"type": "string",
1796
+
"const": "core:window:allow-set-closable",
1797
+
"markdownDescription": "Enables the set_closable command without any pre-configured scope."
1798
},
1799
{
1800
"description": "Enables the set_content_protected command without any pre-configured scope.",
1801
"type": "string",
1802
+
"const": "core:window:allow-set-content-protected",
1803
+
"markdownDescription": "Enables the set_content_protected command without any pre-configured scope."
1804
},
1805
{
1806
"description": "Enables the set_cursor_grab command without any pre-configured scope.",
1807
"type": "string",
1808
+
"const": "core:window:allow-set-cursor-grab",
1809
+
"markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope."
1810
},
1811
{
1812
"description": "Enables the set_cursor_icon command without any pre-configured scope.",
1813
"type": "string",
1814
+
"const": "core:window:allow-set-cursor-icon",
1815
+
"markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope."
1816
},
1817
{
1818
"description": "Enables the set_cursor_position command without any pre-configured scope.",
1819
"type": "string",
1820
+
"const": "core:window:allow-set-cursor-position",
1821
+
"markdownDescription": "Enables the set_cursor_position command without any pre-configured scope."
1822
},
1823
{
1824
"description": "Enables the set_cursor_visible command without any pre-configured scope.",
1825
"type": "string",
1826
+
"const": "core:window:allow-set-cursor-visible",
1827
+
"markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope."
1828
},
1829
{
1830
"description": "Enables the set_decorations command without any pre-configured scope.",
1831
"type": "string",
1832
+
"const": "core:window:allow-set-decorations",
1833
+
"markdownDescription": "Enables the set_decorations command without any pre-configured scope."
1834
},
1835
{
1836
"description": "Enables the set_effects command without any pre-configured scope.",
1837
"type": "string",
1838
+
"const": "core:window:allow-set-effects",
1839
+
"markdownDescription": "Enables the set_effects command without any pre-configured scope."
1840
},
1841
{
1842
"description": "Enables the set_enabled command without any pre-configured scope.",
1843
"type": "string",
1844
+
"const": "core:window:allow-set-enabled",
1845
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
1846
},
1847
{
1848
"description": "Enables the set_focus command without any pre-configured scope.",
1849
"type": "string",
1850
+
"const": "core:window:allow-set-focus",
1851
+
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1852
+
},
1853
+
{
1854
+
"description": "Enables the set_focusable command without any pre-configured scope.",
1855
+
"type": "string",
1856
+
"const": "core:window:allow-set-focusable",
1857
+
"markdownDescription": "Enables the set_focusable command without any pre-configured scope."
1858
},
1859
{
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1861
"type": "string",
1862
+
"const": "core:window:allow-set-fullscreen",
1863
+
"markdownDescription": "Enables the set_fullscreen command without any pre-configured scope."
1864
},
1865
{
1866
"description": "Enables the set_icon command without any pre-configured scope.",
1867
"type": "string",
1868
+
"const": "core:window:allow-set-icon",
1869
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1870
},
1871
{
1872
"description": "Enables the set_ignore_cursor_events command without any pre-configured scope.",
1873
"type": "string",
1874
+
"const": "core:window:allow-set-ignore-cursor-events",
1875
+
"markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope."
1876
},
1877
{
1878
"description": "Enables the set_max_size command without any pre-configured scope.",
1879
"type": "string",
1880
+
"const": "core:window:allow-set-max-size",
1881
+
"markdownDescription": "Enables the set_max_size command without any pre-configured scope."
1882
},
1883
{
1884
"description": "Enables the set_maximizable command without any pre-configured scope.",
1885
"type": "string",
1886
+
"const": "core:window:allow-set-maximizable",
1887
+
"markdownDescription": "Enables the set_maximizable command without any pre-configured scope."
1888
},
1889
{
1890
"description": "Enables the set_min_size command without any pre-configured scope.",
1891
"type": "string",
1892
+
"const": "core:window:allow-set-min-size",
1893
+
"markdownDescription": "Enables the set_min_size command without any pre-configured scope."
1894
},
1895
{
1896
"description": "Enables the set_minimizable command without any pre-configured scope.",
1897
"type": "string",
1898
+
"const": "core:window:allow-set-minimizable",
1899
+
"markdownDescription": "Enables the set_minimizable command without any pre-configured scope."
1900
+
},
1901
+
{
1902
+
"description": "Enables the set_overlay_icon command without any pre-configured scope.",
1903
+
"type": "string",
1904
+
"const": "core:window:allow-set-overlay-icon",
1905
+
"markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope."
1906
},
1907
{
1908
"description": "Enables the set_position command without any pre-configured scope.",
1909
"type": "string",
1910
+
"const": "core:window:allow-set-position",
1911
+
"markdownDescription": "Enables the set_position command without any pre-configured scope."
1912
},
1913
{
1914
"description": "Enables the set_progress_bar command without any pre-configured scope.",
1915
"type": "string",
1916
+
"const": "core:window:allow-set-progress-bar",
1917
+
"markdownDescription": "Enables the set_progress_bar command without any pre-configured scope."
1918
},
1919
{
1920
"description": "Enables the set_resizable command without any pre-configured scope.",
1921
"type": "string",
1922
+
"const": "core:window:allow-set-resizable",
1923
+
"markdownDescription": "Enables the set_resizable command without any pre-configured scope."
1924
},
1925
{
1926
"description": "Enables the set_shadow command without any pre-configured scope.",
1927
"type": "string",
1928
+
"const": "core:window:allow-set-shadow",
1929
+
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1930
+
},
1931
+
{
1932
+
"description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
1933
+
"type": "string",
1934
+
"const": "core:window:allow-set-simple-fullscreen",
1935
+
"markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
1936
},
1937
{
1938
"description": "Enables the set_size command without any pre-configured scope.",
1939
"type": "string",
1940
+
"const": "core:window:allow-set-size",
1941
+
"markdownDescription": "Enables the set_size command without any pre-configured scope."
1942
},
1943
{
1944
"description": "Enables the set_size_constraints command without any pre-configured scope.",
1945
"type": "string",
1946
+
"const": "core:window:allow-set-size-constraints",
1947
+
"markdownDescription": "Enables the set_size_constraints command without any pre-configured scope."
1948
},
1949
{
1950
"description": "Enables the set_skip_taskbar command without any pre-configured scope.",
1951
"type": "string",
1952
+
"const": "core:window:allow-set-skip-taskbar",
1953
+
"markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope."
1954
},
1955
{
1956
"description": "Enables the set_theme command without any pre-configured scope.",
1957
"type": "string",
1958
+
"const": "core:window:allow-set-theme",
1959
+
"markdownDescription": "Enables the set_theme command without any pre-configured scope."
1960
},
1961
{
1962
"description": "Enables the set_title command without any pre-configured scope.",
1963
"type": "string",
1964
+
"const": "core:window:allow-set-title",
1965
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1966
},
1967
{
1968
"description": "Enables the set_title_bar_style command without any pre-configured scope.",
1969
"type": "string",
1970
+
"const": "core:window:allow-set-title-bar-style",
1971
+
"markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope."
1972
},
1973
{
1974
"description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.",
1975
"type": "string",
1976
+
"const": "core:window:allow-set-visible-on-all-workspaces",
1977
+
"markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope."
1978
},
1979
{
1980
"description": "Enables the show command without any pre-configured scope.",
1981
"type": "string",
1982
+
"const": "core:window:allow-show",
1983
+
"markdownDescription": "Enables the show command without any pre-configured scope."
1984
},
1985
{
1986
"description": "Enables the start_dragging command without any pre-configured scope.",
1987
"type": "string",
1988
+
"const": "core:window:allow-start-dragging",
1989
+
"markdownDescription": "Enables the start_dragging command without any pre-configured scope."
1990
},
1991
{
1992
"description": "Enables the start_resize_dragging command without any pre-configured scope.",
1993
"type": "string",
1994
+
"const": "core:window:allow-start-resize-dragging",
1995
+
"markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope."
1996
},
1997
{
1998
"description": "Enables the theme command without any pre-configured scope.",
1999
"type": "string",
2000
+
"const": "core:window:allow-theme",
2001
+
"markdownDescription": "Enables the theme command without any pre-configured scope."
2002
},
2003
{
2004
"description": "Enables the title command without any pre-configured scope.",
2005
"type": "string",
2006
+
"const": "core:window:allow-title",
2007
+
"markdownDescription": "Enables the title command without any pre-configured scope."
2008
},
2009
{
2010
"description": "Enables the toggle_maximize command without any pre-configured scope.",
2011
"type": "string",
2012
+
"const": "core:window:allow-toggle-maximize",
2013
+
"markdownDescription": "Enables the toggle_maximize command without any pre-configured scope."
2014
},
2015
{
2016
"description": "Enables the unmaximize command without any pre-configured scope.",
2017
"type": "string",
2018
+
"const": "core:window:allow-unmaximize",
2019
+
"markdownDescription": "Enables the unmaximize command without any pre-configured scope."
2020
},
2021
{
2022
"description": "Enables the unminimize command without any pre-configured scope.",
2023
"type": "string",
2024
+
"const": "core:window:allow-unminimize",
2025
+
"markdownDescription": "Enables the unminimize command without any pre-configured scope."
2026
},
2027
{
2028
"description": "Denies the available_monitors command without any pre-configured scope.",
2029
"type": "string",
2030
+
"const": "core:window:deny-available-monitors",
2031
+
"markdownDescription": "Denies the available_monitors command without any pre-configured scope."
2032
},
2033
{
2034
"description": "Denies the center command without any pre-configured scope.",
2035
"type": "string",
2036
+
"const": "core:window:deny-center",
2037
+
"markdownDescription": "Denies the center command without any pre-configured scope."
2038
},
2039
{
2040
"description": "Denies the close command without any pre-configured scope.",
2041
"type": "string",
2042
+
"const": "core:window:deny-close",
2043
+
"markdownDescription": "Denies the close command without any pre-configured scope."
2044
},
2045
{
2046
"description": "Denies the create command without any pre-configured scope.",
2047
"type": "string",
2048
+
"const": "core:window:deny-create",
2049
+
"markdownDescription": "Denies the create command without any pre-configured scope."
2050
},
2051
{
2052
"description": "Denies the current_monitor command without any pre-configured scope.",
2053
"type": "string",
2054
+
"const": "core:window:deny-current-monitor",
2055
+
"markdownDescription": "Denies the current_monitor command without any pre-configured scope."
2056
},
2057
{
2058
"description": "Denies the cursor_position command without any pre-configured scope.",
2059
"type": "string",
2060
+
"const": "core:window:deny-cursor-position",
2061
+
"markdownDescription": "Denies the cursor_position command without any pre-configured scope."
2062
},
2063
{
2064
"description": "Denies the destroy command without any pre-configured scope.",
2065
"type": "string",
2066
+
"const": "core:window:deny-destroy",
2067
+
"markdownDescription": "Denies the destroy command without any pre-configured scope."
2068
},
2069
{
2070
"description": "Denies the get_all_windows command without any pre-configured scope.",
2071
"type": "string",
2072
+
"const": "core:window:deny-get-all-windows",
2073
+
"markdownDescription": "Denies the get_all_windows command without any pre-configured scope."
2074
},
2075
{
2076
"description": "Denies the hide command without any pre-configured scope.",
2077
"type": "string",
2078
+
"const": "core:window:deny-hide",
2079
+
"markdownDescription": "Denies the hide command without any pre-configured scope."
2080
},
2081
{
2082
"description": "Denies the inner_position command without any pre-configured scope.",
2083
"type": "string",
2084
+
"const": "core:window:deny-inner-position",
2085
+
"markdownDescription": "Denies the inner_position command without any pre-configured scope."
2086
},
2087
{
2088
"description": "Denies the inner_size command without any pre-configured scope.",
2089
"type": "string",
2090
+
"const": "core:window:deny-inner-size",
2091
+
"markdownDescription": "Denies the inner_size command without any pre-configured scope."
2092
},
2093
{
2094
"description": "Denies the internal_toggle_maximize command without any pre-configured scope.",
2095
"type": "string",
2096
+
"const": "core:window:deny-internal-toggle-maximize",
2097
+
"markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope."
2098
+
},
2099
+
{
2100
+
"description": "Denies the is_always_on_top command without any pre-configured scope.",
2101
+
"type": "string",
2102
+
"const": "core:window:deny-is-always-on-top",
2103
+
"markdownDescription": "Denies the is_always_on_top command without any pre-configured scope."
2104
},
2105
{
2106
"description": "Denies the is_closable command without any pre-configured scope.",
2107
"type": "string",
2108
+
"const": "core:window:deny-is-closable",
2109
+
"markdownDescription": "Denies the is_closable command without any pre-configured scope."
2110
},
2111
{
2112
"description": "Denies the is_decorated command without any pre-configured scope.",
2113
"type": "string",
2114
+
"const": "core:window:deny-is-decorated",
2115
+
"markdownDescription": "Denies the is_decorated command without any pre-configured scope."
2116
},
2117
{
2118
"description": "Denies the is_enabled command without any pre-configured scope.",
2119
"type": "string",
2120
+
"const": "core:window:deny-is-enabled",
2121
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
2122
},
2123
{
2124
"description": "Denies the is_focused command without any pre-configured scope.",
2125
"type": "string",
2126
+
"const": "core:window:deny-is-focused",
2127
+
"markdownDescription": "Denies the is_focused command without any pre-configured scope."
2128
},
2129
{
2130
"description": "Denies the is_fullscreen command without any pre-configured scope.",
2131
"type": "string",
2132
+
"const": "core:window:deny-is-fullscreen",
2133
+
"markdownDescription": "Denies the is_fullscreen command without any pre-configured scope."
2134
},
2135
{
2136
"description": "Denies the is_maximizable command without any pre-configured scope.",
2137
"type": "string",
2138
+
"const": "core:window:deny-is-maximizable",
2139
+
"markdownDescription": "Denies the is_maximizable command without any pre-configured scope."
2140
},
2141
{
2142
"description": "Denies the is_maximized command without any pre-configured scope.",
2143
"type": "string",
2144
+
"const": "core:window:deny-is-maximized",
2145
+
"markdownDescription": "Denies the is_maximized command without any pre-configured scope."
2146
},
2147
{
2148
"description": "Denies the is_minimizable command without any pre-configured scope.",
2149
"type": "string",
2150
+
"const": "core:window:deny-is-minimizable",
2151
+
"markdownDescription": "Denies the is_minimizable command without any pre-configured scope."
2152
},
2153
{
2154
"description": "Denies the is_minimized command without any pre-configured scope.",
2155
"type": "string",
2156
+
"const": "core:window:deny-is-minimized",
2157
+
"markdownDescription": "Denies the is_minimized command without any pre-configured scope."
2158
},
2159
{
2160
"description": "Denies the is_resizable command without any pre-configured scope.",
2161
"type": "string",
2162
+
"const": "core:window:deny-is-resizable",
2163
+
"markdownDescription": "Denies the is_resizable command without any pre-configured scope."
2164
},
2165
{
2166
"description": "Denies the is_visible command without any pre-configured scope.",
2167
"type": "string",
2168
+
"const": "core:window:deny-is-visible",
2169
+
"markdownDescription": "Denies the is_visible command without any pre-configured scope."
2170
},
2171
{
2172
"description": "Denies the maximize command without any pre-configured scope.",
2173
"type": "string",
2174
+
"const": "core:window:deny-maximize",
2175
+
"markdownDescription": "Denies the maximize command without any pre-configured scope."
2176
},
2177
{
2178
"description": "Denies the minimize command without any pre-configured scope.",
2179
"type": "string",
2180
+
"const": "core:window:deny-minimize",
2181
+
"markdownDescription": "Denies the minimize command without any pre-configured scope."
2182
},
2183
{
2184
"description": "Denies the monitor_from_point command without any pre-configured scope.",
2185
"type": "string",
2186
+
"const": "core:window:deny-monitor-from-point",
2187
+
"markdownDescription": "Denies the monitor_from_point command without any pre-configured scope."
2188
},
2189
{
2190
"description": "Denies the outer_position command without any pre-configured scope.",
2191
"type": "string",
2192
+
"const": "core:window:deny-outer-position",
2193
+
"markdownDescription": "Denies the outer_position command without any pre-configured scope."
2194
},
2195
{
2196
"description": "Denies the outer_size command without any pre-configured scope.",
2197
"type": "string",
2198
+
"const": "core:window:deny-outer-size",
2199
+
"markdownDescription": "Denies the outer_size command without any pre-configured scope."
2200
},
2201
{
2202
"description": "Denies the primary_monitor command without any pre-configured scope.",
2203
"type": "string",
2204
+
"const": "core:window:deny-primary-monitor",
2205
+
"markdownDescription": "Denies the primary_monitor command without any pre-configured scope."
2206
},
2207
{
2208
"description": "Denies the request_user_attention command without any pre-configured scope.",
2209
"type": "string",
2210
+
"const": "core:window:deny-request-user-attention",
2211
+
"markdownDescription": "Denies the request_user_attention command without any pre-configured scope."
2212
},
2213
{
2214
"description": "Denies the scale_factor command without any pre-configured scope.",
2215
"type": "string",
2216
+
"const": "core:window:deny-scale-factor",
2217
+
"markdownDescription": "Denies the scale_factor command without any pre-configured scope."
2218
},
2219
{
2220
"description": "Denies the set_always_on_bottom command without any pre-configured scope.",
2221
"type": "string",
2222
+
"const": "core:window:deny-set-always-on-bottom",
2223
+
"markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope."
2224
},
2225
{
2226
"description": "Denies the set_always_on_top command without any pre-configured scope.",
2227
"type": "string",
2228
+
"const": "core:window:deny-set-always-on-top",
2229
+
"markdownDescription": "Denies the set_always_on_top command without any pre-configured scope."
2230
+
},
2231
+
{
2232
+
"description": "Denies the set_background_color command without any pre-configured scope.",
2233
+
"type": "string",
2234
+
"const": "core:window:deny-set-background-color",
2235
+
"markdownDescription": "Denies the set_background_color command without any pre-configured scope."
2236
+
},
2237
+
{
2238
+
"description": "Denies the set_badge_count command without any pre-configured scope.",
2239
+
"type": "string",
2240
+
"const": "core:window:deny-set-badge-count",
2241
+
"markdownDescription": "Denies the set_badge_count command without any pre-configured scope."
2242
+
},
2243
+
{
2244
+
"description": "Denies the set_badge_label command without any pre-configured scope.",
2245
+
"type": "string",
2246
+
"const": "core:window:deny-set-badge-label",
2247
+
"markdownDescription": "Denies the set_badge_label command without any pre-configured scope."
2248
},
2249
{
2250
"description": "Denies the set_closable command without any pre-configured scope.",
2251
"type": "string",
2252
+
"const": "core:window:deny-set-closable",
2253
+
"markdownDescription": "Denies the set_closable command without any pre-configured scope."
2254
},
2255
{
2256
"description": "Denies the set_content_protected command without any pre-configured scope.",
2257
"type": "string",
2258
+
"const": "core:window:deny-set-content-protected",
2259
+
"markdownDescription": "Denies the set_content_protected command without any pre-configured scope."
2260
},
2261
{
2262
"description": "Denies the set_cursor_grab command without any pre-configured scope.",
2263
"type": "string",
2264
+
"const": "core:window:deny-set-cursor-grab",
2265
+
"markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope."
2266
},
2267
{
2268
"description": "Denies the set_cursor_icon command without any pre-configured scope.",
2269
"type": "string",
2270
+
"const": "core:window:deny-set-cursor-icon",
2271
+
"markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope."
2272
},
2273
{
2274
"description": "Denies the set_cursor_position command without any pre-configured scope.",
2275
"type": "string",
2276
+
"const": "core:window:deny-set-cursor-position",
2277
+
"markdownDescription": "Denies the set_cursor_position command without any pre-configured scope."
2278
},
2279
{
2280
"description": "Denies the set_cursor_visible command without any pre-configured scope.",
2281
"type": "string",
2282
+
"const": "core:window:deny-set-cursor-visible",
2283
+
"markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope."
2284
},
2285
{
2286
"description": "Denies the set_decorations command without any pre-configured scope.",
2287
"type": "string",
2288
+
"const": "core:window:deny-set-decorations",
2289
+
"markdownDescription": "Denies the set_decorations command without any pre-configured scope."
2290
},
2291
{
2292
"description": "Denies the set_effects command without any pre-configured scope.",
2293
"type": "string",
2294
+
"const": "core:window:deny-set-effects",
2295
+
"markdownDescription": "Denies the set_effects command without any pre-configured scope."
2296
},
2297
{
2298
"description": "Denies the set_enabled command without any pre-configured scope.",
2299
"type": "string",
2300
+
"const": "core:window:deny-set-enabled",
2301
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
2302
},
2303
{
2304
"description": "Denies the set_focus command without any pre-configured scope.",
2305
"type": "string",
2306
+
"const": "core:window:deny-set-focus",
2307
+
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2308
+
},
2309
+
{
2310
+
"description": "Denies the set_focusable command without any pre-configured scope.",
2311
+
"type": "string",
2312
+
"const": "core:window:deny-set-focusable",
2313
+
"markdownDescription": "Denies the set_focusable command without any pre-configured scope."
2314
},
2315
{
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2317
"type": "string",
2318
+
"const": "core:window:deny-set-fullscreen",
2319
+
"markdownDescription": "Denies the set_fullscreen command without any pre-configured scope."
2320
},
2321
{
2322
"description": "Denies the set_icon command without any pre-configured scope.",
2323
"type": "string",
2324
+
"const": "core:window:deny-set-icon",
2325
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
2326
},
2327
{
2328
"description": "Denies the set_ignore_cursor_events command without any pre-configured scope.",
2329
"type": "string",
2330
+
"const": "core:window:deny-set-ignore-cursor-events",
2331
+
"markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope."
2332
},
2333
{
2334
"description": "Denies the set_max_size command without any pre-configured scope.",
2335
"type": "string",
2336
+
"const": "core:window:deny-set-max-size",
2337
+
"markdownDescription": "Denies the set_max_size command without any pre-configured scope."
2338
},
2339
{
2340
"description": "Denies the set_maximizable command without any pre-configured scope.",
2341
"type": "string",
2342
+
"const": "core:window:deny-set-maximizable",
2343
+
"markdownDescription": "Denies the set_maximizable command without any pre-configured scope."
2344
},
2345
{
2346
"description": "Denies the set_min_size command without any pre-configured scope.",
2347
"type": "string",
2348
+
"const": "core:window:deny-set-min-size",
2349
+
"markdownDescription": "Denies the set_min_size command without any pre-configured scope."
2350
},
2351
{
2352
"description": "Denies the set_minimizable command without any pre-configured scope.",
2353
"type": "string",
2354
+
"const": "core:window:deny-set-minimizable",
2355
+
"markdownDescription": "Denies the set_minimizable command without any pre-configured scope."
2356
+
},
2357
+
{
2358
+
"description": "Denies the set_overlay_icon command without any pre-configured scope.",
2359
+
"type": "string",
2360
+
"const": "core:window:deny-set-overlay-icon",
2361
+
"markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope."
2362
},
2363
{
2364
"description": "Denies the set_position command without any pre-configured scope.",
2365
"type": "string",
2366
+
"const": "core:window:deny-set-position",
2367
+
"markdownDescription": "Denies the set_position command without any pre-configured scope."
2368
},
2369
{
2370
"description": "Denies the set_progress_bar command without any pre-configured scope.",
2371
"type": "string",
2372
+
"const": "core:window:deny-set-progress-bar",
2373
+
"markdownDescription": "Denies the set_progress_bar command without any pre-configured scope."
2374
},
2375
{
2376
"description": "Denies the set_resizable command without any pre-configured scope.",
2377
"type": "string",
2378
+
"const": "core:window:deny-set-resizable",
2379
+
"markdownDescription": "Denies the set_resizable command without any pre-configured scope."
2380
},
2381
{
2382
"description": "Denies the set_shadow command without any pre-configured scope.",
2383
"type": "string",
2384
+
"const": "core:window:deny-set-shadow",
2385
+
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2386
+
},
2387
+
{
2388
+
"description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
2389
+
"type": "string",
2390
+
"const": "core:window:deny-set-simple-fullscreen",
2391
+
"markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
2392
},
2393
{
2394
"description": "Denies the set_size command without any pre-configured scope.",
2395
"type": "string",
2396
+
"const": "core:window:deny-set-size",
2397
+
"markdownDescription": "Denies the set_size command without any pre-configured scope."
2398
},
2399
{
2400
"description": "Denies the set_size_constraints command without any pre-configured scope.",
2401
"type": "string",
2402
+
"const": "core:window:deny-set-size-constraints",
2403
+
"markdownDescription": "Denies the set_size_constraints command without any pre-configured scope."
2404
},
2405
{
2406
"description": "Denies the set_skip_taskbar command without any pre-configured scope.",
2407
"type": "string",
2408
+
"const": "core:window:deny-set-skip-taskbar",
2409
+
"markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope."
2410
},
2411
{
2412
"description": "Denies the set_theme command without any pre-configured scope.",
2413
"type": "string",
2414
+
"const": "core:window:deny-set-theme",
2415
+
"markdownDescription": "Denies the set_theme command without any pre-configured scope."
2416
},
2417
{
2418
"description": "Denies the set_title command without any pre-configured scope.",
2419
"type": "string",
2420
+
"const": "core:window:deny-set-title",
2421
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
2422
},
2423
{
2424
"description": "Denies the set_title_bar_style command without any pre-configured scope.",
2425
"type": "string",
2426
+
"const": "core:window:deny-set-title-bar-style",
2427
+
"markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope."
2428
},
2429
{
2430
"description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.",
2431
"type": "string",
2432
+
"const": "core:window:deny-set-visible-on-all-workspaces",
2433
+
"markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope."
2434
},
2435
{
2436
"description": "Denies the show command without any pre-configured scope.",
2437
"type": "string",
2438
+
"const": "core:window:deny-show",
2439
+
"markdownDescription": "Denies the show command without any pre-configured scope."
2440
},
2441
{
2442
"description": "Denies the start_dragging command without any pre-configured scope.",
2443
"type": "string",
2444
+
"const": "core:window:deny-start-dragging",
2445
+
"markdownDescription": "Denies the start_dragging command without any pre-configured scope."
2446
},
2447
{
2448
"description": "Denies the start_resize_dragging command without any pre-configured scope.",
2449
"type": "string",
2450
+
"const": "core:window:deny-start-resize-dragging",
2451
+
"markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope."
2452
},
2453
{
2454
"description": "Denies the theme command without any pre-configured scope.",
2455
"type": "string",
2456
+
"const": "core:window:deny-theme",
2457
+
"markdownDescription": "Denies the theme command without any pre-configured scope."
2458
},
2459
{
2460
"description": "Denies the title command without any pre-configured scope.",
2461
"type": "string",
2462
+
"const": "core:window:deny-title",
2463
+
"markdownDescription": "Denies the title command without any pre-configured scope."
2464
},
2465
{
2466
"description": "Denies the toggle_maximize command without any pre-configured scope.",
2467
"type": "string",
2468
+
"const": "core:window:deny-toggle-maximize",
2469
+
"markdownDescription": "Denies the toggle_maximize command without any pre-configured scope."
2470
},
2471
{
2472
"description": "Denies the unmaximize command without any pre-configured scope.",
2473
"type": "string",
2474
+
"const": "core:window:deny-unmaximize",
2475
+
"markdownDescription": "Denies the unmaximize command without any pre-configured scope."
2476
},
2477
{
2478
"description": "Denies the unminimize command without any pre-configured scope.",
2479
"type": "string",
2480
+
"const": "core:window:deny-unminimize",
2481
+
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2482
},
2483
{
2484
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
2485
"type": "string",
2486
+
"const": "http:default",
2487
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
2488
},
2489
{
2490
"description": "Enables the fetch command without any pre-configured scope.",
2491
"type": "string",
2492
+
"const": "http:allow-fetch",
2493
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
2494
},
2495
{
2496
"description": "Enables the fetch_cancel command without any pre-configured scope.",
2497
"type": "string",
2498
+
"const": "http:allow-fetch-cancel",
2499
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
2500
},
2501
{
2502
"description": "Enables the fetch_read_body command without any pre-configured scope.",
2503
"type": "string",
2504
+
"const": "http:allow-fetch-read-body",
2505
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
2506
},
2507
{
2508
"description": "Enables the fetch_send command without any pre-configured scope.",
2509
"type": "string",
2510
+
"const": "http:allow-fetch-send",
2511
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
2512
},
2513
{
2514
"description": "Denies the fetch command without any pre-configured scope.",
2515
"type": "string",
2516
+
"const": "http:deny-fetch",
2517
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
2518
},
2519
{
2520
"description": "Denies the fetch_cancel command without any pre-configured scope.",
2521
"type": "string",
2522
+
"const": "http:deny-fetch-cancel",
2523
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
2524
},
2525
{
2526
"description": "Denies the fetch_read_body command without any pre-configured scope.",
2527
"type": "string",
2528
+
"const": "http:deny-fetch-read-body",
2529
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
2530
},
2531
{
2532
"description": "Denies the fetch_send command without any pre-configured scope.",
2533
"type": "string",
2534
+
"const": "http:deny-fetch-send",
2535
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
2536
},
2537
{
2538
+
"description": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`",
2539
"type": "string",
2540
+
"const": "process:default",
2541
+
"markdownDescription": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`"
2542
},
2543
{
2544
"description": "Enables the exit command without any pre-configured scope.",
2545
"type": "string",
2546
+
"const": "process:allow-exit",
2547
+
"markdownDescription": "Enables the exit command without any pre-configured scope."
2548
},
2549
{
2550
"description": "Enables the restart command without any pre-configured scope.",
2551
"type": "string",
2552
+
"const": "process:allow-restart",
2553
+
"markdownDescription": "Enables the restart command without any pre-configured scope."
2554
},
2555
{
2556
"description": "Denies the exit command without any pre-configured scope.",
2557
"type": "string",
2558
+
"const": "process:deny-exit",
2559
+
"markdownDescription": "Denies the exit command without any pre-configured scope."
2560
},
2561
{
2562
"description": "Denies the restart command without any pre-configured scope.",
2563
"type": "string",
2564
+
"const": "process:deny-restart",
2565
+
"markdownDescription": "Denies the restart command without any pre-configured scope."
2566
},
2567
{
2568
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
2569
"type": "string",
2570
+
"const": "shell:default",
2571
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
2572
},
2573
{
2574
"description": "Enables the execute command without any pre-configured scope.",
2575
"type": "string",
2576
+
"const": "shell:allow-execute",
2577
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
2578
},
2579
{
2580
"description": "Enables the kill command without any pre-configured scope.",
2581
"type": "string",
2582
+
"const": "shell:allow-kill",
2583
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
2584
},
2585
{
2586
"description": "Enables the open command without any pre-configured scope.",
2587
"type": "string",
2588
+
"const": "shell:allow-open",
2589
+
"markdownDescription": "Enables the open command without any pre-configured scope."
2590
},
2591
{
2592
"description": "Enables the spawn command without any pre-configured scope.",
2593
"type": "string",
2594
+
"const": "shell:allow-spawn",
2595
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
2596
},
2597
{
2598
"description": "Enables the stdin_write command without any pre-configured scope.",
2599
"type": "string",
2600
+
"const": "shell:allow-stdin-write",
2601
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
2602
},
2603
{
2604
"description": "Denies the execute command without any pre-configured scope.",
2605
"type": "string",
2606
+
"const": "shell:deny-execute",
2607
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
2608
},
2609
{
2610
"description": "Denies the kill command without any pre-configured scope.",
2611
"type": "string",
2612
+
"const": "shell:deny-kill",
2613
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
2614
},
2615
{
2616
"description": "Denies the open command without any pre-configured scope.",
2617
"type": "string",
2618
+
"const": "shell:deny-open",
2619
+
"markdownDescription": "Denies the open command without any pre-configured scope."
2620
},
2621
{
2622
"description": "Denies the spawn command without any pre-configured scope.",
2623
"type": "string",
2624
+
"const": "shell:deny-spawn",
2625
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
2626
},
2627
{
2628
"description": "Denies the stdin_write command without any pre-configured scope.",
2629
"type": "string",
2630
+
"const": "shell:deny-stdin-write",
2631
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
2632
}
2633
]
2634
},
+2774
src-tauri/gen/schemas/linux-schema.json
+2774
src-tauri/gen/schemas/linux-schema.json
···
···
1
+
{
2
+
"$schema": "http://json-schema.org/draft-07/schema#",
3
+
"title": "CapabilityFile",
4
+
"description": "Capability formats accepted in a capability file.",
5
+
"anyOf": [
6
+
{
7
+
"description": "A single capability.",
8
+
"allOf": [
9
+
{
10
+
"$ref": "#/definitions/Capability"
11
+
}
12
+
]
13
+
},
14
+
{
15
+
"description": "A list of capabilities.",
16
+
"type": "array",
17
+
"items": {
18
+
"$ref": "#/definitions/Capability"
19
+
}
20
+
},
21
+
{
22
+
"description": "A list of capabilities.",
23
+
"type": "object",
24
+
"required": [
25
+
"capabilities"
26
+
],
27
+
"properties": {
28
+
"capabilities": {
29
+
"description": "The list of capabilities.",
30
+
"type": "array",
31
+
"items": {
32
+
"$ref": "#/definitions/Capability"
33
+
}
34
+
}
35
+
}
36
+
}
37
+
],
38
+
"definitions": {
39
+
"Capability": {
40
+
"description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
41
+
"type": "object",
42
+
"required": [
43
+
"identifier",
44
+
"permissions"
45
+
],
46
+
"properties": {
47
+
"identifier": {
48
+
"description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`",
49
+
"type": "string"
50
+
},
51
+
"description": {
52
+
"description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.",
53
+
"default": "",
54
+
"type": "string"
55
+
},
56
+
"remote": {
57
+
"description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```",
58
+
"anyOf": [
59
+
{
60
+
"$ref": "#/definitions/CapabilityRemote"
61
+
},
62
+
{
63
+
"type": "null"
64
+
}
65
+
]
66
+
},
67
+
"local": {
68
+
"description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.",
69
+
"default": true,
70
+
"type": "boolean"
71
+
},
72
+
"windows": {
73
+
"description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
74
+
"type": "array",
75
+
"items": {
76
+
"type": "string"
77
+
}
78
+
},
79
+
"webviews": {
80
+
"description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
81
+
"type": "array",
82
+
"items": {
83
+
"type": "string"
84
+
}
85
+
},
86
+
"permissions": {
87
+
"description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```",
88
+
"type": "array",
89
+
"items": {
90
+
"$ref": "#/definitions/PermissionEntry"
91
+
},
92
+
"uniqueItems": true
93
+
},
94
+
"platforms": {
95
+
"description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`",
96
+
"type": [
97
+
"array",
98
+
"null"
99
+
],
100
+
"items": {
101
+
"$ref": "#/definitions/Target"
102
+
}
103
+
}
104
+
}
105
+
},
106
+
"CapabilityRemote": {
107
+
"description": "Configuration for remote URLs that are associated with the capability.",
108
+
"type": "object",
109
+
"required": [
110
+
"urls"
111
+
],
112
+
"properties": {
113
+
"urls": {
114
+
"description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api",
115
+
"type": "array",
116
+
"items": {
117
+
"type": "string"
118
+
}
119
+
}
120
+
}
121
+
},
122
+
"PermissionEntry": {
123
+
"description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.",
124
+
"anyOf": [
125
+
{
126
+
"description": "Reference a permission or permission set by identifier.",
127
+
"allOf": [
128
+
{
129
+
"$ref": "#/definitions/Identifier"
130
+
}
131
+
]
132
+
},
133
+
{
134
+
"description": "Reference a permission or permission set by identifier and extends its scope.",
135
+
"type": "object",
136
+
"allOf": [
137
+
{
138
+
"if": {
139
+
"properties": {
140
+
"identifier": {
141
+
"anyOf": [
142
+
{
143
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
144
+
"type": "string",
145
+
"const": "http:default",
146
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
147
+
},
148
+
{
149
+
"description": "Enables the fetch command without any pre-configured scope.",
150
+
"type": "string",
151
+
"const": "http:allow-fetch",
152
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
153
+
},
154
+
{
155
+
"description": "Enables the fetch_cancel command without any pre-configured scope.",
156
+
"type": "string",
157
+
"const": "http:allow-fetch-cancel",
158
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
159
+
},
160
+
{
161
+
"description": "Enables the fetch_read_body command without any pre-configured scope.",
162
+
"type": "string",
163
+
"const": "http:allow-fetch-read-body",
164
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
165
+
},
166
+
{
167
+
"description": "Enables the fetch_send command without any pre-configured scope.",
168
+
"type": "string",
169
+
"const": "http:allow-fetch-send",
170
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
171
+
},
172
+
{
173
+
"description": "Denies the fetch command without any pre-configured scope.",
174
+
"type": "string",
175
+
"const": "http:deny-fetch",
176
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
177
+
},
178
+
{
179
+
"description": "Denies the fetch_cancel command without any pre-configured scope.",
180
+
"type": "string",
181
+
"const": "http:deny-fetch-cancel",
182
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
183
+
},
184
+
{
185
+
"description": "Denies the fetch_read_body command without any pre-configured scope.",
186
+
"type": "string",
187
+
"const": "http:deny-fetch-read-body",
188
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
189
+
},
190
+
{
191
+
"description": "Denies the fetch_send command without any pre-configured scope.",
192
+
"type": "string",
193
+
"const": "http:deny-fetch-send",
194
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
195
+
}
196
+
]
197
+
}
198
+
}
199
+
},
200
+
"then": {
201
+
"properties": {
202
+
"allow": {
203
+
"items": {
204
+
"title": "HttpScopeEntry",
205
+
"description": "HTTP scope entry.",
206
+
"anyOf": [
207
+
{
208
+
"description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"",
209
+
"type": "string"
210
+
},
211
+
{
212
+
"type": "object",
213
+
"required": [
214
+
"url"
215
+
],
216
+
"properties": {
217
+
"url": {
218
+
"description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"",
219
+
"type": "string"
220
+
}
221
+
}
222
+
}
223
+
]
224
+
}
225
+
},
226
+
"deny": {
227
+
"items": {
228
+
"title": "HttpScopeEntry",
229
+
"description": "HTTP scope entry.",
230
+
"anyOf": [
231
+
{
232
+
"description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"",
233
+
"type": "string"
234
+
},
235
+
{
236
+
"type": "object",
237
+
"required": [
238
+
"url"
239
+
],
240
+
"properties": {
241
+
"url": {
242
+
"description": "A URL that can be accessed by the webview when using the HTTP APIs. Wildcards can be used following the URL pattern standard.\n\nSee [the URL Pattern spec](https://urlpattern.spec.whatwg.org/) for more information.\n\nExamples:\n\n- \"https://*\" : allows all HTTPS origin on port 443\n\n- \"https://*:*\" : allows all HTTPS origin on any port\n\n- \"https://*.github.com/tauri-apps/tauri\": allows any subdomain of \"github.com\" with the \"tauri-apps/api\" path\n\n- \"https://myapi.service.com/users/*\": allows access to any URLs that begins with \"https://myapi.service.com/users/\"",
243
+
"type": "string"
244
+
}
245
+
}
246
+
}
247
+
]
248
+
}
249
+
}
250
+
}
251
+
},
252
+
"properties": {
253
+
"identifier": {
254
+
"description": "Identifier of the permission or permission set.",
255
+
"allOf": [
256
+
{
257
+
"$ref": "#/definitions/Identifier"
258
+
}
259
+
]
260
+
}
261
+
}
262
+
},
263
+
{
264
+
"if": {
265
+
"properties": {
266
+
"identifier": {
267
+
"anyOf": [
268
+
{
269
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
270
+
"type": "string",
271
+
"const": "shell:default",
272
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
273
+
},
274
+
{
275
+
"description": "Enables the execute command without any pre-configured scope.",
276
+
"type": "string",
277
+
"const": "shell:allow-execute",
278
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
279
+
},
280
+
{
281
+
"description": "Enables the kill command without any pre-configured scope.",
282
+
"type": "string",
283
+
"const": "shell:allow-kill",
284
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
285
+
},
286
+
{
287
+
"description": "Enables the open command without any pre-configured scope.",
288
+
"type": "string",
289
+
"const": "shell:allow-open",
290
+
"markdownDescription": "Enables the open command without any pre-configured scope."
291
+
},
292
+
{
293
+
"description": "Enables the spawn command without any pre-configured scope.",
294
+
"type": "string",
295
+
"const": "shell:allow-spawn",
296
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
297
+
},
298
+
{
299
+
"description": "Enables the stdin_write command without any pre-configured scope.",
300
+
"type": "string",
301
+
"const": "shell:allow-stdin-write",
302
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
303
+
},
304
+
{
305
+
"description": "Denies the execute command without any pre-configured scope.",
306
+
"type": "string",
307
+
"const": "shell:deny-execute",
308
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
309
+
},
310
+
{
311
+
"description": "Denies the kill command without any pre-configured scope.",
312
+
"type": "string",
313
+
"const": "shell:deny-kill",
314
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
315
+
},
316
+
{
317
+
"description": "Denies the open command without any pre-configured scope.",
318
+
"type": "string",
319
+
"const": "shell:deny-open",
320
+
"markdownDescription": "Denies the open command without any pre-configured scope."
321
+
},
322
+
{
323
+
"description": "Denies the spawn command without any pre-configured scope.",
324
+
"type": "string",
325
+
"const": "shell:deny-spawn",
326
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
327
+
},
328
+
{
329
+
"description": "Denies the stdin_write command without any pre-configured scope.",
330
+
"type": "string",
331
+
"const": "shell:deny-stdin-write",
332
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
333
+
}
334
+
]
335
+
}
336
+
}
337
+
},
338
+
"then": {
339
+
"properties": {
340
+
"allow": {
341
+
"items": {
342
+
"title": "ShellScopeEntry",
343
+
"description": "Shell scope entry.",
344
+
"anyOf": [
345
+
{
346
+
"type": "object",
347
+
"required": [
348
+
"cmd",
349
+
"name"
350
+
],
351
+
"properties": {
352
+
"args": {
353
+
"description": "The allowed arguments for the command execution.",
354
+
"allOf": [
355
+
{
356
+
"$ref": "#/definitions/ShellScopeEntryAllowedArgs"
357
+
}
358
+
]
359
+
},
360
+
"cmd": {
361
+
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
362
+
"type": "string"
363
+
},
364
+
"name": {
365
+
"description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
366
+
"type": "string"
367
+
}
368
+
},
369
+
"additionalProperties": false
370
+
},
371
+
{
372
+
"type": "object",
373
+
"required": [
374
+
"name",
375
+
"sidecar"
376
+
],
377
+
"properties": {
378
+
"args": {
379
+
"description": "The allowed arguments for the command execution.",
380
+
"allOf": [
381
+
{
382
+
"$ref": "#/definitions/ShellScopeEntryAllowedArgs"
383
+
}
384
+
]
385
+
},
386
+
"name": {
387
+
"description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
388
+
"type": "string"
389
+
},
390
+
"sidecar": {
391
+
"description": "If this command is a sidecar command.",
392
+
"type": "boolean"
393
+
}
394
+
},
395
+
"additionalProperties": false
396
+
}
397
+
]
398
+
}
399
+
},
400
+
"deny": {
401
+
"items": {
402
+
"title": "ShellScopeEntry",
403
+
"description": "Shell scope entry.",
404
+
"anyOf": [
405
+
{
406
+
"type": "object",
407
+
"required": [
408
+
"cmd",
409
+
"name"
410
+
],
411
+
"properties": {
412
+
"args": {
413
+
"description": "The allowed arguments for the command execution.",
414
+
"allOf": [
415
+
{
416
+
"$ref": "#/definitions/ShellScopeEntryAllowedArgs"
417
+
}
418
+
]
419
+
},
420
+
"cmd": {
421
+
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
422
+
"type": "string"
423
+
},
424
+
"name": {
425
+
"description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
426
+
"type": "string"
427
+
}
428
+
},
429
+
"additionalProperties": false
430
+
},
431
+
{
432
+
"type": "object",
433
+
"required": [
434
+
"name",
435
+
"sidecar"
436
+
],
437
+
"properties": {
438
+
"args": {
439
+
"description": "The allowed arguments for the command execution.",
440
+
"allOf": [
441
+
{
442
+
"$ref": "#/definitions/ShellScopeEntryAllowedArgs"
443
+
}
444
+
]
445
+
},
446
+
"name": {
447
+
"description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.",
448
+
"type": "string"
449
+
},
450
+
"sidecar": {
451
+
"description": "If this command is a sidecar command.",
452
+
"type": "boolean"
453
+
}
454
+
},
455
+
"additionalProperties": false
456
+
}
457
+
]
458
+
}
459
+
}
460
+
}
461
+
},
462
+
"properties": {
463
+
"identifier": {
464
+
"description": "Identifier of the permission or permission set.",
465
+
"allOf": [
466
+
{
467
+
"$ref": "#/definitions/Identifier"
468
+
}
469
+
]
470
+
}
471
+
}
472
+
},
473
+
{
474
+
"properties": {
475
+
"identifier": {
476
+
"description": "Identifier of the permission or permission set.",
477
+
"allOf": [
478
+
{
479
+
"$ref": "#/definitions/Identifier"
480
+
}
481
+
]
482
+
},
483
+
"allow": {
484
+
"description": "Data that defines what is allowed by the scope.",
485
+
"type": [
486
+
"array",
487
+
"null"
488
+
],
489
+
"items": {
490
+
"$ref": "#/definitions/Value"
491
+
}
492
+
},
493
+
"deny": {
494
+
"description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.",
495
+
"type": [
496
+
"array",
497
+
"null"
498
+
],
499
+
"items": {
500
+
"$ref": "#/definitions/Value"
501
+
}
502
+
}
503
+
}
504
+
}
505
+
],
506
+
"required": [
507
+
"identifier"
508
+
]
509
+
}
510
+
]
511
+
},
512
+
"Identifier": {
513
+
"description": "Permission identifier",
514
+
"oneOf": [
515
+
{
516
+
"description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`",
517
+
"type": "string",
518
+
"const": "core:default",
519
+
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
+
},
521
+
{
522
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
523
+
"type": "string",
524
+
"const": "core:app:default",
525
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
526
+
},
527
+
{
528
+
"description": "Enables the app_hide command without any pre-configured scope.",
529
+
"type": "string",
530
+
"const": "core:app:allow-app-hide",
531
+
"markdownDescription": "Enables the app_hide command without any pre-configured scope."
532
+
},
533
+
{
534
+
"description": "Enables the app_show command without any pre-configured scope.",
535
+
"type": "string",
536
+
"const": "core:app:allow-app-show",
537
+
"markdownDescription": "Enables the app_show command without any pre-configured scope."
538
+
},
539
+
{
540
+
"description": "Enables the bundle_type command without any pre-configured scope.",
541
+
"type": "string",
542
+
"const": "core:app:allow-bundle-type",
543
+
"markdownDescription": "Enables the bundle_type command without any pre-configured scope."
544
+
},
545
+
{
546
+
"description": "Enables the default_window_icon command without any pre-configured scope.",
547
+
"type": "string",
548
+
"const": "core:app:allow-default-window-icon",
549
+
"markdownDescription": "Enables the default_window_icon command without any pre-configured scope."
550
+
},
551
+
{
552
+
"description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.",
553
+
"type": "string",
554
+
"const": "core:app:allow-fetch-data-store-identifiers",
555
+
"markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope."
556
+
},
557
+
{
558
+
"description": "Enables the identifier command without any pre-configured scope.",
559
+
"type": "string",
560
+
"const": "core:app:allow-identifier",
561
+
"markdownDescription": "Enables the identifier command without any pre-configured scope."
562
+
},
563
+
{
564
+
"description": "Enables the name command without any pre-configured scope.",
565
+
"type": "string",
566
+
"const": "core:app:allow-name",
567
+
"markdownDescription": "Enables the name command without any pre-configured scope."
568
+
},
569
+
{
570
+
"description": "Enables the register_listener command without any pre-configured scope.",
571
+
"type": "string",
572
+
"const": "core:app:allow-register-listener",
573
+
"markdownDescription": "Enables the register_listener command without any pre-configured scope."
574
+
},
575
+
{
576
+
"description": "Enables the remove_data_store command without any pre-configured scope.",
577
+
"type": "string",
578
+
"const": "core:app:allow-remove-data-store",
579
+
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
580
+
},
581
+
{
582
+
"description": "Enables the remove_listener command without any pre-configured scope.",
583
+
"type": "string",
584
+
"const": "core:app:allow-remove-listener",
585
+
"markdownDescription": "Enables the remove_listener command without any pre-configured scope."
586
+
},
587
+
{
588
+
"description": "Enables the set_app_theme command without any pre-configured scope.",
589
+
"type": "string",
590
+
"const": "core:app:allow-set-app-theme",
591
+
"markdownDescription": "Enables the set_app_theme command without any pre-configured scope."
592
+
},
593
+
{
594
+
"description": "Enables the set_dock_visibility command without any pre-configured scope.",
595
+
"type": "string",
596
+
"const": "core:app:allow-set-dock-visibility",
597
+
"markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope."
598
+
},
599
+
{
600
+
"description": "Enables the tauri_version command without any pre-configured scope.",
601
+
"type": "string",
602
+
"const": "core:app:allow-tauri-version",
603
+
"markdownDescription": "Enables the tauri_version command without any pre-configured scope."
604
+
},
605
+
{
606
+
"description": "Enables the version command without any pre-configured scope.",
607
+
"type": "string",
608
+
"const": "core:app:allow-version",
609
+
"markdownDescription": "Enables the version command without any pre-configured scope."
610
+
},
611
+
{
612
+
"description": "Denies the app_hide command without any pre-configured scope.",
613
+
"type": "string",
614
+
"const": "core:app:deny-app-hide",
615
+
"markdownDescription": "Denies the app_hide command without any pre-configured scope."
616
+
},
617
+
{
618
+
"description": "Denies the app_show command without any pre-configured scope.",
619
+
"type": "string",
620
+
"const": "core:app:deny-app-show",
621
+
"markdownDescription": "Denies the app_show command without any pre-configured scope."
622
+
},
623
+
{
624
+
"description": "Denies the bundle_type command without any pre-configured scope.",
625
+
"type": "string",
626
+
"const": "core:app:deny-bundle-type",
627
+
"markdownDescription": "Denies the bundle_type command without any pre-configured scope."
628
+
},
629
+
{
630
+
"description": "Denies the default_window_icon command without any pre-configured scope.",
631
+
"type": "string",
632
+
"const": "core:app:deny-default-window-icon",
633
+
"markdownDescription": "Denies the default_window_icon command without any pre-configured scope."
634
+
},
635
+
{
636
+
"description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.",
637
+
"type": "string",
638
+
"const": "core:app:deny-fetch-data-store-identifiers",
639
+
"markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope."
640
+
},
641
+
{
642
+
"description": "Denies the identifier command without any pre-configured scope.",
643
+
"type": "string",
644
+
"const": "core:app:deny-identifier",
645
+
"markdownDescription": "Denies the identifier command without any pre-configured scope."
646
+
},
647
+
{
648
+
"description": "Denies the name command without any pre-configured scope.",
649
+
"type": "string",
650
+
"const": "core:app:deny-name",
651
+
"markdownDescription": "Denies the name command without any pre-configured scope."
652
+
},
653
+
{
654
+
"description": "Denies the register_listener command without any pre-configured scope.",
655
+
"type": "string",
656
+
"const": "core:app:deny-register-listener",
657
+
"markdownDescription": "Denies the register_listener command without any pre-configured scope."
658
+
},
659
+
{
660
+
"description": "Denies the remove_data_store command without any pre-configured scope.",
661
+
"type": "string",
662
+
"const": "core:app:deny-remove-data-store",
663
+
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
664
+
},
665
+
{
666
+
"description": "Denies the remove_listener command without any pre-configured scope.",
667
+
"type": "string",
668
+
"const": "core:app:deny-remove-listener",
669
+
"markdownDescription": "Denies the remove_listener command without any pre-configured scope."
670
+
},
671
+
{
672
+
"description": "Denies the set_app_theme command without any pre-configured scope.",
673
+
"type": "string",
674
+
"const": "core:app:deny-set-app-theme",
675
+
"markdownDescription": "Denies the set_app_theme command without any pre-configured scope."
676
+
},
677
+
{
678
+
"description": "Denies the set_dock_visibility command without any pre-configured scope.",
679
+
"type": "string",
680
+
"const": "core:app:deny-set-dock-visibility",
681
+
"markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope."
682
+
},
683
+
{
684
+
"description": "Denies the tauri_version command without any pre-configured scope.",
685
+
"type": "string",
686
+
"const": "core:app:deny-tauri-version",
687
+
"markdownDescription": "Denies the tauri_version command without any pre-configured scope."
688
+
},
689
+
{
690
+
"description": "Denies the version command without any pre-configured scope.",
691
+
"type": "string",
692
+
"const": "core:app:deny-version",
693
+
"markdownDescription": "Denies the version command without any pre-configured scope."
694
+
},
695
+
{
696
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`",
697
+
"type": "string",
698
+
"const": "core:event:default",
699
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`"
700
+
},
701
+
{
702
+
"description": "Enables the emit command without any pre-configured scope.",
703
+
"type": "string",
704
+
"const": "core:event:allow-emit",
705
+
"markdownDescription": "Enables the emit command without any pre-configured scope."
706
+
},
707
+
{
708
+
"description": "Enables the emit_to command without any pre-configured scope.",
709
+
"type": "string",
710
+
"const": "core:event:allow-emit-to",
711
+
"markdownDescription": "Enables the emit_to command without any pre-configured scope."
712
+
},
713
+
{
714
+
"description": "Enables the listen command without any pre-configured scope.",
715
+
"type": "string",
716
+
"const": "core:event:allow-listen",
717
+
"markdownDescription": "Enables the listen command without any pre-configured scope."
718
+
},
719
+
{
720
+
"description": "Enables the unlisten command without any pre-configured scope.",
721
+
"type": "string",
722
+
"const": "core:event:allow-unlisten",
723
+
"markdownDescription": "Enables the unlisten command without any pre-configured scope."
724
+
},
725
+
{
726
+
"description": "Denies the emit command without any pre-configured scope.",
727
+
"type": "string",
728
+
"const": "core:event:deny-emit",
729
+
"markdownDescription": "Denies the emit command without any pre-configured scope."
730
+
},
731
+
{
732
+
"description": "Denies the emit_to command without any pre-configured scope.",
733
+
"type": "string",
734
+
"const": "core:event:deny-emit-to",
735
+
"markdownDescription": "Denies the emit_to command without any pre-configured scope."
736
+
},
737
+
{
738
+
"description": "Denies the listen command without any pre-configured scope.",
739
+
"type": "string",
740
+
"const": "core:event:deny-listen",
741
+
"markdownDescription": "Denies the listen command without any pre-configured scope."
742
+
},
743
+
{
744
+
"description": "Denies the unlisten command without any pre-configured scope.",
745
+
"type": "string",
746
+
"const": "core:event:deny-unlisten",
747
+
"markdownDescription": "Denies the unlisten command without any pre-configured scope."
748
+
},
749
+
{
750
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`",
751
+
"type": "string",
752
+
"const": "core:image:default",
753
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`"
754
+
},
755
+
{
756
+
"description": "Enables the from_bytes command without any pre-configured scope.",
757
+
"type": "string",
758
+
"const": "core:image:allow-from-bytes",
759
+
"markdownDescription": "Enables the from_bytes command without any pre-configured scope."
760
+
},
761
+
{
762
+
"description": "Enables the from_path command without any pre-configured scope.",
763
+
"type": "string",
764
+
"const": "core:image:allow-from-path",
765
+
"markdownDescription": "Enables the from_path command without any pre-configured scope."
766
+
},
767
+
{
768
+
"description": "Enables the new command without any pre-configured scope.",
769
+
"type": "string",
770
+
"const": "core:image:allow-new",
771
+
"markdownDescription": "Enables the new command without any pre-configured scope."
772
+
},
773
+
{
774
+
"description": "Enables the rgba command without any pre-configured scope.",
775
+
"type": "string",
776
+
"const": "core:image:allow-rgba",
777
+
"markdownDescription": "Enables the rgba command without any pre-configured scope."
778
+
},
779
+
{
780
+
"description": "Enables the size command without any pre-configured scope.",
781
+
"type": "string",
782
+
"const": "core:image:allow-size",
783
+
"markdownDescription": "Enables the size command without any pre-configured scope."
784
+
},
785
+
{
786
+
"description": "Denies the from_bytes command without any pre-configured scope.",
787
+
"type": "string",
788
+
"const": "core:image:deny-from-bytes",
789
+
"markdownDescription": "Denies the from_bytes command without any pre-configured scope."
790
+
},
791
+
{
792
+
"description": "Denies the from_path command without any pre-configured scope.",
793
+
"type": "string",
794
+
"const": "core:image:deny-from-path",
795
+
"markdownDescription": "Denies the from_path command without any pre-configured scope."
796
+
},
797
+
{
798
+
"description": "Denies the new command without any pre-configured scope.",
799
+
"type": "string",
800
+
"const": "core:image:deny-new",
801
+
"markdownDescription": "Denies the new command without any pre-configured scope."
802
+
},
803
+
{
804
+
"description": "Denies the rgba command without any pre-configured scope.",
805
+
"type": "string",
806
+
"const": "core:image:deny-rgba",
807
+
"markdownDescription": "Denies the rgba command without any pre-configured scope."
808
+
},
809
+
{
810
+
"description": "Denies the size command without any pre-configured scope.",
811
+
"type": "string",
812
+
"const": "core:image:deny-size",
813
+
"markdownDescription": "Denies the size command without any pre-configured scope."
814
+
},
815
+
{
816
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`",
817
+
"type": "string",
818
+
"const": "core:menu:default",
819
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`"
820
+
},
821
+
{
822
+
"description": "Enables the append command without any pre-configured scope.",
823
+
"type": "string",
824
+
"const": "core:menu:allow-append",
825
+
"markdownDescription": "Enables the append command without any pre-configured scope."
826
+
},
827
+
{
828
+
"description": "Enables the create_default command without any pre-configured scope.",
829
+
"type": "string",
830
+
"const": "core:menu:allow-create-default",
831
+
"markdownDescription": "Enables the create_default command without any pre-configured scope."
832
+
},
833
+
{
834
+
"description": "Enables the get command without any pre-configured scope.",
835
+
"type": "string",
836
+
"const": "core:menu:allow-get",
837
+
"markdownDescription": "Enables the get command without any pre-configured scope."
838
+
},
839
+
{
840
+
"description": "Enables the insert command without any pre-configured scope.",
841
+
"type": "string",
842
+
"const": "core:menu:allow-insert",
843
+
"markdownDescription": "Enables the insert command without any pre-configured scope."
844
+
},
845
+
{
846
+
"description": "Enables the is_checked command without any pre-configured scope.",
847
+
"type": "string",
848
+
"const": "core:menu:allow-is-checked",
849
+
"markdownDescription": "Enables the is_checked command without any pre-configured scope."
850
+
},
851
+
{
852
+
"description": "Enables the is_enabled command without any pre-configured scope.",
853
+
"type": "string",
854
+
"const": "core:menu:allow-is-enabled",
855
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
856
+
},
857
+
{
858
+
"description": "Enables the items command without any pre-configured scope.",
859
+
"type": "string",
860
+
"const": "core:menu:allow-items",
861
+
"markdownDescription": "Enables the items command without any pre-configured scope."
862
+
},
863
+
{
864
+
"description": "Enables the new command without any pre-configured scope.",
865
+
"type": "string",
866
+
"const": "core:menu:allow-new",
867
+
"markdownDescription": "Enables the new command without any pre-configured scope."
868
+
},
869
+
{
870
+
"description": "Enables the popup command without any pre-configured scope.",
871
+
"type": "string",
872
+
"const": "core:menu:allow-popup",
873
+
"markdownDescription": "Enables the popup command without any pre-configured scope."
874
+
},
875
+
{
876
+
"description": "Enables the prepend command without any pre-configured scope.",
877
+
"type": "string",
878
+
"const": "core:menu:allow-prepend",
879
+
"markdownDescription": "Enables the prepend command without any pre-configured scope."
880
+
},
881
+
{
882
+
"description": "Enables the remove command without any pre-configured scope.",
883
+
"type": "string",
884
+
"const": "core:menu:allow-remove",
885
+
"markdownDescription": "Enables the remove command without any pre-configured scope."
886
+
},
887
+
{
888
+
"description": "Enables the remove_at command without any pre-configured scope.",
889
+
"type": "string",
890
+
"const": "core:menu:allow-remove-at",
891
+
"markdownDescription": "Enables the remove_at command without any pre-configured scope."
892
+
},
893
+
{
894
+
"description": "Enables the set_accelerator command without any pre-configured scope.",
895
+
"type": "string",
896
+
"const": "core:menu:allow-set-accelerator",
897
+
"markdownDescription": "Enables the set_accelerator command without any pre-configured scope."
898
+
},
899
+
{
900
+
"description": "Enables the set_as_app_menu command without any pre-configured scope.",
901
+
"type": "string",
902
+
"const": "core:menu:allow-set-as-app-menu",
903
+
"markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope."
904
+
},
905
+
{
906
+
"description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.",
907
+
"type": "string",
908
+
"const": "core:menu:allow-set-as-help-menu-for-nsapp",
909
+
"markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope."
910
+
},
911
+
{
912
+
"description": "Enables the set_as_window_menu command without any pre-configured scope.",
913
+
"type": "string",
914
+
"const": "core:menu:allow-set-as-window-menu",
915
+
"markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope."
916
+
},
917
+
{
918
+
"description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
919
+
"type": "string",
920
+
"const": "core:menu:allow-set-as-windows-menu-for-nsapp",
921
+
"markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope."
922
+
},
923
+
{
924
+
"description": "Enables the set_checked command without any pre-configured scope.",
925
+
"type": "string",
926
+
"const": "core:menu:allow-set-checked",
927
+
"markdownDescription": "Enables the set_checked command without any pre-configured scope."
928
+
},
929
+
{
930
+
"description": "Enables the set_enabled command without any pre-configured scope.",
931
+
"type": "string",
932
+
"const": "core:menu:allow-set-enabled",
933
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
934
+
},
935
+
{
936
+
"description": "Enables the set_icon command without any pre-configured scope.",
937
+
"type": "string",
938
+
"const": "core:menu:allow-set-icon",
939
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
940
+
},
941
+
{
942
+
"description": "Enables the set_text command without any pre-configured scope.",
943
+
"type": "string",
944
+
"const": "core:menu:allow-set-text",
945
+
"markdownDescription": "Enables the set_text command without any pre-configured scope."
946
+
},
947
+
{
948
+
"description": "Enables the text command without any pre-configured scope.",
949
+
"type": "string",
950
+
"const": "core:menu:allow-text",
951
+
"markdownDescription": "Enables the text command without any pre-configured scope."
952
+
},
953
+
{
954
+
"description": "Denies the append command without any pre-configured scope.",
955
+
"type": "string",
956
+
"const": "core:menu:deny-append",
957
+
"markdownDescription": "Denies the append command without any pre-configured scope."
958
+
},
959
+
{
960
+
"description": "Denies the create_default command without any pre-configured scope.",
961
+
"type": "string",
962
+
"const": "core:menu:deny-create-default",
963
+
"markdownDescription": "Denies the create_default command without any pre-configured scope."
964
+
},
965
+
{
966
+
"description": "Denies the get command without any pre-configured scope.",
967
+
"type": "string",
968
+
"const": "core:menu:deny-get",
969
+
"markdownDescription": "Denies the get command without any pre-configured scope."
970
+
},
971
+
{
972
+
"description": "Denies the insert command without any pre-configured scope.",
973
+
"type": "string",
974
+
"const": "core:menu:deny-insert",
975
+
"markdownDescription": "Denies the insert command without any pre-configured scope."
976
+
},
977
+
{
978
+
"description": "Denies the is_checked command without any pre-configured scope.",
979
+
"type": "string",
980
+
"const": "core:menu:deny-is-checked",
981
+
"markdownDescription": "Denies the is_checked command without any pre-configured scope."
982
+
},
983
+
{
984
+
"description": "Denies the is_enabled command without any pre-configured scope.",
985
+
"type": "string",
986
+
"const": "core:menu:deny-is-enabled",
987
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
988
+
},
989
+
{
990
+
"description": "Denies the items command without any pre-configured scope.",
991
+
"type": "string",
992
+
"const": "core:menu:deny-items",
993
+
"markdownDescription": "Denies the items command without any pre-configured scope."
994
+
},
995
+
{
996
+
"description": "Denies the new command without any pre-configured scope.",
997
+
"type": "string",
998
+
"const": "core:menu:deny-new",
999
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1000
+
},
1001
+
{
1002
+
"description": "Denies the popup command without any pre-configured scope.",
1003
+
"type": "string",
1004
+
"const": "core:menu:deny-popup",
1005
+
"markdownDescription": "Denies the popup command without any pre-configured scope."
1006
+
},
1007
+
{
1008
+
"description": "Denies the prepend command without any pre-configured scope.",
1009
+
"type": "string",
1010
+
"const": "core:menu:deny-prepend",
1011
+
"markdownDescription": "Denies the prepend command without any pre-configured scope."
1012
+
},
1013
+
{
1014
+
"description": "Denies the remove command without any pre-configured scope.",
1015
+
"type": "string",
1016
+
"const": "core:menu:deny-remove",
1017
+
"markdownDescription": "Denies the remove command without any pre-configured scope."
1018
+
},
1019
+
{
1020
+
"description": "Denies the remove_at command without any pre-configured scope.",
1021
+
"type": "string",
1022
+
"const": "core:menu:deny-remove-at",
1023
+
"markdownDescription": "Denies the remove_at command without any pre-configured scope."
1024
+
},
1025
+
{
1026
+
"description": "Denies the set_accelerator command without any pre-configured scope.",
1027
+
"type": "string",
1028
+
"const": "core:menu:deny-set-accelerator",
1029
+
"markdownDescription": "Denies the set_accelerator command without any pre-configured scope."
1030
+
},
1031
+
{
1032
+
"description": "Denies the set_as_app_menu command without any pre-configured scope.",
1033
+
"type": "string",
1034
+
"const": "core:menu:deny-set-as-app-menu",
1035
+
"markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope."
1036
+
},
1037
+
{
1038
+
"description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.",
1039
+
"type": "string",
1040
+
"const": "core:menu:deny-set-as-help-menu-for-nsapp",
1041
+
"markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope."
1042
+
},
1043
+
{
1044
+
"description": "Denies the set_as_window_menu command without any pre-configured scope.",
1045
+
"type": "string",
1046
+
"const": "core:menu:deny-set-as-window-menu",
1047
+
"markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope."
1048
+
},
1049
+
{
1050
+
"description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
1051
+
"type": "string",
1052
+
"const": "core:menu:deny-set-as-windows-menu-for-nsapp",
1053
+
"markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope."
1054
+
},
1055
+
{
1056
+
"description": "Denies the set_checked command without any pre-configured scope.",
1057
+
"type": "string",
1058
+
"const": "core:menu:deny-set-checked",
1059
+
"markdownDescription": "Denies the set_checked command without any pre-configured scope."
1060
+
},
1061
+
{
1062
+
"description": "Denies the set_enabled command without any pre-configured scope.",
1063
+
"type": "string",
1064
+
"const": "core:menu:deny-set-enabled",
1065
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
1066
+
},
1067
+
{
1068
+
"description": "Denies the set_icon command without any pre-configured scope.",
1069
+
"type": "string",
1070
+
"const": "core:menu:deny-set-icon",
1071
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1072
+
},
1073
+
{
1074
+
"description": "Denies the set_text command without any pre-configured scope.",
1075
+
"type": "string",
1076
+
"const": "core:menu:deny-set-text",
1077
+
"markdownDescription": "Denies the set_text command without any pre-configured scope."
1078
+
},
1079
+
{
1080
+
"description": "Denies the text command without any pre-configured scope.",
1081
+
"type": "string",
1082
+
"const": "core:menu:deny-text",
1083
+
"markdownDescription": "Denies the text command without any pre-configured scope."
1084
+
},
1085
+
{
1086
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`",
1087
+
"type": "string",
1088
+
"const": "core:path:default",
1089
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`"
1090
+
},
1091
+
{
1092
+
"description": "Enables the basename command without any pre-configured scope.",
1093
+
"type": "string",
1094
+
"const": "core:path:allow-basename",
1095
+
"markdownDescription": "Enables the basename command without any pre-configured scope."
1096
+
},
1097
+
{
1098
+
"description": "Enables the dirname command without any pre-configured scope.",
1099
+
"type": "string",
1100
+
"const": "core:path:allow-dirname",
1101
+
"markdownDescription": "Enables the dirname command without any pre-configured scope."
1102
+
},
1103
+
{
1104
+
"description": "Enables the extname command without any pre-configured scope.",
1105
+
"type": "string",
1106
+
"const": "core:path:allow-extname",
1107
+
"markdownDescription": "Enables the extname command without any pre-configured scope."
1108
+
},
1109
+
{
1110
+
"description": "Enables the is_absolute command without any pre-configured scope.",
1111
+
"type": "string",
1112
+
"const": "core:path:allow-is-absolute",
1113
+
"markdownDescription": "Enables the is_absolute command without any pre-configured scope."
1114
+
},
1115
+
{
1116
+
"description": "Enables the join command without any pre-configured scope.",
1117
+
"type": "string",
1118
+
"const": "core:path:allow-join",
1119
+
"markdownDescription": "Enables the join command without any pre-configured scope."
1120
+
},
1121
+
{
1122
+
"description": "Enables the normalize command without any pre-configured scope.",
1123
+
"type": "string",
1124
+
"const": "core:path:allow-normalize",
1125
+
"markdownDescription": "Enables the normalize command without any pre-configured scope."
1126
+
},
1127
+
{
1128
+
"description": "Enables the resolve command without any pre-configured scope.",
1129
+
"type": "string",
1130
+
"const": "core:path:allow-resolve",
1131
+
"markdownDescription": "Enables the resolve command without any pre-configured scope."
1132
+
},
1133
+
{
1134
+
"description": "Enables the resolve_directory command without any pre-configured scope.",
1135
+
"type": "string",
1136
+
"const": "core:path:allow-resolve-directory",
1137
+
"markdownDescription": "Enables the resolve_directory command without any pre-configured scope."
1138
+
},
1139
+
{
1140
+
"description": "Denies the basename command without any pre-configured scope.",
1141
+
"type": "string",
1142
+
"const": "core:path:deny-basename",
1143
+
"markdownDescription": "Denies the basename command without any pre-configured scope."
1144
+
},
1145
+
{
1146
+
"description": "Denies the dirname command without any pre-configured scope.",
1147
+
"type": "string",
1148
+
"const": "core:path:deny-dirname",
1149
+
"markdownDescription": "Denies the dirname command without any pre-configured scope."
1150
+
},
1151
+
{
1152
+
"description": "Denies the extname command without any pre-configured scope.",
1153
+
"type": "string",
1154
+
"const": "core:path:deny-extname",
1155
+
"markdownDescription": "Denies the extname command without any pre-configured scope."
1156
+
},
1157
+
{
1158
+
"description": "Denies the is_absolute command without any pre-configured scope.",
1159
+
"type": "string",
1160
+
"const": "core:path:deny-is-absolute",
1161
+
"markdownDescription": "Denies the is_absolute command without any pre-configured scope."
1162
+
},
1163
+
{
1164
+
"description": "Denies the join command without any pre-configured scope.",
1165
+
"type": "string",
1166
+
"const": "core:path:deny-join",
1167
+
"markdownDescription": "Denies the join command without any pre-configured scope."
1168
+
},
1169
+
{
1170
+
"description": "Denies the normalize command without any pre-configured scope.",
1171
+
"type": "string",
1172
+
"const": "core:path:deny-normalize",
1173
+
"markdownDescription": "Denies the normalize command without any pre-configured scope."
1174
+
},
1175
+
{
1176
+
"description": "Denies the resolve command without any pre-configured scope.",
1177
+
"type": "string",
1178
+
"const": "core:path:deny-resolve",
1179
+
"markdownDescription": "Denies the resolve command without any pre-configured scope."
1180
+
},
1181
+
{
1182
+
"description": "Denies the resolve_directory command without any pre-configured scope.",
1183
+
"type": "string",
1184
+
"const": "core:path:deny-resolve-directory",
1185
+
"markdownDescription": "Denies the resolve_directory command without any pre-configured scope."
1186
+
},
1187
+
{
1188
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`",
1189
+
"type": "string",
1190
+
"const": "core:resources:default",
1191
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`"
1192
+
},
1193
+
{
1194
+
"description": "Enables the close command without any pre-configured scope.",
1195
+
"type": "string",
1196
+
"const": "core:resources:allow-close",
1197
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1198
+
},
1199
+
{
1200
+
"description": "Denies the close command without any pre-configured scope.",
1201
+
"type": "string",
1202
+
"const": "core:resources:deny-close",
1203
+
"markdownDescription": "Denies the close command without any pre-configured scope."
1204
+
},
1205
+
{
1206
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`",
1207
+
"type": "string",
1208
+
"const": "core:tray:default",
1209
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`"
1210
+
},
1211
+
{
1212
+
"description": "Enables the get_by_id command without any pre-configured scope.",
1213
+
"type": "string",
1214
+
"const": "core:tray:allow-get-by-id",
1215
+
"markdownDescription": "Enables the get_by_id command without any pre-configured scope."
1216
+
},
1217
+
{
1218
+
"description": "Enables the new command without any pre-configured scope.",
1219
+
"type": "string",
1220
+
"const": "core:tray:allow-new",
1221
+
"markdownDescription": "Enables the new command without any pre-configured scope."
1222
+
},
1223
+
{
1224
+
"description": "Enables the remove_by_id command without any pre-configured scope.",
1225
+
"type": "string",
1226
+
"const": "core:tray:allow-remove-by-id",
1227
+
"markdownDescription": "Enables the remove_by_id command without any pre-configured scope."
1228
+
},
1229
+
{
1230
+
"description": "Enables the set_icon command without any pre-configured scope.",
1231
+
"type": "string",
1232
+
"const": "core:tray:allow-set-icon",
1233
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1234
+
},
1235
+
{
1236
+
"description": "Enables the set_icon_as_template command without any pre-configured scope.",
1237
+
"type": "string",
1238
+
"const": "core:tray:allow-set-icon-as-template",
1239
+
"markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope."
1240
+
},
1241
+
{
1242
+
"description": "Enables the set_menu command without any pre-configured scope.",
1243
+
"type": "string",
1244
+
"const": "core:tray:allow-set-menu",
1245
+
"markdownDescription": "Enables the set_menu command without any pre-configured scope."
1246
+
},
1247
+
{
1248
+
"description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.",
1249
+
"type": "string",
1250
+
"const": "core:tray:allow-set-show-menu-on-left-click",
1251
+
"markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope."
1252
+
},
1253
+
{
1254
+
"description": "Enables the set_temp_dir_path command without any pre-configured scope.",
1255
+
"type": "string",
1256
+
"const": "core:tray:allow-set-temp-dir-path",
1257
+
"markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope."
1258
+
},
1259
+
{
1260
+
"description": "Enables the set_title command without any pre-configured scope.",
1261
+
"type": "string",
1262
+
"const": "core:tray:allow-set-title",
1263
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1264
+
},
1265
+
{
1266
+
"description": "Enables the set_tooltip command without any pre-configured scope.",
1267
+
"type": "string",
1268
+
"const": "core:tray:allow-set-tooltip",
1269
+
"markdownDescription": "Enables the set_tooltip command without any pre-configured scope."
1270
+
},
1271
+
{
1272
+
"description": "Enables the set_visible command without any pre-configured scope.",
1273
+
"type": "string",
1274
+
"const": "core:tray:allow-set-visible",
1275
+
"markdownDescription": "Enables the set_visible command without any pre-configured scope."
1276
+
},
1277
+
{
1278
+
"description": "Denies the get_by_id command without any pre-configured scope.",
1279
+
"type": "string",
1280
+
"const": "core:tray:deny-get-by-id",
1281
+
"markdownDescription": "Denies the get_by_id command without any pre-configured scope."
1282
+
},
1283
+
{
1284
+
"description": "Denies the new command without any pre-configured scope.",
1285
+
"type": "string",
1286
+
"const": "core:tray:deny-new",
1287
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1288
+
},
1289
+
{
1290
+
"description": "Denies the remove_by_id command without any pre-configured scope.",
1291
+
"type": "string",
1292
+
"const": "core:tray:deny-remove-by-id",
1293
+
"markdownDescription": "Denies the remove_by_id command without any pre-configured scope."
1294
+
},
1295
+
{
1296
+
"description": "Denies the set_icon command without any pre-configured scope.",
1297
+
"type": "string",
1298
+
"const": "core:tray:deny-set-icon",
1299
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1300
+
},
1301
+
{
1302
+
"description": "Denies the set_icon_as_template command without any pre-configured scope.",
1303
+
"type": "string",
1304
+
"const": "core:tray:deny-set-icon-as-template",
1305
+
"markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope."
1306
+
},
1307
+
{
1308
+
"description": "Denies the set_menu command without any pre-configured scope.",
1309
+
"type": "string",
1310
+
"const": "core:tray:deny-set-menu",
1311
+
"markdownDescription": "Denies the set_menu command without any pre-configured scope."
1312
+
},
1313
+
{
1314
+
"description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.",
1315
+
"type": "string",
1316
+
"const": "core:tray:deny-set-show-menu-on-left-click",
1317
+
"markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope."
1318
+
},
1319
+
{
1320
+
"description": "Denies the set_temp_dir_path command without any pre-configured scope.",
1321
+
"type": "string",
1322
+
"const": "core:tray:deny-set-temp-dir-path",
1323
+
"markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope."
1324
+
},
1325
+
{
1326
+
"description": "Denies the set_title command without any pre-configured scope.",
1327
+
"type": "string",
1328
+
"const": "core:tray:deny-set-title",
1329
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
1330
+
},
1331
+
{
1332
+
"description": "Denies the set_tooltip command without any pre-configured scope.",
1333
+
"type": "string",
1334
+
"const": "core:tray:deny-set-tooltip",
1335
+
"markdownDescription": "Denies the set_tooltip command without any pre-configured scope."
1336
+
},
1337
+
{
1338
+
"description": "Denies the set_visible command without any pre-configured scope.",
1339
+
"type": "string",
1340
+
"const": "core:tray:deny-set-visible",
1341
+
"markdownDescription": "Denies the set_visible command without any pre-configured scope."
1342
+
},
1343
+
{
1344
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`",
1345
+
"type": "string",
1346
+
"const": "core:webview:default",
1347
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`"
1348
+
},
1349
+
{
1350
+
"description": "Enables the clear_all_browsing_data command without any pre-configured scope.",
1351
+
"type": "string",
1352
+
"const": "core:webview:allow-clear-all-browsing-data",
1353
+
"markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope."
1354
+
},
1355
+
{
1356
+
"description": "Enables the create_webview command without any pre-configured scope.",
1357
+
"type": "string",
1358
+
"const": "core:webview:allow-create-webview",
1359
+
"markdownDescription": "Enables the create_webview command without any pre-configured scope."
1360
+
},
1361
+
{
1362
+
"description": "Enables the create_webview_window command without any pre-configured scope.",
1363
+
"type": "string",
1364
+
"const": "core:webview:allow-create-webview-window",
1365
+
"markdownDescription": "Enables the create_webview_window command without any pre-configured scope."
1366
+
},
1367
+
{
1368
+
"description": "Enables the get_all_webviews command without any pre-configured scope.",
1369
+
"type": "string",
1370
+
"const": "core:webview:allow-get-all-webviews",
1371
+
"markdownDescription": "Enables the get_all_webviews command without any pre-configured scope."
1372
+
},
1373
+
{
1374
+
"description": "Enables the internal_toggle_devtools command without any pre-configured scope.",
1375
+
"type": "string",
1376
+
"const": "core:webview:allow-internal-toggle-devtools",
1377
+
"markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope."
1378
+
},
1379
+
{
1380
+
"description": "Enables the print command without any pre-configured scope.",
1381
+
"type": "string",
1382
+
"const": "core:webview:allow-print",
1383
+
"markdownDescription": "Enables the print command without any pre-configured scope."
1384
+
},
1385
+
{
1386
+
"description": "Enables the reparent command without any pre-configured scope.",
1387
+
"type": "string",
1388
+
"const": "core:webview:allow-reparent",
1389
+
"markdownDescription": "Enables the reparent command without any pre-configured scope."
1390
+
},
1391
+
{
1392
+
"description": "Enables the set_webview_auto_resize command without any pre-configured scope.",
1393
+
"type": "string",
1394
+
"const": "core:webview:allow-set-webview-auto-resize",
1395
+
"markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope."
1396
+
},
1397
+
{
1398
+
"description": "Enables the set_webview_background_color command without any pre-configured scope.",
1399
+
"type": "string",
1400
+
"const": "core:webview:allow-set-webview-background-color",
1401
+
"markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope."
1402
+
},
1403
+
{
1404
+
"description": "Enables the set_webview_focus command without any pre-configured scope.",
1405
+
"type": "string",
1406
+
"const": "core:webview:allow-set-webview-focus",
1407
+
"markdownDescription": "Enables the set_webview_focus command without any pre-configured scope."
1408
+
},
1409
+
{
1410
+
"description": "Enables the set_webview_position command without any pre-configured scope.",
1411
+
"type": "string",
1412
+
"const": "core:webview:allow-set-webview-position",
1413
+
"markdownDescription": "Enables the set_webview_position command without any pre-configured scope."
1414
+
},
1415
+
{
1416
+
"description": "Enables the set_webview_size command without any pre-configured scope.",
1417
+
"type": "string",
1418
+
"const": "core:webview:allow-set-webview-size",
1419
+
"markdownDescription": "Enables the set_webview_size command without any pre-configured scope."
1420
+
},
1421
+
{
1422
+
"description": "Enables the set_webview_zoom command without any pre-configured scope.",
1423
+
"type": "string",
1424
+
"const": "core:webview:allow-set-webview-zoom",
1425
+
"markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope."
1426
+
},
1427
+
{
1428
+
"description": "Enables the webview_close command without any pre-configured scope.",
1429
+
"type": "string",
1430
+
"const": "core:webview:allow-webview-close",
1431
+
"markdownDescription": "Enables the webview_close command without any pre-configured scope."
1432
+
},
1433
+
{
1434
+
"description": "Enables the webview_hide command without any pre-configured scope.",
1435
+
"type": "string",
1436
+
"const": "core:webview:allow-webview-hide",
1437
+
"markdownDescription": "Enables the webview_hide command without any pre-configured scope."
1438
+
},
1439
+
{
1440
+
"description": "Enables the webview_position command without any pre-configured scope.",
1441
+
"type": "string",
1442
+
"const": "core:webview:allow-webview-position",
1443
+
"markdownDescription": "Enables the webview_position command without any pre-configured scope."
1444
+
},
1445
+
{
1446
+
"description": "Enables the webview_show command without any pre-configured scope.",
1447
+
"type": "string",
1448
+
"const": "core:webview:allow-webview-show",
1449
+
"markdownDescription": "Enables the webview_show command without any pre-configured scope."
1450
+
},
1451
+
{
1452
+
"description": "Enables the webview_size command without any pre-configured scope.",
1453
+
"type": "string",
1454
+
"const": "core:webview:allow-webview-size",
1455
+
"markdownDescription": "Enables the webview_size command without any pre-configured scope."
1456
+
},
1457
+
{
1458
+
"description": "Denies the clear_all_browsing_data command without any pre-configured scope.",
1459
+
"type": "string",
1460
+
"const": "core:webview:deny-clear-all-browsing-data",
1461
+
"markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope."
1462
+
},
1463
+
{
1464
+
"description": "Denies the create_webview command without any pre-configured scope.",
1465
+
"type": "string",
1466
+
"const": "core:webview:deny-create-webview",
1467
+
"markdownDescription": "Denies the create_webview command without any pre-configured scope."
1468
+
},
1469
+
{
1470
+
"description": "Denies the create_webview_window command without any pre-configured scope.",
1471
+
"type": "string",
1472
+
"const": "core:webview:deny-create-webview-window",
1473
+
"markdownDescription": "Denies the create_webview_window command without any pre-configured scope."
1474
+
},
1475
+
{
1476
+
"description": "Denies the get_all_webviews command without any pre-configured scope.",
1477
+
"type": "string",
1478
+
"const": "core:webview:deny-get-all-webviews",
1479
+
"markdownDescription": "Denies the get_all_webviews command without any pre-configured scope."
1480
+
},
1481
+
{
1482
+
"description": "Denies the internal_toggle_devtools command without any pre-configured scope.",
1483
+
"type": "string",
1484
+
"const": "core:webview:deny-internal-toggle-devtools",
1485
+
"markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope."
1486
+
},
1487
+
{
1488
+
"description": "Denies the print command without any pre-configured scope.",
1489
+
"type": "string",
1490
+
"const": "core:webview:deny-print",
1491
+
"markdownDescription": "Denies the print command without any pre-configured scope."
1492
+
},
1493
+
{
1494
+
"description": "Denies the reparent command without any pre-configured scope.",
1495
+
"type": "string",
1496
+
"const": "core:webview:deny-reparent",
1497
+
"markdownDescription": "Denies the reparent command without any pre-configured scope."
1498
+
},
1499
+
{
1500
+
"description": "Denies the set_webview_auto_resize command without any pre-configured scope.",
1501
+
"type": "string",
1502
+
"const": "core:webview:deny-set-webview-auto-resize",
1503
+
"markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope."
1504
+
},
1505
+
{
1506
+
"description": "Denies the set_webview_background_color command without any pre-configured scope.",
1507
+
"type": "string",
1508
+
"const": "core:webview:deny-set-webview-background-color",
1509
+
"markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope."
1510
+
},
1511
+
{
1512
+
"description": "Denies the set_webview_focus command without any pre-configured scope.",
1513
+
"type": "string",
1514
+
"const": "core:webview:deny-set-webview-focus",
1515
+
"markdownDescription": "Denies the set_webview_focus command without any pre-configured scope."
1516
+
},
1517
+
{
1518
+
"description": "Denies the set_webview_position command without any pre-configured scope.",
1519
+
"type": "string",
1520
+
"const": "core:webview:deny-set-webview-position",
1521
+
"markdownDescription": "Denies the set_webview_position command without any pre-configured scope."
1522
+
},
1523
+
{
1524
+
"description": "Denies the set_webview_size command without any pre-configured scope.",
1525
+
"type": "string",
1526
+
"const": "core:webview:deny-set-webview-size",
1527
+
"markdownDescription": "Denies the set_webview_size command without any pre-configured scope."
1528
+
},
1529
+
{
1530
+
"description": "Denies the set_webview_zoom command without any pre-configured scope.",
1531
+
"type": "string",
1532
+
"const": "core:webview:deny-set-webview-zoom",
1533
+
"markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope."
1534
+
},
1535
+
{
1536
+
"description": "Denies the webview_close command without any pre-configured scope.",
1537
+
"type": "string",
1538
+
"const": "core:webview:deny-webview-close",
1539
+
"markdownDescription": "Denies the webview_close command without any pre-configured scope."
1540
+
},
1541
+
{
1542
+
"description": "Denies the webview_hide command without any pre-configured scope.",
1543
+
"type": "string",
1544
+
"const": "core:webview:deny-webview-hide",
1545
+
"markdownDescription": "Denies the webview_hide command without any pre-configured scope."
1546
+
},
1547
+
{
1548
+
"description": "Denies the webview_position command without any pre-configured scope.",
1549
+
"type": "string",
1550
+
"const": "core:webview:deny-webview-position",
1551
+
"markdownDescription": "Denies the webview_position command without any pre-configured scope."
1552
+
},
1553
+
{
1554
+
"description": "Denies the webview_show command without any pre-configured scope.",
1555
+
"type": "string",
1556
+
"const": "core:webview:deny-webview-show",
1557
+
"markdownDescription": "Denies the webview_show command without any pre-configured scope."
1558
+
},
1559
+
{
1560
+
"description": "Denies the webview_size command without any pre-configured scope.",
1561
+
"type": "string",
1562
+
"const": "core:webview:deny-webview-size",
1563
+
"markdownDescription": "Denies the webview_size command without any pre-configured scope."
1564
+
},
1565
+
{
1566
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`",
1567
+
"type": "string",
1568
+
"const": "core:window:default",
1569
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`"
1570
+
},
1571
+
{
1572
+
"description": "Enables the available_monitors command without any pre-configured scope.",
1573
+
"type": "string",
1574
+
"const": "core:window:allow-available-monitors",
1575
+
"markdownDescription": "Enables the available_monitors command without any pre-configured scope."
1576
+
},
1577
+
{
1578
+
"description": "Enables the center command without any pre-configured scope.",
1579
+
"type": "string",
1580
+
"const": "core:window:allow-center",
1581
+
"markdownDescription": "Enables the center command without any pre-configured scope."
1582
+
},
1583
+
{
1584
+
"description": "Enables the close command without any pre-configured scope.",
1585
+
"type": "string",
1586
+
"const": "core:window:allow-close",
1587
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1588
+
},
1589
+
{
1590
+
"description": "Enables the create command without any pre-configured scope.",
1591
+
"type": "string",
1592
+
"const": "core:window:allow-create",
1593
+
"markdownDescription": "Enables the create command without any pre-configured scope."
1594
+
},
1595
+
{
1596
+
"description": "Enables the current_monitor command without any pre-configured scope.",
1597
+
"type": "string",
1598
+
"const": "core:window:allow-current-monitor",
1599
+
"markdownDescription": "Enables the current_monitor command without any pre-configured scope."
1600
+
},
1601
+
{
1602
+
"description": "Enables the cursor_position command without any pre-configured scope.",
1603
+
"type": "string",
1604
+
"const": "core:window:allow-cursor-position",
1605
+
"markdownDescription": "Enables the cursor_position command without any pre-configured scope."
1606
+
},
1607
+
{
1608
+
"description": "Enables the destroy command without any pre-configured scope.",
1609
+
"type": "string",
1610
+
"const": "core:window:allow-destroy",
1611
+
"markdownDescription": "Enables the destroy command without any pre-configured scope."
1612
+
},
1613
+
{
1614
+
"description": "Enables the get_all_windows command without any pre-configured scope.",
1615
+
"type": "string",
1616
+
"const": "core:window:allow-get-all-windows",
1617
+
"markdownDescription": "Enables the get_all_windows command without any pre-configured scope."
1618
+
},
1619
+
{
1620
+
"description": "Enables the hide command without any pre-configured scope.",
1621
+
"type": "string",
1622
+
"const": "core:window:allow-hide",
1623
+
"markdownDescription": "Enables the hide command without any pre-configured scope."
1624
+
},
1625
+
{
1626
+
"description": "Enables the inner_position command without any pre-configured scope.",
1627
+
"type": "string",
1628
+
"const": "core:window:allow-inner-position",
1629
+
"markdownDescription": "Enables the inner_position command without any pre-configured scope."
1630
+
},
1631
+
{
1632
+
"description": "Enables the inner_size command without any pre-configured scope.",
1633
+
"type": "string",
1634
+
"const": "core:window:allow-inner-size",
1635
+
"markdownDescription": "Enables the inner_size command without any pre-configured scope."
1636
+
},
1637
+
{
1638
+
"description": "Enables the internal_toggle_maximize command without any pre-configured scope.",
1639
+
"type": "string",
1640
+
"const": "core:window:allow-internal-toggle-maximize",
1641
+
"markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope."
1642
+
},
1643
+
{
1644
+
"description": "Enables the is_always_on_top command without any pre-configured scope.",
1645
+
"type": "string",
1646
+
"const": "core:window:allow-is-always-on-top",
1647
+
"markdownDescription": "Enables the is_always_on_top command without any pre-configured scope."
1648
+
},
1649
+
{
1650
+
"description": "Enables the is_closable command without any pre-configured scope.",
1651
+
"type": "string",
1652
+
"const": "core:window:allow-is-closable",
1653
+
"markdownDescription": "Enables the is_closable command without any pre-configured scope."
1654
+
},
1655
+
{
1656
+
"description": "Enables the is_decorated command without any pre-configured scope.",
1657
+
"type": "string",
1658
+
"const": "core:window:allow-is-decorated",
1659
+
"markdownDescription": "Enables the is_decorated command without any pre-configured scope."
1660
+
},
1661
+
{
1662
+
"description": "Enables the is_enabled command without any pre-configured scope.",
1663
+
"type": "string",
1664
+
"const": "core:window:allow-is-enabled",
1665
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
1666
+
},
1667
+
{
1668
+
"description": "Enables the is_focused command without any pre-configured scope.",
1669
+
"type": "string",
1670
+
"const": "core:window:allow-is-focused",
1671
+
"markdownDescription": "Enables the is_focused command without any pre-configured scope."
1672
+
},
1673
+
{
1674
+
"description": "Enables the is_fullscreen command without any pre-configured scope.",
1675
+
"type": "string",
1676
+
"const": "core:window:allow-is-fullscreen",
1677
+
"markdownDescription": "Enables the is_fullscreen command without any pre-configured scope."
1678
+
},
1679
+
{
1680
+
"description": "Enables the is_maximizable command without any pre-configured scope.",
1681
+
"type": "string",
1682
+
"const": "core:window:allow-is-maximizable",
1683
+
"markdownDescription": "Enables the is_maximizable command without any pre-configured scope."
1684
+
},
1685
+
{
1686
+
"description": "Enables the is_maximized command without any pre-configured scope.",
1687
+
"type": "string",
1688
+
"const": "core:window:allow-is-maximized",
1689
+
"markdownDescription": "Enables the is_maximized command without any pre-configured scope."
1690
+
},
1691
+
{
1692
+
"description": "Enables the is_minimizable command without any pre-configured scope.",
1693
+
"type": "string",
1694
+
"const": "core:window:allow-is-minimizable",
1695
+
"markdownDescription": "Enables the is_minimizable command without any pre-configured scope."
1696
+
},
1697
+
{
1698
+
"description": "Enables the is_minimized command without any pre-configured scope.",
1699
+
"type": "string",
1700
+
"const": "core:window:allow-is-minimized",
1701
+
"markdownDescription": "Enables the is_minimized command without any pre-configured scope."
1702
+
},
1703
+
{
1704
+
"description": "Enables the is_resizable command without any pre-configured scope.",
1705
+
"type": "string",
1706
+
"const": "core:window:allow-is-resizable",
1707
+
"markdownDescription": "Enables the is_resizable command without any pre-configured scope."
1708
+
},
1709
+
{
1710
+
"description": "Enables the is_visible command without any pre-configured scope.",
1711
+
"type": "string",
1712
+
"const": "core:window:allow-is-visible",
1713
+
"markdownDescription": "Enables the is_visible command without any pre-configured scope."
1714
+
},
1715
+
{
1716
+
"description": "Enables the maximize command without any pre-configured scope.",
1717
+
"type": "string",
1718
+
"const": "core:window:allow-maximize",
1719
+
"markdownDescription": "Enables the maximize command without any pre-configured scope."
1720
+
},
1721
+
{
1722
+
"description": "Enables the minimize command without any pre-configured scope.",
1723
+
"type": "string",
1724
+
"const": "core:window:allow-minimize",
1725
+
"markdownDescription": "Enables the minimize command without any pre-configured scope."
1726
+
},
1727
+
{
1728
+
"description": "Enables the monitor_from_point command without any pre-configured scope.",
1729
+
"type": "string",
1730
+
"const": "core:window:allow-monitor-from-point",
1731
+
"markdownDescription": "Enables the monitor_from_point command without any pre-configured scope."
1732
+
},
1733
+
{
1734
+
"description": "Enables the outer_position command without any pre-configured scope.",
1735
+
"type": "string",
1736
+
"const": "core:window:allow-outer-position",
1737
+
"markdownDescription": "Enables the outer_position command without any pre-configured scope."
1738
+
},
1739
+
{
1740
+
"description": "Enables the outer_size command without any pre-configured scope.",
1741
+
"type": "string",
1742
+
"const": "core:window:allow-outer-size",
1743
+
"markdownDescription": "Enables the outer_size command without any pre-configured scope."
1744
+
},
1745
+
{
1746
+
"description": "Enables the primary_monitor command without any pre-configured scope.",
1747
+
"type": "string",
1748
+
"const": "core:window:allow-primary-monitor",
1749
+
"markdownDescription": "Enables the primary_monitor command without any pre-configured scope."
1750
+
},
1751
+
{
1752
+
"description": "Enables the request_user_attention command without any pre-configured scope.",
1753
+
"type": "string",
1754
+
"const": "core:window:allow-request-user-attention",
1755
+
"markdownDescription": "Enables the request_user_attention command without any pre-configured scope."
1756
+
},
1757
+
{
1758
+
"description": "Enables the scale_factor command without any pre-configured scope.",
1759
+
"type": "string",
1760
+
"const": "core:window:allow-scale-factor",
1761
+
"markdownDescription": "Enables the scale_factor command without any pre-configured scope."
1762
+
},
1763
+
{
1764
+
"description": "Enables the set_always_on_bottom command without any pre-configured scope.",
1765
+
"type": "string",
1766
+
"const": "core:window:allow-set-always-on-bottom",
1767
+
"markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope."
1768
+
},
1769
+
{
1770
+
"description": "Enables the set_always_on_top command without any pre-configured scope.",
1771
+
"type": "string",
1772
+
"const": "core:window:allow-set-always-on-top",
1773
+
"markdownDescription": "Enables the set_always_on_top command without any pre-configured scope."
1774
+
},
1775
+
{
1776
+
"description": "Enables the set_background_color command without any pre-configured scope.",
1777
+
"type": "string",
1778
+
"const": "core:window:allow-set-background-color",
1779
+
"markdownDescription": "Enables the set_background_color command without any pre-configured scope."
1780
+
},
1781
+
{
1782
+
"description": "Enables the set_badge_count command without any pre-configured scope.",
1783
+
"type": "string",
1784
+
"const": "core:window:allow-set-badge-count",
1785
+
"markdownDescription": "Enables the set_badge_count command without any pre-configured scope."
1786
+
},
1787
+
{
1788
+
"description": "Enables the set_badge_label command without any pre-configured scope.",
1789
+
"type": "string",
1790
+
"const": "core:window:allow-set-badge-label",
1791
+
"markdownDescription": "Enables the set_badge_label command without any pre-configured scope."
1792
+
},
1793
+
{
1794
+
"description": "Enables the set_closable command without any pre-configured scope.",
1795
+
"type": "string",
1796
+
"const": "core:window:allow-set-closable",
1797
+
"markdownDescription": "Enables the set_closable command without any pre-configured scope."
1798
+
},
1799
+
{
1800
+
"description": "Enables the set_content_protected command without any pre-configured scope.",
1801
+
"type": "string",
1802
+
"const": "core:window:allow-set-content-protected",
1803
+
"markdownDescription": "Enables the set_content_protected command without any pre-configured scope."
1804
+
},
1805
+
{
1806
+
"description": "Enables the set_cursor_grab command without any pre-configured scope.",
1807
+
"type": "string",
1808
+
"const": "core:window:allow-set-cursor-grab",
1809
+
"markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope."
1810
+
},
1811
+
{
1812
+
"description": "Enables the set_cursor_icon command without any pre-configured scope.",
1813
+
"type": "string",
1814
+
"const": "core:window:allow-set-cursor-icon",
1815
+
"markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope."
1816
+
},
1817
+
{
1818
+
"description": "Enables the set_cursor_position command without any pre-configured scope.",
1819
+
"type": "string",
1820
+
"const": "core:window:allow-set-cursor-position",
1821
+
"markdownDescription": "Enables the set_cursor_position command without any pre-configured scope."
1822
+
},
1823
+
{
1824
+
"description": "Enables the set_cursor_visible command without any pre-configured scope.",
1825
+
"type": "string",
1826
+
"const": "core:window:allow-set-cursor-visible",
1827
+
"markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope."
1828
+
},
1829
+
{
1830
+
"description": "Enables the set_decorations command without any pre-configured scope.",
1831
+
"type": "string",
1832
+
"const": "core:window:allow-set-decorations",
1833
+
"markdownDescription": "Enables the set_decorations command without any pre-configured scope."
1834
+
},
1835
+
{
1836
+
"description": "Enables the set_effects command without any pre-configured scope.",
1837
+
"type": "string",
1838
+
"const": "core:window:allow-set-effects",
1839
+
"markdownDescription": "Enables the set_effects command without any pre-configured scope."
1840
+
},
1841
+
{
1842
+
"description": "Enables the set_enabled command without any pre-configured scope.",
1843
+
"type": "string",
1844
+
"const": "core:window:allow-set-enabled",
1845
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
1846
+
},
1847
+
{
1848
+
"description": "Enables the set_focus command without any pre-configured scope.",
1849
+
"type": "string",
1850
+
"const": "core:window:allow-set-focus",
1851
+
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1852
+
},
1853
+
{
1854
+
"description": "Enables the set_focusable command without any pre-configured scope.",
1855
+
"type": "string",
1856
+
"const": "core:window:allow-set-focusable",
1857
+
"markdownDescription": "Enables the set_focusable command without any pre-configured scope."
1858
+
},
1859
+
{
1860
+
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1861
+
"type": "string",
1862
+
"const": "core:window:allow-set-fullscreen",
1863
+
"markdownDescription": "Enables the set_fullscreen command without any pre-configured scope."
1864
+
},
1865
+
{
1866
+
"description": "Enables the set_icon command without any pre-configured scope.",
1867
+
"type": "string",
1868
+
"const": "core:window:allow-set-icon",
1869
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1870
+
},
1871
+
{
1872
+
"description": "Enables the set_ignore_cursor_events command without any pre-configured scope.",
1873
+
"type": "string",
1874
+
"const": "core:window:allow-set-ignore-cursor-events",
1875
+
"markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope."
1876
+
},
1877
+
{
1878
+
"description": "Enables the set_max_size command without any pre-configured scope.",
1879
+
"type": "string",
1880
+
"const": "core:window:allow-set-max-size",
1881
+
"markdownDescription": "Enables the set_max_size command without any pre-configured scope."
1882
+
},
1883
+
{
1884
+
"description": "Enables the set_maximizable command without any pre-configured scope.",
1885
+
"type": "string",
1886
+
"const": "core:window:allow-set-maximizable",
1887
+
"markdownDescription": "Enables the set_maximizable command without any pre-configured scope."
1888
+
},
1889
+
{
1890
+
"description": "Enables the set_min_size command without any pre-configured scope.",
1891
+
"type": "string",
1892
+
"const": "core:window:allow-set-min-size",
1893
+
"markdownDescription": "Enables the set_min_size command without any pre-configured scope."
1894
+
},
1895
+
{
1896
+
"description": "Enables the set_minimizable command without any pre-configured scope.",
1897
+
"type": "string",
1898
+
"const": "core:window:allow-set-minimizable",
1899
+
"markdownDescription": "Enables the set_minimizable command without any pre-configured scope."
1900
+
},
1901
+
{
1902
+
"description": "Enables the set_overlay_icon command without any pre-configured scope.",
1903
+
"type": "string",
1904
+
"const": "core:window:allow-set-overlay-icon",
1905
+
"markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope."
1906
+
},
1907
+
{
1908
+
"description": "Enables the set_position command without any pre-configured scope.",
1909
+
"type": "string",
1910
+
"const": "core:window:allow-set-position",
1911
+
"markdownDescription": "Enables the set_position command without any pre-configured scope."
1912
+
},
1913
+
{
1914
+
"description": "Enables the set_progress_bar command without any pre-configured scope.",
1915
+
"type": "string",
1916
+
"const": "core:window:allow-set-progress-bar",
1917
+
"markdownDescription": "Enables the set_progress_bar command without any pre-configured scope."
1918
+
},
1919
+
{
1920
+
"description": "Enables the set_resizable command without any pre-configured scope.",
1921
+
"type": "string",
1922
+
"const": "core:window:allow-set-resizable",
1923
+
"markdownDescription": "Enables the set_resizable command without any pre-configured scope."
1924
+
},
1925
+
{
1926
+
"description": "Enables the set_shadow command without any pre-configured scope.",
1927
+
"type": "string",
1928
+
"const": "core:window:allow-set-shadow",
1929
+
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1930
+
},
1931
+
{
1932
+
"description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
1933
+
"type": "string",
1934
+
"const": "core:window:allow-set-simple-fullscreen",
1935
+
"markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
1936
+
},
1937
+
{
1938
+
"description": "Enables the set_size command without any pre-configured scope.",
1939
+
"type": "string",
1940
+
"const": "core:window:allow-set-size",
1941
+
"markdownDescription": "Enables the set_size command without any pre-configured scope."
1942
+
},
1943
+
{
1944
+
"description": "Enables the set_size_constraints command without any pre-configured scope.",
1945
+
"type": "string",
1946
+
"const": "core:window:allow-set-size-constraints",
1947
+
"markdownDescription": "Enables the set_size_constraints command without any pre-configured scope."
1948
+
},
1949
+
{
1950
+
"description": "Enables the set_skip_taskbar command without any pre-configured scope.",
1951
+
"type": "string",
1952
+
"const": "core:window:allow-set-skip-taskbar",
1953
+
"markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope."
1954
+
},
1955
+
{
1956
+
"description": "Enables the set_theme command without any pre-configured scope.",
1957
+
"type": "string",
1958
+
"const": "core:window:allow-set-theme",
1959
+
"markdownDescription": "Enables the set_theme command without any pre-configured scope."
1960
+
},
1961
+
{
1962
+
"description": "Enables the set_title command without any pre-configured scope.",
1963
+
"type": "string",
1964
+
"const": "core:window:allow-set-title",
1965
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1966
+
},
1967
+
{
1968
+
"description": "Enables the set_title_bar_style command without any pre-configured scope.",
1969
+
"type": "string",
1970
+
"const": "core:window:allow-set-title-bar-style",
1971
+
"markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope."
1972
+
},
1973
+
{
1974
+
"description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.",
1975
+
"type": "string",
1976
+
"const": "core:window:allow-set-visible-on-all-workspaces",
1977
+
"markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope."
1978
+
},
1979
+
{
1980
+
"description": "Enables the show command without any pre-configured scope.",
1981
+
"type": "string",
1982
+
"const": "core:window:allow-show",
1983
+
"markdownDescription": "Enables the show command without any pre-configured scope."
1984
+
},
1985
+
{
1986
+
"description": "Enables the start_dragging command without any pre-configured scope.",
1987
+
"type": "string",
1988
+
"const": "core:window:allow-start-dragging",
1989
+
"markdownDescription": "Enables the start_dragging command without any pre-configured scope."
1990
+
},
1991
+
{
1992
+
"description": "Enables the start_resize_dragging command without any pre-configured scope.",
1993
+
"type": "string",
1994
+
"const": "core:window:allow-start-resize-dragging",
1995
+
"markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope."
1996
+
},
1997
+
{
1998
+
"description": "Enables the theme command without any pre-configured scope.",
1999
+
"type": "string",
2000
+
"const": "core:window:allow-theme",
2001
+
"markdownDescription": "Enables the theme command without any pre-configured scope."
2002
+
},
2003
+
{
2004
+
"description": "Enables the title command without any pre-configured scope.",
2005
+
"type": "string",
2006
+
"const": "core:window:allow-title",
2007
+
"markdownDescription": "Enables the title command without any pre-configured scope."
2008
+
},
2009
+
{
2010
+
"description": "Enables the toggle_maximize command without any pre-configured scope.",
2011
+
"type": "string",
2012
+
"const": "core:window:allow-toggle-maximize",
2013
+
"markdownDescription": "Enables the toggle_maximize command without any pre-configured scope."
2014
+
},
2015
+
{
2016
+
"description": "Enables the unmaximize command without any pre-configured scope.",
2017
+
"type": "string",
2018
+
"const": "core:window:allow-unmaximize",
2019
+
"markdownDescription": "Enables the unmaximize command without any pre-configured scope."
2020
+
},
2021
+
{
2022
+
"description": "Enables the unminimize command without any pre-configured scope.",
2023
+
"type": "string",
2024
+
"const": "core:window:allow-unminimize",
2025
+
"markdownDescription": "Enables the unminimize command without any pre-configured scope."
2026
+
},
2027
+
{
2028
+
"description": "Denies the available_monitors command without any pre-configured scope.",
2029
+
"type": "string",
2030
+
"const": "core:window:deny-available-monitors",
2031
+
"markdownDescription": "Denies the available_monitors command without any pre-configured scope."
2032
+
},
2033
+
{
2034
+
"description": "Denies the center command without any pre-configured scope.",
2035
+
"type": "string",
2036
+
"const": "core:window:deny-center",
2037
+
"markdownDescription": "Denies the center command without any pre-configured scope."
2038
+
},
2039
+
{
2040
+
"description": "Denies the close command without any pre-configured scope.",
2041
+
"type": "string",
2042
+
"const": "core:window:deny-close",
2043
+
"markdownDescription": "Denies the close command without any pre-configured scope."
2044
+
},
2045
+
{
2046
+
"description": "Denies the create command without any pre-configured scope.",
2047
+
"type": "string",
2048
+
"const": "core:window:deny-create",
2049
+
"markdownDescription": "Denies the create command without any pre-configured scope."
2050
+
},
2051
+
{
2052
+
"description": "Denies the current_monitor command without any pre-configured scope.",
2053
+
"type": "string",
2054
+
"const": "core:window:deny-current-monitor",
2055
+
"markdownDescription": "Denies the current_monitor command without any pre-configured scope."
2056
+
},
2057
+
{
2058
+
"description": "Denies the cursor_position command without any pre-configured scope.",
2059
+
"type": "string",
2060
+
"const": "core:window:deny-cursor-position",
2061
+
"markdownDescription": "Denies the cursor_position command without any pre-configured scope."
2062
+
},
2063
+
{
2064
+
"description": "Denies the destroy command without any pre-configured scope.",
2065
+
"type": "string",
2066
+
"const": "core:window:deny-destroy",
2067
+
"markdownDescription": "Denies the destroy command without any pre-configured scope."
2068
+
},
2069
+
{
2070
+
"description": "Denies the get_all_windows command without any pre-configured scope.",
2071
+
"type": "string",
2072
+
"const": "core:window:deny-get-all-windows",
2073
+
"markdownDescription": "Denies the get_all_windows command without any pre-configured scope."
2074
+
},
2075
+
{
2076
+
"description": "Denies the hide command without any pre-configured scope.",
2077
+
"type": "string",
2078
+
"const": "core:window:deny-hide",
2079
+
"markdownDescription": "Denies the hide command without any pre-configured scope."
2080
+
},
2081
+
{
2082
+
"description": "Denies the inner_position command without any pre-configured scope.",
2083
+
"type": "string",
2084
+
"const": "core:window:deny-inner-position",
2085
+
"markdownDescription": "Denies the inner_position command without any pre-configured scope."
2086
+
},
2087
+
{
2088
+
"description": "Denies the inner_size command without any pre-configured scope.",
2089
+
"type": "string",
2090
+
"const": "core:window:deny-inner-size",
2091
+
"markdownDescription": "Denies the inner_size command without any pre-configured scope."
2092
+
},
2093
+
{
2094
+
"description": "Denies the internal_toggle_maximize command without any pre-configured scope.",
2095
+
"type": "string",
2096
+
"const": "core:window:deny-internal-toggle-maximize",
2097
+
"markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope."
2098
+
},
2099
+
{
2100
+
"description": "Denies the is_always_on_top command without any pre-configured scope.",
2101
+
"type": "string",
2102
+
"const": "core:window:deny-is-always-on-top",
2103
+
"markdownDescription": "Denies the is_always_on_top command without any pre-configured scope."
2104
+
},
2105
+
{
2106
+
"description": "Denies the is_closable command without any pre-configured scope.",
2107
+
"type": "string",
2108
+
"const": "core:window:deny-is-closable",
2109
+
"markdownDescription": "Denies the is_closable command without any pre-configured scope."
2110
+
},
2111
+
{
2112
+
"description": "Denies the is_decorated command without any pre-configured scope.",
2113
+
"type": "string",
2114
+
"const": "core:window:deny-is-decorated",
2115
+
"markdownDescription": "Denies the is_decorated command without any pre-configured scope."
2116
+
},
2117
+
{
2118
+
"description": "Denies the is_enabled command without any pre-configured scope.",
2119
+
"type": "string",
2120
+
"const": "core:window:deny-is-enabled",
2121
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
2122
+
},
2123
+
{
2124
+
"description": "Denies the is_focused command without any pre-configured scope.",
2125
+
"type": "string",
2126
+
"const": "core:window:deny-is-focused",
2127
+
"markdownDescription": "Denies the is_focused command without any pre-configured scope."
2128
+
},
2129
+
{
2130
+
"description": "Denies the is_fullscreen command without any pre-configured scope.",
2131
+
"type": "string",
2132
+
"const": "core:window:deny-is-fullscreen",
2133
+
"markdownDescription": "Denies the is_fullscreen command without any pre-configured scope."
2134
+
},
2135
+
{
2136
+
"description": "Denies the is_maximizable command without any pre-configured scope.",
2137
+
"type": "string",
2138
+
"const": "core:window:deny-is-maximizable",
2139
+
"markdownDescription": "Denies the is_maximizable command without any pre-configured scope."
2140
+
},
2141
+
{
2142
+
"description": "Denies the is_maximized command without any pre-configured scope.",
2143
+
"type": "string",
2144
+
"const": "core:window:deny-is-maximized",
2145
+
"markdownDescription": "Denies the is_maximized command without any pre-configured scope."
2146
+
},
2147
+
{
2148
+
"description": "Denies the is_minimizable command without any pre-configured scope.",
2149
+
"type": "string",
2150
+
"const": "core:window:deny-is-minimizable",
2151
+
"markdownDescription": "Denies the is_minimizable command without any pre-configured scope."
2152
+
},
2153
+
{
2154
+
"description": "Denies the is_minimized command without any pre-configured scope.",
2155
+
"type": "string",
2156
+
"const": "core:window:deny-is-minimized",
2157
+
"markdownDescription": "Denies the is_minimized command without any pre-configured scope."
2158
+
},
2159
+
{
2160
+
"description": "Denies the is_resizable command without any pre-configured scope.",
2161
+
"type": "string",
2162
+
"const": "core:window:deny-is-resizable",
2163
+
"markdownDescription": "Denies the is_resizable command without any pre-configured scope."
2164
+
},
2165
+
{
2166
+
"description": "Denies the is_visible command without any pre-configured scope.",
2167
+
"type": "string",
2168
+
"const": "core:window:deny-is-visible",
2169
+
"markdownDescription": "Denies the is_visible command without any pre-configured scope."
2170
+
},
2171
+
{
2172
+
"description": "Denies the maximize command without any pre-configured scope.",
2173
+
"type": "string",
2174
+
"const": "core:window:deny-maximize",
2175
+
"markdownDescription": "Denies the maximize command without any pre-configured scope."
2176
+
},
2177
+
{
2178
+
"description": "Denies the minimize command without any pre-configured scope.",
2179
+
"type": "string",
2180
+
"const": "core:window:deny-minimize",
2181
+
"markdownDescription": "Denies the minimize command without any pre-configured scope."
2182
+
},
2183
+
{
2184
+
"description": "Denies the monitor_from_point command without any pre-configured scope.",
2185
+
"type": "string",
2186
+
"const": "core:window:deny-monitor-from-point",
2187
+
"markdownDescription": "Denies the monitor_from_point command without any pre-configured scope."
2188
+
},
2189
+
{
2190
+
"description": "Denies the outer_position command without any pre-configured scope.",
2191
+
"type": "string",
2192
+
"const": "core:window:deny-outer-position",
2193
+
"markdownDescription": "Denies the outer_position command without any pre-configured scope."
2194
+
},
2195
+
{
2196
+
"description": "Denies the outer_size command without any pre-configured scope.",
2197
+
"type": "string",
2198
+
"const": "core:window:deny-outer-size",
2199
+
"markdownDescription": "Denies the outer_size command without any pre-configured scope."
2200
+
},
2201
+
{
2202
+
"description": "Denies the primary_monitor command without any pre-configured scope.",
2203
+
"type": "string",
2204
+
"const": "core:window:deny-primary-monitor",
2205
+
"markdownDescription": "Denies the primary_monitor command without any pre-configured scope."
2206
+
},
2207
+
{
2208
+
"description": "Denies the request_user_attention command without any pre-configured scope.",
2209
+
"type": "string",
2210
+
"const": "core:window:deny-request-user-attention",
2211
+
"markdownDescription": "Denies the request_user_attention command without any pre-configured scope."
2212
+
},
2213
+
{
2214
+
"description": "Denies the scale_factor command without any pre-configured scope.",
2215
+
"type": "string",
2216
+
"const": "core:window:deny-scale-factor",
2217
+
"markdownDescription": "Denies the scale_factor command without any pre-configured scope."
2218
+
},
2219
+
{
2220
+
"description": "Denies the set_always_on_bottom command without any pre-configured scope.",
2221
+
"type": "string",
2222
+
"const": "core:window:deny-set-always-on-bottom",
2223
+
"markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope."
2224
+
},
2225
+
{
2226
+
"description": "Denies the set_always_on_top command without any pre-configured scope.",
2227
+
"type": "string",
2228
+
"const": "core:window:deny-set-always-on-top",
2229
+
"markdownDescription": "Denies the set_always_on_top command without any pre-configured scope."
2230
+
},
2231
+
{
2232
+
"description": "Denies the set_background_color command without any pre-configured scope.",
2233
+
"type": "string",
2234
+
"const": "core:window:deny-set-background-color",
2235
+
"markdownDescription": "Denies the set_background_color command without any pre-configured scope."
2236
+
},
2237
+
{
2238
+
"description": "Denies the set_badge_count command without any pre-configured scope.",
2239
+
"type": "string",
2240
+
"const": "core:window:deny-set-badge-count",
2241
+
"markdownDescription": "Denies the set_badge_count command without any pre-configured scope."
2242
+
},
2243
+
{
2244
+
"description": "Denies the set_badge_label command without any pre-configured scope.",
2245
+
"type": "string",
2246
+
"const": "core:window:deny-set-badge-label",
2247
+
"markdownDescription": "Denies the set_badge_label command without any pre-configured scope."
2248
+
},
2249
+
{
2250
+
"description": "Denies the set_closable command without any pre-configured scope.",
2251
+
"type": "string",
2252
+
"const": "core:window:deny-set-closable",
2253
+
"markdownDescription": "Denies the set_closable command without any pre-configured scope."
2254
+
},
2255
+
{
2256
+
"description": "Denies the set_content_protected command without any pre-configured scope.",
2257
+
"type": "string",
2258
+
"const": "core:window:deny-set-content-protected",
2259
+
"markdownDescription": "Denies the set_content_protected command without any pre-configured scope."
2260
+
},
2261
+
{
2262
+
"description": "Denies the set_cursor_grab command without any pre-configured scope.",
2263
+
"type": "string",
2264
+
"const": "core:window:deny-set-cursor-grab",
2265
+
"markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope."
2266
+
},
2267
+
{
2268
+
"description": "Denies the set_cursor_icon command without any pre-configured scope.",
2269
+
"type": "string",
2270
+
"const": "core:window:deny-set-cursor-icon",
2271
+
"markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope."
2272
+
},
2273
+
{
2274
+
"description": "Denies the set_cursor_position command without any pre-configured scope.",
2275
+
"type": "string",
2276
+
"const": "core:window:deny-set-cursor-position",
2277
+
"markdownDescription": "Denies the set_cursor_position command without any pre-configured scope."
2278
+
},
2279
+
{
2280
+
"description": "Denies the set_cursor_visible command without any pre-configured scope.",
2281
+
"type": "string",
2282
+
"const": "core:window:deny-set-cursor-visible",
2283
+
"markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope."
2284
+
},
2285
+
{
2286
+
"description": "Denies the set_decorations command without any pre-configured scope.",
2287
+
"type": "string",
2288
+
"const": "core:window:deny-set-decorations",
2289
+
"markdownDescription": "Denies the set_decorations command without any pre-configured scope."
2290
+
},
2291
+
{
2292
+
"description": "Denies the set_effects command without any pre-configured scope.",
2293
+
"type": "string",
2294
+
"const": "core:window:deny-set-effects",
2295
+
"markdownDescription": "Denies the set_effects command without any pre-configured scope."
2296
+
},
2297
+
{
2298
+
"description": "Denies the set_enabled command without any pre-configured scope.",
2299
+
"type": "string",
2300
+
"const": "core:window:deny-set-enabled",
2301
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
2302
+
},
2303
+
{
2304
+
"description": "Denies the set_focus command without any pre-configured scope.",
2305
+
"type": "string",
2306
+
"const": "core:window:deny-set-focus",
2307
+
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2308
+
},
2309
+
{
2310
+
"description": "Denies the set_focusable command without any pre-configured scope.",
2311
+
"type": "string",
2312
+
"const": "core:window:deny-set-focusable",
2313
+
"markdownDescription": "Denies the set_focusable command without any pre-configured scope."
2314
+
},
2315
+
{
2316
+
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2317
+
"type": "string",
2318
+
"const": "core:window:deny-set-fullscreen",
2319
+
"markdownDescription": "Denies the set_fullscreen command without any pre-configured scope."
2320
+
},
2321
+
{
2322
+
"description": "Denies the set_icon command without any pre-configured scope.",
2323
+
"type": "string",
2324
+
"const": "core:window:deny-set-icon",
2325
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
2326
+
},
2327
+
{
2328
+
"description": "Denies the set_ignore_cursor_events command without any pre-configured scope.",
2329
+
"type": "string",
2330
+
"const": "core:window:deny-set-ignore-cursor-events",
2331
+
"markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope."
2332
+
},
2333
+
{
2334
+
"description": "Denies the set_max_size command without any pre-configured scope.",
2335
+
"type": "string",
2336
+
"const": "core:window:deny-set-max-size",
2337
+
"markdownDescription": "Denies the set_max_size command without any pre-configured scope."
2338
+
},
2339
+
{
2340
+
"description": "Denies the set_maximizable command without any pre-configured scope.",
2341
+
"type": "string",
2342
+
"const": "core:window:deny-set-maximizable",
2343
+
"markdownDescription": "Denies the set_maximizable command without any pre-configured scope."
2344
+
},
2345
+
{
2346
+
"description": "Denies the set_min_size command without any pre-configured scope.",
2347
+
"type": "string",
2348
+
"const": "core:window:deny-set-min-size",
2349
+
"markdownDescription": "Denies the set_min_size command without any pre-configured scope."
2350
+
},
2351
+
{
2352
+
"description": "Denies the set_minimizable command without any pre-configured scope.",
2353
+
"type": "string",
2354
+
"const": "core:window:deny-set-minimizable",
2355
+
"markdownDescription": "Denies the set_minimizable command without any pre-configured scope."
2356
+
},
2357
+
{
2358
+
"description": "Denies the set_overlay_icon command without any pre-configured scope.",
2359
+
"type": "string",
2360
+
"const": "core:window:deny-set-overlay-icon",
2361
+
"markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope."
2362
+
},
2363
+
{
2364
+
"description": "Denies the set_position command without any pre-configured scope.",
2365
+
"type": "string",
2366
+
"const": "core:window:deny-set-position",
2367
+
"markdownDescription": "Denies the set_position command without any pre-configured scope."
2368
+
},
2369
+
{
2370
+
"description": "Denies the set_progress_bar command without any pre-configured scope.",
2371
+
"type": "string",
2372
+
"const": "core:window:deny-set-progress-bar",
2373
+
"markdownDescription": "Denies the set_progress_bar command without any pre-configured scope."
2374
+
},
2375
+
{
2376
+
"description": "Denies the set_resizable command without any pre-configured scope.",
2377
+
"type": "string",
2378
+
"const": "core:window:deny-set-resizable",
2379
+
"markdownDescription": "Denies the set_resizable command without any pre-configured scope."
2380
+
},
2381
+
{
2382
+
"description": "Denies the set_shadow command without any pre-configured scope.",
2383
+
"type": "string",
2384
+
"const": "core:window:deny-set-shadow",
2385
+
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2386
+
},
2387
+
{
2388
+
"description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
2389
+
"type": "string",
2390
+
"const": "core:window:deny-set-simple-fullscreen",
2391
+
"markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
2392
+
},
2393
+
{
2394
+
"description": "Denies the set_size command without any pre-configured scope.",
2395
+
"type": "string",
2396
+
"const": "core:window:deny-set-size",
2397
+
"markdownDescription": "Denies the set_size command without any pre-configured scope."
2398
+
},
2399
+
{
2400
+
"description": "Denies the set_size_constraints command without any pre-configured scope.",
2401
+
"type": "string",
2402
+
"const": "core:window:deny-set-size-constraints",
2403
+
"markdownDescription": "Denies the set_size_constraints command without any pre-configured scope."
2404
+
},
2405
+
{
2406
+
"description": "Denies the set_skip_taskbar command without any pre-configured scope.",
2407
+
"type": "string",
2408
+
"const": "core:window:deny-set-skip-taskbar",
2409
+
"markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope."
2410
+
},
2411
+
{
2412
+
"description": "Denies the set_theme command without any pre-configured scope.",
2413
+
"type": "string",
2414
+
"const": "core:window:deny-set-theme",
2415
+
"markdownDescription": "Denies the set_theme command without any pre-configured scope."
2416
+
},
2417
+
{
2418
+
"description": "Denies the set_title command without any pre-configured scope.",
2419
+
"type": "string",
2420
+
"const": "core:window:deny-set-title",
2421
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
2422
+
},
2423
+
{
2424
+
"description": "Denies the set_title_bar_style command without any pre-configured scope.",
2425
+
"type": "string",
2426
+
"const": "core:window:deny-set-title-bar-style",
2427
+
"markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope."
2428
+
},
2429
+
{
2430
+
"description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.",
2431
+
"type": "string",
2432
+
"const": "core:window:deny-set-visible-on-all-workspaces",
2433
+
"markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope."
2434
+
},
2435
+
{
2436
+
"description": "Denies the show command without any pre-configured scope.",
2437
+
"type": "string",
2438
+
"const": "core:window:deny-show",
2439
+
"markdownDescription": "Denies the show command without any pre-configured scope."
2440
+
},
2441
+
{
2442
+
"description": "Denies the start_dragging command without any pre-configured scope.",
2443
+
"type": "string",
2444
+
"const": "core:window:deny-start-dragging",
2445
+
"markdownDescription": "Denies the start_dragging command without any pre-configured scope."
2446
+
},
2447
+
{
2448
+
"description": "Denies the start_resize_dragging command without any pre-configured scope.",
2449
+
"type": "string",
2450
+
"const": "core:window:deny-start-resize-dragging",
2451
+
"markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope."
2452
+
},
2453
+
{
2454
+
"description": "Denies the theme command without any pre-configured scope.",
2455
+
"type": "string",
2456
+
"const": "core:window:deny-theme",
2457
+
"markdownDescription": "Denies the theme command without any pre-configured scope."
2458
+
},
2459
+
{
2460
+
"description": "Denies the title command without any pre-configured scope.",
2461
+
"type": "string",
2462
+
"const": "core:window:deny-title",
2463
+
"markdownDescription": "Denies the title command without any pre-configured scope."
2464
+
},
2465
+
{
2466
+
"description": "Denies the toggle_maximize command without any pre-configured scope.",
2467
+
"type": "string",
2468
+
"const": "core:window:deny-toggle-maximize",
2469
+
"markdownDescription": "Denies the toggle_maximize command without any pre-configured scope."
2470
+
},
2471
+
{
2472
+
"description": "Denies the unmaximize command without any pre-configured scope.",
2473
+
"type": "string",
2474
+
"const": "core:window:deny-unmaximize",
2475
+
"markdownDescription": "Denies the unmaximize command without any pre-configured scope."
2476
+
},
2477
+
{
2478
+
"description": "Denies the unminimize command without any pre-configured scope.",
2479
+
"type": "string",
2480
+
"const": "core:window:deny-unminimize",
2481
+
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2482
+
},
2483
+
{
2484
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
2485
+
"type": "string",
2486
+
"const": "http:default",
2487
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
2488
+
},
2489
+
{
2490
+
"description": "Enables the fetch command without any pre-configured scope.",
2491
+
"type": "string",
2492
+
"const": "http:allow-fetch",
2493
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
2494
+
},
2495
+
{
2496
+
"description": "Enables the fetch_cancel command without any pre-configured scope.",
2497
+
"type": "string",
2498
+
"const": "http:allow-fetch-cancel",
2499
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
2500
+
},
2501
+
{
2502
+
"description": "Enables the fetch_read_body command without any pre-configured scope.",
2503
+
"type": "string",
2504
+
"const": "http:allow-fetch-read-body",
2505
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
2506
+
},
2507
+
{
2508
+
"description": "Enables the fetch_send command without any pre-configured scope.",
2509
+
"type": "string",
2510
+
"const": "http:allow-fetch-send",
2511
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
2512
+
},
2513
+
{
2514
+
"description": "Denies the fetch command without any pre-configured scope.",
2515
+
"type": "string",
2516
+
"const": "http:deny-fetch",
2517
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
2518
+
},
2519
+
{
2520
+
"description": "Denies the fetch_cancel command without any pre-configured scope.",
2521
+
"type": "string",
2522
+
"const": "http:deny-fetch-cancel",
2523
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
2524
+
},
2525
+
{
2526
+
"description": "Denies the fetch_read_body command without any pre-configured scope.",
2527
+
"type": "string",
2528
+
"const": "http:deny-fetch-read-body",
2529
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
2530
+
},
2531
+
{
2532
+
"description": "Denies the fetch_send command without any pre-configured scope.",
2533
+
"type": "string",
2534
+
"const": "http:deny-fetch-send",
2535
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
2536
+
},
2537
+
{
2538
+
"description": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`",
2539
+
"type": "string",
2540
+
"const": "process:default",
2541
+
"markdownDescription": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`"
2542
+
},
2543
+
{
2544
+
"description": "Enables the exit command without any pre-configured scope.",
2545
+
"type": "string",
2546
+
"const": "process:allow-exit",
2547
+
"markdownDescription": "Enables the exit command without any pre-configured scope."
2548
+
},
2549
+
{
2550
+
"description": "Enables the restart command without any pre-configured scope.",
2551
+
"type": "string",
2552
+
"const": "process:allow-restart",
2553
+
"markdownDescription": "Enables the restart command without any pre-configured scope."
2554
+
},
2555
+
{
2556
+
"description": "Denies the exit command without any pre-configured scope.",
2557
+
"type": "string",
2558
+
"const": "process:deny-exit",
2559
+
"markdownDescription": "Denies the exit command without any pre-configured scope."
2560
+
},
2561
+
{
2562
+
"description": "Denies the restart command without any pre-configured scope.",
2563
+
"type": "string",
2564
+
"const": "process:deny-restart",
2565
+
"markdownDescription": "Denies the restart command without any pre-configured scope."
2566
+
},
2567
+
{
2568
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
2569
+
"type": "string",
2570
+
"const": "shell:default",
2571
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
2572
+
},
2573
+
{
2574
+
"description": "Enables the execute command without any pre-configured scope.",
2575
+
"type": "string",
2576
+
"const": "shell:allow-execute",
2577
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
2578
+
},
2579
+
{
2580
+
"description": "Enables the kill command without any pre-configured scope.",
2581
+
"type": "string",
2582
+
"const": "shell:allow-kill",
2583
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
2584
+
},
2585
+
{
2586
+
"description": "Enables the open command without any pre-configured scope.",
2587
+
"type": "string",
2588
+
"const": "shell:allow-open",
2589
+
"markdownDescription": "Enables the open command without any pre-configured scope."
2590
+
},
2591
+
{
2592
+
"description": "Enables the spawn command without any pre-configured scope.",
2593
+
"type": "string",
2594
+
"const": "shell:allow-spawn",
2595
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
2596
+
},
2597
+
{
2598
+
"description": "Enables the stdin_write command without any pre-configured scope.",
2599
+
"type": "string",
2600
+
"const": "shell:allow-stdin-write",
2601
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
2602
+
},
2603
+
{
2604
+
"description": "Denies the execute command without any pre-configured scope.",
2605
+
"type": "string",
2606
+
"const": "shell:deny-execute",
2607
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
2608
+
},
2609
+
{
2610
+
"description": "Denies the kill command without any pre-configured scope.",
2611
+
"type": "string",
2612
+
"const": "shell:deny-kill",
2613
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
2614
+
},
2615
+
{
2616
+
"description": "Denies the open command without any pre-configured scope.",
2617
+
"type": "string",
2618
+
"const": "shell:deny-open",
2619
+
"markdownDescription": "Denies the open command without any pre-configured scope."
2620
+
},
2621
+
{
2622
+
"description": "Denies the spawn command without any pre-configured scope.",
2623
+
"type": "string",
2624
+
"const": "shell:deny-spawn",
2625
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
2626
+
},
2627
+
{
2628
+
"description": "Denies the stdin_write command without any pre-configured scope.",
2629
+
"type": "string",
2630
+
"const": "shell:deny-stdin-write",
2631
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
2632
+
}
2633
+
]
2634
+
},
2635
+
"Value": {
2636
+
"description": "All supported ACL values.",
2637
+
"anyOf": [
2638
+
{
2639
+
"description": "Represents a null JSON value.",
2640
+
"type": "null"
2641
+
},
2642
+
{
2643
+
"description": "Represents a [`bool`].",
2644
+
"type": "boolean"
2645
+
},
2646
+
{
2647
+
"description": "Represents a valid ACL [`Number`].",
2648
+
"allOf": [
2649
+
{
2650
+
"$ref": "#/definitions/Number"
2651
+
}
2652
+
]
2653
+
},
2654
+
{
2655
+
"description": "Represents a [`String`].",
2656
+
"type": "string"
2657
+
},
2658
+
{
2659
+
"description": "Represents a list of other [`Value`]s.",
2660
+
"type": "array",
2661
+
"items": {
2662
+
"$ref": "#/definitions/Value"
2663
+
}
2664
+
},
2665
+
{
2666
+
"description": "Represents a map of [`String`] keys to [`Value`]s.",
2667
+
"type": "object",
2668
+
"additionalProperties": {
2669
+
"$ref": "#/definitions/Value"
2670
+
}
2671
+
}
2672
+
]
2673
+
},
2674
+
"Number": {
2675
+
"description": "A valid ACL number.",
2676
+
"anyOf": [
2677
+
{
2678
+
"description": "Represents an [`i64`].",
2679
+
"type": "integer",
2680
+
"format": "int64"
2681
+
},
2682
+
{
2683
+
"description": "Represents a [`f64`].",
2684
+
"type": "number",
2685
+
"format": "double"
2686
+
}
2687
+
]
2688
+
},
2689
+
"Target": {
2690
+
"description": "Platform target.",
2691
+
"oneOf": [
2692
+
{
2693
+
"description": "MacOS.",
2694
+
"type": "string",
2695
+
"enum": [
2696
+
"macOS"
2697
+
]
2698
+
},
2699
+
{
2700
+
"description": "Windows.",
2701
+
"type": "string",
2702
+
"enum": [
2703
+
"windows"
2704
+
]
2705
+
},
2706
+
{
2707
+
"description": "Linux.",
2708
+
"type": "string",
2709
+
"enum": [
2710
+
"linux"
2711
+
]
2712
+
},
2713
+
{
2714
+
"description": "Android.",
2715
+
"type": "string",
2716
+
"enum": [
2717
+
"android"
2718
+
]
2719
+
},
2720
+
{
2721
+
"description": "iOS.",
2722
+
"type": "string",
2723
+
"enum": [
2724
+
"iOS"
2725
+
]
2726
+
}
2727
+
]
2728
+
},
2729
+
"ShellScopeEntryAllowedArg": {
2730
+
"description": "A command argument allowed to be executed by the webview API.",
2731
+
"anyOf": [
2732
+
{
2733
+
"description": "A non-configurable argument that is passed to the command in the order it was specified.",
2734
+
"type": "string"
2735
+
},
2736
+
{
2737
+
"description": "A variable that is set while calling the command from the webview API.",
2738
+
"type": "object",
2739
+
"required": [
2740
+
"validator"
2741
+
],
2742
+
"properties": {
2743
+
"raw": {
2744
+
"description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.",
2745
+
"default": false,
2746
+
"type": "boolean"
2747
+
},
2748
+
"validator": {
2749
+
"description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>",
2750
+
"type": "string"
2751
+
}
2752
+
},
2753
+
"additionalProperties": false
2754
+
}
2755
+
]
2756
+
},
2757
+
"ShellScopeEntryAllowedArgs": {
2758
+
"description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.",
2759
+
"anyOf": [
2760
+
{
2761
+
"description": "Use a simple boolean to allow all or disable all arguments to this command configuration.",
2762
+
"type": "boolean"
2763
+
},
2764
+
{
2765
+
"description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.",
2766
+
"type": "array",
2767
+
"items": {
2768
+
"$ref": "#/definitions/ShellScopeEntryAllowedArg"
2769
+
}
2770
+
}
2771
+
]
2772
+
}
2773
+
}
2774
+
}
+894
-361
src-tauri/gen/schemas/windows-schema.json
+894
-361
src-tauri/gen/schemas/windows-schema.json
···
37
],
38
"definitions": {
39
"Capability": {
40
-
"description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```",
41
"type": "object",
42
"required": [
43
"identifier",
···
49
"type": "string"
50
},
51
"description": {
52
-
"description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.",
53
"default": "",
54
"type": "string"
55
},
···
70
"type": "boolean"
71
},
72
"windows": {
73
-
"description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
74
"type": "array",
75
"items": {
76
"type": "string"
77
}
78
},
79
"webviews": {
80
-
"description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
81
"type": "array",
82
"items": {
83
"type": "string"
84
}
85
},
86
"permissions": {
87
-
"description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```",
88
"type": "array",
89
"items": {
90
"$ref": "#/definitions/PermissionEntry"
···
140
"identifier": {
141
"anyOf": [
142
{
143
-
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n",
144
"type": "string",
145
-
"const": "http:default"
146
},
147
{
148
"description": "Enables the fetch command without any pre-configured scope.",
149
"type": "string",
150
-
"const": "http:allow-fetch"
151
},
152
{
153
"description": "Enables the fetch_cancel command without any pre-configured scope.",
154
"type": "string",
155
-
"const": "http:allow-fetch-cancel"
156
},
157
{
158
"description": "Enables the fetch_read_body command without any pre-configured scope.",
159
"type": "string",
160
-
"const": "http:allow-fetch-read-body"
161
},
162
{
163
"description": "Enables the fetch_send command without any pre-configured scope.",
164
"type": "string",
165
-
"const": "http:allow-fetch-send"
166
},
167
{
168
"description": "Denies the fetch command without any pre-configured scope.",
169
"type": "string",
170
-
"const": "http:deny-fetch"
171
},
172
{
173
"description": "Denies the fetch_cancel command without any pre-configured scope.",
174
"type": "string",
175
-
"const": "http:deny-fetch-cancel"
176
},
177
{
178
"description": "Denies the fetch_read_body command without any pre-configured scope.",
179
"type": "string",
180
-
"const": "http:deny-fetch-read-body"
181
},
182
{
183
"description": "Denies the fetch_send command without any pre-configured scope.",
184
"type": "string",
185
-
"const": "http:deny-fetch-send"
186
}
187
]
188
}
···
257
"identifier": {
258
"anyOf": [
259
{
260
-
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n",
261
"type": "string",
262
-
"const": "shell:default"
263
},
264
{
265
"description": "Enables the execute command without any pre-configured scope.",
266
"type": "string",
267
-
"const": "shell:allow-execute"
268
},
269
{
270
"description": "Enables the kill command without any pre-configured scope.",
271
"type": "string",
272
-
"const": "shell:allow-kill"
273
},
274
{
275
"description": "Enables the open command without any pre-configured scope.",
276
"type": "string",
277
-
"const": "shell:allow-open"
278
},
279
{
280
"description": "Enables the spawn command without any pre-configured scope.",
281
"type": "string",
282
-
"const": "shell:allow-spawn"
283
},
284
{
285
"description": "Enables the stdin_write command without any pre-configured scope.",
286
"type": "string",
287
-
"const": "shell:allow-stdin-write"
288
},
289
{
290
"description": "Denies the execute command without any pre-configured scope.",
291
"type": "string",
292
-
"const": "shell:deny-execute"
293
},
294
{
295
"description": "Denies the kill command without any pre-configured scope.",
296
"type": "string",
297
-
"const": "shell:deny-kill"
298
},
299
{
300
"description": "Denies the open command without any pre-configured scope.",
301
"type": "string",
302
-
"const": "shell:deny-open"
303
},
304
{
305
"description": "Denies the spawn command without any pre-configured scope.",
306
"type": "string",
307
-
"const": "shell:deny-spawn"
308
},
309
{
310
"description": "Denies the stdin_write command without any pre-configured scope.",
311
"type": "string",
312
-
"const": "shell:deny-stdin-write"
313
}
314
]
315
}
···
493
"description": "Permission identifier",
494
"oneOf": [
495
{
496
-
"description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n",
497
"type": "string",
498
-
"const": "core:default"
499
},
500
{
501
-
"description": "Default permissions for the plugin.",
502
"type": "string",
503
-
"const": "core:app:default"
504
},
505
{
506
"description": "Enables the app_hide command without any pre-configured scope.",
507
"type": "string",
508
-
"const": "core:app:allow-app-hide"
509
},
510
{
511
"description": "Enables the app_show command without any pre-configured scope.",
512
"type": "string",
513
-
"const": "core:app:allow-app-show"
514
},
515
{
516
"description": "Enables the default_window_icon command without any pre-configured scope.",
517
"type": "string",
518
-
"const": "core:app:allow-default-window-icon"
519
},
520
{
521
"description": "Enables the name command without any pre-configured scope.",
522
"type": "string",
523
-
"const": "core:app:allow-name"
524
},
525
{
526
"description": "Enables the set_app_theme command without any pre-configured scope.",
527
"type": "string",
528
-
"const": "core:app:allow-set-app-theme"
529
},
530
{
531
"description": "Enables the tauri_version command without any pre-configured scope.",
532
"type": "string",
533
-
"const": "core:app:allow-tauri-version"
534
},
535
{
536
"description": "Enables the version command without any pre-configured scope.",
537
"type": "string",
538
-
"const": "core:app:allow-version"
539
},
540
{
541
"description": "Denies the app_hide command without any pre-configured scope.",
542
"type": "string",
543
-
"const": "core:app:deny-app-hide"
544
},
545
{
546
"description": "Denies the app_show command without any pre-configured scope.",
547
"type": "string",
548
-
"const": "core:app:deny-app-show"
549
},
550
{
551
"description": "Denies the default_window_icon command without any pre-configured scope.",
552
"type": "string",
553
-
"const": "core:app:deny-default-window-icon"
554
},
555
{
556
"description": "Denies the name command without any pre-configured scope.",
557
"type": "string",
558
-
"const": "core:app:deny-name"
559
},
560
{
561
"description": "Denies the set_app_theme command without any pre-configured scope.",
562
"type": "string",
563
-
"const": "core:app:deny-set-app-theme"
564
},
565
{
566
"description": "Denies the tauri_version command without any pre-configured scope.",
567
"type": "string",
568
-
"const": "core:app:deny-tauri-version"
569
},
570
{
571
"description": "Denies the version command without any pre-configured scope.",
572
"type": "string",
573
-
"const": "core:app:deny-version"
574
},
575
{
576
-
"description": "Default permissions for the plugin.",
577
"type": "string",
578
-
"const": "core:event:default"
579
},
580
{
581
"description": "Enables the emit command without any pre-configured scope.",
582
"type": "string",
583
-
"const": "core:event:allow-emit"
584
},
585
{
586
"description": "Enables the emit_to command without any pre-configured scope.",
587
"type": "string",
588
-
"const": "core:event:allow-emit-to"
589
},
590
{
591
"description": "Enables the listen command without any pre-configured scope.",
592
"type": "string",
593
-
"const": "core:event:allow-listen"
594
},
595
{
596
"description": "Enables the unlisten command without any pre-configured scope.",
597
"type": "string",
598
-
"const": "core:event:allow-unlisten"
599
},
600
{
601
"description": "Denies the emit command without any pre-configured scope.",
602
"type": "string",
603
-
"const": "core:event:deny-emit"
604
},
605
{
606
"description": "Denies the emit_to command without any pre-configured scope.",
607
"type": "string",
608
-
"const": "core:event:deny-emit-to"
609
},
610
{
611
"description": "Denies the listen command without any pre-configured scope.",
612
"type": "string",
613
-
"const": "core:event:deny-listen"
614
},
615
{
616
"description": "Denies the unlisten command without any pre-configured scope.",
617
"type": "string",
618
-
"const": "core:event:deny-unlisten"
619
},
620
{
621
-
"description": "Default permissions for the plugin.",
622
"type": "string",
623
-
"const": "core:image:default"
624
},
625
{
626
"description": "Enables the from_bytes command without any pre-configured scope.",
627
"type": "string",
628
-
"const": "core:image:allow-from-bytes"
629
},
630
{
631
"description": "Enables the from_path command without any pre-configured scope.",
632
"type": "string",
633
-
"const": "core:image:allow-from-path"
634
},
635
{
636
"description": "Enables the new command without any pre-configured scope.",
637
"type": "string",
638
-
"const": "core:image:allow-new"
639
},
640
{
641
"description": "Enables the rgba command without any pre-configured scope.",
642
"type": "string",
643
-
"const": "core:image:allow-rgba"
644
},
645
{
646
"description": "Enables the size command without any pre-configured scope.",
647
"type": "string",
648
-
"const": "core:image:allow-size"
649
},
650
{
651
"description": "Denies the from_bytes command without any pre-configured scope.",
652
"type": "string",
653
-
"const": "core:image:deny-from-bytes"
654
},
655
{
656
"description": "Denies the from_path command without any pre-configured scope.",
657
"type": "string",
658
-
"const": "core:image:deny-from-path"
659
},
660
{
661
"description": "Denies the new command without any pre-configured scope.",
662
"type": "string",
663
-
"const": "core:image:deny-new"
664
},
665
{
666
"description": "Denies the rgba command without any pre-configured scope.",
667
"type": "string",
668
-
"const": "core:image:deny-rgba"
669
},
670
{
671
"description": "Denies the size command without any pre-configured scope.",
672
"type": "string",
673
-
"const": "core:image:deny-size"
674
},
675
{
676
-
"description": "Default permissions for the plugin.",
677
"type": "string",
678
-
"const": "core:menu:default"
679
},
680
{
681
"description": "Enables the append command without any pre-configured scope.",
682
"type": "string",
683
-
"const": "core:menu:allow-append"
684
},
685
{
686
"description": "Enables the create_default command without any pre-configured scope.",
687
"type": "string",
688
-
"const": "core:menu:allow-create-default"
689
},
690
{
691
"description": "Enables the get command without any pre-configured scope.",
692
"type": "string",
693
-
"const": "core:menu:allow-get"
694
},
695
{
696
"description": "Enables the insert command without any pre-configured scope.",
697
"type": "string",
698
-
"const": "core:menu:allow-insert"
699
},
700
{
701
"description": "Enables the is_checked command without any pre-configured scope.",
702
"type": "string",
703
-
"const": "core:menu:allow-is-checked"
704
},
705
{
706
"description": "Enables the is_enabled command without any pre-configured scope.",
707
"type": "string",
708
-
"const": "core:menu:allow-is-enabled"
709
},
710
{
711
"description": "Enables the items command without any pre-configured scope.",
712
"type": "string",
713
-
"const": "core:menu:allow-items"
714
},
715
{
716
"description": "Enables the new command without any pre-configured scope.",
717
"type": "string",
718
-
"const": "core:menu:allow-new"
719
},
720
{
721
"description": "Enables the popup command without any pre-configured scope.",
722
"type": "string",
723
-
"const": "core:menu:allow-popup"
724
},
725
{
726
"description": "Enables the prepend command without any pre-configured scope.",
727
"type": "string",
728
-
"const": "core:menu:allow-prepend"
729
},
730
{
731
"description": "Enables the remove command without any pre-configured scope.",
732
"type": "string",
733
-
"const": "core:menu:allow-remove"
734
},
735
{
736
"description": "Enables the remove_at command without any pre-configured scope.",
737
"type": "string",
738
-
"const": "core:menu:allow-remove-at"
739
},
740
{
741
"description": "Enables the set_accelerator command without any pre-configured scope.",
742
"type": "string",
743
-
"const": "core:menu:allow-set-accelerator"
744
},
745
{
746
"description": "Enables the set_as_app_menu command without any pre-configured scope.",
747
"type": "string",
748
-
"const": "core:menu:allow-set-as-app-menu"
749
},
750
{
751
"description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.",
752
"type": "string",
753
-
"const": "core:menu:allow-set-as-help-menu-for-nsapp"
754
},
755
{
756
"description": "Enables the set_as_window_menu command without any pre-configured scope.",
757
"type": "string",
758
-
"const": "core:menu:allow-set-as-window-menu"
759
},
760
{
761
"description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
762
"type": "string",
763
-
"const": "core:menu:allow-set-as-windows-menu-for-nsapp"
764
},
765
{
766
"description": "Enables the set_checked command without any pre-configured scope.",
767
"type": "string",
768
-
"const": "core:menu:allow-set-checked"
769
},
770
{
771
"description": "Enables the set_enabled command without any pre-configured scope.",
772
"type": "string",
773
-
"const": "core:menu:allow-set-enabled"
774
},
775
{
776
"description": "Enables the set_icon command without any pre-configured scope.",
777
"type": "string",
778
-
"const": "core:menu:allow-set-icon"
779
},
780
{
781
"description": "Enables the set_text command without any pre-configured scope.",
782
"type": "string",
783
-
"const": "core:menu:allow-set-text"
784
},
785
{
786
"description": "Enables the text command without any pre-configured scope.",
787
"type": "string",
788
-
"const": "core:menu:allow-text"
789
},
790
{
791
"description": "Denies the append command without any pre-configured scope.",
792
"type": "string",
793
-
"const": "core:menu:deny-append"
794
},
795
{
796
"description": "Denies the create_default command without any pre-configured scope.",
797
"type": "string",
798
-
"const": "core:menu:deny-create-default"
799
},
800
{
801
"description": "Denies the get command without any pre-configured scope.",
802
"type": "string",
803
-
"const": "core:menu:deny-get"
804
},
805
{
806
"description": "Denies the insert command without any pre-configured scope.",
807
"type": "string",
808
-
"const": "core:menu:deny-insert"
809
},
810
{
811
"description": "Denies the is_checked command without any pre-configured scope.",
812
"type": "string",
813
-
"const": "core:menu:deny-is-checked"
814
},
815
{
816
"description": "Denies the is_enabled command without any pre-configured scope.",
817
"type": "string",
818
-
"const": "core:menu:deny-is-enabled"
819
},
820
{
821
"description": "Denies the items command without any pre-configured scope.",
822
"type": "string",
823
-
"const": "core:menu:deny-items"
824
},
825
{
826
"description": "Denies the new command without any pre-configured scope.",
827
"type": "string",
828
-
"const": "core:menu:deny-new"
829
},
830
{
831
"description": "Denies the popup command without any pre-configured scope.",
832
"type": "string",
833
-
"const": "core:menu:deny-popup"
834
},
835
{
836
"description": "Denies the prepend command without any pre-configured scope.",
837
"type": "string",
838
-
"const": "core:menu:deny-prepend"
839
},
840
{
841
"description": "Denies the remove command without any pre-configured scope.",
842
"type": "string",
843
-
"const": "core:menu:deny-remove"
844
},
845
{
846
"description": "Denies the remove_at command without any pre-configured scope.",
847
"type": "string",
848
-
"const": "core:menu:deny-remove-at"
849
},
850
{
851
"description": "Denies the set_accelerator command without any pre-configured scope.",
852
"type": "string",
853
-
"const": "core:menu:deny-set-accelerator"
854
},
855
{
856
"description": "Denies the set_as_app_menu command without any pre-configured scope.",
857
"type": "string",
858
-
"const": "core:menu:deny-set-as-app-menu"
859
},
860
{
861
"description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.",
862
"type": "string",
863
-
"const": "core:menu:deny-set-as-help-menu-for-nsapp"
864
},
865
{
866
"description": "Denies the set_as_window_menu command without any pre-configured scope.",
867
"type": "string",
868
-
"const": "core:menu:deny-set-as-window-menu"
869
},
870
{
871
"description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
872
"type": "string",
873
-
"const": "core:menu:deny-set-as-windows-menu-for-nsapp"
874
},
875
{
876
"description": "Denies the set_checked command without any pre-configured scope.",
877
"type": "string",
878
-
"const": "core:menu:deny-set-checked"
879
},
880
{
881
"description": "Denies the set_enabled command without any pre-configured scope.",
882
"type": "string",
883
-
"const": "core:menu:deny-set-enabled"
884
},
885
{
886
"description": "Denies the set_icon command without any pre-configured scope.",
887
"type": "string",
888
-
"const": "core:menu:deny-set-icon"
889
},
890
{
891
"description": "Denies the set_text command without any pre-configured scope.",
892
"type": "string",
893
-
"const": "core:menu:deny-set-text"
894
},
895
{
896
"description": "Denies the text command without any pre-configured scope.",
897
"type": "string",
898
-
"const": "core:menu:deny-text"
899
},
900
{
901
-
"description": "Default permissions for the plugin.",
902
"type": "string",
903
-
"const": "core:path:default"
904
},
905
{
906
"description": "Enables the basename command without any pre-configured scope.",
907
"type": "string",
908
-
"const": "core:path:allow-basename"
909
},
910
{
911
"description": "Enables the dirname command without any pre-configured scope.",
912
"type": "string",
913
-
"const": "core:path:allow-dirname"
914
},
915
{
916
"description": "Enables the extname command without any pre-configured scope.",
917
"type": "string",
918
-
"const": "core:path:allow-extname"
919
},
920
{
921
"description": "Enables the is_absolute command without any pre-configured scope.",
922
"type": "string",
923
-
"const": "core:path:allow-is-absolute"
924
},
925
{
926
"description": "Enables the join command without any pre-configured scope.",
927
"type": "string",
928
-
"const": "core:path:allow-join"
929
},
930
{
931
"description": "Enables the normalize command without any pre-configured scope.",
932
"type": "string",
933
-
"const": "core:path:allow-normalize"
934
},
935
{
936
"description": "Enables the resolve command without any pre-configured scope.",
937
"type": "string",
938
-
"const": "core:path:allow-resolve"
939
},
940
{
941
"description": "Enables the resolve_directory command without any pre-configured scope.",
942
"type": "string",
943
-
"const": "core:path:allow-resolve-directory"
944
},
945
{
946
"description": "Denies the basename command without any pre-configured scope.",
947
"type": "string",
948
-
"const": "core:path:deny-basename"
949
},
950
{
951
"description": "Denies the dirname command without any pre-configured scope.",
952
"type": "string",
953
-
"const": "core:path:deny-dirname"
954
},
955
{
956
"description": "Denies the extname command without any pre-configured scope.",
957
"type": "string",
958
-
"const": "core:path:deny-extname"
959
},
960
{
961
"description": "Denies the is_absolute command without any pre-configured scope.",
962
"type": "string",
963
-
"const": "core:path:deny-is-absolute"
964
},
965
{
966
"description": "Denies the join command without any pre-configured scope.",
967
"type": "string",
968
-
"const": "core:path:deny-join"
969
},
970
{
971
"description": "Denies the normalize command without any pre-configured scope.",
972
"type": "string",
973
-
"const": "core:path:deny-normalize"
974
},
975
{
976
"description": "Denies the resolve command without any pre-configured scope.",
977
"type": "string",
978
-
"const": "core:path:deny-resolve"
979
},
980
{
981
"description": "Denies the resolve_directory command without any pre-configured scope.",
982
"type": "string",
983
-
"const": "core:path:deny-resolve-directory"
984
},
985
{
986
-
"description": "Default permissions for the plugin.",
987
"type": "string",
988
-
"const": "core:resources:default"
989
},
990
{
991
"description": "Enables the close command without any pre-configured scope.",
992
"type": "string",
993
-
"const": "core:resources:allow-close"
994
},
995
{
996
"description": "Denies the close command without any pre-configured scope.",
997
"type": "string",
998
-
"const": "core:resources:deny-close"
999
},
1000
{
1001
-
"description": "Default permissions for the plugin.",
1002
"type": "string",
1003
-
"const": "core:tray:default"
1004
},
1005
{
1006
"description": "Enables the get_by_id command without any pre-configured scope.",
1007
"type": "string",
1008
-
"const": "core:tray:allow-get-by-id"
1009
},
1010
{
1011
"description": "Enables the new command without any pre-configured scope.",
1012
"type": "string",
1013
-
"const": "core:tray:allow-new"
1014
},
1015
{
1016
"description": "Enables the remove_by_id command without any pre-configured scope.",
1017
"type": "string",
1018
-
"const": "core:tray:allow-remove-by-id"
1019
},
1020
{
1021
"description": "Enables the set_icon command without any pre-configured scope.",
1022
"type": "string",
1023
-
"const": "core:tray:allow-set-icon"
1024
},
1025
{
1026
"description": "Enables the set_icon_as_template command without any pre-configured scope.",
1027
"type": "string",
1028
-
"const": "core:tray:allow-set-icon-as-template"
1029
},
1030
{
1031
"description": "Enables the set_menu command without any pre-configured scope.",
1032
"type": "string",
1033
-
"const": "core:tray:allow-set-menu"
1034
},
1035
{
1036
"description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.",
1037
"type": "string",
1038
-
"const": "core:tray:allow-set-show-menu-on-left-click"
1039
},
1040
{
1041
"description": "Enables the set_temp_dir_path command without any pre-configured scope.",
1042
"type": "string",
1043
-
"const": "core:tray:allow-set-temp-dir-path"
1044
},
1045
{
1046
"description": "Enables the set_title command without any pre-configured scope.",
1047
"type": "string",
1048
-
"const": "core:tray:allow-set-title"
1049
},
1050
{
1051
"description": "Enables the set_tooltip command without any pre-configured scope.",
1052
"type": "string",
1053
-
"const": "core:tray:allow-set-tooltip"
1054
},
1055
{
1056
"description": "Enables the set_visible command without any pre-configured scope.",
1057
"type": "string",
1058
-
"const": "core:tray:allow-set-visible"
1059
},
1060
{
1061
"description": "Denies the get_by_id command without any pre-configured scope.",
1062
"type": "string",
1063
-
"const": "core:tray:deny-get-by-id"
1064
},
1065
{
1066
"description": "Denies the new command without any pre-configured scope.",
1067
"type": "string",
1068
-
"const": "core:tray:deny-new"
1069
},
1070
{
1071
"description": "Denies the remove_by_id command without any pre-configured scope.",
1072
"type": "string",
1073
-
"const": "core:tray:deny-remove-by-id"
1074
},
1075
{
1076
"description": "Denies the set_icon command without any pre-configured scope.",
1077
"type": "string",
1078
-
"const": "core:tray:deny-set-icon"
1079
},
1080
{
1081
"description": "Denies the set_icon_as_template command without any pre-configured scope.",
1082
"type": "string",
1083
-
"const": "core:tray:deny-set-icon-as-template"
1084
},
1085
{
1086
"description": "Denies the set_menu command without any pre-configured scope.",
1087
"type": "string",
1088
-
"const": "core:tray:deny-set-menu"
1089
},
1090
{
1091
"description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.",
1092
"type": "string",
1093
-
"const": "core:tray:deny-set-show-menu-on-left-click"
1094
},
1095
{
1096
"description": "Denies the set_temp_dir_path command without any pre-configured scope.",
1097
"type": "string",
1098
-
"const": "core:tray:deny-set-temp-dir-path"
1099
},
1100
{
1101
"description": "Denies the set_title command without any pre-configured scope.",
1102
"type": "string",
1103
-
"const": "core:tray:deny-set-title"
1104
},
1105
{
1106
"description": "Denies the set_tooltip command without any pre-configured scope.",
1107
"type": "string",
1108
-
"const": "core:tray:deny-set-tooltip"
1109
},
1110
{
1111
"description": "Denies the set_visible command without any pre-configured scope.",
1112
"type": "string",
1113
-
"const": "core:tray:deny-set-visible"
1114
},
1115
{
1116
-
"description": "Default permissions for the plugin.",
1117
"type": "string",
1118
-
"const": "core:webview:default"
1119
},
1120
{
1121
"description": "Enables the clear_all_browsing_data command without any pre-configured scope.",
1122
"type": "string",
1123
-
"const": "core:webview:allow-clear-all-browsing-data"
1124
},
1125
{
1126
"description": "Enables the create_webview command without any pre-configured scope.",
1127
"type": "string",
1128
-
"const": "core:webview:allow-create-webview"
1129
},
1130
{
1131
"description": "Enables the create_webview_window command without any pre-configured scope.",
1132
"type": "string",
1133
-
"const": "core:webview:allow-create-webview-window"
1134
},
1135
{
1136
"description": "Enables the get_all_webviews command without any pre-configured scope.",
1137
"type": "string",
1138
-
"const": "core:webview:allow-get-all-webviews"
1139
},
1140
{
1141
"description": "Enables the internal_toggle_devtools command without any pre-configured scope.",
1142
"type": "string",
1143
-
"const": "core:webview:allow-internal-toggle-devtools"
1144
},
1145
{
1146
"description": "Enables the print command without any pre-configured scope.",
1147
"type": "string",
1148
-
"const": "core:webview:allow-print"
1149
},
1150
{
1151
"description": "Enables the reparent command without any pre-configured scope.",
1152
"type": "string",
1153
-
"const": "core:webview:allow-reparent"
1154
},
1155
{
1156
"description": "Enables the set_webview_focus command without any pre-configured scope.",
1157
"type": "string",
1158
-
"const": "core:webview:allow-set-webview-focus"
1159
},
1160
{
1161
"description": "Enables the set_webview_position command without any pre-configured scope.",
1162
"type": "string",
1163
-
"const": "core:webview:allow-set-webview-position"
1164
},
1165
{
1166
"description": "Enables the set_webview_size command without any pre-configured scope.",
1167
"type": "string",
1168
-
"const": "core:webview:allow-set-webview-size"
1169
},
1170
{
1171
"description": "Enables the set_webview_zoom command without any pre-configured scope.",
1172
"type": "string",
1173
-
"const": "core:webview:allow-set-webview-zoom"
1174
},
1175
{
1176
"description": "Enables the webview_close command without any pre-configured scope.",
1177
"type": "string",
1178
-
"const": "core:webview:allow-webview-close"
1179
},
1180
{
1181
"description": "Enables the webview_hide command without any pre-configured scope.",
1182
"type": "string",
1183
-
"const": "core:webview:allow-webview-hide"
1184
},
1185
{
1186
"description": "Enables the webview_position command without any pre-configured scope.",
1187
"type": "string",
1188
-
"const": "core:webview:allow-webview-position"
1189
},
1190
{
1191
"description": "Enables the webview_show command without any pre-configured scope.",
1192
"type": "string",
1193
-
"const": "core:webview:allow-webview-show"
1194
},
1195
{
1196
"description": "Enables the webview_size command without any pre-configured scope.",
1197
"type": "string",
1198
-
"const": "core:webview:allow-webview-size"
1199
},
1200
{
1201
"description": "Denies the clear_all_browsing_data command without any pre-configured scope.",
1202
"type": "string",
1203
-
"const": "core:webview:deny-clear-all-browsing-data"
1204
},
1205
{
1206
"description": "Denies the create_webview command without any pre-configured scope.",
1207
"type": "string",
1208
-
"const": "core:webview:deny-create-webview"
1209
},
1210
{
1211
"description": "Denies the create_webview_window command without any pre-configured scope.",
1212
"type": "string",
1213
-
"const": "core:webview:deny-create-webview-window"
1214
},
1215
{
1216
"description": "Denies the get_all_webviews command without any pre-configured scope.",
1217
"type": "string",
1218
-
"const": "core:webview:deny-get-all-webviews"
1219
},
1220
{
1221
"description": "Denies the internal_toggle_devtools command without any pre-configured scope.",
1222
"type": "string",
1223
-
"const": "core:webview:deny-internal-toggle-devtools"
1224
},
1225
{
1226
"description": "Denies the print command without any pre-configured scope.",
1227
"type": "string",
1228
-
"const": "core:webview:deny-print"
1229
},
1230
{
1231
"description": "Denies the reparent command without any pre-configured scope.",
1232
"type": "string",
1233
-
"const": "core:webview:deny-reparent"
1234
},
1235
{
1236
"description": "Denies the set_webview_focus command without any pre-configured scope.",
1237
"type": "string",
1238
-
"const": "core:webview:deny-set-webview-focus"
1239
},
1240
{
1241
"description": "Denies the set_webview_position command without any pre-configured scope.",
1242
"type": "string",
1243
-
"const": "core:webview:deny-set-webview-position"
1244
},
1245
{
1246
"description": "Denies the set_webview_size command without any pre-configured scope.",
1247
"type": "string",
1248
-
"const": "core:webview:deny-set-webview-size"
1249
},
1250
{
1251
"description": "Denies the set_webview_zoom command without any pre-configured scope.",
1252
"type": "string",
1253
-
"const": "core:webview:deny-set-webview-zoom"
1254
},
1255
{
1256
"description": "Denies the webview_close command without any pre-configured scope.",
1257
"type": "string",
1258
-
"const": "core:webview:deny-webview-close"
1259
},
1260
{
1261
"description": "Denies the webview_hide command without any pre-configured scope.",
1262
"type": "string",
1263
-
"const": "core:webview:deny-webview-hide"
1264
},
1265
{
1266
"description": "Denies the webview_position command without any pre-configured scope.",
1267
"type": "string",
1268
-
"const": "core:webview:deny-webview-position"
1269
},
1270
{
1271
"description": "Denies the webview_show command without any pre-configured scope.",
1272
"type": "string",
1273
-
"const": "core:webview:deny-webview-show"
1274
},
1275
{
1276
"description": "Denies the webview_size command without any pre-configured scope.",
1277
"type": "string",
1278
-
"const": "core:webview:deny-webview-size"
1279
},
1280
{
1281
-
"description": "Default permissions for the plugin.",
1282
"type": "string",
1283
-
"const": "core:window:default"
1284
},
1285
{
1286
"description": "Enables the available_monitors command without any pre-configured scope.",
1287
"type": "string",
1288
-
"const": "core:window:allow-available-monitors"
1289
},
1290
{
1291
"description": "Enables the center command without any pre-configured scope.",
1292
"type": "string",
1293
-
"const": "core:window:allow-center"
1294
},
1295
{
1296
"description": "Enables the close command without any pre-configured scope.",
1297
"type": "string",
1298
-
"const": "core:window:allow-close"
1299
},
1300
{
1301
"description": "Enables the create command without any pre-configured scope.",
1302
"type": "string",
1303
-
"const": "core:window:allow-create"
1304
},
1305
{
1306
"description": "Enables the current_monitor command without any pre-configured scope.",
1307
"type": "string",
1308
-
"const": "core:window:allow-current-monitor"
1309
},
1310
{
1311
"description": "Enables the cursor_position command without any pre-configured scope.",
1312
"type": "string",
1313
-
"const": "core:window:allow-cursor-position"
1314
},
1315
{
1316
"description": "Enables the destroy command without any pre-configured scope.",
1317
"type": "string",
1318
-
"const": "core:window:allow-destroy"
1319
},
1320
{
1321
"description": "Enables the get_all_windows command without any pre-configured scope.",
1322
"type": "string",
1323
-
"const": "core:window:allow-get-all-windows"
1324
},
1325
{
1326
"description": "Enables the hide command without any pre-configured scope.",
1327
"type": "string",
1328
-
"const": "core:window:allow-hide"
1329
},
1330
{
1331
"description": "Enables the inner_position command without any pre-configured scope.",
1332
"type": "string",
1333
-
"const": "core:window:allow-inner-position"
1334
},
1335
{
1336
"description": "Enables the inner_size command without any pre-configured scope.",
1337
"type": "string",
1338
-
"const": "core:window:allow-inner-size"
1339
},
1340
{
1341
"description": "Enables the internal_toggle_maximize command without any pre-configured scope.",
1342
"type": "string",
1343
-
"const": "core:window:allow-internal-toggle-maximize"
1344
},
1345
{
1346
"description": "Enables the is_closable command without any pre-configured scope.",
1347
"type": "string",
1348
-
"const": "core:window:allow-is-closable"
1349
},
1350
{
1351
"description": "Enables the is_decorated command without any pre-configured scope.",
1352
"type": "string",
1353
-
"const": "core:window:allow-is-decorated"
1354
},
1355
{
1356
"description": "Enables the is_enabled command without any pre-configured scope.",
1357
"type": "string",
1358
-
"const": "core:window:allow-is-enabled"
1359
},
1360
{
1361
"description": "Enables the is_focused command without any pre-configured scope.",
1362
"type": "string",
1363
-
"const": "core:window:allow-is-focused"
1364
},
1365
{
1366
"description": "Enables the is_fullscreen command without any pre-configured scope.",
1367
"type": "string",
1368
-
"const": "core:window:allow-is-fullscreen"
1369
},
1370
{
1371
"description": "Enables the is_maximizable command without any pre-configured scope.",
1372
"type": "string",
1373
-
"const": "core:window:allow-is-maximizable"
1374
},
1375
{
1376
"description": "Enables the is_maximized command without any pre-configured scope.",
1377
"type": "string",
1378
-
"const": "core:window:allow-is-maximized"
1379
},
1380
{
1381
"description": "Enables the is_minimizable command without any pre-configured scope.",
1382
"type": "string",
1383
-
"const": "core:window:allow-is-minimizable"
1384
},
1385
{
1386
"description": "Enables the is_minimized command without any pre-configured scope.",
1387
"type": "string",
1388
-
"const": "core:window:allow-is-minimized"
1389
},
1390
{
1391
"description": "Enables the is_resizable command without any pre-configured scope.",
1392
"type": "string",
1393
-
"const": "core:window:allow-is-resizable"
1394
},
1395
{
1396
"description": "Enables the is_visible command without any pre-configured scope.",
1397
"type": "string",
1398
-
"const": "core:window:allow-is-visible"
1399
},
1400
{
1401
"description": "Enables the maximize command without any pre-configured scope.",
1402
"type": "string",
1403
-
"const": "core:window:allow-maximize"
1404
},
1405
{
1406
"description": "Enables the minimize command without any pre-configured scope.",
1407
"type": "string",
1408
-
"const": "core:window:allow-minimize"
1409
},
1410
{
1411
"description": "Enables the monitor_from_point command without any pre-configured scope.",
1412
"type": "string",
1413
-
"const": "core:window:allow-monitor-from-point"
1414
},
1415
{
1416
"description": "Enables the outer_position command without any pre-configured scope.",
1417
"type": "string",
1418
-
"const": "core:window:allow-outer-position"
1419
},
1420
{
1421
"description": "Enables the outer_size command without any pre-configured scope.",
1422
"type": "string",
1423
-
"const": "core:window:allow-outer-size"
1424
},
1425
{
1426
"description": "Enables the primary_monitor command without any pre-configured scope.",
1427
"type": "string",
1428
-
"const": "core:window:allow-primary-monitor"
1429
},
1430
{
1431
"description": "Enables the request_user_attention command without any pre-configured scope.",
1432
"type": "string",
1433
-
"const": "core:window:allow-request-user-attention"
1434
},
1435
{
1436
"description": "Enables the scale_factor command without any pre-configured scope.",
1437
"type": "string",
1438
-
"const": "core:window:allow-scale-factor"
1439
},
1440
{
1441
"description": "Enables the set_always_on_bottom command without any pre-configured scope.",
1442
"type": "string",
1443
-
"const": "core:window:allow-set-always-on-bottom"
1444
},
1445
{
1446
"description": "Enables the set_always_on_top command without any pre-configured scope.",
1447
"type": "string",
1448
-
"const": "core:window:allow-set-always-on-top"
1449
},
1450
{
1451
"description": "Enables the set_closable command without any pre-configured scope.",
1452
"type": "string",
1453
-
"const": "core:window:allow-set-closable"
1454
},
1455
{
1456
"description": "Enables the set_content_protected command without any pre-configured scope.",
1457
"type": "string",
1458
-
"const": "core:window:allow-set-content-protected"
1459
},
1460
{
1461
"description": "Enables the set_cursor_grab command without any pre-configured scope.",
1462
"type": "string",
1463
-
"const": "core:window:allow-set-cursor-grab"
1464
},
1465
{
1466
"description": "Enables the set_cursor_icon command without any pre-configured scope.",
1467
"type": "string",
1468
-
"const": "core:window:allow-set-cursor-icon"
1469
},
1470
{
1471
"description": "Enables the set_cursor_position command without any pre-configured scope.",
1472
"type": "string",
1473
-
"const": "core:window:allow-set-cursor-position"
1474
},
1475
{
1476
"description": "Enables the set_cursor_visible command without any pre-configured scope.",
1477
"type": "string",
1478
-
"const": "core:window:allow-set-cursor-visible"
1479
},
1480
{
1481
"description": "Enables the set_decorations command without any pre-configured scope.",
1482
"type": "string",
1483
-
"const": "core:window:allow-set-decorations"
1484
},
1485
{
1486
"description": "Enables the set_effects command without any pre-configured scope.",
1487
"type": "string",
1488
-
"const": "core:window:allow-set-effects"
1489
},
1490
{
1491
"description": "Enables the set_enabled command without any pre-configured scope.",
1492
"type": "string",
1493
-
"const": "core:window:allow-set-enabled"
1494
},
1495
{
1496
"description": "Enables the set_focus command without any pre-configured scope.",
1497
"type": "string",
1498
-
"const": "core:window:allow-set-focus"
1499
},
1500
{
1501
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1502
"type": "string",
1503
-
"const": "core:window:allow-set-fullscreen"
1504
},
1505
{
1506
"description": "Enables the set_icon command without any pre-configured scope.",
1507
"type": "string",
1508
-
"const": "core:window:allow-set-icon"
1509
},
1510
{
1511
"description": "Enables the set_ignore_cursor_events command without any pre-configured scope.",
1512
"type": "string",
1513
-
"const": "core:window:allow-set-ignore-cursor-events"
1514
},
1515
{
1516
"description": "Enables the set_max_size command without any pre-configured scope.",
1517
"type": "string",
1518
-
"const": "core:window:allow-set-max-size"
1519
},
1520
{
1521
"description": "Enables the set_maximizable command without any pre-configured scope.",
1522
"type": "string",
1523
-
"const": "core:window:allow-set-maximizable"
1524
},
1525
{
1526
"description": "Enables the set_min_size command without any pre-configured scope.",
1527
"type": "string",
1528
-
"const": "core:window:allow-set-min-size"
1529
},
1530
{
1531
"description": "Enables the set_minimizable command without any pre-configured scope.",
1532
"type": "string",
1533
-
"const": "core:window:allow-set-minimizable"
1534
},
1535
{
1536
"description": "Enables the set_position command without any pre-configured scope.",
1537
"type": "string",
1538
-
"const": "core:window:allow-set-position"
1539
},
1540
{
1541
"description": "Enables the set_progress_bar command without any pre-configured scope.",
1542
"type": "string",
1543
-
"const": "core:window:allow-set-progress-bar"
1544
},
1545
{
1546
"description": "Enables the set_resizable command without any pre-configured scope.",
1547
"type": "string",
1548
-
"const": "core:window:allow-set-resizable"
1549
},
1550
{
1551
"description": "Enables the set_shadow command without any pre-configured scope.",
1552
"type": "string",
1553
-
"const": "core:window:allow-set-shadow"
1554
},
1555
{
1556
"description": "Enables the set_size command without any pre-configured scope.",
1557
"type": "string",
1558
-
"const": "core:window:allow-set-size"
1559
},
1560
{
1561
"description": "Enables the set_size_constraints command without any pre-configured scope.",
1562
"type": "string",
1563
-
"const": "core:window:allow-set-size-constraints"
1564
},
1565
{
1566
"description": "Enables the set_skip_taskbar command without any pre-configured scope.",
1567
"type": "string",
1568
-
"const": "core:window:allow-set-skip-taskbar"
1569
},
1570
{
1571
"description": "Enables the set_theme command without any pre-configured scope.",
1572
"type": "string",
1573
-
"const": "core:window:allow-set-theme"
1574
},
1575
{
1576
"description": "Enables the set_title command without any pre-configured scope.",
1577
"type": "string",
1578
-
"const": "core:window:allow-set-title"
1579
},
1580
{
1581
"description": "Enables the set_title_bar_style command without any pre-configured scope.",
1582
"type": "string",
1583
-
"const": "core:window:allow-set-title-bar-style"
1584
},
1585
{
1586
"description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.",
1587
"type": "string",
1588
-
"const": "core:window:allow-set-visible-on-all-workspaces"
1589
},
1590
{
1591
"description": "Enables the show command without any pre-configured scope.",
1592
"type": "string",
1593
-
"const": "core:window:allow-show"
1594
},
1595
{
1596
"description": "Enables the start_dragging command without any pre-configured scope.",
1597
"type": "string",
1598
-
"const": "core:window:allow-start-dragging"
1599
},
1600
{
1601
"description": "Enables the start_resize_dragging command without any pre-configured scope.",
1602
"type": "string",
1603
-
"const": "core:window:allow-start-resize-dragging"
1604
},
1605
{
1606
"description": "Enables the theme command without any pre-configured scope.",
1607
"type": "string",
1608
-
"const": "core:window:allow-theme"
1609
},
1610
{
1611
"description": "Enables the title command without any pre-configured scope.",
1612
"type": "string",
1613
-
"const": "core:window:allow-title"
1614
},
1615
{
1616
"description": "Enables the toggle_maximize command without any pre-configured scope.",
1617
"type": "string",
1618
-
"const": "core:window:allow-toggle-maximize"
1619
},
1620
{
1621
"description": "Enables the unmaximize command without any pre-configured scope.",
1622
"type": "string",
1623
-
"const": "core:window:allow-unmaximize"
1624
},
1625
{
1626
"description": "Enables the unminimize command without any pre-configured scope.",
1627
"type": "string",
1628
-
"const": "core:window:allow-unminimize"
1629
},
1630
{
1631
"description": "Denies the available_monitors command without any pre-configured scope.",
1632
"type": "string",
1633
-
"const": "core:window:deny-available-monitors"
1634
},
1635
{
1636
"description": "Denies the center command without any pre-configured scope.",
1637
"type": "string",
1638
-
"const": "core:window:deny-center"
1639
},
1640
{
1641
"description": "Denies the close command without any pre-configured scope.",
1642
"type": "string",
1643
-
"const": "core:window:deny-close"
1644
},
1645
{
1646
"description": "Denies the create command without any pre-configured scope.",
1647
"type": "string",
1648
-
"const": "core:window:deny-create"
1649
},
1650
{
1651
"description": "Denies the current_monitor command without any pre-configured scope.",
1652
"type": "string",
1653
-
"const": "core:window:deny-current-monitor"
1654
},
1655
{
1656
"description": "Denies the cursor_position command without any pre-configured scope.",
1657
"type": "string",
1658
-
"const": "core:window:deny-cursor-position"
1659
},
1660
{
1661
"description": "Denies the destroy command without any pre-configured scope.",
1662
"type": "string",
1663
-
"const": "core:window:deny-destroy"
1664
},
1665
{
1666
"description": "Denies the get_all_windows command without any pre-configured scope.",
1667
"type": "string",
1668
-
"const": "core:window:deny-get-all-windows"
1669
},
1670
{
1671
"description": "Denies the hide command without any pre-configured scope.",
1672
"type": "string",
1673
-
"const": "core:window:deny-hide"
1674
},
1675
{
1676
"description": "Denies the inner_position command without any pre-configured scope.",
1677
"type": "string",
1678
-
"const": "core:window:deny-inner-position"
1679
},
1680
{
1681
"description": "Denies the inner_size command without any pre-configured scope.",
1682
"type": "string",
1683
-
"const": "core:window:deny-inner-size"
1684
},
1685
{
1686
"description": "Denies the internal_toggle_maximize command without any pre-configured scope.",
1687
"type": "string",
1688
-
"const": "core:window:deny-internal-toggle-maximize"
1689
},
1690
{
1691
"description": "Denies the is_closable command without any pre-configured scope.",
1692
"type": "string",
1693
-
"const": "core:window:deny-is-closable"
1694
},
1695
{
1696
"description": "Denies the is_decorated command without any pre-configured scope.",
1697
"type": "string",
1698
-
"const": "core:window:deny-is-decorated"
1699
},
1700
{
1701
"description": "Denies the is_enabled command without any pre-configured scope.",
1702
"type": "string",
1703
-
"const": "core:window:deny-is-enabled"
1704
},
1705
{
1706
"description": "Denies the is_focused command without any pre-configured scope.",
1707
"type": "string",
1708
-
"const": "core:window:deny-is-focused"
1709
},
1710
{
1711
"description": "Denies the is_fullscreen command without any pre-configured scope.",
1712
"type": "string",
1713
-
"const": "core:window:deny-is-fullscreen"
1714
},
1715
{
1716
"description": "Denies the is_maximizable command without any pre-configured scope.",
1717
"type": "string",
1718
-
"const": "core:window:deny-is-maximizable"
1719
},
1720
{
1721
"description": "Denies the is_maximized command without any pre-configured scope.",
1722
"type": "string",
1723
-
"const": "core:window:deny-is-maximized"
1724
},
1725
{
1726
"description": "Denies the is_minimizable command without any pre-configured scope.",
1727
"type": "string",
1728
-
"const": "core:window:deny-is-minimizable"
1729
},
1730
{
1731
"description": "Denies the is_minimized command without any pre-configured scope.",
1732
"type": "string",
1733
-
"const": "core:window:deny-is-minimized"
1734
},
1735
{
1736
"description": "Denies the is_resizable command without any pre-configured scope.",
1737
"type": "string",
1738
-
"const": "core:window:deny-is-resizable"
1739
},
1740
{
1741
"description": "Denies the is_visible command without any pre-configured scope.",
1742
"type": "string",
1743
-
"const": "core:window:deny-is-visible"
1744
},
1745
{
1746
"description": "Denies the maximize command without any pre-configured scope.",
1747
"type": "string",
1748
-
"const": "core:window:deny-maximize"
1749
},
1750
{
1751
"description": "Denies the minimize command without any pre-configured scope.",
1752
"type": "string",
1753
-
"const": "core:window:deny-minimize"
1754
},
1755
{
1756
"description": "Denies the monitor_from_point command without any pre-configured scope.",
1757
"type": "string",
1758
-
"const": "core:window:deny-monitor-from-point"
1759
},
1760
{
1761
"description": "Denies the outer_position command without any pre-configured scope.",
1762
"type": "string",
1763
-
"const": "core:window:deny-outer-position"
1764
},
1765
{
1766
"description": "Denies the outer_size command without any pre-configured scope.",
1767
"type": "string",
1768
-
"const": "core:window:deny-outer-size"
1769
},
1770
{
1771
"description": "Denies the primary_monitor command without any pre-configured scope.",
1772
"type": "string",
1773
-
"const": "core:window:deny-primary-monitor"
1774
},
1775
{
1776
"description": "Denies the request_user_attention command without any pre-configured scope.",
1777
"type": "string",
1778
-
"const": "core:window:deny-request-user-attention"
1779
},
1780
{
1781
"description": "Denies the scale_factor command without any pre-configured scope.",
1782
"type": "string",
1783
-
"const": "core:window:deny-scale-factor"
1784
},
1785
{
1786
"description": "Denies the set_always_on_bottom command without any pre-configured scope.",
1787
"type": "string",
1788
-
"const": "core:window:deny-set-always-on-bottom"
1789
},
1790
{
1791
"description": "Denies the set_always_on_top command without any pre-configured scope.",
1792
"type": "string",
1793
-
"const": "core:window:deny-set-always-on-top"
1794
},
1795
{
1796
"description": "Denies the set_closable command without any pre-configured scope.",
1797
"type": "string",
1798
-
"const": "core:window:deny-set-closable"
1799
},
1800
{
1801
"description": "Denies the set_content_protected command without any pre-configured scope.",
1802
"type": "string",
1803
-
"const": "core:window:deny-set-content-protected"
1804
},
1805
{
1806
"description": "Denies the set_cursor_grab command without any pre-configured scope.",
1807
"type": "string",
1808
-
"const": "core:window:deny-set-cursor-grab"
1809
},
1810
{
1811
"description": "Denies the set_cursor_icon command without any pre-configured scope.",
1812
"type": "string",
1813
-
"const": "core:window:deny-set-cursor-icon"
1814
},
1815
{
1816
"description": "Denies the set_cursor_position command without any pre-configured scope.",
1817
"type": "string",
1818
-
"const": "core:window:deny-set-cursor-position"
1819
},
1820
{
1821
"description": "Denies the set_cursor_visible command without any pre-configured scope.",
1822
"type": "string",
1823
-
"const": "core:window:deny-set-cursor-visible"
1824
},
1825
{
1826
"description": "Denies the set_decorations command without any pre-configured scope.",
1827
"type": "string",
1828
-
"const": "core:window:deny-set-decorations"
1829
},
1830
{
1831
"description": "Denies the set_effects command without any pre-configured scope.",
1832
"type": "string",
1833
-
"const": "core:window:deny-set-effects"
1834
},
1835
{
1836
"description": "Denies the set_enabled command without any pre-configured scope.",
1837
"type": "string",
1838
-
"const": "core:window:deny-set-enabled"
1839
},
1840
{
1841
"description": "Denies the set_focus command without any pre-configured scope.",
1842
"type": "string",
1843
-
"const": "core:window:deny-set-focus"
1844
},
1845
{
1846
"description": "Denies the set_fullscreen command without any pre-configured scope.",
1847
"type": "string",
1848
-
"const": "core:window:deny-set-fullscreen"
1849
},
1850
{
1851
"description": "Denies the set_icon command without any pre-configured scope.",
1852
"type": "string",
1853
-
"const": "core:window:deny-set-icon"
1854
},
1855
{
1856
"description": "Denies the set_ignore_cursor_events command without any pre-configured scope.",
1857
"type": "string",
1858
-
"const": "core:window:deny-set-ignore-cursor-events"
1859
},
1860
{
1861
"description": "Denies the set_max_size command without any pre-configured scope.",
1862
"type": "string",
1863
-
"const": "core:window:deny-set-max-size"
1864
},
1865
{
1866
"description": "Denies the set_maximizable command without any pre-configured scope.",
1867
"type": "string",
1868
-
"const": "core:window:deny-set-maximizable"
1869
},
1870
{
1871
"description": "Denies the set_min_size command without any pre-configured scope.",
1872
"type": "string",
1873
-
"const": "core:window:deny-set-min-size"
1874
},
1875
{
1876
"description": "Denies the set_minimizable command without any pre-configured scope.",
1877
"type": "string",
1878
-
"const": "core:window:deny-set-minimizable"
1879
},
1880
{
1881
"description": "Denies the set_position command without any pre-configured scope.",
1882
"type": "string",
1883
-
"const": "core:window:deny-set-position"
1884
},
1885
{
1886
"description": "Denies the set_progress_bar command without any pre-configured scope.",
1887
"type": "string",
1888
-
"const": "core:window:deny-set-progress-bar"
1889
},
1890
{
1891
"description": "Denies the set_resizable command without any pre-configured scope.",
1892
"type": "string",
1893
-
"const": "core:window:deny-set-resizable"
1894
},
1895
{
1896
"description": "Denies the set_shadow command without any pre-configured scope.",
1897
"type": "string",
1898
-
"const": "core:window:deny-set-shadow"
1899
},
1900
{
1901
"description": "Denies the set_size command without any pre-configured scope.",
1902
"type": "string",
1903
-
"const": "core:window:deny-set-size"
1904
},
1905
{
1906
"description": "Denies the set_size_constraints command without any pre-configured scope.",
1907
"type": "string",
1908
-
"const": "core:window:deny-set-size-constraints"
1909
},
1910
{
1911
"description": "Denies the set_skip_taskbar command without any pre-configured scope.",
1912
"type": "string",
1913
-
"const": "core:window:deny-set-skip-taskbar"
1914
},
1915
{
1916
"description": "Denies the set_theme command without any pre-configured scope.",
1917
"type": "string",
1918
-
"const": "core:window:deny-set-theme"
1919
},
1920
{
1921
"description": "Denies the set_title command without any pre-configured scope.",
1922
"type": "string",
1923
-
"const": "core:window:deny-set-title"
1924
},
1925
{
1926
"description": "Denies the set_title_bar_style command without any pre-configured scope.",
1927
"type": "string",
1928
-
"const": "core:window:deny-set-title-bar-style"
1929
},
1930
{
1931
"description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.",
1932
"type": "string",
1933
-
"const": "core:window:deny-set-visible-on-all-workspaces"
1934
},
1935
{
1936
"description": "Denies the show command without any pre-configured scope.",
1937
"type": "string",
1938
-
"const": "core:window:deny-show"
1939
},
1940
{
1941
"description": "Denies the start_dragging command without any pre-configured scope.",
1942
"type": "string",
1943
-
"const": "core:window:deny-start-dragging"
1944
},
1945
{
1946
"description": "Denies the start_resize_dragging command without any pre-configured scope.",
1947
"type": "string",
1948
-
"const": "core:window:deny-start-resize-dragging"
1949
},
1950
{
1951
"description": "Denies the theme command without any pre-configured scope.",
1952
"type": "string",
1953
-
"const": "core:window:deny-theme"
1954
},
1955
{
1956
"description": "Denies the title command without any pre-configured scope.",
1957
"type": "string",
1958
-
"const": "core:window:deny-title"
1959
},
1960
{
1961
"description": "Denies the toggle_maximize command without any pre-configured scope.",
1962
"type": "string",
1963
-
"const": "core:window:deny-toggle-maximize"
1964
},
1965
{
1966
"description": "Denies the unmaximize command without any pre-configured scope.",
1967
"type": "string",
1968
-
"const": "core:window:deny-unmaximize"
1969
},
1970
{
1971
"description": "Denies the unminimize command without any pre-configured scope.",
1972
"type": "string",
1973
-
"const": "core:window:deny-unminimize"
1974
},
1975
{
1976
-
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n",
1977
"type": "string",
1978
-
"const": "http:default"
1979
},
1980
{
1981
"description": "Enables the fetch command without any pre-configured scope.",
1982
"type": "string",
1983
-
"const": "http:allow-fetch"
1984
},
1985
{
1986
"description": "Enables the fetch_cancel command without any pre-configured scope.",
1987
"type": "string",
1988
-
"const": "http:allow-fetch-cancel"
1989
},
1990
{
1991
"description": "Enables the fetch_read_body command without any pre-configured scope.",
1992
"type": "string",
1993
-
"const": "http:allow-fetch-read-body"
1994
},
1995
{
1996
"description": "Enables the fetch_send command without any pre-configured scope.",
1997
"type": "string",
1998
-
"const": "http:allow-fetch-send"
1999
},
2000
{
2001
"description": "Denies the fetch command without any pre-configured scope.",
2002
"type": "string",
2003
-
"const": "http:deny-fetch"
2004
},
2005
{
2006
"description": "Denies the fetch_cancel command without any pre-configured scope.",
2007
"type": "string",
2008
-
"const": "http:deny-fetch-cancel"
2009
},
2010
{
2011
"description": "Denies the fetch_read_body command without any pre-configured scope.",
2012
"type": "string",
2013
-
"const": "http:deny-fetch-read-body"
2014
},
2015
{
2016
"description": "Denies the fetch_send command without any pre-configured scope.",
2017
"type": "string",
2018
-
"const": "http:deny-fetch-send"
2019
},
2020
{
2021
-
"description": "This permission set configures which\nprocess feeatures are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n",
2022
"type": "string",
2023
-
"const": "process:default"
2024
},
2025
{
2026
"description": "Enables the exit command without any pre-configured scope.",
2027
"type": "string",
2028
-
"const": "process:allow-exit"
2029
},
2030
{
2031
"description": "Enables the restart command without any pre-configured scope.",
2032
"type": "string",
2033
-
"const": "process:allow-restart"
2034
},
2035
{
2036
"description": "Denies the exit command without any pre-configured scope.",
2037
"type": "string",
2038
-
"const": "process:deny-exit"
2039
},
2040
{
2041
"description": "Denies the restart command without any pre-configured scope.",
2042
"type": "string",
2043
-
"const": "process:deny-restart"
2044
},
2045
{
2046
-
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n",
2047
"type": "string",
2048
-
"const": "shell:default"
2049
},
2050
{
2051
"description": "Enables the execute command without any pre-configured scope.",
2052
"type": "string",
2053
-
"const": "shell:allow-execute"
2054
},
2055
{
2056
"description": "Enables the kill command without any pre-configured scope.",
2057
"type": "string",
2058
-
"const": "shell:allow-kill"
2059
},
2060
{
2061
"description": "Enables the open command without any pre-configured scope.",
2062
"type": "string",
2063
-
"const": "shell:allow-open"
2064
},
2065
{
2066
"description": "Enables the spawn command without any pre-configured scope.",
2067
"type": "string",
2068
-
"const": "shell:allow-spawn"
2069
},
2070
{
2071
"description": "Enables the stdin_write command without any pre-configured scope.",
2072
"type": "string",
2073
-
"const": "shell:allow-stdin-write"
2074
},
2075
{
2076
"description": "Denies the execute command without any pre-configured scope.",
2077
"type": "string",
2078
-
"const": "shell:deny-execute"
2079
},
2080
{
2081
"description": "Denies the kill command without any pre-configured scope.",
2082
"type": "string",
2083
-
"const": "shell:deny-kill"
2084
},
2085
{
2086
"description": "Denies the open command without any pre-configured scope.",
2087
"type": "string",
2088
-
"const": "shell:deny-open"
2089
},
2090
{
2091
"description": "Denies the spawn command without any pre-configured scope.",
2092
"type": "string",
2093
-
"const": "shell:deny-spawn"
2094
},
2095
{
2096
"description": "Denies the stdin_write command without any pre-configured scope.",
2097
"type": "string",
2098
-
"const": "shell:deny-stdin-write"
2099
}
2100
]
2101
},
···
37
],
38
"definitions": {
39
"Capability": {
40
+
"description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows' and webviews' fine grained access to the Tauri core, application, or plugin commands. If a webview or its window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, ], \"platforms\": [\"macOS\",\"windows\"] } ```",
41
"type": "object",
42
"required": [
43
"identifier",
···
49
"type": "string"
50
},
51
"description": {
52
+
"description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programmatic access to files selected by the user.",
53
"default": "",
54
"type": "string"
55
},
···
70
"type": "boolean"
71
},
72
"windows": {
73
+
"description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nIf a window label matches any of the patterns in this list, the capability will be enabled on all the webviews of that window, regardless of the value of [`Self::webviews`].\n\nOn multiwebview windows, prefer specifying [`Self::webviews`] and omitting [`Self::windows`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`",
74
"type": "array",
75
"items": {
76
"type": "string"
77
}
78
},
79
"webviews": {
80
+
"description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThe capability will be enabled on all the webviews whose label matches any of the patterns in this list, regardless of whether the webview's window label matches a pattern in [`Self::windows`].\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`",
81
"type": "array",
82
"items": {
83
"type": "string"
84
}
85
},
86
"permissions": {
87
+
"description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ] ```",
88
"type": "array",
89
"items": {
90
"$ref": "#/definitions/PermissionEntry"
···
140
"identifier": {
141
"anyOf": [
142
{
143
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
144
"type": "string",
145
+
"const": "http:default",
146
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
147
},
148
{
149
"description": "Enables the fetch command without any pre-configured scope.",
150
"type": "string",
151
+
"const": "http:allow-fetch",
152
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
153
},
154
{
155
"description": "Enables the fetch_cancel command without any pre-configured scope.",
156
"type": "string",
157
+
"const": "http:allow-fetch-cancel",
158
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
159
},
160
{
161
"description": "Enables the fetch_read_body command without any pre-configured scope.",
162
"type": "string",
163
+
"const": "http:allow-fetch-read-body",
164
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
165
},
166
{
167
"description": "Enables the fetch_send command without any pre-configured scope.",
168
"type": "string",
169
+
"const": "http:allow-fetch-send",
170
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
171
},
172
{
173
"description": "Denies the fetch command without any pre-configured scope.",
174
"type": "string",
175
+
"const": "http:deny-fetch",
176
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
177
},
178
{
179
"description": "Denies the fetch_cancel command without any pre-configured scope.",
180
"type": "string",
181
+
"const": "http:deny-fetch-cancel",
182
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
183
},
184
{
185
"description": "Denies the fetch_read_body command without any pre-configured scope.",
186
"type": "string",
187
+
"const": "http:deny-fetch-read-body",
188
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
189
},
190
{
191
"description": "Denies the fetch_send command without any pre-configured scope.",
192
"type": "string",
193
+
"const": "http:deny-fetch-send",
194
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
195
}
196
]
197
}
···
266
"identifier": {
267
"anyOf": [
268
{
269
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
270
"type": "string",
271
+
"const": "shell:default",
272
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
273
},
274
{
275
"description": "Enables the execute command without any pre-configured scope.",
276
"type": "string",
277
+
"const": "shell:allow-execute",
278
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
279
},
280
{
281
"description": "Enables the kill command without any pre-configured scope.",
282
"type": "string",
283
+
"const": "shell:allow-kill",
284
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
285
},
286
{
287
"description": "Enables the open command without any pre-configured scope.",
288
"type": "string",
289
+
"const": "shell:allow-open",
290
+
"markdownDescription": "Enables the open command without any pre-configured scope."
291
},
292
{
293
"description": "Enables the spawn command without any pre-configured scope.",
294
"type": "string",
295
+
"const": "shell:allow-spawn",
296
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
297
},
298
{
299
"description": "Enables the stdin_write command without any pre-configured scope.",
300
"type": "string",
301
+
"const": "shell:allow-stdin-write",
302
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
303
},
304
{
305
"description": "Denies the execute command without any pre-configured scope.",
306
"type": "string",
307
+
"const": "shell:deny-execute",
308
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
309
},
310
{
311
"description": "Denies the kill command without any pre-configured scope.",
312
"type": "string",
313
+
"const": "shell:deny-kill",
314
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
315
},
316
{
317
"description": "Denies the open command without any pre-configured scope.",
318
"type": "string",
319
+
"const": "shell:deny-open",
320
+
"markdownDescription": "Denies the open command without any pre-configured scope."
321
},
322
{
323
"description": "Denies the spawn command without any pre-configured scope.",
324
"type": "string",
325
+
"const": "shell:deny-spawn",
326
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
327
},
328
{
329
"description": "Denies the stdin_write command without any pre-configured scope.",
330
"type": "string",
331
+
"const": "shell:deny-stdin-write",
332
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
333
}
334
]
335
}
···
513
"description": "Permission identifier",
514
"oneOf": [
515
{
516
+
"description": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`",
517
"type": "string",
518
+
"const": "core:default",
519
+
"markdownDescription": "Default core plugins set.\n#### This default permission set includes:\n\n- `core:path:default`\n- `core:event:default`\n- `core:window:default`\n- `core:webview:default`\n- `core:app:default`\n- `core:image:default`\n- `core:resources:default`\n- `core:menu:default`\n- `core:tray:default`"
520
},
521
{
522
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`",
523
"type": "string",
524
+
"const": "core:app:default",
525
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-version`\n- `allow-name`\n- `allow-tauri-version`\n- `allow-identifier`\n- `allow-bundle-type`\n- `allow-register-listener`\n- `allow-remove-listener`"
526
},
527
{
528
"description": "Enables the app_hide command without any pre-configured scope.",
529
"type": "string",
530
+
"const": "core:app:allow-app-hide",
531
+
"markdownDescription": "Enables the app_hide command without any pre-configured scope."
532
},
533
{
534
"description": "Enables the app_show command without any pre-configured scope.",
535
"type": "string",
536
+
"const": "core:app:allow-app-show",
537
+
"markdownDescription": "Enables the app_show command without any pre-configured scope."
538
+
},
539
+
{
540
+
"description": "Enables the bundle_type command without any pre-configured scope.",
541
+
"type": "string",
542
+
"const": "core:app:allow-bundle-type",
543
+
"markdownDescription": "Enables the bundle_type command without any pre-configured scope."
544
},
545
{
546
"description": "Enables the default_window_icon command without any pre-configured scope.",
547
"type": "string",
548
+
"const": "core:app:allow-default-window-icon",
549
+
"markdownDescription": "Enables the default_window_icon command without any pre-configured scope."
550
+
},
551
+
{
552
+
"description": "Enables the fetch_data_store_identifiers command without any pre-configured scope.",
553
+
"type": "string",
554
+
"const": "core:app:allow-fetch-data-store-identifiers",
555
+
"markdownDescription": "Enables the fetch_data_store_identifiers command without any pre-configured scope."
556
+
},
557
+
{
558
+
"description": "Enables the identifier command without any pre-configured scope.",
559
+
"type": "string",
560
+
"const": "core:app:allow-identifier",
561
+
"markdownDescription": "Enables the identifier command without any pre-configured scope."
562
},
563
{
564
"description": "Enables the name command without any pre-configured scope.",
565
"type": "string",
566
+
"const": "core:app:allow-name",
567
+
"markdownDescription": "Enables the name command without any pre-configured scope."
568
+
},
569
+
{
570
+
"description": "Enables the register_listener command without any pre-configured scope.",
571
+
"type": "string",
572
+
"const": "core:app:allow-register-listener",
573
+
"markdownDescription": "Enables the register_listener command without any pre-configured scope."
574
+
},
575
+
{
576
+
"description": "Enables the remove_data_store command without any pre-configured scope.",
577
+
"type": "string",
578
+
"const": "core:app:allow-remove-data-store",
579
+
"markdownDescription": "Enables the remove_data_store command without any pre-configured scope."
580
+
},
581
+
{
582
+
"description": "Enables the remove_listener command without any pre-configured scope.",
583
+
"type": "string",
584
+
"const": "core:app:allow-remove-listener",
585
+
"markdownDescription": "Enables the remove_listener command without any pre-configured scope."
586
},
587
{
588
"description": "Enables the set_app_theme command without any pre-configured scope.",
589
"type": "string",
590
+
"const": "core:app:allow-set-app-theme",
591
+
"markdownDescription": "Enables the set_app_theme command without any pre-configured scope."
592
+
},
593
+
{
594
+
"description": "Enables the set_dock_visibility command without any pre-configured scope.",
595
+
"type": "string",
596
+
"const": "core:app:allow-set-dock-visibility",
597
+
"markdownDescription": "Enables the set_dock_visibility command without any pre-configured scope."
598
},
599
{
600
"description": "Enables the tauri_version command without any pre-configured scope.",
601
"type": "string",
602
+
"const": "core:app:allow-tauri-version",
603
+
"markdownDescription": "Enables the tauri_version command without any pre-configured scope."
604
},
605
{
606
"description": "Enables the version command without any pre-configured scope.",
607
"type": "string",
608
+
"const": "core:app:allow-version",
609
+
"markdownDescription": "Enables the version command without any pre-configured scope."
610
},
611
{
612
"description": "Denies the app_hide command without any pre-configured scope.",
613
"type": "string",
614
+
"const": "core:app:deny-app-hide",
615
+
"markdownDescription": "Denies the app_hide command without any pre-configured scope."
616
},
617
{
618
"description": "Denies the app_show command without any pre-configured scope.",
619
"type": "string",
620
+
"const": "core:app:deny-app-show",
621
+
"markdownDescription": "Denies the app_show command without any pre-configured scope."
622
+
},
623
+
{
624
+
"description": "Denies the bundle_type command without any pre-configured scope.",
625
+
"type": "string",
626
+
"const": "core:app:deny-bundle-type",
627
+
"markdownDescription": "Denies the bundle_type command without any pre-configured scope."
628
},
629
{
630
"description": "Denies the default_window_icon command without any pre-configured scope.",
631
"type": "string",
632
+
"const": "core:app:deny-default-window-icon",
633
+
"markdownDescription": "Denies the default_window_icon command without any pre-configured scope."
634
+
},
635
+
{
636
+
"description": "Denies the fetch_data_store_identifiers command without any pre-configured scope.",
637
+
"type": "string",
638
+
"const": "core:app:deny-fetch-data-store-identifiers",
639
+
"markdownDescription": "Denies the fetch_data_store_identifiers command without any pre-configured scope."
640
+
},
641
+
{
642
+
"description": "Denies the identifier command without any pre-configured scope.",
643
+
"type": "string",
644
+
"const": "core:app:deny-identifier",
645
+
"markdownDescription": "Denies the identifier command without any pre-configured scope."
646
},
647
{
648
"description": "Denies the name command without any pre-configured scope.",
649
"type": "string",
650
+
"const": "core:app:deny-name",
651
+
"markdownDescription": "Denies the name command without any pre-configured scope."
652
+
},
653
+
{
654
+
"description": "Denies the register_listener command without any pre-configured scope.",
655
+
"type": "string",
656
+
"const": "core:app:deny-register-listener",
657
+
"markdownDescription": "Denies the register_listener command without any pre-configured scope."
658
+
},
659
+
{
660
+
"description": "Denies the remove_data_store command without any pre-configured scope.",
661
+
"type": "string",
662
+
"const": "core:app:deny-remove-data-store",
663
+
"markdownDescription": "Denies the remove_data_store command without any pre-configured scope."
664
+
},
665
+
{
666
+
"description": "Denies the remove_listener command without any pre-configured scope.",
667
+
"type": "string",
668
+
"const": "core:app:deny-remove-listener",
669
+
"markdownDescription": "Denies the remove_listener command without any pre-configured scope."
670
},
671
{
672
"description": "Denies the set_app_theme command without any pre-configured scope.",
673
"type": "string",
674
+
"const": "core:app:deny-set-app-theme",
675
+
"markdownDescription": "Denies the set_app_theme command without any pre-configured scope."
676
+
},
677
+
{
678
+
"description": "Denies the set_dock_visibility command without any pre-configured scope.",
679
+
"type": "string",
680
+
"const": "core:app:deny-set-dock-visibility",
681
+
"markdownDescription": "Denies the set_dock_visibility command without any pre-configured scope."
682
},
683
{
684
"description": "Denies the tauri_version command without any pre-configured scope.",
685
"type": "string",
686
+
"const": "core:app:deny-tauri-version",
687
+
"markdownDescription": "Denies the tauri_version command without any pre-configured scope."
688
},
689
{
690
"description": "Denies the version command without any pre-configured scope.",
691
"type": "string",
692
+
"const": "core:app:deny-version",
693
+
"markdownDescription": "Denies the version command without any pre-configured scope."
694
},
695
{
696
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`",
697
"type": "string",
698
+
"const": "core:event:default",
699
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-listen`\n- `allow-unlisten`\n- `allow-emit`\n- `allow-emit-to`"
700
},
701
{
702
"description": "Enables the emit command without any pre-configured scope.",
703
"type": "string",
704
+
"const": "core:event:allow-emit",
705
+
"markdownDescription": "Enables the emit command without any pre-configured scope."
706
},
707
{
708
"description": "Enables the emit_to command without any pre-configured scope.",
709
"type": "string",
710
+
"const": "core:event:allow-emit-to",
711
+
"markdownDescription": "Enables the emit_to command without any pre-configured scope."
712
},
713
{
714
"description": "Enables the listen command without any pre-configured scope.",
715
"type": "string",
716
+
"const": "core:event:allow-listen",
717
+
"markdownDescription": "Enables the listen command without any pre-configured scope."
718
},
719
{
720
"description": "Enables the unlisten command without any pre-configured scope.",
721
"type": "string",
722
+
"const": "core:event:allow-unlisten",
723
+
"markdownDescription": "Enables the unlisten command without any pre-configured scope."
724
},
725
{
726
"description": "Denies the emit command without any pre-configured scope.",
727
"type": "string",
728
+
"const": "core:event:deny-emit",
729
+
"markdownDescription": "Denies the emit command without any pre-configured scope."
730
},
731
{
732
"description": "Denies the emit_to command without any pre-configured scope.",
733
"type": "string",
734
+
"const": "core:event:deny-emit-to",
735
+
"markdownDescription": "Denies the emit_to command without any pre-configured scope."
736
},
737
{
738
"description": "Denies the listen command without any pre-configured scope.",
739
"type": "string",
740
+
"const": "core:event:deny-listen",
741
+
"markdownDescription": "Denies the listen command without any pre-configured scope."
742
},
743
{
744
"description": "Denies the unlisten command without any pre-configured scope.",
745
"type": "string",
746
+
"const": "core:event:deny-unlisten",
747
+
"markdownDescription": "Denies the unlisten command without any pre-configured scope."
748
},
749
{
750
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`",
751
"type": "string",
752
+
"const": "core:image:default",
753
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-from-bytes`\n- `allow-from-path`\n- `allow-rgba`\n- `allow-size`"
754
},
755
{
756
"description": "Enables the from_bytes command without any pre-configured scope.",
757
"type": "string",
758
+
"const": "core:image:allow-from-bytes",
759
+
"markdownDescription": "Enables the from_bytes command without any pre-configured scope."
760
},
761
{
762
"description": "Enables the from_path command without any pre-configured scope.",
763
"type": "string",
764
+
"const": "core:image:allow-from-path",
765
+
"markdownDescription": "Enables the from_path command without any pre-configured scope."
766
},
767
{
768
"description": "Enables the new command without any pre-configured scope.",
769
"type": "string",
770
+
"const": "core:image:allow-new",
771
+
"markdownDescription": "Enables the new command without any pre-configured scope."
772
},
773
{
774
"description": "Enables the rgba command without any pre-configured scope.",
775
"type": "string",
776
+
"const": "core:image:allow-rgba",
777
+
"markdownDescription": "Enables the rgba command without any pre-configured scope."
778
},
779
{
780
"description": "Enables the size command without any pre-configured scope.",
781
"type": "string",
782
+
"const": "core:image:allow-size",
783
+
"markdownDescription": "Enables the size command without any pre-configured scope."
784
},
785
{
786
"description": "Denies the from_bytes command without any pre-configured scope.",
787
"type": "string",
788
+
"const": "core:image:deny-from-bytes",
789
+
"markdownDescription": "Denies the from_bytes command without any pre-configured scope."
790
},
791
{
792
"description": "Denies the from_path command without any pre-configured scope.",
793
"type": "string",
794
+
"const": "core:image:deny-from-path",
795
+
"markdownDescription": "Denies the from_path command without any pre-configured scope."
796
},
797
{
798
"description": "Denies the new command without any pre-configured scope.",
799
"type": "string",
800
+
"const": "core:image:deny-new",
801
+
"markdownDescription": "Denies the new command without any pre-configured scope."
802
},
803
{
804
"description": "Denies the rgba command without any pre-configured scope.",
805
"type": "string",
806
+
"const": "core:image:deny-rgba",
807
+
"markdownDescription": "Denies the rgba command without any pre-configured scope."
808
},
809
{
810
"description": "Denies the size command without any pre-configured scope.",
811
"type": "string",
812
+
"const": "core:image:deny-size",
813
+
"markdownDescription": "Denies the size command without any pre-configured scope."
814
},
815
{
816
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`",
817
"type": "string",
818
+
"const": "core:menu:default",
819
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-append`\n- `allow-prepend`\n- `allow-insert`\n- `allow-remove`\n- `allow-remove-at`\n- `allow-items`\n- `allow-get`\n- `allow-popup`\n- `allow-create-default`\n- `allow-set-as-app-menu`\n- `allow-set-as-window-menu`\n- `allow-text`\n- `allow-set-text`\n- `allow-is-enabled`\n- `allow-set-enabled`\n- `allow-set-accelerator`\n- `allow-set-as-windows-menu-for-nsapp`\n- `allow-set-as-help-menu-for-nsapp`\n- `allow-is-checked`\n- `allow-set-checked`\n- `allow-set-icon`"
820
},
821
{
822
"description": "Enables the append command without any pre-configured scope.",
823
"type": "string",
824
+
"const": "core:menu:allow-append",
825
+
"markdownDescription": "Enables the append command without any pre-configured scope."
826
},
827
{
828
"description": "Enables the create_default command without any pre-configured scope.",
829
"type": "string",
830
+
"const": "core:menu:allow-create-default",
831
+
"markdownDescription": "Enables the create_default command without any pre-configured scope."
832
},
833
{
834
"description": "Enables the get command without any pre-configured scope.",
835
"type": "string",
836
+
"const": "core:menu:allow-get",
837
+
"markdownDescription": "Enables the get command without any pre-configured scope."
838
},
839
{
840
"description": "Enables the insert command without any pre-configured scope.",
841
"type": "string",
842
+
"const": "core:menu:allow-insert",
843
+
"markdownDescription": "Enables the insert command without any pre-configured scope."
844
},
845
{
846
"description": "Enables the is_checked command without any pre-configured scope.",
847
"type": "string",
848
+
"const": "core:menu:allow-is-checked",
849
+
"markdownDescription": "Enables the is_checked command without any pre-configured scope."
850
},
851
{
852
"description": "Enables the is_enabled command without any pre-configured scope.",
853
"type": "string",
854
+
"const": "core:menu:allow-is-enabled",
855
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
856
},
857
{
858
"description": "Enables the items command without any pre-configured scope.",
859
"type": "string",
860
+
"const": "core:menu:allow-items",
861
+
"markdownDescription": "Enables the items command without any pre-configured scope."
862
},
863
{
864
"description": "Enables the new command without any pre-configured scope.",
865
"type": "string",
866
+
"const": "core:menu:allow-new",
867
+
"markdownDescription": "Enables the new command without any pre-configured scope."
868
},
869
{
870
"description": "Enables the popup command without any pre-configured scope.",
871
"type": "string",
872
+
"const": "core:menu:allow-popup",
873
+
"markdownDescription": "Enables the popup command without any pre-configured scope."
874
},
875
{
876
"description": "Enables the prepend command without any pre-configured scope.",
877
"type": "string",
878
+
"const": "core:menu:allow-prepend",
879
+
"markdownDescription": "Enables the prepend command without any pre-configured scope."
880
},
881
{
882
"description": "Enables the remove command without any pre-configured scope.",
883
"type": "string",
884
+
"const": "core:menu:allow-remove",
885
+
"markdownDescription": "Enables the remove command without any pre-configured scope."
886
},
887
{
888
"description": "Enables the remove_at command without any pre-configured scope.",
889
"type": "string",
890
+
"const": "core:menu:allow-remove-at",
891
+
"markdownDescription": "Enables the remove_at command without any pre-configured scope."
892
},
893
{
894
"description": "Enables the set_accelerator command without any pre-configured scope.",
895
"type": "string",
896
+
"const": "core:menu:allow-set-accelerator",
897
+
"markdownDescription": "Enables the set_accelerator command without any pre-configured scope."
898
},
899
{
900
"description": "Enables the set_as_app_menu command without any pre-configured scope.",
901
"type": "string",
902
+
"const": "core:menu:allow-set-as-app-menu",
903
+
"markdownDescription": "Enables the set_as_app_menu command without any pre-configured scope."
904
},
905
{
906
"description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.",
907
"type": "string",
908
+
"const": "core:menu:allow-set-as-help-menu-for-nsapp",
909
+
"markdownDescription": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope."
910
},
911
{
912
"description": "Enables the set_as_window_menu command without any pre-configured scope.",
913
"type": "string",
914
+
"const": "core:menu:allow-set-as-window-menu",
915
+
"markdownDescription": "Enables the set_as_window_menu command without any pre-configured scope."
916
},
917
{
918
"description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
919
"type": "string",
920
+
"const": "core:menu:allow-set-as-windows-menu-for-nsapp",
921
+
"markdownDescription": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope."
922
},
923
{
924
"description": "Enables the set_checked command without any pre-configured scope.",
925
"type": "string",
926
+
"const": "core:menu:allow-set-checked",
927
+
"markdownDescription": "Enables the set_checked command without any pre-configured scope."
928
},
929
{
930
"description": "Enables the set_enabled command without any pre-configured scope.",
931
"type": "string",
932
+
"const": "core:menu:allow-set-enabled",
933
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
934
},
935
{
936
"description": "Enables the set_icon command without any pre-configured scope.",
937
"type": "string",
938
+
"const": "core:menu:allow-set-icon",
939
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
940
},
941
{
942
"description": "Enables the set_text command without any pre-configured scope.",
943
"type": "string",
944
+
"const": "core:menu:allow-set-text",
945
+
"markdownDescription": "Enables the set_text command without any pre-configured scope."
946
},
947
{
948
"description": "Enables the text command without any pre-configured scope.",
949
"type": "string",
950
+
"const": "core:menu:allow-text",
951
+
"markdownDescription": "Enables the text command without any pre-configured scope."
952
},
953
{
954
"description": "Denies the append command without any pre-configured scope.",
955
"type": "string",
956
+
"const": "core:menu:deny-append",
957
+
"markdownDescription": "Denies the append command without any pre-configured scope."
958
},
959
{
960
"description": "Denies the create_default command without any pre-configured scope.",
961
"type": "string",
962
+
"const": "core:menu:deny-create-default",
963
+
"markdownDescription": "Denies the create_default command without any pre-configured scope."
964
},
965
{
966
"description": "Denies the get command without any pre-configured scope.",
967
"type": "string",
968
+
"const": "core:menu:deny-get",
969
+
"markdownDescription": "Denies the get command without any pre-configured scope."
970
},
971
{
972
"description": "Denies the insert command without any pre-configured scope.",
973
"type": "string",
974
+
"const": "core:menu:deny-insert",
975
+
"markdownDescription": "Denies the insert command without any pre-configured scope."
976
},
977
{
978
"description": "Denies the is_checked command without any pre-configured scope.",
979
"type": "string",
980
+
"const": "core:menu:deny-is-checked",
981
+
"markdownDescription": "Denies the is_checked command without any pre-configured scope."
982
},
983
{
984
"description": "Denies the is_enabled command without any pre-configured scope.",
985
"type": "string",
986
+
"const": "core:menu:deny-is-enabled",
987
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
988
},
989
{
990
"description": "Denies the items command without any pre-configured scope.",
991
"type": "string",
992
+
"const": "core:menu:deny-items",
993
+
"markdownDescription": "Denies the items command without any pre-configured scope."
994
},
995
{
996
"description": "Denies the new command without any pre-configured scope.",
997
"type": "string",
998
+
"const": "core:menu:deny-new",
999
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1000
},
1001
{
1002
"description": "Denies the popup command without any pre-configured scope.",
1003
"type": "string",
1004
+
"const": "core:menu:deny-popup",
1005
+
"markdownDescription": "Denies the popup command without any pre-configured scope."
1006
},
1007
{
1008
"description": "Denies the prepend command without any pre-configured scope.",
1009
"type": "string",
1010
+
"const": "core:menu:deny-prepend",
1011
+
"markdownDescription": "Denies the prepend command without any pre-configured scope."
1012
},
1013
{
1014
"description": "Denies the remove command without any pre-configured scope.",
1015
"type": "string",
1016
+
"const": "core:menu:deny-remove",
1017
+
"markdownDescription": "Denies the remove command without any pre-configured scope."
1018
},
1019
{
1020
"description": "Denies the remove_at command without any pre-configured scope.",
1021
"type": "string",
1022
+
"const": "core:menu:deny-remove-at",
1023
+
"markdownDescription": "Denies the remove_at command without any pre-configured scope."
1024
},
1025
{
1026
"description": "Denies the set_accelerator command without any pre-configured scope.",
1027
"type": "string",
1028
+
"const": "core:menu:deny-set-accelerator",
1029
+
"markdownDescription": "Denies the set_accelerator command without any pre-configured scope."
1030
},
1031
{
1032
"description": "Denies the set_as_app_menu command without any pre-configured scope.",
1033
"type": "string",
1034
+
"const": "core:menu:deny-set-as-app-menu",
1035
+
"markdownDescription": "Denies the set_as_app_menu command without any pre-configured scope."
1036
},
1037
{
1038
"description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.",
1039
"type": "string",
1040
+
"const": "core:menu:deny-set-as-help-menu-for-nsapp",
1041
+
"markdownDescription": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope."
1042
},
1043
{
1044
"description": "Denies the set_as_window_menu command without any pre-configured scope.",
1045
"type": "string",
1046
+
"const": "core:menu:deny-set-as-window-menu",
1047
+
"markdownDescription": "Denies the set_as_window_menu command without any pre-configured scope."
1048
},
1049
{
1050
"description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.",
1051
"type": "string",
1052
+
"const": "core:menu:deny-set-as-windows-menu-for-nsapp",
1053
+
"markdownDescription": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope."
1054
},
1055
{
1056
"description": "Denies the set_checked command without any pre-configured scope.",
1057
"type": "string",
1058
+
"const": "core:menu:deny-set-checked",
1059
+
"markdownDescription": "Denies the set_checked command without any pre-configured scope."
1060
},
1061
{
1062
"description": "Denies the set_enabled command without any pre-configured scope.",
1063
"type": "string",
1064
+
"const": "core:menu:deny-set-enabled",
1065
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
1066
},
1067
{
1068
"description": "Denies the set_icon command without any pre-configured scope.",
1069
"type": "string",
1070
+
"const": "core:menu:deny-set-icon",
1071
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1072
},
1073
{
1074
"description": "Denies the set_text command without any pre-configured scope.",
1075
"type": "string",
1076
+
"const": "core:menu:deny-set-text",
1077
+
"markdownDescription": "Denies the set_text command without any pre-configured scope."
1078
},
1079
{
1080
"description": "Denies the text command without any pre-configured scope.",
1081
"type": "string",
1082
+
"const": "core:menu:deny-text",
1083
+
"markdownDescription": "Denies the text command without any pre-configured scope."
1084
},
1085
{
1086
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`",
1087
"type": "string",
1088
+
"const": "core:path:default",
1089
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-resolve-directory`\n- `allow-resolve`\n- `allow-normalize`\n- `allow-join`\n- `allow-dirname`\n- `allow-extname`\n- `allow-basename`\n- `allow-is-absolute`"
1090
},
1091
{
1092
"description": "Enables the basename command without any pre-configured scope.",
1093
"type": "string",
1094
+
"const": "core:path:allow-basename",
1095
+
"markdownDescription": "Enables the basename command without any pre-configured scope."
1096
},
1097
{
1098
"description": "Enables the dirname command without any pre-configured scope.",
1099
"type": "string",
1100
+
"const": "core:path:allow-dirname",
1101
+
"markdownDescription": "Enables the dirname command without any pre-configured scope."
1102
},
1103
{
1104
"description": "Enables the extname command without any pre-configured scope.",
1105
"type": "string",
1106
+
"const": "core:path:allow-extname",
1107
+
"markdownDescription": "Enables the extname command without any pre-configured scope."
1108
},
1109
{
1110
"description": "Enables the is_absolute command without any pre-configured scope.",
1111
"type": "string",
1112
+
"const": "core:path:allow-is-absolute",
1113
+
"markdownDescription": "Enables the is_absolute command without any pre-configured scope."
1114
},
1115
{
1116
"description": "Enables the join command without any pre-configured scope.",
1117
"type": "string",
1118
+
"const": "core:path:allow-join",
1119
+
"markdownDescription": "Enables the join command without any pre-configured scope."
1120
},
1121
{
1122
"description": "Enables the normalize command without any pre-configured scope.",
1123
"type": "string",
1124
+
"const": "core:path:allow-normalize",
1125
+
"markdownDescription": "Enables the normalize command without any pre-configured scope."
1126
},
1127
{
1128
"description": "Enables the resolve command without any pre-configured scope.",
1129
"type": "string",
1130
+
"const": "core:path:allow-resolve",
1131
+
"markdownDescription": "Enables the resolve command without any pre-configured scope."
1132
},
1133
{
1134
"description": "Enables the resolve_directory command without any pre-configured scope.",
1135
"type": "string",
1136
+
"const": "core:path:allow-resolve-directory",
1137
+
"markdownDescription": "Enables the resolve_directory command without any pre-configured scope."
1138
},
1139
{
1140
"description": "Denies the basename command without any pre-configured scope.",
1141
"type": "string",
1142
+
"const": "core:path:deny-basename",
1143
+
"markdownDescription": "Denies the basename command without any pre-configured scope."
1144
},
1145
{
1146
"description": "Denies the dirname command without any pre-configured scope.",
1147
"type": "string",
1148
+
"const": "core:path:deny-dirname",
1149
+
"markdownDescription": "Denies the dirname command without any pre-configured scope."
1150
},
1151
{
1152
"description": "Denies the extname command without any pre-configured scope.",
1153
"type": "string",
1154
+
"const": "core:path:deny-extname",
1155
+
"markdownDescription": "Denies the extname command without any pre-configured scope."
1156
},
1157
{
1158
"description": "Denies the is_absolute command without any pre-configured scope.",
1159
"type": "string",
1160
+
"const": "core:path:deny-is-absolute",
1161
+
"markdownDescription": "Denies the is_absolute command without any pre-configured scope."
1162
},
1163
{
1164
"description": "Denies the join command without any pre-configured scope.",
1165
"type": "string",
1166
+
"const": "core:path:deny-join",
1167
+
"markdownDescription": "Denies the join command without any pre-configured scope."
1168
},
1169
{
1170
"description": "Denies the normalize command without any pre-configured scope.",
1171
"type": "string",
1172
+
"const": "core:path:deny-normalize",
1173
+
"markdownDescription": "Denies the normalize command without any pre-configured scope."
1174
},
1175
{
1176
"description": "Denies the resolve command without any pre-configured scope.",
1177
"type": "string",
1178
+
"const": "core:path:deny-resolve",
1179
+
"markdownDescription": "Denies the resolve command without any pre-configured scope."
1180
},
1181
{
1182
"description": "Denies the resolve_directory command without any pre-configured scope.",
1183
"type": "string",
1184
+
"const": "core:path:deny-resolve-directory",
1185
+
"markdownDescription": "Denies the resolve_directory command without any pre-configured scope."
1186
},
1187
{
1188
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`",
1189
"type": "string",
1190
+
"const": "core:resources:default",
1191
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-close`"
1192
},
1193
{
1194
"description": "Enables the close command without any pre-configured scope.",
1195
"type": "string",
1196
+
"const": "core:resources:allow-close",
1197
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1198
},
1199
{
1200
"description": "Denies the close command without any pre-configured scope.",
1201
"type": "string",
1202
+
"const": "core:resources:deny-close",
1203
+
"markdownDescription": "Denies the close command without any pre-configured scope."
1204
},
1205
{
1206
+
"description": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`",
1207
"type": "string",
1208
+
"const": "core:tray:default",
1209
+
"markdownDescription": "Default permissions for the plugin, which enables all commands.\n#### This default permission set includes:\n\n- `allow-new`\n- `allow-get-by-id`\n- `allow-remove-by-id`\n- `allow-set-icon`\n- `allow-set-menu`\n- `allow-set-tooltip`\n- `allow-set-title`\n- `allow-set-visible`\n- `allow-set-temp-dir-path`\n- `allow-set-icon-as-template`\n- `allow-set-show-menu-on-left-click`"
1210
},
1211
{
1212
"description": "Enables the get_by_id command without any pre-configured scope.",
1213
"type": "string",
1214
+
"const": "core:tray:allow-get-by-id",
1215
+
"markdownDescription": "Enables the get_by_id command without any pre-configured scope."
1216
},
1217
{
1218
"description": "Enables the new command without any pre-configured scope.",
1219
"type": "string",
1220
+
"const": "core:tray:allow-new",
1221
+
"markdownDescription": "Enables the new command without any pre-configured scope."
1222
},
1223
{
1224
"description": "Enables the remove_by_id command without any pre-configured scope.",
1225
"type": "string",
1226
+
"const": "core:tray:allow-remove-by-id",
1227
+
"markdownDescription": "Enables the remove_by_id command without any pre-configured scope."
1228
},
1229
{
1230
"description": "Enables the set_icon command without any pre-configured scope.",
1231
"type": "string",
1232
+
"const": "core:tray:allow-set-icon",
1233
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1234
},
1235
{
1236
"description": "Enables the set_icon_as_template command without any pre-configured scope.",
1237
"type": "string",
1238
+
"const": "core:tray:allow-set-icon-as-template",
1239
+
"markdownDescription": "Enables the set_icon_as_template command without any pre-configured scope."
1240
},
1241
{
1242
"description": "Enables the set_menu command without any pre-configured scope.",
1243
"type": "string",
1244
+
"const": "core:tray:allow-set-menu",
1245
+
"markdownDescription": "Enables the set_menu command without any pre-configured scope."
1246
},
1247
{
1248
"description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.",
1249
"type": "string",
1250
+
"const": "core:tray:allow-set-show-menu-on-left-click",
1251
+
"markdownDescription": "Enables the set_show_menu_on_left_click command without any pre-configured scope."
1252
},
1253
{
1254
"description": "Enables the set_temp_dir_path command without any pre-configured scope.",
1255
"type": "string",
1256
+
"const": "core:tray:allow-set-temp-dir-path",
1257
+
"markdownDescription": "Enables the set_temp_dir_path command without any pre-configured scope."
1258
},
1259
{
1260
"description": "Enables the set_title command without any pre-configured scope.",
1261
"type": "string",
1262
+
"const": "core:tray:allow-set-title",
1263
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1264
},
1265
{
1266
"description": "Enables the set_tooltip command without any pre-configured scope.",
1267
"type": "string",
1268
+
"const": "core:tray:allow-set-tooltip",
1269
+
"markdownDescription": "Enables the set_tooltip command without any pre-configured scope."
1270
},
1271
{
1272
"description": "Enables the set_visible command without any pre-configured scope.",
1273
"type": "string",
1274
+
"const": "core:tray:allow-set-visible",
1275
+
"markdownDescription": "Enables the set_visible command without any pre-configured scope."
1276
},
1277
{
1278
"description": "Denies the get_by_id command without any pre-configured scope.",
1279
"type": "string",
1280
+
"const": "core:tray:deny-get-by-id",
1281
+
"markdownDescription": "Denies the get_by_id command without any pre-configured scope."
1282
},
1283
{
1284
"description": "Denies the new command without any pre-configured scope.",
1285
"type": "string",
1286
+
"const": "core:tray:deny-new",
1287
+
"markdownDescription": "Denies the new command without any pre-configured scope."
1288
},
1289
{
1290
"description": "Denies the remove_by_id command without any pre-configured scope.",
1291
"type": "string",
1292
+
"const": "core:tray:deny-remove-by-id",
1293
+
"markdownDescription": "Denies the remove_by_id command without any pre-configured scope."
1294
},
1295
{
1296
"description": "Denies the set_icon command without any pre-configured scope.",
1297
"type": "string",
1298
+
"const": "core:tray:deny-set-icon",
1299
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
1300
},
1301
{
1302
"description": "Denies the set_icon_as_template command without any pre-configured scope.",
1303
"type": "string",
1304
+
"const": "core:tray:deny-set-icon-as-template",
1305
+
"markdownDescription": "Denies the set_icon_as_template command without any pre-configured scope."
1306
},
1307
{
1308
"description": "Denies the set_menu command without any pre-configured scope.",
1309
"type": "string",
1310
+
"const": "core:tray:deny-set-menu",
1311
+
"markdownDescription": "Denies the set_menu command without any pre-configured scope."
1312
},
1313
{
1314
"description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.",
1315
"type": "string",
1316
+
"const": "core:tray:deny-set-show-menu-on-left-click",
1317
+
"markdownDescription": "Denies the set_show_menu_on_left_click command without any pre-configured scope."
1318
},
1319
{
1320
"description": "Denies the set_temp_dir_path command without any pre-configured scope.",
1321
"type": "string",
1322
+
"const": "core:tray:deny-set-temp-dir-path",
1323
+
"markdownDescription": "Denies the set_temp_dir_path command without any pre-configured scope."
1324
},
1325
{
1326
"description": "Denies the set_title command without any pre-configured scope.",
1327
"type": "string",
1328
+
"const": "core:tray:deny-set-title",
1329
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
1330
},
1331
{
1332
"description": "Denies the set_tooltip command without any pre-configured scope.",
1333
"type": "string",
1334
+
"const": "core:tray:deny-set-tooltip",
1335
+
"markdownDescription": "Denies the set_tooltip command without any pre-configured scope."
1336
},
1337
{
1338
"description": "Denies the set_visible command without any pre-configured scope.",
1339
"type": "string",
1340
+
"const": "core:tray:deny-set-visible",
1341
+
"markdownDescription": "Denies the set_visible command without any pre-configured scope."
1342
},
1343
{
1344
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`",
1345
"type": "string",
1346
+
"const": "core:webview:default",
1347
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-webviews`\n- `allow-webview-position`\n- `allow-webview-size`\n- `allow-internal-toggle-devtools`"
1348
},
1349
{
1350
"description": "Enables the clear_all_browsing_data command without any pre-configured scope.",
1351
"type": "string",
1352
+
"const": "core:webview:allow-clear-all-browsing-data",
1353
+
"markdownDescription": "Enables the clear_all_browsing_data command without any pre-configured scope."
1354
},
1355
{
1356
"description": "Enables the create_webview command without any pre-configured scope.",
1357
"type": "string",
1358
+
"const": "core:webview:allow-create-webview",
1359
+
"markdownDescription": "Enables the create_webview command without any pre-configured scope."
1360
},
1361
{
1362
"description": "Enables the create_webview_window command without any pre-configured scope.",
1363
"type": "string",
1364
+
"const": "core:webview:allow-create-webview-window",
1365
+
"markdownDescription": "Enables the create_webview_window command without any pre-configured scope."
1366
},
1367
{
1368
"description": "Enables the get_all_webviews command without any pre-configured scope.",
1369
"type": "string",
1370
+
"const": "core:webview:allow-get-all-webviews",
1371
+
"markdownDescription": "Enables the get_all_webviews command without any pre-configured scope."
1372
},
1373
{
1374
"description": "Enables the internal_toggle_devtools command without any pre-configured scope.",
1375
"type": "string",
1376
+
"const": "core:webview:allow-internal-toggle-devtools",
1377
+
"markdownDescription": "Enables the internal_toggle_devtools command without any pre-configured scope."
1378
},
1379
{
1380
"description": "Enables the print command without any pre-configured scope.",
1381
"type": "string",
1382
+
"const": "core:webview:allow-print",
1383
+
"markdownDescription": "Enables the print command without any pre-configured scope."
1384
},
1385
{
1386
"description": "Enables the reparent command without any pre-configured scope.",
1387
"type": "string",
1388
+
"const": "core:webview:allow-reparent",
1389
+
"markdownDescription": "Enables the reparent command without any pre-configured scope."
1390
+
},
1391
+
{
1392
+
"description": "Enables the set_webview_auto_resize command without any pre-configured scope.",
1393
+
"type": "string",
1394
+
"const": "core:webview:allow-set-webview-auto-resize",
1395
+
"markdownDescription": "Enables the set_webview_auto_resize command without any pre-configured scope."
1396
+
},
1397
+
{
1398
+
"description": "Enables the set_webview_background_color command without any pre-configured scope.",
1399
+
"type": "string",
1400
+
"const": "core:webview:allow-set-webview-background-color",
1401
+
"markdownDescription": "Enables the set_webview_background_color command without any pre-configured scope."
1402
},
1403
{
1404
"description": "Enables the set_webview_focus command without any pre-configured scope.",
1405
"type": "string",
1406
+
"const": "core:webview:allow-set-webview-focus",
1407
+
"markdownDescription": "Enables the set_webview_focus command without any pre-configured scope."
1408
},
1409
{
1410
"description": "Enables the set_webview_position command without any pre-configured scope.",
1411
"type": "string",
1412
+
"const": "core:webview:allow-set-webview-position",
1413
+
"markdownDescription": "Enables the set_webview_position command without any pre-configured scope."
1414
},
1415
{
1416
"description": "Enables the set_webview_size command without any pre-configured scope.",
1417
"type": "string",
1418
+
"const": "core:webview:allow-set-webview-size",
1419
+
"markdownDescription": "Enables the set_webview_size command without any pre-configured scope."
1420
},
1421
{
1422
"description": "Enables the set_webview_zoom command without any pre-configured scope.",
1423
"type": "string",
1424
+
"const": "core:webview:allow-set-webview-zoom",
1425
+
"markdownDescription": "Enables the set_webview_zoom command without any pre-configured scope."
1426
},
1427
{
1428
"description": "Enables the webview_close command without any pre-configured scope.",
1429
"type": "string",
1430
+
"const": "core:webview:allow-webview-close",
1431
+
"markdownDescription": "Enables the webview_close command without any pre-configured scope."
1432
},
1433
{
1434
"description": "Enables the webview_hide command without any pre-configured scope.",
1435
"type": "string",
1436
+
"const": "core:webview:allow-webview-hide",
1437
+
"markdownDescription": "Enables the webview_hide command without any pre-configured scope."
1438
},
1439
{
1440
"description": "Enables the webview_position command without any pre-configured scope.",
1441
"type": "string",
1442
+
"const": "core:webview:allow-webview-position",
1443
+
"markdownDescription": "Enables the webview_position command without any pre-configured scope."
1444
},
1445
{
1446
"description": "Enables the webview_show command without any pre-configured scope.",
1447
"type": "string",
1448
+
"const": "core:webview:allow-webview-show",
1449
+
"markdownDescription": "Enables the webview_show command without any pre-configured scope."
1450
},
1451
{
1452
"description": "Enables the webview_size command without any pre-configured scope.",
1453
"type": "string",
1454
+
"const": "core:webview:allow-webview-size",
1455
+
"markdownDescription": "Enables the webview_size command without any pre-configured scope."
1456
},
1457
{
1458
"description": "Denies the clear_all_browsing_data command without any pre-configured scope.",
1459
"type": "string",
1460
+
"const": "core:webview:deny-clear-all-browsing-data",
1461
+
"markdownDescription": "Denies the clear_all_browsing_data command without any pre-configured scope."
1462
},
1463
{
1464
"description": "Denies the create_webview command without any pre-configured scope.",
1465
"type": "string",
1466
+
"const": "core:webview:deny-create-webview",
1467
+
"markdownDescription": "Denies the create_webview command without any pre-configured scope."
1468
},
1469
{
1470
"description": "Denies the create_webview_window command without any pre-configured scope.",
1471
"type": "string",
1472
+
"const": "core:webview:deny-create-webview-window",
1473
+
"markdownDescription": "Denies the create_webview_window command without any pre-configured scope."
1474
},
1475
{
1476
"description": "Denies the get_all_webviews command without any pre-configured scope.",
1477
"type": "string",
1478
+
"const": "core:webview:deny-get-all-webviews",
1479
+
"markdownDescription": "Denies the get_all_webviews command without any pre-configured scope."
1480
},
1481
{
1482
"description": "Denies the internal_toggle_devtools command without any pre-configured scope.",
1483
"type": "string",
1484
+
"const": "core:webview:deny-internal-toggle-devtools",
1485
+
"markdownDescription": "Denies the internal_toggle_devtools command without any pre-configured scope."
1486
},
1487
{
1488
"description": "Denies the print command without any pre-configured scope.",
1489
"type": "string",
1490
+
"const": "core:webview:deny-print",
1491
+
"markdownDescription": "Denies the print command without any pre-configured scope."
1492
},
1493
{
1494
"description": "Denies the reparent command without any pre-configured scope.",
1495
"type": "string",
1496
+
"const": "core:webview:deny-reparent",
1497
+
"markdownDescription": "Denies the reparent command without any pre-configured scope."
1498
+
},
1499
+
{
1500
+
"description": "Denies the set_webview_auto_resize command without any pre-configured scope.",
1501
+
"type": "string",
1502
+
"const": "core:webview:deny-set-webview-auto-resize",
1503
+
"markdownDescription": "Denies the set_webview_auto_resize command without any pre-configured scope."
1504
+
},
1505
+
{
1506
+
"description": "Denies the set_webview_background_color command without any pre-configured scope.",
1507
+
"type": "string",
1508
+
"const": "core:webview:deny-set-webview-background-color",
1509
+
"markdownDescription": "Denies the set_webview_background_color command without any pre-configured scope."
1510
},
1511
{
1512
"description": "Denies the set_webview_focus command without any pre-configured scope.",
1513
"type": "string",
1514
+
"const": "core:webview:deny-set-webview-focus",
1515
+
"markdownDescription": "Denies the set_webview_focus command without any pre-configured scope."
1516
},
1517
{
1518
"description": "Denies the set_webview_position command without any pre-configured scope.",
1519
"type": "string",
1520
+
"const": "core:webview:deny-set-webview-position",
1521
+
"markdownDescription": "Denies the set_webview_position command without any pre-configured scope."
1522
},
1523
{
1524
"description": "Denies the set_webview_size command without any pre-configured scope.",
1525
"type": "string",
1526
+
"const": "core:webview:deny-set-webview-size",
1527
+
"markdownDescription": "Denies the set_webview_size command without any pre-configured scope."
1528
},
1529
{
1530
"description": "Denies the set_webview_zoom command without any pre-configured scope.",
1531
"type": "string",
1532
+
"const": "core:webview:deny-set-webview-zoom",
1533
+
"markdownDescription": "Denies the set_webview_zoom command without any pre-configured scope."
1534
},
1535
{
1536
"description": "Denies the webview_close command without any pre-configured scope.",
1537
"type": "string",
1538
+
"const": "core:webview:deny-webview-close",
1539
+
"markdownDescription": "Denies the webview_close command without any pre-configured scope."
1540
},
1541
{
1542
"description": "Denies the webview_hide command without any pre-configured scope.",
1543
"type": "string",
1544
+
"const": "core:webview:deny-webview-hide",
1545
+
"markdownDescription": "Denies the webview_hide command without any pre-configured scope."
1546
},
1547
{
1548
"description": "Denies the webview_position command without any pre-configured scope.",
1549
"type": "string",
1550
+
"const": "core:webview:deny-webview-position",
1551
+
"markdownDescription": "Denies the webview_position command without any pre-configured scope."
1552
},
1553
{
1554
"description": "Denies the webview_show command without any pre-configured scope.",
1555
"type": "string",
1556
+
"const": "core:webview:deny-webview-show",
1557
+
"markdownDescription": "Denies the webview_show command without any pre-configured scope."
1558
},
1559
{
1560
"description": "Denies the webview_size command without any pre-configured scope.",
1561
"type": "string",
1562
+
"const": "core:webview:deny-webview-size",
1563
+
"markdownDescription": "Denies the webview_size command without any pre-configured scope."
1564
},
1565
{
1566
+
"description": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`",
1567
"type": "string",
1568
+
"const": "core:window:default",
1569
+
"markdownDescription": "Default permissions for the plugin.\n#### This default permission set includes:\n\n- `allow-get-all-windows`\n- `allow-scale-factor`\n- `allow-inner-position`\n- `allow-outer-position`\n- `allow-inner-size`\n- `allow-outer-size`\n- `allow-is-fullscreen`\n- `allow-is-minimized`\n- `allow-is-maximized`\n- `allow-is-focused`\n- `allow-is-decorated`\n- `allow-is-resizable`\n- `allow-is-maximizable`\n- `allow-is-minimizable`\n- `allow-is-closable`\n- `allow-is-visible`\n- `allow-is-enabled`\n- `allow-title`\n- `allow-current-monitor`\n- `allow-primary-monitor`\n- `allow-monitor-from-point`\n- `allow-available-monitors`\n- `allow-cursor-position`\n- `allow-theme`\n- `allow-is-always-on-top`\n- `allow-internal-toggle-maximize`"
1570
},
1571
{
1572
"description": "Enables the available_monitors command without any pre-configured scope.",
1573
"type": "string",
1574
+
"const": "core:window:allow-available-monitors",
1575
+
"markdownDescription": "Enables the available_monitors command without any pre-configured scope."
1576
},
1577
{
1578
"description": "Enables the center command without any pre-configured scope.",
1579
"type": "string",
1580
+
"const": "core:window:allow-center",
1581
+
"markdownDescription": "Enables the center command without any pre-configured scope."
1582
},
1583
{
1584
"description": "Enables the close command without any pre-configured scope.",
1585
"type": "string",
1586
+
"const": "core:window:allow-close",
1587
+
"markdownDescription": "Enables the close command without any pre-configured scope."
1588
},
1589
{
1590
"description": "Enables the create command without any pre-configured scope.",
1591
"type": "string",
1592
+
"const": "core:window:allow-create",
1593
+
"markdownDescription": "Enables the create command without any pre-configured scope."
1594
},
1595
{
1596
"description": "Enables the current_monitor command without any pre-configured scope.",
1597
"type": "string",
1598
+
"const": "core:window:allow-current-monitor",
1599
+
"markdownDescription": "Enables the current_monitor command without any pre-configured scope."
1600
},
1601
{
1602
"description": "Enables the cursor_position command without any pre-configured scope.",
1603
"type": "string",
1604
+
"const": "core:window:allow-cursor-position",
1605
+
"markdownDescription": "Enables the cursor_position command without any pre-configured scope."
1606
},
1607
{
1608
"description": "Enables the destroy command without any pre-configured scope.",
1609
"type": "string",
1610
+
"const": "core:window:allow-destroy",
1611
+
"markdownDescription": "Enables the destroy command without any pre-configured scope."
1612
},
1613
{
1614
"description": "Enables the get_all_windows command without any pre-configured scope.",
1615
"type": "string",
1616
+
"const": "core:window:allow-get-all-windows",
1617
+
"markdownDescription": "Enables the get_all_windows command without any pre-configured scope."
1618
},
1619
{
1620
"description": "Enables the hide command without any pre-configured scope.",
1621
"type": "string",
1622
+
"const": "core:window:allow-hide",
1623
+
"markdownDescription": "Enables the hide command without any pre-configured scope."
1624
},
1625
{
1626
"description": "Enables the inner_position command without any pre-configured scope.",
1627
"type": "string",
1628
+
"const": "core:window:allow-inner-position",
1629
+
"markdownDescription": "Enables the inner_position command without any pre-configured scope."
1630
},
1631
{
1632
"description": "Enables the inner_size command without any pre-configured scope.",
1633
"type": "string",
1634
+
"const": "core:window:allow-inner-size",
1635
+
"markdownDescription": "Enables the inner_size command without any pre-configured scope."
1636
},
1637
{
1638
"description": "Enables the internal_toggle_maximize command without any pre-configured scope.",
1639
"type": "string",
1640
+
"const": "core:window:allow-internal-toggle-maximize",
1641
+
"markdownDescription": "Enables the internal_toggle_maximize command without any pre-configured scope."
1642
+
},
1643
+
{
1644
+
"description": "Enables the is_always_on_top command without any pre-configured scope.",
1645
+
"type": "string",
1646
+
"const": "core:window:allow-is-always-on-top",
1647
+
"markdownDescription": "Enables the is_always_on_top command without any pre-configured scope."
1648
},
1649
{
1650
"description": "Enables the is_closable command without any pre-configured scope.",
1651
"type": "string",
1652
+
"const": "core:window:allow-is-closable",
1653
+
"markdownDescription": "Enables the is_closable command without any pre-configured scope."
1654
},
1655
{
1656
"description": "Enables the is_decorated command without any pre-configured scope.",
1657
"type": "string",
1658
+
"const": "core:window:allow-is-decorated",
1659
+
"markdownDescription": "Enables the is_decorated command without any pre-configured scope."
1660
},
1661
{
1662
"description": "Enables the is_enabled command without any pre-configured scope.",
1663
"type": "string",
1664
+
"const": "core:window:allow-is-enabled",
1665
+
"markdownDescription": "Enables the is_enabled command without any pre-configured scope."
1666
},
1667
{
1668
"description": "Enables the is_focused command without any pre-configured scope.",
1669
"type": "string",
1670
+
"const": "core:window:allow-is-focused",
1671
+
"markdownDescription": "Enables the is_focused command without any pre-configured scope."
1672
},
1673
{
1674
"description": "Enables the is_fullscreen command without any pre-configured scope.",
1675
"type": "string",
1676
+
"const": "core:window:allow-is-fullscreen",
1677
+
"markdownDescription": "Enables the is_fullscreen command without any pre-configured scope."
1678
},
1679
{
1680
"description": "Enables the is_maximizable command without any pre-configured scope.",
1681
"type": "string",
1682
+
"const": "core:window:allow-is-maximizable",
1683
+
"markdownDescription": "Enables the is_maximizable command without any pre-configured scope."
1684
},
1685
{
1686
"description": "Enables the is_maximized command without any pre-configured scope.",
1687
"type": "string",
1688
+
"const": "core:window:allow-is-maximized",
1689
+
"markdownDescription": "Enables the is_maximized command without any pre-configured scope."
1690
},
1691
{
1692
"description": "Enables the is_minimizable command without any pre-configured scope.",
1693
"type": "string",
1694
+
"const": "core:window:allow-is-minimizable",
1695
+
"markdownDescription": "Enables the is_minimizable command without any pre-configured scope."
1696
},
1697
{
1698
"description": "Enables the is_minimized command without any pre-configured scope.",
1699
"type": "string",
1700
+
"const": "core:window:allow-is-minimized",
1701
+
"markdownDescription": "Enables the is_minimized command without any pre-configured scope."
1702
},
1703
{
1704
"description": "Enables the is_resizable command without any pre-configured scope.",
1705
"type": "string",
1706
+
"const": "core:window:allow-is-resizable",
1707
+
"markdownDescription": "Enables the is_resizable command without any pre-configured scope."
1708
},
1709
{
1710
"description": "Enables the is_visible command without any pre-configured scope.",
1711
"type": "string",
1712
+
"const": "core:window:allow-is-visible",
1713
+
"markdownDescription": "Enables the is_visible command without any pre-configured scope."
1714
},
1715
{
1716
"description": "Enables the maximize command without any pre-configured scope.",
1717
"type": "string",
1718
+
"const": "core:window:allow-maximize",
1719
+
"markdownDescription": "Enables the maximize command without any pre-configured scope."
1720
},
1721
{
1722
"description": "Enables the minimize command without any pre-configured scope.",
1723
"type": "string",
1724
+
"const": "core:window:allow-minimize",
1725
+
"markdownDescription": "Enables the minimize command without any pre-configured scope."
1726
},
1727
{
1728
"description": "Enables the monitor_from_point command without any pre-configured scope.",
1729
"type": "string",
1730
+
"const": "core:window:allow-monitor-from-point",
1731
+
"markdownDescription": "Enables the monitor_from_point command without any pre-configured scope."
1732
},
1733
{
1734
"description": "Enables the outer_position command without any pre-configured scope.",
1735
"type": "string",
1736
+
"const": "core:window:allow-outer-position",
1737
+
"markdownDescription": "Enables the outer_position command without any pre-configured scope."
1738
},
1739
{
1740
"description": "Enables the outer_size command without any pre-configured scope.",
1741
"type": "string",
1742
+
"const": "core:window:allow-outer-size",
1743
+
"markdownDescription": "Enables the outer_size command without any pre-configured scope."
1744
},
1745
{
1746
"description": "Enables the primary_monitor command without any pre-configured scope.",
1747
"type": "string",
1748
+
"const": "core:window:allow-primary-monitor",
1749
+
"markdownDescription": "Enables the primary_monitor command without any pre-configured scope."
1750
},
1751
{
1752
"description": "Enables the request_user_attention command without any pre-configured scope.",
1753
"type": "string",
1754
+
"const": "core:window:allow-request-user-attention",
1755
+
"markdownDescription": "Enables the request_user_attention command without any pre-configured scope."
1756
},
1757
{
1758
"description": "Enables the scale_factor command without any pre-configured scope.",
1759
"type": "string",
1760
+
"const": "core:window:allow-scale-factor",
1761
+
"markdownDescription": "Enables the scale_factor command without any pre-configured scope."
1762
},
1763
{
1764
"description": "Enables the set_always_on_bottom command without any pre-configured scope.",
1765
"type": "string",
1766
+
"const": "core:window:allow-set-always-on-bottom",
1767
+
"markdownDescription": "Enables the set_always_on_bottom command without any pre-configured scope."
1768
},
1769
{
1770
"description": "Enables the set_always_on_top command without any pre-configured scope.",
1771
"type": "string",
1772
+
"const": "core:window:allow-set-always-on-top",
1773
+
"markdownDescription": "Enables the set_always_on_top command without any pre-configured scope."
1774
+
},
1775
+
{
1776
+
"description": "Enables the set_background_color command without any pre-configured scope.",
1777
+
"type": "string",
1778
+
"const": "core:window:allow-set-background-color",
1779
+
"markdownDescription": "Enables the set_background_color command without any pre-configured scope."
1780
+
},
1781
+
{
1782
+
"description": "Enables the set_badge_count command without any pre-configured scope.",
1783
+
"type": "string",
1784
+
"const": "core:window:allow-set-badge-count",
1785
+
"markdownDescription": "Enables the set_badge_count command without any pre-configured scope."
1786
+
},
1787
+
{
1788
+
"description": "Enables the set_badge_label command without any pre-configured scope.",
1789
+
"type": "string",
1790
+
"const": "core:window:allow-set-badge-label",
1791
+
"markdownDescription": "Enables the set_badge_label command without any pre-configured scope."
1792
},
1793
{
1794
"description": "Enables the set_closable command without any pre-configured scope.",
1795
"type": "string",
1796
+
"const": "core:window:allow-set-closable",
1797
+
"markdownDescription": "Enables the set_closable command without any pre-configured scope."
1798
},
1799
{
1800
"description": "Enables the set_content_protected command without any pre-configured scope.",
1801
"type": "string",
1802
+
"const": "core:window:allow-set-content-protected",
1803
+
"markdownDescription": "Enables the set_content_protected command without any pre-configured scope."
1804
},
1805
{
1806
"description": "Enables the set_cursor_grab command without any pre-configured scope.",
1807
"type": "string",
1808
+
"const": "core:window:allow-set-cursor-grab",
1809
+
"markdownDescription": "Enables the set_cursor_grab command without any pre-configured scope."
1810
},
1811
{
1812
"description": "Enables the set_cursor_icon command without any pre-configured scope.",
1813
"type": "string",
1814
+
"const": "core:window:allow-set-cursor-icon",
1815
+
"markdownDescription": "Enables the set_cursor_icon command without any pre-configured scope."
1816
},
1817
{
1818
"description": "Enables the set_cursor_position command without any pre-configured scope.",
1819
"type": "string",
1820
+
"const": "core:window:allow-set-cursor-position",
1821
+
"markdownDescription": "Enables the set_cursor_position command without any pre-configured scope."
1822
},
1823
{
1824
"description": "Enables the set_cursor_visible command without any pre-configured scope.",
1825
"type": "string",
1826
+
"const": "core:window:allow-set-cursor-visible",
1827
+
"markdownDescription": "Enables the set_cursor_visible command without any pre-configured scope."
1828
},
1829
{
1830
"description": "Enables the set_decorations command without any pre-configured scope.",
1831
"type": "string",
1832
+
"const": "core:window:allow-set-decorations",
1833
+
"markdownDescription": "Enables the set_decorations command without any pre-configured scope."
1834
},
1835
{
1836
"description": "Enables the set_effects command without any pre-configured scope.",
1837
"type": "string",
1838
+
"const": "core:window:allow-set-effects",
1839
+
"markdownDescription": "Enables the set_effects command without any pre-configured scope."
1840
},
1841
{
1842
"description": "Enables the set_enabled command without any pre-configured scope.",
1843
"type": "string",
1844
+
"const": "core:window:allow-set-enabled",
1845
+
"markdownDescription": "Enables the set_enabled command without any pre-configured scope."
1846
},
1847
{
1848
"description": "Enables the set_focus command without any pre-configured scope.",
1849
"type": "string",
1850
+
"const": "core:window:allow-set-focus",
1851
+
"markdownDescription": "Enables the set_focus command without any pre-configured scope."
1852
+
},
1853
+
{
1854
+
"description": "Enables the set_focusable command without any pre-configured scope.",
1855
+
"type": "string",
1856
+
"const": "core:window:allow-set-focusable",
1857
+
"markdownDescription": "Enables the set_focusable command without any pre-configured scope."
1858
},
1859
{
1860
"description": "Enables the set_fullscreen command without any pre-configured scope.",
1861
"type": "string",
1862
+
"const": "core:window:allow-set-fullscreen",
1863
+
"markdownDescription": "Enables the set_fullscreen command without any pre-configured scope."
1864
},
1865
{
1866
"description": "Enables the set_icon command without any pre-configured scope.",
1867
"type": "string",
1868
+
"const": "core:window:allow-set-icon",
1869
+
"markdownDescription": "Enables the set_icon command without any pre-configured scope."
1870
},
1871
{
1872
"description": "Enables the set_ignore_cursor_events command without any pre-configured scope.",
1873
"type": "string",
1874
+
"const": "core:window:allow-set-ignore-cursor-events",
1875
+
"markdownDescription": "Enables the set_ignore_cursor_events command without any pre-configured scope."
1876
},
1877
{
1878
"description": "Enables the set_max_size command without any pre-configured scope.",
1879
"type": "string",
1880
+
"const": "core:window:allow-set-max-size",
1881
+
"markdownDescription": "Enables the set_max_size command without any pre-configured scope."
1882
},
1883
{
1884
"description": "Enables the set_maximizable command without any pre-configured scope.",
1885
"type": "string",
1886
+
"const": "core:window:allow-set-maximizable",
1887
+
"markdownDescription": "Enables the set_maximizable command without any pre-configured scope."
1888
},
1889
{
1890
"description": "Enables the set_min_size command without any pre-configured scope.",
1891
"type": "string",
1892
+
"const": "core:window:allow-set-min-size",
1893
+
"markdownDescription": "Enables the set_min_size command without any pre-configured scope."
1894
},
1895
{
1896
"description": "Enables the set_minimizable command without any pre-configured scope.",
1897
"type": "string",
1898
+
"const": "core:window:allow-set-minimizable",
1899
+
"markdownDescription": "Enables the set_minimizable command without any pre-configured scope."
1900
+
},
1901
+
{
1902
+
"description": "Enables the set_overlay_icon command without any pre-configured scope.",
1903
+
"type": "string",
1904
+
"const": "core:window:allow-set-overlay-icon",
1905
+
"markdownDescription": "Enables the set_overlay_icon command without any pre-configured scope."
1906
},
1907
{
1908
"description": "Enables the set_position command without any pre-configured scope.",
1909
"type": "string",
1910
+
"const": "core:window:allow-set-position",
1911
+
"markdownDescription": "Enables the set_position command without any pre-configured scope."
1912
},
1913
{
1914
"description": "Enables the set_progress_bar command without any pre-configured scope.",
1915
"type": "string",
1916
+
"const": "core:window:allow-set-progress-bar",
1917
+
"markdownDescription": "Enables the set_progress_bar command without any pre-configured scope."
1918
},
1919
{
1920
"description": "Enables the set_resizable command without any pre-configured scope.",
1921
"type": "string",
1922
+
"const": "core:window:allow-set-resizable",
1923
+
"markdownDescription": "Enables the set_resizable command without any pre-configured scope."
1924
},
1925
{
1926
"description": "Enables the set_shadow command without any pre-configured scope.",
1927
"type": "string",
1928
+
"const": "core:window:allow-set-shadow",
1929
+
"markdownDescription": "Enables the set_shadow command without any pre-configured scope."
1930
+
},
1931
+
{
1932
+
"description": "Enables the set_simple_fullscreen command without any pre-configured scope.",
1933
+
"type": "string",
1934
+
"const": "core:window:allow-set-simple-fullscreen",
1935
+
"markdownDescription": "Enables the set_simple_fullscreen command without any pre-configured scope."
1936
},
1937
{
1938
"description": "Enables the set_size command without any pre-configured scope.",
1939
"type": "string",
1940
+
"const": "core:window:allow-set-size",
1941
+
"markdownDescription": "Enables the set_size command without any pre-configured scope."
1942
},
1943
{
1944
"description": "Enables the set_size_constraints command without any pre-configured scope.",
1945
"type": "string",
1946
+
"const": "core:window:allow-set-size-constraints",
1947
+
"markdownDescription": "Enables the set_size_constraints command without any pre-configured scope."
1948
},
1949
{
1950
"description": "Enables the set_skip_taskbar command without any pre-configured scope.",
1951
"type": "string",
1952
+
"const": "core:window:allow-set-skip-taskbar",
1953
+
"markdownDescription": "Enables the set_skip_taskbar command without any pre-configured scope."
1954
},
1955
{
1956
"description": "Enables the set_theme command without any pre-configured scope.",
1957
"type": "string",
1958
+
"const": "core:window:allow-set-theme",
1959
+
"markdownDescription": "Enables the set_theme command without any pre-configured scope."
1960
},
1961
{
1962
"description": "Enables the set_title command without any pre-configured scope.",
1963
"type": "string",
1964
+
"const": "core:window:allow-set-title",
1965
+
"markdownDescription": "Enables the set_title command without any pre-configured scope."
1966
},
1967
{
1968
"description": "Enables the set_title_bar_style command without any pre-configured scope.",
1969
"type": "string",
1970
+
"const": "core:window:allow-set-title-bar-style",
1971
+
"markdownDescription": "Enables the set_title_bar_style command without any pre-configured scope."
1972
},
1973
{
1974
"description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.",
1975
"type": "string",
1976
+
"const": "core:window:allow-set-visible-on-all-workspaces",
1977
+
"markdownDescription": "Enables the set_visible_on_all_workspaces command without any pre-configured scope."
1978
},
1979
{
1980
"description": "Enables the show command without any pre-configured scope.",
1981
"type": "string",
1982
+
"const": "core:window:allow-show",
1983
+
"markdownDescription": "Enables the show command without any pre-configured scope."
1984
},
1985
{
1986
"description": "Enables the start_dragging command without any pre-configured scope.",
1987
"type": "string",
1988
+
"const": "core:window:allow-start-dragging",
1989
+
"markdownDescription": "Enables the start_dragging command without any pre-configured scope."
1990
},
1991
{
1992
"description": "Enables the start_resize_dragging command without any pre-configured scope.",
1993
"type": "string",
1994
+
"const": "core:window:allow-start-resize-dragging",
1995
+
"markdownDescription": "Enables the start_resize_dragging command without any pre-configured scope."
1996
},
1997
{
1998
"description": "Enables the theme command without any pre-configured scope.",
1999
"type": "string",
2000
+
"const": "core:window:allow-theme",
2001
+
"markdownDescription": "Enables the theme command without any pre-configured scope."
2002
},
2003
{
2004
"description": "Enables the title command without any pre-configured scope.",
2005
"type": "string",
2006
+
"const": "core:window:allow-title",
2007
+
"markdownDescription": "Enables the title command without any pre-configured scope."
2008
},
2009
{
2010
"description": "Enables the toggle_maximize command without any pre-configured scope.",
2011
"type": "string",
2012
+
"const": "core:window:allow-toggle-maximize",
2013
+
"markdownDescription": "Enables the toggle_maximize command without any pre-configured scope."
2014
},
2015
{
2016
"description": "Enables the unmaximize command without any pre-configured scope.",
2017
"type": "string",
2018
+
"const": "core:window:allow-unmaximize",
2019
+
"markdownDescription": "Enables the unmaximize command without any pre-configured scope."
2020
},
2021
{
2022
"description": "Enables the unminimize command without any pre-configured scope.",
2023
"type": "string",
2024
+
"const": "core:window:allow-unminimize",
2025
+
"markdownDescription": "Enables the unminimize command without any pre-configured scope."
2026
},
2027
{
2028
"description": "Denies the available_monitors command without any pre-configured scope.",
2029
"type": "string",
2030
+
"const": "core:window:deny-available-monitors",
2031
+
"markdownDescription": "Denies the available_monitors command without any pre-configured scope."
2032
},
2033
{
2034
"description": "Denies the center command without any pre-configured scope.",
2035
"type": "string",
2036
+
"const": "core:window:deny-center",
2037
+
"markdownDescription": "Denies the center command without any pre-configured scope."
2038
},
2039
{
2040
"description": "Denies the close command without any pre-configured scope.",
2041
"type": "string",
2042
+
"const": "core:window:deny-close",
2043
+
"markdownDescription": "Denies the close command without any pre-configured scope."
2044
},
2045
{
2046
"description": "Denies the create command without any pre-configured scope.",
2047
"type": "string",
2048
+
"const": "core:window:deny-create",
2049
+
"markdownDescription": "Denies the create command without any pre-configured scope."
2050
},
2051
{
2052
"description": "Denies the current_monitor command without any pre-configured scope.",
2053
"type": "string",
2054
+
"const": "core:window:deny-current-monitor",
2055
+
"markdownDescription": "Denies the current_monitor command without any pre-configured scope."
2056
},
2057
{
2058
"description": "Denies the cursor_position command without any pre-configured scope.",
2059
"type": "string",
2060
+
"const": "core:window:deny-cursor-position",
2061
+
"markdownDescription": "Denies the cursor_position command without any pre-configured scope."
2062
},
2063
{
2064
"description": "Denies the destroy command without any pre-configured scope.",
2065
"type": "string",
2066
+
"const": "core:window:deny-destroy",
2067
+
"markdownDescription": "Denies the destroy command without any pre-configured scope."
2068
},
2069
{
2070
"description": "Denies the get_all_windows command without any pre-configured scope.",
2071
"type": "string",
2072
+
"const": "core:window:deny-get-all-windows",
2073
+
"markdownDescription": "Denies the get_all_windows command without any pre-configured scope."
2074
},
2075
{
2076
"description": "Denies the hide command without any pre-configured scope.",
2077
"type": "string",
2078
+
"const": "core:window:deny-hide",
2079
+
"markdownDescription": "Denies the hide command without any pre-configured scope."
2080
},
2081
{
2082
"description": "Denies the inner_position command without any pre-configured scope.",
2083
"type": "string",
2084
+
"const": "core:window:deny-inner-position",
2085
+
"markdownDescription": "Denies the inner_position command without any pre-configured scope."
2086
},
2087
{
2088
"description": "Denies the inner_size command without any pre-configured scope.",
2089
"type": "string",
2090
+
"const": "core:window:deny-inner-size",
2091
+
"markdownDescription": "Denies the inner_size command without any pre-configured scope."
2092
},
2093
{
2094
"description": "Denies the internal_toggle_maximize command without any pre-configured scope.",
2095
"type": "string",
2096
+
"const": "core:window:deny-internal-toggle-maximize",
2097
+
"markdownDescription": "Denies the internal_toggle_maximize command without any pre-configured scope."
2098
+
},
2099
+
{
2100
+
"description": "Denies the is_always_on_top command without any pre-configured scope.",
2101
+
"type": "string",
2102
+
"const": "core:window:deny-is-always-on-top",
2103
+
"markdownDescription": "Denies the is_always_on_top command without any pre-configured scope."
2104
},
2105
{
2106
"description": "Denies the is_closable command without any pre-configured scope.",
2107
"type": "string",
2108
+
"const": "core:window:deny-is-closable",
2109
+
"markdownDescription": "Denies the is_closable command without any pre-configured scope."
2110
},
2111
{
2112
"description": "Denies the is_decorated command without any pre-configured scope.",
2113
"type": "string",
2114
+
"const": "core:window:deny-is-decorated",
2115
+
"markdownDescription": "Denies the is_decorated command without any pre-configured scope."
2116
},
2117
{
2118
"description": "Denies the is_enabled command without any pre-configured scope.",
2119
"type": "string",
2120
+
"const": "core:window:deny-is-enabled",
2121
+
"markdownDescription": "Denies the is_enabled command without any pre-configured scope."
2122
},
2123
{
2124
"description": "Denies the is_focused command without any pre-configured scope.",
2125
"type": "string",
2126
+
"const": "core:window:deny-is-focused",
2127
+
"markdownDescription": "Denies the is_focused command without any pre-configured scope."
2128
},
2129
{
2130
"description": "Denies the is_fullscreen command without any pre-configured scope.",
2131
"type": "string",
2132
+
"const": "core:window:deny-is-fullscreen",
2133
+
"markdownDescription": "Denies the is_fullscreen command without any pre-configured scope."
2134
},
2135
{
2136
"description": "Denies the is_maximizable command without any pre-configured scope.",
2137
"type": "string",
2138
+
"const": "core:window:deny-is-maximizable",
2139
+
"markdownDescription": "Denies the is_maximizable command without any pre-configured scope."
2140
},
2141
{
2142
"description": "Denies the is_maximized command without any pre-configured scope.",
2143
"type": "string",
2144
+
"const": "core:window:deny-is-maximized",
2145
+
"markdownDescription": "Denies the is_maximized command without any pre-configured scope."
2146
},
2147
{
2148
"description": "Denies the is_minimizable command without any pre-configured scope.",
2149
"type": "string",
2150
+
"const": "core:window:deny-is-minimizable",
2151
+
"markdownDescription": "Denies the is_minimizable command without any pre-configured scope."
2152
},
2153
{
2154
"description": "Denies the is_minimized command without any pre-configured scope.",
2155
"type": "string",
2156
+
"const": "core:window:deny-is-minimized",
2157
+
"markdownDescription": "Denies the is_minimized command without any pre-configured scope."
2158
},
2159
{
2160
"description": "Denies the is_resizable command without any pre-configured scope.",
2161
"type": "string",
2162
+
"const": "core:window:deny-is-resizable",
2163
+
"markdownDescription": "Denies the is_resizable command without any pre-configured scope."
2164
},
2165
{
2166
"description": "Denies the is_visible command without any pre-configured scope.",
2167
"type": "string",
2168
+
"const": "core:window:deny-is-visible",
2169
+
"markdownDescription": "Denies the is_visible command without any pre-configured scope."
2170
},
2171
{
2172
"description": "Denies the maximize command without any pre-configured scope.",
2173
"type": "string",
2174
+
"const": "core:window:deny-maximize",
2175
+
"markdownDescription": "Denies the maximize command without any pre-configured scope."
2176
},
2177
{
2178
"description": "Denies the minimize command without any pre-configured scope.",
2179
"type": "string",
2180
+
"const": "core:window:deny-minimize",
2181
+
"markdownDescription": "Denies the minimize command without any pre-configured scope."
2182
},
2183
{
2184
"description": "Denies the monitor_from_point command without any pre-configured scope.",
2185
"type": "string",
2186
+
"const": "core:window:deny-monitor-from-point",
2187
+
"markdownDescription": "Denies the monitor_from_point command without any pre-configured scope."
2188
},
2189
{
2190
"description": "Denies the outer_position command without any pre-configured scope.",
2191
"type": "string",
2192
+
"const": "core:window:deny-outer-position",
2193
+
"markdownDescription": "Denies the outer_position command without any pre-configured scope."
2194
},
2195
{
2196
"description": "Denies the outer_size command without any pre-configured scope.",
2197
"type": "string",
2198
+
"const": "core:window:deny-outer-size",
2199
+
"markdownDescription": "Denies the outer_size command without any pre-configured scope."
2200
},
2201
{
2202
"description": "Denies the primary_monitor command without any pre-configured scope.",
2203
"type": "string",
2204
+
"const": "core:window:deny-primary-monitor",
2205
+
"markdownDescription": "Denies the primary_monitor command without any pre-configured scope."
2206
},
2207
{
2208
"description": "Denies the request_user_attention command without any pre-configured scope.",
2209
"type": "string",
2210
+
"const": "core:window:deny-request-user-attention",
2211
+
"markdownDescription": "Denies the request_user_attention command without any pre-configured scope."
2212
},
2213
{
2214
"description": "Denies the scale_factor command without any pre-configured scope.",
2215
"type": "string",
2216
+
"const": "core:window:deny-scale-factor",
2217
+
"markdownDescription": "Denies the scale_factor command without any pre-configured scope."
2218
},
2219
{
2220
"description": "Denies the set_always_on_bottom command without any pre-configured scope.",
2221
"type": "string",
2222
+
"const": "core:window:deny-set-always-on-bottom",
2223
+
"markdownDescription": "Denies the set_always_on_bottom command without any pre-configured scope."
2224
},
2225
{
2226
"description": "Denies the set_always_on_top command without any pre-configured scope.",
2227
"type": "string",
2228
+
"const": "core:window:deny-set-always-on-top",
2229
+
"markdownDescription": "Denies the set_always_on_top command without any pre-configured scope."
2230
+
},
2231
+
{
2232
+
"description": "Denies the set_background_color command without any pre-configured scope.",
2233
+
"type": "string",
2234
+
"const": "core:window:deny-set-background-color",
2235
+
"markdownDescription": "Denies the set_background_color command without any pre-configured scope."
2236
+
},
2237
+
{
2238
+
"description": "Denies the set_badge_count command without any pre-configured scope.",
2239
+
"type": "string",
2240
+
"const": "core:window:deny-set-badge-count",
2241
+
"markdownDescription": "Denies the set_badge_count command without any pre-configured scope."
2242
+
},
2243
+
{
2244
+
"description": "Denies the set_badge_label command without any pre-configured scope.",
2245
+
"type": "string",
2246
+
"const": "core:window:deny-set-badge-label",
2247
+
"markdownDescription": "Denies the set_badge_label command without any pre-configured scope."
2248
},
2249
{
2250
"description": "Denies the set_closable command without any pre-configured scope.",
2251
"type": "string",
2252
+
"const": "core:window:deny-set-closable",
2253
+
"markdownDescription": "Denies the set_closable command without any pre-configured scope."
2254
},
2255
{
2256
"description": "Denies the set_content_protected command without any pre-configured scope.",
2257
"type": "string",
2258
+
"const": "core:window:deny-set-content-protected",
2259
+
"markdownDescription": "Denies the set_content_protected command without any pre-configured scope."
2260
},
2261
{
2262
"description": "Denies the set_cursor_grab command without any pre-configured scope.",
2263
"type": "string",
2264
+
"const": "core:window:deny-set-cursor-grab",
2265
+
"markdownDescription": "Denies the set_cursor_grab command without any pre-configured scope."
2266
},
2267
{
2268
"description": "Denies the set_cursor_icon command without any pre-configured scope.",
2269
"type": "string",
2270
+
"const": "core:window:deny-set-cursor-icon",
2271
+
"markdownDescription": "Denies the set_cursor_icon command without any pre-configured scope."
2272
},
2273
{
2274
"description": "Denies the set_cursor_position command without any pre-configured scope.",
2275
"type": "string",
2276
+
"const": "core:window:deny-set-cursor-position",
2277
+
"markdownDescription": "Denies the set_cursor_position command without any pre-configured scope."
2278
},
2279
{
2280
"description": "Denies the set_cursor_visible command without any pre-configured scope.",
2281
"type": "string",
2282
+
"const": "core:window:deny-set-cursor-visible",
2283
+
"markdownDescription": "Denies the set_cursor_visible command without any pre-configured scope."
2284
},
2285
{
2286
"description": "Denies the set_decorations command without any pre-configured scope.",
2287
"type": "string",
2288
+
"const": "core:window:deny-set-decorations",
2289
+
"markdownDescription": "Denies the set_decorations command without any pre-configured scope."
2290
},
2291
{
2292
"description": "Denies the set_effects command without any pre-configured scope.",
2293
"type": "string",
2294
+
"const": "core:window:deny-set-effects",
2295
+
"markdownDescription": "Denies the set_effects command without any pre-configured scope."
2296
},
2297
{
2298
"description": "Denies the set_enabled command without any pre-configured scope.",
2299
"type": "string",
2300
+
"const": "core:window:deny-set-enabled",
2301
+
"markdownDescription": "Denies the set_enabled command without any pre-configured scope."
2302
},
2303
{
2304
"description": "Denies the set_focus command without any pre-configured scope.",
2305
"type": "string",
2306
+
"const": "core:window:deny-set-focus",
2307
+
"markdownDescription": "Denies the set_focus command without any pre-configured scope."
2308
+
},
2309
+
{
2310
+
"description": "Denies the set_focusable command without any pre-configured scope.",
2311
+
"type": "string",
2312
+
"const": "core:window:deny-set-focusable",
2313
+
"markdownDescription": "Denies the set_focusable command without any pre-configured scope."
2314
},
2315
{
2316
"description": "Denies the set_fullscreen command without any pre-configured scope.",
2317
"type": "string",
2318
+
"const": "core:window:deny-set-fullscreen",
2319
+
"markdownDescription": "Denies the set_fullscreen command without any pre-configured scope."
2320
},
2321
{
2322
"description": "Denies the set_icon command without any pre-configured scope.",
2323
"type": "string",
2324
+
"const": "core:window:deny-set-icon",
2325
+
"markdownDescription": "Denies the set_icon command without any pre-configured scope."
2326
},
2327
{
2328
"description": "Denies the set_ignore_cursor_events command without any pre-configured scope.",
2329
"type": "string",
2330
+
"const": "core:window:deny-set-ignore-cursor-events",
2331
+
"markdownDescription": "Denies the set_ignore_cursor_events command without any pre-configured scope."
2332
},
2333
{
2334
"description": "Denies the set_max_size command without any pre-configured scope.",
2335
"type": "string",
2336
+
"const": "core:window:deny-set-max-size",
2337
+
"markdownDescription": "Denies the set_max_size command without any pre-configured scope."
2338
},
2339
{
2340
"description": "Denies the set_maximizable command without any pre-configured scope.",
2341
"type": "string",
2342
+
"const": "core:window:deny-set-maximizable",
2343
+
"markdownDescription": "Denies the set_maximizable command without any pre-configured scope."
2344
},
2345
{
2346
"description": "Denies the set_min_size command without any pre-configured scope.",
2347
"type": "string",
2348
+
"const": "core:window:deny-set-min-size",
2349
+
"markdownDescription": "Denies the set_min_size command without any pre-configured scope."
2350
},
2351
{
2352
"description": "Denies the set_minimizable command without any pre-configured scope.",
2353
"type": "string",
2354
+
"const": "core:window:deny-set-minimizable",
2355
+
"markdownDescription": "Denies the set_minimizable command without any pre-configured scope."
2356
+
},
2357
+
{
2358
+
"description": "Denies the set_overlay_icon command without any pre-configured scope.",
2359
+
"type": "string",
2360
+
"const": "core:window:deny-set-overlay-icon",
2361
+
"markdownDescription": "Denies the set_overlay_icon command without any pre-configured scope."
2362
},
2363
{
2364
"description": "Denies the set_position command without any pre-configured scope.",
2365
"type": "string",
2366
+
"const": "core:window:deny-set-position",
2367
+
"markdownDescription": "Denies the set_position command without any pre-configured scope."
2368
},
2369
{
2370
"description": "Denies the set_progress_bar command without any pre-configured scope.",
2371
"type": "string",
2372
+
"const": "core:window:deny-set-progress-bar",
2373
+
"markdownDescription": "Denies the set_progress_bar command without any pre-configured scope."
2374
},
2375
{
2376
"description": "Denies the set_resizable command without any pre-configured scope.",
2377
"type": "string",
2378
+
"const": "core:window:deny-set-resizable",
2379
+
"markdownDescription": "Denies the set_resizable command without any pre-configured scope."
2380
},
2381
{
2382
"description": "Denies the set_shadow command without any pre-configured scope.",
2383
"type": "string",
2384
+
"const": "core:window:deny-set-shadow",
2385
+
"markdownDescription": "Denies the set_shadow command without any pre-configured scope."
2386
+
},
2387
+
{
2388
+
"description": "Denies the set_simple_fullscreen command without any pre-configured scope.",
2389
+
"type": "string",
2390
+
"const": "core:window:deny-set-simple-fullscreen",
2391
+
"markdownDescription": "Denies the set_simple_fullscreen command without any pre-configured scope."
2392
},
2393
{
2394
"description": "Denies the set_size command without any pre-configured scope.",
2395
"type": "string",
2396
+
"const": "core:window:deny-set-size",
2397
+
"markdownDescription": "Denies the set_size command without any pre-configured scope."
2398
},
2399
{
2400
"description": "Denies the set_size_constraints command without any pre-configured scope.",
2401
"type": "string",
2402
+
"const": "core:window:deny-set-size-constraints",
2403
+
"markdownDescription": "Denies the set_size_constraints command without any pre-configured scope."
2404
},
2405
{
2406
"description": "Denies the set_skip_taskbar command without any pre-configured scope.",
2407
"type": "string",
2408
+
"const": "core:window:deny-set-skip-taskbar",
2409
+
"markdownDescription": "Denies the set_skip_taskbar command without any pre-configured scope."
2410
},
2411
{
2412
"description": "Denies the set_theme command without any pre-configured scope.",
2413
"type": "string",
2414
+
"const": "core:window:deny-set-theme",
2415
+
"markdownDescription": "Denies the set_theme command without any pre-configured scope."
2416
},
2417
{
2418
"description": "Denies the set_title command without any pre-configured scope.",
2419
"type": "string",
2420
+
"const": "core:window:deny-set-title",
2421
+
"markdownDescription": "Denies the set_title command without any pre-configured scope."
2422
},
2423
{
2424
"description": "Denies the set_title_bar_style command without any pre-configured scope.",
2425
"type": "string",
2426
+
"const": "core:window:deny-set-title-bar-style",
2427
+
"markdownDescription": "Denies the set_title_bar_style command without any pre-configured scope."
2428
},
2429
{
2430
"description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.",
2431
"type": "string",
2432
+
"const": "core:window:deny-set-visible-on-all-workspaces",
2433
+
"markdownDescription": "Denies the set_visible_on_all_workspaces command without any pre-configured scope."
2434
},
2435
{
2436
"description": "Denies the show command without any pre-configured scope.",
2437
"type": "string",
2438
+
"const": "core:window:deny-show",
2439
+
"markdownDescription": "Denies the show command without any pre-configured scope."
2440
},
2441
{
2442
"description": "Denies the start_dragging command without any pre-configured scope.",
2443
"type": "string",
2444
+
"const": "core:window:deny-start-dragging",
2445
+
"markdownDescription": "Denies the start_dragging command without any pre-configured scope."
2446
},
2447
{
2448
"description": "Denies the start_resize_dragging command without any pre-configured scope.",
2449
"type": "string",
2450
+
"const": "core:window:deny-start-resize-dragging",
2451
+
"markdownDescription": "Denies the start_resize_dragging command without any pre-configured scope."
2452
},
2453
{
2454
"description": "Denies the theme command without any pre-configured scope.",
2455
"type": "string",
2456
+
"const": "core:window:deny-theme",
2457
+
"markdownDescription": "Denies the theme command without any pre-configured scope."
2458
},
2459
{
2460
"description": "Denies the title command without any pre-configured scope.",
2461
"type": "string",
2462
+
"const": "core:window:deny-title",
2463
+
"markdownDescription": "Denies the title command without any pre-configured scope."
2464
},
2465
{
2466
"description": "Denies the toggle_maximize command without any pre-configured scope.",
2467
"type": "string",
2468
+
"const": "core:window:deny-toggle-maximize",
2469
+
"markdownDescription": "Denies the toggle_maximize command without any pre-configured scope."
2470
},
2471
{
2472
"description": "Denies the unmaximize command without any pre-configured scope.",
2473
"type": "string",
2474
+
"const": "core:window:deny-unmaximize",
2475
+
"markdownDescription": "Denies the unmaximize command without any pre-configured scope."
2476
},
2477
{
2478
"description": "Denies the unminimize command without any pre-configured scope.",
2479
"type": "string",
2480
+
"const": "core:window:deny-unminimize",
2481
+
"markdownDescription": "Denies the unminimize command without any pre-configured scope."
2482
},
2483
{
2484
+
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
2485
"type": "string",
2486
+
"const": "http:default",
2487
+
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
2488
},
2489
{
2490
"description": "Enables the fetch command without any pre-configured scope.",
2491
"type": "string",
2492
+
"const": "http:allow-fetch",
2493
+
"markdownDescription": "Enables the fetch command without any pre-configured scope."
2494
},
2495
{
2496
"description": "Enables the fetch_cancel command without any pre-configured scope.",
2497
"type": "string",
2498
+
"const": "http:allow-fetch-cancel",
2499
+
"markdownDescription": "Enables the fetch_cancel command without any pre-configured scope."
2500
},
2501
{
2502
"description": "Enables the fetch_read_body command without any pre-configured scope.",
2503
"type": "string",
2504
+
"const": "http:allow-fetch-read-body",
2505
+
"markdownDescription": "Enables the fetch_read_body command without any pre-configured scope."
2506
},
2507
{
2508
"description": "Enables the fetch_send command without any pre-configured scope.",
2509
"type": "string",
2510
+
"const": "http:allow-fetch-send",
2511
+
"markdownDescription": "Enables the fetch_send command without any pre-configured scope."
2512
},
2513
{
2514
"description": "Denies the fetch command without any pre-configured scope.",
2515
"type": "string",
2516
+
"const": "http:deny-fetch",
2517
+
"markdownDescription": "Denies the fetch command without any pre-configured scope."
2518
},
2519
{
2520
"description": "Denies the fetch_cancel command without any pre-configured scope.",
2521
"type": "string",
2522
+
"const": "http:deny-fetch-cancel",
2523
+
"markdownDescription": "Denies the fetch_cancel command without any pre-configured scope."
2524
},
2525
{
2526
"description": "Denies the fetch_read_body command without any pre-configured scope.",
2527
"type": "string",
2528
+
"const": "http:deny-fetch-read-body",
2529
+
"markdownDescription": "Denies the fetch_read_body command without any pre-configured scope."
2530
},
2531
{
2532
"description": "Denies the fetch_send command without any pre-configured scope.",
2533
"type": "string",
2534
+
"const": "http:deny-fetch-send",
2535
+
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
2536
},
2537
{
2538
+
"description": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`",
2539
"type": "string",
2540
+
"const": "process:default",
2541
+
"markdownDescription": "This permission set configures which\nprocess features are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n\n#### This default permission set includes:\n\n- `allow-exit`\n- `allow-restart`"
2542
},
2543
{
2544
"description": "Enables the exit command without any pre-configured scope.",
2545
"type": "string",
2546
+
"const": "process:allow-exit",
2547
+
"markdownDescription": "Enables the exit command without any pre-configured scope."
2548
},
2549
{
2550
"description": "Enables the restart command without any pre-configured scope.",
2551
"type": "string",
2552
+
"const": "process:allow-restart",
2553
+
"markdownDescription": "Enables the restart command without any pre-configured scope."
2554
},
2555
{
2556
"description": "Denies the exit command without any pre-configured scope.",
2557
"type": "string",
2558
+
"const": "process:deny-exit",
2559
+
"markdownDescription": "Denies the exit command without any pre-configured scope."
2560
},
2561
{
2562
"description": "Denies the restart command without any pre-configured scope.",
2563
"type": "string",
2564
+
"const": "process:deny-restart",
2565
+
"markdownDescription": "Denies the restart command without any pre-configured scope."
2566
},
2567
{
2568
+
"description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`",
2569
"type": "string",
2570
+
"const": "shell:default",
2571
+
"markdownDescription": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality with a reasonable\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n\n#### This default permission set includes:\n\n- `allow-open`"
2572
},
2573
{
2574
"description": "Enables the execute command without any pre-configured scope.",
2575
"type": "string",
2576
+
"const": "shell:allow-execute",
2577
+
"markdownDescription": "Enables the execute command without any pre-configured scope."
2578
},
2579
{
2580
"description": "Enables the kill command without any pre-configured scope.",
2581
"type": "string",
2582
+
"const": "shell:allow-kill",
2583
+
"markdownDescription": "Enables the kill command without any pre-configured scope."
2584
},
2585
{
2586
"description": "Enables the open command without any pre-configured scope.",
2587
"type": "string",
2588
+
"const": "shell:allow-open",
2589
+
"markdownDescription": "Enables the open command without any pre-configured scope."
2590
},
2591
{
2592
"description": "Enables the spawn command without any pre-configured scope.",
2593
"type": "string",
2594
+
"const": "shell:allow-spawn",
2595
+
"markdownDescription": "Enables the spawn command without any pre-configured scope."
2596
},
2597
{
2598
"description": "Enables the stdin_write command without any pre-configured scope.",
2599
"type": "string",
2600
+
"const": "shell:allow-stdin-write",
2601
+
"markdownDescription": "Enables the stdin_write command without any pre-configured scope."
2602
},
2603
{
2604
"description": "Denies the execute command without any pre-configured scope.",
2605
"type": "string",
2606
+
"const": "shell:deny-execute",
2607
+
"markdownDescription": "Denies the execute command without any pre-configured scope."
2608
},
2609
{
2610
"description": "Denies the kill command without any pre-configured scope.",
2611
"type": "string",
2612
+
"const": "shell:deny-kill",
2613
+
"markdownDescription": "Denies the kill command without any pre-configured scope."
2614
},
2615
{
2616
"description": "Denies the open command without any pre-configured scope.",
2617
"type": "string",
2618
+
"const": "shell:deny-open",
2619
+
"markdownDescription": "Denies the open command without any pre-configured scope."
2620
},
2621
{
2622
"description": "Denies the spawn command without any pre-configured scope.",
2623
"type": "string",
2624
+
"const": "shell:deny-spawn",
2625
+
"markdownDescription": "Denies the spawn command without any pre-configured scope."
2626
},
2627
{
2628
"description": "Denies the stdin_write command without any pre-configured scope.",
2629
"type": "string",
2630
+
"const": "shell:deny-stdin-write",
2631
+
"markdownDescription": "Denies the stdin_write command without any pre-configured scope."
2632
}
2633
]
2634
},
+1
src-tauri/rustfmt.toml
+1
src-tauri/rustfmt.toml
···
···
1
+
tab_spaces = 2
+18
-10
src-tauri/src/frontend_calls/change_final_path.rs
+18
-10
src-tauri/src/frontend_calls/change_final_path.rs
···
1
use std::fs;
2
3
-
#[tauri::command]
4
-
pub fn change_final_path(new_path: &str) {
5
-
let config_path = dirs::config_dir()
6
-
.unwrap()
7
-
.join("PhazeDev\\VRChatPhotoManager\\.photos_path");
8
9
-
fs::write(&config_path, new_path.as_bytes()).unwrap();
10
11
match fs::metadata(&new_path) {
12
-
Ok(_) => {}
13
Err(_) => {
14
-
fs::create_dir(&new_path).unwrap();
15
}
16
-
};
17
-
}
···
1
use std::fs;
2
3
+
use tauri::{Emitter, State, Window};
4
5
+
use crate::util::cache::Cache;
6
7
+
#[tauri::command]
8
+
pub fn change_final_path(new_path: &str, window: Window, cache: State<Cache>) -> bool {
9
match fs::metadata(&new_path) {
10
+
Ok(_) => {
11
+
let config_path = dirs::config_dir()
12
+
.unwrap()
13
+
.join("PhazeDev/VRChatPhotoManager/.photos_path");
14
+
15
+
fs::write(&config_path, new_path.as_bytes()).unwrap();
16
+
cache.insert("photo-path".into(), new_path.to_owned());
17
+
18
+
true
19
+
}
20
Err(_) => {
21
+
window.emit("vrcpm-error", "Error Changing Path: Path does not exist.").unwrap();
22
+
false
23
}
24
+
}
25
+
}
+17
-5
src-tauri/src/frontend_calls/close_splashscreen.rs
+17
-5
src-tauri/src/frontend_calls/close_splashscreen.rs
···
1
-
use tauri::Manager;
2
use std::env;
3
4
#[tauri::command]
5
-
pub fn close_splashscreen(window: tauri::Window) {
6
let args: Vec<String> = env::args().collect();
7
8
let mut show = true;
···
12
}
13
}
14
15
-
if show{
16
-
window.get_webview_window("main").unwrap().show().unwrap();
17
}
18
-
}
···
1
use std::env;
2
+
use tauri::{ Emitter, Manager, State };
3
+
4
+
use crate::frontend_calls::config::Config;
5
+
6
+
use super::config::get_config_value_string;
7
8
#[tauri::command]
9
+
pub fn close_splashscreen( window: tauri::Window, config: State<Config> ) {
10
let args: Vec<String> = env::args().collect();
11
12
let mut show = true;
···
16
}
17
}
18
19
+
let value: String = match get_config_value_string("start-in-bg".to_owned(), config) { Some(val) => val, None => "false".to_owned() };
20
+
if value == "true"{
21
+
show = false;
22
}
23
+
24
+
if show {
25
+
let webview = window.get_webview_window("main").unwrap();
26
+
27
+
webview.show().unwrap();
28
+
webview.emit("show-window", 0).unwrap();
29
+
}
30
+
}
+49
-26
src-tauri/src/frontend_calls/config.rs
+49
-26
src-tauri/src/frontend_calls/config.rs
···
1
-
use std::{ fs, path::PathBuf };
2
3
use serde_json::Value;
4
5
-
pub fn get_config_path() -> PathBuf{
6
let path = dirs::config_dir()
7
.unwrap()
8
-
.join("PhazeDev\\VRChatPhotoManager\\.config");
9
10
-
match fs::metadata(&path){
11
Ok(_) => {}
12
Err(_) => {
13
fs::write(&path, b"{}").unwrap();
···
17
path
18
}
19
20
-
#[tauri::command]
21
-
pub fn set_config_value_string( key: String, value: String ){
22
-
let path = get_config_path();
23
24
-
let mut config: Value = serde_json::from_str(&fs::read_to_string(&path).unwrap()).unwrap();
25
-
config[key] = Value::from(value);
26
27
-
fs::write(path, config.to_string()).unwrap();
28
}
29
30
#[tauri::command]
31
-
pub fn get_config_value_string( key: String ) -> Option<String>{
32
-
let config: Value = serde_json::from_str(&fs::read_to_string(get_config_path()).unwrap()).unwrap();
33
-
let string = config[key].as_str();
34
35
-
if string.is_some(){
36
Some(string.unwrap().to_owned())
37
-
} else{
38
None
39
}
40
}
41
42
#[tauri::command]
43
-
pub fn set_config_value_int( key: String, value: i64 ){
44
-
let path = get_config_path();
45
-
46
-
let mut config: Value = serde_json::from_str(&fs::read_to_string(&path).unwrap()).unwrap();
47
-
config[key] = Value::from(value);
48
-
49
-
fs::write(path, config.to_string()).unwrap();
50
}
51
52
#[tauri::command]
53
-
pub fn get_config_value_int( key: String ) -> Option<i64>{
54
-
let config: Value = serde_json::from_str(&fs::read_to_string(get_config_path()).unwrap()).unwrap();
55
-
config[key].as_i64()
56
-
}
···
1
+
use std::{fs, path::PathBuf, sync::Mutex};
2
3
use serde_json::Value;
4
+
use tauri::State;
5
6
+
pub fn get_config_path() -> PathBuf {
7
let path = dirs::config_dir()
8
.unwrap()
9
+
.join("PhazeDev/VRChatPhotoManager/.config");
10
11
+
match fs::metadata(&path) {
12
Ok(_) => {}
13
Err(_) => {
14
fs::write(&path, b"{}").unwrap();
···
18
path
19
}
20
21
+
pub struct Config{
22
+
config: Mutex<Value>
23
+
}
24
+
25
+
impl Config{
26
+
pub fn new() -> Config{
27
+
let path = get_config_path();
28
+
let config: Value = serde_json::from_str(&fs::read_to_string(&path).unwrap()).unwrap();
29
+
30
+
Config {
31
+
config: Mutex::new(config)
32
+
}
33
+
}
34
+
35
+
pub fn set( &self, key: String, value: Value ){
36
+
let mut lock = self.config.lock().unwrap();
37
+
lock[key] = value;
38
+
}
39
+
40
+
pub fn get( &self, key: String ) -> Value{
41
+
let lock = self.config.lock().unwrap();
42
+
lock[key].clone()
43
+
}
44
+
45
+
pub fn save( &self ){
46
+
let path = get_config_path();
47
+
let string = serde_json::to_string(&self.config).unwrap();
48
49
+
fs::write(path, string).unwrap();
50
+
}
51
+
}
52
53
+
#[tauri::command]
54
+
pub fn set_config_value_string( key: String, value: String, config: State<Config> ) {
55
+
config.set(key, Value::from(value));
56
}
57
58
#[tauri::command]
59
+
pub fn get_config_value_string( key: String, config: State<Config> ) -> Option<String> {
60
+
let string = config.get(key);
61
+
let string = string.as_str();
62
63
+
if string.is_some() {
64
Some(string.unwrap().to_owned())
65
+
} else {
66
None
67
}
68
}
69
70
#[tauri::command]
71
+
pub fn set_config_value_int( key: String, value: i64, config: State<Config> ) {
72
+
config.set(key, Value::from(value));
73
}
74
75
#[tauri::command]
76
+
pub fn get_config_value_int( key: String, config: State<Config> ) -> Option<i64> {
77
+
let string = config.get(key);
78
+
string.as_i64()
79
+
}
+25
src-tauri/src/frontend_calls/copy_image.rs
+25
src-tauri/src/frontend_calls/copy_image.rs
···
···
1
+
use std::{ borrow::Cow, sync::Mutex };
2
+
3
+
use arboard::{ Clipboard, ImageData };
4
+
use image::GenericImageView;
5
+
use tauri::State;
6
+
7
+
use crate::{ frontend_calls::get_user_photos_path::get_user_photos_path, util::cache::Cache };
8
+
9
+
#[tauri::command]
10
+
pub fn copy_image( path: String, clipboard: State<Mutex<Clipboard>>, cache: State<Cache> ) {
11
+
let path = format!("{}/{}", get_user_photos_path(cache), path);
12
+
println!("Copying Image: {}", &path);
13
+
14
+
let img = image::open(path).unwrap();
15
+
let size = img.dimensions();
16
+
17
+
let img_data = ImageData {
18
+
width: size.0 as usize,
19
+
height: size.1 as usize,
20
+
bytes: Cow::from(img.into_rgba8().to_vec())
21
+
};
22
+
23
+
let mut lock = clipboard.lock().unwrap();
24
+
lock.set_image(img_data).unwrap();
25
+
}
+9
-19
src-tauri/src/frontend_calls/delete_photo.rs
+9
-19
src-tauri/src/frontend_calls/delete_photo.rs
···
1
-
use std::{ fs, thread, time::Duration };
2
-
use crate::util::get_photo_path::get_photo_path;
3
4
// Delete a photo when the users confirms the prompt in the ui
5
#[tauri::command]
6
-
pub fn delete_photo(path: String, token: String, is_syncing: bool) {
7
thread::spawn(move || {
8
-
let p = get_photo_path().join(&path);
9
fs::remove_file(p).unwrap();
10
-
11
-
let photo = path.split("\\").last().unwrap();
12
-
13
-
if is_syncing {
14
-
let client = reqwest::blocking::Client::new();
15
-
client
16
-
.delete(format!(
17
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}&photo={}",
18
-
token, photo
19
-
))
20
-
.timeout(Duration::from_secs(120))
21
-
.send()
22
-
.unwrap();
23
-
}
24
});
25
-
}
···
1
+
use tauri::State;
2
+
3
+
use crate::util::cache::Cache;
4
+
use std::{ fs, thread };
5
6
// Delete a photo when the users confirms the prompt in the ui
7
#[tauri::command]
8
+
pub fn delete_photo(path: String, cache: State<Cache>) {
9
+
let photo_path = cache.get("photo-path".into());
10
+
11
thread::spawn(move || {
12
+
let p = photo_path.unwrap() + "/" + &path;
13
fs::remove_file(p).unwrap();
14
});
15
+
}
+2
-2
src-tauri/src/frontend_calls/find_world_by_id.rs
+2
-2
src-tauri/src/frontend_calls/find_world_by_id.rs
+8
src-tauri/src/frontend_calls/get_os.rs
+8
src-tauri/src/frontend_calls/get_os.rs
+7
-5
src-tauri/src/frontend_calls/get_user_photos_path.rs
+7
-5
src-tauri/src/frontend_calls/get_user_photos_path.rs
···
1
+
use tauri::State;
2
+
3
+
use crate::util::cache::Cache;
4
5
// Check if the photo config file exists
6
// if not just return the default vrchat path
7
#[tauri::command]
8
+
pub fn get_user_photos_path( cache: State<Cache> ) -> String {
9
+
let photo_path = cache.get("photo-path".into());
10
+
photo_path.unwrap()
11
+
}
+28
-9
src-tauri/src/frontend_calls/load_photo_meta.rs
+28
-9
src-tauri/src/frontend_calls/load_photo_meta.rs
···
1
-
use std::{ thread, fs, io::Read };
2
-
use crate::util::get_photo_path::get_photo_path;
3
-
use tauri::Emitter;
4
use crate::PNGImage;
5
6
// Reads the PNG file and loads the image metadata from it
7
// then sends the metadata to the frontend, returns width, height, colour depth and so on... more info "pngmeta.rs"
8
#[tauri::command]
9
-
pub fn load_photo_meta(photo: &str, window: tauri::Window) {
10
let photo = photo.to_string();
11
12
thread::spawn(move || {
13
-
let base_dir = get_photo_path().join(&photo);
14
15
let file = fs::File::open(base_dir.clone());
16
···
19
let mut buffer = Vec::new();
20
21
let _out = file.read_to_end(&mut buffer);
22
-
window
23
-
.emit("photo_meta_loaded", PNGImage::new(buffer, photo))
24
-
.unwrap();
25
}
26
Err(_) => {
27
println!("Cannot read image file: {:?}", base_dir);
28
}
29
}
30
});
31
-
}
···
1
+
use crate::util::cache::Cache;
2
use crate::PNGImage;
3
+
use std::{fs, io::Read, thread};
4
+
use tauri::{Emitter, State};
5
6
// Reads the PNG file and loads the image metadata from it
7
// then sends the metadata to the frontend, returns width, height, colour depth and so on... more info "pngmeta.rs"
8
#[tauri::command]
9
+
pub fn load_photo_meta(photo: &str, window: tauri::Window, cache: State<Cache> ) {
10
+
let photo_path = cache.get("photo-path".into());
11
let photo = photo.to_string();
12
13
thread::spawn(move || {
14
+
let base_dir = photo_path.unwrap() + "/" + &photo;
15
16
let file = fs::File::open(base_dir.clone());
17
···
20
let mut buffer = Vec::new();
21
22
let _out = file.read_to_end(&mut buffer);
23
+
let png = PNGImage::new(buffer, photo.clone());
24
+
25
+
if png.is_err(){
26
+
println!("Failed to load: {} => {}", base_dir, png.unwrap_err());
27
+
28
+
window.emit("photo_meta_loaded", PNGImage {
29
+
width: 1920,
30
+
height: 1080,
31
+
bit_depth: 0,
32
+
colour_type: 0,
33
+
compression_method: 0,
34
+
filter_method: 0,
35
+
interlace_method: 0,
36
+
metadata: "".into(),
37
+
error: true,
38
+
path: photo
39
+
}).unwrap();
40
+
} else{
41
+
println!("Loaded: {}", base_dir);
42
+
window.emit("photo_meta_loaded", png.unwrap()).unwrap();
43
+
}
44
}
45
Err(_) => {
46
println!("Cannot read image file: {:?}", base_dir);
47
}
48
}
49
});
50
+
}
+25
-21
src-tauri/src/frontend_calls/load_photos.rs
+25
-21
src-tauri/src/frontend_calls/load_photos.rs
···
1
-
use std::{ thread, fs, path };
2
-
use crate::util::get_photo_path::get_photo_path;
3
use regex::Regex;
4
-
use tauri::Emitter;
5
6
// Scans all files under the "Pictures/VRChat" path
7
// then sends the list of photos to the frontend
···
12
}
13
14
#[tauri::command]
15
-
pub fn load_photos(window: tauri::Window) {
16
-
thread::spawn(move || {
17
-
let base_dir = get_photo_path();
18
19
let mut photos: Vec<path::PathBuf> = Vec::new();
20
let mut size: usize = 0;
21
22
for folder in fs::read_dir(&base_dir).unwrap() {
23
let f = folder.unwrap();
24
25
if f.metadata().unwrap().is_dir() {
26
for photo in fs::read_dir(f.path()).unwrap() {
···
29
if p.metadata().unwrap().is_file() {
30
let fname = p.path();
31
32
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
33
-
let re2 = Regex::new(
34
-
r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap();
35
-
let re3 = Regex::new("VRChat_[0-9]{4}x[0-9]{4}_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}.png").unwrap();
36
-
37
let name = p.file_name();
38
let name = name.to_str().unwrap();
39
40
-
let re3_match = re3.is_match(name);
41
42
-
if re1.is_match(name)
43
-
|| re2.is_match(name)
44
-
|| re3_match
45
-
{
46
let path = fname.to_path_buf().clone();
47
let metadata = fs::metadata(&path).unwrap();
48
···
51
52
let pth = path.strip_prefix(&base_dir).unwrap().to_path_buf();
53
54
-
if re3_match{
55
photos.push(path::PathBuf::from("legacy://").join(pth));
56
-
} else{
57
photos.push(pth);
58
}
59
}
···
71
72
println!("Found {} photos", photos.len());
73
window
74
-
.emit("photos_loaded", PhotosLoadedResponse { photos, size })
75
-
.unwrap();
76
});
77
-
}
···
1
+
use crate::util::cache::Cache;
2
use regex::Regex;
3
+
use std::{fs, path, thread};
4
+
use tauri::{Emitter, State};
5
6
// Scans all files under the "Pictures/VRChat" path
7
// then sends the list of photos to the frontend
···
12
}
13
14
#[tauri::command]
15
+
pub fn load_photos(window: tauri::Window, cache: State<Cache> ) {
16
+
let base_dir = cache.get("photo-path".into()).unwrap();
17
18
+
thread::spawn(move || {
19
let mut photos: Vec<path::PathBuf> = Vec::new();
20
let mut size: usize = 0;
21
22
+
let re = Regex::new(r"^[0-9]{4}-[0-9]{2}$").unwrap();
23
+
24
for folder in fs::read_dir(&base_dir).unwrap() {
25
let f = folder.unwrap();
26
+
if !re.is_match(f.file_name().to_str().unwrap()){ continue; }
27
28
if f.metadata().unwrap().is_dir() {
29
for photo in fs::read_dir(f.path()).unwrap() {
···
32
if p.metadata().unwrap().is_file() {
33
let fname = p.path();
34
35
let name = p.file_name();
36
let name = name.to_str().unwrap();
37
38
+
let re1_match = // This is the current format used by VRChat
39
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}.png").unwrap().is_match(name) ||
40
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Player.png").unwrap().is_match(name) ||
41
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Environment.png").unwrap().is_match(name);
42
43
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
44
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(name);
45
+
46
+
let re3_match = // This is an old format VRChat used for naming photos
47
+
Regex::new(r"(?m)VRChat_[0-9]{3,4}x[0-9]{3,4}_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}.png").unwrap().is_match(name);
48
+
49
+
if re1_match || re2_match || re3_match {
50
let path = fname.to_path_buf().clone();
51
let metadata = fs::metadata(&path).unwrap();
52
···
55
56
let pth = path.strip_prefix(&base_dir).unwrap().to_path_buf();
57
58
+
if re3_match {
59
photos.push(path::PathBuf::from("legacy://").join(pth));
60
+
} else {
61
photos.push(pth);
62
}
63
}
···
75
76
println!("Found {} photos", photos.len());
77
window
78
+
.emit("photos_loaded", PhotosLoadedResponse { photos, size })
79
+
.unwrap();
80
});
81
+
}
+10
-11
src-tauri/src/frontend_calls/mod.rs
+10
-11
src-tauri/src/frontend_calls/mod.rs
···
1
pub mod close_splashscreen;
2
-
pub mod start_user_auth;
3
pub mod open_url;
4
-
pub mod open_folder;
5
-
pub mod get_user_photos_path;
6
pub mod start_with_win;
7
-
pub mod find_world_by_id;
8
-
pub mod sync_photos;
9
-
pub mod load_photos;
10
-
pub mod load_photo_meta;
11
-
pub mod change_final_path;
12
-
pub mod delete_photo;
13
-
pub mod relaunch;
14
-
pub mod config;
···
1
+
pub mod change_final_path;
2
pub mod close_splashscreen;
3
+
pub mod config;
4
+
pub mod delete_photo;
5
+
pub mod find_world_by_id;
6
+
pub mod get_os;
7
+
pub mod get_user_photos_path;
8
+
pub mod load_photo_meta;
9
+
pub mod load_photos;
10
+
pub mod open_folder;
11
pub mod open_url;
12
pub mod start_with_win;
13
+
pub mod copy_image;
+27
-5
src-tauri/src/frontend_calls/open_folder.rs
+27
-5
src-tauri/src/frontend_calls/open_folder.rs
···
2
3
#[tauri::command]
4
pub fn open_folder(url: &str) {
5
+
#[cfg(target_os = "windows")]
6
+
Command::new("explorer.exe").arg(format!("/select,{}", url)).spawn().unwrap();
7
+
8
+
#[cfg(target_os = "linux")]
9
+
{
10
+
let path = url.replace("\\", "/");
11
+
12
+
let mut dir_path: Vec<_> = path.split("/").collect();
13
+
dir_path.pop();
14
+
let dir_path = dir_path.join("/");
15
+
16
+
let commands = vec![
17
+
( "nautilus", vec![ path.clone() ] ),
18
+
( "nemo", vec![ path.clone() ] ),
19
+
( "thunar", vec![ path.clone() ] ),
20
+
( "caja", vec![ "--select".into(), path.clone() ] ),
21
+
( "pcmanfm-qt", vec![ dir_path.clone() ] ),
22
+
( "pcmanfm", vec![ dir_path.clone() ] ),
23
+
( "dolphin", vec![ "--select".into(), path.clone() ] ),
24
+
( "konqueror", vec![ "--select".into(), path.clone() ] ),
25
+
( "xdg-open", vec![ dir_path.clone() ] )
26
+
];
27
+
28
+
for command in commands{
29
+
if Command::new(command.0).args(command.1).spawn().is_ok() { break; } }
30
+
}
31
+
}
+2
-2
src-tauri/src/frontend_calls/open_url.rs
+2
-2
src-tauri/src/frontend_calls/open_url.rs
-16
src-tauri/src/frontend_calls/relaunch.rs
-16
src-tauri/src/frontend_calls/relaunch.rs
···
1
-
use std::process::{ self, Command };
2
-
3
-
#[tauri::command]
4
-
pub fn relaunch() {
5
-
#[cfg(windows)]{
6
-
let container_folder = dirs::config_dir()
7
-
.unwrap()
8
-
.join("PhazeDev\\VRChatPhotoManager");
9
-
10
-
let mut cmd = Command::new(&container_folder.join("./vrchat-photo-manager.exe"));
11
-
cmd.current_dir(container_folder);
12
-
cmd.spawn().expect("Cannot run updater");
13
-
14
-
process::exit(0);
15
-
}
16
-
}
···
-4
src-tauri/src/frontend_calls/start_user_auth.rs
-4
src-tauri/src/frontend_calls/start_user_auth.rs
+7
-5
src-tauri/src/frontend_calls/start_with_win.rs
+7
-5
src-tauri/src/frontend_calls/start_with_win.rs
···
1
-
use std::{ thread, fs };
2
3
#[cfg(windows)]
4
use mslnk::ShellLink;
···
13
if start {
14
let target = dirs::config_dir()
15
.unwrap()
16
-
.join("PhazeDev\\VRChatPhotoManager\\vrchat-photo-manager.exe");
17
18
match fs::metadata(&target) {
19
Ok(_) => {
20
-
let lnk = dirs::home_dir().unwrap().join("AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\VRChat Photo Manager.lnk");
21
22
let sl = ShellLink::new(target).unwrap();
23
sl.create_lnk(lnk).unwrap();
···
25
Err(_) => {}
26
}
27
} else {
28
-
let lnk = dirs::home_dir().unwrap().join("AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\VRChat Photo Manager.lnk");
29
fs::remove_file(lnk).unwrap();
30
}
31
});
32
} else {
33
panic!("Cannot start with windows... on not windows...");
34
}
35
-
}
···
1
+
use std::{ fs, thread };
2
3
#[cfg(windows)]
4
use mslnk::ShellLink;
···
13
if start {
14
let target = dirs::config_dir()
15
.unwrap()
16
+
.join("PhazeDev/VRChatPhotoManager/vrchat-photo-manager.exe");
17
18
match fs::metadata(&target) {
19
Ok(_) => {
20
+
let lnk = dirs::home_dir().unwrap().join("AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/VRChat Photo Manager.lnk");
21
22
let sl = ShellLink::new(target).unwrap();
23
sl.create_lnk(lnk).unwrap();
···
25
Err(_) => {}
26
}
27
} else {
28
+
let lnk = dirs::home_dir().unwrap().join(
29
+
"AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/VRChat Photo Manager.lnk",
30
+
);
31
fs::remove_file(lnk).unwrap();
32
}
33
});
34
} else {
35
panic!("Cannot start with windows... on not windows...");
36
}
37
+
}
-11
src-tauri/src/frontend_calls/sync_photos.rs
-11
src-tauri/src/frontend_calls/sync_photos.rs
···
1
-
use crate::photosync;
2
-
use std::thread;
3
-
use crate::util::get_photo_path::get_photo_path;
4
-
5
-
// On requested sync the photos to the cloud
6
-
#[tauri::command]
7
-
pub fn sync_photos(token: String, window: tauri::Window) {
8
-
thread::spawn(move || {
9
-
photosync::sync_photos(token, get_photo_path(), window);
10
-
});
11
-
}
···
+96
-44
src-tauri/src/main.rs
+96
-44
src-tauri/src/main.rs
···
1
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
2
3
-
mod photosync;
4
mod pngmeta;
5
mod worldscraper;
6
-
mod frontend_calls;
7
-
mod util;
8
9
use core::time;
10
use frontend_calls::*;
11
12
-
use notify::{EventKind, RecursiveMode, Watcher};
13
use pngmeta::PNGImage;
14
use regex::Regex;
15
-
use std::{ env, fs, thread, };
16
-
use tauri::{ Emitter, Manager, WindowEvent };
17
18
-
// TODO: Linux support
19
20
fn main() {
21
-
tauri_plugin_deep_link::prepare("uk.phaz.vrcpm");
22
23
// Double check the app has an install directory
24
let container_folder = dirs::config_dir()
25
.unwrap()
26
-
.join("PhazeDev\\VRChatPhotoManager");
27
28
match fs::metadata(&container_folder) {
29
Ok(meta) => {
···
32
}
33
}
34
Err(_) => {
35
fs::create_dir(&container_folder).unwrap();
36
}
37
}
38
39
let sync_lock_path = dirs::config_dir()
40
.unwrap()
41
-
.join("PhazeDev\\VRChatPhotoManager\\.sync_lock");
42
43
match fs::metadata(&sync_lock_path) {
44
Ok(_) => {
···
49
50
println!("Loading App...");
51
let photos_path = util::get_photo_path::get_photo_path();
52
53
match fs::metadata(&photos_path) {
54
Ok(_) => {}
···
56
fs::create_dir(&photos_path).unwrap();
57
}
58
};
59
-
60
-
util::check_updates::check_updates(container_folder);
61
62
// Listen for file updates, store each update in an mpsc channel and send to the frontend
63
let (sender, receiver) = std::sync::mpsc::channel();
64
let mut watcher = notify::recommended_watcher(move | res: Result<notify::Event, notify::Error> | {
65
-
// TODO: Fix this, why does it not work??
66
match res {
67
-
Ok(event) => {
68
match event.kind{
69
EventKind::Remove(_) => {
70
let path = event.paths.first().unwrap();
71
72
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
73
-
let re2 = Regex::new(r"(?m)/VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png/gm").unwrap();
74
75
-
if
76
-
re1.is_match(path.to_str().unwrap()) ||
77
-
re2.is_match(path.to_str().unwrap())
78
-
{
79
-
sender.send((2, path.clone().strip_prefix(util::get_photo_path::get_photo_path()).unwrap().to_path_buf())).unwrap();
80
}
81
},
82
EventKind::Create(_) => {
83
let path = event.paths.first().unwrap();
84
85
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
86
-
let re2 = Regex::new(r"(?m)/VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png/gm").unwrap();
87
88
-
if
89
-
re1.is_match(path.to_str().unwrap()) ||
90
-
re2.is_match(path.to_str().unwrap())
91
-
{
92
thread::sleep(time::Duration::from_millis(1000));
93
-
sender.send((1, path.clone().strip_prefix(util::get_photo_path::get_photo_path()).unwrap().to_path_buf())).unwrap();
94
}
95
},
96
_ => {}
···
100
}
101
}).unwrap();
102
103
watcher
104
-
.watch(&util::get_photo_path::get_photo_path(), RecursiveMode::Recursive)
105
.unwrap();
106
107
tauri::Builder::default()
108
.plugin(tauri_plugin_process::init())
109
.plugin(tauri_plugin_http::init())
110
.plugin(tauri_plugin_shell::init())
111
-
.register_asynchronous_uri_scheme_protocol("photo", | _ctx, req, res | {
112
-
util::handle_uri_proto::handle_uri_proto(req, res);
113
})
114
.on_window_event(|window, event| match event {
115
-
WindowEvent::CloseRequested { api, .. } => {
116
-
window.hide().unwrap();
117
-
api.prevent_close();
118
}
119
-
_ => {}
120
})
121
.setup(|app| {
122
let handle = app.handle();
123
-
124
util::setup_traymenu::setup_traymenu(handle);
125
-
util::setup_deeplink::setup_deeplink(handle);
126
127
-
// I hate this approach but i have no clue how else to do this...
128
-
// reads the mpsc channel and sends the events to the frontend
129
let window = app.get_webview_window("main").unwrap();
130
thread::spawn(move || {
131
thread::sleep(time::Duration::from_millis(100));
···
146
Ok(())
147
})
148
.invoke_handler(tauri::generate_handler![
149
-
start_user_auth::start_user_auth,
150
load_photos::load_photos,
151
close_splashscreen::close_splashscreen,
152
load_photo_meta::load_photo_meta,
···
154
open_url::open_url,
155
open_folder::open_folder,
156
find_world_by_id::find_world_by_id,
157
-
#[cfg(windows)] start_with_win::start_with_win,
158
get_user_photos_path::get_user_photos_path,
159
change_final_path::change_final_path,
160
-
sync_photos::sync_photos,
161
util::get_version::get_version,
162
-
relaunch::relaunch,
163
config::set_config_value_string,
164
config::get_config_value_string,
165
config::set_config_value_int,
166
-
config::get_config_value_int
167
])
168
.run(tauri::generate_context!())
169
.expect("error while running tauri application");
···
1
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
2
3
+
mod frontend_calls;
4
mod pngmeta;
5
+
mod util;
6
mod worldscraper;
7
8
use core::time;
9
+
use arboard::Clipboard;
10
use frontend_calls::*;
11
12
+
use notify::{ EventKind, RecursiveMode, Watcher };
13
use pngmeta::PNGImage;
14
use regex::Regex;
15
+
use util::{ cache::Cache, get_photo_path::get_photo_path };
16
+
use std::{ env, fs, sync::Mutex, thread };
17
+
use tauri::{ Emitter, Manager, State, WindowEvent };
18
19
+
use crate::frontend_calls::config::{get_config_value_string, Config};
20
21
fn main() {
22
+
#[cfg(target_os = "linux")]
23
+
std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1"); // Fix webkitgtk being shit
24
+
25
+
let cache = Cache::new();
26
27
// Double check the app has an install directory
28
let container_folder = dirs::config_dir()
29
.unwrap()
30
+
.join("PhazeDev/VRChatPhotoManager");
31
32
match fs::metadata(&container_folder) {
33
Ok(meta) => {
···
36
}
37
}
38
Err(_) => {
39
+
let folder = dirs::config_dir().unwrap();
40
+
match fs::metadata(&folder) {
41
+
Ok(meta) => {
42
+
if meta.is_file() {
43
+
panic!("Cannot launch app as the container path is a file not a directory");
44
+
}
45
+
}
46
+
Err(_) => {
47
+
fs::create_dir(&folder).unwrap();
48
+
}
49
+
}
50
+
51
+
let phaz_folder = dirs::config_dir().unwrap().join("PhazeDev");
52
+
match fs::metadata(&phaz_folder) {
53
+
Ok(meta) => {
54
+
if meta.is_file() {
55
+
panic!("Cannot launch app as the container path is a file not a directory");
56
+
}
57
+
}
58
+
Err(_) => {
59
+
fs::create_dir(&phaz_folder).unwrap();
60
+
}
61
+
}
62
+
63
fs::create_dir(&container_folder).unwrap();
64
}
65
}
66
67
let sync_lock_path = dirs::config_dir()
68
.unwrap()
69
+
.join("PhazeDev/VRChatPhotoManager/.sync_lock");
70
71
match fs::metadata(&sync_lock_path) {
72
Ok(_) => {
···
77
78
println!("Loading App...");
79
let photos_path = util::get_photo_path::get_photo_path();
80
+
println!("Loading photos from: {:#?}", &photos_path);
81
+
82
+
cache.insert("photo-path".into(), photos_path.to_str().unwrap().to_owned());
83
84
match fs::metadata(&photos_path) {
85
Ok(_) => {}
···
87
fs::create_dir(&photos_path).unwrap();
88
}
89
};
90
91
// Listen for file updates, store each update in an mpsc channel and send to the frontend
92
let (sender, receiver) = std::sync::mpsc::channel();
93
let mut watcher = notify::recommended_watcher(move | res: Result<notify::Event, notify::Error> | {
94
match res {
95
+
Ok(event) => {
96
match event.kind{
97
EventKind::Remove(_) => {
98
let path = event.paths.first().unwrap();
99
+
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
100
101
+
let re1_match = // This is the current format used by VRChat
102
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}.png").unwrap().is_match(&name) ||
103
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Player.png").unwrap().is_match(&name) ||
104
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Environment.png").unwrap().is_match(&name);
105
106
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
107
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(&name);
108
+
109
+
if re1_match || re2_match{
110
+
sender.send((2, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
111
}
112
},
113
EventKind::Create(_) => {
114
let path = event.paths.first().unwrap();
115
+
let name = path.file_name().unwrap().to_str().unwrap().to_owned();
116
117
+
let re1_match = // This is the current format used by VRChat
118
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}.png").unwrap().is_match(&name) ||
119
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Player.png").unwrap().is_match(&name) ||
120
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_Environment.png").unwrap().is_match(&name);
121
122
+
let re2_match = // This is the format VRCX uses if you enable renaming photos
123
+
Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{3,4}x[0-9]{3,4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap().is_match(&name);
124
+
125
+
if re1_match || re2_match{
126
thread::sleep(time::Duration::from_millis(1000));
127
+
sender.send((1, path.strip_prefix(get_photo_path()).unwrap().to_str().unwrap().to_owned())).unwrap();
128
}
129
},
130
_ => {}
···
134
}
135
}).unwrap();
136
137
+
println!("Watching dir: {:?}", util::get_photo_path::get_photo_path());
138
watcher
139
+
.watch(
140
+
&util::get_photo_path::get_photo_path(),
141
+
RecursiveMode::Recursive,
142
+
)
143
.unwrap();
144
145
+
let clipboard = Clipboard::new().unwrap();
146
+
147
tauri::Builder::default()
148
+
.plugin(tauri_plugin_single_instance::init(| app, _argv, _cwd | {
149
+
app.get_webview_window("main").unwrap().show().unwrap();
150
+
}))
151
.plugin(tauri_plugin_process::init())
152
.plugin(tauri_plugin_http::init())
153
.plugin(tauri_plugin_shell::init())
154
+
.register_asynchronous_uri_scheme_protocol("photo", |ctx, req, res| {
155
+
let cache: State<Cache> = ctx.app_handle().state();
156
+
util::handle_uri_proto::handle_uri_proto(req, res, cache);
157
})
158
.on_window_event(|window, event| match event {
159
+
WindowEvent::CloseRequested { api, .. } => {
160
+
let config: State<Config> = window.state();
161
+
162
+
let val = get_config_value_string("close-to-tray".into(), config.clone());
163
+
if val.is_none() || val.unwrap() != "true"{
164
+
config.save();
165
+
return;
166
}
167
+
168
+
window.hide().unwrap();
169
+
api.prevent_close();
170
+
}
171
+
_ => {}
172
})
173
+
.manage(Config::new())
174
+
.manage(cache)
175
+
.manage(Mutex::new(clipboard))
176
.setup(|app| {
177
let handle = app.handle();
178
util::setup_traymenu::setup_traymenu(handle);
179
180
+
// reads the file update mpsc channel and sends the events to the frontend
181
let window = app.get_webview_window("main").unwrap();
182
thread::spawn(move || {
183
thread::sleep(time::Duration::from_millis(100));
···
198
Ok(())
199
})
200
.invoke_handler(tauri::generate_handler![
201
load_photos::load_photos,
202
close_splashscreen::close_splashscreen,
203
load_photo_meta::load_photo_meta,
···
205
open_url::open_url,
206
open_folder::open_folder,
207
find_world_by_id::find_world_by_id,
208
+
#[cfg(windows)]
209
+
start_with_win::start_with_win,
210
get_user_photos_path::get_user_photos_path,
211
change_final_path::change_final_path,
212
util::get_version::get_version,
213
config::set_config_value_string,
214
config::get_config_value_string,
215
config::set_config_value_int,
216
+
config::get_config_value_int,
217
+
get_os::get_os,
218
+
copy_image::copy_image
219
])
220
.run(tauri::generate_context!())
221
.expect("error while running tauri application");
-264
src-tauri/src/photosync.rs
-264
src-tauri/src/photosync.rs
···
1
-
use regex::Regex;
2
-
use reqwest;
3
-
use serde::Serialize;
4
-
use serde_json::{Error, Value};
5
-
use std::{fs, io::Write, path, time::Duration};
6
-
use tauri::Emitter;
7
-
8
-
#[derive(Clone, Serialize)]
9
-
struct PhotoUploadMeta {
10
-
photos_uploading: usize,
11
-
photos_total: usize,
12
-
}
13
-
14
-
pub fn sync_photos(token: String, path: path::PathBuf, window: tauri::Window) {
15
-
let sync_lock_path = dirs::config_dir()
16
-
.unwrap()
17
-
.join("PhazeDev\\VRChatPhotoManager\\.sync_lock");
18
-
19
-
match fs::metadata(&sync_lock_path) {
20
-
Ok(_) => {
21
-
return;
22
-
}
23
-
Err(_) => {}
24
-
}
25
-
26
-
fs::write(&sync_lock_path, "Currently Syncing").unwrap();
27
-
28
-
match fs::metadata(&path) {
29
-
Ok(_) => {}
30
-
Err(_) => {
31
-
fs::create_dir(&path).unwrap();
32
-
}
33
-
};
34
-
35
-
let mut photos: Vec<String> = Vec::new();
36
-
37
-
for folder in fs::read_dir(&path).unwrap() {
38
-
let f = folder.unwrap();
39
-
40
-
if f.metadata().unwrap().is_dir() {
41
-
match fs::read_dir(f.path()) {
42
-
Ok(dir) => {
43
-
for photo in dir {
44
-
let p = photo.unwrap();
45
-
46
-
let re1 = Regex::new(r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}.png").unwrap();
47
-
let re2 = Regex::new(
48
-
r"(?m)VRChat_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.[0-9]{3}_[0-9]{4}x[0-9]{4}_wrld_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}.png").unwrap();
49
-
50
-
if re1.is_match(p.file_name().to_str().unwrap())
51
-
|| re2.is_match(p.file_name().to_str().unwrap())
52
-
{
53
-
photos.push(p.file_name().into_string().unwrap());
54
-
}
55
-
}
56
-
}
57
-
Err(_) => {}
58
-
}
59
-
}
60
-
}
61
-
62
-
let body = reqwest::blocking::get(format!(
63
-
"https://photos-cdn.phazed.xyz/api/v1/photos/exists?token={}",
64
-
&token
65
-
))
66
-
.unwrap()
67
-
.text()
68
-
.unwrap();
69
-
70
-
let body: Value = serde_json::from_str(&body).unwrap();
71
-
72
-
let mut photos_to_upload: Vec<String> = Vec::new();
73
-
let uploaded_photos = body["files"].as_array().unwrap();
74
-
75
-
let photos_len = photos.len();
76
-
77
-
for photo in &photos {
78
-
let mut found_photo = false;
79
-
80
-
for uploaded_photo in uploaded_photos {
81
-
if photo == uploaded_photo.as_str().unwrap() {
82
-
found_photo = true;
83
-
break;
84
-
}
85
-
}
86
-
87
-
if !found_photo {
88
-
photos_to_upload.push(photo.clone());
89
-
}
90
-
}
91
-
92
-
window
93
-
.emit(
94
-
"photos-upload-meta",
95
-
PhotoUploadMeta {
96
-
photos_uploading: photos_to_upload.len(),
97
-
photos_total: photos_len,
98
-
},
99
-
)
100
-
.unwrap();
101
-
102
-
let mut photos_left = photos_to_upload.len();
103
-
104
-
let client = reqwest::blocking::Client::new();
105
-
106
-
loop {
107
-
match photos_to_upload.pop() {
108
-
Some(photo) => {
109
-
let folder_name = photo.clone().replace("VRChat_", "");
110
-
let mut folder_name = folder_name.split("-");
111
-
let folder_name = format!(
112
-
"{}-{}",
113
-
folder_name.nth(0).unwrap(),
114
-
folder_name.nth(0).unwrap()
115
-
);
116
-
117
-
let full_path = format!("{}\\{}\\{}", path.to_str().unwrap(), folder_name, photo);
118
-
let file = fs::File::open(full_path);
119
-
120
-
match file {
121
-
Ok(file) => {
122
-
let res = client
123
-
.put(format!(
124
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}",
125
-
&token
126
-
))
127
-
.header("Content-Type", "image/png")
128
-
.header("filename", photo)
129
-
.body(file)
130
-
.timeout(Duration::from_secs(120))
131
-
.send()
132
-
.unwrap()
133
-
.text()
134
-
.unwrap();
135
-
136
-
let res: Result<Value, Error> = serde_json::from_str(&res);
137
-
138
-
match res {
139
-
Ok(res) => {
140
-
if !res["ok"].as_bool().unwrap() {
141
-
println!(
142
-
"Failed to upload: {}",
143
-
res["error"].as_str().unwrap()
144
-
);
145
-
146
-
window
147
-
.emit("sync-failed", res["error"].as_str().unwrap())
148
-
.unwrap();
149
-
150
-
break;
151
-
}
152
-
}
153
-
Err(err) => {
154
-
dbg!(err);
155
-
}
156
-
}
157
-
}
158
-
Err(_) => {}
159
-
}
160
-
161
-
photos_left -= 1;
162
-
window
163
-
.emit(
164
-
"photos-upload-meta",
165
-
PhotoUploadMeta {
166
-
photos_uploading: photos_left,
167
-
photos_total: photos_len,
168
-
},
169
-
)
170
-
.unwrap();
171
-
}
172
-
None => {
173
-
break;
174
-
}
175
-
}
176
-
}
177
-
178
-
println!("Finished Uploading.");
179
-
let mut photos_to_download: Vec<String> = Vec::new();
180
-
181
-
for photo in uploaded_photos {
182
-
let mut found_photo = false;
183
-
let photo = photo.as_str().unwrap().to_string();
184
-
185
-
for uploaded_photo in &photos {
186
-
if &photo == uploaded_photo {
187
-
found_photo = true;
188
-
break;
189
-
}
190
-
}
191
-
192
-
if !found_photo {
193
-
photos_to_download.push(photo);
194
-
}
195
-
}
196
-
197
-
photos_to_download.reverse();
198
-
199
-
let photos_len = photos_to_download.len();
200
-
let mut photos_left = photos_to_download.len();
201
-
202
-
loop {
203
-
match photos_to_download.pop() {
204
-
Some(photo) => {
205
-
let folder_name = photo.clone().replace("VRChat_", "");
206
-
let mut folder_name = folder_name.split("-");
207
-
let folder_name = format!(
208
-
"{}-{}",
209
-
folder_name.nth(0).unwrap(),
210
-
folder_name.nth(0).unwrap()
211
-
);
212
-
213
-
let full_path = format!("{}\\{}\\{}", path.to_str().unwrap(), folder_name, photo);
214
-
215
-
let res = client
216
-
.get(format!(
217
-
"https://photos-cdn.phazed.xyz/api/v1/photos?token={}&photo={}",
218
-
&token, &photo
219
-
))
220
-
.timeout(Duration::from_secs(120))
221
-
.send()
222
-
.unwrap()
223
-
.bytes();
224
-
225
-
match res {
226
-
Ok(res) => {
227
-
let folder_path = format!("{}\\{}", path.to_str().unwrap(), folder_name);
228
-
match fs::metadata(&folder_path) {
229
-
Ok(_) => {}
230
-
Err(_) => {
231
-
fs::create_dir(folder_path).unwrap();
232
-
}
233
-
}
234
-
235
-
let mut file = fs::File::create(full_path).unwrap();
236
-
file.write_all(&res).unwrap();
237
-
}
238
-
Err(err) => {
239
-
dbg!(err);
240
-
}
241
-
}
242
-
243
-
photos_left -= 1;
244
-
window
245
-
.emit(
246
-
"photos-download-meta",
247
-
PhotoUploadMeta {
248
-
photos_uploading: photos_left,
249
-
photos_total: photos_len,
250
-
},
251
-
)
252
-
.unwrap();
253
-
}
254
-
None => {
255
-
break;
256
-
}
257
-
}
258
-
}
259
-
260
-
println!("Finished Downloading.");
261
-
262
-
fs::remove_file(&sync_lock_path).unwrap();
263
-
window.emit("sync-finished", "h").unwrap();
264
-
}
···
+32
-52
src-tauri/src/pngmeta.rs
+32
-52
src-tauri/src/pngmeta.rs
···
1
-
use serde::ser::{Serialize, SerializeStruct, Serializer};
2
use std::str;
3
4
-
#[derive(Clone)]
5
pub struct PNGImage {
6
-
width: u32,
7
-
height: u32,
8
-
bit_depth: u8,
9
-
colour_type: u8,
10
-
compression_method: u8,
11
-
filter_method: u8,
12
-
interlace_method: u8,
13
-
metadata: String,
14
-
path: String,
15
}
16
17
impl PNGImage {
18
-
pub fn new(buff: Vec<u8>, path: String) -> PNGImage {
19
let mut img = PNGImage {
20
width: 0,
21
height: 0,
···
26
interlace_method: 0,
27
metadata: "".to_string(),
28
path: path,
29
};
30
31
-
if buff[0] != 0x89
32
-
|| buff[1] != 0x50
33
-
|| buff[2] != 0x4E
34
-
|| buff[3] != 0x47
35
-
|| buff[4] != 0x0D
36
-
|| buff[5] != 0x0A
37
-
|| buff[6] != 0x1A
38
-
|| buff[7] != 0x0A
39
-
{
40
-
panic!("Image is not a PNG file");
41
-
}
42
-
43
img.read_png_chunk(8, buff);
44
-
img
45
}
46
47
fn read_png_chunk(&mut self, start_byte: usize, buff: Vec<u8>) {
···
52
53
match chunk_type {
54
"IHDR" => {
55
-
self.width =
56
-
u32::from_le_bytes([data_buff[11], data_buff[10], data_buff[9], data_buff[8]]);
57
58
-
self.height = u32::from_le_bytes([
59
-
data_buff[15],
60
-
data_buff[14],
61
-
data_buff[13],
62
-
data_buff[12],
63
-
]);
64
65
self.bit_depth = data_buff[16];
66
self.colour_type = data_buff[17];
···
86
}
87
}
88
}
89
-
90
-
impl Serialize for PNGImage {
91
-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
92
-
where
93
-
S: Serializer,
94
-
{
95
-
let mut s = serializer.serialize_struct("PNGImage", 7)?;
96
-
s.serialize_field("width", &self.width)?;
97
-
s.serialize_field("height", &self.height)?;
98
-
s.serialize_field("bit_depth", &self.bit_depth)?;
99
-
s.serialize_field("colour_type", &self.colour_type)?;
100
-
s.serialize_field("compression_method", &self.compression_method)?;
101
-
s.serialize_field("filter_method", &self.filter_method)?;
102
-
s.serialize_field("interlace_method", &self.interlace_method)?;
103
-
s.serialize_field("metadata", &self.metadata)?;
104
-
s.serialize_field("path", &self.path)?;
105
-
s.end()
106
-
}
107
-
}
···
1
use std::str;
2
3
+
use serde::Serialize;
4
+
5
+
#[derive(Clone, Debug, Serialize)]
6
pub struct PNGImage {
7
+
pub width: u32,
8
+
pub height: u32,
9
+
pub bit_depth: u8,
10
+
pub colour_type: u8,
11
+
pub compression_method: u8,
12
+
pub filter_method: u8,
13
+
pub interlace_method: u8,
14
+
pub metadata: String,
15
+
pub path: String,
16
+
pub error: bool
17
}
18
19
impl PNGImage {
20
+
pub fn new(buff: Vec<u8>, path: String) -> Result<PNGImage, &'static str> {
21
+
if buff[0] != 0x89
22
+
|| buff[1] != 0x50
23
+
|| buff[2] != 0x4E
24
+
|| buff[3] != 0x47
25
+
|| buff[4] != 0x0D
26
+
|| buff[5] != 0x0A
27
+
|| buff[6] != 0x1A
28
+
|| buff[7] != 0x0A
29
+
{
30
+
dbg!(path);
31
+
return Err("Image is not a PNG file");
32
+
}
33
+
34
let mut img = PNGImage {
35
width: 0,
36
height: 0,
···
41
interlace_method: 0,
42
metadata: "".to_string(),
43
path: path,
44
+
error: false
45
};
46
47
img.read_png_chunk(8, buff);
48
+
Ok(img)
49
}
50
51
fn read_png_chunk(&mut self, start_byte: usize, buff: Vec<u8>) {
···
56
57
match chunk_type {
58
"IHDR" => {
59
+
self.width = u32::from_le_bytes([data_buff[11], data_buff[10], data_buff[9], data_buff[8]]);
60
61
+
self.height =
62
+
u32::from_le_bytes([data_buff[15], data_buff[14], data_buff[13], data_buff[12]]);
63
64
self.bit_depth = data_buff[16];
65
self.colour_type = data_buff[17];
···
85
}
86
}
87
}
+28
src-tauri/src/util/cache.rs
+28
src-tauri/src/util/cache.rs
···
···
1
+
use std::{ collections::HashMap, sync::Mutex };
2
+
3
+
pub struct Cache{
4
+
store: Mutex<HashMap<String, String>>,
5
+
}
6
+
7
+
impl Cache{
8
+
pub fn new() -> Self{
9
+
Cache {
10
+
store: Mutex::new(HashMap::new())
11
+
}
12
+
}
13
+
14
+
pub fn insert( &self, key: String, value: String ){
15
+
self.store.lock().unwrap().insert(key, value);
16
+
}
17
+
18
+
pub fn get( &self, key: String ) -> Option<String>{
19
+
let store = self.store.lock().unwrap();
20
+
let val = store.get(&key);
21
+
22
+
if val.is_none(){
23
+
None
24
+
} else{
25
+
Some(val.unwrap().clone())
26
+
}
27
+
}
28
+
}
-51
src-tauri/src/util/check_updates.rs
-51
src-tauri/src/util/check_updates.rs
···
1
-
use std::{ env, fs, path, process::{ self, Command }, thread, time::Duration };
2
-
use crate::util;
3
-
4
-
pub fn check_updates( container_folder: path::PathBuf ){
5
-
let args: Vec<String> = env::args().collect();
6
-
7
-
let mut update = true;
8
-
for arg in args {
9
-
if arg == "--no-update" {
10
-
update = false;
11
-
}
12
-
}
13
-
14
-
if update {
15
-
// Auto update
16
-
thread::spawn(move || {
17
-
let client = reqwest::blocking::Client::new();
18
-
19
-
let latest_version = client
20
-
.get("https://cdn.phaz.uk/vrcpm/latest")
21
-
.send()
22
-
.unwrap()
23
-
.text()
24
-
.unwrap();
25
-
26
-
if latest_version != util::get_version::get_version() {
27
-
match fs::metadata(&container_folder.join("./updater.exe")) {
28
-
Ok(_) => {}
29
-
Err(_) => {
30
-
let latest_installer = client
31
-
.get("https://cdn.phaz.uk/vrcpm/vrcpm-installer.exe")
32
-
.timeout(Duration::from_secs(120))
33
-
.send()
34
-
.unwrap()
35
-
.bytes()
36
-
.unwrap();
37
-
38
-
fs::write(&container_folder.join("./updater.exe"), latest_installer)
39
-
.unwrap();
40
-
}
41
-
}
42
-
43
-
let mut cmd = Command::new(&container_folder.join("./updater.exe"));
44
-
cmd.current_dir(container_folder);
45
-
cmd.spawn().expect("Cannot run updater");
46
-
47
-
process::exit(0);
48
-
}
49
-
});
50
-
}
51
-
}
···
+12
-13
src-tauri/src/util/get_photo_path.rs
+12
-13
src-tauri/src/util/get_photo_path.rs
···
3
pub fn get_photo_path() -> path::PathBuf {
4
let config_path = dirs::config_dir()
5
.unwrap()
6
-
.join("PhazeDev\\VRChatPhotoManager\\.photos_path");
7
8
match fs::read_to_string(config_path) {
9
Ok(path) => {
10
-
if path
11
-
!= dirs::picture_dir()
12
-
.unwrap()
13
-
.join("VRChat")
14
-
.to_str()
15
-
.unwrap()
16
-
.to_owned()
17
-
{
18
-
path::PathBuf::from(path)
19
-
} else {
20
dirs::picture_dir().unwrap().join("VRChat")
21
}
22
}
23
-
Err(_) => dirs::picture_dir().unwrap().join("VRChat"),
24
}
25
-
}
···
3
pub fn get_photo_path() -> path::PathBuf {
4
let config_path = dirs::config_dir()
5
.unwrap()
6
+
.join("PhazeDev/VRChatPhotoManager/.photos_path");
7
8
match fs::read_to_string(config_path) {
9
Ok(path) => {
10
+
let p = path::PathBuf::from(path);
11
+
12
+
if fs::exists(&p).unwrap(){
13
+
p
14
+
} else{
15
dirs::picture_dir().unwrap().join("VRChat")
16
}
17
+
},
18
+
Err(_) => {
19
+
let p = dirs::picture_dir().unwrap().join("VRChat");
20
+
21
+
p
22
}
23
}
24
+
}
+1
-1
src-tauri/src/util/get_version.rs
+1
-1
src-tauri/src/util/get_version.rs
+65
-46
src-tauri/src/util/handle_uri_proto.rs
+65
-46
src-tauri/src/util/handle_uri_proto.rs
···
1
-
use std::{ fs, io::{ BufReader, Read }, thread };
2
-
use fast_image_resize::{ images::Image, IntoImageView, ResizeOptions, Resizer };
3
-
use image::{ codecs::png::{ PngDecoder, PngEncoder }, DynamicImage, ImageEncoder };
4
-
use tauri::{ http::{ Request, Response }, UriSchemeResponder };
5
6
-
pub fn handle_uri_proto( request: Request<Vec<u8>>, responder: UriSchemeResponder ){
7
thread::spawn(move || {
8
// Loads the requested image file, sends data back to the user
9
let uri = request.uri();
···
20
return;
21
}
22
23
-
// TODO: Only accept files that are in the vrchat photos folder
24
-
// Slightly more complex than originally thought, need to find a way to cache the VRC photos path
25
-
// since i need to be able to load lots of photos very quickly. This shouldn't be a security issue
26
-
// because tauri should only let the frontend of VRCPhotoManager read files throught this. Only
27
-
// becomes a potential issue if the frontend gets modified or there's an issue with tauri.
28
29
-
let path = uri.path().split_at(1).1;
30
let file = fs::File::open(path);
31
32
match file {
33
-
Ok(mut file) => {
34
-
match uri.query().unwrap(){
35
-
"downscale" => {
36
-
let decoder = PngDecoder::new(BufReader::new(&file)).unwrap();
37
-
let src_image = DynamicImage::from_decoder(decoder).unwrap();
38
39
-
let size_multiplier: f32 = 200.0 / src_image.height() as f32;
40
41
-
let dst_width = (src_image.width() as f32 * size_multiplier).floor() as u32;
42
-
let dst_height: u32 = 200;
43
44
-
let mut dst_image = Image::new(dst_width, dst_height, src_image.pixel_type().unwrap());
45
-
let mut resizer = Resizer::new();
46
47
-
let opts = ResizeOptions::new()
48
-
.resize_alg(fast_image_resize::ResizeAlg::Nearest);
49
50
-
resizer.resize(&src_image, &mut dst_image, Some(&opts)).unwrap();
51
52
-
let mut buf = Vec::new();
53
-
let encoder = PngEncoder::new(&mut buf);
54
55
-
encoder.write_image(dst_image.buffer(), dst_width, dst_height, src_image.color().into()).unwrap();
56
57
-
let res = Response::builder()
58
-
.status(200)
59
-
.header("Access-Control-Allow-Origin", "*")
60
-
.body(buf)
61
-
.unwrap();
62
63
-
responder.respond(res);
64
-
},
65
-
_ => {
66
-
let mut buf = Vec::new();
67
-
file.read_to_end(&mut buf).unwrap();
68
69
-
let res = Response::builder()
70
-
.status(200)
71
-
.header("Access-Control-Allow-Origin", "*")
72
-
.body(buf)
73
-
.unwrap();
74
75
-
responder.respond(res);
76
-
}
77
}
78
-
}
79
Err(_) => {
80
responder.respond(
81
Response::builder()
···
87
}
88
}
89
});
90
-
}
···
1
+
use fast_image_resize::{images::Image, IntoImageView, ResizeOptions, Resizer};
2
+
use image::{
3
+
codecs::png::{PngDecoder, PngEncoder},
4
+
DynamicImage, ImageEncoder,
5
+
};
6
+
use std::{
7
+
fs,
8
+
io::{BufReader, Read},
9
+
thread,
10
+
};
11
+
use tauri::{
12
+
http::{Request, Response}, State, UriSchemeResponder
13
+
};
14
+
15
+
use super::cache::Cache;
16
17
+
pub fn handle_uri_proto( request: Request<Vec<u8>>, responder: UriSchemeResponder, cache: State<Cache> ) {
18
+
let photo_path = cache.get("photo-path".into());
19
+
20
thread::spawn(move || {
21
// Loads the requested image file, sends data back to the user
22
let uri = request.uri();
···
33
return;
34
}
35
36
+
#[cfg(windows)]
37
+
let path = uri.path().split_at(1).1;
38
39
+
#[cfg(unix)]
40
+
let path = uri.path();
41
+
42
+
let path = format!("{}/{}", photo_path.unwrap(), path);
43
let file = fs::File::open(path);
44
45
match file {
46
+
Ok(mut file) => match uri.query().unwrap() {
47
+
"downscale" => {
48
+
let decoder = PngDecoder::new(BufReader::new(&file)).unwrap();
49
+
let src_image = DynamicImage::from_decoder(decoder).unwrap();
50
51
+
let size_multiplier: f32 = 200.0 / src_image.height() as f32;
52
53
+
let dst_width = (src_image.width() as f32 * size_multiplier).floor() as u32;
54
+
let dst_height: u32 = 200;
55
56
+
let mut dst_image = Image::new(dst_width, dst_height, src_image.pixel_type().unwrap());
57
+
let mut resizer = Resizer::new();
58
59
+
let opts = ResizeOptions::new().resize_alg(fast_image_resize::ResizeAlg::Convolution(fast_image_resize::FilterType::Bilinear));
60
61
+
resizer
62
+
.resize(&src_image, &mut dst_image, Some(&opts))
63
+
.unwrap();
64
65
+
let mut buf = Vec::new();
66
+
let encoder = PngEncoder::new(&mut buf);
67
68
+
encoder
69
+
.write_image(
70
+
dst_image.buffer(),
71
+
dst_width,
72
+
dst_height,
73
+
src_image.color().into(),
74
+
)
75
+
.unwrap();
76
77
+
let res = Response::builder()
78
+
.status(200)
79
+
.header("Access-Control-Allow-Origin", "*")
80
+
.body(buf)
81
+
.unwrap();
82
83
+
responder.respond(res);
84
+
}
85
+
_ => {
86
+
let mut buf = Vec::new();
87
+
file.read_to_end(&mut buf).unwrap();
88
89
+
let res = Response::builder()
90
+
.status(200)
91
+
.header("Access-Control-Allow-Origin", "*")
92
+
.body(buf)
93
+
.unwrap();
94
95
+
responder.respond(res);
96
}
97
+
},
98
Err(_) => {
99
responder.respond(
100
Response::builder()
···
106
}
107
}
108
});
109
+
}
+2
-3
src-tauri/src/util/mod.rs
+2
-3
src-tauri/src/util/mod.rs
-28
src-tauri/src/util/setup_deeplink.rs
-28
src-tauri/src/util/setup_deeplink.rs
···
1
-
use tauri::{ AppHandle, Emitter };
2
-
3
-
pub fn setup_deeplink( handle: &AppHandle ){
4
-
let handle = handle.clone();
5
-
6
-
// Register "deep link" for authentication via vrcpm://
7
-
tauri_plugin_deep_link::register("vrcpm", move |request| {
8
-
let mut command: u8 = 0;
9
-
let mut index: u8 = 0;
10
-
11
-
for part in request.split('/').into_iter() {
12
-
index += 1;
13
-
14
-
if index == 3 && part == "auth-callback" {
15
-
command = 1;
16
-
}
17
-
18
-
if index == 3 && part == "auth-denied" {
19
-
handle.emit("auth-denied", "null").unwrap();
20
-
}
21
-
22
-
if index == 4 && command == 1 {
23
-
handle.emit("auth-callback", part).unwrap();
24
-
}
25
-
}
26
-
})
27
-
.unwrap();
28
-
}
···
+17
-52
src-tauri/src/worldscraper.rs
+17
-52
src-tauri/src/worldscraper.rs
···
1
use serde::ser::{Serialize, SerializeStruct, Serializer};
2
-
use serde_json::json;
3
4
#[derive(Clone)]
5
pub struct World {
···
12
max_users: u64,
13
visits: u64,
14
favourites: u64,
15
-
tags: String,
16
-
from: String,
17
-
from_site: String,
18
found: bool,
19
}
20
···
32
max_users: 0,
33
visits: 0,
34
favourites: 0,
35
-
tags: "".into(),
36
-
from: "https://vrclist.com/worlds/".into(),
37
-
from_site: "vrclist.com".into(),
38
found: false,
39
};
40
41
let client = reqwest::blocking::Client::new();
42
43
-
let world_id_str = world_id.to_owned();
44
-
let fixed_id_req = client
45
-
.post("https://api.vrclist.com/worlds/id-convert")
46
-
.header("Content-Type", "application/json")
47
.header("User-Agent", "VRChat-Photo-Manager-Rust/0.0.1")
48
-
.body(json!({ "world_id": world_id_str }).to_string())
49
.send()
50
-
.unwrap()
51
-
.text()
52
.unwrap();
53
54
-
if &fixed_id_req == "" {
55
-
println!("World {} not found", world_id);
56
-
return world;
57
-
}
58
-
59
world.found = true;
60
61
-
let fixed_id: serde_json::Value = serde_json::from_str(&fixed_id_req).unwrap();
62
-
world.from = format!("https://vrclist.com/worlds/{}", fixed_id["id"].to_string());
63
-
64
-
let world_data = client
65
-
.post("https://api.vrclist.com/worlds/single")
66
-
.header("Content-Type", "application/json")
67
-
.header("User-Agent", "VRChat-Photo-Manager-Rust/0.0.1")
68
-
.body(json!({ "id": fixed_id["id"].to_string() }).to_string())
69
-
.send()
70
-
.unwrap()
71
-
.text()
72
-
.unwrap();
73
-
74
let world_data: serde_json::Value = serde_json::from_str(&world_data).unwrap();
75
76
-
world.name = world_data["name"].to_string();
77
-
world.author = world_data["authorName"].to_string();
78
-
world.author_id = world_data["authorId"].to_string();
79
-
world.desc = world_data["description"].to_string();
80
-
world.img = world_data["imageUrl"].to_string();
81
-
world.tags = world_data["tags"].to_string();
82
-
83
-
match world_data["vrchat_visits"].as_u64() {
84
-
Some(visits) => world.visits = visits,
85
-
None => {}
86
-
}
87
-
88
-
match world_data["capacity"].as_u64() {
89
-
Some(cap) => {
90
-
world.max_users = cap;
91
-
}
92
-
None => {}
93
-
}
94
95
println!("Fetched world data for {}", &world_id);
96
world
···
113
s.serialize_field("visits", &self.visits)?;
114
s.serialize_field("favourites", &self.favourites)?;
115
s.serialize_field("tags", &self.tags)?;
116
-
s.serialize_field("from", &self.from)?;
117
-
s.serialize_field("fromSite", &self.from_site)?;
118
s.serialize_field("found", &self.found)?;
119
120
s.end()
···
1
use serde::ser::{Serialize, SerializeStruct, Serializer};
2
3
#[derive(Clone)]
4
pub struct World {
···
11
max_users: u64,
12
visits: u64,
13
favourites: u64,
14
+
tags: Vec<String>,
15
found: bool,
16
}
17
···
29
max_users: 0,
30
visits: 0,
31
favourites: 0,
32
+
tags: vec!["".into()],
33
found: false,
34
};
35
36
let client = reqwest::blocking::Client::new();
37
38
+
let world_data = client
39
+
.get(format!("https://api.vrchat.cloud/api/1/worlds/{}", world_id))
40
.header("User-Agent", "VRChat-Photo-Manager-Rust/0.0.1")
41
.send()
42
.unwrap();
43
44
+
if world_data.status() != 200{ return world; }
45
world.found = true;
46
47
+
let world_data = world_data.text().unwrap();
48
let world_data: serde_json::Value = serde_json::from_str(&world_data).unwrap();
49
50
+
world.name = world_data["name"].as_str().unwrap().to_owned();
51
+
world.author = world_data["authorName"].as_str().unwrap().to_owned();
52
+
world.author_id = world_data["authorId"].as_str().unwrap().to_owned();
53
+
world.desc = world_data["description"].as_str().unwrap().to_owned();
54
+
world.img = world_data["imageUrl"].as_str().unwrap().to_owned();
55
+
world.tags = world_data["tags"].as_array().unwrap().clone().iter()
56
+
.map(| item | item.as_str().unwrap().to_owned())
57
+
.collect();
58
+
world.visits = world_data["visits"].as_u64().unwrap();
59
+
world.favourites = world_data["favorites"].as_u64().unwrap();
60
+
world.max_users = world_data["capacity"].as_u64().unwrap();
61
62
println!("Fetched world data for {}", &world_id);
63
world
···
80
s.serialize_field("visits", &self.visits)?;
81
s.serialize_field("favourites", &self.favourites)?;
82
s.serialize_field("tags", &self.tags)?;
83
s.serialize_field("found", &self.found)?;
84
85
s.end()
+7
-6
src-tauri/tauri.conf.json
+7
-6
src-tauri/tauri.conf.json
···
15
"icons/icon.ico"
16
]
17
},
18
-
"productName": "vrchat-photo-manager",
19
"version": "0.0.1",
20
"identifier": "uk.phaz.vrcpm",
21
-
"plugins": {},
22
"app": {
23
"security": {
24
-
"csp": "https://photos.phazed.xyz; connect-src ipc: http://ipc.localhost"
25
},
26
"windows": [
27
{
···
33
"minWidth": 600,
34
"minHeight": 400,
35
"visible": false,
36
-
"decorations": false,
37
-
"transparent": true,
38
-
"titleBarStyle": "Transparent"
39
}
40
]
41
}
···
15
"icons/icon.ico"
16
]
17
},
18
+
"productName": "VRChat Photo Manager",
19
"version": "0.0.1",
20
"identifier": "uk.phaz.vrcpm",
21
+
"plugins": {
22
+
"shell": { "open": true }
23
+
},
24
"app": {
25
"security": {
26
+
"csp": "connect-src https://api.github.com ipc: http://ipc.localhost"
27
},
28
"windows": [
29
{
···
35
"minWidth": 600,
36
"minHeight": 400,
37
"visible": false,
38
+
"decorations": true,
39
+
"transparent": true
40
}
41
]
42
}
+10
-2
vite.config.ts
+10
-2
vite.config.ts
···
1
+
import { defineConfig, Plugin } from "vite";
2
import solid from "vite-plugin-solid";
3
4
+
const fullReloadAlways: Plugin = {
5
+
name: 'full-reload',
6
+
handleHotUpdate({ server }) {
7
+
server.ws.send({ type: "full-reload" });
8
+
return [];
9
+
},
10
+
};
11
+
12
// https://vitejs.dev/config/
13
export default defineConfig(async () => ({
14
+
plugins: [solid(), fullReloadAlways],
15
16
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
17
//