Compare commits
2328 Commits
v1.9.0
...
bug/withDe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
407dad8c7f | ||
|
|
9f944506e0 | ||
|
|
114c37645a | ||
|
|
8f9bb621b8 | ||
|
|
48a6c87d9d | ||
|
|
f28b55dd4d | ||
|
|
8a8b4b0245 | ||
|
|
0afbc57012 | ||
|
|
c651f2440f | ||
|
|
8c05084994 | ||
|
|
6813be47f0 | ||
|
|
30327e8d27 | ||
|
|
8096ed300d | ||
|
|
4a8efbf426 | ||
|
|
7a6d117a76 | ||
|
|
73568043f1 | ||
|
|
76a3b35e9e | ||
|
|
feb1991da3 | ||
|
|
2bee4342b8 | ||
|
|
7e9fc486f2 | ||
|
|
1d99b79926 | ||
|
|
eb8347f942 | ||
|
|
d383b48916 | ||
|
|
e88c40db0a | ||
|
|
f228f37bb8 | ||
|
|
503a54fc5e | ||
|
|
48b21aa0bf | ||
|
|
ca40cc5271 | ||
|
|
1c641c6d11 | ||
|
|
32b362f9cc | ||
|
|
103ef8ee0d | ||
|
|
4a6239e017 | ||
|
|
1f637edd36 | ||
|
|
25878b9bb1 | ||
|
|
521a96bffb | ||
|
|
ead1f3954f | ||
|
|
0ac84b58e3 | ||
|
|
a2f1e37ad2 | ||
|
|
373343fea1 | ||
|
|
2ef99026e5 | ||
|
|
29aff9accc | ||
|
|
7d7f628f6e | ||
|
|
8f6cf07e82 | ||
|
|
245b8a6e3c | ||
|
|
a967100be8 | ||
|
|
a9bca8e1f8 | ||
|
|
7de8e6be5e | ||
|
|
6b70a39f02 | ||
|
|
d538d722d7 | ||
|
|
13bd831c5f | ||
|
|
9b297ba882 | ||
|
|
be6c802745 | ||
|
|
564cce2462 | ||
|
|
8f166b8b3f | ||
|
|
fe7192ae61 | ||
|
|
6d54f21c1e | ||
|
|
87f8f61163 | ||
|
|
510ba376e5 | ||
|
|
40c88b3e35 | ||
|
|
7c65da4cf3 | ||
|
|
0f07c47e9f | ||
|
|
17c45fee11 | ||
|
|
a63c0817cc | ||
|
|
68aa54bdb7 | ||
|
|
41cb6eb190 | ||
|
|
61e5a48b02 | ||
|
|
9e4d7df7d0 | ||
|
|
e83dbc2e5c | ||
|
|
03ab6a208d | ||
|
|
dbd39ba0d8 | ||
|
|
136b1ff63b | ||
|
|
69a6207a4d | ||
|
|
9e74a8c2e7 | ||
|
|
ad76d100ee | ||
|
|
235968073a | ||
|
|
ad7b8da37e | ||
|
|
7d3e1a700f | ||
|
|
d3a1898dad | ||
|
|
45e508fc36 | ||
|
|
8edad7ded7 | ||
|
|
75e1adb7b3 | ||
|
|
22ac13f2f0 | ||
|
|
7f0246eb47 | ||
|
|
5f0800760f | ||
|
|
6db99c9e37 | ||
|
|
3b2cabd3f3 | ||
|
|
b0dd6b0bd6 | ||
|
|
874b846e60 | ||
|
|
dbe2525c6f | ||
|
|
afd414fa3f | ||
|
|
94763dcb31 | ||
|
|
6314740f46 | ||
|
|
d7332120e3 | ||
|
|
8c74fe9925 | ||
|
|
c74ddeb530 | ||
|
|
e31c0a9d02 | ||
|
|
d9e5d4aec5 | ||
|
|
c1ee8f5dd0 | ||
|
|
dd59de3de0 | ||
|
|
511a3c55f3 | ||
|
|
c9021ab3ca | ||
|
|
a765c4a7cc | ||
|
|
ea99732474 | ||
|
|
6c64ffe833 | ||
|
|
5fa6c6cdb3 | ||
|
|
d94759870e | ||
|
|
f0a6fc641a | ||
|
|
7ba00bee0b | ||
|
|
dc2bdf81b9 | ||
|
|
187a30abac | ||
|
|
5b824ccb17 | ||
|
|
3bdf2baf97 | ||
|
|
9af8a24a89 | ||
|
|
57c4759bdb | ||
|
|
d9d7261bc5 | ||
|
|
a12315d81a | ||
|
|
9f0956556f | ||
|
|
748318d44e | ||
|
|
ff3062cdfc | ||
|
|
48d67fe7e1 | ||
|
|
2c9918f9a7 | ||
|
|
ee03952201 | ||
|
|
43dcd3c443 | ||
|
|
8f8c42a92a | ||
|
|
6496aded25 | ||
|
|
eacf8113af | ||
|
|
c4a1527153 | ||
|
|
4a89a6aafc | ||
|
|
52539b084d | ||
|
|
8d5bd051a1 | ||
|
|
3809e9853e | ||
|
|
5f795acd61 | ||
|
|
17c550404f | ||
|
|
a840079119 | ||
|
|
2761894164 | ||
|
|
6b8bc618dc | ||
|
|
258f79604f | ||
|
|
81ae70ee04 | ||
|
|
6b02d290a5 | ||
|
|
7ab1bbaf62 | ||
|
|
079083d0f2 | ||
|
|
0504707aab | ||
|
|
fb4aab875d | ||
|
|
7bb32ecf7e | ||
|
|
e129a5c179 | ||
|
|
8045f26c19 | ||
|
|
86516421b5 | ||
|
|
bce88ccd44 | ||
|
|
66d408b7db | ||
|
|
297bf3205f | ||
|
|
7366b32349 | ||
|
|
b7e0169c9b | ||
|
|
6b6f85cc7e | ||
|
|
2c014a2f4b | ||
|
|
d6df675821 | ||
|
|
427baf4c79 | ||
|
|
4f2b682341 | ||
|
|
e03f888cb2 | ||
|
|
513396d498 | ||
|
|
8f04f0758b | ||
|
|
7a77bfc248 | ||
|
|
ddd29374ea | ||
|
|
4b0d7a6c3d | ||
|
|
20bfc02a4e | ||
|
|
2511724b73 | ||
|
|
a851ee3fab | ||
|
|
40f6e6f8a8 | ||
|
|
e2fd104c2d | ||
|
|
a3eafa54fa | ||
|
|
b90b4a1910 | ||
|
|
247df4d5b9 | ||
|
|
4a3889a76e | ||
|
|
224a6e069c | ||
|
|
2c3097eeb7 | ||
|
|
3289ede0e8 | ||
|
|
ddf21c17d2 | ||
|
|
c9a24a0d28 | ||
|
|
fa4b130b18 | ||
|
|
8561a7547f | ||
|
|
e85f7b8232 | ||
|
|
2f91d25ed4 | ||
|
|
ae304b5af7 | ||
|
|
363d34b5e5 | ||
|
|
1c51f8b32e | ||
|
|
aaff07bba2 | ||
|
|
4bc38d5e0f | ||
|
|
fdfca00886 | ||
|
|
d872e393f8 | ||
|
|
686d8e5be7 | ||
|
|
4e30efd737 | ||
|
|
aa4935c505 | ||
|
|
0e381ab850 | ||
|
|
4a03ee4518 | ||
|
|
be414d8279 | ||
|
|
c47b1f2413 | ||
|
|
ba9ee052a6 | ||
|
|
b1c6708762 | ||
|
|
0ba31b6c79 | ||
|
|
14f402f186 | ||
|
|
b811e97ea5 | ||
|
|
6d167ce1d6 | ||
|
|
9ac1d23fd9 | ||
|
|
dea3a34e3d | ||
|
|
39de34f083 | ||
|
|
02d5f0fdf3 | ||
|
|
0bb7cbe8d9 | ||
|
|
3e3b88b8c2 | ||
|
|
1438beb93b | ||
|
|
c1ec5dc60d | ||
|
|
3f513f2f4d | ||
|
|
d1b573f6f9 | ||
|
|
0e08abc46f | ||
|
|
49bdf9f203 | ||
|
|
b3e9df4f3d | ||
|
|
3b8cf4a60a | ||
|
|
b7ccb9a34c | ||
|
|
b8ffa872c7 | ||
|
|
ef866f7851 | ||
|
|
f27515bf1d | ||
|
|
ddf74c5d7c | ||
|
|
8ea12695b3 | ||
|
|
d6324e6ba6 | ||
|
|
2325982801 | ||
|
|
b103c45e65 | ||
|
|
409989eddb | ||
|
|
3f5fcae280 | ||
|
|
d5123c793a | ||
|
|
e6707c1e4a | ||
|
|
41be5cc4a8 | ||
|
|
e82a4a1d23 | ||
|
|
e30e4edfce | ||
|
|
bd72ef7950 | ||
|
|
539034df2a | ||
|
|
6da6afc5a1 | ||
|
|
fea523972d | ||
|
|
5cfc6c2949 | ||
|
|
6dd0c25d49 | ||
|
|
ab9b3e47b9 | ||
|
|
33ebdf2831 | ||
|
|
ef95939763 | ||
|
|
0394deaeef | ||
|
|
337a60c8a4 | ||
|
|
47b341d50e | ||
|
|
a5fd39adf8 | ||
|
|
5772117dc8 | ||
|
|
f73c8a45d9 | ||
|
|
109d4190ae | ||
|
|
317de82be6 | ||
|
|
3604d69463 | ||
|
|
96cf774652 | ||
|
|
d2b39976ba | ||
|
|
06161bc963 | ||
|
|
2ab1d3dbfa | ||
|
|
ecdc7919ae | ||
|
|
a24541ac2b | ||
|
|
d832690548 | ||
|
|
2844710ea8 | ||
|
|
84ad4071ad | ||
|
|
7f501241f0 | ||
|
|
5dcfa66c5d | ||
|
|
f428a21279 | ||
|
|
ccdd4963cd | ||
|
|
2092a3729c | ||
|
|
a628420adb | ||
|
|
23de147ca1 | ||
|
|
93f55f5619 | ||
|
|
b10933898f | ||
|
|
1727b754d4 | ||
|
|
ffb0c12c08 | ||
|
|
c332808fe4 | ||
|
|
8f0538c886 | ||
|
|
e6bb7e2ca9 | ||
|
|
2a012520d0 | ||
|
|
c71333d9cb | ||
|
|
728515c225 | ||
|
|
e0f88e01f9 | ||
|
|
1aa94a12c0 | ||
|
|
de2d3361a7 | ||
|
|
680937e50b | ||
|
|
6751c50514 | ||
|
|
0c389701fe | ||
|
|
9454d8c100 | ||
|
|
166f9e817b | ||
|
|
d2865c637c | ||
|
|
9698932bde | ||
|
|
44026fcd41 | ||
|
|
d938af0c2c | ||
|
|
fd658400a6 | ||
|
|
dcbb17b164 | ||
|
|
49741875bd | ||
|
|
0fcd9733ff | ||
|
|
62d50169d7 | ||
|
|
1d3d5a1e6a | ||
|
|
d309fa745e | ||
|
|
f7031992d5 | ||
|
|
fcdf68ea15 | ||
|
|
b0a6692179 | ||
|
|
e1e763575d | ||
|
|
4236d1179c | ||
|
|
09365bcabe | ||
|
|
be29ddcbd6 | ||
|
|
522194ca8d | ||
|
|
5af8f584f6 | ||
|
|
adc08f8865 | ||
|
|
0f39d54c3c | ||
|
|
9e6659e842 | ||
|
|
46a0f6e3f8 | ||
|
|
e90b26ebed | ||
|
|
4407f260ae | ||
|
|
d4392416c8 | ||
|
|
2d3cbd26b8 | ||
|
|
98b9660956 | ||
|
|
4e8a4e8914 | ||
|
|
96bcbc80f8 | ||
|
|
1dfc8e2973 | ||
|
|
311886f6c9 | ||
|
|
4a332f40e5 | ||
|
|
93a97a2f4c | ||
|
|
1dee098ca2 | ||
|
|
a07cc7e560 | ||
|
|
c26f7f5ebc | ||
|
|
5d801cf566 | ||
|
|
631b2d869e | ||
|
|
c02f54cc18 | ||
|
|
827a95515d | ||
|
|
9082152f1a | ||
|
|
0efbddeda4 | ||
|
|
b2e186957c | ||
|
|
d855e5cffb | ||
|
|
f3747edaa3 | ||
|
|
752932ef3d | ||
|
|
948cf9dae3 | ||
|
|
b2f93aa549 | ||
|
|
108f228edf | ||
|
|
fe6030140f | ||
|
|
003400cfa8 | ||
|
|
41a02f059d | ||
|
|
b4ed6fd107 | ||
|
|
36246da9e1 | ||
|
|
457b6b982c | ||
|
|
05a07dc4a1 | ||
|
|
85889c2cb9 | ||
|
|
be6ceaab04 | ||
|
|
f1b18688bb | ||
|
|
80c7decb81 | ||
|
|
3ef5a1e21a | ||
|
|
2eb0a4c754 | ||
|
|
10f5af5dda | ||
|
|
8b27ebb96b | ||
|
|
b28f82a881 | ||
|
|
c921606f3f | ||
|
|
c6c08f6c60 | ||
|
|
02cf620090 | ||
|
|
917550ff4d | ||
|
|
4a12cc76fa | ||
|
|
f4f74e223f | ||
|
|
8b4535c131 | ||
|
|
b15fd6c75a | ||
|
|
e1a25fa894 | ||
|
|
2bb3b71a70 | ||
|
|
4c55b9c304 | ||
|
|
639a629809 | ||
|
|
d6e3bd09b4 | ||
|
|
8d67a0d95f | ||
|
|
b9fc0175e7 | ||
|
|
dc5f52cc0d | ||
|
|
602aabdeb8 | ||
|
|
2f8aa79ec1 | ||
|
|
8af90432cf | ||
|
|
61da0733c2 | ||
|
|
33951482d5 | ||
|
|
4e8484ee7c | ||
|
|
071761a61e | ||
|
|
10a11d6725 | ||
|
|
c81178ae26 | ||
|
|
2bafae5397 | ||
|
|
6a1d201e0e | ||
|
|
8de544696d | ||
|
|
66c489da8f | ||
|
|
26c8f35688 | ||
|
|
c3e881ed77 | ||
|
|
2cf55cbb96 | ||
|
|
73f22abf56 | ||
|
|
dbae90a193 | ||
|
|
28aeac4533 | ||
|
|
162b3d6192 | ||
|
|
b016d3fd9d | ||
|
|
f64ff58dbc | ||
|
|
d4d3d96bbb | ||
|
|
a5197ee544 | ||
|
|
8a5fd4f745 | ||
|
|
12cd7940c6 | ||
|
|
0c2cec46a7 | ||
|
|
84457ddc86 | ||
|
|
d6d20e5d49 | ||
|
|
9acdca1059 | ||
|
|
66c4fd4d2f | ||
|
|
f2defb3a31 | ||
|
|
aa66c10608 | ||
|
|
28d20a9c61 | ||
|
|
94fcc0a6a9 | ||
|
|
91abdd5415 | ||
|
|
58e940d193 | ||
|
|
6991dd48f3 | ||
|
|
270a077539 | ||
|
|
ff326acfc8 | ||
|
|
af1446233c | ||
|
|
67d66e2b2f | ||
|
|
753ce5bd6e | ||
|
|
e7d71ef301 | ||
|
|
8430921e4e | ||
|
|
c938abf606 | ||
|
|
3addfe8d4b | ||
|
|
5276556837 | ||
|
|
e47ad94666 | ||
|
|
7065763c7c | ||
|
|
86489d95c2 | ||
|
|
f357c4f171 | ||
|
|
36e34fe667 | ||
|
|
dcc59f42fa | ||
|
|
f6fbff2b42 | ||
|
|
67ce20ef62 | ||
|
|
788e0dc851 | ||
|
|
e2b1c83698 | ||
|
|
15373be63e | ||
|
|
8c9cd079b7 | ||
|
|
6f67a97ade | ||
|
|
ada568cb75 | ||
|
|
b9fa254ab5 | ||
|
|
174ba90fb5 | ||
|
|
de8c7c1ca3 | ||
|
|
407a125533 | ||
|
|
d8881ba6a3 | ||
|
|
755540fb81 | ||
|
|
add358c752 | ||
|
|
91352ade20 | ||
|
|
39fbf4ef33 | ||
|
|
d9547c6654 | ||
|
|
04f9428267 | ||
|
|
ebd8f43219 | ||
|
|
f75b2e26a3 | ||
|
|
2e654c143f | ||
|
|
5bcee265a6 | ||
|
|
647599e5aa | ||
|
|
16b9a2b06e | ||
|
|
7da427c669 | ||
|
|
405e6c1e4e | ||
|
|
efbc21826b | ||
|
|
7a1f1c9df7 | ||
|
|
476bfbaef0 | ||
|
|
8231157cdb | ||
|
|
e397e3fb6f | ||
|
|
8f1cafc80d | ||
|
|
71619cf84b | ||
|
|
a3551c6719 | ||
|
|
e9043e6762 | ||
|
|
6b7d30a701 | ||
|
|
76eab2632e | ||
|
|
bba4d7fcd9 | ||
|
|
46eb7d6786 | ||
|
|
f5c84b57b2 | ||
|
|
0b12901344 | ||
|
|
5e3c303aaf | ||
|
|
f02b1639c3 | ||
|
|
94e0c3ef64 | ||
|
|
17366f5e6e | ||
|
|
f7a6f899d4 | ||
|
|
62205919a3 | ||
|
|
ee44a48994 | ||
|
|
fedc230c9f | ||
|
|
8796cec493 | ||
|
|
b3b76adec4 | ||
|
|
4362760461 | ||
|
|
bc9236c9a7 | ||
|
|
9e16cff62a | ||
|
|
b04d8dde2b | ||
|
|
2a23c95f34 | ||
|
|
cb9aa33ad0 | ||
|
|
31258b1108 | ||
|
|
6e9f16d8f1 | ||
|
|
d1b2539d67 | ||
|
|
c5f8ab3394 | ||
|
|
12c28f4efc | ||
|
|
f20fed444a | ||
|
|
97b92ba35b | ||
|
|
91df36ccca | ||
|
|
294b1a5a7c | ||
|
|
5f27b59dc0 | ||
|
|
af0efc1e7f | ||
|
|
db25346505 | ||
|
|
1a4fc1f539 | ||
|
|
1bea0a42d7 | ||
|
|
22e73a4d83 | ||
|
|
3ab3c09982 | ||
|
|
0fb0ae1826 | ||
|
|
08fe4ae71f | ||
|
|
883c787c0b | ||
|
|
732dc07ec5 | ||
|
|
c00c8f249e | ||
|
|
77d876d443 | ||
|
|
822e7b4630 | ||
|
|
275a7fc113 | ||
|
|
b08b06c4d4 | ||
|
|
7082eb27db | ||
|
|
a121445b1e | ||
|
|
95547108bf | ||
|
|
fc4e945a7e | ||
|
|
1fdb6488fd | ||
|
|
51142e5c77 | ||
|
|
57ce7ccfdf | ||
|
|
c1ce90dad0 | ||
|
|
ceb8bdf0fd | ||
|
|
b9c233cdf9 | ||
|
|
4f5de51104 | ||
|
|
c949783698 | ||
|
|
6af42e5e08 | ||
|
|
f312ed32be | ||
|
|
91fee8d2d0 | ||
|
|
c23a4bf75d | ||
|
|
e38af0bebe | ||
|
|
b968756be2 | ||
|
|
ed5b4b6dc5 | ||
|
|
956ca44ef0 | ||
|
|
3534e133af | ||
|
|
7744e2eb03 | ||
|
|
078c5e8d8a | ||
|
|
6c3607d7e7 | ||
|
|
c04435108b | ||
|
|
e5c8d05850 | ||
|
|
bf0278aa00 | ||
|
|
33d05eaa77 | ||
|
|
5b074409fc | ||
|
|
bdc3cf2150 | ||
|
|
c3b7d45502 | ||
|
|
2ef4bc1b36 | ||
|
|
2f87549dac | ||
|
|
c596012bb5 | ||
|
|
04c6faf5da | ||
|
|
b2f50547a9 | ||
|
|
e221741a6a | ||
|
|
fe43ae9e81 | ||
|
|
c5d4b9f0ae | ||
|
|
b9156cdf7f | ||
|
|
c6a3b784b5 | ||
|
|
33e2afab7b | ||
|
|
5eb6fb38e0 | ||
|
|
c2ae333a12 | ||
|
|
d462242927 | ||
|
|
c1d2f12e48 | ||
|
|
74d472e76e | ||
|
|
bfc0282e49 | ||
|
|
8c70f83297 | ||
|
|
1e6e826426 | ||
|
|
872ba2d48e | ||
|
|
7acde1c174 | ||
|
|
bb6d9a88ec | ||
|
|
29305a8e1e | ||
|
|
9f639378ec | ||
|
|
92a42269e7 | ||
|
|
691629890f | ||
|
|
2051b8788a | ||
|
|
a129d7eb13 | ||
|
|
e9eee0703d | ||
|
|
11816111ea | ||
|
|
08e3cffff8 | ||
|
|
ab63735a89 | ||
|
|
560c6e0d6a | ||
|
|
f688099f2c | ||
|
|
877f1e343a | ||
|
|
32660c5251 | ||
|
|
a1dc224007 | ||
|
|
55bcb34fd5 | ||
|
|
b18f7af28f | ||
|
|
c273ded97d | ||
|
|
971b35a252 | ||
|
|
dad18aabcb | ||
|
|
0738ad1c15 | ||
|
|
829e116e04 | ||
|
|
384e4ce43e | ||
|
|
da3f55c910 | ||
|
|
87833f1e9f | ||
|
|
ba5d1666d6 | ||
|
|
b612feea41 | ||
|
|
da74fb5241 | ||
|
|
aa8b4231e2 | ||
|
|
6b4bd44807 | ||
|
|
058c1090e3 | ||
|
|
6aa6fb5c0a | ||
|
|
cbf99d2daf | ||
|
|
a71f70644f | ||
|
|
b41d08007a | ||
|
|
0e1900b36a | ||
|
|
e6c503253b | ||
|
|
846c1426cf | ||
|
|
c97f8aa148 | ||
|
|
b99c4fe5c1 | ||
|
|
42d2dd284f | ||
|
|
b7e3f2a4ee | ||
|
|
6599c5f5bf | ||
|
|
13f6e5ff43 | ||
|
|
4d76c83328 | ||
|
|
fee19f3d7a | ||
|
|
200fc738e8 | ||
|
|
05294ac556 | ||
|
|
93dfed74f8 | ||
|
|
3d963a7719 | ||
|
|
92abbc4ce6 | ||
|
|
d111893302 | ||
|
|
967ad773eb | ||
|
|
b036863dda | ||
|
|
ead9c23d9e | ||
|
|
8c60a4c032 | ||
|
|
d08f15430c | ||
|
|
f71d93a684 | ||
|
|
44d1ad7422 | ||
|
|
346ece94b7 | ||
|
|
3a96eb003b | ||
|
|
3bd78869a0 | ||
|
|
4b416586b7 | ||
|
|
20ffbe906f | ||
|
|
b2baeb0a5d | ||
|
|
b524af174a | ||
|
|
a4caeac584 | ||
|
|
b03565a816 | ||
|
|
d0c0a543cf | ||
|
|
17192c898b | ||
|
|
7d913b0ee7 | ||
|
|
db4521db5a | ||
|
|
10b7da0558 | ||
|
|
05f19cbb60 | ||
|
|
6d9ac84859 | ||
|
|
d9834d0fd1 | ||
|
|
d84e2a8e9b | ||
|
|
13dbeaba35 | ||
|
|
b615fe7529 | ||
|
|
8a268ee6de | ||
|
|
2ae2acc003 | ||
|
|
13d89b323e | ||
|
|
6acb9be48c | ||
|
|
d9d61b5b1d | ||
|
|
2ee65e69dc | ||
|
|
fd3b5ecf08 | ||
|
|
6d67b1e51f | ||
|
|
79cea34fac | ||
|
|
b0b758a9c6 | ||
|
|
462d17de17 | ||
|
|
9afe415c2d | ||
|
|
1e4bb65db2 | ||
|
|
fcb194d08a | ||
|
|
7354951d5a | ||
|
|
369bca90fc | ||
|
|
5275d365cb | ||
|
|
e2fc056488 | ||
|
|
98d2b2ee9c | ||
|
|
9441c76a12 | ||
|
|
1ef7b52425 | ||
|
|
d88725b998 | ||
|
|
a48ca25fa2 | ||
|
|
28d636fa0d | ||
|
|
2904084853 | ||
|
|
a1eac2f348 | ||
|
|
203b45f4d5 | ||
|
|
2891da3c74 | ||
|
|
09d552b17a | ||
|
|
b524fa7248 | ||
|
|
e138a5f846 | ||
|
|
82a5f56522 | ||
|
|
4f71e801d5 | ||
|
|
d5cb9f135f | ||
|
|
1a4d3dc91a | ||
|
|
78fccc8583 | ||
|
|
37ad8e08fc | ||
|
|
e60e8545a1 | ||
|
|
5258db345e | ||
|
|
c3921bebf2 | ||
|
|
08d1f01e8e | ||
|
|
8bf9a1e821 | ||
|
|
8debb65d89 | ||
|
|
397cab9032 | ||
|
|
449c87802f | ||
|
|
3862a926ab | ||
|
|
56c2e1094d | ||
|
|
4508e309c2 | ||
|
|
f0aaca2639 | ||
|
|
4c2a9c1229 | ||
|
|
4de55c39dd | ||
|
|
84b94f3091 | ||
|
|
2e94969a41 | ||
|
|
09eabbdcea | ||
|
|
233214cb30 | ||
|
|
f694f1ad36 | ||
|
|
dd004c921e | ||
|
|
8597c04ff1 | ||
|
|
5f5f086dfc | ||
|
|
04cd5b0981 | ||
|
|
22772ac10f | ||
|
|
d4234f0837 | ||
|
|
982f467572 | ||
|
|
f4ffb8e357 | ||
|
|
cd908ae1b2 | ||
|
|
1573ddad1b | ||
|
|
2ace83bcaf | ||
|
|
88ccda8fd1 | ||
|
|
ae8cf656a3 | ||
|
|
68c00433f5 | ||
|
|
f1ad7b9ef5 | ||
|
|
27cf8660d8 | ||
|
|
7105e7a86f | ||
|
|
e52ed7a5ce | ||
|
|
393e6896ec | ||
|
|
6ebfb1f109 | ||
|
|
590c21209c | ||
|
|
e7b58b27e8 | ||
|
|
a2a9bae0e3 | ||
|
|
3ef8e677c7 | ||
|
|
86c9e09782 | ||
|
|
fa8662f17d | ||
|
|
dcf34ea92c | ||
|
|
9ece8adda8 | ||
|
|
c302f7e1a9 | ||
|
|
2907d69dfc | ||
|
|
eeddb6a97e | ||
|
|
7ec8539540 | ||
|
|
5e740a6ed6 | ||
|
|
a4032836c3 | ||
|
|
ffc891f38e | ||
|
|
93ea80a3e3 | ||
|
|
68ff422a5f | ||
|
|
54d21c4950 | ||
|
|
bfd9327e74 | ||
|
|
498d0e18b9 | ||
|
|
b5e524e513 | ||
|
|
c512c8d297 | ||
|
|
2e092d34a6 | ||
|
|
d94c8aec51 | ||
|
|
c7062ad613 | ||
|
|
08d0765cfb | ||
|
|
1f0a3e97ae | ||
|
|
36745d79db | ||
|
|
c6490818d0 | ||
|
|
f1ef403c83 | ||
|
|
cad7ecf760 | ||
|
|
8f7fcfa147 | ||
|
|
a3bde5797a | ||
|
|
a070bed7c9 | ||
|
|
207dc2b6a6 | ||
|
|
fee0a8cec1 | ||
|
|
6635d449a5 | ||
|
|
99b1699ade | ||
|
|
20d38e247b | ||
|
|
7c8ab6fd4a | ||
|
|
7bb570cdc7 | ||
|
|
fc5a5aad8d | ||
|
|
93d373c032 | ||
|
|
fde5b0717d | ||
|
|
069b26bdc4 | ||
|
|
8f3e4cfdba | ||
|
|
ba7f5d3dc3 | ||
|
|
42ce183510 | ||
|
|
977bad2156 | ||
|
|
fd4f49cf8e | ||
|
|
1b540c0e57 | ||
|
|
0e443b3a43 | ||
|
|
eaf0da3d00 | ||
|
|
dd41ac3888 | ||
|
|
a0e26c6c4f | ||
|
|
6ac7ce2c73 | ||
|
|
7b3dd697bb | ||
|
|
48e562dcee | ||
|
|
86bd4aa568 | ||
|
|
ed91486d53 | ||
|
|
913b073ba4 | ||
|
|
b1418c081c | ||
|
|
6b373bee47 | ||
|
|
256d4b3e07 | ||
|
|
dc5a09bebc | ||
|
|
ababd79da2 | ||
|
|
5e21210962 | ||
|
|
3e3da2f27b | ||
|
|
b55439ce44 | ||
|
|
ff791098d8 | ||
|
|
5abf837e95 | ||
|
|
6bcf1a3522 | ||
|
|
b0f055567d | ||
|
|
1ee2fecbc2 | ||
|
|
04b0cd2d3b | ||
|
|
0439e6811b | ||
|
|
a130cfcadb | ||
|
|
77fcc14043 | ||
|
|
fb93db6ad4 | ||
|
|
47cf321eba | ||
|
|
b0ab1b048d | ||
|
|
aaec87d7be | ||
|
|
3198bc6b2c | ||
|
|
60be228c33 | ||
|
|
22c3ffcc02 | ||
|
|
b750ccd46f | ||
|
|
0dd0d262d6 | ||
|
|
9a83938c75 | ||
|
|
9b5b3cc202 | ||
|
|
729f341164 | ||
|
|
d5c5fb7435 | ||
|
|
01b8001d4c | ||
|
|
3992650fd6 | ||
|
|
a2354b5e9e | ||
|
|
43b7e94974 | ||
|
|
cdfce9e2b8 | ||
|
|
9bd86f0564 | ||
|
|
1c0b5b25ed | ||
|
|
6d33132705 | ||
|
|
3e5629e738 | ||
|
|
41eb4f8395 | ||
|
|
6ddff58ba5 | ||
|
|
5bb9b1b675 | ||
|
|
f4f29b8520 | ||
|
|
257e2db651 | ||
|
|
a853c13bcd | ||
|
|
96c23200f7 | ||
|
|
7c2becd3a4 | ||
|
|
a85729b4cf | ||
|
|
bd3cec18d8 | ||
|
|
7dcd96350a | ||
|
|
2e1c0ae77a | ||
|
|
6a6754c7da | ||
|
|
1fb2c35984 | ||
|
|
02d3b45efc | ||
|
|
4ce7f0b487 | ||
|
|
3559d98df1 | ||
|
|
0a4251825b | ||
|
|
499cd9d81b | ||
|
|
10a6b96f13 | ||
|
|
4e3d9187f7 | ||
|
|
0921cccb4c | ||
|
|
07a505c365 | ||
|
|
c3411ba0cf | ||
|
|
5246284e32 | ||
|
|
5fe8fce89d | ||
|
|
0cedc9ed51 | ||
|
|
7cbb61bdf8 | ||
|
|
b357dc8e2f | ||
|
|
f745fef6c2 | ||
|
|
dfe810fff4 | ||
|
|
111a947413 | ||
|
|
85c6932f8f | ||
|
|
ced2f1b911 | ||
|
|
685f9d506d | ||
|
|
34cd604a91 | ||
|
|
2ffd0be03f | ||
|
|
58296505a8 | ||
|
|
779f5e9af4 | ||
|
|
2351f64e6f | ||
|
|
03987da05b | ||
|
|
07e2cb5cd9 | ||
|
|
9b43f9a40c | ||
|
|
43b0225fba | ||
|
|
da491a2967 | ||
|
|
be67986123 | ||
|
|
af9c7e0aff | ||
|
|
27e061c355 | ||
|
|
da94a94d71 | ||
|
|
970c2e56d8 | ||
|
|
766c31fa56 | ||
|
|
50fa1c8f0a | ||
|
|
e361d66c88 | ||
|
|
f1203efa62 | ||
|
|
45b9f2e1bf | ||
|
|
538600354d | ||
|
|
5c9093823b | ||
|
|
7b6c4f71a2 | ||
|
|
7e9ae69f38 | ||
|
|
ddbc9ca61b | ||
|
|
d9aa965069 | ||
|
|
6ea9d16f87 | ||
|
|
5bfeb541fc | ||
|
|
c3f713c0bd | ||
|
|
97979a6ab5 | ||
|
|
055adf9fe0 | ||
|
|
e94adc835d | ||
|
|
50bb8c4fdd | ||
|
|
aa0a340b95 | ||
|
|
41d21bc0ff | ||
|
|
2de4b75b89 | ||
|
|
b52cc9e2b4 | ||
|
|
fea3843714 | ||
|
|
5df5d59f50 | ||
|
|
062dd4f889 | ||
|
|
948b027059 | ||
|
|
4d057a39ed | ||
|
|
68c4efb1d3 | ||
|
|
eda8c7da41 | ||
|
|
ac1937f9be | ||
|
|
5f0f7693bb | ||
|
|
9ad22e2600 | ||
|
|
fe8bbc6cc8 | ||
|
|
795c5f8263 | ||
|
|
66bb9dc42b | ||
|
|
70a350fdac | ||
|
|
a795fc4310 | ||
|
|
790b743e42 | ||
|
|
21aeded2ea | ||
|
|
baf6d6bd29 | ||
|
|
2e213a8692 | ||
|
|
455cccebb5 | ||
|
|
9e602394cf | ||
|
|
46ebd49936 | ||
|
|
fcac750ad7 | ||
|
|
8cd3acd205 | ||
|
|
bc95a028ce | ||
|
|
5fb457d331 | ||
|
|
454c11a12c | ||
|
|
3ac9a418e6 | ||
|
|
c98de5988e | ||
|
|
ca5df588b7 | ||
|
|
08a41691af | ||
|
|
665f272a0e | ||
|
|
2591e3ab67 | ||
|
|
44df9b3be8 | ||
|
|
40ddfa8def | ||
|
|
cc27c552af | ||
|
|
7f248da0b3 | ||
|
|
79a0002594 | ||
|
|
a6c015bcc5 | ||
|
|
692d98cb55 | ||
|
|
d9ddc184cb | ||
|
|
e424d06026 | ||
|
|
f9821e5f80 | ||
|
|
5bd53dc093 | ||
|
|
204834872e | ||
|
|
a24049aa17 | ||
|
|
9cb9e9e7b6 | ||
|
|
3e7a766d12 | ||
|
|
02debdc28b | ||
|
|
e104fe3021 | ||
|
|
dda40537cc | ||
|
|
217269467c | ||
|
|
5f193680c9 | ||
|
|
c0ef713c0b | ||
|
|
3533aa391a | ||
|
|
ec90365427 | ||
|
|
78f7a9ba06 | ||
|
|
7793dd8b3e | ||
|
|
76866f78f0 | ||
|
|
8e3ecb4c25 | ||
|
|
1b9b2ac4c9 | ||
|
|
489f14b88f | ||
|
|
8f09c82763 | ||
|
|
2b8cda40a2 | ||
|
|
4656d67fcf | ||
|
|
e7dd67deaa | ||
|
|
b9c3219094 | ||
|
|
f55a995c0a | ||
|
|
ee378a128c | ||
|
|
c1f083d19f | ||
|
|
2ff0f97295 | ||
|
|
dd3b51d0b7 | ||
|
|
853acfda2c | ||
|
|
c756be54a1 | ||
|
|
3bbf334f99 | ||
|
|
c6c8b7da6a | ||
|
|
8a30d3ed42 | ||
|
|
a5a6b864a5 | ||
|
|
97b7320939 | ||
|
|
5c11bcb2c6 | ||
|
|
3888584b58 | ||
|
|
531a9c0bc8 | ||
|
|
84f8048e0a | ||
|
|
fdf96b0b63 | ||
|
|
86ddfe2c9f | ||
|
|
115ae93073 | ||
|
|
aa65cada6f | ||
|
|
ad9cdf3fa8 | ||
|
|
5c0035f4c3 | ||
|
|
37b4c67ead | ||
|
|
63998f4a23 | ||
|
|
efeec13794 | ||
|
|
6c49e5c86a | ||
|
|
ec57392424 | ||
|
|
8713aa7fd3 | ||
|
|
627811f28d | ||
|
|
3f743b4f61 | ||
|
|
d676b5a68d | ||
|
|
a6dfab5fbf | ||
|
|
b8bc110d33 | ||
|
|
597fd2c6d1 | ||
|
|
ab0bc3e927 | ||
|
|
e28373dae1 | ||
|
|
1bc57f159c | ||
|
|
6a8019c7a0 | ||
|
|
9b0dc5a849 | ||
|
|
283e1b0790 | ||
|
|
fc05a4bb78 | ||
|
|
88b32e317a | ||
|
|
6c61a70d58 | ||
|
|
5df3ebae22 | ||
|
|
ad252476ce | ||
|
|
8e5f6a3a96 | ||
|
|
9ff209bd32 | ||
|
|
505e61475d | ||
|
|
2c137a0eec | ||
|
|
b65ae89be6 | ||
|
|
432884a2af | ||
|
|
6878498b2e | ||
|
|
4d5332fef7 | ||
|
|
50a149b662 | ||
|
|
930838d676 | ||
|
|
f6c952ffb0 | ||
|
|
f6db530de2 | ||
|
|
db45f08905 | ||
|
|
516d53f9bf | ||
|
|
c7e1adf638 | ||
|
|
31147975c7 | ||
|
|
b9deec1487 | ||
|
|
de57208bab | ||
|
|
07e966c640 | ||
|
|
56982effcd | ||
|
|
8a52b0fbd6 | ||
|
|
2190a1b6fd | ||
|
|
c18c2ea9d4 | ||
|
|
5fce1118f6 | ||
|
|
64f64b9e31 | ||
|
|
b4ac527638 | ||
|
|
352f3af737 | ||
|
|
c7c221ad5e | ||
|
|
74adbae7ed | ||
|
|
8a5402932c | ||
|
|
e565f9bf72 | ||
|
|
942b86c647 | ||
|
|
1042310038 | ||
|
|
d0c261b9cd | ||
|
|
61396cbb15 | ||
|
|
87c6230ef2 | ||
|
|
347ad94a43 | ||
|
|
f1389cdba0 | ||
|
|
5399ddf6ac | ||
|
|
a724dc1207 | ||
|
|
c6af38f7dc | ||
|
|
4d0008186b | ||
|
|
df3df6697e | ||
|
|
13ff7b9088 | ||
|
|
196d252fec | ||
|
|
53dfdc440d | ||
|
|
988a99efb7 | ||
|
|
17da230d72 | ||
|
|
c8cdfc8885 | ||
|
|
0b00842c50 | ||
|
|
17e405a39e | ||
|
|
51bd3455cc | ||
|
|
e292af75ad | ||
|
|
ef4566eb95 | ||
|
|
e7d1ffb7ae | ||
|
|
4fded3ada3 | ||
|
|
dc5ca76d05 | ||
|
|
37bdd525ea | ||
|
|
3f03806455 | ||
|
|
ff7bb1f303 | ||
|
|
5fe1de170d | ||
|
|
72913ccece | ||
|
|
a6207e7edf | ||
|
|
2972ac6328 | ||
|
|
d90550438f | ||
|
|
aa0f08cba3 | ||
|
|
a1b39d4fbc | ||
|
|
091a160db3 | ||
|
|
03f6336ac5 | ||
|
|
24c4cfe586 | ||
|
|
ca0c858e0f | ||
|
|
2be9a0bdba | ||
|
|
d333a44e11 | ||
|
|
e8e855a36c | ||
|
|
09719a4ad3 | ||
|
|
c9e542d6d5 | ||
|
|
a32ce56295 | ||
|
|
279c8c14cc | ||
|
|
49bc2c2204 | ||
|
|
c036c945bd | ||
|
|
2e2cce9fcb | ||
|
|
7f33798789 | ||
|
|
e299433e6e | ||
|
|
c82cb67bb6 | ||
|
|
075e11a7e1 | ||
|
|
2b2c968a97 | ||
|
|
bffdb39c02 | ||
|
|
3dabd73e95 | ||
|
|
8ed30e7eda | ||
|
|
7e4297d9bf | ||
|
|
99e634711e | ||
|
|
07f370d6d2 | ||
|
|
d2dfb4c8df | ||
|
|
64ee01d9fe | ||
|
|
a8d5ab035d | ||
|
|
f58c6807d0 | ||
|
|
ca66b47014 | ||
|
|
290781e734 | ||
|
|
d403e10018 | ||
|
|
161a0e07f9 | ||
|
|
eb9b0c85a9 | ||
|
|
c7f7b96405 | ||
|
|
c5dff96f57 | ||
|
|
ff418ad55f | ||
|
|
6b0da0a568 | ||
|
|
56151982a7 | ||
|
|
c8185050f6 | ||
|
|
ed20b009a5 | ||
|
|
bf0bcf2f72 | ||
|
|
d81e80f273 | ||
|
|
6afed0e035 | ||
|
|
0a39e7b02f | ||
|
|
01a45f3085 | ||
|
|
c61764cd8d | ||
|
|
ce20f5d0a2 | ||
|
|
ffa9210286 | ||
|
|
025ead4fa3 | ||
|
|
82de03101b | ||
|
|
eae071f9b8 | ||
|
|
aadad482c4 | ||
|
|
cb8b98f707 | ||
|
|
603a888e2e | ||
|
|
9e3083cc5d | ||
|
|
ab9f2c0a66 | ||
|
|
e84888c27e | ||
|
|
4dfc91db0a | ||
|
|
5705df96f3 | ||
|
|
9ac0cf1406 | ||
|
|
71170a1c5d | ||
|
|
353978f115 | ||
|
|
e89065aafc | ||
|
|
ff35ccbaec | ||
|
|
529d5b0535 | ||
|
|
15ecb19c65 | ||
|
|
a64b32d12c | ||
|
|
f53ac25d90 | ||
|
|
de1d06528e | ||
|
|
ea227e09fa | ||
|
|
46cbd6dfd2 | ||
|
|
a61e6efdd4 | ||
|
|
6536d71566 | ||
|
|
d92412175c | ||
|
|
a3b7f9a739 | ||
|
|
5367a23112 | ||
|
|
3614f5b620 | ||
|
|
eac7954570 | ||
|
|
7d08da22b2 | ||
|
|
756acf1395 | ||
|
|
a2a03c6b52 | ||
|
|
8e63a84152 | ||
|
|
38b3197912 | ||
|
|
1d4576c7fd | ||
|
|
29a4dee91b | ||
|
|
9e166774ef | ||
|
|
dd40df4b37 | ||
|
|
afd07562b4 | ||
|
|
81a6d821c0 | ||
|
|
858ab252a6 | ||
|
|
a56e2bb577 | ||
|
|
27980cf7c7 | ||
|
|
5a7bcf32ea | ||
|
|
773423069b | ||
|
|
1e6773deb5 | ||
|
|
a95d37d610 | ||
|
|
bdf72eca70 | ||
|
|
3acb2a56a2 | ||
|
|
2f0e9d0681 | ||
|
|
bfa7eb0c19 | ||
|
|
27d71fb10f | ||
|
|
eeb1ecd2df | ||
|
|
f21b5768a5 | ||
|
|
ba08883623 | ||
|
|
b1587950c6 | ||
|
|
b473ed7cb7 | ||
|
|
2978c8adfe | ||
|
|
1f0111256b | ||
|
|
346b980a1d | ||
|
|
8000791e17 | ||
|
|
66077ea6d7 | ||
|
|
3d10a8f86a | ||
|
|
ebae9880dc | ||
|
|
2e72c16964 | ||
|
|
6ebaea395d | ||
|
|
257ee9928f | ||
|
|
2ac9f5918a | ||
|
|
9c4767bb68 | ||
|
|
cbd82988a8 | ||
|
|
d0a9445dfc | ||
|
|
cd6a9bf9a8 | ||
|
|
8afead4e39 | ||
|
|
f279471858 | ||
|
|
61fe518710 | ||
|
|
b774a59db2 | ||
|
|
63a1f52482 | ||
|
|
ab5ea5948b | ||
|
|
a8fd0fcd19 | ||
|
|
6098d55b57 | ||
|
|
9ba2f80e3a | ||
|
|
3acf71f253 | ||
|
|
ad51597bf5 | ||
|
|
60057eee6a | ||
|
|
3cfd0ba1f8 | ||
|
|
dec386840a | ||
|
|
355b9be3ff | ||
|
|
57627367f5 | ||
|
|
a5a812d3f4 | ||
|
|
5426273cf8 | ||
|
|
d9bab319e3 | ||
|
|
77862cdf9b | ||
|
|
b8d68ee359 | ||
|
|
307e434f91 | ||
|
|
f60b2eb8af | ||
|
|
9da1aa1421 | ||
|
|
4d3964daeb | ||
|
|
b80f9d3517 | ||
|
|
46981f73a9 | ||
|
|
9b6394627b | ||
|
|
3a34331cc2 | ||
|
|
95fe10b312 | ||
|
|
f8d4303531 | ||
|
|
7d49f75682 | ||
|
|
a84a8e1a6e | ||
|
|
1fc2181937 | ||
|
|
7411f01fb5 | ||
|
|
2c9c598dd7 | ||
|
|
3c00a3b1d0 | ||
|
|
660cdb575a | ||
|
|
f20876a028 | ||
|
|
b31866cf32 | ||
|
|
bde27c3880 | ||
|
|
80cb613888 | ||
|
|
23966b1103 | ||
|
|
2fd897064a | ||
|
|
846298210a | ||
|
|
f22e98ccca | ||
|
|
5cb6d10e3d | ||
|
|
5b4dd74503 | ||
|
|
cd3cec5d48 | ||
|
|
621888d6d4 | ||
|
|
3e7fcaf764 | ||
|
|
8fb44df59b | ||
|
|
5b205d6e4a | ||
|
|
dc98ef8b57 | ||
|
|
f9ae242792 | ||
|
|
438640d5b8 | ||
|
|
078b755fb6 | ||
|
|
501e01fe23 | ||
|
|
ce992fc205 | ||
|
|
8609dedafd | ||
|
|
66f124b397 | ||
|
|
21cf439210 | ||
|
|
91a7d20923 | ||
|
|
f49c2138de | ||
|
|
774853af7a | ||
|
|
7e30a4a3d4 | ||
|
|
b179731359 | ||
|
|
d6409d7152 | ||
|
|
eaeefafe39 | ||
|
|
59974edf80 | ||
|
|
37f914d1cc | ||
|
|
da92fd705b | ||
|
|
00505b8af8 | ||
|
|
22a3bba6ab | ||
|
|
b6b3cbcb9a | ||
|
|
de97048424 | ||
|
|
02471e6d60 | ||
|
|
edf58ee897 | ||
|
|
5ecfd278d4 | ||
|
|
3327179270 | ||
|
|
98462e8dca | ||
|
|
2f515164b3 | ||
|
|
3c8ceebedc | ||
|
|
26fe93dfc0 | ||
|
|
9113a826ce | ||
|
|
eca1baf53e | ||
|
|
6b3b8e6204 | ||
|
|
194a4f3adb | ||
|
|
054f27083b | ||
|
|
168d1dc678 | ||
|
|
8cc5c62665 | ||
|
|
82c874afb5 | ||
|
|
1afd0381c1 | ||
|
|
5f5589f1f1 | ||
|
|
1cee408113 | ||
|
|
92854b9e84 | ||
|
|
a4c5817b54 | ||
|
|
6c82680066 | ||
|
|
6135bc716e | ||
|
|
1639ea7552 | ||
|
|
bea8c89d9f | ||
|
|
fe1618d1d8 | ||
|
|
30250e1afa | ||
|
|
16f02e2544 | ||
|
|
123f4a3931 | ||
|
|
ce5fb78bcd | ||
|
|
2ccd053b0a | ||
|
|
3422ccef15 | ||
|
|
630663ec83 | ||
|
|
37c6bf3a3f | ||
|
|
1c2963a1e0 | ||
|
|
50a5b0f7db | ||
|
|
df933bb928 | ||
|
|
aa85108f1a | ||
|
|
c778a28f2b | ||
|
|
48142721ac | ||
|
|
826e3ebc5e | ||
|
|
0f31259c97 | ||
|
|
881d7fa5ee | ||
|
|
d479425333 | ||
|
|
cb944bcfb2 | ||
|
|
745683f2a8 | ||
|
|
e019935545 | ||
|
|
9601477bba | ||
|
|
0702ca3fc9 | ||
|
|
d9a9ae7e72 | ||
|
|
76eba3d638 | ||
|
|
69a448b4c1 | ||
|
|
a8d9a64f79 | ||
|
|
1546727612 | ||
|
|
dfdcc05d3e | ||
|
|
12941a107d | ||
|
|
a94d46e005 | ||
|
|
acb777c236 | ||
|
|
7e87cc1923 | ||
|
|
1ad23f4ed8 | ||
|
|
1bcba17f76 | ||
|
|
cb871f6a88 | ||
|
|
6d2c296a7d | ||
|
|
3434a1f5a6 | ||
|
|
f9c45d95e1 | ||
|
|
0bd051a7a9 | ||
|
|
d4789463ad | ||
|
|
7190a25550 | ||
|
|
04bc8308ac | ||
|
|
68c67fbd32 | ||
|
|
50fd8926d6 | ||
|
|
7e1e61f8af | ||
|
|
ee066d7859 | ||
|
|
54a48f9493 | ||
|
|
70fc0789d6 | ||
|
|
66cd75dce8 | ||
|
|
8b3b6a471b | ||
|
|
e707fcda05 | ||
|
|
a3574acabd | ||
|
|
f36db182f1 | ||
|
|
59e492b2a6 | ||
|
|
6380063978 | ||
|
|
2686873163 | ||
|
|
b2ef26600c | ||
|
|
e94fdcad32 | ||
|
|
2e423b101b | ||
|
|
91677a41d4 | ||
|
|
b747d0273c | ||
|
|
45fb612793 | ||
|
|
db081d3197 | ||
|
|
423eaa5462 | ||
|
|
f38dde160e | ||
|
|
782eb29aac | ||
|
|
5810c5544a | ||
|
|
b6eb581192 | ||
|
|
54171e566a | ||
|
|
b7a44ab11f | ||
|
|
4ea60d3431 | ||
|
|
9840ebfe33 | ||
|
|
af2b726a38 | ||
|
|
d425a1b2c0 | ||
|
|
687b0ac3bd | ||
|
|
3978dd9b07 | ||
|
|
d9f78b9d5c | ||
|
|
81e638a7e0 | ||
|
|
6dc906a604 | ||
|
|
005db4d0e8 | ||
|
|
41127da7d9 | ||
|
|
3111b8d395 | ||
|
|
89f2647ead | ||
|
|
084a432741 | ||
|
|
1f071d1608 | ||
|
|
3f75d0df56 | ||
|
|
ba108fe23a | ||
|
|
ab736cf975 | ||
|
|
c36239772e | ||
|
|
286090d58a | ||
|
|
69fda864db | ||
|
|
2709c5d332 | ||
|
|
da5fdd54bd | ||
|
|
92e7453c31 | ||
|
|
a59e1a2015 | ||
|
|
838eb845d4 | ||
|
|
f69fdc634a | ||
|
|
9c0e7272ff | ||
|
|
515afdc5ae | ||
|
|
f32fa485e0 | ||
|
|
a5187801b4 | ||
|
|
6cb11d6a61 | ||
|
|
1e91ca5eda | ||
|
|
210727ea0e | ||
|
|
f429585447 | ||
|
|
759a3f17cc | ||
|
|
de7d1c2baa | ||
|
|
8223011c3d | ||
|
|
53684d6fbb | ||
|
|
31cefd7dd0 | ||
|
|
993a8f83ff | ||
|
|
fd1e00986c | ||
|
|
62028d1273 | ||
|
|
240ae25a90 | ||
|
|
2bd242a164 | ||
|
|
4b87684611 | ||
|
|
3cd2a2a0f9 | ||
|
|
dc129eeb7d | ||
|
|
fb3f426688 | ||
|
|
f33ebbcce0 | ||
|
|
86922df61a | ||
|
|
2916ab502e | ||
|
|
9c24fcec0d | ||
|
|
8258997f3e | ||
|
|
ef714c3903 | ||
|
|
76c0874f0e | ||
|
|
9166f734c9 | ||
|
|
368421a498 | ||
|
|
c8d8c68b95 | ||
|
|
e68cd3c47f | ||
|
|
1732d7e707 | ||
|
|
da0d778b25 | ||
|
|
b8bd0cc63a | ||
|
|
5150e13121 | ||
|
|
b2f784eeff | ||
|
|
ad98284caf | ||
|
|
6915ea70ca | ||
|
|
26eb99d4a7 | ||
|
|
e1eb1be781 | ||
|
|
b536e191b1 | ||
|
|
f1b475b966 | ||
|
|
23a61d400d | ||
|
|
4ae8308663 | ||
|
|
c3d6343edb | ||
|
|
1059d2ddbd | ||
|
|
10ecc27bb5 | ||
|
|
0c3c540051 | ||
|
|
c44dba5e92 | ||
|
|
82da7d0b24 | ||
|
|
4dd522eda4 | ||
|
|
bbe300e847 | ||
|
|
dd667e5b4a | ||
|
|
6f013de8e4 | ||
|
|
96a6289911 | ||
|
|
e0970fc69d | ||
|
|
5cafc7bb37 | ||
|
|
2b755c0497 | ||
|
|
e3beae244d | ||
|
|
c2ec7be719 | ||
|
|
ed5d9132d3 | ||
|
|
8654db534b | ||
|
|
e20299eb94 | ||
|
|
1f65907f70 | ||
|
|
6a55c09328 | ||
|
|
9734e4d859 | ||
|
|
4f93bc5721 | ||
|
|
73dc0b1cfa | ||
|
|
e31979002f | ||
|
|
4be1e527fc | ||
|
|
45332b3202 | ||
|
|
cb0258cb58 | ||
|
|
f3d80f28fd | ||
|
|
4b73ee3d41 | ||
|
|
e0e2e0c2fb | ||
|
|
f2b977c941 | ||
|
|
9fe10fd9a2 | ||
|
|
6b444d280a | ||
|
|
10c2acf410 | ||
|
|
6bb5908aba | ||
|
|
f54b24b4da | ||
|
|
ef3c548c98 | ||
|
|
820690a073 | ||
|
|
63cf4f0045 | ||
|
|
deecbdd124 | ||
|
|
07f790dda0 | ||
|
|
a91b1ecf1f | ||
|
|
4f75dd30fe | ||
|
|
629ee3e33f | ||
|
|
54e06d26bc | ||
|
|
dda26b7a3f | ||
|
|
e86a17980b | ||
|
|
23068450ed | ||
|
|
3924370b3e | ||
|
|
f57ac978ae | ||
|
|
e68ad7331f | ||
|
|
9b5fb4bde1 | ||
|
|
a8f1fb5148 | ||
|
|
65185ecb77 | ||
|
|
14a68f24e4 | ||
|
|
16a93c2b7e | ||
|
|
925690fb00 | ||
|
|
dc279bc335 | ||
|
|
d1d759e86f | ||
|
|
82a30fbd25 | ||
|
|
12fea29f48 | ||
|
|
b602f7c03f | ||
|
|
a20ab981a7 | ||
|
|
9ae08cecf2 | ||
|
|
c9cd7b4344 | ||
|
|
24b587762a | ||
|
|
18a2fb38d1 | ||
|
|
5f47cdb763 | ||
|
|
e5a18b6e4c | ||
|
|
519976eb0b | ||
|
|
b630fbc641 | ||
|
|
2369a22d23 | ||
|
|
124d9ff269 | ||
|
|
1c95ac7f07 | ||
|
|
54169fe22b | ||
|
|
4707b78c1f | ||
|
|
95d91efe52 | ||
|
|
fc0c7f536b | ||
|
|
80f1cfc72d | ||
|
|
628012fb49 | ||
|
|
a29498e911 | ||
|
|
3d460b5862 | ||
|
|
4acb2a5d92 | ||
|
|
47c800b78b | ||
|
|
a20da8036f | ||
|
|
7897118fbd | ||
|
|
0246e09595 | ||
|
|
72ad37456a | ||
|
|
83ec0a6c76 | ||
|
|
63f77b0dc5 | ||
|
|
798d2e0e6b | ||
|
|
fd098b5440 | ||
|
|
11d30e409c | ||
|
|
6cb5ae246d | ||
|
|
60c76ba854 | ||
|
|
ebf7b32408 | ||
|
|
f343459236 | ||
|
|
d2a57864f0 | ||
|
|
8a07f281ff | ||
|
|
b7b721abd5 | ||
|
|
45f1e386cc | ||
|
|
3c3e8a6c31 | ||
|
|
ec99b48605 | ||
|
|
da9e599e8f | ||
|
|
b1d3fa3f42 | ||
|
|
7954672ef8 | ||
|
|
20a6039bd0 | ||
|
|
d7fe61bc3d | ||
|
|
b10406896a | ||
|
|
1f135e0721 | ||
|
|
e1bdc9ce33 | ||
|
|
e3654bb472 | ||
|
|
6418d6bcff | ||
|
|
9bf7c5013e | ||
|
|
1797e78ebd | ||
|
|
7196299d31 | ||
|
|
4d7d9fdfaa | ||
|
|
0afd6ac749 | ||
|
|
79222179fd | ||
|
|
89f552872c | ||
|
|
cf88034230 | ||
|
|
1c9e9cabcd | ||
|
|
2bc7f5ad22 | ||
|
|
7a3108aca6 | ||
|
|
fa28aaee44 | ||
|
|
4ab7650c51 | ||
|
|
a493d996bd | ||
|
|
a049ffae2b | ||
|
|
57ca6af27d | ||
|
|
e52bc12dbe | ||
|
|
fe144384aa | ||
|
|
e3226b734d | ||
|
|
6578eea2ff | ||
|
|
42e283feb3 | ||
|
|
4a1988dd23 | ||
|
|
cbae718d25 | ||
|
|
53c880832d | ||
|
|
df9e172ecc | ||
|
|
e5145c9bbf | ||
|
|
1fbfa23908 | ||
|
|
193b7ae0e6 | ||
|
|
ebe351ff0f | ||
|
|
f653901e8b | ||
|
|
4ab512fa93 | ||
|
|
1827a98284 | ||
|
|
25c0759932 | ||
|
|
b686298a5f | ||
|
|
abf8860c8a | ||
|
|
115b3da62c | ||
|
|
d9734a8fd9 | ||
|
|
9ccf9e9def | ||
|
|
9f4b2e2a95 | ||
|
|
892d877cfb | ||
|
|
4dc76b864f | ||
|
|
d8e9c05319 | ||
|
|
c532019647 | ||
|
|
82409f3ccc | ||
|
|
1389c7f4be | ||
|
|
787844b199 | ||
|
|
eb9588fbea | ||
|
|
4574c11d0d | ||
|
|
8ec08a5ef6 | ||
|
|
51b7c3b7ed | ||
|
|
b8f6ad68a1 | ||
|
|
02c1f2ee53 | ||
|
|
b9fdaf2845 | ||
|
|
269c82ded0 | ||
|
|
ddb0d6540e | ||
|
|
3731da5df5 | ||
|
|
54f2e8d3e3 | ||
|
|
3b930259f5 | ||
|
|
4fe166660f | ||
|
|
8dcdadfd41 | ||
|
|
ceba63af09 | ||
|
|
12c44665b3 | ||
|
|
4cef3e1e14 | ||
|
|
116caee113 | ||
|
|
ff2f865d1a | ||
|
|
1f4292310e | ||
|
|
f44a38d843 | ||
|
|
e85f78432a | ||
|
|
290cbd6498 | ||
|
|
72dab618eb | ||
|
|
e728911038 | ||
|
|
bf280c0cf9 | ||
|
|
1fd0248605 | ||
|
|
c8de99eae4 | ||
|
|
0a148f79a6 | ||
|
|
a70ac89646 | ||
|
|
fd4ed4affa | ||
|
|
ab0aee388e | ||
|
|
f6cf8455e7 | ||
|
|
adc56aef84 | ||
|
|
2d0dc58bc1 | ||
|
|
6058fc0718 | ||
|
|
ef484be008 | ||
|
|
a19a527b16 | ||
|
|
64414ce7b8 | ||
|
|
6f40284e67 | ||
|
|
bc3510ac58 | ||
|
|
84eb935cec | ||
|
|
1950949504 | ||
|
|
f3e6a377a9 | ||
|
|
1441278bdb | ||
|
|
1e5081dccd | ||
|
|
a412095707 | ||
|
|
27514c03e7 | ||
|
|
57ab256230 | ||
|
|
3766564785 | ||
|
|
199cae09c7 | ||
|
|
4490adc36c | ||
|
|
fe1353b5c7 | ||
|
|
94b61e9f7c | ||
|
|
1abc0b8c9a | ||
|
|
69c9f59479 | ||
|
|
b15ca6cdb7 | ||
|
|
b2b9bd744e | ||
|
|
c223b251d6 | ||
|
|
9cc475efb3 | ||
|
|
6dbd179baf | ||
|
|
2dce318a17 | ||
|
|
791fe70fd3 | ||
|
|
7778202439 | ||
|
|
8ea64e2224 | ||
|
|
28ddce1bc4 | ||
|
|
d8b5fc5d3f | ||
|
|
0fbf24b836 | ||
|
|
58bdcadf6f | ||
|
|
35f6252c3d | ||
|
|
37c2918bdd | ||
|
|
0fcea6d203 | ||
|
|
7d7d58fa45 | ||
|
|
c2d3918341 | ||
|
|
8ca3df4f63 | ||
|
|
535cd75836 | ||
|
|
165595e5fb | ||
|
|
52ebfe5b6b | ||
|
|
0615256069 | ||
|
|
bcbcd42b83 | ||
|
|
50be731d06 | ||
|
|
3cecfe4939 | ||
|
|
ac50bbddca | ||
|
|
efb1296ff2 | ||
|
|
cfe2ce758b | ||
|
|
4da44131eb | ||
|
|
0fc901bd24 | ||
|
|
0b38514e41 | ||
|
|
a885e774fc | ||
|
|
d9ac947fe1 | ||
|
|
d12c09aca0 | ||
|
|
6496a1b2b9 | ||
|
|
f824045fdd | ||
|
|
ddf81a3ae9 | ||
|
|
e8a5a2eae9 | ||
|
|
06a61f45ff | ||
|
|
994aadec7c | ||
|
|
cb059a141f | ||
|
|
a41b6be185 | ||
|
|
d31da4a0ec | ||
|
|
bfcb0727d7 | ||
|
|
d81306ac1a | ||
|
|
b227943fe7 | ||
|
|
e04e82e81d | ||
|
|
b44ba30873 | ||
|
|
0acb5c643c | ||
|
|
923102a8bf | ||
|
|
ac323c99d5 | ||
|
|
7911d17b2f | ||
|
|
307e44a7b9 | ||
|
|
6ad2da163c | ||
|
|
a38ef9e29e | ||
|
|
379d4f1887 | ||
|
|
ce61872822 | ||
|
|
8e37a8f1bb | ||
|
|
fe9c08e92a | ||
|
|
87f6ae8135 | ||
|
|
4d780ea2ca | ||
|
|
6643f1e4c8 | ||
|
|
5d94ac361e | ||
|
|
5d1cb8558b | ||
|
|
361ddc5591 | ||
|
|
fc978076d7 | ||
|
|
20cd119c89 | ||
|
|
7c5b8e4305 | ||
|
|
24315ab0e6 | ||
|
|
4cae0c9652 | ||
|
|
18875d46b5 | ||
|
|
e45a185c40 | ||
|
|
62dfb582f4 | ||
|
|
1587a44cd7 | ||
|
|
fcbc738088 | ||
|
|
f845e197b5 | ||
|
|
8ff0fa7707 | ||
|
|
bb59de5f5e | ||
|
|
b8b15b9394 | ||
|
|
9676b1d110 | ||
|
|
f5e217bd81 | ||
|
|
97501e63c5 | ||
|
|
5b220d5c5c | ||
|
|
5cdc30b822 | ||
|
|
5249e4730d | ||
|
|
870324bb56 | ||
|
|
588bdcc2dd | ||
|
|
bd0208040e | ||
|
|
b6c16c83c1 | ||
|
|
6331c4715f | ||
|
|
1eb0e387ea | ||
|
|
e4e2a444a0 | ||
|
|
979aac2fca | ||
|
|
4308a0bebd | ||
|
|
eb60b869d4 | ||
|
|
948bd41cd8 | ||
|
|
eb760b37e6 | ||
|
|
9dcafff26f | ||
|
|
0644a8c9fb | ||
|
|
a984580e4c | ||
|
|
b501cc1f93 | ||
|
|
9bc0ae975a | ||
|
|
d111e219c2 | ||
|
|
6ebcecae80 | ||
|
|
cd91d53ead | ||
|
|
5d1f54005f | ||
|
|
df115bd7db | ||
|
|
bd81d77cfa | ||
|
|
59365642fc | ||
|
|
7387acdd2c | ||
|
|
f477998b2f | ||
|
|
0bf2ba5416 | ||
|
|
10c568098c | ||
|
|
d9285915ef | ||
|
|
ae0dcd0333 | ||
|
|
228b3f2660 | ||
|
|
90c3b1bf6d | ||
|
|
e805e8d054 | ||
|
|
89e975aa0e | ||
|
|
acd7abefe9 | ||
|
|
1be4490126 | ||
|
|
24d1dbadb7 | ||
|
|
0a7ff36bb5 | ||
|
|
f788dc5595 | ||
|
|
b347af10fe | ||
|
|
d0411f7d96 | ||
|
|
5806870b1c | ||
|
|
8d8322152b | ||
|
|
8b5f7655cf | ||
|
|
a29068ee46 | ||
|
|
ac45c57215 | ||
|
|
19dbf7fe13 | ||
|
|
8dc662d27e | ||
|
|
d52e998111 | ||
|
|
1f9222ad04 | ||
|
|
179fe8b1b9 | ||
|
|
888bffba1d | ||
|
|
e5e4f6508c | ||
|
|
898b74a478 | ||
|
|
3189f46ccb | ||
|
|
42a566d923 | ||
|
|
0897bb24fd | ||
|
|
4a2f698ff8 | ||
|
|
0fccd3d5cb | ||
|
|
62c3b341bb | ||
|
|
b2600d3ffd | ||
|
|
e2e1432069 | ||
|
|
d1394d311e | ||
|
|
28726fd153 | ||
|
|
2de33a87cc | ||
|
|
a04bcd196b | ||
|
|
44261b2ceb | ||
|
|
0db291047b | ||
|
|
17dcb1826c | ||
|
|
f1ddf4de56 | ||
|
|
d6e06098d0 | ||
|
|
cd232d7221 | ||
|
|
d986d2e462 | ||
|
|
7003bab28f | ||
|
|
9f6c0cf104 | ||
|
|
43d3fa92ba | ||
|
|
d80238d93b | ||
|
|
a6160be3ad | ||
|
|
4c1abdf0d2 | ||
|
|
07ba60ab67 | ||
|
|
b4d37b2101 | ||
|
|
05f573d181 | ||
|
|
0b40e1c3fe | ||
|
|
b0da562472 | ||
|
|
a0d8b9029e | ||
|
|
76d7a3f6d4 | ||
|
|
f4093d04d9 | ||
|
|
427d38df44 | ||
|
|
1d9931a58a | ||
|
|
4737a5fe69 | ||
|
|
27d496d602 | ||
|
|
df37a00bfc | ||
|
|
7c7ff40776 | ||
|
|
2607d14c82 | ||
|
|
1e80fea530 | ||
|
|
59fc695190 | ||
|
|
c8b5620cc5 | ||
|
|
67ad59b80e | ||
|
|
9c0c80033f | ||
|
|
c2a919e178 | ||
|
|
a0da79165d | ||
|
|
40ea43b738 | ||
|
|
0183a8eff8 | ||
|
|
700643019f | ||
|
|
240351ea23 | ||
|
|
b49e215617 | ||
|
|
b1ffeb1f24 | ||
|
|
ae9a9cf8cf | ||
|
|
64b76bdc6e | ||
|
|
9744de507e | ||
|
|
f2b4aec4dd | ||
|
|
bad0604d0c | ||
|
|
a8ba2bf70f | ||
|
|
da85a7ca87 | ||
|
|
2a9cc0eebf | ||
|
|
e0ee4f5249 | ||
|
|
2ffb6d6a9d | ||
|
|
c285217ed2 | ||
|
|
c30a0b534c | ||
|
|
ff0b35fd01 | ||
|
|
c11161d294 | ||
|
|
26c05586e7 | ||
|
|
1a3ff5dbb7 | ||
|
|
942ef6a752 | ||
|
|
f88158e61f | ||
|
|
d447029cdc | ||
|
|
39a7d73430 | ||
|
|
5c31cf5c4d | ||
|
|
7c941bbc25 | ||
|
|
44ef2cf02c | ||
|
|
38949bf4b0 | ||
|
|
e0aede3fc4 | ||
|
|
fec3c309be | ||
|
|
764d001ef6 | ||
|
|
6f034ad878 | ||
|
|
b598d846bb | ||
|
|
e3fb11cce0 | ||
|
|
d4aa3699f2 | ||
|
|
80d0925ed7 | ||
|
|
77471a5f56 | ||
|
|
c655d55197 | ||
|
|
ab6de361ab | ||
|
|
113210b08e | ||
|
|
db43181733 | ||
|
|
d60939211a | ||
|
|
7c945a674d | ||
|
|
f0a70d945a | ||
|
|
fdca00b198 | ||
|
|
8b961fb8cd | ||
|
|
7e3c775f70 | ||
|
|
a25b0d0349 | ||
|
|
5c5fa5c4bc | ||
|
|
98cb9b3234 | ||
|
|
eb5f51249b | ||
|
|
d81c45fef1 | ||
|
|
22178a6c2e | ||
|
|
6644e3b606 | ||
|
|
d42f842b2f | ||
|
|
9163e27a5f | ||
|
|
f4d6958491 | ||
|
|
9cb6486c71 | ||
|
|
ad7bff102d | ||
|
|
3a8b31a5a7 | ||
|
|
5461392516 | ||
|
|
fc90ca3815 | ||
|
|
ec2f4ea547 | ||
|
|
5f06eb5116 | ||
|
|
ae10af2464 | ||
|
|
9092c06e71 | ||
|
|
54e0130216 | ||
|
|
0fc47e07d4 | ||
|
|
ae72c5a8fe | ||
|
|
a65a4796ca | ||
|
|
4789b76e66 | ||
|
|
7b52637c5f | ||
|
|
db2429d1cb | ||
|
|
25f014ef3b | ||
|
|
44cff354f2 | ||
|
|
6276c1df97 | ||
|
|
8c2420fd03 | ||
|
|
011b19b62d | ||
|
|
fbd41bc2d8 | ||
|
|
950d9b1a8f | ||
|
|
9c6b7b005f | ||
|
|
74ce8dcfce | ||
|
|
3c892eb1aa | ||
|
|
7907508240 | ||
|
|
602a13660a | ||
|
|
2adead91bf | ||
|
|
ca6e27b1f7 | ||
|
|
76082a2e61 | ||
|
|
83b1993cd2 | ||
|
|
18d569aad8 | ||
|
|
30987d5ad0 | ||
|
|
b71c95192e | ||
|
|
f6269ad0ce | ||
|
|
8f374e5244 | ||
|
|
c497faa07a | ||
|
|
2033eec0e8 | ||
|
|
76ffc0c509 | ||
|
|
538377034f | ||
|
|
33e0084e93 | ||
|
|
1fa58cab6b | ||
|
|
9747f19343 | ||
|
|
51004da441 | ||
|
|
266cb83ba9 | ||
|
|
1d7b3523ae | ||
|
|
3924077b97 | ||
|
|
868eab0344 | ||
|
|
9aec950593 | ||
|
|
dc5ab92a62 | ||
|
|
55d61e3282 | ||
|
|
60965c1b37 | ||
|
|
f5c595fa2e | ||
|
|
8a3e4b2041 | ||
|
|
de90a73a83 | ||
|
|
4721f5fda2 | ||
|
|
50f9364f7a | ||
|
|
ceb9eafe27 | ||
|
|
4e15117746 | ||
|
|
b87b43cfa8 | ||
|
|
caf056caf1 | ||
|
|
c5953b584f | ||
|
|
de053edeab | ||
|
|
392e675bd4 | ||
|
|
e53c8bd43f | ||
|
|
976d5e2bb3 | ||
|
|
d1a1c9308a | ||
|
|
1a8e162eb9 | ||
|
|
fbac03e9e1 | ||
|
|
b89a1cd066 | ||
|
|
780e80a4f9 | ||
|
|
d6bc1b8eb1 | ||
|
|
5783d10696 | ||
|
|
97e06b6284 | ||
|
|
09f7f1f5e0 | ||
|
|
943d116b69 | ||
|
|
55224aa221 | ||
|
|
05cd1fd0a8 | ||
|
|
e8762bfb25 | ||
|
|
242d212402 | ||
|
|
b14522f22d | ||
|
|
4f43756c0e | ||
|
|
4e9b724070 | ||
|
|
774c1678be | ||
|
|
bb18a7278e | ||
|
|
f2609dba56 | ||
|
|
071c57c5a2 | ||
|
|
caf76f9cd9 | ||
|
|
012b61ae8e | ||
|
|
936f91f204 | ||
|
|
de28bd4660 | ||
|
|
e60a333aff | ||
|
|
b9664906d1 | ||
|
|
910cf73515 | ||
|
|
c70bea5f62 | ||
|
|
cefb6463c5 | ||
|
|
7059b64948 | ||
|
|
76bf91bc0a | ||
|
|
3679eecfc2 | ||
|
|
ac7875011d | ||
|
|
83b708368f | ||
|
|
140d585122 | ||
|
|
848535a343 | ||
|
|
3fcf90edd7 | ||
|
|
0e7597edcc | ||
|
|
5f6c60656d | ||
|
|
b85220fc65 | ||
|
|
8c038ae662 | ||
|
|
84e3fdb4ac | ||
|
|
a0eb2d5a8d | ||
|
|
ed03bc372d | ||
|
|
ecc2d70c3c | ||
|
|
2995cf9fa6 | ||
|
|
2823a0f52a | ||
|
|
04fe61bf94 | ||
|
|
4b13c8db90 | ||
|
|
33af2f1e44 | ||
|
|
ac477c3d0d | ||
|
|
0fd7a1287b | ||
|
|
8fa09a41ff | ||
|
|
d932f9f1e2 | ||
|
|
16e54284fb | ||
|
|
61e1f87d18 | ||
|
|
65a460a9c3 | ||
|
|
3cd58548db | ||
|
|
7f5609a3eb | ||
|
|
23bab5a2b9 | ||
|
|
9919904c97 | ||
|
|
5df569d9d3 | ||
|
|
e8c9a5ecea | ||
|
|
87bc0b957c | ||
|
|
65d01303c5 | ||
|
|
887e00ca37 | ||
|
|
3443bf9941 | ||
|
|
28452a343b | ||
|
|
c8f94a4cae | ||
|
|
807491a8fd | ||
|
|
9dbe8d2a71 | ||
|
|
ab400af39e | ||
|
|
a8dc7c08e6 | ||
|
|
fc9f2a23fb | ||
|
|
0bbbc5f4cd | ||
|
|
e5f8259981 | ||
|
|
359b6de304 | ||
|
|
c321f138e9 | ||
|
|
5b10939269 | ||
|
|
b0184ca756 | ||
|
|
e092e256c5 | ||
|
|
7383043837 | ||
|
|
22e255f706 | ||
|
|
9d8d5d0cd5 | ||
|
|
f2c0c9acf8 | ||
|
|
33597d5232 | ||
|
|
228d22f9f0 | ||
|
|
754a1d0f06 | ||
|
|
ec7951bd93 | ||
|
|
ac0a89ae26 | ||
|
|
8568f4c2a9 | ||
|
|
6ef198e705 | ||
|
|
8fc379f30d | ||
|
|
46306db274 | ||
|
|
b13e130f7c | ||
|
|
76b784319d | ||
|
|
6342e3263b | ||
|
|
49e1d2107e | ||
|
|
36de22ef1c | ||
|
|
865fe1917f | ||
|
|
c00673ffcb | ||
|
|
7ae92c1c2f | ||
|
|
f0e55abab5 | ||
|
|
ce03c56030 | ||
|
|
5bb01f47ff | ||
|
|
a0f2803a80 | ||
|
|
5679500c76 | ||
|
|
7e1846dfda | ||
|
|
e5fb3bd9b1 | ||
|
|
da5f52db74 | ||
|
|
e7e960e5ec | ||
|
|
ed4f1fe6f8 | ||
|
|
2a8ba00024 | ||
|
|
3f9ae7fecc | ||
|
|
76786f7a01 | ||
|
|
99ae80cc12 | ||
|
|
b925f7e419 | ||
|
|
14d5461085 | ||
|
|
88cbbe69b2 | ||
|
|
90bd8d45b4 | ||
|
|
c370ee8018 | ||
|
|
9a4e64e13f | ||
|
|
dc771f51e8 | ||
|
|
86ee80f607 | ||
|
|
b14adc29f5 | ||
|
|
ec9954fc34 | ||
|
|
675d44c798 | ||
|
|
1f3f1a95ce | ||
|
|
83c2b4ff3c | ||
|
|
3b2934d4ae | ||
|
|
d95c53bbb6 | ||
|
|
131c58fdae | ||
|
|
3cb2c43003 | ||
|
|
222d145753 | ||
|
|
3225f283cb | ||
|
|
95b9c7c421 | ||
|
|
3a64907ce2 | ||
|
|
00921b2603 | ||
|
|
811ed57b14 | ||
|
|
6cfea0ce5b | ||
|
|
f2c3bd54d6 | ||
|
|
b0c327854c | ||
|
|
c7a9b5ccf6 | ||
|
|
8469d13a12 | ||
|
|
1f38c25e6a | ||
|
|
90a6315e2b | ||
|
|
651251b371 | ||
|
|
992fee5620 | ||
|
|
8f867540ba | ||
|
|
f7fc9ec32e | ||
|
|
b5aefd251e | ||
|
|
b7941187ff | ||
|
|
5b2fc12480 | ||
|
|
86830f91ef | ||
|
|
b5f66408fc | ||
|
|
9a318db6fb | ||
|
|
a95de9ff99 | ||
|
|
e83ca8425f | ||
|
|
b95e381a56 | ||
|
|
6a2c59700e | ||
|
|
49d91fb127 | ||
|
|
564f659778 | ||
|
|
fa31f8667f | ||
|
|
7d5c246a1f | ||
|
|
4900cfd402 | ||
|
|
5e5cdb181d | ||
|
|
1f65980f26 | ||
|
|
bd1d81c1b8 | ||
|
|
5de3dc7737 | ||
|
|
f7bf010cfa | ||
|
|
68375469c5 | ||
|
|
4c73ee7d82 | ||
|
|
32aeb97c34 | ||
|
|
b576f34893 | ||
|
|
39015d79d4 | ||
|
|
87c0702959 | ||
|
|
6fa8a46a8a | ||
|
|
7d465ca489 | ||
|
|
49bb77c098 | ||
|
|
7345cc9943 | ||
|
|
f7e71100f0 | ||
|
|
e2788b86a4 | ||
|
|
2cb350468b | ||
|
|
d962af1f18 | ||
|
|
292343660c | ||
|
|
84458fb660 | ||
|
|
94b0021453 | ||
|
|
05b45aa65a | ||
|
|
37b6dd19f0 | ||
|
|
995e0c6c51 | ||
|
|
799c650f32 | ||
|
|
33f5474033 | ||
|
|
bc3bdb835e | ||
|
|
1a1d4111fb | ||
|
|
53a4760034 | ||
|
|
ca03fc2fc3 | ||
|
|
35fe734ddf | ||
|
|
edf544ec93 | ||
|
|
e4abe4efd5 | ||
|
|
30ee570ef7 | ||
|
|
64091c1f29 | ||
|
|
cb0de46e7d | ||
|
|
a9ba2b50f9 | ||
|
|
7dd4db13a1 | ||
|
|
41c33e0626 | ||
|
|
94b2688073 | ||
|
|
08e578b4b4 | ||
|
|
e68ec2eb56 | ||
|
|
0f2686a102 | ||
|
|
da628ca26d | ||
|
|
31fde475a3 | ||
|
|
0533f3a070 | ||
|
|
1a93ce1d43 | ||
|
|
71764ad364 | ||
|
|
6a96729055 | ||
|
|
356d736f4e | ||
|
|
14701369bd | ||
|
|
b14e475db0 | ||
|
|
d6fd01d210 | ||
|
|
77edec5f76 | ||
|
|
e843203bb6 | ||
|
|
89d43ae52d | ||
|
|
10e13ce8f8 | ||
|
|
1f43a68612 | ||
|
|
3afdce151b | ||
|
|
378d9e7758 | ||
|
|
f564ca1eb5 | ||
|
|
09d2878e1d | ||
|
|
afdf4a268a | ||
|
|
0958376bb4 | ||
|
|
3c2307dca8 | ||
|
|
0d0eca89c2 | ||
|
|
a279085526 | ||
|
|
a9fdba83cc | ||
|
|
78ef6e56e0 | ||
|
|
54ce6aaffa | ||
|
|
7c5e82e31d | ||
|
|
a2b4a36414 | ||
|
|
4772b58454 | ||
|
|
fc615a04f6 | ||
|
|
1f03db1ec0 | ||
|
|
898d703a67 | ||
|
|
3248910174 | ||
|
|
88e7f35995 | ||
|
|
69a7f86559 | ||
|
|
57950e2637 | ||
|
|
e56fa732fa | ||
|
|
d2945913ce | ||
|
|
fc4d9260bf | ||
|
|
ff6ecb81d7 | ||
|
|
d1becb3b1e | ||
|
|
8df5a5ec4b | ||
|
|
37e63cc610 | ||
|
|
44de8438ef | ||
|
|
011f8c65f5 | ||
|
|
e7f1f019d6 | ||
|
|
be0f7b0067 | ||
|
|
0694f46fcd | ||
|
|
e5e66d8cc0 | ||
|
|
d4c6065e45 | ||
|
|
2208403c20 | ||
|
|
2f2580d2d3 | ||
|
|
5daf4a19b7 | ||
|
|
154c2b2da3 | ||
|
|
ab7ee92112 | ||
|
|
3a2bb63c98 | ||
|
|
241e16dd06 | ||
|
|
3bbe71f2c9 | ||
|
|
ba798287f9 | ||
|
|
e1c34a3689 | ||
|
|
257e6dfb1c | ||
|
|
05d1535823 | ||
|
|
21e8277dd9 | ||
|
|
1ed4179b70 | ||
|
|
448c239f9f | ||
|
|
b947c96858 | ||
|
|
b1c76c0ba6 | ||
|
|
4c3248065e | ||
|
|
f609d36818 | ||
|
|
e3eba8b39f | ||
|
|
679ef22438 | ||
|
|
7148738112 | ||
|
|
02c4d40f94 | ||
|
|
4239b1358e | ||
|
|
21e99598fc | ||
|
|
54207e3f33 | ||
|
|
5849d351c2 | ||
|
|
eac8381981 | ||
|
|
50339a2480 | ||
|
|
dddd8f32e8 | ||
|
|
caf07cd8ba | ||
|
|
2802e04688 | ||
|
|
492d1cfa8f | ||
|
|
f36b91c3cc | ||
|
|
60f2482082 | ||
|
|
8d7c6f46b7 | ||
|
|
590403650e | ||
|
|
f4b46763a4 | ||
|
|
68c749b378 | ||
|
|
2a1eca1539 | ||
|
|
8cc7b525d9 | ||
|
|
711cabcf9b | ||
|
|
b9b0745f30 | ||
|
|
f7f4f02d4a | ||
|
|
3d32377cb9 | ||
|
|
0cfcfa0026 | ||
|
|
2a0322541d | ||
|
|
fb0c6d42eb | ||
|
|
4867df5fe8 | ||
|
|
e88f98418a | ||
|
|
6769ca8905 | ||
|
|
8e9d6ae084 | ||
|
|
ef7f1334fe | ||
|
|
45b2b81fe4 | ||
|
|
ab4004fae0 | ||
|
|
cd91bc0628 | ||
|
|
6d534d312f | ||
|
|
ab49a125b2 | ||
|
|
2d5b70ab85 | ||
|
|
6b675d5def | ||
|
|
5779cddf22 | ||
|
|
77b50c0be3 | ||
|
|
aeebe5015e | ||
|
|
fbbe1a05a0 | ||
|
|
19bfa3a7c3 | ||
|
|
13c85b3a45 | ||
|
|
8e0adc9514 | ||
|
|
94ee60b832 | ||
|
|
00b623d823 | ||
|
|
d39b190788 | ||
|
|
b8ba6e39e2 | ||
|
|
90d347dc89 | ||
|
|
77ea9dfac9 | ||
|
|
1d616c7ec6 | ||
|
|
0eab54cbdc | ||
|
|
62a970e8c3 | ||
|
|
7c23cd7c4c | ||
|
|
e233e9be16 | ||
|
|
09d98cff7d | ||
|
|
a3d6573d93 | ||
|
|
38ec50bf0e | ||
|
|
a8c380c67a | ||
|
|
b8a8aa53ba | ||
|
|
3b1f232bc0 | ||
|
|
f846cf32fd | ||
|
|
48100ead55 | ||
|
|
3bd7c00038 | ||
|
|
6962d22142 | ||
|
|
a4014c3f39 | ||
|
|
4758acc413 | ||
|
|
939ffcd42a | ||
|
|
403254a983 | ||
|
|
21c6c07b39 | ||
|
|
070a830eaa | ||
|
|
c635d21180 | ||
|
|
19c9c5491b | ||
|
|
c2befaee46 | ||
|
|
7dc702c626 | ||
|
|
b8b2dfda76 | ||
|
|
97f5ffc8ae | ||
|
|
241abd3c50 | ||
|
|
777e629b3d | ||
|
|
1543c990ca | ||
|
|
b0f5ab9776 | ||
|
|
fdedaa073a | ||
|
|
f8d032d9fc | ||
|
|
64e20a1350 | ||
|
|
0c8eea65a5 |
@@ -1,124 +0,0 @@
|
|||||||
{
|
|
||||||
"files": [
|
|
||||||
"README.md"
|
|
||||||
],
|
|
||||||
"imageSize": 100,
|
|
||||||
"commit": false,
|
|
||||||
"contributors": [
|
|
||||||
{
|
|
||||||
"login": "liyasthomas",
|
|
||||||
"name": "Liyas Thomas",
|
|
||||||
"avatar_url": "https://avatars1.githubusercontent.com/u/10395817?v=4",
|
|
||||||
"profile": "https://liyasthomas.web.app",
|
|
||||||
"contributions": [
|
|
||||||
"code",
|
|
||||||
"design"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "NBTX",
|
|
||||||
"name": "John Harker",
|
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/43181178?v=4",
|
|
||||||
"profile": "https://github.com/NBTX",
|
|
||||||
"contributions": [
|
|
||||||
"code",
|
|
||||||
"design"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "larouxn",
|
|
||||||
"name": "Nicholas La Roux",
|
|
||||||
"avatar_url": "https://avatars0.githubusercontent.com/u/1557529?v=4",
|
|
||||||
"profile": "https://nicholaslaroux.com",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "yubathom",
|
|
||||||
"name": "Thomas Yuba",
|
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/4117768?v=4",
|
|
||||||
"profile": "https://github.com/yubathom",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "nickpalenchar",
|
|
||||||
"name": "Nick Palenchar",
|
|
||||||
"avatar_url": "https://avatars1.githubusercontent.com/u/7539781?v=4",
|
|
||||||
"profile": "http://www.linkedin.com/in/nickpalenchar",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "AndrewBastin",
|
|
||||||
"name": "Andrew Bastin",
|
|
||||||
"avatar_url": "https://avatars2.githubusercontent.com/u/9131943?v=4",
|
|
||||||
"profile": "https://github.com/AndrewBastin",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "vlad0337187",
|
|
||||||
"name": "Vladislav",
|
|
||||||
"avatar_url": "https://avatars1.githubusercontent.com/u/12682937?v=4",
|
|
||||||
"profile": "https://github.com/vlad0337187",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "izerozlu",
|
|
||||||
"name": "izerozlu",
|
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/17386157?v=4",
|
|
||||||
"profile": "https://github.com/izerozlu",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "JacobAnavisca",
|
|
||||||
"name": "Jacob Anavisca",
|
|
||||||
"avatar_url": "https://avatars2.githubusercontent.com/u/21232366?v=4",
|
|
||||||
"profile": "https://github.com/JacobAnavisca",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "nityanandagohain",
|
|
||||||
"name": "Nityananda Gohain",
|
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/26831659?v=4",
|
|
||||||
"profile": "http://nityanandagohain.github.io",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "hosseinnedaee",
|
|
||||||
"name": "Hossein Nedaee",
|
|
||||||
"avatar_url": "https://avatars2.githubusercontent.com/u/42691357?v=4",
|
|
||||||
"profile": "https://github.com/hosseinnedaee",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"login": "jamesgeorge007",
|
|
||||||
"name": "James George",
|
|
||||||
"avatar_url": "https://avatars2.githubusercontent.com/u/25279263?v=4",
|
|
||||||
"profile": "https://ghuser.io/jamesgeorge007",
|
|
||||||
"contributions": [
|
|
||||||
"code"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"contributorsPerLine": 7,
|
|
||||||
"projectName": "postwoman",
|
|
||||||
"projectOwner": "liyasthomas",
|
|
||||||
"repoType": "github",
|
|
||||||
"repoHost": "https://github.com"
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
version: 1
|
|
||||||
update_configs:
|
|
||||||
- package_manager: "javascript"
|
|
||||||
directory: "/"
|
|
||||||
update_schedule: "weekly"
|
|
||||||
default_labels:
|
|
||||||
- "Dependency upgrade"
|
|
||||||
default_reviewers:
|
|
||||||
- "liyasthomas"
|
|
||||||
@@ -30,7 +30,7 @@ coverage
|
|||||||
# nyc test coverage
|
# nyc test coverage
|
||||||
.nyc_output
|
.nyc_output
|
||||||
|
|
||||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
.grunt
|
.grunt
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
# Bower dependency directory (https://bower.io/)
|
||||||
@@ -97,8 +97,8 @@ sw.*
|
|||||||
# Vim swap files
|
# Vim swap files
|
||||||
*.swp
|
*.swp
|
||||||
|
|
||||||
# Postwoman build data
|
# Build data
|
||||||
.postwoman
|
.hoppscotch
|
||||||
|
|
||||||
# File explorer
|
# File explorer
|
||||||
.directory
|
.directory
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# https://editorconfig.org
|
# EditorConfig is awesome: https://EditorConfig.org
|
||||||
|
|
||||||
root = true
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
indent_size = 2
|
|
||||||
indent_style = space
|
indent_style = space
|
||||||
charset = utf-8
|
indent_size = 2
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
insert_final_newline = true
|
charset = utf-8
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
|
insert_final_newline = true
|
||||||
|
|||||||
@@ -1,14 +1,5 @@
|
|||||||
{
|
{
|
||||||
"projects": {
|
"projects": {
|
||||||
"default": "postwoman-api"
|
"default": "postwoman-api"
|
||||||
},
|
|
||||||
"targets": {
|
|
||||||
"postwoman-api": {
|
|
||||||
"hosting": {
|
|
||||||
"postwoman": [
|
|
||||||
"postwoman"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
5
.github/FUNDING.yml
vendored
5
.github/FUNDING.yml
vendored
@@ -1,3 +1,2 @@
|
|||||||
open_collective: postwoman
|
github: hoppscotch
|
||||||
patreon: liyasthomas
|
open_collective: hoppscotch
|
||||||
custom: https://www.paypal.me/liyascthomas
|
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/custom.md
vendored
2
.github/ISSUE_TEMPLATE/custom.md
vendored
@@ -6,5 +6,3 @@ labels: ''
|
|||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
10
.github/dependabot.yml
vendored
Normal file
10
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: npm
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: weekly
|
||||||
|
time: '00:00'
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
reviewers:
|
||||||
|
- liyasthomas
|
||||||
5
.github/semantic.yml
vendored
Normal file
5
.github/semantic.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Always validate the PR title AND all the commits
|
||||||
|
titleAndCommits: true
|
||||||
|
# Allows use of Merge commits (eg on github: "Merge branch 'master' into feature/ride-unicorns")
|
||||||
|
# this is only relevant when using commitsOnly: true (or titleAndCommits: true)
|
||||||
|
allowMergeCommits: true
|
||||||
61
.github/workflows/codeql-analysis.yml
vendored
Normal file
61
.github/workflows/codeql-analysis.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
name: "Code Scanning - Action"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
schedule:
|
||||||
|
# ┌───────────── minute (0 - 59)
|
||||||
|
# │ ┌───────────── hour (0 - 23)
|
||||||
|
# │ │ ┌───────────── day of the month (1 - 31)
|
||||||
|
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
|
||||||
|
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
|
||||||
|
# │ │ │ │ │
|
||||||
|
# │ │ │ │ │
|
||||||
|
# │ │ │ │ │
|
||||||
|
# * * * * *
|
||||||
|
- cron: '0 0 * * 6'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
CodeQL-Build:
|
||||||
|
# CodeQL runs on ubuntu-latest, windows-latest, and macos-latest
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
# required for all workflows
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
# only required for workflows in private repositories
|
||||||
|
actions: read
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
# Initializes the CodeQL tools for scanning.
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v1
|
||||||
|
# Override language selection by uncommenting this and choosing your languages
|
||||||
|
# with:
|
||||||
|
# languages: go, javascript, csharp, python, cpp, java
|
||||||
|
|
||||||
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
|
# If this step fails, then you should remove it and run the build manually (see below).
|
||||||
|
- name: Autobuild
|
||||||
|
uses: github/codeql-action/autobuild@v1
|
||||||
|
|
||||||
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
|
# 📚 https://git.io/JvXDl
|
||||||
|
|
||||||
|
# ✏️ If the Autobuild fails above, remove it and uncomment the following
|
||||||
|
# three lines and modify them (or add more) to build your code if your
|
||||||
|
# project uses a compiled language
|
||||||
|
|
||||||
|
#- run: |
|
||||||
|
# make bootstrap
|
||||||
|
# make release
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v1
|
||||||
18
.github/workflows/deploy-prod.yml
vendored
Normal file
18
.github/workflows/deploy-prod.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: Deploy to Live Channel
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy_live_website:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: FirebaseExtended/action-hosting-deploy@v0
|
||||||
|
with:
|
||||||
|
repoToken: '${{ secrets.GITHUB_TOKEN }}'
|
||||||
|
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_POSTWOMAN_API }}'
|
||||||
|
channelId: live
|
||||||
|
projectId: postwoman-api
|
||||||
39
.github/workflows/publish-docker.yml
vendored
Normal file
39
.github/workflows/publish-docker.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: Publish Docker image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
push_to_registry:
|
||||||
|
name: Push Docker image to Docker Hub
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
|
||||||
|
with:
|
||||||
|
images: hoppscotch/hoppscotch
|
||||||
|
flavor: |
|
||||||
|
latest=true
|
||||||
|
prefix=
|
||||||
|
suffix=
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
28
.github/workflows/tests.yml
vendored
Normal file
28
.github/workflows/tests.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
name: Node.js CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
node-version: [14.x]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
- name: Install pnpm
|
||||||
|
run: curl -f https://get.pnpm.io/v6.14.js | node - add --global pnpm@6
|
||||||
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node-version }}
|
||||||
|
cache: pnpm
|
||||||
|
- name: Run tests
|
||||||
|
run: pnpm i && pnpm -r test
|
||||||
12
.gitignore
vendored
12
.gitignore
vendored
@@ -26,7 +26,7 @@ coverage
|
|||||||
# nyc test coverage
|
# nyc test coverage
|
||||||
.nyc_output
|
.nyc_output
|
||||||
|
|
||||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
.grunt
|
.grunt
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
# Bower dependency directory (https://bower.io/)
|
||||||
@@ -93,8 +93,8 @@ sw.*
|
|||||||
# Vim swap files
|
# Vim swap files
|
||||||
*.swp
|
*.swp
|
||||||
|
|
||||||
# Postwoman build data
|
# Build data
|
||||||
.postwoman
|
.hoppscotch
|
||||||
|
|
||||||
# File explorer
|
# File explorer
|
||||||
.directory
|
.directory
|
||||||
@@ -104,3 +104,9 @@ tests/*/screenshots
|
|||||||
|
|
||||||
# Tests videos
|
# Tests videos
|
||||||
tests/*/videos
|
tests/*/videos
|
||||||
|
|
||||||
|
# Local Netlify folder
|
||||||
|
.netlify
|
||||||
|
|
||||||
|
# Andrew's crazy Volar shim generator
|
||||||
|
shims-volar.d.ts
|
||||||
4
.husky/commit-msg
Executable file
4
.husky/commit-msg
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
npx --no-install commitlint --edit ""
|
||||||
4
.husky/pre-commit
Executable file
4
.husky/pre-commit
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
npm run pre-commit
|
||||||
8
.prettierignore
Normal file
8
.prettierignore
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
.dependabot
|
||||||
|
.github
|
||||||
|
.nuxt
|
||||||
|
.hoppscotch
|
||||||
|
.vscode
|
||||||
|
package-lock.json
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
3
.prettierrc.js
Normal file
3
.prettierrc.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
semi: false
|
||||||
|
}
|
||||||
56
.travis.yml
56
.travis.yml
@@ -1,56 +0,0 @@
|
|||||||
# == INSTRUCTIONS FOR SETTING UP TRAVIS (and GitHub Pages) ==
|
|
||||||
#
|
|
||||||
# 1. Find this repository in your Travis-CI dashboard.
|
|
||||||
# open settings and add an environment variable called
|
|
||||||
# GITHUB_ACCESS_TOKEN and set it to your personal access token.addons:
|
|
||||||
# See: https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line
|
|
||||||
#
|
|
||||||
# **DO NOT TURN ON 'Display value in build log'!!!!**
|
|
||||||
#
|
|
||||||
# 2. Push the code to the repository.
|
|
||||||
# 3. Set the GitHub Pages source in the GitHub repository settings to the
|
|
||||||
# gh-pages branch.
|
|
||||||
|
|
||||||
language: node_js
|
|
||||||
node_js:
|
|
||||||
- "12"
|
|
||||||
|
|
||||||
os: linux
|
|
||||||
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- libgconf-2-4 # cypress binary dependency
|
|
||||||
|
|
||||||
env:
|
|
||||||
- DEPLOY_ENV=POSTWOMAN_IO
|
|
||||||
|
|
||||||
cache:
|
|
||||||
npm: true
|
|
||||||
directories:
|
|
||||||
- "node_modules"
|
|
||||||
- ~/.cache
|
|
||||||
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- "master"
|
|
||||||
|
|
||||||
install:
|
|
||||||
- "npm install firebase-tools"
|
|
||||||
- "npm install"
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- "npm run build" # use nuxt build and start to run tests
|
|
||||||
- "npm run test"
|
|
||||||
|
|
||||||
script:
|
|
||||||
- "cd functions"
|
|
||||||
- "npm install"
|
|
||||||
- "cd .."
|
|
||||||
- "npm run generate"
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
webhooks: https://www.travisbuddy.com
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- firebase deploy --token $FIREBASE_TOKEN
|
|
||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"deepcode.review.results.hideInformationIssues": false
|
|
||||||
}
|
|
||||||
644
CHANGELOG.md
644
CHANGELOG.md
@@ -1,25 +1,399 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [v1.12.0](https://github.com/hoppscotch/hoppscotch/tree/v1.12.0) (2020-05-27)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/hoppscotch/hoppscotch/compare/v1.10.0...v1.12.0)
|
||||||
|
|
||||||
|
## [v1.10.0](https://github.com/hoppscotch/hoppscotch/tree/v1.10.0) (2020-04-10)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/hoppscotch/hoppscotch/compare/v1.9.9...v1.10.0)
|
||||||
|
|
||||||
|
## [v1.9.9](https://github.com/liyasthomas/postwoman/tree/v1.9.9) (2020-07-30)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.9.7...v1.9.9)
|
||||||
|
|
||||||
|
**Fixed bugs:**
|
||||||
|
|
||||||
|
- TextDecoder.decode\(\) TypeError hangs the whole app [\#1032](https://github.com/liyasthomas/postwoman/issues/1032)
|
||||||
|
- response content doesn't fit to the text area when resizing [\#970](https://github.com/liyasthomas/postwoman/issues/970)
|
||||||
|
- typing into headers input fields [\#912](https://github.com/liyasthomas/postwoman/issues/912)
|
||||||
|
- Environment variable template \(\<\<foo\>\>\) appears urlencoded \(%3C%3Cfoo%3E%3E\) [\#896](https://github.com/liyasthomas/postwoman/issues/896)
|
||||||
|
- TypeError: Cannot read property 'startsWith' of undefined - after getting 401 response [\#894](https://github.com/liyasthomas/postwoman/issues/894)
|
||||||
|
- When deleting the header, the key is not updated [\#886](https://github.com/liyasthomas/postwoman/issues/886)
|
||||||
|
- Cannot introduce query parameters in URL for WebSocket [\#873](https://github.com/liyasthomas/postwoman/issues/873)
|
||||||
|
- Response content-type as `text/html` with content in `json` cause content area display empty [\#869](https://github.com/liyasthomas/postwoman/issues/869)
|
||||||
|
- Proxy privacy policy link [\#865](https://github.com/liyasthomas/postwoman/issues/865)
|
||||||
|
|
||||||
|
**Closed issues:**
|
||||||
|
|
||||||
|
- Collections | Request UI Issue [\#1028](https://github.com/liyasthomas/postwoman/issues/1028)
|
||||||
|
- JSON not showing up in the correct format [\#1023](https://github.com/liyasthomas/postwoman/issues/1023)
|
||||||
|
- ignore duplicates in history [\#1022](https://github.com/liyasthomas/postwoman/issues/1022)
|
||||||
|
- change history menu [\#1021](https://github.com/liyasthomas/postwoman/issues/1021)
|
||||||
|
- integrate parameters with history [\#1020](https://github.com/liyasthomas/postwoman/issues/1020)
|
||||||
|
- Why some Chrome do not have the ability to install PWA? [\#1015](https://github.com/liyasthomas/postwoman/issues/1015)
|
||||||
|
- Shall we have the team management ability and some public documents? [\#1014](https://github.com/liyasthomas/postwoman/issues/1014)
|
||||||
|
- I have edit this config, but it is not available to login. [\#1013](https://github.com/liyasthomas/postwoman/issues/1013)
|
||||||
|
- User login is disabled after i run it on our local server. [\#1012](https://github.com/liyasthomas/postwoman/issues/1012)
|
||||||
|
- postwoman google login doesn't work behind ingress or reverse proxy [\#1009](https://github.com/liyasthomas/postwoman/issues/1009)
|
||||||
|
- Compile error [\#1006](https://github.com/liyasthomas/postwoman/issues/1006)
|
||||||
|
- Postman Web is now out. It might be great to find a USP for Postwoman [\#1000](https://github.com/liyasthomas/postwoman/issues/1000)
|
||||||
|
- Saving response data in env variable [\#984](https://github.com/liyasthomas/postwoman/issues/984)
|
||||||
|
- contentType 无法使用 form-date 上传文件 [\#983](https://github.com/liyasthomas/postwoman/issues/983)
|
||||||
|
- Currently completely broken [\#980](https://github.com/liyasthomas/postwoman/issues/980)
|
||||||
|
- localhost request error [\#979](https://github.com/liyasthomas/postwoman/issues/979)
|
||||||
|
- Installing postwoman locally [\#969](https://github.com/liyasthomas/postwoman/issues/969)
|
||||||
|
- Do I install NodeJS for my online environment [\#968](https://github.com/liyasthomas/postwoman/issues/968)
|
||||||
|
- Collections and Environment Module [\#967](https://github.com/liyasthomas/postwoman/issues/967)
|
||||||
|
- Textarea display problem in super hi-dpi [\#965](https://github.com/liyasthomas/postwoman/issues/965)
|
||||||
|
- TypeError: Cannot read property 'value' of undefined - when logged in [\#961](https://github.com/liyasthomas/postwoman/issues/961)
|
||||||
|
- Enable user-select on websocket and other realtime message logs [\#951](https://github.com/liyasthomas/postwoman/issues/951)
|
||||||
|
- POST requet error [\#947](https://github.com/liyasthomas/postwoman/issues/947)
|
||||||
|
- Unable to fetch schema from localhost GraphQL server. [\#940](https://github.com/liyasthomas/postwoman/issues/940)
|
||||||
|
- Support downloading binary responses [\#929](https://github.com/liyasthomas/postwoman/issues/929)
|
||||||
|
- Integrate PostWoman In our Webapp [\#918](https://github.com/liyasthomas/postwoman/issues/918)
|
||||||
|
- proxy issue [\#911](https://github.com/liyasthomas/postwoman/issues/911)
|
||||||
|
- Button to cancel requests [\#909](https://github.com/liyasthomas/postwoman/issues/909)
|
||||||
|
- How to upload a file with a post request [\#908](https://github.com/liyasthomas/postwoman/issues/908)
|
||||||
|
- Cant Import Postman Global Environment Variables [\#907](https://github.com/liyasthomas/postwoman/issues/907)
|
||||||
|
- Postwoman Docker Container behind Reverse Proxy [\#906](https://github.com/liyasthomas/postwoman/issues/906)
|
||||||
|
- `pw.response` seems not to work [\#905](https://github.com/liyasthomas/postwoman/issues/905)
|
||||||
|
- Could postman add Sign in with LDAP server? [\#901](https://github.com/liyasthomas/postwoman/issues/901)
|
||||||
|
- Collections & Environments not synced [\#900](https://github.com/liyasthomas/postwoman/issues/900)
|
||||||
|
- Add authentication to MQTT [\#898](https://github.com/liyasthomas/postwoman/issues/898)
|
||||||
|
- Labels are lost when using requests from collections [\#897](https://github.com/liyasthomas/postwoman/issues/897)
|
||||||
|
- Handle JSON Parameter list validation [\#891](https://github.com/liyasthomas/postwoman/issues/891)
|
||||||
|
- Nuxt fatal error [\#883](https://github.com/liyasthomas/postwoman/issues/883)
|
||||||
|
- Cannot connect my local websocket server [\#880](https://github.com/liyasthomas/postwoman/issues/880)
|
||||||
|
- Environments not synced after edit [\#877](https://github.com/liyasthomas/postwoman/issues/877)
|
||||||
|
- Can't find Desktop app link anywhere [\#872](https://github.com/liyasthomas/postwoman/issues/872)
|
||||||
|
- Show request completion time [\#871](https://github.com/liyasthomas/postwoman/issues/871)
|
||||||
|
- Make docs on self-hosting Postwoman [\#868](https://github.com/liyasthomas/postwoman/issues/868)
|
||||||
|
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Add trailing backslash to generated cURL code for easier paste-and-execute [\#1033](https://github.com/liyasthomas/postwoman/pull/1033) ([ushuz](https://github.com/ushuz))
|
||||||
|
- Update zh-CN.json [\#1031](https://github.com/liyasthomas/postwoman/pull/1031) ([hantianwei](https://github.com/hantianwei))
|
||||||
|
- Bump firebase from 7.17.0 to 7.17.1 [\#1026](https://github.com/liyasthomas/postwoman/pull/1026) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Update zh-CN.json [\#1024](https://github.com/liyasthomas/postwoman/pull/1024) ([hantianwei](https://github.com/hantianwei))
|
||||||
|
- Bump @nuxtjs/gtm from 2.3.0 to 2.3.2 [\#1019](https://github.com/liyasthomas/postwoman/pull/1019) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Bump firebase from 7.16.1 to 7.17.0 [\#1018](https://github.com/liyasthomas/postwoman/pull/1018) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Fix bugs with the renderer mixins [\#1008](https://github.com/liyasthomas/postwoman/pull/1008) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Bump eslint from 7.4.0 to 7.5.0 [\#1005](https://github.com/liyasthomas/postwoman/pull/1005) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Add Collections section in Docs page [\#1004](https://github.com/liyasthomas/postwoman/pull/1004) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Bump lodash from 4.17.15 to 4.17.19 in /functions [\#999](https://github.com/liyasthomas/postwoman/pull/999) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Bump @nuxtjs/google-analytics from 2.3.0 to 2.4.0 [\#998](https://github.com/liyasthomas/postwoman/pull/998) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Bump firebase from 7.16.0 to 7.16.1 [\#997](https://github.com/liyasthomas/postwoman/pull/997) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Fixed broken network requests in GraphQL [\#995](https://github.com/liyasthomas/postwoman/pull/995) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- fix: replaceWithJSON used wrong commit name [\#993](https://github.com/liyasthomas/postwoman/pull/993) ([perseveringman](https://github.com/perseveringman))
|
||||||
|
- ⬆️ Bump @nuxtjs/toast from 3.3.0 to 3.3.1 [\#992](https://github.com/liyasthomas/postwoman/pull/992) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump start-server-and-test from 1.11.1 to 1.11.2 [\#991](https://github.com/liyasthomas/postwoman/pull/991) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump @nuxtjs/axios from 5.11.0 to 5.12.0 [\#990](https://github.com/liyasthomas/postwoman/pull/990) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump firebase from 7.15.5 to 7.16.0 [\#989](https://github.com/liyasthomas/postwoman/pull/989) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump start-server-and-test from 1.11.0 to 1.11.1 [\#988](https://github.com/liyasthomas/postwoman/pull/988) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump sass-loader from 9.0.1 to 9.0.2 [\#986](https://github.com/liyasthomas/postwoman/pull/986) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump cypress from 4.9.0 to 4.10.0 [\#985](https://github.com/liyasthomas/postwoman/pull/985) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump ace-builds from 1.4.11 to 1.4.12 [\#982](https://github.com/liyasthomas/postwoman/pull/982) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump vuefire from 2.2.2 to 2.2.3 [\#981](https://github.com/liyasthomas/postwoman/pull/981) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump eslint from 7.3.1 to 7.4.0 [\#978](https://github.com/liyasthomas/postwoman/pull/978) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump sass-loader from 9.0.0 to 9.0.1 [\#977](https://github.com/liyasthomas/postwoman/pull/977) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump graphql from 15.2.0 to 15.3.0 [\#976](https://github.com/liyasthomas/postwoman/pull/976) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump nuxt-i18n from 6.13.0 to 6.13.1 [\#975](https://github.com/liyasthomas/postwoman/pull/975) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump sass-loader from 8.0.2 to 9.0.0 [\#973](https://github.com/liyasthomas/postwoman/pull/973) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump nuxt-i18n from 6.12.2 to 6.13.0 [\#972](https://github.com/liyasthomas/postwoman/pull/972) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump graphql from 15.1.0 to 15.2.0 [\#966](https://github.com/liyasthomas/postwoman/pull/966) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump @nuxtjs/sitemap from 2.3.2 to 2.4.0 [\#963](https://github.com/liyasthomas/postwoman/pull/963) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump firebase from 7.15.4 to 7.15.5 [\#962](https://github.com/liyasthomas/postwoman/pull/962) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump eslint from 7.3.0 to 7.3.1 [\#958](https://github.com/liyasthomas/postwoman/pull/958) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump cypress from 4.8.0 to 4.9.0 [\#957](https://github.com/liyasthomas/postwoman/pull/957) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump firebase from 7.15.3 to 7.15.4 [\#956](https://github.com/liyasthomas/postwoman/pull/956) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Binary Responses & Response Lenses [\#955](https://github.com/liyasthomas/postwoman/pull/955) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Improving SEO [\#954](https://github.com/liyasthomas/postwoman/pull/954) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Isolate Netlify, Firebase and Helper functions + Import from absolute… [\#953](https://github.com/liyasthomas/postwoman/pull/953) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Added ability to select text in realtime log [\#952](https://github.com/liyasthomas/postwoman/pull/952) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- ⬆️ Bump firebase from 7.15.1 to 7.15.3 [\#950](https://github.com/liyasthomas/postwoman/pull/950) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump eslint from 7.2.0 to 7.3.0 [\#949](https://github.com/liyasthomas/postwoman/pull/949) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Revert "⬆️ Bump nuxt from 2.12.2 to 2.13.0" [\#946](https://github.com/liyasthomas/postwoman/pull/946) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- ⬆️ Bump nuxt from 2.12.2 to 2.13.0 [\#942](https://github.com/liyasthomas/postwoman/pull/942) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump @nuxtjs/sitemap from 2.3.1 to 2.3.2 [\#939](https://github.com/liyasthomas/postwoman/pull/939) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump graphql from 14.6.0 to 15.1.0 [\#938](https://github.com/liyasthomas/postwoman/pull/938) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Updated readme [\#937](https://github.com/liyasthomas/postwoman/pull/937) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- ⬆️ Bump graphql-language-service-interface from 2.3.3 to 2.4.0 [\#936](https://github.com/liyasthomas/postwoman/pull/936) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- ⬆️ Bump firebase from 7.15.0 to 7.15.1 [\#935](https://github.com/liyasthomas/postwoman/pull/935) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Transpiled ES5 code to ES6/ES7 [\#934](https://github.com/liyasthomas/postwoman/pull/934) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Create Dependabot config file [\#932](https://github.com/liyasthomas/postwoman/pull/932) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Hide download response button for non-JSON responses [\#931](https://github.com/liyasthomas/postwoman/pull/931) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps-dev\): bump cypress from 4.7.0 to 4.8.0 [\#928](https://github.com/liyasthomas/postwoman/pull/928) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- fix: environment and collection sync issue with firebase [\#926](https://github.com/liyasthomas/postwoman/pull/926) ([myussufz](https://github.com/myussufz))
|
||||||
|
- chore\(deps\): bump @nuxtjs/axios from 5.10.3 to 5.11.0 [\#925](https://github.com/liyasthomas/postwoman/pull/925) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump eslint from 7.1.0 to 7.2.0 [\#924](https://github.com/liyasthomas/postwoman/pull/924) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- GraphQL response options only visible when a response is shown [\#923](https://github.com/liyasthomas/postwoman/pull/923) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps\): bump firebase from 7.14.6 to 7.15.0 [\#922](https://github.com/liyasthomas/postwoman/pull/922) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/sitemap from 2.3.0 to 2.3.1 [\#921](https://github.com/liyasthomas/postwoman/pull/921) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Added ability to download GraphQL responses [\#920](https://github.com/liyasthomas/postwoman/pull/920) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.12.1 to 6.12.2 [\#919](https://github.com/liyasthomas/postwoman/pull/919) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/gtm from 2.2.3 to 2.3.0 [\#917](https://github.com/liyasthomas/postwoman/pull/917) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Cancel Request from the Keyboard [\#916](https://github.com/liyasthomas/postwoman/pull/916) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Cancellable Requests [\#915](https://github.com/liyasthomas/postwoman/pull/915) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.12.0 to 6.12.1 [\#914](https://github.com/liyasthomas/postwoman/pull/914) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.14.5 to 7.14.6 [\#913](https://github.com/liyasthomas/postwoman/pull/913) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
|
||||||
|
## [v1.9.7](https://github.com/liyasthomas/postwoman/tree/v1.9.7) (2020-05-12)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.9.5...v1.9.7)
|
||||||
|
|
||||||
|
**Fixed bugs:**
|
||||||
|
|
||||||
|
- Empty header in headers list results in SyntaxError: Failed to execute 'setRequestHeader' [\#765](https://github.com/liyasthomas/postwoman/issues/765)
|
||||||
|
- Getting cannot read value of undefined [\#731](https://github.com/liyasthomas/postwoman/issues/731)
|
||||||
|
- Environment variables in collections [\#642](https://github.com/liyasthomas/postwoman/issues/642)
|
||||||
|
|
||||||
|
**Closed issues:**
|
||||||
|
|
||||||
|
- Import/Export collections from private github repos to share among teams. [\#867](https://github.com/liyasthomas/postwoman/issues/867)
|
||||||
|
- Unable to use postwoman with latest docker image from docker hub [\#866](https://github.com/liyasthomas/postwoman/issues/866)
|
||||||
|
- Access to nonexistent routes will not be redirect to page 404 [\#849](https://github.com/liyasthomas/postwoman/issues/849)
|
||||||
|
- Error: Network Error. Check console for details. [\#827](https://github.com/liyasthomas/postwoman/issues/827)
|
||||||
|
- 'Documentation Generated' response stacking past top of page if submit clicked enough times/fast enough [\#826](https://github.com/liyasthomas/postwoman/issues/826)
|
||||||
|
- The UI could use some improvements [\#825](https://github.com/liyasthomas/postwoman/issues/825)
|
||||||
|
- Postwoman won't build, produces 'FATAL Nuxt build error' [\#824](https://github.com/liyasthomas/postwoman/issues/824)
|
||||||
|
- Improve contrast of UI components in all themes [\#819](https://github.com/liyasthomas/postwoman/issues/819)
|
||||||
|
- Add an option to hide and/or collapse the right panel [\#818](https://github.com/liyasthomas/postwoman/issues/818)
|
||||||
|
- Docker Cannot log in normally in the container [\#817](https://github.com/liyasthomas/postwoman/issues/817)
|
||||||
|
- Body in Request [\#815](https://github.com/liyasthomas/postwoman/issues/815)
|
||||||
|
- How to run postwoman under reverse proxy [\#812](https://github.com/liyasthomas/postwoman/issues/812)
|
||||||
|
- Call local support [\#811](https://github.com/liyasthomas/postwoman/issues/811)
|
||||||
|
- feature [\#810](https://github.com/liyasthomas/postwoman/issues/810)
|
||||||
|
- support response json array [\#805](https://github.com/liyasthomas/postwoman/issues/805)
|
||||||
|
- socket binnery support [\#801](https://github.com/liyasthomas/postwoman/issues/801)
|
||||||
|
- Ability to join and leave rooms in Socket.IO connection [\#796](https://github.com/liyasthomas/postwoman/issues/796)
|
||||||
|
- How can I synchronize my data on local? [\#794](https://github.com/liyasthomas/postwoman/issues/794)
|
||||||
|
- I cant login [\#792](https://github.com/liyasthomas/postwoman/issues/792)
|
||||||
|
- Unresolved merge conflict in index.vue.orig [\#786](https://github.com/liyasthomas/postwoman/issues/786)
|
||||||
|
- You send data my request to Google [\#780](https://github.com/liyasthomas/postwoman/issues/780)
|
||||||
|
- I have question by \#750, it's closed,but my problem is still.... [\#770](https://github.com/liyasthomas/postwoman/issues/770)
|
||||||
|
- Add Format Body option [\#767](https://github.com/liyasthomas/postwoman/issues/767)
|
||||||
|
- Body scroll after modal is open [\#766](https://github.com/liyasthomas/postwoman/issues/766)
|
||||||
|
- text.match is not a function [\#764](https://github.com/liyasthomas/postwoman/issues/764)
|
||||||
|
- Request : Copy response headers [\#763](https://github.com/liyasthomas/postwoman/issues/763)
|
||||||
|
- The accordion \(expand\) labels are out of place on mobile [\#762](https://github.com/liyasthomas/postwoman/issues/762)
|
||||||
|
- why does the graphql case can't be saved? [\#761](https://github.com/liyasthomas/postwoman/issues/761)
|
||||||
|
- Mobile responsiveness issues [\#760](https://github.com/liyasthomas/postwoman/issues/760)
|
||||||
|
- Allow importing environment variables via Postman environment json files [\#759](https://github.com/liyasthomas/postwoman/issues/759)
|
||||||
|
- Report abuse: liyasthomas/postwoman \(Contact Links\) [\#754](https://github.com/liyasthomas/postwoman/issues/754)
|
||||||
|
- Report abuse: liyasthomas/postwoman \(Contact Links\) [\#753](https://github.com/liyasthomas/postwoman/issues/753)
|
||||||
|
- Request headers kept same after changing request type [\#752](https://github.com/liyasthomas/postwoman/issues/752)
|
||||||
|
- I used it to post test,but response network error [\#750](https://github.com/liyasthomas/postwoman/issues/750)
|
||||||
|
- Add compatibility for postman collections & environments [\#746](https://github.com/liyasthomas/postwoman/issues/746)
|
||||||
|
- Improve documentation on how to use environments [\#742](https://github.com/liyasthomas/postwoman/issues/742)
|
||||||
|
- Add GraphQL syntax highlighting [\#741](https://github.com/liyasthomas/postwoman/issues/741)
|
||||||
|
- Broken link to translations branch [\#737](https://github.com/liyasthomas/postwoman/issues/737)
|
||||||
|
- Add docker Images for all Tags [\#722](https://github.com/liyasthomas/postwoman/issues/722)
|
||||||
|
- Provide post-build resources and default setting files [\#714](https://github.com/liyasthomas/postwoman/issues/714)
|
||||||
|
- Theme lacks of contrast [\#709](https://github.com/liyasthomas/postwoman/issues/709)
|
||||||
|
- Postwoman raiase a connection error when communicate with localhost. [\#708](https://github.com/liyasthomas/postwoman/issues/708)
|
||||||
|
- CORS issue when hosting [\#707](https://github.com/liyasthomas/postwoman/issues/707)
|
||||||
|
- Add a description to the request or collection when saving it [\#706](https://github.com/liyasthomas/postwoman/issues/706)
|
||||||
|
- Error: Network Error. Check console for details [\#704](https://github.com/liyasthomas/postwoman/issues/704)
|
||||||
|
- Save collections on account sync turn on [\#679](https://github.com/liyasthomas/postwoman/issues/679)
|
||||||
|
- Tests should be saved together with requests [\#643](https://github.com/liyasthomas/postwoman/issues/643)
|
||||||
|
- npm modules of postwoman's vue components [\#384](https://github.com/liyasthomas/postwoman/issues/384)
|
||||||
|
- \[request\] VS code extension [\#313](https://github.com/liyasthomas/postwoman/issues/313)
|
||||||
|
- remove prerequest \<\< \>\> bindings when pre-request script is toggled off [\#234](https://github.com/liyasthomas/postwoman/issues/234)
|
||||||
|
- Dynamic Headers [\#91](https://github.com/liyasthomas/postwoman/issues/91)
|
||||||
|
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- chore\(deps\): bump @nuxtjs/sitemap from 2.2.1 to 2.3.0 [\#864](https://github.com/liyasthomas/postwoman/pull/864) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- docs: add sboulema as a contributor [\#863](https://github.com/liyasthomas/postwoman/pull/863) ([allcontributors[bot]](https://github.com/apps/allcontributors))
|
||||||
|
- Allow importing environment variables via Postman environment json files [\#862](https://github.com/liyasthomas/postwoman/pull/862) ([sboulema](https://github.com/sboulema))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.11.0 to 6.11.1 [\#861](https://github.com/liyasthomas/postwoman/pull/861) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Produce valid output when showing/copying as code [\#857](https://github.com/liyasthomas/postwoman/pull/857) ([Hydrophobefireman](https://github.com/Hydrophobefireman))
|
||||||
|
- dotenv [\#856](https://github.com/liyasthomas/postwoman/pull/856) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Save Collections/Environments on enabling sync [\#854](https://github.com/liyasthomas/postwoman/pull/854) ([sboulema](https://github.com/sboulema))
|
||||||
|
- chore\(deps\): bump firebase from 7.14.2 to 7.14.3 [\#853](https://github.com/liyasthomas/postwoman/pull/853) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Environment variables in collections [\#851](https://github.com/liyasthomas/postwoman/pull/851) ([sboulema](https://github.com/sboulema))
|
||||||
|
- Add format body option [\#847](https://github.com/liyasthomas/postwoman/pull/847) ([sboulema](https://github.com/sboulema))
|
||||||
|
- Save GraphQL Docs [\#846](https://github.com/liyasthomas/postwoman/pull/846) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps-dev\): bump node-sass from 4.14.0 to 4.14.1 [\#844](https://github.com/liyasthomas/postwoman/pull/844) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Remove not-deleted index.vue merge file [\#842](https://github.com/liyasthomas/postwoman/pull/842) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- URL Path Parameters \#834 [\#840](https://github.com/liyasthomas/postwoman/pull/840) ([sboulema](https://github.com/sboulema))
|
||||||
|
- chore\(deps\): remove stale dependency [\#839](https://github.com/liyasthomas/postwoman/pull/839) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
|
- GraphQL Query Editor Syntax Highlighting [\#838](https://github.com/liyasthomas/postwoman/pull/838) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.2.1 to 10.2.2 [\#837](https://github.com/liyasthomas/postwoman/pull/837) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(store\): better code structure [\#835](https://github.com/liyasthomas/postwoman/pull/835) ([jameslahm](https://github.com/jameslahm))
|
||||||
|
- chore\(deps\): bump @nuxtjs/axios from 5.10.2 to 5.10.3 [\#832](https://github.com/liyasthomas/postwoman/pull/832) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.10.1 to 6.11.0 [\#831](https://github.com/liyasthomas/postwoman/pull/831) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.2.0 to 10.2.1 [\#830](https://github.com/liyasthomas/postwoman/pull/830) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Add ability to navigate through message history [\#828](https://github.com/liyasthomas/postwoman/pull/828) ([jinyus](https://github.com/jinyus))
|
||||||
|
- chore\(config\): delete render option [\#823](https://github.com/liyasthomas/postwoman/pull/823) ([jameslahm](https://github.com/jameslahm))
|
||||||
|
- chore\(deps-dev\): bump cypress from 4.4.1 to 4.5.0 [\#822](https://github.com/liyasthomas/postwoman/pull/822) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.1.7 to 10.2.0 [\#821](https://github.com/liyasthomas/postwoman/pull/821) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Realtime SocketIO support for json user input [\#820](https://github.com/liyasthomas/postwoman/pull/820) ([feydan](https://github.com/feydan))
|
||||||
|
- chore\(deps\): bump @nuxtjs/axios from 5.10.1 to 5.10.2 [\#816](https://github.com/liyasthomas/postwoman/pull/816) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Modify responseType by Object\(json\) or Array\(json5\) [\#813](https://github.com/liyasthomas/postwoman/pull/813) ([shtakai](https://github.com/shtakai))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.9.2 to 6.10.1 [\#809](https://github.com/liyasthomas/postwoman/pull/809) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.14.1 to 7.14.2 [\#808](https://github.com/liyasthomas/postwoman/pull/808) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump node-sass from 4.13.1 to 4.14.0 [\#807](https://github.com/liyasthomas/postwoman/pull/807) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/sitemap from 2.2.0 to 2.2.1 [\#806](https://github.com/liyasthomas/postwoman/pull/806) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/axios from 5.10.0 to 5.10.1 [\#803](https://github.com/liyasthomas/postwoman/pull/803) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.9.1 to 6.9.2 [\#802](https://github.com/liyasthomas/postwoman/pull/802) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.1.6 to 10.1.7 [\#800](https://github.com/liyasthomas/postwoman/pull/800) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump prettier from 2.0.4 to 2.0.5 [\#799](https://github.com/liyasthomas/postwoman/pull/799) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/axios from 5.9.7 to 5.10.0 [\#798](https://github.com/liyasthomas/postwoman/pull/798) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump cypress from 4.4.0 to 4.4.1 [\#797](https://github.com/liyasthomas/postwoman/pull/797) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Listen to all events in socket.io connection [\#795](https://github.com/liyasthomas/postwoman/pull/795) ([konradkalemba](https://github.com/konradkalemba))
|
||||||
|
- Fix postman import with empty url [\#791](https://github.com/liyasthomas/postwoman/pull/791) ([Nikita240](https://github.com/Nikita240))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.1.5 to 10.1.6 [\#789](https://github.com/liyasthomas/postwoman/pull/789) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.1.3 to 10.1.5 [\#787](https://github.com/liyasthomas/postwoman/pull/787) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.14.0 to 7.14.1 [\#782](https://github.com/liyasthomas/postwoman/pull/782) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump yargs-parser from 18.1.2 to 18.1.3 [\#781](https://github.com/liyasthomas/postwoman/pull/781) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump start-server-and-test from 1.10.11 to 1.11.0 [\#778](https://github.com/liyasthomas/postwoman/pull/778) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.8.1 to 6.9.1 [\#776](https://github.com/liyasthomas/postwoman/pull/776) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump ace-builds from 1.4.9 to 1.4.11 [\#775](https://github.com/liyasthomas/postwoman/pull/775) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump cypress from 4.3.0 to 4.4.0 [\#774](https://github.com/liyasthomas/postwoman/pull/774) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.13.2 to 7.14.0 [\#758](https://github.com/liyasthomas/postwoman/pull/758) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump husky from 4.2.3 to 4.2.5 [\#757](https://github.com/liyasthomas/postwoman/pull/757) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.1.2 to 10.1.3 [\#756](https://github.com/liyasthomas/postwoman/pull/756) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Fix indicator if extension is installed [\#748](https://github.com/liyasthomas/postwoman/pull/748) ([levrik](https://github.com/levrik))
|
||||||
|
- Remove support for legacy extensions [\#747](https://github.com/liyasthomas/postwoman/pull/747) ([levrik](https://github.com/levrik))
|
||||||
|
- Fix GQL introspection query not sent through extension [\#745](https://github.com/liyasthomas/postwoman/pull/745) ([levrik](https://github.com/levrik))
|
||||||
|
- chore\(deps-dev\): bump prettier from 2.0.2 to 2.0.4 [\#744](https://github.com/liyasthomas/postwoman/pull/744) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/sitemap from 2.1.0 to 2.2.0 [\#743](https://github.com/liyasthomas/postwoman/pull/743) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.1.1 to 10.1.2 [\#740](https://github.com/liyasthomas/postwoman/pull/740) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.8.0 to 6.8.1 [\#736](https://github.com/liyasthomas/postwoman/pull/736) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump ace-builds from 1.4.8 to 1.4.9 [\#735](https://github.com/liyasthomas/postwoman/pull/735) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.13.1 to 7.13.2 [\#734](https://github.com/liyasthomas/postwoman/pull/734) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump vue-virtual-scroll-list from 1.4.6 to 1.4.7 [\#733](https://github.com/liyasthomas/postwoman/pull/733) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.7.2 to 6.8.0 [\#732](https://github.com/liyasthomas/postwoman/pull/732) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt from 2.12.1 to 2.12.2 [\#729](https://github.com/liyasthomas/postwoman/pull/729) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.7.1 to 6.7.2 [\#728](https://github.com/liyasthomas/postwoman/pull/728) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.1.0 to 10.1.1 [\#727](https://github.com/liyasthomas/postwoman/pull/727) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump cypress from 4.2.0 to 4.3.0 [\#726](https://github.com/liyasthomas/postwoman/pull/726) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.0.10 to 10.1.0 [\#725](https://github.com/liyasthomas/postwoman/pull/725) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.7.0 to 6.7.1 [\#724](https://github.com/liyasthomas/postwoman/pull/724) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/axios from 5.9.6 to 5.9.7 [\#723](https://github.com/liyasthomas/postwoman/pull/723) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.0.9 to 10.0.10 [\#721](https://github.com/liyasthomas/postwoman/pull/721) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/axios from 5.9.5 to 5.9.6 [\#719](https://github.com/liyasthomas/postwoman/pull/719) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/sitemap from 2.0.1 to 2.1.0 [\#718](https://github.com/liyasthomas/postwoman/pull/718) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.13.0 to 7.13.1 [\#717](https://github.com/liyasthomas/postwoman/pull/717) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump yargs-parser from 18.1.1 to 18.1.2 [\#713](https://github.com/liyasthomas/postwoman/pull/713) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.6.1 to 6.7.0 [\#712](https://github.com/liyasthomas/postwoman/pull/712) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt from 2.12.0 to 2.12.1 [\#711](https://github.com/liyasthomas/postwoman/pull/711) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.12.0 to 7.13.0 [\#710](https://github.com/liyasthomas/postwoman/pull/710) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Updating the UI and style files [\#705](https://github.com/liyasthomas/postwoman/pull/705) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.0.8 to 10.0.9 [\#703](https://github.com/liyasthomas/postwoman/pull/703) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Improving performance [\#702](https://github.com/liyasthomas/postwoman/pull/702) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- :package: Updating packages [\#701](https://github.com/liyasthomas/postwoman/pull/701) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- chore\(deps-dev\): bump prettier from 2.0.1 to 2.0.2 [\#700](https://github.com/liyasthomas/postwoman/pull/700) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump prettier from 1.19.1 to 2.0.1 [\#697](https://github.com/liyasthomas/postwoman/pull/697) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
|
||||||
|
## [v1.9.5](https://github.com/liyasthomas/postwoman/tree/v1.9.5) (2020-03-22)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.9.0...v1.9.5)
|
||||||
|
|
||||||
|
**Fixed bugs:**
|
||||||
|
|
||||||
|
- Test script is not run after failing request [\#644](https://github.com/liyasthomas/postwoman/issues/644)
|
||||||
|
- \[HELP\] Auth permission denied [\#621](https://github.com/liyasthomas/postwoman/issues/621)
|
||||||
|
- Can't login on Brave Browser [\#607](https://github.com/liyasthomas/postwoman/issues/607)
|
||||||
|
|
||||||
|
**Closed issues:**
|
||||||
|
|
||||||
|
- \[UI/UX\] - Change place of Send button [\#696](https://github.com/liyasthomas/postwoman/issues/696)
|
||||||
|
- Support preview of JSON:API's "application/vnd.api+json" Content-Type [\#694](https://github.com/liyasthomas/postwoman/issues/694)
|
||||||
|
- Report Portal integration [\#691](https://github.com/liyasthomas/postwoman/issues/691)
|
||||||
|
- Docs request: how to prevent secrets from leaving local storage wrt. sync. [\#686](https://github.com/liyasthomas/postwoman/issues/686)
|
||||||
|
- \[bug\] - Can't make a request to HTTP [\#676](https://github.com/liyasthomas/postwoman/issues/676)
|
||||||
|
- Looking forward to that the postwoman Compatible 'swagger ' at next version [\#675](https://github.com/liyasthomas/postwoman/issues/675)
|
||||||
|
- Error: Network Error. Check console for details. [\#673](https://github.com/liyasthomas/postwoman/issues/673)
|
||||||
|
- \[Bug\] - Can't login to Github and Google [\#661](https://github.com/liyasthomas/postwoman/issues/661)
|
||||||
|
- A question that has been raised but not resolved [\#658](https://github.com/liyasthomas/postwoman/issues/658)
|
||||||
|
- An unknown error occurred whilst the proxy was processing your request. [\#656](https://github.com/liyasthomas/postwoman/issues/656)
|
||||||
|
- Running app from downloaded zip fails to compile [\#651](https://github.com/liyasthomas/postwoman/issues/651)
|
||||||
|
- Environment variable in path won't update [\#641](https://github.com/liyasthomas/postwoman/issues/641)
|
||||||
|
- Info: The current domain is not authorized for OAuth operations Error [\#637](https://github.com/liyasthomas/postwoman/issues/637)
|
||||||
|
- A suggestion for UI [\#635](https://github.com/liyasthomas/postwoman/issues/635)
|
||||||
|
- How to use postwoman for local development and testing [\#634](https://github.com/liyasthomas/postwoman/issues/634)
|
||||||
|
- How to debug localhost \(cors\) [\#630](https://github.com/liyasthomas/postwoman/issues/630)
|
||||||
|
- Support SocketIO connections on Realtime page [\#611](https://github.com/liyasthomas/postwoman/issues/611)
|
||||||
|
- Requests to local API returning error response [\#608](https://github.com/liyasthomas/postwoman/issues/608)
|
||||||
|
- Why does the URL input field display only one line [\#604](https://github.com/liyasthomas/postwoman/issues/604)
|
||||||
|
- Parameter list not showing JSON object fields \(force raw?\) [\#597](https://github.com/liyasthomas/postwoman/issues/597)
|
||||||
|
- Add setting to disable scroll animations [\#592](https://github.com/liyasthomas/postwoman/issues/592)
|
||||||
|
- Bigger URL and/or Path input field [\#581](https://github.com/liyasthomas/postwoman/issues/581)
|
||||||
|
- Ability to connect to a MQTT broker [\#342](https://github.com/liyasthomas/postwoman/issues/342)
|
||||||
|
- \[request\] Offline cross-platform native build [\#267](https://github.com/liyasthomas/postwoman/issues/267)
|
||||||
|
- On Save Update existing API [\#204](https://github.com/liyasthomas/postwoman/issues/204)
|
||||||
|
- Import and export environments from JSON [\#190](https://github.com/liyasthomas/postwoman/issues/190)
|
||||||
|
- Fast URL entry [\#62](https://github.com/liyasthomas/postwoman/issues/62)
|
||||||
|
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Add application/vnd.api+json [\#695](https://github.com/liyasthomas/postwoman/pull/695) ([allthesignals](https://github.com/allthesignals))
|
||||||
|
- Fix raw input \(JSON\) [\#693](https://github.com/liyasthomas/postwoman/pull/693) ([leomp12](https://github.com/leomp12))
|
||||||
|
- chore\(deps\): bump firebase from 7.11.0 to 7.12.0 [\#689](https://github.com/liyasthomas/postwoman/pull/689) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump vuefire from 2.2.1 to 2.2.2 [\#688](https://github.com/liyasthomas/postwoman/pull/688) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump cypress from 4.1.0 to 4.2.0 [\#685](https://github.com/liyasthomas/postwoman/pull/685) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump start-server-and-test from 1.10.10 to 1.10.11 [\#684](https://github.com/liyasthomas/postwoman/pull/684) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.6.0 to 6.6.1 [\#683](https://github.com/liyasthomas/postwoman/pull/683) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt from 2.11.0 to 2.12.0 [\#682](https://github.com/liyasthomas/postwoman/pull/682) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Fix setting default raw params [\#681](https://github.com/liyasthomas/postwoman/pull/681) ([leomp12](https://github.com/leomp12))
|
||||||
|
- Fix handling content type and raw input [\#678](https://github.com/liyasthomas/postwoman/pull/678) ([leomp12](https://github.com/leomp12))
|
||||||
|
- \[Snyk\] Security upgrade yargs-parser from 18.1.0 to 18.1.1 [\#674](https://github.com/liyasthomas/postwoman/pull/674) ([snyk-bot](https://github.com/snyk-bot))
|
||||||
|
- chore\(deps-dev\): bump start-server-and-test from 1.10.9 to 1.10.10 [\#672](https://github.com/liyasthomas/postwoman/pull/672) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.10.0 to 7.11.0 [\#671](https://github.com/liyasthomas/postwoman/pull/671) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- ✅ Updating tests [\#669](https://github.com/liyasthomas/postwoman/pull/669) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Updating tests [\#668](https://github.com/liyasthomas/postwoman/pull/668) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- APIs [\#667](https://github.com/liyasthomas/postwoman/pull/667) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Insecure Websocket connection issue while connecting to MQTT broker. [\#666](https://github.com/liyasthomas/postwoman/pull/666) ([rahulnpadalkar](https://github.com/rahulnpadalkar))
|
||||||
|
- Improving performance [\#664](https://github.com/liyasthomas/postwoman/pull/664) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Feature/mqtt [\#663](https://github.com/liyasthomas/postwoman/pull/663) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Added Support for MQTT [\#662](https://github.com/liyasthomas/postwoman/pull/662) ([rahulnpadalkar](https://github.com/rahulnpadalkar))
|
||||||
|
- chore\(deps\): bump yargs-parser from 18.0.0 to 18.1.0 [\#660](https://github.com/liyasthomas/postwoman/pull/660) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps-dev\): bump start-server-and-test from 1.10.8 to 1.10.9 [\#659](https://github.com/liyasthomas/postwoman/pull/659) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Added icon slot to tabs [\#657](https://github.com/liyasthomas/postwoman/pull/657) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Refactor/ui [\#655](https://github.com/liyasthomas/postwoman/pull/655) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- even [\#654](https://github.com/liyasthomas/postwoman/pull/654) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- chore\(deps\): bump yargs-parser from 17.0.0 to 18.0.0 [\#653](https://github.com/liyasthomas/postwoman/pull/653) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.9.3 to 7.10.0 [\#652](https://github.com/liyasthomas/postwoman/pull/652) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Added the ability to prettify GraphQL queries [\#650](https://github.com/liyasthomas/postwoman/pull/650) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Add http/https support to socketio url valid [\#648](https://github.com/liyasthomas/postwoman/pull/648) ([moonrailgun](https://github.com/moonrailgun))
|
||||||
|
- Refactor/ui [\#647](https://github.com/liyasthomas/postwoman/pull/647) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Even [\#646](https://github.com/liyasthomas/postwoman/pull/646) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Run tests even after failed request [\#645](https://github.com/liyasthomas/postwoman/pull/645) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Feature: add socket io support [\#640](https://github.com/liyasthomas/postwoman/pull/640) ([moonrailgun](https://github.com/moonrailgun))
|
||||||
|
- Removed linting for the collection docs import editor [\#639](https://github.com/liyasthomas/postwoman/pull/639) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Moving or renaming files [\#638](https://github.com/liyasthomas/postwoman/pull/638) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Refactor/ui [\#636](https://github.com/liyasthomas/postwoman/pull/636) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Updated messages for when GraphQL Get Schema fails [\#633](https://github.com/liyasthomas/postwoman/pull/633) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Minor GraphQL page improvements [\#631](https://github.com/liyasthomas/postwoman/pull/631) ([dmitryyankowski](https://github.com/dmitryyankowski))
|
||||||
|
- Ignore empty GQL Variable Strings [\#629](https://github.com/liyasthomas/postwoman/pull/629) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps-dev\): bump cypress from 4.0.2 to 4.1.0 [\#628](https://github.com/liyasthomas/postwoman/pull/628) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.5.0 to 6.6.0 [\#627](https://github.com/liyasthomas/postwoman/pull/627) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump firebase from 7.9.1 to 7.9.3 [\#626](https://github.com/liyasthomas/postwoman/pull/626) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- chore\(deps\): bump @nuxtjs/google-tag-manager from 2.3.1 to 2.3.2 [\#625](https://github.com/liyasthomas/postwoman/pull/625) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- test: purge travis [\#623](https://github.com/liyasthomas/postwoman/pull/623) ([yubathom](https://github.com/yubathom))
|
||||||
|
- Added shortcut to quickly run the GraphQL query [\#620](https://github.com/liyasthomas/postwoman/pull/620) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- docs: add dmitryyankowski as a contributor [\#619](https://github.com/liyasthomas/postwoman/pull/619) ([allcontributors[bot]](https://github.com/apps/allcontributors))
|
||||||
|
- Link multiple auth providers [\#618](https://github.com/liyasthomas/postwoman/pull/618) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Add --staged parameter to pretty-quick pre-commit [\#617](https://github.com/liyasthomas/postwoman/pull/617) ([dmitryyankowski](https://github.com/dmitryyankowski))
|
||||||
|
- :bug: FIxed URI not updating on Clear content, minor formData improve… [\#612](https://github.com/liyasthomas/postwoman/pull/612) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Update proxy information. [\#610](https://github.com/liyasthomas/postwoman/pull/610) ([NBTX](https://github.com/NBTX))
|
||||||
|
- Fixed install extension toast appearing even when extension is installed [\#609](https://github.com/liyasthomas/postwoman/pull/609) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(deps-dev\): bump lint-staged from 10.0.7 to 10.0.8 [\#606](https://github.com/liyasthomas/postwoman/pull/606) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- JSON linting in the code editor [\#605](https://github.com/liyasthomas/postwoman/pull/605) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Added regex to handle url parts [\#603](https://github.com/liyasthomas/postwoman/pull/603) ([JacobAnavisca](https://github.com/JacobAnavisca))
|
||||||
|
- GraphQL page improvements, and more [\#602](https://github.com/liyasthomas/postwoman/pull/602) ([dmitryyankowski](https://github.com/dmitryyankowski))
|
||||||
|
- I18n [\#601](https://github.com/liyasthomas/postwoman/pull/601) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- feat\(i18n\): add Korean [\#600](https://github.com/liyasthomas/postwoman/pull/600) ([9j](https://github.com/9j))
|
||||||
|
- Improve page load/unload experience \(remove FOUCs\) [\#599](https://github.com/liyasthomas/postwoman/pull/599) ([NBTX](https://github.com/NBTX))
|
||||||
|
- Feature: Add prettier/pretty-quick formatting w/ Husky pre-commit [\#596](https://github.com/liyasthomas/postwoman/pull/596) ([dmitryyankowski](https://github.com/dmitryyankowski))
|
||||||
|
|
||||||
## [v1.9.0](https://github.com/liyasthomas/postwoman/tree/v1.9.0) (2020-02-24)
|
## [v1.9.0](https://github.com/liyasthomas/postwoman/tree/v1.9.0) (2020-02-24)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.8.0...v1.9.0)
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.8.0...v1.9.0)
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Disable SSL cert for websockets [\#557](https://github.com/liyasthomas/postwoman/issues/557)
|
|
||||||
- Feature request: Keyboard shortcuts for folder creation [\#539](https://github.com/liyasthomas/postwoman/issues/539)
|
|
||||||
- Friendly minded GraphQL [\#468](https://github.com/liyasthomas/postwoman/issues/468)
|
|
||||||
- multipart/form-data support [\#434](https://github.com/liyasthomas/postwoman/issues/434)
|
|
||||||
- Implement pre-request and post-request scripts \(and request chaining\) [\#218](https://github.com/liyasthomas/postwoman/issues/218)
|
|
||||||
- Environment management and configuration [\#147](https://github.com/liyasthomas/postwoman/issues/147)
|
|
||||||
- POST request body editor reacts to the content type [\#594](https://github.com/liyasthomas/postwoman/pull/594) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Environment Mangement [\#591](https://github.com/liyasthomas/postwoman/pull/591) ([JacobAnavisca](https://github.com/JacobAnavisca))
|
|
||||||
- GraphQL Query Autocompletion [\#590](https://github.com/liyasthomas/postwoman/pull/590) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Postman collection parsing [\#574](https://github.com/liyasthomas/postwoman/pull/574) ([JacobAnavisca](https://github.com/JacobAnavisca))
|
|
||||||
- Added toggle to decide whether extensions should be used [\#551](https://github.com/liyasthomas/postwoman/pull/551) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Show Ctrl instead of Command for shortcuts non-Apple platforms [\#549](https://github.com/liyasthomas/postwoman/pull/549) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Updated GraphQL Query Variable Editor [\#534](https://github.com/liyasthomas/postwoman/pull/534) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
**Fixed bugs:**
|
||||||
|
|
||||||
- Auto Theme Selection is kinda difficult to see [\#563](https://github.com/liyasthomas/postwoman/issues/563)
|
- Auto Theme Selection is kinda difficult to see [\#563](https://github.com/liyasthomas/postwoman/issues/563)
|
||||||
@@ -32,16 +406,25 @@
|
|||||||
|
|
||||||
- don't run [\#577](https://github.com/liyasthomas/postwoman/issues/577)
|
- don't run [\#577](https://github.com/liyasthomas/postwoman/issues/577)
|
||||||
- Get correct response data but occurs with error "Cannot read property 'value' of undefined" [\#575](https://github.com/liyasthomas/postwoman/issues/575)
|
- Get correct response data but occurs with error "Cannot read property 'value' of undefined" [\#575](https://github.com/liyasthomas/postwoman/issues/575)
|
||||||
- firebase\_app\_\_WEBPACK\_IMPORTED\_MODULE\_2\_\_\_default.a.firestore is not a function [\#558](https://github.com/liyasthomas/postwoman/issues/558)
|
- firebase_app\_\_WEBPACK_IMPORTED_MODULE_2\_\_\_default.a.firestore is not a function [\#558](https://github.com/liyasthomas/postwoman/issues/558)
|
||||||
|
- Disable SSL cert for websockets [\#557](https://github.com/liyasthomas/postwoman/issues/557)
|
||||||
- relative module not found during start [\#552](https://github.com/liyasthomas/postwoman/issues/552)
|
- relative module not found during start [\#552](https://github.com/liyasthomas/postwoman/issues/552)
|
||||||
- Feature Request: Subfolders [\#540](https://github.com/liyasthomas/postwoman/issues/540)
|
- Feature Request: Subfolders [\#540](https://github.com/liyasthomas/postwoman/issues/540)
|
||||||
|
- Feature request: Keyboard shortcuts for folder creation [\#539](https://github.com/liyasthomas/postwoman/issues/539)
|
||||||
- Add max-height and overflow: auto to "parameter list" textarea [\#532](https://github.com/liyasthomas/postwoman/issues/532)
|
- Add max-height and overflow: auto to "parameter list" textarea [\#532](https://github.com/liyasthomas/postwoman/issues/532)
|
||||||
|
- Friendly minded GraphQL [\#468](https://github.com/liyasthomas/postwoman/issues/468)
|
||||||
|
- multipart/form-data support [\#434](https://github.com/liyasthomas/postwoman/issues/434)
|
||||||
- IE Support [\#386](https://github.com/liyasthomas/postwoman/issues/386)
|
- IE Support [\#386](https://github.com/liyasthomas/postwoman/issues/386)
|
||||||
- ⏬ Import a Postman's Collection [\#333](https://github.com/liyasthomas/postwoman/issues/333)
|
- ⏬ Import a Postman's Collection [\#333](https://github.com/liyasthomas/postwoman/issues/333)
|
||||||
|
- Implement pre-request and post-request scripts \(and request chaining\) [\#218](https://github.com/liyasthomas/postwoman/issues/218)
|
||||||
|
- Environment management and configuration [\#147](https://github.com/liyasthomas/postwoman/issues/147)
|
||||||
|
|
||||||
**Merged pull requests:**
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- POST request body editor reacts to the content type [\#594](https://github.com/liyasthomas/postwoman/pull/594) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Fix variablesJSONString store default for GraphQL page [\#593](https://github.com/liyasthomas/postwoman/pull/593) ([dmitryyankowski](https://github.com/dmitryyankowski))
|
- Fix variablesJSONString store default for GraphQL page [\#593](https://github.com/liyasthomas/postwoman/pull/593) ([dmitryyankowski](https://github.com/dmitryyankowski))
|
||||||
|
- Environment Mangement [\#591](https://github.com/liyasthomas/postwoman/pull/591) ([JacobAnavisca](https://github.com/JacobAnavisca))
|
||||||
|
- GraphQL Query Autocompletion [\#590](https://github.com/liyasthomas/postwoman/pull/590) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Refactor/lint [\#589](https://github.com/liyasthomas/postwoman/pull/589) ([liyasthomas](https://github.com/liyasthomas))
|
- Refactor/lint [\#589](https://github.com/liyasthomas/postwoman/pull/589) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Even [\#588](https://github.com/liyasthomas/postwoman/pull/588) ([liyasthomas](https://github.com/liyasthomas))
|
- Even [\#588](https://github.com/liyasthomas/postwoman/pull/588) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- chore\(deps\): bump firebase from 7.9.0 to 7.9.1 [\#587](https://github.com/liyasthomas/postwoman/pull/587) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump firebase from 7.9.0 to 7.9.1 [\#587](https://github.com/liyasthomas/postwoman/pull/587) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
@@ -53,6 +436,7 @@
|
|||||||
- Even [\#579](https://github.com/liyasthomas/postwoman/pull/579) ([liyasthomas](https://github.com/liyasthomas))
|
- Even [\#579](https://github.com/liyasthomas/postwoman/pull/579) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Refactor/lint [\#578](https://github.com/liyasthomas/postwoman/pull/578) ([liyasthomas](https://github.com/liyasthomas))
|
- Refactor/lint [\#578](https://github.com/liyasthomas/postwoman/pull/578) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- chore\(deps\): bump vue-virtual-scroll-list from 1.4.4 to 1.4.5 [\#576](https://github.com/liyasthomas/postwoman/pull/576) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump vue-virtual-scroll-list from 1.4.4 to 1.4.5 [\#576](https://github.com/liyasthomas/postwoman/pull/576) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Postman collection parsing [\#574](https://github.com/liyasthomas/postwoman/pull/574) ([JacobAnavisca](https://github.com/JacobAnavisca))
|
||||||
- Unify Chrome and Firefox extensions [\#573](https://github.com/liyasthomas/postwoman/pull/573) ([levrik](https://github.com/levrik))
|
- Unify Chrome and Firefox extensions [\#573](https://github.com/liyasthomas/postwoman/pull/573) ([levrik](https://github.com/levrik))
|
||||||
- fix: drop the toast which doesn't show up [\#572](https://github.com/liyasthomas/postwoman/pull/572) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
- fix: drop the toast which doesn't show up [\#572](https://github.com/liyasthomas/postwoman/pull/572) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
- :sparkles: Native share + updated meta description [\#571](https://github.com/liyasthomas/postwoman/pull/571) ([liyasthomas](https://github.com/liyasthomas))
|
- :sparkles: Native share + updated meta description [\#571](https://github.com/liyasthomas/postwoman/pull/571) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
@@ -68,6 +452,8 @@
|
|||||||
- Support for Formdata [\#555](https://github.com/liyasthomas/postwoman/pull/555) ([liyasthomas](https://github.com/liyasthomas))
|
- Support for Formdata [\#555](https://github.com/liyasthomas/postwoman/pull/555) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- chore\(deps\): bump @nuxtjs/pwa from 3.0.0-beta.19 to 3.0.0-beta.20 [\#554](https://github.com/liyasthomas/postwoman/pull/554) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump @nuxtjs/pwa from 3.0.0-beta.19 to 3.0.0-beta.20 [\#554](https://github.com/liyasthomas/postwoman/pull/554) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- chore\(deps\): bump @nuxtjs/axios from 5.9.4 to 5.9.5 [\#553](https://github.com/liyasthomas/postwoman/pull/553) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump @nuxtjs/axios from 5.9.4 to 5.9.5 [\#553](https://github.com/liyasthomas/postwoman/pull/553) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Added toggle to decide whether extensions should be used [\#551](https://github.com/liyasthomas/postwoman/pull/551) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Show Ctrl instead of Command for shortcuts non-Apple platforms [\#549](https://github.com/liyasthomas/postwoman/pull/549) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- fix\(chore\): Take letter casing into account while checking for duplicate collection [\#548](https://github.com/liyasthomas/postwoman/pull/548) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
- fix\(chore\): Take letter casing into account while checking for duplicate collection [\#548](https://github.com/liyasthomas/postwoman/pull/548) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
- update e2e tests [\#546](https://github.com/liyasthomas/postwoman/pull/546) ([yubathom](https://github.com/yubathom))
|
- update e2e tests [\#546](https://github.com/liyasthomas/postwoman/pull/546) ([yubathom](https://github.com/yubathom))
|
||||||
- chore\(deps\): bump @nuxtjs/axios from 5.9.3 to 5.9.4 [\#545](https://github.com/liyasthomas/postwoman/pull/545) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump @nuxtjs/axios from 5.9.3 to 5.9.4 [\#545](https://github.com/liyasthomas/postwoman/pull/545) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
@@ -77,35 +463,14 @@
|
|||||||
- i18n [\#538](https://github.com/liyasthomas/postwoman/pull/538) ([liyasthomas](https://github.com/liyasthomas))
|
- i18n [\#538](https://github.com/liyasthomas/postwoman/pull/538) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Modification of French translations [\#537](https://github.com/liyasthomas/postwoman/pull/537) ([thomasbnt](https://github.com/thomasbnt))
|
- Modification of French translations [\#537](https://github.com/liyasthomas/postwoman/pull/537) ([thomasbnt](https://github.com/thomasbnt))
|
||||||
- Even [\#535](https://github.com/liyasthomas/postwoman/pull/535) ([liyasthomas](https://github.com/liyasthomas))
|
- Even [\#535](https://github.com/liyasthomas/postwoman/pull/535) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Updated GraphQL Query Variable Editor [\#534](https://github.com/liyasthomas/postwoman/pull/534) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Updating spanish translation [\#529](https://github.com/liyasthomas/postwoman/pull/529) ([liyasthomas](https://github.com/liyasthomas))
|
- Updating spanish translation [\#529](https://github.com/liyasthomas/postwoman/pull/529) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- chore\(deps\): bump nuxt-i18n from 6.4.1 to 6.5.0 [\#522](https://github.com/liyasthomas/postwoman/pull/522) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- even merge [\#528](https://github.com/liyasthomas/postwoman/pull/528) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
|
||||||
## [v1.8.0](https://github.com/liyasthomas/postwoman/tree/v1.8.0) (2020-01-28)
|
## [v1.8.0](https://github.com/liyasthomas/postwoman/tree/v1.8.0) (2020-01-28)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.5.0...v1.8.0)
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.5.0...v1.8.0)
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Sync collection with a cloud storage \(e.g: Google drive\) [\#507](https://github.com/liyasthomas/postwoman/issues/507)
|
|
||||||
- Application contains many hard-coded strings that aren't translatable [\#488](https://github.com/liyasthomas/postwoman/issues/488)
|
|
||||||
- ULR parsing and var auto creation [\#469](https://github.com/liyasthomas/postwoman/issues/469)
|
|
||||||
- What about additional loaders: + Pug, TypeScript, SASS, material-vue ? [\#467](https://github.com/liyasthomas/postwoman/issues/467)
|
|
||||||
- \[suggestion\] - Tests tab [\#465](https://github.com/liyasthomas/postwoman/issues/465)
|
|
||||||
- cookie not found support [\#443](https://github.com/liyasthomas/postwoman/issues/443)
|
|
||||||
- Feature Request: Consumer Driven Contract Testing [\#420](https://github.com/liyasthomas/postwoman/issues/420)
|
|
||||||
- Feature Request: Support OAuth2/OIDC [\#337](https://github.com/liyasthomas/postwoman/issues/337)
|
|
||||||
- Add DB cache [\#26](https://github.com/liyasthomas/postwoman/issues/26)
|
|
||||||
- Update asset/\*. js to asset/\*. ts. [\#517](https://github.com/liyasthomas/postwoman/pull/517) ([Sn005](https://github.com/Sn005))
|
|
||||||
- Auth [\#513](https://github.com/liyasthomas/postwoman/pull/513) ([liyasthomas](https://github.com/liyasthomas))
|
|
||||||
- Support for Google Chrome Extension [\#512](https://github.com/liyasthomas/postwoman/pull/512) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- GraphQL query validation based on schema [\#508](https://github.com/liyasthomas/postwoman/pull/508) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Syntax Error marking in GraphQL query editor [\#505](https://github.com/liyasthomas/postwoman/pull/505) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Refactoring proxy handling to be done in strategies [\#500](https://github.com/liyasthomas/postwoman/pull/500) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Firefox Extension compatibility [\#494](https://github.com/liyasthomas/postwoman/pull/494) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Network Strategies [\#487](https://github.com/liyasthomas/postwoman/pull/487) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- chore\(oauth\): Added method signatures as per JSDoc conventions [\#486](https://github.com/liyasthomas/postwoman/pull/486) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
|
||||||
- GraphQL Type Highlight and Links [\#479](https://github.com/liyasthomas/postwoman/pull/479) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
**Fixed bugs:**
|
||||||
|
|
||||||
- Warn the user if name field was left blank while creating a new collection [\#515](https://github.com/liyasthomas/postwoman/issues/515)
|
- Warn the user if name field was left blank while creating a new collection [\#515](https://github.com/liyasthomas/postwoman/issues/515)
|
||||||
@@ -117,84 +482,63 @@
|
|||||||
|
|
||||||
- Allow importing Postman collections [\#524](https://github.com/liyasthomas/postwoman/issues/524)
|
- Allow importing Postman collections [\#524](https://github.com/liyasthomas/postwoman/issues/524)
|
||||||
- Request descriptions [\#511](https://github.com/liyasthomas/postwoman/issues/511)
|
- Request descriptions [\#511](https://github.com/liyasthomas/postwoman/issues/511)
|
||||||
|
- Sync collection with a cloud storage \(e.g: Google drive\) [\#507](https://github.com/liyasthomas/postwoman/issues/507)
|
||||||
- Ability to run all requests of a folder/collection [\#498](https://github.com/liyasthomas/postwoman/issues/498)
|
- Ability to run all requests of a folder/collection [\#498](https://github.com/liyasthomas/postwoman/issues/498)
|
||||||
- Change import/export collection on requests page icon [\#495](https://github.com/liyasthomas/postwoman/issues/495)
|
- Change import/export collection on requests page icon [\#495](https://github.com/liyasthomas/postwoman/issues/495)
|
||||||
|
- Application contains many hard-coded strings that aren't translatable [\#488](https://github.com/liyasthomas/postwoman/issues/488)
|
||||||
- import cURL error [\#477](https://github.com/liyasthomas/postwoman/issues/477)
|
- import cURL error [\#477](https://github.com/liyasthomas/postwoman/issues/477)
|
||||||
- move to postwoman org [\#475](https://github.com/liyasthomas/postwoman/issues/475)
|
- move to postwoman org [\#475](https://github.com/liyasthomas/postwoman/issues/475)
|
||||||
- Create standalone vue components of the request builder. [\#474](https://github.com/liyasthomas/postwoman/issues/474)
|
- Create standalone vue components of the request builder. [\#474](https://github.com/liyasthomas/postwoman/issues/474)
|
||||||
|
- ULR parsing and var auto creation [\#469](https://github.com/liyasthomas/postwoman/issues/469)
|
||||||
|
- What about additional loaders: + Pug, TypeScript, SASS, material-vue ? [\#467](https://github.com/liyasthomas/postwoman/issues/467)
|
||||||
|
- \[suggestion\] - Tests tab [\#465](https://github.com/liyasthomas/postwoman/issues/465)
|
||||||
|
- cookie not found support [\#443](https://github.com/liyasthomas/postwoman/issues/443)
|
||||||
|
- Feature Request: Consumer Driven Contract Testing [\#420](https://github.com/liyasthomas/postwoman/issues/420)
|
||||||
|
- Feature Request: Support OAuth2/OIDC [\#337](https://github.com/liyasthomas/postwoman/issues/337)
|
||||||
- Enable running proxy as a backend for Request Capture [\#325](https://github.com/liyasthomas/postwoman/issues/325)
|
- Enable running proxy as a backend for Request Capture [\#325](https://github.com/liyasthomas/postwoman/issues/325)
|
||||||
- Label doesn't change when switching between collection requests [\#291](https://github.com/liyasthomas/postwoman/issues/291)
|
- Label doesn't change when switching between collection requests [\#291](https://github.com/liyasthomas/postwoman/issues/291)
|
||||||
|
- Add DB cache [\#26](https://github.com/liyasthomas/postwoman/issues/26)
|
||||||
|
|
||||||
**Merged pull requests:**
|
**Merged pull requests:**
|
||||||
|
|
||||||
- Enhancements [\#531](https://github.com/liyasthomas/postwoman/pull/531) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
- Enhancements [\#531](https://github.com/liyasthomas/postwoman/pull/531) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
- Merge pull request \#530 from liyasthomas/feature/post-request-tests [\#530](https://github.com/liyasthomas/postwoman/pull/530) ([liyasthomas](https://github.com/liyasthomas))
|
- Merge pull request \#530 from liyasthomas/feature/post-request-tests [\#530](https://github.com/liyasthomas/postwoman/pull/530) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- even merge [\#528](https://github.com/liyasthomas/postwoman/pull/528) ([liyasthomas](https://github.com/liyasthomas))
|
|
||||||
- Refactor [\#523](https://github.com/liyasthomas/postwoman/pull/523) ([liyasthomas](https://github.com/liyasthomas))
|
- Refactor [\#523](https://github.com/liyasthomas/postwoman/pull/523) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- chore\(deps\): bump nuxt-i18n from 6.4.1 to 6.5.0 [\#522](https://github.com/liyasthomas/postwoman/pull/522) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- chore\(deps\): bump v-tooltip from 2.0.2 to 2.0.3 [\#521](https://github.com/liyasthomas/postwoman/pull/521) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump v-tooltip from 2.0.2 to 2.0.3 [\#521](https://github.com/liyasthomas/postwoman/pull/521) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- chore\(deps-dev\): bump cypress from 3.8.2 to 3.8.3 [\#520](https://github.com/liyasthomas/postwoman/pull/520) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps-dev\): bump cypress from 3.8.2 to 3.8.3 [\#520](https://github.com/liyasthomas/postwoman/pull/520) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- Feature/post request tests [\#518](https://github.com/liyasthomas/postwoman/pull/518) ([nickpalenchar](https://github.com/nickpalenchar))
|
- Feature/post request tests [\#518](https://github.com/liyasthomas/postwoman/pull/518) ([nickpalenchar](https://github.com/nickpalenchar))
|
||||||
- Validations for edit and create collections activity [\#516](https://github.com/liyasthomas/postwoman/pull/516) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
- Validations for edit and create collections activity [\#516](https://github.com/liyasthomas/postwoman/pull/516) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
|
- Auth [\#513](https://github.com/liyasthomas/postwoman/pull/513) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Support for Google Chrome Extension [\#512](https://github.com/liyasthomas/postwoman/pull/512) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Validate duplicate collections [\#510](https://github.com/liyasthomas/postwoman/pull/510) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
- Validate duplicate collections [\#510](https://github.com/liyasthomas/postwoman/pull/510) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
|
- GraphQL query validation based on schema [\#508](https://github.com/liyasthomas/postwoman/pull/508) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Lint and refactor [\#506](https://github.com/liyasthomas/postwoman/pull/506) ([liyasthomas](https://github.com/liyasthomas))
|
- Lint and refactor [\#506](https://github.com/liyasthomas/postwoman/pull/506) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Merge pull request \#504 from liyasthomas/dependabot/npm\_and\_yarn/node-sass-4.13.1 [\#504](https://github.com/liyasthomas/postwoman/pull/504) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- Syntax Error marking in GraphQL query editor [\#505](https://github.com/liyasthomas/postwoman/pull/505) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Merge pull request \#504 from liyasthomas/dependabot/npm_and_yarn/node-sass-4.13.1 [\#504](https://github.com/liyasthomas/postwoman/pull/504) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- chore\(deps\): bump @nuxtjs/axios from 5.9.2 to 5.9.3 [\#503](https://github.com/liyasthomas/postwoman/pull/503) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump @nuxtjs/axios from 5.9.2 to 5.9.3 [\#503](https://github.com/liyasthomas/postwoman/pull/503) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- chore\(deps-dev\): bump sass-loader from 8.0.1 to 8.0.2 [\#502](https://github.com/liyasthomas/postwoman/pull/502) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps-dev\): bump sass-loader from 8.0.1 to 8.0.2 [\#502](https://github.com/liyasthomas/postwoman/pull/502) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- chore\(deps\): bump ace-builds from 1.4.7 to 1.4.8 [\#501](https://github.com/liyasthomas/postwoman/pull/501) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- chore\(deps\): bump ace-builds from 1.4.7 to 1.4.8 [\#501](https://github.com/liyasthomas/postwoman/pull/501) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Refactoring proxy handling to be done in strategies [\#500](https://github.com/liyasthomas/postwoman/pull/500) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- 💚 Fixed \#497 [\#499](https://github.com/liyasthomas/postwoman/pull/499) ([pushrbx](https://github.com/pushrbx))
|
- 💚 Fixed \#497 [\#499](https://github.com/liyasthomas/postwoman/pull/499) ([pushrbx](https://github.com/pushrbx))
|
||||||
- Feat/firefox strategy [\#496](https://github.com/liyasthomas/postwoman/pull/496) ([liyasthomas](https://github.com/liyasthomas))
|
- Feat/firefox strategy [\#496](https://github.com/liyasthomas/postwoman/pull/496) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Firefox Extension compatibility [\#494](https://github.com/liyasthomas/postwoman/pull/494) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- i18n Japanese: Added new translations [\#492](https://github.com/liyasthomas/postwoman/pull/492) ([reefqi037](https://github.com/reefqi037))
|
- i18n Japanese: Added new translations [\#492](https://github.com/liyasthomas/postwoman/pull/492) ([reefqi037](https://github.com/reefqi037))
|
||||||
- Merge pull request \#491 from liyasthomas/i18n [\#491](https://github.com/liyasthomas/postwoman/pull/491) ([liyasthomas](https://github.com/liyasthomas))
|
- Merge pull request \#491 from liyasthomas/i18n [\#491](https://github.com/liyasthomas/postwoman/pull/491) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Replaced hard-coded strings with localizable strings [\#490](https://github.com/liyasthomas/postwoman/pull/490) ([liyasthomas](https://github.com/liyasthomas))
|
- Replaced hard-coded strings with localizable strings [\#490](https://github.com/liyasthomas/postwoman/pull/490) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Network Strategies [\#487](https://github.com/liyasthomas/postwoman/pull/487) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- chore\(oauth\): Added method signatures as per JSDoc conventions [\#486](https://github.com/liyasthomas/postwoman/pull/486) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
- chore: Minor tweaks [\#485](https://github.com/liyasthomas/postwoman/pull/485) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
- chore: Minor tweaks [\#485](https://github.com/liyasthomas/postwoman/pull/485) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
- Porting \(most of\) code to typescript [\#484](https://github.com/liyasthomas/postwoman/pull/484) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- ⬆️ Bump cypress from 3.8.1 to 3.8.2 [\#483](https://github.com/liyasthomas/postwoman/pull/483) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump cypress from 3.8.1 to 3.8.2 [\#483](https://github.com/liyasthomas/postwoman/pull/483) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump sass-loader from 8.0.0 to 8.0.1 [\#482](https://github.com/liyasthomas/postwoman/pull/482) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump sass-loader from 8.0.0 to 8.0.1 [\#482](https://github.com/liyasthomas/postwoman/pull/482) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump @nuxtjs/google-analytics from 2.2.2 to 2.2.3 [\#481](https://github.com/liyasthomas/postwoman/pull/481) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump @nuxtjs/google-analytics from 2.2.2 to 2.2.3 [\#481](https://github.com/liyasthomas/postwoman/pull/481) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- GraphQL Type Highlight and Links [\#479](https://github.com/liyasthomas/postwoman/pull/479) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- OAuth 2.0/OIDC Access Token Retrieval Support [\#476](https://github.com/liyasthomas/postwoman/pull/476) ([reefqi037](https://github.com/reefqi037))
|
- OAuth 2.0/OIDC Access Token Retrieval Support [\#476](https://github.com/liyasthomas/postwoman/pull/476) ([reefqi037](https://github.com/reefqi037))
|
||||||
|
|
||||||
## [v1.5.0](https://github.com/liyasthomas/postwoman/tree/v1.5.0) (2020-01-04)
|
## [v1.5.0](https://github.com/liyasthomas/postwoman/tree/v1.5.0) (2020-01-04)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.0.0...v1.5.0)
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.0.0...v1.5.0)
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Can WSDL be implemented, similar to SoapUI? [\#461](https://github.com/liyasthomas/postwoman/issues/461)
|
|
||||||
- Raw Request Body should be supported to format the JSON string [\#446](https://github.com/liyasthomas/postwoman/issues/446)
|
|
||||||
- Ability to send Binary data using Postwoman [\#415](https://github.com/liyasthomas/postwoman/issues/415)
|
|
||||||
- Custom request method [\#398](https://github.com/liyasthomas/postwoman/issues/398)
|
|
||||||
- \[request\]: CLI possibilities [\#363](https://github.com/liyasthomas/postwoman/issues/363)
|
|
||||||
- Feature request: OAuth header support/integration [\#358](https://github.com/liyasthomas/postwoman/issues/358)
|
|
||||||
- i18n support [\#348](https://github.com/liyasthomas/postwoman/issues/348)
|
|
||||||
- Separate layers in dockerfile to improve image build [\#339](https://github.com/liyasthomas/postwoman/issues/339)
|
|
||||||
- Internal server environment usage requirements [\#336](https://github.com/liyasthomas/postwoman/issues/336)
|
|
||||||
- Server Sent Events [\#329](https://github.com/liyasthomas/postwoman/issues/329)
|
|
||||||
- Generate API documentation [\#326](https://github.com/liyasthomas/postwoman/issues/326)
|
|
||||||
- Auth info on WebSocket connections [\#321](https://github.com/liyasthomas/postwoman/issues/321)
|
|
||||||
- Set response panel to fullscreen [\#320](https://github.com/liyasthomas/postwoman/issues/320)
|
|
||||||
- Graphql support [\#312](https://github.com/liyasthomas/postwoman/issues/312)
|
|
||||||
- Keyboard shortcuts [\#302](https://github.com/liyasthomas/postwoman/issues/302)
|
|
||||||
- File/binary request body support [\#298](https://github.com/liyasthomas/postwoman/issues/298)
|
|
||||||
- It's possible to tab into read only and non-form elements [\#287](https://github.com/liyasthomas/postwoman/issues/287)
|
|
||||||
- Change cursor to disabled on disabled inputs [\#286](https://github.com/liyasthomas/postwoman/issues/286)
|
|
||||||
- Hover Styling on Inputs [\#285](https://github.com/liyasthomas/postwoman/issues/285)
|
|
||||||
- Focus Styles on Buttons [\#284](https://github.com/liyasthomas/postwoman/issues/284)
|
|
||||||
- Missing Focus on Inputs [\#279](https://github.com/liyasthomas/postwoman/issues/279)
|
|
||||||
- Download the request result into a file. [\#278](https://github.com/liyasthomas/postwoman/issues/278)
|
|
||||||
- Improve UI Contrast [\#277](https://github.com/liyasthomas/postwoman/issues/277)
|
|
||||||
- \[UI\] \[UX\] Allow app to take width of browser [\#236](https://github.com/liyasthomas/postwoman/issues/236)
|
|
||||||
- Extend syntax highlighting with ACE for pre-request script textarea [\#235](https://github.com/liyasthomas/postwoman/issues/235)
|
|
||||||
- Store pre-request scripts in history [\#233](https://github.com/liyasthomas/postwoman/issues/233)
|
|
||||||
- Store the time spent on fetching a response [\#225](https://github.com/liyasthomas/postwoman/issues/225)
|
|
||||||
- Cache view [\#188](https://github.com/liyasthomas/postwoman/issues/188)
|
|
||||||
- chore: stick to Vue.js best practices [\#432](https://github.com/liyasthomas/postwoman/pull/432) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
|
||||||
- Header key autocompletion [\#421](https://github.com/liyasthomas/postwoman/pull/421) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Custom methods support [\#400](https://github.com/liyasthomas/postwoman/pull/400) ([liyasthomas](https://github.com/liyasthomas))
|
|
||||||
- Two Way Data Binding \(v-model\) to Ace Editor component [\#379](https://github.com/liyasthomas/postwoman/pull/379) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Basic i18n support [\#351](https://github.com/liyasthomas/postwoman/pull/351) ([liyasthomas](https://github.com/liyasthomas))
|
|
||||||
- Undo header/param/body param deletion [\#350](https://github.com/liyasthomas/postwoman/pull/350) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- refactor: minor improvements [\#343](https://github.com/liyasthomas/postwoman/pull/343) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
**Fixed bugs:**
|
||||||
|
|
||||||
- WebSocket page freezes when pasting long URL [\#471](https://github.com/liyasthomas/postwoman/issues/471)
|
- WebSocket page freezes when pasting long URL [\#471](https://github.com/liyasthomas/postwoman/issues/471)
|
||||||
@@ -214,20 +558,24 @@
|
|||||||
|
|
||||||
**Closed issues:**
|
**Closed issues:**
|
||||||
|
|
||||||
|
- Can WSDL be implemented, similar to SoapUI? [\#461](https://github.com/liyasthomas/postwoman/issues/461)
|
||||||
- Module not found: Error: Can't resolve '../.postwoman/version.json' [\#457](https://github.com/liyasthomas/postwoman/issues/457)
|
- Module not found: Error: Can't resolve '../.postwoman/version.json' [\#457](https://github.com/liyasthomas/postwoman/issues/457)
|
||||||
- \* ../.postwoman/version.json in ./node\_modules/babel-loader/lib??ref--2-0!./node\_modules/vue-loader/lib??vue-loader-options!./layouts/default.vue?vue&type=script&lang=js& friendly-errors 11:12:37 [\#448](https://github.com/liyasthomas/postwoman/issues/448)
|
- \* ../.postwoman/version.json in ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./layouts/default.vue?vue&type=script&lang=js& friendly-errors 11:12:37 [\#448](https://github.com/liyasthomas/postwoman/issues/448)
|
||||||
|
- Raw Request Body should be supported to format the JSON string [\#446](https://github.com/liyasthomas/postwoman/issues/446)
|
||||||
- npm run dev module was not found: ../.postwoman/version.json [\#442](https://github.com/liyasthomas/postwoman/issues/442)
|
- npm run dev module was not found: ../.postwoman/version.json [\#442](https://github.com/liyasthomas/postwoman/issues/442)
|
||||||
- graphql and websocket work, but http and https do not [\#441](https://github.com/liyasthomas/postwoman/issues/441)
|
- graphql and websocket work, but http and https do not [\#441](https://github.com/liyasthomas/postwoman/issues/441)
|
||||||
- Can I test localhost? [\#433](https://github.com/liyasthomas/postwoman/issues/433)
|
- Can I test localhost? [\#433](https://github.com/liyasthomas/postwoman/issues/433)
|
||||||
- No 'Access-Control-Allow-Origin' [\#426](https://github.com/liyasthomas/postwoman/issues/426)
|
- No 'Access-Control-Allow-Origin' [\#426](https://github.com/liyasthomas/postwoman/issues/426)
|
||||||
- When uninstall the PWA the "install PWA" link in postwoman.io isn't appear anymore [\#419](https://github.com/liyasthomas/postwoman/issues/419)
|
- When uninstall the PWA the "install PWA" link in postwoman.io isn't appear anymore [\#419](https://github.com/liyasthomas/postwoman/issues/419)
|
||||||
- Toggling options will reset the UI to English [\#417](https://github.com/liyasthomas/postwoman/issues/417)
|
- Toggling options will reset the UI to English [\#417](https://github.com/liyasthomas/postwoman/issues/417)
|
||||||
|
- Ability to send Binary data using Postwoman [\#415](https://github.com/liyasthomas/postwoman/issues/415)
|
||||||
- Oh my dear god why don't we just wrap it in electron [\#413](https://github.com/liyasthomas/postwoman/issues/413)
|
- Oh my dear god why don't we just wrap it in electron [\#413](https://github.com/liyasthomas/postwoman/issues/413)
|
||||||
- UI improvement suggestion for request method drop down [\#409](https://github.com/liyasthomas/postwoman/issues/409)
|
- UI improvement suggestion for request method drop down [\#409](https://github.com/liyasthomas/postwoman/issues/409)
|
||||||
- Can I share a request with my team? [\#408](https://github.com/liyasthomas/postwoman/issues/408)
|
- Can I share a request with my team? [\#408](https://github.com/liyasthomas/postwoman/issues/408)
|
||||||
- Does it not support the post method? [\#403](https://github.com/liyasthomas/postwoman/issues/403)
|
- Does it not support the post method? [\#403](https://github.com/liyasthomas/postwoman/issues/403)
|
||||||
- Post can't send request [\#401](https://github.com/liyasthomas/postwoman/issues/401)
|
- Post can't send request [\#401](https://github.com/liyasthomas/postwoman/issues/401)
|
||||||
- \[Bug\] fix header icons overlap [\#399](https://github.com/liyasthomas/postwoman/issues/399)
|
- \[Bug\] fix header icons overlap [\#399](https://github.com/liyasthomas/postwoman/issues/399)
|
||||||
|
- Custom request method [\#398](https://github.com/liyasthomas/postwoman/issues/398)
|
||||||
- Improve translate for pt-BR \(i18n\) [\#395](https://github.com/liyasthomas/postwoman/issues/395)
|
- Improve translate for pt-BR \(i18n\) [\#395](https://github.com/liyasthomas/postwoman/issues/395)
|
||||||
- Raw input disabled is not working properly [\#394](https://github.com/liyasthomas/postwoman/issues/394)
|
- Raw input disabled is not working properly [\#394](https://github.com/liyasthomas/postwoman/issues/394)
|
||||||
- Input area is not clearly to identify for users because the dark mode [\#393](https://github.com/liyasthomas/postwoman/issues/393)
|
- Input area is not clearly to identify for users because the dark mode [\#393](https://github.com/liyasthomas/postwoman/issues/393)
|
||||||
@@ -237,16 +585,40 @@
|
|||||||
- Clearing shortcut overrides browser default [\#374](https://github.com/liyasthomas/postwoman/issues/374)
|
- Clearing shortcut overrides browser default [\#374](https://github.com/liyasthomas/postwoman/issues/374)
|
||||||
- Proxy server default configuration [\#373](https://github.com/liyasthomas/postwoman/issues/373)
|
- Proxy server default configuration [\#373](https://github.com/liyasthomas/postwoman/issues/373)
|
||||||
- Intent to translate [\#367](https://github.com/liyasthomas/postwoman/issues/367)
|
- Intent to translate [\#367](https://github.com/liyasthomas/postwoman/issues/367)
|
||||||
|
- \[request\]: CLI possibilities [\#363](https://github.com/liyasthomas/postwoman/issues/363)
|
||||||
|
- Feature request: OAuth header support/integration [\#358](https://github.com/liyasthomas/postwoman/issues/358)
|
||||||
- Static builds on releases [\#352](https://github.com/liyasthomas/postwoman/issues/352)
|
- Static builds on releases [\#352](https://github.com/liyasthomas/postwoman/issues/352)
|
||||||
- fix:SSE onclose handle [\#349](https://github.com/liyasthomas/postwoman/issues/349)
|
- fix:SSE onclose handle [\#349](https://github.com/liyasthomas/postwoman/issues/349)
|
||||||
|
- i18n support [\#348](https://github.com/liyasthomas/postwoman/issues/348)
|
||||||
|
- Separate layers in dockerfile to improve image build [\#339](https://github.com/liyasthomas/postwoman/issues/339)
|
||||||
|
- Internal server environment usage requirements [\#336](https://github.com/liyasthomas/postwoman/issues/336)
|
||||||
|
- Server Sent Events [\#329](https://github.com/liyasthomas/postwoman/issues/329)
|
||||||
|
- Generate API documentation [\#326](https://github.com/liyasthomas/postwoman/issues/326)
|
||||||
- \[Request\] Use responses for next request? [\#324](https://github.com/liyasthomas/postwoman/issues/324)
|
- \[Request\] Use responses for next request? [\#324](https://github.com/liyasthomas/postwoman/issues/324)
|
||||||
|
- Auth info on WebSocket connections [\#321](https://github.com/liyasthomas/postwoman/issues/321)
|
||||||
|
- Set response panel to fullscreen [\#320](https://github.com/liyasthomas/postwoman/issues/320)
|
||||||
|
- Graphql support [\#312](https://github.com/liyasthomas/postwoman/issues/312)
|
||||||
|
- Keyboard shortcuts [\#302](https://github.com/liyasthomas/postwoman/issues/302)
|
||||||
|
- File/binary request body support [\#298](https://github.com/liyasthomas/postwoman/issues/298)
|
||||||
- Make response body area expandable [\#294](https://github.com/liyasthomas/postwoman/issues/294)
|
- Make response body area expandable [\#294](https://github.com/liyasthomas/postwoman/issues/294)
|
||||||
|
- It's possible to tab into read only and non-form elements [\#287](https://github.com/liyasthomas/postwoman/issues/287)
|
||||||
|
- Change cursor to disabled on disabled inputs [\#286](https://github.com/liyasthomas/postwoman/issues/286)
|
||||||
|
- Hover Styling on Inputs [\#285](https://github.com/liyasthomas/postwoman/issues/285)
|
||||||
|
- Focus Styles on Buttons [\#284](https://github.com/liyasthomas/postwoman/issues/284)
|
||||||
- Mobile can't see console for request errors [\#283](https://github.com/liyasthomas/postwoman/issues/283)
|
- Mobile can't see console for request errors [\#283](https://github.com/liyasthomas/postwoman/issues/283)
|
||||||
|
- Missing Focus on Inputs [\#279](https://github.com/liyasthomas/postwoman/issues/279)
|
||||||
|
- Download the request result into a file. [\#278](https://github.com/liyasthomas/postwoman/issues/278)
|
||||||
|
- Improve UI Contrast [\#277](https://github.com/liyasthomas/postwoman/issues/277)
|
||||||
- Duplicated query string in generated code [\#272](https://github.com/liyasthomas/postwoman/issues/272)
|
- Duplicated query string in generated code [\#272](https://github.com/liyasthomas/postwoman/issues/272)
|
||||||
- Query parameters are duplicated [\#271](https://github.com/liyasthomas/postwoman/issues/271)
|
- Query parameters are duplicated [\#271](https://github.com/liyasthomas/postwoman/issues/271)
|
||||||
- Generated code is incorrect [\#269](https://github.com/liyasthomas/postwoman/issues/269)
|
- Generated code is incorrect [\#269](https://github.com/liyasthomas/postwoman/issues/269)
|
||||||
|
- \[UI\] \[UX\] Allow app to take width of browser [\#236](https://github.com/liyasthomas/postwoman/issues/236)
|
||||||
|
- Extend syntax highlighting with ACE for pre-request script textarea [\#235](https://github.com/liyasthomas/postwoman/issues/235)
|
||||||
|
- Store pre-request scripts in history [\#233](https://github.com/liyasthomas/postwoman/issues/233)
|
||||||
- Lacking documentation and wiki [\#232](https://github.com/liyasthomas/postwoman/issues/232)
|
- Lacking documentation and wiki [\#232](https://github.com/liyasthomas/postwoman/issues/232)
|
||||||
|
- Store the time spent on fetching a response [\#225](https://github.com/liyasthomas/postwoman/issues/225)
|
||||||
- I can't send POST method [\#210](https://github.com/liyasthomas/postwoman/issues/210)
|
- I can't send POST method [\#210](https://github.com/liyasthomas/postwoman/issues/210)
|
||||||
|
- Cache view [\#188](https://github.com/liyasthomas/postwoman/issues/188)
|
||||||
- Handling request failures when build number is obtained from GitHub [\#122](https://github.com/liyasthomas/postwoman/issues/122)
|
- Handling request failures when build number is obtained from GitHub [\#122](https://github.com/liyasthomas/postwoman/issues/122)
|
||||||
|
|
||||||
**Merged pull requests:**
|
**Merged pull requests:**
|
||||||
@@ -263,6 +635,7 @@
|
|||||||
- Various UI tweaks [\#439](https://github.com/liyasthomas/postwoman/pull/439) ([liyasthomas](https://github.com/liyasthomas))
|
- Various UI tweaks [\#439](https://github.com/liyasthomas/postwoman/pull/439) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- i18n [\#438](https://github.com/liyasthomas/postwoman/pull/438) ([liyasthomas](https://github.com/liyasthomas))
|
- i18n [\#438](https://github.com/liyasthomas/postwoman/pull/438) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Burmese translation added [\#437](https://github.com/liyasthomas/postwoman/pull/437) ([ZattWine](https://github.com/ZattWine))
|
- Burmese translation added [\#437](https://github.com/liyasthomas/postwoman/pull/437) ([ZattWine](https://github.com/ZattWine))
|
||||||
|
- chore: stick to Vue.js best practices [\#432](https://github.com/liyasthomas/postwoman/pull/432) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
- Styled select input [\#431](https://github.com/liyasthomas/postwoman/pull/431) ([liyasthomas](https://github.com/liyasthomas))
|
- Styled select input [\#431](https://github.com/liyasthomas/postwoman/pull/431) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Bumped dependencies and Improved UI contrast [\#430](https://github.com/liyasthomas/postwoman/pull/430) ([liyasthomas](https://github.com/liyasthomas))
|
- Bumped dependencies and Improved UI contrast [\#430](https://github.com/liyasthomas/postwoman/pull/430) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- ⬆️ Bump cypress from 3.7.0 to 3.8.0 [\#429](https://github.com/liyasthomas/postwoman/pull/429) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump cypress from 3.7.0 to 3.8.0 [\#429](https://github.com/liyasthomas/postwoman/pull/429) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
@@ -271,6 +644,7 @@
|
|||||||
- Even [\#424](https://github.com/liyasthomas/postwoman/pull/424) ([liyasthomas](https://github.com/liyasthomas))
|
- Even [\#424](https://github.com/liyasthomas/postwoman/pull/424) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- I18n [\#423](https://github.com/liyasthomas/postwoman/pull/423) ([liyasthomas](https://github.com/liyasthomas))
|
- I18n [\#423](https://github.com/liyasthomas/postwoman/pull/423) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- I18n German translation added [\#422](https://github.com/liyasthomas/postwoman/pull/422) ([NJannasch](https://github.com/NJannasch))
|
- I18n German translation added [\#422](https://github.com/liyasthomas/postwoman/pull/422) ([NJannasch](https://github.com/NJannasch))
|
||||||
|
- Header key autocompletion [\#421](https://github.com/liyasthomas/postwoman/pull/421) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Update id-ID.js [\#416](https://github.com/liyasthomas/postwoman/pull/416) ([williamsp](https://github.com/williamsp))
|
- Update id-ID.js [\#416](https://github.com/liyasthomas/postwoman/pull/416) ([williamsp](https://github.com/williamsp))
|
||||||
- Improving translation for id-ID [\#414](https://github.com/liyasthomas/postwoman/pull/414) ([williamsp](https://github.com/williamsp))
|
- Improving translation for id-ID [\#414](https://github.com/liyasthomas/postwoman/pull/414) ([williamsp](https://github.com/williamsp))
|
||||||
- Fixing bug on request saving [\#410](https://github.com/liyasthomas/postwoman/pull/410) ([adevr](https://github.com/adevr))
|
- Fixing bug on request saving [\#410](https://github.com/liyasthomas/postwoman/pull/410) ([adevr](https://github.com/adevr))
|
||||||
@@ -278,10 +652,12 @@
|
|||||||
- ⬆️ Bump vue-virtual-scroll-list from 1.4.3 to 1.4.4 [\#406](https://github.com/liyasthomas/postwoman/pull/406) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump vue-virtual-scroll-list from 1.4.3 to 1.4.4 [\#406](https://github.com/liyasthomas/postwoman/pull/406) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump nuxt-i18n from 6.4.0 to 6.4.1 [\#405](https://github.com/liyasthomas/postwoman/pull/405) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump nuxt-i18n from 6.4.0 to 6.4.1 [\#405](https://github.com/liyasthomas/postwoman/pull/405) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- I18n [\#404](https://github.com/liyasthomas/postwoman/pull/404) ([yubathom](https://github.com/yubathom))
|
- I18n [\#404](https://github.com/liyasthomas/postwoman/pull/404) ([yubathom](https://github.com/yubathom))
|
||||||
|
- Custom methods support [\#400](https://github.com/liyasthomas/postwoman/pull/400) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- App UI [\#391](https://github.com/liyasthomas/postwoman/pull/391) ([liyasthomas](https://github.com/liyasthomas))
|
- App UI [\#391](https://github.com/liyasthomas/postwoman/pull/391) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- i18n [\#383](https://github.com/liyasthomas/postwoman/pull/383) ([liyasthomas](https://github.com/liyasthomas))
|
- i18n [\#383](https://github.com/liyasthomas/postwoman/pull/383) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
- Added Turkish Language Support [\#382](https://github.com/liyasthomas/postwoman/pull/382) ([AliAnilKocak](https://github.com/AliAnilKocak))
|
- Added Turkish Language Support [\#382](https://github.com/liyasthomas/postwoman/pull/382) ([AliAnilKocak](https://github.com/AliAnilKocak))
|
||||||
- Translated new words to Farsi lang [\#380](https://github.com/liyasthomas/postwoman/pull/380) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
- Translated new words to Farsi lang [\#380](https://github.com/liyasthomas/postwoman/pull/380) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
||||||
|
- Two Way Data Binding \(v-model\) to Ace Editor component [\#379](https://github.com/liyasthomas/postwoman/pull/379) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- fix: twitter summary card image url [\#378](https://github.com/liyasthomas/postwoman/pull/378) ([peterpeterparker](https://github.com/peterpeterparker))
|
- fix: twitter summary card image url [\#378](https://github.com/liyasthomas/postwoman/pull/378) ([peterpeterparker](https://github.com/peterpeterparker))
|
||||||
- Added nav shortcuts to GraphQL query and response, updated GraphQL shortcut icons [\#377](https://github.com/liyasthomas/postwoman/pull/377) ([AndrewBastin](https://github.com/AndrewBastin))
|
- Added nav shortcuts to GraphQL query and response, updated GraphQL shortcut icons [\#377](https://github.com/liyasthomas/postwoman/pull/377) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Bump cypress from 3.6.1 to 3.7.0 [\#376](https://github.com/liyasthomas/postwoman/pull/376) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- Bump cypress from 3.6.1 to 3.7.0 [\#376](https://github.com/liyasthomas/postwoman/pull/376) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
@@ -298,61 +674,17 @@
|
|||||||
- Added Brazilian Portuguese language support [\#359](https://github.com/liyasthomas/postwoman/pull/359) ([tetri](https://github.com/tetri))
|
- Added Brazilian Portuguese language support [\#359](https://github.com/liyasthomas/postwoman/pull/359) ([tetri](https://github.com/tetri))
|
||||||
- Added Farsi language support [\#357](https://github.com/liyasthomas/postwoman/pull/357) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
- Added Farsi language support [\#357](https://github.com/liyasthomas/postwoman/pull/357) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
||||||
- Adding french language basic [\#355](https://github.com/liyasthomas/postwoman/pull/355) ([thomasbnt](https://github.com/thomasbnt))
|
- Adding french language basic [\#355](https://github.com/liyasthomas/postwoman/pull/355) ([thomasbnt](https://github.com/thomasbnt))
|
||||||
|
- Basic i18n support [\#351](https://github.com/liyasthomas/postwoman/pull/351) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Undo header/param/body param deletion [\#350](https://github.com/liyasthomas/postwoman/pull/350) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Added ability to run GraphQL queries [\#346](https://github.com/liyasthomas/postwoman/pull/346) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- Add Proxy URL option [\#345](https://github.com/liyasthomas/postwoman/pull/345) ([NBTX](https://github.com/NBTX))
|
- Add Proxy URL option [\#345](https://github.com/liyasthomas/postwoman/pull/345) ([NBTX](https://github.com/NBTX))
|
||||||
|
- ♻️ Refactor Functions [\#344](https://github.com/liyasthomas/postwoman/pull/344) ([athul](https://github.com/athul))
|
||||||
|
- refactor: minor improvements [\#343](https://github.com/liyasthomas/postwoman/pull/343) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
|
|
||||||
## [v1.0.0](https://github.com/liyasthomas/postwoman/tree/v1.0.0) (2019-11-04)
|
## [v1.0.0](https://github.com/liyasthomas/postwoman/tree/v1.0.0) (2019-11-04)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v0.1.0...v1.0.0)
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v0.1.0...v1.0.0)
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Chain requests. Execute a bunch of requests one by one and produce results [\#196](https://github.com/liyasthomas/postwoman/issues/196)
|
|
||||||
- Allow User to Choose Whether to Include Authentication in Permalink [\#178](https://github.com/liyasthomas/postwoman/issues/178)
|
|
||||||
- Allow HTTP \(not HTTPS\) on postwoman.io [\#175](https://github.com/liyasthomas/postwoman/issues/175)
|
|
||||||
- Docker-compose in development [\#168](https://github.com/liyasthomas/postwoman/issues/168)
|
|
||||||
- Add Docker [\#164](https://github.com/liyasthomas/postwoman/issues/164)
|
|
||||||
- Clear Input [\#155](https://github.com/liyasthomas/postwoman/issues/155)
|
|
||||||
- introduce some script language to parse the response and pass environment variable as request parameter [\#139](https://github.com/liyasthomas/postwoman/issues/139)
|
|
||||||
- Add links to the footer version and commit sha [\#134](https://github.com/liyasthomas/postwoman/issues/134)
|
|
||||||
- Please add a label for each request. It will be helpful. [\#133](https://github.com/liyasthomas/postwoman/issues/133)
|
|
||||||
- Use 'icon buttons' instead of 'text buttons' [\#130](https://github.com/liyasthomas/postwoman/issues/130)
|
|
||||||
- Change .editorconfig [\#115](https://github.com/liyasthomas/postwoman/issues/115)
|
|
||||||
- \[UX\] Provide Focus State for Buttons, etc. [\#112](https://github.com/liyasthomas/postwoman/issues/112)
|
|
||||||
- Add linter semistandard [\#98](https://github.com/liyasthomas/postwoman/issues/98)
|
|
||||||
- Show "Send" button all over the page or enable hotkeys [\#94](https://github.com/liyasthomas/postwoman/issues/94)
|
|
||||||
- Import request from cURL [\#93](https://github.com/liyasthomas/postwoman/issues/93)
|
|
||||||
- Search on History [\#92](https://github.com/liyasthomas/postwoman/issues/92)
|
|
||||||
- Add support for "application/hal+json" Content-Type [\#88](https://github.com/liyasthomas/postwoman/issues/88)
|
|
||||||
- The query string is built incorrectly when the path contains a parameter [\#87](https://github.com/liyasthomas/postwoman/issues/87)
|
|
||||||
- Option to Copy request as Fetch or XHR Or CURL [\#76](https://github.com/liyasthomas/postwoman/issues/76)
|
|
||||||
- Add Tests [\#65](https://github.com/liyasthomas/postwoman/issues/65)
|
|
||||||
- Request Headers [\#57](https://github.com/liyasthomas/postwoman/issues/57)
|
|
||||||
- Colored response codes based on status code [\#46](https://github.com/liyasthomas/postwoman/issues/46)
|
|
||||||
- Improve SEO [\#45](https://github.com/liyasthomas/postwoman/issues/45)
|
|
||||||
- Add html preview to response section [\#41](https://github.com/liyasthomas/postwoman/issues/41)
|
|
||||||
- websocket support [\#40](https://github.com/liyasthomas/postwoman/issues/40)
|
|
||||||
- Raw request body for POST requests and Authorization key/value in Header [\#36](https://github.com/liyasthomas/postwoman/issues/36)
|
|
||||||
- Code highlight on response body [\#33](https://github.com/liyasthomas/postwoman/issues/33)
|
|
||||||
- Template selector [\#32](https://github.com/liyasthomas/postwoman/issues/32)
|
|
||||||
- Vue template [\#31](https://github.com/liyasthomas/postwoman/issues/31)
|
|
||||||
- Add copy response to clipboard button [\#30](https://github.com/liyasthomas/postwoman/issues/30)
|
|
||||||
- Ability to store/share/create collections [\#29](https://github.com/liyasthomas/postwoman/issues/29)
|
|
||||||
- Send request on Enter Key press [\#17](https://github.com/liyasthomas/postwoman/issues/17)
|
|
||||||
- Readable [\#5](https://github.com/liyasthomas/postwoman/issues/5)
|
|
||||||
- Serialize a request into JSON? [\#4](https://github.com/liyasthomas/postwoman/issues/4)
|
|
||||||
- Add brand new logo to the project [\#244](https://github.com/liyasthomas/postwoman/pull/244) ([caneco](https://github.com/caneco))
|
|
||||||
- Feature/pre request script [\#231](https://github.com/liyasthomas/postwoman/pull/231) ([nickpalenchar](https://github.com/nickpalenchar))
|
|
||||||
- Add the ApolloTV proxy server [\#217](https://github.com/liyasthomas/postwoman/pull/217) ([NBTX](https://github.com/NBTX))
|
|
||||||
- bug: keeping information on page change [\#211](https://github.com/liyasthomas/postwoman/pull/211) ([breno-pereira](https://github.com/breno-pereira))
|
|
||||||
- Work in Progress: feature/allow-collections-importing [\#209](https://github.com/liyasthomas/postwoman/pull/209) ([vlad0337187](https://github.com/vlad0337187))
|
|
||||||
- Feature/log errors [\#207](https://github.com/liyasthomas/postwoman/pull/207) ([nickpalenchar](https://github.com/nickpalenchar))
|
|
||||||
- Use returned value from toggle component on change event [\#205](https://github.com/liyasthomas/postwoman/pull/205) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
|
||||||
- Fix CORS and mixed content issue [\#199](https://github.com/liyasthomas/postwoman/pull/199) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
|
||||||
- Added Tooltips [\#197](https://github.com/liyasthomas/postwoman/pull/197) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Added auto theme [\#185](https://github.com/liyasthomas/postwoman/pull/185) ([AndrewBastin](https://github.com/AndrewBastin))
|
|
||||||
- Add Request name label for every requests [\#184](https://github.com/liyasthomas/postwoman/pull/184) ([sharath2106](https://github.com/sharath2106))
|
|
||||||
- Collections [\#176](https://github.com/liyasthomas/postwoman/pull/176) ([TheHollidayInn](https://github.com/TheHollidayInn))
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
**Fixed bugs:**
|
||||||
|
|
||||||
- Bearer Token value still left even after being cleared [\#212](https://github.com/liyasthomas/postwoman/issues/212)
|
- Bearer Token value still left even after being cleared [\#212](https://github.com/liyasthomas/postwoman/issues/212)
|
||||||
@@ -375,24 +707,58 @@
|
|||||||
- Unsupported URLs \[BUG\]? [\#229](https://github.com/liyasthomas/postwoman/issues/229)
|
- Unsupported URLs \[BUG\]? [\#229](https://github.com/liyasthomas/postwoman/issues/229)
|
||||||
- Credentials are still being included in Permalink even when "Include in URL" is turned off [\#227](https://github.com/liyasthomas/postwoman/issues/227)
|
- Credentials are still being included in Permalink even when "Include in URL" is turned off [\#227](https://github.com/liyasthomas/postwoman/issues/227)
|
||||||
- Display sendRequest runtime errors in the console [\#206](https://github.com/liyasthomas/postwoman/issues/206)
|
- Display sendRequest runtime errors in the console [\#206](https://github.com/liyasthomas/postwoman/issues/206)
|
||||||
|
- Chain requests. Execute a bunch of requests one by one and produce results [\#196](https://github.com/liyasthomas/postwoman/issues/196)
|
||||||
|
- Allow User to Choose Whether to Include Authentication in Permalink [\#178](https://github.com/liyasthomas/postwoman/issues/178)
|
||||||
|
- Allow HTTP \(not HTTPS\) on postwoman.io [\#175](https://github.com/liyasthomas/postwoman/issues/175)
|
||||||
|
- Docker-compose in development [\#168](https://github.com/liyasthomas/postwoman/issues/168)
|
||||||
|
- Add Docker [\#164](https://github.com/liyasthomas/postwoman/issues/164)
|
||||||
- Missing "Landing/start page" [\#162](https://github.com/liyasthomas/postwoman/issues/162)
|
- Missing "Landing/start page" [\#162](https://github.com/liyasthomas/postwoman/issues/162)
|
||||||
- Response with content-type "application/hal+json" shows as \[Object object\] [\#158](https://github.com/liyasthomas/postwoman/issues/158)
|
- Response with content-type "application/hal+json" shows as \[Object object\] [\#158](https://github.com/liyasthomas/postwoman/issues/158)
|
||||||
|
- Clear Input [\#155](https://github.com/liyasthomas/postwoman/issues/155)
|
||||||
- A place to discuss [\#149](https://github.com/liyasthomas/postwoman/issues/149)
|
- A place to discuss [\#149](https://github.com/liyasthomas/postwoman/issues/149)
|
||||||
- Inconsistent version name [\#141](https://github.com/liyasthomas/postwoman/issues/141)
|
- Inconsistent version name [\#141](https://github.com/liyasthomas/postwoman/issues/141)
|
||||||
|
- introduce some script language to parse the response and pass environment variable as request parameter [\#139](https://github.com/liyasthomas/postwoman/issues/139)
|
||||||
|
- Add links to the footer version and commit sha [\#134](https://github.com/liyasthomas/postwoman/issues/134)
|
||||||
|
- Please add a label for each request. It will be helpful. [\#133](https://github.com/liyasthomas/postwoman/issues/133)
|
||||||
|
- Use 'icon buttons' instead of 'text buttons' [\#130](https://github.com/liyasthomas/postwoman/issues/130)
|
||||||
|
- Change .editorconfig [\#115](https://github.com/liyasthomas/postwoman/issues/115)
|
||||||
|
- \[UX\] Provide Focus State for Buttons, etc. [\#112](https://github.com/liyasthomas/postwoman/issues/112)
|
||||||
- Autoresize the textarea [\#102](https://github.com/liyasthomas/postwoman/issues/102)
|
- Autoresize the textarea [\#102](https://github.com/liyasthomas/postwoman/issues/102)
|
||||||
- Content-Type revamping [\#99](https://github.com/liyasthomas/postwoman/issues/99)
|
- Content-Type revamping [\#99](https://github.com/liyasthomas/postwoman/issues/99)
|
||||||
|
- Add linter semistandard [\#98](https://github.com/liyasthomas/postwoman/issues/98)
|
||||||
- Add version number in footer [\#97](https://github.com/liyasthomas/postwoman/issues/97)
|
- Add version number in footer [\#97](https://github.com/liyasthomas/postwoman/issues/97)
|
||||||
|
- Show "Send" button all over the page or enable hotkeys [\#94](https://github.com/liyasthomas/postwoman/issues/94)
|
||||||
|
- Import request from cURL [\#93](https://github.com/liyasthomas/postwoman/issues/93)
|
||||||
|
- Search on History [\#92](https://github.com/liyasthomas/postwoman/issues/92)
|
||||||
|
- Add support for "application/hal+json" Content-Type [\#88](https://github.com/liyasthomas/postwoman/issues/88)
|
||||||
|
- The query string is built incorrectly when the path contains a parameter [\#87](https://github.com/liyasthomas/postwoman/issues/87)
|
||||||
- The history doesn't show a date with the timestamp. [\#81](https://github.com/liyasthomas/postwoman/issues/81)
|
- The history doesn't show a date with the timestamp. [\#81](https://github.com/liyasthomas/postwoman/issues/81)
|
||||||
|
- Option to Copy request as Fetch or XHR Or CURL [\#76](https://github.com/liyasthomas/postwoman/issues/76)
|
||||||
- Not working on Brave Browser anymore [\#71](https://github.com/liyasthomas/postwoman/issues/71)
|
- Not working on Brave Browser anymore [\#71](https://github.com/liyasthomas/postwoman/issues/71)
|
||||||
- Why da fuq is your name plastered all over the README? [\#70](https://github.com/liyasthomas/postwoman/issues/70)
|
- Why da fuq is your name plastered all over the README? [\#70](https://github.com/liyasthomas/postwoman/issues/70)
|
||||||
- Comparison with Postman is missing [\#69](https://github.com/liyasthomas/postwoman/issues/69)
|
- Comparison with Postman is missing [\#69](https://github.com/liyasthomas/postwoman/issues/69)
|
||||||
|
- Add Tests [\#65](https://github.com/liyasthomas/postwoman/issues/65)
|
||||||
- HTTP request with different library [\#61](https://github.com/liyasthomas/postwoman/issues/61)
|
- HTTP request with different library [\#61](https://github.com/liyasthomas/postwoman/issues/61)
|
||||||
- Editorconfig file [\#60](https://github.com/liyasthomas/postwoman/issues/60)
|
- Editorconfig file [\#60](https://github.com/liyasthomas/postwoman/issues/60)
|
||||||
- 500 this.isValidURL is not a function [\#58](https://github.com/liyasthomas/postwoman/issues/58)
|
- 500 this.isValidURL is not a function [\#58](https://github.com/liyasthomas/postwoman/issues/58)
|
||||||
|
- Request Headers [\#57](https://github.com/liyasthomas/postwoman/issues/57)
|
||||||
|
- Colored response codes based on status code [\#46](https://github.com/liyasthomas/postwoman/issues/46)
|
||||||
|
- Improve SEO [\#45](https://github.com/liyasthomas/postwoman/issues/45)
|
||||||
|
- Add html preview to response section [\#41](https://github.com/liyasthomas/postwoman/issues/41)
|
||||||
|
- websocket support [\#40](https://github.com/liyasthomas/postwoman/issues/40)
|
||||||
- Styling with Tailwindcss [\#38](https://github.com/liyasthomas/postwoman/issues/38)
|
- Styling with Tailwindcss [\#38](https://github.com/liyasthomas/postwoman/issues/38)
|
||||||
- Not Working in IE 11 [\#37](https://github.com/liyasthomas/postwoman/issues/37)
|
- Not Working in IE 11 [\#37](https://github.com/liyasthomas/postwoman/issues/37)
|
||||||
|
- Raw request body for POST requests and Authorization key/value in Header [\#36](https://github.com/liyasthomas/postwoman/issues/36)
|
||||||
|
- Code highlight on response body [\#33](https://github.com/liyasthomas/postwoman/issues/33)
|
||||||
|
- Template selector [\#32](https://github.com/liyasthomas/postwoman/issues/32)
|
||||||
|
- Vue template [\#31](https://github.com/liyasthomas/postwoman/issues/31)
|
||||||
|
- Add copy response to clipboard button [\#30](https://github.com/liyasthomas/postwoman/issues/30)
|
||||||
|
- Ability to store/share/create collections [\#29](https://github.com/liyasthomas/postwoman/issues/29)
|
||||||
- PWA not installable [\#19](https://github.com/liyasthomas/postwoman/issues/19)
|
- PWA not installable [\#19](https://github.com/liyasthomas/postwoman/issues/19)
|
||||||
|
- Send request on Enter Key press [\#17](https://github.com/liyasthomas/postwoman/issues/17)
|
||||||
- Simple Misspelling [\#8](https://github.com/liyasthomas/postwoman/issues/8)
|
- Simple Misspelling [\#8](https://github.com/liyasthomas/postwoman/issues/8)
|
||||||
|
- Readable [\#5](https://github.com/liyasthomas/postwoman/issues/5)
|
||||||
|
- Serialize a request into JSON? [\#4](https://github.com/liyasthomas/postwoman/issues/4)
|
||||||
|
|
||||||
**Merged pull requests:**
|
**Merged pull requests:**
|
||||||
|
|
||||||
@@ -414,12 +780,14 @@
|
|||||||
- docs: add liyasthomas as a contributor [\#247](https://github.com/liyasthomas/postwoman/pull/247) ([allcontributors[bot]](https://github.com/apps/allcontributors))
|
- docs: add liyasthomas as a contributor [\#247](https://github.com/liyasthomas/postwoman/pull/247) ([allcontributors[bot]](https://github.com/apps/allcontributors))
|
||||||
- Make page changes more fluid [\#246](https://github.com/liyasthomas/postwoman/pull/246) ([NBTX](https://github.com/NBTX))
|
- Make page changes more fluid [\#246](https://github.com/liyasthomas/postwoman/pull/246) ([NBTX](https://github.com/NBTX))
|
||||||
- Minor tweaks [\#245](https://github.com/liyasthomas/postwoman/pull/245) ([liyasthomas](https://github.com/liyasthomas))
|
- Minor tweaks [\#245](https://github.com/liyasthomas/postwoman/pull/245) ([liyasthomas](https://github.com/liyasthomas))
|
||||||
|
- Add brand new logo to the project [\#244](https://github.com/liyasthomas/postwoman/pull/244) ([caneco](https://github.com/caneco))
|
||||||
- ⬆️ Bump @nuxtjs/google-tag-manager from 2.3.0 to 2.3.1 [\#243](https://github.com/liyasthomas/postwoman/pull/243) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump @nuxtjs/google-tag-manager from 2.3.0 to 2.3.1 [\#243](https://github.com/liyasthomas/postwoman/pull/243) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump yargs-parser from 15.0.0 to 16.1.0 [\#242](https://github.com/liyasthomas/postwoman/pull/242) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump yargs-parser from 15.0.0 to 16.1.0 [\#242](https://github.com/liyasthomas/postwoman/pull/242) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump @nuxtjs/toast from 3.2.1 to 3.3.0 [\#241](https://github.com/liyasthomas/postwoman/pull/241) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump @nuxtjs/toast from 3.2.1 to 3.3.0 [\#241](https://github.com/liyasthomas/postwoman/pull/241) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump highlight.js from 9.15.10 to 9.16.2 [\#240](https://github.com/liyasthomas/postwoman/pull/240) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump highlight.js from 9.15.10 to 9.16.2 [\#240](https://github.com/liyasthomas/postwoman/pull/240) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump cypress from 3.5.0 to 3.6.0 [\#239](https://github.com/liyasthomas/postwoman/pull/239) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump cypress from 3.5.0 to 3.6.0 [\#239](https://github.com/liyasthomas/postwoman/pull/239) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- Fix legend labels in Firefox, fix colored labels slider [\#238](https://github.com/liyasthomas/postwoman/pull/238) ([NBTX](https://github.com/NBTX))
|
- Fix legend labels in Firefox, fix colored labels slider [\#238](https://github.com/liyasthomas/postwoman/pull/238) ([NBTX](https://github.com/NBTX))
|
||||||
|
- Feature/pre request script [\#231](https://github.com/liyasthomas/postwoman/pull/231) ([nickpalenchar](https://github.com/nickpalenchar))
|
||||||
- Documentation Cleanup [\#230](https://github.com/liyasthomas/postwoman/pull/230) ([amitdash291](https://github.com/amitdash291))
|
- Documentation Cleanup [\#230](https://github.com/liyasthomas/postwoman/pull/230) ([amitdash291](https://github.com/amitdash291))
|
||||||
- Fix \#227 Exclude credentials from permalink [\#228](https://github.com/liyasthomas/postwoman/pull/228) ([reefqi037](https://github.com/reefqi037))
|
- Fix \#227 Exclude credentials from permalink [\#228](https://github.com/liyasthomas/postwoman/pull/228) ([reefqi037](https://github.com/reefqi037))
|
||||||
- ⬆️ Bump cypress from 3.4.1 to 3.5.0 [\#224](https://github.com/liyasthomas/postwoman/pull/224) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump cypress from 3.4.1 to 3.5.0 [\#224](https://github.com/liyasthomas/postwoman/pull/224) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
@@ -428,23 +796,33 @@
|
|||||||
- ⬆️ Bump nuxt from 2.10.1 to 2.10.2 [\#221](https://github.com/liyasthomas/postwoman/pull/221) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump nuxt from 2.10.1 to 2.10.2 [\#221](https://github.com/liyasthomas/postwoman/pull/221) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump @nuxtjs/google-analytics from 2.2.0 to 2.2.1 [\#220](https://github.com/liyasthomas/postwoman/pull/220) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump @nuxtjs/google-analytics from 2.2.0 to 2.2.1 [\#220](https://github.com/liyasthomas/postwoman/pull/220) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump vuex-persist from 2.1.0 to 2.1.1 [\#219](https://github.com/liyasthomas/postwoman/pull/219) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump vuex-persist from 2.1.0 to 2.1.1 [\#219](https://github.com/liyasthomas/postwoman/pull/219) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Add the ApolloTV proxy server [\#217](https://github.com/liyasthomas/postwoman/pull/217) ([NBTX](https://github.com/NBTX))
|
||||||
- Fixed frame colors toggle [\#216](https://github.com/liyasthomas/postwoman/pull/216) ([mateusppereira](https://github.com/mateusppereira))
|
- Fixed frame colors toggle [\#216](https://github.com/liyasthomas/postwoman/pull/216) ([mateusppereira](https://github.com/mateusppereira))
|
||||||
- Re-order sections and add toggle for including authentication in URL [\#215](https://github.com/liyasthomas/postwoman/pull/215) ([NBTX](https://github.com/NBTX))
|
- Re-order sections and add toggle for including authentication in URL [\#215](https://github.com/liyasthomas/postwoman/pull/215) ([NBTX](https://github.com/NBTX))
|
||||||
- chore: minor code refactor [\#214](https://github.com/liyasthomas/postwoman/pull/214) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
- chore: minor code refactor [\#214](https://github.com/liyasthomas/postwoman/pull/214) ([jamesgeorge007](https://github.com/jamesgeorge007))
|
||||||
- Fix \#212 Clear bearer token value [\#213](https://github.com/liyasthomas/postwoman/pull/213) ([reefqi037](https://github.com/reefqi037))
|
- Fix \#212 Clear bearer token value [\#213](https://github.com/liyasthomas/postwoman/pull/213) ([reefqi037](https://github.com/reefqi037))
|
||||||
|
- bug: keeping information on page change [\#211](https://github.com/liyasthomas/postwoman/pull/211) ([breno-pereira](https://github.com/breno-pereira))
|
||||||
|
- Work in Progress: feature/allow-collections-importing [\#209](https://github.com/liyasthomas/postwoman/pull/209) ([vlad0337187](https://github.com/vlad0337187))
|
||||||
- fix: don't display 'Collection is empty' label if collection has any … [\#208](https://github.com/liyasthomas/postwoman/pull/208) ([vlad0337187](https://github.com/vlad0337187))
|
- fix: don't display 'Collection is empty' label if collection has any … [\#208](https://github.com/liyasthomas/postwoman/pull/208) ([vlad0337187](https://github.com/vlad0337187))
|
||||||
|
- Feature/log errors [\#207](https://github.com/liyasthomas/postwoman/pull/207) ([nickpalenchar](https://github.com/nickpalenchar))
|
||||||
|
- Use returned value from toggle component on change event [\#205](https://github.com/liyasthomas/postwoman/pull/205) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
||||||
- Fix proxy URL [\#201](https://github.com/liyasthomas/postwoman/pull/201) ([NBTX](https://github.com/NBTX))
|
- Fix proxy URL [\#201](https://github.com/liyasthomas/postwoman/pull/201) ([NBTX](https://github.com/NBTX))
|
||||||
- Fix CORS and Mixed-Content issue & Bug Fixes [\#200](https://github.com/liyasthomas/postwoman/pull/200) ([NBTX](https://github.com/NBTX))
|
- Fix CORS and Mixed-Content issue & Bug Fixes [\#200](https://github.com/liyasthomas/postwoman/pull/200) ([NBTX](https://github.com/NBTX))
|
||||||
|
- Fix CORS and mixed content issue [\#199](https://github.com/liyasthomas/postwoman/pull/199) ([hosseinnedaee](https://github.com/hosseinnedaee))
|
||||||
- ⬆️ Bump start-server-and-test from 1.10.5 to 1.10.6 [\#198](https://github.com/liyasthomas/postwoman/pull/198) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump start-server-and-test from 1.10.5 to 1.10.6 [\#198](https://github.com/liyasthomas/postwoman/pull/198) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
|
- Added Tooltips [\#197](https://github.com/liyasthomas/postwoman/pull/197) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
- ⬆️ Bump start-server-and-test from 1.10.3 to 1.10.5 [\#194](https://github.com/liyasthomas/postwoman/pull/194) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump start-server-and-test from 1.10.3 to 1.10.5 [\#194](https://github.com/liyasthomas/postwoman/pull/194) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump @nuxtjs/google-tag-manager from 2.2.1 to 2.3.0 [\#193](https://github.com/liyasthomas/postwoman/pull/193) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump @nuxtjs/google-tag-manager from 2.2.1 to 2.3.0 [\#193](https://github.com/liyasthomas/postwoman/pull/193) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump nuxt from 2.10.0 to 2.10.1 [\#192](https://github.com/liyasthomas/postwoman/pull/192) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump nuxt from 2.10.0 to 2.10.1 [\#192](https://github.com/liyasthomas/postwoman/pull/192) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- ⬆️ Bump yargs-parser from 14.0.0 to 15.0.0 [\#191](https://github.com/liyasthomas/postwoman/pull/191) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump yargs-parser from 14.0.0 to 15.0.0 [\#191](https://github.com/liyasthomas/postwoman/pull/191) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- Add quotation marks for generated code [\#187](https://github.com/liyasthomas/postwoman/pull/187) ([johnhenry](https://github.com/johnhenry))
|
- Add quotation marks for generated code [\#187](https://github.com/liyasthomas/postwoman/pull/187) ([johnhenry](https://github.com/johnhenry))
|
||||||
|
- Added auto theme [\#185](https://github.com/liyasthomas/postwoman/pull/185) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
- Add Request name label for every requests [\#184](https://github.com/liyasthomas/postwoman/pull/184) ([sharath2106](https://github.com/sharath2106))
|
||||||
- updated threshold and rootMargin for IntersectionObserver [\#182](https://github.com/liyasthomas/postwoman/pull/182) ([edisonaugusthy](https://github.com/edisonaugusthy))
|
- updated threshold and rootMargin for IntersectionObserver [\#182](https://github.com/liyasthomas/postwoman/pull/182) ([edisonaugusthy](https://github.com/edisonaugusthy))
|
||||||
- Add basic e2e tests [\#181](https://github.com/liyasthomas/postwoman/pull/181) ([yubathom](https://github.com/yubathom))
|
- Add basic e2e tests [\#181](https://github.com/liyasthomas/postwoman/pull/181) ([yubathom](https://github.com/yubathom))
|
||||||
- ⬆️ Bump nuxt from 2.9.2 to 2.10.0 [\#179](https://github.com/liyasthomas/postwoman/pull/179) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
- ⬆️ Bump nuxt from 2.9.2 to 2.10.0 [\#179](https://github.com/liyasthomas/postwoman/pull/179) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
||||||
- 🐛 Fixed sitemap configuration [\#177](https://github.com/liyasthomas/postwoman/pull/177) ([NicoPennec](https://github.com/NicoPennec))
|
- 🐛 Fixed sitemap configuration [\#177](https://github.com/liyasthomas/postwoman/pull/177) ([NicoPennec](https://github.com/NicoPennec))
|
||||||
|
- Collections [\#176](https://github.com/liyasthomas/postwoman/pull/176) ([TheHollidayInn](https://github.com/TheHollidayInn))
|
||||||
- Code Refactoring [\#173](https://github.com/liyasthomas/postwoman/pull/173) ([edisonaugusthy](https://github.com/edisonaugusthy))
|
- Code Refactoring [\#173](https://github.com/liyasthomas/postwoman/pull/173) ([edisonaugusthy](https://github.com/edisonaugusthy))
|
||||||
- Added Black Theme [\#172](https://github.com/liyasthomas/postwoman/pull/172) ([AndrewBastin](https://github.com/AndrewBastin))
|
- Added Black Theme [\#172](https://github.com/liyasthomas/postwoman/pull/172) ([AndrewBastin](https://github.com/AndrewBastin))
|
||||||
|
|
||||||
@@ -452,6 +830,4 @@
|
|||||||
|
|
||||||
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/91c08a5e6305cc95a0df46a33fdd0013bf7339b4...v0.1.0)
|
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/91c08a5e6305cc95a0df46a33fdd0013bf7339b4...v0.1.0)
|
||||||
|
|
||||||
|
\* _This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)_
|
||||||
|
|
||||||
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
|
||||||
|
|||||||
@@ -2,75 +2,127 @@
|
|||||||
|
|
||||||
## Our Pledge
|
## Our Pledge
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
contributors and maintainers pledge to making participation in our project and
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
our community a harassment-free experience for everyone, regardless of age, body
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
level of experience, education, socio-economic status, nationality, personal
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
appearance, race, religion, or sexual identity and orientation.
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
## Our Standards
|
## Our Standards
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment
|
Examples of behavior that contributes to a positive environment for our
|
||||||
include:
|
community include:
|
||||||
|
|
||||||
* Using welcoming and inclusive language
|
* Demonstrating empathy and kindness toward other people
|
||||||
* Being respectful of differing viewpoints and experiences
|
* Being respectful of differing opinions, viewpoints, and experiences
|
||||||
* Gracefully accepting constructive criticism
|
* Giving and gracefully accepting constructive feedback
|
||||||
* Focusing on what is best for the community
|
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
* Showing empathy towards other community members
|
and learning from the experience
|
||||||
|
* Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
* The use of sexualized language or imagery, and sexual attention or
|
||||||
advances
|
advances of any kind
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
* Public or private harassment
|
* Public or private harassment
|
||||||
* Publishing others' private information, such as a physical or electronic
|
* Publishing others' private information, such as a physical or email
|
||||||
address, without explicit permission
|
address, without their explicit permission
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
professional setting
|
professional setting
|
||||||
|
|
||||||
## Our Responsibilities
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
behavior. Maintainers are expected to take appropriate and fair corrective action in
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
response to any instances of unacceptable behavior.
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
that are not aligned with our Code of Conduct, or to ban temporarily or
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
permanently any contributor for other behaviors that they deem inappropriate,
|
decisions when appropriate.
|
||||||
threatening, offensive, or harmful.
|
|
||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
when an individual is representing the project or its community. Examples of
|
an individual is officially representing the community in public spaces.
|
||||||
representing a project or community include using an official project e-mail
|
Examples of representing our community include using an official e-mail address,
|
||||||
address, posting via an official social media account, or acting as an appointed
|
posting via an official social media account, or acting as an appointed
|
||||||
representative at an online or offline event. Representation of a project may be
|
representative at an online or offline event.
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
## Enforcement
|
## Enforcement
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
reported by contacting the project team at liyascthomas@gmail.com. All
|
reported to the community leaders responsible for enforcement at
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
support@hoppscotch.io.
|
||||||
is deemed necessary and appropriate to the circumstances. The project team is
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
||||||
Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
faith may face temporary or permanent repercussions as determined by other
|
reporter of any incident.
|
||||||
members of the project's leadership.
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series
|
||||||
|
of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within
|
||||||
|
the community.
|
||||||
|
|
||||||
## Attribution
|
## Attribution
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
version 2.0, available at
|
||||||
|
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||||
|
enforcement ladder](https://github.com/mozilla/diversity).
|
||||||
|
|
||||||
[homepage]: https://www.contributor-covenant.org
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
For answers to common questions about this code of conduct, see
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
https://www.contributor-covenant.org/faq
|
https://www.contributor-covenant.org/faq. Translations are available at
|
||||||
|
https://www.contributor-covenant.org/translations.
|
||||||
|
|||||||
@@ -12,81 +12,6 @@ Please note we have a code of conduct, please follow it in all your interactions
|
|||||||
2. Update the README.md with details of changes to the interface, this includes new environment
|
2. Update the README.md with details of changes to the interface, this includes new environment
|
||||||
variables, exposed ports, useful file locations and container parameters.
|
variables, exposed ports, useful file locations and container parameters.
|
||||||
3. Increase the version numbers in any examples files and the README.md to the new version that this
|
3. Increase the version numbers in any examples files and the README.md to the new version that this
|
||||||
Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).
|
Pull Request would represent. The versioning scheme we use is [SemVer](https://semver.org).
|
||||||
4. You may merge the Pull Request once you have the sign-off of two other developers, or if you
|
4. You may merge the Pull Request once you have the sign-off of two other developers, or if you
|
||||||
do not have permission to do that, you may request the second reviewer merge it for you.
|
do not have permission to do that, you may request the second reviewer merge it for you.
|
||||||
|
|
||||||
## Code of Conduct
|
|
||||||
|
|
||||||
### Our Pledge
|
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as
|
|
||||||
contributors and maintainers pledge to making participation in our project and
|
|
||||||
our community a harassment-free experience for everyone, regardless of age, body
|
|
||||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
|
||||||
nationality, personal appearance, race, religion, or sexual identity and
|
|
||||||
orientation.
|
|
||||||
|
|
||||||
### Our Standards
|
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment
|
|
||||||
include:
|
|
||||||
|
|
||||||
* Using welcoming and inclusive language
|
|
||||||
* Being respectful of differing viewpoints and experiences
|
|
||||||
* Gracefully accepting constructive criticism
|
|
||||||
* Focusing on what is best for the community
|
|
||||||
* Showing empathy towards other community members
|
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
|
||||||
advances
|
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
||||||
* Public or private harassment
|
|
||||||
* Publishing others' private information, such as a physical or electronic
|
|
||||||
address, without explicit permission
|
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
|
||||||
professional setting
|
|
||||||
|
|
||||||
### Our Responsibilities
|
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable
|
|
||||||
behavior. Maintainers are expected to take appropriate and fair corrective action in
|
|
||||||
response to any instances of unacceptable behavior.
|
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or
|
|
||||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
||||||
that are not aligned with our Code of Conduct, or to ban temporarily or
|
|
||||||
permanently any contributor for other behaviors that they deem inappropriate,
|
|
||||||
threatening, offensive, or harmful.
|
|
||||||
|
|
||||||
### Scope
|
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces
|
|
||||||
when an individual is representing the project or its community. Examples of
|
|
||||||
representing a project or community include using an official project e-mail
|
|
||||||
address, posting via an official social media account, or acting as an appointed
|
|
||||||
representative at an online or offline event. Representation of a project may be
|
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
### Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
||||||
reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
|
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
|
||||||
is deemed necessary and appropriate to the circumstances. The project team is
|
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
||||||
Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
||||||
faith may face temporary or permanent repercussions as determined by other
|
|
||||||
members of the project's leadership.
|
|
||||||
|
|
||||||
### Attribution
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
||||||
available at [http://contributor-covenant.org/version/1/4][version]
|
|
||||||
|
|
||||||
[homepage]: http://contributor-covenant.org
|
|
||||||
[version]: http://contributor-covenant.org/version/1/4/
|
|
||||||
|
|||||||
20
Dockerfile
20
Dockerfile
@@ -1,21 +1,27 @@
|
|||||||
FROM node:12.10.0-alpine
|
FROM node:lts-alpine
|
||||||
|
|
||||||
LABEL maintainer="Liyas Thomas (liyascthomas@gmail.com)"
|
LABEL maintainer="Hoppscotch (support@hoppscotch.io)"
|
||||||
|
|
||||||
# Add git as the prebuild target requires it to parse version information
|
# Add git as the prebuild target requires it to parse version information
|
||||||
RUN apk add --update --no-cache \
|
RUN apk add --update --no-cache \
|
||||||
git
|
git
|
||||||
|
|
||||||
|
# Create app directory
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY package*.json ./
|
ADD . /app/
|
||||||
|
|
||||||
RUN npm install
|
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN npm run build
|
RUN npm install -g pnpm
|
||||||
|
|
||||||
|
RUN pnpm i --unsafe-perm=true
|
||||||
|
|
||||||
|
ENV HOST 0.0.0.0
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
CMD ["npm", "run", "start"]
|
RUN mv packages/hoppscotch-app/.env.example packages/hoppscotch-app/.env
|
||||||
|
|
||||||
|
RUN pnpm run generate
|
||||||
|
|
||||||
|
CMD ["pnpm", "run", "start"]
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2019 Liyas Thomas
|
Copyright (c) 2020
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
563
README.md
563
README.md
@@ -1,434 +1,363 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<a href="https://postwoman.io"><img src="static/logo.png" alt="Postwoman.io logo" height="160"></a>
|
<a href="https://hoppscotch.io">
|
||||||
<br>
|
<img
|
||||||
<br>
|
src="https://avatars.githubusercontent.com/u/56705483"
|
||||||
|
alt="Hoppscotch Logo"
|
||||||
|
height="64"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
<br />
|
||||||
<p>
|
<p>
|
||||||
<b>A free, fast and beautiful API request builder</b>
|
<h3>
|
||||||
|
<b>
|
||||||
|
Hoppscotch
|
||||||
|
</b>
|
||||||
|
</h3>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<i>Web alternative to Postman - Helps you create requests faster, saving precious time on development - <a href="https://postwoman.launchaco.com">Subscribe</a></i>
|
<b>
|
||||||
|
Open source API development ecosystem
|
||||||
|
</b>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
[](https://travis-ci.com/liyasthomas/postwoman) [](https://github.com/liyasthomas/postwoman/releases/latest) [](https://postwoman.io) [](CONTRIBUTING.md) [](https://opencollective.com/postwoman) [](https://www.paypal.me/liyascthomas) [](https://t.me/postwoman_app) [](https://discord.gg/GAMWxmR) [](https://twitter.com/intent/tweet?url=https%3A%2F%2Fpostwoman.io&text=%F0%9F%91%BD%20Postwoman%20%E2%80%A2%20API%20request%20builder%20-%20Helps%20you%20create%20your%20requests%20faster%2C%20saving%20you%20precious%20time%20on%20your%20development&original_referer=https%3A%2F%2Ftwitter.com%2Fshare%3Ftext%3D%25F0%259F%2591%25BD%2520Postwoman%2520%25E2%2580%25A2%2520API%2520request%2520builder%2520-%2520Helps%2520you%2520create%2520your%2520requests%2520faster%2C%2520saving%2520you%2520precious%2520time%2520on%2520your%2520development%26url%3Dhttps%3A%2F%2Fpostwoman.io%26hashtags%3Dpostwoman%26via%3Dliyasthomas&via=liyasthomas&hashtags=postwoman)
|
[](CODE_OF_CONDUCT.md) [](https://hoppscotch.io) [](https://github.com/hoppscotch/hoppscotch/actions) [](https://twitter.com/share?text=%F0%9F%91%BD%20Hoppscotch%20%E2%80%A2%20Open%20source%20API%20development%20ecosystem%20-%20Helps%20you%20create%20requests%20faster,%20saving%20precious%20time%20on%20development.&url=https://hoppscotch.io&hashtags=hoppscotch&via=hoppscotch_io)
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<sub>Built with ❤︎ by
|
<sub>
|
||||||
<a href="https://github.com/liyasthomas">liyasthomas</a> and
|
Built with ❤︎ by
|
||||||
<a href="https://github.com/liyasthomas/postwoman/graphs/contributors">contributors</a>
|
<a href="https://github.com/hoppscotch/hoppscotch/graphs/contributors">
|
||||||
|
contributors
|
||||||
|
</a>
|
||||||
</sub>
|
</sub>
|
||||||
</p>
|
</p>
|
||||||
|
<br />
|
||||||
|
<p>
|
||||||
|
<a href="https://hoppscotch.io">
|
||||||
|
<img
|
||||||
|
src="https://raw.githubusercontent.com/hoppscotch/hoppscotch/main/packages/hoppscotch-app/static/banner.png"
|
||||||
|
alt="Screenshot"
|
||||||
|
width="100%"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
#### **Support**
|
||||||
|
|
||||||
|
[](https://hoppscotch.io/discord) [](https://hoppscotch.io/telegram)
|
||||||
|
|
||||||
|
<details open>
|
||||||
|
<summary><b>Table of contents</b></summary>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Read: _[Story behind Postwoman](https://dev.to/liyasthomas/i-created-postwoman-an-online-open-source-api-request-builder-41md), [Postwoman v1.0](https://dev.to/liyasthomas/postwoman-v1-0-a-free-fast-beautiful-alternative-to-postman-mn0)_**
|
- [Features](#features)
|
||||||
|
- [Demo](#demo)
|
||||||
|
- [Usage](#usage)
|
||||||
|
- [Built with](#built-with)
|
||||||
|
- [Developing](#developing)
|
||||||
|
- [Docker](#docker)
|
||||||
|
- [Releasing](#releasing)
|
||||||
|
- [Contributing](#contributing)
|
||||||
|
- [Continuous Integration](#continuous-integration)
|
||||||
|
- [Changelog](#changelog)
|
||||||
|
- [Authors](#authors)
|
||||||
|
- [License](#license)
|
||||||
|
|
||||||
**Chat: _[Telegram](https://t.me/postwoman_app), [Discord](https://discord.gg/GAMWxmR)_**
|
---
|
||||||
|
|
||||||
**Donate: _[PayPal](https://www.paypal.me/liyascthomas), [Open Collective](https://opencollective.com/postwoman), [Patreon](https://www.patreon.com/liyasthomas)_**
|
</details>
|
||||||
|
|
||||||
<div align="center">
|
### **Features**
|
||||||
<br>
|
|
||||||
<img src="static/images/screenshot1.png" alt="Screenshot1" width="100%">
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
### Features ✨
|
❤️ **Lightweight:** Crafted with minimalistic UI design.
|
||||||
|
|
||||||
❤️ **Lightweight**: Crafted with minimalistic UI design - simple design is the best design.
|
⚡️ **Fast:** Send requests and get/copy responses in real-time.
|
||||||
|
|
||||||
⚡️ **Fast**: Send requests and get/copy responses in real-time - fast software is the best software.
|
**HTTP Methods**
|
||||||
|
|
||||||
**Methods:**
|
- `GET` - Requests retrieve resource information
|
||||||
- `GET` - Retrieve information about the REST API resource
|
- `POST` - The server creates a new entry in a database
|
||||||
- `HEAD` - Retrieve response headers identical to those of a GET request, but without the response body.
|
- `PUT` - Updates an existing resource
|
||||||
- `POST` - Create a REST API resource
|
- `PATCH` - Very similar to `PUT` but makes a partial update on a resource
|
||||||
- `PUT` - Update a REST API resource
|
- `DELETE` - Deletes resource or related component
|
||||||
- `DELETE` - Delete a REST API resource or related component
|
- `HEAD` - Retrieve response headers identical to those of a GET request, but without the response body.
|
||||||
- `CONNECT` - Establishes a tunnel to the server identified by the target resource
|
- `CONNECT` - Establishes a tunnel to the server identified by the target resource
|
||||||
- `OPTIONS` - Describe the communication options for the target resource
|
- `OPTIONS` - Describe the communication options for the target resource
|
||||||
- `TRACE` - Performs a message loop-back test along the path to the target resource
|
- `TRACE` - Performs a message loop-back test along the path to the target resource
|
||||||
- `PATCH` - Apply partial modifications to a REST API resource
|
- `<custom>` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
|
||||||
- `<custom>` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
|
|
||||||
|
|
||||||
🌈 **Make it yours**: Customizable combinations for background, foreground and accent colors: because customization is freedom. [Customize now ✨](https://postwoman.io/settings).
|
🌈 **Make it yours:** Customizable combinations for background, foreground and accent colors — [customize now](https://hoppscotch.io/settings).
|
||||||
|
|
||||||
**Customizations:**
|
**Theming**
|
||||||
- Choose theme: Kinda Dark (default), Clearly White, Just Black and System theme
|
|
||||||
- Choose accent color: Green (default), Yellow, Pink, Red, Purple, Orange, Cyan and Blue
|
|
||||||
- Toggle multi-colored headings
|
|
||||||
|
|
||||||
_Customized themes are synced with local session storage_
|
- Choose theme: System (default), Light, Dark and Black
|
||||||
|
- Choose accent color: Green (default), Teal, Blue, Indigo, Purple, Yellow, Orange, Red and Pink
|
||||||
|
- Distraction free Zen mode
|
||||||
|
|
||||||
🔥 **PWA**: Install as a [PWA](https://developers.google.com/web/progressive-web-apps) on your device.
|
_Customized themes are synced with cloud / local session_
|
||||||
|
|
||||||
**Features:**
|
🔥 **PWA:** Install as a [PWA](https://developers.google.com/web/progressive-web-apps) on your device.
|
||||||
- Instant loading with [Service Workers](https://developers.google.com/web/fundamentals/primers/service-workers)
|
|
||||||
- Offline support
|
|
||||||
- Low RAM/memory and CPU usage
|
|
||||||
- Add to Home Screen
|
|
||||||
- Desktop PWA
|
|
||||||
- ([full features](https://developers.google.com/web/progressive-web-apps))
|
|
||||||
|
|
||||||
🚀 **Request**: Retrieve response from endpoint instantly.
|
- Instant loading with Service Workers
|
||||||
|
- Offline support
|
||||||
|
- Low RAM/memory and CPU usage
|
||||||
|
- Add to Home Screen
|
||||||
|
- Desktop PWA
|
||||||
|
|
||||||
- Choose `method`
|
🚀 **Request:** Retrieve response from endpoint instantly.
|
||||||
- Enter `URL` and `Path`
|
|
||||||
- Send
|
|
||||||
|
|
||||||
**Features:**
|
1. Choose `method`
|
||||||
- Copy/share public "Share URL"
|
2. Enter `URL`
|
||||||
- Generate request code for `JavaScript XHR`, `Fetch` and `cURL`
|
3. Send
|
||||||
- Copy generated request code to clipboard
|
|
||||||
- Import `cURL`
|
|
||||||
- Label requests
|
|
||||||
|
|
||||||
🔌 **WebSocket**: Establish full-duplex communication channels over a single TCP connection.
|
- Copy/share public "Share URL"
|
||||||
|
- Generate/copy request code snippets for 10+ languages and frameworks
|
||||||
|
- Import `cURL`
|
||||||
|
- Label requests
|
||||||
|
|
||||||
- Send and receive data
|
🔌 **WebSocket:** Establish full-duplex communication channels over a single TCP connection.
|
||||||
- Basic and Bearer Token authentication
|
|
||||||
|
|
||||||
📡 **Server Sent Events**: Receive a stream of updates from a server over a HTTP connection without resorting to polling.
|
📡 **Server Sent Events:** Receive a stream of updates from a server over a HTTP connection without resorting to polling.
|
||||||
|
|
||||||
🔮 **GraphQL**: GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.
|
🌩 **Socket.IO:** Send and Receive data with SocketIO server.
|
||||||
|
|
||||||
- Set endpoint and get schemas
|
🦟 **MQTT:** Subscribe and Publish to topics of a MQTT Broker.
|
||||||
- Multi-column docs
|
|
||||||
- Set custom request headers
|
|
||||||
- Query schema
|
|
||||||
- Get query response
|
|
||||||
|
|
||||||
🔐 **Authentication**: Allows to identify the end user.
|
🔮 **GraphQL:** GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.
|
||||||
|
|
||||||
**Types:**
|
- Set endpoint and get schema
|
||||||
- None
|
- Multi-column docs
|
||||||
- Basic
|
- Set custom request headers
|
||||||
- Bearer Token
|
- Query schema
|
||||||
- OAuth 2.0
|
- Get query response
|
||||||
- OIDC Access Token/PKCE (Proof Key for Code Exchange)
|
|
||||||
|
|
||||||
📢 **Headers**: Describes the format the body of your request is being sent as.
|
🔐 **Authorization:** Allows to identify the end user.
|
||||||
|
|
||||||
- Add or remove Header list
|
- None
|
||||||
|
- Basic
|
||||||
|
- Bearer Token
|
||||||
|
- OAuth 2.0
|
||||||
|
- OIDC Access Token/PKCE
|
||||||
|
|
||||||
📫 **Parameters**: Use request parameters to set varying parts in simulated requests.
|
📢 **Headers:** Describes the format the body of your request is being sent as.
|
||||||
|
|
||||||
📃 **Request Body**: Used to send and receive data via the REST API.
|
📫 **Parameters:** Use request parameters to set varying parts in simulated requests.
|
||||||
|
|
||||||
**Options:**
|
📃 **Request Body:** Used to send and receive data via the REST API.
|
||||||
- Set `Content Type`
|
|
||||||
- Add or remove Parameter list
|
|
||||||
- Toggle between key-value and RAW input Parameter list
|
|
||||||
|
|
||||||
👋 **Responses**: Contains the status line, headers and the message/response body.
|
- Set `Content Type`
|
||||||
|
- FormData, JSON and many more
|
||||||
|
- Toggle between key-value and RAW input parameter list
|
||||||
|
|
||||||
- Copy response to clipboard
|
👋 **Response:** Contains the status line, headers and the message/response body.
|
||||||
- Download response to as a file
|
|
||||||
- View preview of HTML responses
|
|
||||||
|
|
||||||
⏰ **History**: Request entries are synced with local session storage to reuse with a single click.
|
- Copy response to clipboard
|
||||||
|
- Download response as a file
|
||||||
|
- View response headers
|
||||||
|
- View raw and preview of HTML, image, JSON, XML responses
|
||||||
|
|
||||||
**Fields:**
|
⏰ **History:** Request entries are synced with cloud / local session storage to restore with a single click.
|
||||||
- Star
|
|
||||||
- Label
|
|
||||||
- Method
|
|
||||||
- Status code
|
|
||||||
- URL
|
|
||||||
- Path
|
|
||||||
- Timestamp
|
|
||||||
- Duration
|
|
||||||
- Pre-request script
|
|
||||||
|
|
||||||
_History entries can be sorted by any fields_
|
📁 **Collections:** Keep your API requests organized with collections and folders. Reuse them with a single click.
|
||||||
|
|
||||||
_Histories can be deleted one-by-one or all together_
|
- Unlimited collections, folders and requests
|
||||||
|
- Nested folders
|
||||||
|
- Export and import as file or GitHub gist
|
||||||
|
|
||||||
📁 **Collections**: Keep your API requests organized with collections and folders. Reuse them with a single click.
|
_Collections are synced with cloud / local session storage_
|
||||||
|
|
||||||
**Options:**
|
🌐 **Proxy:** Enable Proxy Mode from Settings to access blocked APIs.
|
||||||
- Create infinite collections, folders and requests
|
|
||||||
- Edit, delete, move, export, import and replace
|
|
||||||
|
|
||||||
_Collections are synced with local session storage_
|
- Hide your IP address
|
||||||
|
- Fixes [`CORS`](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (Cross Origin Resource Sharing) issues
|
||||||
|
- Access APIs served in non-HTTPS (`http://`) endpoints
|
||||||
|
- Use your own Proxy URL
|
||||||
|
|
||||||
🌐 **Proxy**: Enable Proxy Mode from Settings to access blocked APIs.
|
_Official proxy server is hosted by Hoppscotch - **[GitHub](https://github.com/hoppscotch/proxyscotch)** - **[Privacy Policy](https://docs.hoppscotch.io/privacy)**_
|
||||||
|
|
||||||
**Features:**
|
📜 **Pre-Request Scripts β:** Snippets of code associated with a request that are executed before the request is sent.
|
||||||
- Hide your IP address
|
|
||||||
- Fixes [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (Cross Origin Resource Sharing) issues
|
|
||||||
- Access APIs served in non-HTTPS (`http://`)
|
|
||||||
- Use custom Proxy URL
|
|
||||||
|
|
||||||
_Official Postwoman Proxy is hosted by ApolloTV - **[Privacy policy](https://apollotv.xyz/legal)**_
|
- Set environment variables
|
||||||
|
- Include timestamp in the request headers
|
||||||
|
- Send a random alphanumeric string in the URL parameters
|
||||||
|
- Any JavaScript functions
|
||||||
|
|
||||||
📜 **Pre-Request Scripts β**: Snippets of code associated with a request that are executed before the request is sent.
|
📄 **API Documentation:** Create and share dynamic API documentation easily, quickly.
|
||||||
|
|
||||||
**Use-cases:**
|
1. Add your requests to Collections and Folders
|
||||||
- Include timestamp in the request headers
|
2. Export Collections and easily share your APIs with the rest of your team
|
||||||
- Send a random alphanumeric string in the URL parameters
|
3. Import Collections and Generate Documentation on-the-go
|
||||||
|
|
||||||
_Requests with Pre-Request Scripts are indicated in History entries_
|
⌨️ **Keyboard Shortcuts:** Optimized for efficiency.
|
||||||
|
|
||||||
📄 **API Documentation**: Create and share dynamic API documentation easily, quickly.
|
> **[Read our documentation on Keyboard Shortcuts](https://docs.hoppscotch.io/features/shortcuts)**
|
||||||
|
|
||||||
**Usage:**
|
🌎 **i18n:** Experience the app in your own language.
|
||||||
1. Add your requests to Collections and Folders
|
|
||||||
2. Export Collections and easily share your APIs with the rest of your team
|
|
||||||
3. Import Collections and Generate Documentation on-the-go
|
|
||||||
|
|
||||||
⌨️ **Keyboard Shortcuts**: Optimized for efficiency.
|
Help us to translate Hoppscotch. Please read [`TRANSLATIONS`](TRANSLATIONS.md) for details on our [`CODE OF CONDUCT`](CODE_OF_CONDUCT.md), and the process for submitting pull requests to us.
|
||||||
|
|
||||||
**Shortcuts:**
|
📦 **Add-ons:** Official add-ons for hoppscotch.
|
||||||
- Send Request <kbd>Ctrl</kbd> + <kbd>G</kbd>
|
|
||||||
- Save to Collections <kbd>Ctrl</kbd> + <kbd>S</kbd>
|
|
||||||
- Copy Request Link <kbd>Ctrl</kbd> + <kbd>K</kbd>
|
|
||||||
- Reset Request <kbd>Ctrl</kbd> + <kbd>L</kbd>
|
|
||||||
|
|
||||||
🌎 **i18n β**: Experience the app in your own language.
|
- **[Proxy](https://github.com/hoppscotch/proxyscotch)** - A simple proxy server created for Hoppscotch
|
||||||
|
- **[CLI β](https://github.com/hoppscotch/hopp-cli)** - A CLI solution for Hoppscotch
|
||||||
|
- **[Browser Extensions](https://github.com/hoppscotch/hoppscotch-extension)** - Browser extensions that simplifies access to Hoppscotch
|
||||||
|
|
||||||
1. Scroll down to the footer
|
[ **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/hoppscotch) | [ **Chrome**](https://chrome.google.com/webstore/detail/hoppscotch-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld)
|
||||||
2. Click "Choose Language" icon button
|
|
||||||
3. Select your language from the menu
|
|
||||||
|
|
||||||
_Keep in mind: Translations aren't available for all source and target language combinations_
|
> **Extensions fixes `CORS` issues.**
|
||||||
|
|
||||||
**To provide a localized experience for users around the world, you can add you own translations.**
|
- **[Hopp-Doc-Gen](https://github.com/hoppscotch/hopp-doc-gen)** - An API doc generator CLI for Hoppscotch
|
||||||
|
|
||||||
_**All `i18n` contributions are welcome to `i18n` [branch](https://github.com/liyasthomas/postwoman/tree/i18n) only!**_
|
_Add-ons are developed and maintained under **[Hoppscotch Organization](https://github.com/hoppscotch)**._
|
||||||
|
|
||||||
📦 **Add-ons**: Official add-ons for Postwoman.
|
☁️ **Auth + Sync:** Sign in and sync your data in real-time.
|
||||||
|
|
||||||
- **[Proxy β](https://github.com/postwoman-io/postwoman-proxy)** - A simple proxy server created for Postwoman
|
**Sign in with**
|
||||||
- **[CLI β](https://github.com/postwoman-io/postwoman-cli)** - A CLI solution for Postwoman
|
|
||||||
- **Browser Extensions** - Browser extensions that simplifies access to Postwoman
|
|
||||||
|
|
||||||
[ **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/postwoman) | [ **Chrome**](https://chrome.google.com/webstore/detail/postwoman-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld) ([GitHub](https://github.com/AndrewBastin/postwoman-extension))
|
- GitHub
|
||||||
|
- Google
|
||||||
|
- Email
|
||||||
|
|
||||||
>**Extensions fixes `CORS` issues.**
|
**Synchronize your data**
|
||||||
|
|
||||||
_Add-ons are developed and maintained under **[Official Postwoman Organization](https://github.com/postwoman-io)**._
|
- History
|
||||||
|
- Collections
|
||||||
|
- Environments
|
||||||
|
- Settings
|
||||||
|
|
||||||
☁️ **Auth + Sync**: Sign in and sync in real-time.
|
✅ **Post-Request Tests β:** Write tests associated with a request that are executed after the request response.
|
||||||
|
|
||||||
**Sign in with:**
|
- Check the status code as an integer
|
||||||
- Google
|
- Filter response headers
|
||||||
- GitHub
|
- Parse the response data
|
||||||
|
- Any JavaScript functions
|
||||||
|
|
||||||
**Sync:**
|
🌱 **Environments** : Environment variables allow you to store and reuse values in your requests and scripts.
|
||||||
- History
|
|
||||||
- Collections
|
|
||||||
|
|
||||||
✅ **Post-Request Tests β**: Write tests associated with a request that are executed after the request response.
|
- Unlimited environments and variables
|
||||||
|
- Initialize through pre-request script
|
||||||
|
- Export as / import from GitHub gist
|
||||||
|
|
||||||
**Use-cases:**
|
<details>
|
||||||
- Check the status code as an integer
|
<summary><i>Use-cases</i></summary>
|
||||||
- Filter response headers
|
|
||||||
- Parse the response data
|
|
||||||
|
|
||||||
**To find out more, please check out [Postwoman Wiki](https://github.com/liyasthomas/postwoman/wiki).**
|
---
|
||||||
|
|
||||||
## Demo 🚀 [](https://postwoman.io)
|
- By storing a value in a variable, you can reference it throughout your request section
|
||||||
|
- If you need to update the value, you only have to change it in one place
|
||||||
|
- Using variables increases your ability to work efficiently and minimizes the likelihood of error
|
||||||
|
|
||||||
[postwoman.io](https://postwoman.io)
|
---
|
||||||
|
|
||||||
<a href="https://www.netlify.com">
|
</details>
|
||||||
<img src="https://www.netlify.com/img/global/badges/netlify-light.svg"/>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
## Usage 💡
|
👨👩👧👦 **Teams β:** Helps you collaborate across your team to design, develop, and test APIs faster.
|
||||||
|
|
||||||
1. Specify your request `method`
|
- Unlimited teams
|
||||||
2. Type in your API `URL` and `path`
|
- Unlimited shared collections
|
||||||
|
- Unlimited team members
|
||||||
|
- Role-based access control
|
||||||
|
- Cloud sync
|
||||||
|
- Multiple devices
|
||||||
|
|
||||||
|
🚚 **Bulk Edit:** Edit key-value pairs in bulk.
|
||||||
|
|
||||||
|
- Entries are separated by newline
|
||||||
|
- Keys and values are separated by `:`
|
||||||
|
- Prepend `//` to any row you want to add but keep disabled
|
||||||
|
|
||||||
|
**For more features, please read our [documentation](https://docs.hoppscotch.io).**
|
||||||
|
|
||||||
|
## **Demo**
|
||||||
|
|
||||||
|
[hoppscotch.io](https://hoppscotch.io)
|
||||||
|
|
||||||
|
## **Usage**
|
||||||
|
|
||||||
|
1. Choose `method`
|
||||||
|
2. Enter `URL`
|
||||||
3. Send request
|
3. Send request
|
||||||
4. Get response
|
4. Get response
|
||||||
|
|
||||||
You're done!
|
## **Built with**
|
||||||
|
|
||||||
## Built with 🔧
|
- [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML)
|
||||||
|
- [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS), [SCSS](https://sass-lang.com), [Windi CSS](https://windicss.org)
|
||||||
|
- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
|
||||||
|
- [TypeScript](https://www.typescriptlang.org)
|
||||||
|
- [Vue](https://vuejs.org)
|
||||||
|
- [Nuxt](https://nuxtjs.org)
|
||||||
|
|
||||||
* [Chromium](https://github.com/chromium/chromium) - Thanks for being so fast!
|
## **Developing**
|
||||||
* HTML - For the web framework
|
|
||||||
* CSS - For styling components
|
|
||||||
* JavaScript - For magic!
|
|
||||||
* [Vue](https://vuejs.org/) - To add to the JavaScript magic!
|
|
||||||
* [Nuxt](https://nuxtjs.org/) - To add to the Vue magic!
|
|
||||||
|
|
||||||
## Developing 👷
|
0. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/.env.example) file found in `packages/hoppscotch-app` with your own keys and rename it to `.env`.
|
||||||
|
|
||||||
#### Use a browser based development environment:
|
_Sample keys only works with the [production build](https://hoppscotch.io)._
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/liyasthomas/postwoman)
|
### Browser based development environment
|
||||||
|
|
||||||
#### Or, with local development environment:
|
- [GitHub codespace](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace)
|
||||||
|
- [Gitpod](https://gitpod.io/#https://github.com/hoppscotch/hoppscotch)
|
||||||
|
|
||||||
|
### Local development environment
|
||||||
|
|
||||||
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
|
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
|
||||||
2. Install dependencies by running `npm install` within the directory that you cloned (probably `postwoman`).
|
2. Install pnpm using npm by running `npm install -g pnpm`.
|
||||||
3. Start the development server with `npm run dev`.
|
3. Install dependencies by running `pnpm install` within the directory that you cloned (probably `hoppscotch`).
|
||||||
4. Open development site by going to [http://localhost:3000](http://localhost:3000) in your browser.
|
4. Start the development server with `pnpm run dev`.
|
||||||
|
5. Open development site by going to [`http://localhost:3000`](http://localhost:3000) in your browser.
|
||||||
|
|
||||||
#### Or, with docker-compose:
|
### Docker compose
|
||||||
|
|
||||||
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
|
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
|
||||||
2. Run `docker-compose up`
|
2. Run `docker-compose up`
|
||||||
3. Open development site by going to [http://localhost:3000](http://localhost:3000) in your browser.
|
3. Open development site by going to [`http://localhost:3000`](http://localhost:3000) in your browser.
|
||||||
|
|
||||||
## Docker 🐳 [](https://hub.docker.com/r/liyasthomas/postwoman)
|
## **Docker**
|
||||||
|
|
||||||
|
**Official container** [](https://hub.docker.com/r/hoppscotch/hoppscotch)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#pull
|
docker run --rm --name hoppscotch -p 3000:3000 hoppscotch/hoppscotch:latest
|
||||||
docker pull liyasthomas/postwoman
|
|
||||||
|
|
||||||
#run
|
|
||||||
docker run -p 3000:3000 liyasthomas/postwoman:latest
|
|
||||||
|
|
||||||
#build
|
|
||||||
docker build -t postwoman:latest
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Releasing 🏷️
|
## **Releasing**
|
||||||
|
|
||||||
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
|
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
|
||||||
2. Install dependencies by running `npm install` within the directory that you cloned (probably `postwoman`).
|
2. Install pnpm using npm by running `npm install -g pnpm`.
|
||||||
3. Build the release files with `npm run build`.
|
3. Install dependencies by running `pnpm install` within the directory that you cloned (probably `hoppscotch`).
|
||||||
4. Find the built project in `./dist`.
|
4. Build the release files with `pnpm run generate`.
|
||||||
|
5. Find the built project in `packages/hoppscotch-app/dist`.
|
||||||
|
|
||||||
## Contributing 🍰
|
## **Contributing**
|
||||||
|
|
||||||
Please read [CONTRIBUTING](CONTRIBUTING.md) for details on our [CODE OF CONDUCT](CODE_OF_CONDUCT.md), and the process for submitting pull requests to us.
|
Please contribute using [GitHub Flow](https://guides.github.com/introduction/flow). Create a branch, add commits, and [open a pull request](https://github.com/hoppscotch/hoppscotch/compare).
|
||||||
|
|
||||||
## Continuous Integration 💚 [](https://travis-ci.com/liyasthomas/postwoman)
|
Please read [`CONTRIBUTING`](CONTRIBUTING.md) for details on our [`CODE OF CONDUCT`](CODE_OF_CONDUCT.md), and the process for submitting pull requests to us.
|
||||||
|
|
||||||
We use [Travis CI](https://travis-ci.com) for continuous integration. Check out our [Travis CI Status](https://travis-ci.com/liyasthomas/postwoman).
|
## **Continuous Integration**
|
||||||
|
|
||||||
## Versioning 🔖 [](https://github.com/liyasthomas/postwoman/releases/latest)
|
We use [GitHub Actions](https://github.com/features/actions) for continuous integration. Check out our [build workflows](https://github.com/hoppscotch/hoppscotch/actions).
|
||||||
|
|
||||||
This project is developed by [Liyas Thomas](https://github.com/liyasthomas) using the [Semantic Versioning specification](https://semver.org). For the versions available, see the [releases on this repository](https://github.com/liyasthomas/postwoman/releases).
|
## **Changelog**
|
||||||
|
|
||||||
## Change log 📝
|
See the [`CHANGELOG`](CHANGELOG.md) file for details.
|
||||||
|
|
||||||
See the [CHANGELOG](CHANGELOG.md) file for details.
|
## **Authors**
|
||||||
|
|
||||||
## Authors 🔮
|
This project exists thanks to all the people who contribute — [make a contribution](CONTRIBUTING.md).
|
||||||
|
|
||||||
### Lead Developers
|
|
||||||
|
|
||||||
* **[Liyas Thomas](https://github.com/liyasthomas)** - *Author*
|
|
||||||
* **[John Harker](https://github.com/NBTX)** - *Lead developer*
|
|
||||||
* **[Andrew Bastin](https://github.com/andrewbastin)** - *Lead developer*
|
|
||||||
* **[James George](https://github.com/jamesgeorge007)** - *Lead maintainer*
|
|
||||||
* **[Caneco](https://twitter.com/caneco)** - *Logo and banner designer*
|
|
||||||
|
|
||||||
### Testing and Debugging
|
|
||||||
|
|
||||||
* ([contributors](https://github.com/liyasthomas/postwoman/graphs/contributors))
|
|
||||||
|
|
||||||
### Collaborators <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
||||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
||||||
<!-- prettier-ignore -->
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td align="center"><a href="https://liyasthomas.web.app"><img src="https://avatars1.githubusercontent.com/u/10395817?v=4" width="100px;" alt="Liyas Thomas"/><br /><sub><b>Liyas Thomas</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=liyasthomas" title="Code">💻</a> <a href="#design-liyasthomas" title="Design">🎨</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/NBTX"><img src="https://avatars3.githubusercontent.com/u/43181178?v=4" width="100px;" alt="John Harker"/><br /><sub><b>John Harker</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=NBTX" title="Code">💻</a> <a href="#design-NBTX" title="Design">🎨</a></td>
|
|
||||||
<td align="center"><a href="https://nicholaslaroux.com"><img src="https://avatars0.githubusercontent.com/u/1557529?v=4" width="100px;" alt="Nicholas La Roux"/><br /><sub><b>Nicholas La Roux</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=larouxn" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/yubathom"><img src="https://avatars3.githubusercontent.com/u/4117768?v=4" width="100px;" alt="Thomas Yuba"/><br /><sub><b>Thomas Yuba</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=yubathom" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="http://www.linkedin.com/in/nickpalenchar"><img src="https://avatars1.githubusercontent.com/u/7539781?v=4" width="100px;" alt="Nick Palenchar"/><br /><sub><b>Nick Palenchar</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=nickpalenchar" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/AndrewBastin"><img src="https://avatars2.githubusercontent.com/u/9131943?v=4" width="100px;" alt="Andrew Bastin"/><br /><sub><b>Andrew Bastin</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=AndrewBastin" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/vlad0337187"><img src="https://avatars1.githubusercontent.com/u/12682937?v=4" width="100px;" alt="Vladislav"/><br /><sub><b>Vladislav</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=vlad0337187" title="Code">💻</a></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center"><a href="https://github.com/izerozlu"><img src="https://avatars3.githubusercontent.com/u/17386157?v=4" width="100px;" alt="izerozlu"/><br /><sub><b>izerozlu</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=izerozlu" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/JacobAnavisca"><img src="https://avatars2.githubusercontent.com/u/21232366?v=4" width="100px;" alt="Jacob Anavisca"/><br /><sub><b>Jacob Anavisca</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=JacobAnavisca" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="http://nityanandagohain.github.io"><img src="https://avatars3.githubusercontent.com/u/26831659?v=4" width="100px;" alt="Nityananda Gohain"/><br /><sub><b>Nityananda Gohain</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=nityanandagohain" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://github.com/hosseinnedaee"><img src="https://avatars2.githubusercontent.com/u/42691357?v=4" width="100px;" alt="Hossein Nedaee"/><br /><sub><b>Hossein Nedaee</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=hosseinnedaee" title="Code">💻</a></td>
|
|
||||||
<td align="center"><a href="https://ghuser.io/jamesgeorge007"><img src="https://avatars2.githubusercontent.com/u/25279263?v=4" width="100px;" alt="James George"/><br /><sub><b>James George</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=jamesgeorge007" title="Code">💻</a></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
||||||
|
|
||||||
See the list of [contributors](https://github.com/liyasthomas/postwoman/graphs/contributors) who participated in this project.
|
|
||||||
|
|
||||||
### Thanks
|
|
||||||
|
|
||||||
* [dev.to 👩💻👨💻](https://dev.to)
|
|
||||||
|
|
||||||
### Code Contributors
|
|
||||||
|
|
||||||
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
|
|
||||||
|
|
||||||
<a href="https://github.com/liyasthomas/postwoman/graphs/contributors"><img src="https://opencollective.com/postwoman/contributors.svg?width=890&button=false" /></a>
|
|
||||||
|
|
||||||
### Financial Contributors
|
|
||||||
|
|
||||||
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/postwoman/contribute)]
|
|
||||||
|
|
||||||
#### Individuals
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/postwoman"><img src="https://opencollective.com/postwoman/individuals.svg"></a>
|
|
||||||
|
|
||||||
#### Organizations
|
|
||||||
|
|
||||||
Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/postwoman/contribute)]
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/0/website"><img src="https://opencollective.com/postwoman/organization/0/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/1/website"><img src="https://opencollective.com/postwoman/organization/1/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/2/website"><img src="https://opencollective.com/postwoman/organization/2/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/3/website"><img src="https://opencollective.com/postwoman/organization/3/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/4/website"><img src="https://opencollective.com/postwoman/organization/4/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/5/website"><img src="https://opencollective.com/postwoman/organization/5/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/6/website"><img src="https://opencollective.com/postwoman/organization/6/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/7/website"><img src="https://opencollective.com/postwoman/organization/7/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/8/website"><img src="https://opencollective.com/postwoman/organization/8/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/postwoman/organization/9/website"><img src="https://opencollective.com/postwoman/organization/9/avatar.svg"></a>
|
|
||||||
|
|
||||||
## License 📄
|
|
||||||
|
|
||||||
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) - see the [LICENSE](LICENSE) file for details.
|
|
||||||
|
|
||||||
## Acknowledgements 🙏
|
|
||||||
|
|
||||||
* Hat tip to anyone whose code was used
|
|
||||||
* Inspirations:
|
|
||||||
* [Dribbble](https://dribbble.com)
|
|
||||||
|
|
||||||
## Badges
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<th>Preview</th>
|
|
||||||
<th>Markdown code</th>
|
|
||||||
</tr>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td align="center" width="200px"><a href="https://postwoman.io"><br/><img src="https://img.shields.io/badge/Tested_on-Postwoman-202124?logo=Postwoman"/></a><br/><sub>Default<sub></td>
|
|
||||||
<td><code>[](https://postwoman.io)</code></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" width="200px"><a href="https://postwoman.io"><br/><img src="https://img.shields.io/badge/Tested_on-Postwoman-success?logo=Postwoman"/></a><br/><sub>Success<sub></td>
|
|
||||||
<td><code>[](https://postwoman.io)</code></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" width="200px"><a href="https://postwoman.io"><br/><img src="https://img.shields.io/badge/Tested_on-Postwoman-critical?logo=Postwoman"/></a><br/><sub>Critical<sub></td>
|
|
||||||
<td><code>[](https://postwoman.io)</code></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" width="200px"><a href="https://postwoman.io"><br/><img src="https://img.shields.io/badge/Tested_on-Postwoman-blueviolet?logo=Postwoman"/></a><br/><sub>Custom<sub></td>
|
|
||||||
<td><code>[](https://postwoman.io)</code></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td align="center" width="200px"><a href="https://postwoman.io"><br/><img src="https://img.shields.io/badge/your_text-Postwoman-hex_color_code?logo=Postwoman"/></a><br/><sub>Customize<sub></td>
|
|
||||||
<td><code>[](https://postwoman.io)</code></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<br>
|
<a href="https://github.com/hoppscotch/hoppscotch/graphs/contributors">
|
||||||
<a href="https://postwoman.io"><img src="https://raw.githubusercontent.com/liyasthomas/templates/master/assets/logo.gif" alt="Postwoman.io" width="200"></a>
|
<img src="https://opencollective.com/hoppscotch/contributors.svg?width=840&button=false"
|
||||||
<br>
|
alt="Contributors"
|
||||||
<h3>Happy Coding ❤︎</h3>
|
width="100%" />
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
## **License**
|
||||||
|
|
||||||
|
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT) - see the [`LICENSE`](LICENSE) file for details.
|
||||||
|
|||||||
32
TRANSLATIONS.md
Normal file
32
TRANSLATIONS.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Translations
|
||||||
|
|
||||||
|
Thanks for showing your interest in helping us to translate the software.
|
||||||
|
|
||||||
|
## Creating a new translation
|
||||||
|
|
||||||
|
Before you start working on a new language, please look through the [open pull requests](https://github.com/hoppscotch/hoppscotch/pulls) to see if anyone is already working on a translation. If you find one, please join the discussion and help us keep the existing translations up to date.
|
||||||
|
|
||||||
|
if there is no existing translation, you can create a new one by following these steps:
|
||||||
|
|
||||||
|
1. **[Fork the repository](https://github.com/hoppscotch/hoppscotch/fork).**
|
||||||
|
2. **Create a new branch for your translation.**
|
||||||
|
3. **Create target language file in the [`locales`](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-app/locales) directory.**
|
||||||
|
4. **Copy the contents of the source file [`locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/locales/en.json) to the target language file.**
|
||||||
|
5. **Translate the strings in the target language file.**
|
||||||
|
6. **Add your language entry to [`languages.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/languages.json).**
|
||||||
|
7. **Save & commit changes.**
|
||||||
|
8. **Send a pull request.**
|
||||||
|
|
||||||
|
_You may send a pull request before all steps above are complete: e.g., you may want to ask for help with translations, or getting tests to pass. However, your pull request will not be merged until all steps above are complete._
|
||||||
|
|
||||||
|
Completing an initial translation of the whole site is a fairly large task. One way to break that task up is to work with other translators through pull requests on your fork. You can also [add collaborators to your fork](https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository) if you'd like to invite other translators to commit directly to your fork and share responsibility for merging pull requests.
|
||||||
|
|
||||||
|
## Updating a translation
|
||||||
|
|
||||||
|
### Corrections
|
||||||
|
|
||||||
|
If you notice spelling or grammar errors, typos, or opportunities for better phrasing, open a pull request with your suggested fix. If you see a problem that you aren't sure of or don't have time to fix, open an issue.
|
||||||
|
|
||||||
|
### Broken links
|
||||||
|
|
||||||
|
When tests find broken links, try to fix them across all translations. Ideally, only update the linked URLs, so that translation changes will definitely not be necessary.
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
// @import url("https://fonts.googleapis.com/css?family=Poppins:500,700|Roboto+Mono:400&display=swap");
|
|
||||||
// @import url("https://fonts.googleapis.com/icon?family=Material+Icons&display=swap");
|
|
||||||
|
|
||||||
/* Material Design Icons */
|
|
||||||
@font-face {
|
|
||||||
font-family: "Material Icons";
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: swap;
|
|
||||||
src: url("~static/fonts/material-icons-v48.woff2") format("woff2");
|
|
||||||
}
|
|
||||||
|
|
||||||
.material-icons {
|
|
||||||
font-family: "Material Icons";
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
height: 24px;
|
|
||||||
width: 24px;
|
|
||||||
font-size: 24px;
|
|
||||||
line-height: 1;
|
|
||||||
letter-spacing: normal;
|
|
||||||
text-transform: none;
|
|
||||||
display: inline-block;
|
|
||||||
white-space: nowrap;
|
|
||||||
word-wrap: normal;
|
|
||||||
direction: ltr;
|
|
||||||
-webkit-font-feature-settings: "liga";
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
font-feature-settings: "liga";
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* poppins-500 - latin */
|
|
||||||
@font-face {
|
|
||||||
font-family: "Poppins";
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 500;
|
|
||||||
font-display: swap;
|
|
||||||
src: local("Poppins Medium"), local("Poppins-Medium"),
|
|
||||||
url("~static/fonts/poppins-v9-latin-500.woff2") format("woff2"),
|
|
||||||
/* Chrome 26+, Opera 23+, Firefox 39+ */
|
|
||||||
url("~static/fonts/poppins-v9-latin-500.woff") format("woff");
|
|
||||||
/* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* poppins-700 - latin */
|
|
||||||
@font-face {
|
|
||||||
font-family: "Poppins";
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 700;
|
|
||||||
font-display: swap;
|
|
||||||
src: local("Poppins Bold"), local("Poppins-Bold"),
|
|
||||||
url("~static/fonts/poppins-v9-latin-700.woff2") format("woff2"),
|
|
||||||
/* Chrome 26+, Opera 23+, Firefox 39+ */
|
|
||||||
url("~static/fonts/poppins-v9-latin-700.woff") format("woff");
|
|
||||||
/* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* roboto-mono-regular - latin */
|
|
||||||
@font-face {
|
|
||||||
font-family: "Roboto Mono";
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
font-display: swap;
|
|
||||||
src: local("Roboto Mono"), local("RobotoMono-Regular"),
|
|
||||||
url("~static/fonts/roboto-mono-v7-latin-regular.woff2") format("woff2"),
|
|
||||||
/* Chrome 26+, Opera 23+, Firefox 39+ */
|
|
||||||
url("~static/fonts/roboto-mono-v7-latin-regular.woff") format("woff");
|
|
||||||
/* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
|
||||||
}
|
|
||||||
@@ -1,974 +0,0 @@
|
|||||||
.page-enter-active,
|
|
||||||
.page-leave-active,
|
|
||||||
.layout-enter-active,
|
|
||||||
.layout-leave-active {
|
|
||||||
transition: opacity 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-enter,
|
|
||||||
.page-leave-active,
|
|
||||||
.layout-enter,
|
|
||||||
.layout-leave-active {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
$responsiveWidth: 768px;
|
|
||||||
|
|
||||||
::selection {
|
|
||||||
background-color: var(--ac-color);
|
|
||||||
color: var(--act-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 4px;
|
|
||||||
height: 4px;
|
|
||||||
background-color: var(--bg-dark-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
background-color: var(--fg-light-color);
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: var(--fg-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
::placeholder {
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
opacity: 0.3;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
box-sizing: border-box;
|
|
||||||
outline: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
color: var(--fg-color);
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 14px;
|
|
||||||
font-family: "Poppins", "Roboto", "Noto", sans-serif;
|
|
||||||
line-height: 1.5;
|
|
||||||
-webkit-tap-highlight-color: transparent;
|
|
||||||
-webkit-touch-callout: none;
|
|
||||||
user-select: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
scroll-behavior: smooth;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.afterLoad {
|
|
||||||
transition: background-color 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.sticky-footer footer {
|
|
||||||
opacity: 0.25;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: inline-flex;
|
|
||||||
color: inherit;
|
|
||||||
text-decoration: none;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
|
|
||||||
&.link {
|
|
||||||
color: var(--ac-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
header,
|
|
||||||
footer {
|
|
||||||
& > div {
|
|
||||||
display: flex;
|
|
||||||
padding: 16px 8px;
|
|
||||||
width: 100%;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
min-height: 100vh;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper .page {
|
|
||||||
min-height: calc(100vh - 153px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.header,
|
|
||||||
.content,
|
|
||||||
.columns,
|
|
||||||
.footer {
|
|
||||||
display: flex;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.slide-in {
|
|
||||||
position: relative;
|
|
||||||
animation: slideIn 0.2s forwards ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes slideIn {
|
|
||||||
0% {
|
|
||||||
opacity: 0;
|
|
||||||
left: -16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
left: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
font-size: 22px;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: var(--ac-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-first,
|
|
||||||
.sticky-inner {
|
|
||||||
display: flex;
|
|
||||||
order: 1;
|
|
||||||
flex-flow: column;
|
|
||||||
position: sticky;
|
|
||||||
top: 0;
|
|
||||||
align-self: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-first {
|
|
||||||
z-index: 1;
|
|
||||||
height: 100vh;
|
|
||||||
padding: 0 8px;
|
|
||||||
background-color: var(--bg-dark-color);
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column;
|
|
||||||
flex: 1;
|
|
||||||
order: 2;
|
|
||||||
position: relative;
|
|
||||||
padding: 0 16px;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-second {
|
|
||||||
display: flex;
|
|
||||||
width: 10%;
|
|
||||||
order: 3;
|
|
||||||
// comment below this to display
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav.primary-nav {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
|
|
||||||
svg {
|
|
||||||
fill: var(--fg-light-color);
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex-shrink: 0;
|
|
||||||
padding: 14px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background-color: var(--bg-light-color);
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
fill: var(--fg-light-color);
|
|
||||||
margin: 8px 0;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: var(--fg-color);
|
|
||||||
fill: var(--fg-color);
|
|
||||||
|
|
||||||
svg {
|
|
||||||
fill: var(--fg-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.nuxt-link-exact-active {
|
|
||||||
background-color: var(--ac-color);
|
|
||||||
color: var(--act-color);
|
|
||||||
fill: var(--act-color);
|
|
||||||
border-radius: 16px;
|
|
||||||
|
|
||||||
svg {
|
|
||||||
fill: var(--act-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nav.secondary-nav {
|
|
||||||
display: flex;
|
|
||||||
border-top: 1px dashed var(--brd-color);
|
|
||||||
|
|
||||||
ul {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
|
|
||||||
li {
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex-shrink: 0;
|
|
||||||
padding: 14px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background-color: var(--bg-dark-color);
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
margin: 8px 0;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: var(--fg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.current {
|
|
||||||
color: var(--ac-color);
|
|
||||||
fill: var(--ac-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1,
|
|
||||||
h2,
|
|
||||||
h3,
|
|
||||||
h4 {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin: 0;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
border-bottom: 1px dashed var(--brd-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tooltip {
|
|
||||||
$bgcolor: var(--tt-color);
|
|
||||||
$fgcolor: var(--fg-color);
|
|
||||||
display: block !important;
|
|
||||||
z-index: 10000;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
|
|
||||||
.tooltip-inner {
|
|
||||||
background: $bgcolor;
|
|
||||||
color: $fgcolor;
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 8px 16px;
|
|
||||||
font-size: 12px;
|
|
||||||
font-weight: 500;
|
|
||||||
box-shadow: 0 4px 24px rgba(black, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tooltip-arrow {
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-style: solid;
|
|
||||||
position: absolute;
|
|
||||||
margin: 5px;
|
|
||||||
border-color: $bgcolor;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
&[x-placement^="top"] {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
|
|
||||||
.tooltip-arrow {
|
|
||||||
border-width: 5px 5px 0 5px;
|
|
||||||
border-left-color: transparent !important;
|
|
||||||
border-right-color: transparent !important;
|
|
||||||
border-bottom-color: transparent !important;
|
|
||||||
bottom: -5px;
|
|
||||||
left: calc(50% - 5px);
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&[x-placement^="bottom"] {
|
|
||||||
margin-top: 5px;
|
|
||||||
|
|
||||||
.tooltip-arrow {
|
|
||||||
border-width: 0 5px 5px 5px;
|
|
||||||
border-left-color: transparent !important;
|
|
||||||
border-right-color: transparent !important;
|
|
||||||
border-top-color: transparent !important;
|
|
||||||
top: -5px;
|
|
||||||
left: calc(50% - 5px);
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&[x-placement^="right"] {
|
|
||||||
margin-left: 5px;
|
|
||||||
|
|
||||||
.tooltip-arrow {
|
|
||||||
border-width: 5px 5px 5px 0;
|
|
||||||
border-left-color: transparent !important;
|
|
||||||
border-top-color: transparent !important;
|
|
||||||
border-bottom-color: transparent !important;
|
|
||||||
left: -5px;
|
|
||||||
top: calc(50% - 5px);
|
|
||||||
margin-left: 0;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&[x-placement^="left"] {
|
|
||||||
margin-right: 5px;
|
|
||||||
|
|
||||||
.tooltip-arrow {
|
|
||||||
border-width: 5px 0 5px 5px;
|
|
||||||
border-top-color: transparent !important;
|
|
||||||
border-right-color: transparent !important;
|
|
||||||
border-bottom-color: transparent !important;
|
|
||||||
right: -5px;
|
|
||||||
top: calc(50% - 5px);
|
|
||||||
margin-left: 0;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.popover {
|
|
||||||
.wrapper {
|
|
||||||
min-height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popover-inner {
|
|
||||||
background: $bgcolor;
|
|
||||||
color: $fgcolor;
|
|
||||||
padding: 4px;
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 5px 30px rgba(black, 0.1);
|
|
||||||
max-height: 256px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popover-arrow {
|
|
||||||
border-color: $bgcolor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&[aria-hidden="true"] {
|
|
||||||
visibility: hidden;
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity 0.15s, visibility 0.15s;
|
|
||||||
}
|
|
||||||
|
|
||||||
&[aria-hidden="false"] {
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 1;
|
|
||||||
transition: opacity 0.15s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h3.title {
|
|
||||||
margin: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
|
||||||
margin-left: 4px;
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bg-color {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 4px;
|
|
||||||
padding: 6px 16px;
|
|
||||||
border-radius: 20px;
|
|
||||||
background-color: var(--ac-color);
|
|
||||||
color: var(--act-color);
|
|
||||||
font-size: 16px;
|
|
||||||
font-family: "Poppins", "Roboto", "Noto", sans-serif;
|
|
||||||
font-weight: 700;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
fill: var(--act-color);
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-flex;
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not([disabled]):hover,
|
|
||||||
&:not([disabled]):active,
|
|
||||||
&:not([disabled]):focus {
|
|
||||||
color: var(--act-color);
|
|
||||||
fill: var(--act-color);
|
|
||||||
box-shadow: inset 0 0 0 2px var(--fg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.icon {
|
|
||||||
background-color: transparent;
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
fill: var(--fg-light-color);
|
|
||||||
border-radius: 8px;
|
|
||||||
|
|
||||||
&:not([disabled]):hover,
|
|
||||||
&:not([disabled]):active,
|
|
||||||
&:not([disabled]):focus {
|
|
||||||
color: var(--fg-color);
|
|
||||||
fill: var(--fg-color);
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.primary {
|
|
||||||
color: var(--ac-color);
|
|
||||||
|
|
||||||
&:not([disabled]):hover,
|
|
||||||
&:not([disabled]):active,
|
|
||||||
&:not([disabled]):focus {
|
|
||||||
background-color: var(--ac-color);
|
|
||||||
color: var(--act-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes beat {
|
|
||||||
30% {
|
|
||||||
transform: scale(1.1);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
transform: scale(0.9);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.material-icons:active {
|
|
||||||
animation: beat 0.5s forwards 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset {
|
|
||||||
margin: 16px 0;
|
|
||||||
border-radius: 16px;
|
|
||||||
background-color: var(--bg-dark-color);
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset:target,
|
|
||||||
section:target {
|
|
||||||
animation: highlight 2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes highlight {
|
|
||||||
50% {
|
|
||||||
box-shadow: 0 0 0 2px var(--ac-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
legend {
|
|
||||||
display: inline-block;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
color: var(--fg-color);
|
|
||||||
font-weight: 700;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
|
|
||||||
* {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
i {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.blue legend {
|
|
||||||
color: #57b5f9;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.gray legend {
|
|
||||||
color: #bcc2cd;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.green legend {
|
|
||||||
color: #50fa7b;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.cyan legend {
|
|
||||||
color: #8be9fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.purple legend {
|
|
||||||
color: #bd93f9;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.orange legend {
|
|
||||||
color: #ffb86c;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.pink legend {
|
|
||||||
color: #ff79c6;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.red legend {
|
|
||||||
color: #ff5555;
|
|
||||||
}
|
|
||||||
|
|
||||||
fieldset.yellow legend {
|
|
||||||
color: #f1fa8c;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="file"],
|
|
||||||
input[type="radio"],
|
|
||||||
.tab,
|
|
||||||
.hide-on-large-screen,
|
|
||||||
#installPWA,
|
|
||||||
.hidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.method,
|
|
||||||
kbd,
|
|
||||||
select,
|
|
||||||
input,
|
|
||||||
textarea,
|
|
||||||
pre,
|
|
||||||
code {
|
|
||||||
display: inline-flex;
|
|
||||||
margin: 4px;
|
|
||||||
padding: 8px;
|
|
||||||
border-radius: 8px;
|
|
||||||
background-color: var(--bg-dark-color);
|
|
||||||
color: var(--fg-color);
|
|
||||||
font-size: 16px;
|
|
||||||
font-family: "Roboto Mono", monospace;
|
|
||||||
font-weight: 400;
|
|
||||||
line-height: 1;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
user-select: text;
|
|
||||||
width: calc(100% - 8px);
|
|
||||||
resize: vertical;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
|
|
||||||
&:not([readonly]):not(.ace_editor):hover,
|
|
||||||
&:not([readonly]):not(.ace_editor):active,
|
|
||||||
&:not([readonly]):not(.ace_editor):focus {
|
|
||||||
box-shadow: inset 0 0 0 2px var(--fg-light-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.method {
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:active,
|
|
||||||
&:focus {
|
|
||||||
box-shadow: inset 0 0 0 2px var(--fg-light-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
display: grid;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre.ace_editor {
|
|
||||||
font-family: "Roboto Mono", monospace;
|
|
||||||
font-weight: 400;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
kbd,
|
|
||||||
code,
|
|
||||||
pre {
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.select-wrapper {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
input {
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.trigger {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
display: inline-block;
|
|
||||||
position: absolute;
|
|
||||||
pointer-events: none;
|
|
||||||
content: "\e313";
|
|
||||||
font-family: "Material Icons";
|
|
||||||
top: 14px;
|
|
||||||
right: 14px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
height: 37px;
|
|
||||||
cursor: pointer;
|
|
||||||
-webkit-appearance: none;
|
|
||||||
-moz-appearance: none;
|
|
||||||
appearance: none;
|
|
||||||
|
|
||||||
&::-ms-expand {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
option {
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="checkbox"] {
|
|
||||||
display: none;
|
|
||||||
|
|
||||||
&,
|
|
||||||
& + label {
|
|
||||||
vertical-align: middle;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
content: "\2714";
|
|
||||||
border: 1px solid var(--fg-color);
|
|
||||||
border-radius: 8px;
|
|
||||||
display: inline-flex;
|
|
||||||
height: 16px;
|
|
||||||
width: 16px;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 8px 8px 8px 0;
|
|
||||||
color: transparent;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:checked + label:before {
|
|
||||||
background-color: var(--ac-color);
|
|
||||||
border-color: var(--ac-color);
|
|
||||||
color: var(--act-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.error:not(input),
|
|
||||||
.disabled:not(input),
|
|
||||||
[disabled] {
|
|
||||||
background-color: var(--err-color);
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
fill: var(--fg-light-color);
|
|
||||||
cursor: not-allowed;
|
|
||||||
|
|
||||||
&.icon {
|
|
||||||
color: var(--err-color);
|
|
||||||
fill: var(--err-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
padding: 4px;
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul,
|
|
||||||
ol {
|
|
||||||
display: flex;
|
|
||||||
margin: 4px 0 4px;
|
|
||||||
padding: 0;
|
|
||||||
list-style-type: none;
|
|
||||||
|
|
||||||
ul,
|
|
||||||
ol {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li,
|
|
||||||
ol li {
|
|
||||||
display: inline-flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
flex-grow: 1;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flex-wrap {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
flex-grow: 1;
|
|
||||||
flex-direction: row;
|
|
||||||
|
|
||||||
* {
|
|
||||||
display: inline-flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.show-on-small-screen {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.show-on-large-screen {
|
|
||||||
display: inline-flex;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-response {
|
|
||||||
color: #ffeb3b;
|
|
||||||
}
|
|
||||||
|
|
||||||
.success-response {
|
|
||||||
color: #4bb543;
|
|
||||||
}
|
|
||||||
|
|
||||||
.redir-response {
|
|
||||||
color: #ff5722;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cl-error-response {
|
|
||||||
color: #a63232;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sv-error-response {
|
|
||||||
color: #b71c1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.missing-data-response {
|
|
||||||
background-color: var(--err-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-left {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-right {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mono {
|
|
||||||
font-family: "Roboto Mono", monospace;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
#response-details-wrapper {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
border-radius: 8px;
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
margin: 0;
|
|
||||||
width: 100%;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.covers-response {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: white;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#send {
|
|
||||||
&.show {
|
|
||||||
display: flex;
|
|
||||||
position: fixed;
|
|
||||||
top: 12px;
|
|
||||||
right: 12px;
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
section {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
border-radius: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab {
|
|
||||||
width: 100%;
|
|
||||||
order: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="radio"] + label {
|
|
||||||
padding: 8px 16px;
|
|
||||||
border-bottom: 2px solid transparent;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:active,
|
|
||||||
&:focus {
|
|
||||||
border-color: var(--brd-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="radio"]:checked + label {
|
|
||||||
border-color: var(--fg-color);
|
|
||||||
color: var(--fg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type="radio"]:checked + label + .tab {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toasted-container .toasted {
|
|
||||||
justify-content: flex-start !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toasted.info {
|
|
||||||
background-color: var(--ac-color) !important;
|
|
||||||
color: var(--act-color) !important;
|
|
||||||
font-weight: 700 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toasted.bubble .action {
|
|
||||||
color: inherit !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toasted .action {
|
|
||||||
margin-left: auto !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-columns {
|
|
||||||
display: flex;
|
|
||||||
flex: 1;
|
|
||||||
flex-flow: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inner-left {
|
|
||||||
display: flex;
|
|
||||||
order: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inner-right {
|
|
||||||
display: flex;
|
|
||||||
width: 30%;
|
|
||||||
order: 2;
|
|
||||||
margin-left: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: $responsiveWidth) {
|
|
||||||
.content,
|
|
||||||
.columns {
|
|
||||||
flex-flow: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-first {
|
|
||||||
position: fixed;
|
|
||||||
top: auto;
|
|
||||||
bottom: 0;
|
|
||||||
height: auto;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.45);
|
|
||||||
}
|
|
||||||
|
|
||||||
nav.primary-nav {
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
overflow: auto;
|
|
||||||
justify-content: space-between;
|
|
||||||
background-color: var(--bg-dark-color);
|
|
||||||
|
|
||||||
a {
|
|
||||||
background-color: transparent;
|
|
||||||
margin: 8px;
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
&.nuxt-link-exact-active {
|
|
||||||
background-color: transparent;
|
|
||||||
color: var(--ac-color);
|
|
||||||
fill: var(--ac-color);
|
|
||||||
|
|
||||||
svg {
|
|
||||||
fill: var(--ac-color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nav.secondary-nav {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
|
||||||
padding: 0 8px 68px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul,
|
|
||||||
ol {
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li,
|
|
||||||
ol li {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hide-on-small-screen {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hide-on-large-screen,
|
|
||||||
.show-on-small-screen {
|
|
||||||
display: inline-flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sticky-inner {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inner-left {
|
|
||||||
order: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.inner-right {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toasted-container {
|
|
||||||
margin-bottom: 68px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
/**
|
|
||||||
Main Themes:
|
|
||||||
- dark (default)
|
|
||||||
- light
|
|
||||||
- black
|
|
||||||
- auto
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Dark is the default theme variant.
|
|
||||||
@mixin darkTheme {
|
|
||||||
// Background color
|
|
||||||
--bg-color: rgba(32, 33, 36, 1);
|
|
||||||
// Light Background color
|
|
||||||
--bg-light-color: rgba(255, 255, 255, 0.02);
|
|
||||||
// Dark Background color
|
|
||||||
--bg-dark-color: rgba(0, 0, 0, 0.1);
|
|
||||||
// Text color
|
|
||||||
--fg-color: rgba(255, 255, 255, 0.9);
|
|
||||||
// Light Text color
|
|
||||||
--fg-light-color: rgba(255, 255, 255, 0.5);
|
|
||||||
// Border color
|
|
||||||
--brd-color: rgba(255, 255, 255, 0.05);
|
|
||||||
// Error color
|
|
||||||
--err-color: rgba(255, 255, 255, 0.05);
|
|
||||||
// Acent color
|
|
||||||
--ac-color: rgba(80, 250, 123, 1);
|
|
||||||
// Active text color
|
|
||||||
--act-color: rgba(32, 33, 36, 1);
|
|
||||||
// Auto-complete color
|
|
||||||
--atc-color: rgba(32, 33, 36, 1);
|
|
||||||
// Tooltip color
|
|
||||||
--tt-color: rgba(53, 53, 53, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin lightTheme {
|
|
||||||
// Background color
|
|
||||||
--bg-color: rgba(255, 255, 255, 1);
|
|
||||||
// Light Background color
|
|
||||||
--bg-light-color: rgba(0, 0, 0, 0.02);
|
|
||||||
// Dark Background color
|
|
||||||
--bg-dark-color: rgba(0, 0, 0, 0.02);
|
|
||||||
// Text color
|
|
||||||
--fg-color: rgba(0, 0, 0, 0.9);
|
|
||||||
// Light Text color
|
|
||||||
--fg-light-color: rgba(0, 0, 0, 0.6);
|
|
||||||
// Border color
|
|
||||||
--brd-color: rgba(0, 0, 0, 0.1);
|
|
||||||
// Error color
|
|
||||||
--err-color: rgba(0, 0, 0, 0.1);
|
|
||||||
// Acent color
|
|
||||||
--ac-color: rgba(80, 250, 123, 1);
|
|
||||||
// Active text color
|
|
||||||
--act-color: rgba(255, 255, 255, 1);
|
|
||||||
// Auto-complete color
|
|
||||||
--atc-color: rgba(255, 255, 255, 1);
|
|
||||||
// Tooltip color
|
|
||||||
--tt-color: rgba(220, 220, 220, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin blackTheme {
|
|
||||||
// Background color
|
|
||||||
--bg-color: rgba(0, 0, 0, 1);
|
|
||||||
// Light Background color
|
|
||||||
--bg-light-color: rgba(255, 255, 255, 0.02);
|
|
||||||
// Dark Background color
|
|
||||||
--bg-dark-color: rgba(255, 255, 255, 0.02);
|
|
||||||
// Text color
|
|
||||||
--fg-color: rgba(255, 255, 255, 0.9);
|
|
||||||
// Light Text color
|
|
||||||
--fg-light-color: rgba(255, 255, 255, 0.5);
|
|
||||||
// Border color
|
|
||||||
--brd-color: rgba(255, 255, 255, 0.05);
|
|
||||||
// Error color
|
|
||||||
--err-color: rgba(255, 255, 255, 0.05);
|
|
||||||
// Acent color
|
|
||||||
--ac-color: rgba(80, 250, 123, 1);
|
|
||||||
// Active text color
|
|
||||||
--act-color: rgba(0, 0, 0, 1);
|
|
||||||
// Auto-complete color
|
|
||||||
--atc-color: rgba(0, 0, 0, 1);
|
|
||||||
// Tooltip color
|
|
||||||
--tt-color: rgba(18, 18, 18, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
:root {
|
|
||||||
@include darkTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root.light {
|
|
||||||
@include lightTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
:root.black {
|
|
||||||
@include blackTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root.auto {
|
|
||||||
@include darkTheme;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-color-scheme: light) {
|
|
||||||
:root.auto {
|
|
||||||
@include lightTheme;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
import * as cookie from "cookie";
|
|
||||||
import * as URL from "url";
|
|
||||||
import * as querystring from "querystring";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* given this: [ 'msg1=value1', 'msg2=value2' ]
|
|
||||||
* output this: 'msg1=value1&msg2=value2'
|
|
||||||
* @param dataArguments
|
|
||||||
*/
|
|
||||||
const joinDataArguments = dataArguments => {
|
|
||||||
let data = "";
|
|
||||||
dataArguments.forEach((argument, i) => {
|
|
||||||
if (i === 0) {
|
|
||||||
data += argument;
|
|
||||||
} else {
|
|
||||||
data += `&${argument}`;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
|
|
||||||
const parseCurlCommand = curlCommand => {
|
|
||||||
let newlineFound = /\r|\n/.exec(curlCommand);
|
|
||||||
if (newlineFound) {
|
|
||||||
// remove newlines
|
|
||||||
curlCommand = curlCommand.replace(/\r|\n/g, "");
|
|
||||||
}
|
|
||||||
// yargs parses -XPOST as separate arguments. just prescreen for it.
|
|
||||||
curlCommand = curlCommand.replace(/ -XPOST/, " -X POST");
|
|
||||||
curlCommand = curlCommand.replace(/ -XGET/, " -X GET");
|
|
||||||
curlCommand = curlCommand.replace(/ -XPUT/, " -X PUT");
|
|
||||||
curlCommand = curlCommand.replace(/ -XPATCH/, " -X PATCH");
|
|
||||||
curlCommand = curlCommand.replace(/ -XDELETE/, " -X DELETE");
|
|
||||||
curlCommand = curlCommand.trim();
|
|
||||||
let parsedArguments = require("yargs-parser")(curlCommand);
|
|
||||||
let cookieString;
|
|
||||||
let cookies;
|
|
||||||
let url = parsedArguments._[1];
|
|
||||||
if (!url) {
|
|
||||||
for (let argName in parsedArguments) {
|
|
||||||
if (typeof parsedArguments[argName] === "string") {
|
|
||||||
if (["http", "www."].includes(parsedArguments[argName])) {
|
|
||||||
url = parsedArguments[argName];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let headers;
|
|
||||||
|
|
||||||
const parseHeaders = headerFieldName => {
|
|
||||||
if (parsedArguments[headerFieldName]) {
|
|
||||||
if (!headers) {
|
|
||||||
headers = {};
|
|
||||||
}
|
|
||||||
if (!Array.isArray(parsedArguments[headerFieldName])) {
|
|
||||||
parsedArguments[headerFieldName] = [parsedArguments[headerFieldName]];
|
|
||||||
}
|
|
||||||
parsedArguments[headerFieldName].forEach(header => {
|
|
||||||
if (header.includes("Cookie")) {
|
|
||||||
// stupid javascript tricks: closure
|
|
||||||
cookieString = header;
|
|
||||||
} else {
|
|
||||||
let colonIndex = header.indexOf(":");
|
|
||||||
let headerName = header.substring(0, colonIndex);
|
|
||||||
let headerValue = header.substring(colonIndex + 1).trim();
|
|
||||||
headers[headerName] = headerValue;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
parseHeaders("H");
|
|
||||||
parseHeaders("header");
|
|
||||||
if (parsedArguments.A) {
|
|
||||||
if (!headers) {
|
|
||||||
headers = [];
|
|
||||||
}
|
|
||||||
headers["User-Agent"] = parsedArguments.A;
|
|
||||||
} else if (parsedArguments["user-agent"]) {
|
|
||||||
if (!headers) {
|
|
||||||
headers = [];
|
|
||||||
}
|
|
||||||
headers["User-Agent"] = parsedArguments["user-agent"];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parsedArguments.b) {
|
|
||||||
cookieString = parsedArguments.b;
|
|
||||||
}
|
|
||||||
if (parsedArguments.cookie) {
|
|
||||||
cookieString = parsedArguments.cookie;
|
|
||||||
}
|
|
||||||
let multipartUploads;
|
|
||||||
if (parsedArguments.F) {
|
|
||||||
multipartUploads = {};
|
|
||||||
if (!Array.isArray(parsedArguments.F)) {
|
|
||||||
parsedArguments.F = [parsedArguments.F];
|
|
||||||
}
|
|
||||||
parsedArguments.F.forEach(multipartArgument => {
|
|
||||||
// input looks like key=value. value could be json or a file path prepended with an @
|
|
||||||
const [key, value] = multipartArgument.split("=", 2);
|
|
||||||
multipartUploads[key] = value;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (cookieString) {
|
|
||||||
const cookieParseOptions = {
|
|
||||||
decode: s => s
|
|
||||||
};
|
|
||||||
// separate out cookie headers into separate data structure
|
|
||||||
// note: cookie is case insensitive
|
|
||||||
cookies = cookie.parse(
|
|
||||||
cookieString.replace(/^Cookie: /gi, ""),
|
|
||||||
cookieParseOptions
|
|
||||||
);
|
|
||||||
}
|
|
||||||
let method;
|
|
||||||
if (parsedArguments.X === "POST") {
|
|
||||||
method = "post";
|
|
||||||
} else if (parsedArguments.X === "PUT" || parsedArguments["T"]) {
|
|
||||||
method = "put";
|
|
||||||
} else if (parsedArguments.X === "PATCH") {
|
|
||||||
method = "patch";
|
|
||||||
} else if (parsedArguments.X === "DELETE") {
|
|
||||||
method = "delete";
|
|
||||||
} else if (parsedArguments.X === "OPTIONS") {
|
|
||||||
method = "options";
|
|
||||||
} else if (
|
|
||||||
(parsedArguments["d"] ||
|
|
||||||
parsedArguments["data"] ||
|
|
||||||
parsedArguments["data-ascii"] ||
|
|
||||||
parsedArguments["data-binary"] ||
|
|
||||||
parsedArguments["F"] ||
|
|
||||||
parsedArguments["form"]) &&
|
|
||||||
!(parsedArguments["G"] || parsedArguments["get"])
|
|
||||||
) {
|
|
||||||
method = "post";
|
|
||||||
} else if (parsedArguments["I"] || parsedArguments["head"]) {
|
|
||||||
method = "head";
|
|
||||||
} else {
|
|
||||||
method = "get";
|
|
||||||
}
|
|
||||||
|
|
||||||
let compressed = !!parsedArguments.compressed;
|
|
||||||
let urlObject = URL.parse(url); // eslint-disable-line
|
|
||||||
|
|
||||||
// if GET request with data, convert data to query string
|
|
||||||
// NB: the -G flag does not change the http verb. It just moves the data into the url.
|
|
||||||
if (parsedArguments["G"] || parsedArguments["get"]) {
|
|
||||||
urlObject.query = urlObject.query ? urlObject.query : "";
|
|
||||||
let option =
|
|
||||||
"d" in parsedArguments ? "d" : "data" in parsedArguments ? "data" : null;
|
|
||||||
if (option) {
|
|
||||||
let urlQueryString = "";
|
|
||||||
|
|
||||||
if (!url.includes("?")) {
|
|
||||||
url += "?";
|
|
||||||
} else {
|
|
||||||
urlQueryString += "&";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof parsedArguments[option] === "object") {
|
|
||||||
urlQueryString += parsedArguments[option].join("&");
|
|
||||||
} else {
|
|
||||||
urlQueryString += parsedArguments[option];
|
|
||||||
}
|
|
||||||
urlObject.query += urlQueryString;
|
|
||||||
url += urlQueryString;
|
|
||||||
delete parsedArguments[option];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let query = querystring.parse(urlObject.query, null, null, {
|
|
||||||
maxKeys: 10000
|
|
||||||
});
|
|
||||||
|
|
||||||
urlObject.search = null; // Clean out the search/query portion.
|
|
||||||
const request = {
|
|
||||||
url,
|
|
||||||
urlWithoutQuery: URL.format(urlObject)
|
|
||||||
};
|
|
||||||
if (compressed) {
|
|
||||||
request["compressed"] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(query).length > 0) {
|
|
||||||
request.query = query;
|
|
||||||
}
|
|
||||||
if (headers) {
|
|
||||||
request.headers = headers;
|
|
||||||
}
|
|
||||||
request["method"] = method;
|
|
||||||
|
|
||||||
if (cookies) {
|
|
||||||
request.cookies = cookies;
|
|
||||||
request.cookieString = cookieString.replace("Cookie: ", "");
|
|
||||||
}
|
|
||||||
if (multipartUploads) {
|
|
||||||
request.multipartUploads = multipartUploads;
|
|
||||||
}
|
|
||||||
if (parsedArguments.data) {
|
|
||||||
request.data = parsedArguments.data;
|
|
||||||
} else if (parsedArguments["data-binary"]) {
|
|
||||||
request.data = parsedArguments["data-binary"];
|
|
||||||
request.isDataBinary = true;
|
|
||||||
} else if (parsedArguments["d"]) {
|
|
||||||
request.data = parsedArguments["d"];
|
|
||||||
} else if (parsedArguments["data-ascii"]) {
|
|
||||||
request.data = parsedArguments["data-ascii"];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parsedArguments["u"]) {
|
|
||||||
request.auth = parsedArguments["u"];
|
|
||||||
}
|
|
||||||
if (parsedArguments["user"]) {
|
|
||||||
request.auth = parsedArguments["user"];
|
|
||||||
}
|
|
||||||
if (Array.isArray(request.data)) {
|
|
||||||
request.dataArray = request.data;
|
|
||||||
request.data = joinDataArguments(request.data);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parsedArguments["k"] || parsedArguments["insecure"]) {
|
|
||||||
request.insecure = true;
|
|
||||||
}
|
|
||||||
return request;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default parseCurlCommand;
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
export default () => {
|
|
||||||
//*** Determine whether or not the PWA has been installed. ***//
|
|
||||||
|
|
||||||
// Step 1: Check local storage
|
|
||||||
let pwaInstalled = localStorage.getItem("pwaInstalled") === "yes";
|
|
||||||
|
|
||||||
// Step 2: Check if the display-mode is standalone. (Only permitted for PWAs.)
|
|
||||||
if (
|
|
||||||
!pwaInstalled &&
|
|
||||||
window.matchMedia("(display-mode: standalone)").matches
|
|
||||||
) {
|
|
||||||
localStorage.setItem("pwaInstalled", "yes");
|
|
||||||
pwaInstalled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Step 3: Check if the navigator is in standalone mode. (Again, only permitted for PWAs.)
|
|
||||||
if (!pwaInstalled && window.navigator.standalone === true) {
|
|
||||||
localStorage.setItem("pwaInstalled", "yes");
|
|
||||||
pwaInstalled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//*** If the PWA has not been installed, show the install PWA prompt.. ***//
|
|
||||||
let deferredPrompt = null;
|
|
||||||
window.addEventListener("beforeinstallprompt", event => {
|
|
||||||
deferredPrompt = event;
|
|
||||||
|
|
||||||
// Show the install button if the prompt appeared.
|
|
||||||
if (!pwaInstalled) {
|
|
||||||
document.querySelector("#installPWA").style.display = "inline-flex";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// When the app is installed, remove install prompts.
|
|
||||||
window.addEventListener("appinstalled", event => {
|
|
||||||
localStorage.setItem("pwaInstalled", "yes");
|
|
||||||
pwaInstalled = true;
|
|
||||||
document.getElementById("installPWA").style.display = "none";
|
|
||||||
});
|
|
||||||
|
|
||||||
// When the app is uninstalled, add the prompts back
|
|
||||||
return async () => {
|
|
||||||
if (deferredPrompt) {
|
|
||||||
deferredPrompt.prompt();
|
|
||||||
let outcome = await deferredPrompt.userChoice;
|
|
||||||
|
|
||||||
if (outcome === "accepted") {
|
|
||||||
console.log("Postwoman was installed successfully.");
|
|
||||||
} else {
|
|
||||||
console.log(
|
|
||||||
"Postwoman could not be installed. (Installation rejected by user.)"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
deferredPrompt = null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
63
build.js
63
build.js
@@ -1,63 +0,0 @@
|
|||||||
const axios = require("axios");
|
|
||||||
const fs = require("fs");
|
|
||||||
const { spawnSync } = require("child_process");
|
|
||||||
const runCommand = (command, args) =>
|
|
||||||
spawnSync(command, args)
|
|
||||||
.stdout.toString()
|
|
||||||
.replace(/\n/g, "");
|
|
||||||
|
|
||||||
const FAIL_ON_ERROR = false;
|
|
||||||
const PW_BUILD_DATA_DIR = "./.postwoman";
|
|
||||||
const IS_DEV_MODE = process.argv.includes("--dev");
|
|
||||||
|
|
||||||
try {
|
|
||||||
(async () => {
|
|
||||||
// Create the build data directory if it does not exist.
|
|
||||||
if (!fs.existsSync(PW_BUILD_DATA_DIR)) {
|
|
||||||
fs.mkdirSync(PW_BUILD_DATA_DIR);
|
|
||||||
}
|
|
||||||
|
|
||||||
let version = {};
|
|
||||||
// Get the current version name as the tag from Git.
|
|
||||||
version.name =
|
|
||||||
process.env.TRAVIS_TAG ||
|
|
||||||
runCommand("git", ["tag --sort=committerdate | tail -1"]);
|
|
||||||
|
|
||||||
// FALLBACK: If version.name was unset, let's grab it from GitHub.
|
|
||||||
if (!version.name) {
|
|
||||||
version.name = (
|
|
||||||
await axios
|
|
||||||
.get("https://api.github.com/repos/liyasthomas/postwoman/releases")
|
|
||||||
// If we can't get it from GitHub, we'll resort to getting it from package.json
|
|
||||||
.catch(ex => ({
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
tag_name: require("./package.json").version
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}))
|
|
||||||
).data[0]["tag_name"];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the current version hash as the short hash from Git.
|
|
||||||
version.hash = runCommand("git", ["rev-parse", "--short", "HEAD"]);
|
|
||||||
// Get the 'variant' name as the branch, if it's not master.
|
|
||||||
version.variant =
|
|
||||||
process.env.TRAVIS_BRANCH ||
|
|
||||||
runCommand("git", ["branch"])
|
|
||||||
.split("* ")[1]
|
|
||||||
.split(" ")[0] + (IS_DEV_MODE ? " - DEV MODE" : "");
|
|
||||||
if (["", "master"].includes(version.variant)) {
|
|
||||||
delete version.variant;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write version data into a file
|
|
||||||
fs.writeFileSync(
|
|
||||||
`${PW_BUILD_DATA_DIR}/version.json`,
|
|
||||||
JSON.stringify(version)
|
|
||||||
);
|
|
||||||
})();
|
|
||||||
} catch (ex) {
|
|
||||||
console.error(ex);
|
|
||||||
process.exit(FAIL_ON_ERROR ? 1 : 0);
|
|
||||||
}
|
|
||||||
3
commitlint.config.js
Normal file
3
commitlint.config.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: ["@commitlint/config-conventional"],
|
||||||
|
}
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
<template>
|
|
||||||
<pre ref="editor"></pre>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const DEFAULT_THEME = "twilight";
|
|
||||||
|
|
||||||
import ace from "ace-builds";
|
|
||||||
import "ace-builds/webpack-resolver";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
value: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
theme: {
|
|
||||||
type: String,
|
|
||||||
required: false
|
|
||||||
},
|
|
||||||
lang: {
|
|
||||||
type: String,
|
|
||||||
default: "json"
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
type: Object,
|
|
||||||
default: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
editor: null,
|
|
||||||
cacheValue: ""
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
|
||||||
value(value) {
|
|
||||||
if (value !== this.cacheValue) {
|
|
||||||
this.editor.session.setValue(value, 1);
|
|
||||||
this.cacheValue = value;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
theme() {
|
|
||||||
this.editor.setTheme("ace/theme/" + this.defineTheme());
|
|
||||||
},
|
|
||||||
lang(value) {
|
|
||||||
this.editor.getSession().setMode("ace/mode/" + value);
|
|
||||||
},
|
|
||||||
options(value) {
|
|
||||||
this.editor.setOptions(value);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
const editor = ace.edit(this.$refs.editor, {
|
|
||||||
theme: `ace/theme/${this.defineTheme()}`,
|
|
||||||
mode: `ace/mode/${this.lang}`,
|
|
||||||
...this.options
|
|
||||||
});
|
|
||||||
|
|
||||||
if (this.value) editor.setValue(this.value, 1);
|
|
||||||
|
|
||||||
this.editor = editor;
|
|
||||||
this.cacheValue = this.value;
|
|
||||||
|
|
||||||
editor.on("change", () => {
|
|
||||||
const content = editor.getValue();
|
|
||||||
this.$emit("input", content);
|
|
||||||
this.cacheValue = content;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
defineTheme() {
|
|
||||||
if (this.theme) {
|
|
||||||
return this.theme;
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
this.$store.state.postwoman.settings.THEME_ACE_EDITOR || DEFAULT_THEME
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeDestroy() {
|
|
||||||
this.editor.destroy();
|
|
||||||
this.editor.container.remove();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,219 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="autocomplete-wrapper">
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
:placeholder="placeholder"
|
|
||||||
v-model="text"
|
|
||||||
@input="updateSuggestions"
|
|
||||||
@keyup="updateSuggestions"
|
|
||||||
@click="updateSuggestions"
|
|
||||||
@keydown="handleKeystroke"
|
|
||||||
ref="acInput"
|
|
||||||
:spellcheck="spellcheck"
|
|
||||||
:autocapitalize="spellcheck"
|
|
||||||
:autocorrect="spellcheck"
|
|
||||||
/>
|
|
||||||
<ul
|
|
||||||
class="suggestions"
|
|
||||||
v-if="suggestions.length > 0 && suggestionsVisible"
|
|
||||||
:style="{ transform: `translate(${suggestionsOffsetLeft}px, 0)` }"
|
|
||||||
>
|
|
||||||
<li
|
|
||||||
v-for="(suggestion, index) in suggestions"
|
|
||||||
@click.prevent="forceSuggestion(suggestion)"
|
|
||||||
:class="{ active: currentSuggestionIndex === index }"
|
|
||||||
:key="index"
|
|
||||||
>
|
|
||||||
{{ suggestion }}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.autocomplete-wrapper {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
input:focus + ul.suggestions,
|
|
||||||
ul.suggestions:hover {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.suggestions {
|
|
||||||
display: none;
|
|
||||||
background-color: var(--atc-color);
|
|
||||||
position: absolute;
|
|
||||||
top: calc(100% - 4px);
|
|
||||||
margin: 0 4px;
|
|
||||||
left: 0;
|
|
||||||
padding: 0;
|
|
||||||
border-radius: 0 0 8px 8px;
|
|
||||||
z-index: 9999;
|
|
||||||
transition: transform 0.2s ease-out;
|
|
||||||
box-shadow: 0 5px 30px rgba(black, 0.1);
|
|
||||||
|
|
||||||
li {
|
|
||||||
width: 100%;
|
|
||||||
display: block;
|
|
||||||
padding: 8px 16px;
|
|
||||||
font-size: 16px;
|
|
||||||
font-family: "Roboto Mono", monospace;
|
|
||||||
font-weight: 400;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
border-radius: 0 0 8px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&.active {
|
|
||||||
background-color: var(--ac-color);
|
|
||||||
color: var(--act-color);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const KEY_TAB = 9;
|
|
||||||
const KEY_ESC = 27;
|
|
||||||
|
|
||||||
const KEY_ARROW_UP = 38;
|
|
||||||
const KEY_ARROW_DOWN = 40;
|
|
||||||
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
spellcheck: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
required: false
|
|
||||||
},
|
|
||||||
|
|
||||||
placeholder: {
|
|
||||||
type: String,
|
|
||||||
default: "",
|
|
||||||
required: false
|
|
||||||
},
|
|
||||||
|
|
||||||
source: {
|
|
||||||
type: Array,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
|
|
||||||
value: {
|
|
||||||
type: String,
|
|
||||||
default: "",
|
|
||||||
required: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
|
||||||
text() {
|
|
||||||
this.$emit("input", this.text);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
text: this.value,
|
|
||||||
selectionStart: 0,
|
|
||||||
suggestionsOffsetLeft: 0,
|
|
||||||
currentSuggestionIndex: -1,
|
|
||||||
suggestionsVisible: false
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
updateSuggestions(event) {
|
|
||||||
// Hide suggestions if ESC pressed.
|
|
||||||
if (event.which && event.which === KEY_ESC) {
|
|
||||||
event.preventDefault();
|
|
||||||
this.suggestionsVisible = false;
|
|
||||||
this.currentSuggestionIndex = -1;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// As suggestions is a reactive property, this implicitly
|
|
||||||
// causes suggestions to update.
|
|
||||||
this.selectionStart = this.$refs.acInput.selectionStart;
|
|
||||||
this.suggestionsOffsetLeft = 12 * this.selectionStart;
|
|
||||||
this.suggestionsVisible = true;
|
|
||||||
},
|
|
||||||
|
|
||||||
forceSuggestion(text) {
|
|
||||||
let input = this.text.substring(0, this.selectionStart);
|
|
||||||
this.text = input + text;
|
|
||||||
|
|
||||||
this.selectionStart = this.text.length;
|
|
||||||
this.suggestionsVisible = true;
|
|
||||||
this.currentSuggestionIndex = -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
handleKeystroke(event) {
|
|
||||||
switch (event.which) {
|
|
||||||
case KEY_ARROW_UP:
|
|
||||||
event.preventDefault();
|
|
||||||
this.currentSuggestionIndex =
|
|
||||||
this.currentSuggestionIndex - 1 >= 0
|
|
||||||
? this.currentSuggestionIndex - 1
|
|
||||||
: 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_ARROW_DOWN:
|
|
||||||
event.preventDefault();
|
|
||||||
this.currentSuggestionIndex =
|
|
||||||
this.currentSuggestionIndex < this.suggestions.length - 1
|
|
||||||
? this.currentSuggestionIndex + 1
|
|
||||||
: this.suggestions.length - 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KEY_TAB:
|
|
||||||
event.preventDefault();
|
|
||||||
let activeSuggestion = this.suggestions[
|
|
||||||
this.currentSuggestionIndex >= 0 ? this.currentSuggestionIndex : 0
|
|
||||||
];
|
|
||||||
if (activeSuggestion) {
|
|
||||||
let input = this.text.substring(0, this.selectionStart);
|
|
||||||
this.text = input + activeSuggestion;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
|
||||||
/**
|
|
||||||
* Gets the suggestions list to be displayed under the input box.
|
|
||||||
*
|
|
||||||
* @returns {default.props.source|{type, required}}
|
|
||||||
*/
|
|
||||||
suggestions() {
|
|
||||||
let input = this.text.substring(0, this.selectionStart);
|
|
||||||
|
|
||||||
return (
|
|
||||||
this.source
|
|
||||||
.filter(entry => {
|
|
||||||
return (
|
|
||||||
entry.toLowerCase().startsWith(input.toLowerCase()) &&
|
|
||||||
input.toLowerCase() !== entry.toLowerCase()
|
|
||||||
);
|
|
||||||
})
|
|
||||||
// Cut off the part that's already been typed.
|
|
||||||
.map(entry => entry.substring(this.selectionStart))
|
|
||||||
// We only want the top 6 suggestions.
|
|
||||||
.slice(0, 6)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
this.updateSuggestions({
|
|
||||||
target: this.$refs.acInput
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("new_collection") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
v-model="name"
|
|
||||||
:placeholder="$t('my_new_collection')"
|
|
||||||
@keyup.enter="addNewCollection"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="addNewCollection">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
show: Boolean
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
name: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
syncCollections() {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
if (fb.currentSettings[0].value) {
|
|
||||||
fb.writeCollections(
|
|
||||||
JSON.parse(JSON.stringify(this.$store.state.postwoman.collections))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
addNewCollection() {
|
|
||||||
if (!this.$data.name) {
|
|
||||||
this.$toast.info($t("invalid_collection_name"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.$store.commit("postwoman/addNewCollection", {
|
|
||||||
name: this.$data.name
|
|
||||||
});
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
this.syncCollections();
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="show = false">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("new_folder") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
v-model="name"
|
|
||||||
:placeholder="$t('my_new_folder')"
|
|
||||||
@keyup.enter="addNewFolder"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="addNewFolder">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
show: Boolean,
|
|
||||||
collection: Object,
|
|
||||||
collectionIndex: Number
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
name: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
addNewFolder() {
|
|
||||||
this.$store.commit("postwoman/addNewFolder", {
|
|
||||||
folder: { name: this.$data.name },
|
|
||||||
collectionIndex: this.$props.collectionIndex
|
|
||||||
});
|
|
||||||
this.hideModal();
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="toggleShowChildren">
|
|
||||||
<i class="material-icons" v-show="!showChildren">arrow_right</i>
|
|
||||||
<i class="material-icons" v-show="showChildren">arrow_drop_down</i>
|
|
||||||
<i class="material-icons">folder</i>
|
|
||||||
<span>{{ collection.name }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<v-popover>
|
|
||||||
<button class="tooltip-target icon" v-tooltip="$t('more')">
|
|
||||||
<i class="material-icons">more_vert</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="$emit('add-folder')" v-close-popover>
|
|
||||||
<i class="material-icons">create_new_folder</i>
|
|
||||||
<span>{{ $t("new_folder") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="$emit('edit-collection')"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">create</i>
|
|
||||||
<span>{{ $t("edit") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="removeCollection" v-close-popover>
|
|
||||||
<i class="material-icons">delete</i>
|
|
||||||
<span>{{ $t("delete") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-show="showChildren">
|
|
||||||
<ul>
|
|
||||||
<li v-for="(folder, index) in collection.folders" :key="folder.name">
|
|
||||||
<folder
|
|
||||||
:folder="folder"
|
|
||||||
:folderIndex="index"
|
|
||||||
:collection-index="collectionIndex"
|
|
||||||
@edit-folder="editFolder(collectionIndex, folder, index)"
|
|
||||||
@edit-request="$emit('edit-request', $event)"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li
|
|
||||||
v-if="
|
|
||||||
collection.folders.length === 0 && collection.requests.length === 0
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<label>{{ $t("collection_empty") }}</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul>
|
|
||||||
<li v-for="(request, index) in collection.requests" :key="index">
|
|
||||||
<request
|
|
||||||
:request="request"
|
|
||||||
:collection-index="collectionIndex"
|
|
||||||
:folder-index="-1"
|
|
||||||
:request-index="index"
|
|
||||||
@edit-request="
|
|
||||||
$emit('edit-request', {
|
|
||||||
request,
|
|
||||||
collectionIndex,
|
|
||||||
folderIndex: undefined,
|
|
||||||
requestIndex: index
|
|
||||||
})
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
ul {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
display: flex;
|
|
||||||
margin-left: 32px;
|
|
||||||
border-left: 1px solid var(--brd-color);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
folder: () => import("./folder"),
|
|
||||||
request: () => import("./request")
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
collectionIndex: Number,
|
|
||||||
collection: Object
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
showChildren: false,
|
|
||||||
selectedFolder: {}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
toggleShowChildren() {
|
|
||||||
this.showChildren = !this.showChildren;
|
|
||||||
},
|
|
||||||
removeCollection() {
|
|
||||||
if (!confirm("Are you sure you want to remove this Collection?")) return;
|
|
||||||
this.$store.commit("postwoman/removeCollection", {
|
|
||||||
collectionIndex: this.collectionIndex
|
|
||||||
});
|
|
||||||
},
|
|
||||||
editFolder(collectionIndex, folder, folderIndex) {
|
|
||||||
this.$emit("edit-folder", { collectionIndex, folder, folderIndex });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("edit_collection") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
v-model="name"
|
|
||||||
:placeholder="editingCollection.name"
|
|
||||||
@keyup.enter="saveCollection"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="saveCollection">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
show: Boolean,
|
|
||||||
editingCollection: Object,
|
|
||||||
editingCollectionIndex: Number
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
name: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
saveCollection() {
|
|
||||||
if (!this.$data.name) {
|
|
||||||
this.$toast.info($t("invalid_collection_name"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const collectionUpdated = {
|
|
||||||
...this.$props.editingCollection,
|
|
||||||
name: this.$data.name
|
|
||||||
};
|
|
||||||
this.$store.commit("postwoman/editCollection", {
|
|
||||||
collection: collectionUpdated,
|
|
||||||
collectionIndex: this.$props.editingCollectionIndex
|
|
||||||
});
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="show = false">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("edit_folder") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
v-model="name"
|
|
||||||
:placeholder="folder.name"
|
|
||||||
@keyup.enter="editFolder"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="editFolder">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
show: Boolean,
|
|
||||||
collection: Object,
|
|
||||||
collectionIndex: Number,
|
|
||||||
folder: Object,
|
|
||||||
folderIndex: Number
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
name: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
editFolder() {
|
|
||||||
this.$store.commit("postwoman/editFolder", {
|
|
||||||
collectionIndex: this.$props.collectionIndex,
|
|
||||||
folder: { ...this.$props.folder, name: this.$data.name },
|
|
||||||
folderIndex: this.$props.folderIndex
|
|
||||||
});
|
|
||||||
this.hideModal();
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,160 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("edit_request") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<label for="selectLabel">{{ $t("label") }}</label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="selectLabel"
|
|
||||||
v-model="requestUpdateData.name"
|
|
||||||
@keyup.enter="saveRequest"
|
|
||||||
:placeholder="request.name"
|
|
||||||
/>
|
|
||||||
<label for="selectCollection">{{ $t("collection") }}</label>
|
|
||||||
<span class="select-wrapper">
|
|
||||||
<select
|
|
||||||
type="text"
|
|
||||||
id="selectCollection"
|
|
||||||
v-model="requestUpdateData.collectionIndex"
|
|
||||||
>
|
|
||||||
<option
|
|
||||||
:key="undefined"
|
|
||||||
:value="undefined"
|
|
||||||
hidden
|
|
||||||
disabled
|
|
||||||
selected
|
|
||||||
>{{ $t("current_collection") }}</option
|
|
||||||
>
|
|
||||||
<option
|
|
||||||
v-for="(collection, index) in $store.state.postwoman
|
|
||||||
.collections"
|
|
||||||
:key="index"
|
|
||||||
:value="index"
|
|
||||||
>
|
|
||||||
{{ collection.name }}
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</span>
|
|
||||||
<label for="selectFolder">{{ $t("folder") }}</label>
|
|
||||||
<span class="select-wrapper">
|
|
||||||
<select
|
|
||||||
type="text"
|
|
||||||
id="selectFolder"
|
|
||||||
v-model="requestUpdateData.folderIndex"
|
|
||||||
>
|
|
||||||
<option :key="undefined" :value="undefined">/</option>
|
|
||||||
<option
|
|
||||||
v-for="(folder, index) in folders"
|
|
||||||
:key="index"
|
|
||||||
:value="index"
|
|
||||||
>
|
|
||||||
{{ folder.name }}
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="saveRequest">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
show: Boolean,
|
|
||||||
collectionIndex: Number,
|
|
||||||
folderIndex: Number,
|
|
||||||
request: Object,
|
|
||||||
requestIndex: Number
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
requestUpdateData: {
|
|
||||||
name: undefined,
|
|
||||||
collectionIndex: undefined,
|
|
||||||
folderIndex: undefined
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
"requestUpdateData.collectionIndex": function resetFolderIndex() {
|
|
||||||
// if user choosen some folder, than selected other collection, which doesn't have any folders
|
|
||||||
// than `requestUpdateData.folderIndex` won't be reseted
|
|
||||||
this.$data.requestUpdateData.folderIndex = undefined;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
folders() {
|
|
||||||
const userSelectedAnyCollection =
|
|
||||||
this.$data.requestUpdateData.collectionIndex !== undefined;
|
|
||||||
if (!userSelectedAnyCollection) return [];
|
|
||||||
|
|
||||||
return this.$store.state.postwoman.collections[
|
|
||||||
this.$data.requestUpdateData.collectionIndex
|
|
||||||
].folders;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
saveRequest() {
|
|
||||||
const userSelectedAnyCollection =
|
|
||||||
this.$data.requestUpdateData.collectionIndex !== undefined;
|
|
||||||
|
|
||||||
const requestUpdated = {
|
|
||||||
...this.$props.request,
|
|
||||||
name: this.$data.requestUpdateData.name || this.$props.request.name,
|
|
||||||
collection: userSelectedAnyCollection
|
|
||||||
? this.$data.requestUpdateData.collectionIndex
|
|
||||||
: this.$props.collectionIndex,
|
|
||||||
folder: this.$data.requestUpdateData.folderIndex
|
|
||||||
};
|
|
||||||
|
|
||||||
// pass data separately to don't depend on request's collection, folder fields
|
|
||||||
// probably, they should be deprecated because they don't describe request itself
|
|
||||||
this.$store.commit("postwoman/editRequest", {
|
|
||||||
requestOldCollectionIndex: this.$props.collectionIndex,
|
|
||||||
requestOldFolderIndex: this.$props.folderIndex,
|
|
||||||
requestOldIndex: this.$props.requestIndex,
|
|
||||||
requestNew: requestUpdated,
|
|
||||||
requestNewCollectionIndex: requestUpdated.collection,
|
|
||||||
requestNewFolderIndex: requestUpdated.folder
|
|
||||||
});
|
|
||||||
|
|
||||||
this.hideModal();
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="toggleShowChildren">
|
|
||||||
<i class="material-icons" v-show="!showChildren">arrow_right</i>
|
|
||||||
<i class="material-icons" v-show="showChildren">arrow_drop_down</i>
|
|
||||||
<i class="material-icons">folder_open</i>
|
|
||||||
<span>{{ folder.name }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<v-popover>
|
|
||||||
<button class="tooltip-target icon" v-tooltip="$t('more')">
|
|
||||||
<i class="material-icons">more_vert</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="editFolder" v-close-popover>
|
|
||||||
<i class="material-icons">edit</i>
|
|
||||||
<span>{{ $t("edit") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="removeFolder" v-close-popover>
|
|
||||||
<i class="material-icons">delete</i>
|
|
||||||
<span>{{ $t("delete") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-show="showChildren">
|
|
||||||
<ul>
|
|
||||||
<li v-for="(request, index) in folder.requests" :key="index">
|
|
||||||
<request
|
|
||||||
:request="request"
|
|
||||||
:collection-index="collectionIndex"
|
|
||||||
:folder-index="folderIndex"
|
|
||||||
:request-index="index"
|
|
||||||
@edit-request="
|
|
||||||
$emit('edit-request', {
|
|
||||||
request,
|
|
||||||
collectionIndex,
|
|
||||||
folderIndex,
|
|
||||||
requestIndex: index
|
|
||||||
})
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li v-if="folder.requests.length === 0">
|
|
||||||
<label>{{ $t("folder_empty") }}</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
ul {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
display: flex;
|
|
||||||
margin-left: 32px;
|
|
||||||
border-left: 1px solid var(--brd-color);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
folder: Object,
|
|
||||||
collectionIndex: Number,
|
|
||||||
folderIndex: Number
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
request: () => import("./request")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
showChildren: false
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
toggleShowChildren() {
|
|
||||||
this.showChildren = !this.showChildren;
|
|
||||||
},
|
|
||||||
selectRequest(request) {
|
|
||||||
this.$store.commit("postwoman/selectRequest", { request });
|
|
||||||
},
|
|
||||||
removeFolder() {
|
|
||||||
if (!confirm("Are you sure you want to remove this folder?")) return;
|
|
||||||
this.$store.commit("postwoman/removeFolder", {
|
|
||||||
collectionIndex: this.collectionIndex,
|
|
||||||
folderIndex: this.folderIndex
|
|
||||||
});
|
|
||||||
},
|
|
||||||
editFolder() {
|
|
||||||
this.$emit("edit-folder");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,324 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">Import / Export Collections</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span
|
|
||||||
v-tooltip="{
|
|
||||||
content: !fb.currentUser
|
|
||||||
? $t('login_first')
|
|
||||||
: $t('replace_current')
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
:disabled="!fb.currentUser"
|
|
||||||
class="icon"
|
|
||||||
@click="syncCollections"
|
|
||||||
>
|
|
||||||
<i class="material-icons">folder_shared</i>
|
|
||||||
<span>{{ $t("import_from_sync") }}</span>
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="openDialogChooseFileToReplaceWith"
|
|
||||||
v-tooltip="$t('replace_current')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">create_new_folder</i>
|
|
||||||
<span>{{ $t("replace_json") }}</span>
|
|
||||||
<input
|
|
||||||
type="file"
|
|
||||||
@change="replaceWithJSON"
|
|
||||||
style="display: none;"
|
|
||||||
ref="inputChooseFileToReplaceWith"
|
|
||||||
accept="application/json"
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="openDialogChooseFileToImportFrom"
|
|
||||||
v-tooltip="$t('preserve_current')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">folder_special</i>
|
|
||||||
<span>{{ $t("import_json") }}</span>
|
|
||||||
<input
|
|
||||||
type="file"
|
|
||||||
@change="importFromJSON"
|
|
||||||
style="display: none;"
|
|
||||||
ref="inputChooseFileToImportFrom"
|
|
||||||
accept="application/json"
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<textarea v-model="collectionJson" rows="8"></textarea>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="icon primary"
|
|
||||||
@click="exportJSON"
|
|
||||||
v-tooltip="$t('download_file')"
|
|
||||||
>
|
|
||||||
{{ $t("export") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
fb
|
|
||||||
};
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
show: Boolean
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
collectionJson() {
|
|
||||||
return JSON.stringify(this.$store.state.postwoman.collections, null, 2);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
},
|
|
||||||
openDialogChooseFileToReplaceWith() {
|
|
||||||
this.$refs.inputChooseFileToReplaceWith.click();
|
|
||||||
},
|
|
||||||
openDialogChooseFileToImportFrom() {
|
|
||||||
this.$refs.inputChooseFileToImportFrom.click();
|
|
||||||
},
|
|
||||||
replaceWithJSON() {
|
|
||||||
let reader = new FileReader();
|
|
||||||
reader.onload = event => {
|
|
||||||
let content = event.target.result;
|
|
||||||
let collections = JSON.parse(content);
|
|
||||||
if (collections[0]) {
|
|
||||||
let [name, folders, requests] = Object.keys(collections[0]);
|
|
||||||
if (
|
|
||||||
name === "name" &&
|
|
||||||
folders === "folders" &&
|
|
||||||
requests === "requests"
|
|
||||||
) {
|
|
||||||
// Do nothing
|
|
||||||
}
|
|
||||||
} else if (
|
|
||||||
collections.info &&
|
|
||||||
collections.info.schema.includes("v2.1.0")
|
|
||||||
) {
|
|
||||||
collections = this.parsePostmanCollection(collections);
|
|
||||||
} else {
|
|
||||||
return this.failedImport();
|
|
||||||
}
|
|
||||||
this.$store.commit("postwoman/importCollections", collections);
|
|
||||||
this.fileImported();
|
|
||||||
};
|
|
||||||
reader.readAsText(this.$refs.inputChooseFileToReplaceWith.files[0]);
|
|
||||||
},
|
|
||||||
importFromJSON() {
|
|
||||||
let reader = new FileReader();
|
|
||||||
reader.onload = event => {
|
|
||||||
let content = event.target.result;
|
|
||||||
let collections = JSON.parse(content);
|
|
||||||
if (collections[0]) {
|
|
||||||
let [name, folders, requests] = Object.keys(collections[0]);
|
|
||||||
if (
|
|
||||||
name === "name" &&
|
|
||||||
folders === "folders" &&
|
|
||||||
requests === "requests"
|
|
||||||
) {
|
|
||||||
// Do nothing
|
|
||||||
}
|
|
||||||
} else if (
|
|
||||||
collections.info &&
|
|
||||||
collections.info.schema.includes("v2.1.0")
|
|
||||||
) {
|
|
||||||
collections = this.parsePostmanCollection(collections);
|
|
||||||
} else {
|
|
||||||
return this.failedImport();
|
|
||||||
}
|
|
||||||
this.$store.commit("postwoman/importCollections", collections);
|
|
||||||
this.fileImported();
|
|
||||||
};
|
|
||||||
reader.readAsText(this.$refs.inputChooseFileToImportFrom.files[0]);
|
|
||||||
},
|
|
||||||
exportJSON() {
|
|
||||||
let text = this.collectionJson;
|
|
||||||
text = text.replace(/\n/g, "\r\n");
|
|
||||||
let blob = new Blob([text], {
|
|
||||||
type: "text/json"
|
|
||||||
});
|
|
||||||
let anchor = document.createElement("a");
|
|
||||||
anchor.download = "postwoman-collection.json";
|
|
||||||
anchor.href = window.URL.createObjectURL(blob);
|
|
||||||
anchor.target = "_blank";
|
|
||||||
anchor.style.display = "none";
|
|
||||||
document.body.appendChild(anchor);
|
|
||||||
anchor.click();
|
|
||||||
document.body.removeChild(anchor);
|
|
||||||
this.$toast.success(this.$t("download_started"), {
|
|
||||||
icon: "done"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
syncCollections() {
|
|
||||||
this.$store.commit("postwoman/replaceCollections", fb.currentCollections);
|
|
||||||
this.fileImported();
|
|
||||||
},
|
|
||||||
fileImported() {
|
|
||||||
this.$toast.info(this.$t("file_imported"), {
|
|
||||||
icon: "folder_shared"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
failedImport() {
|
|
||||||
this.$toast.error(this.$t("import_failed"), {
|
|
||||||
icon: "error"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
parsePostmanCollection(collection, folders = true) {
|
|
||||||
let postwomanCollection = folders
|
|
||||||
? [
|
|
||||||
{
|
|
||||||
name: "",
|
|
||||||
folders: [],
|
|
||||||
requests: []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
: {
|
|
||||||
name: "",
|
|
||||||
requests: []
|
|
||||||
};
|
|
||||||
for (let collectionItem of collection.item) {
|
|
||||||
if (collectionItem.request) {
|
|
||||||
if (postwomanCollection[0]) {
|
|
||||||
postwomanCollection[0].name = collection.info
|
|
||||||
? collection.info.name
|
|
||||||
: "";
|
|
||||||
postwomanCollection[0].requests.push(
|
|
||||||
this.parsePostmanRequest(collectionItem)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
postwomanCollection.name = collection.name ? collection.name : "";
|
|
||||||
postwomanCollection.requests.push(
|
|
||||||
this.parsePostmanRequest(collectionItem)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else if (collectionItem.item) {
|
|
||||||
if (collectionItem.item[0]) {
|
|
||||||
postwomanCollection[0].folders.push(
|
|
||||||
this.parsePostmanCollection(collectionItem, false)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return postwomanCollection;
|
|
||||||
},
|
|
||||||
parsePostmanRequest(requestObject) {
|
|
||||||
let pwRequest = {
|
|
||||||
url: "",
|
|
||||||
path: "",
|
|
||||||
method: "",
|
|
||||||
auth: "",
|
|
||||||
httpUser: "",
|
|
||||||
httpPassword: "",
|
|
||||||
passwordFieldType: "password",
|
|
||||||
bearerToken: "",
|
|
||||||
headers: [],
|
|
||||||
params: [],
|
|
||||||
bodyParams: [],
|
|
||||||
rawParams: "",
|
|
||||||
rawInput: false,
|
|
||||||
contentType: "",
|
|
||||||
requestType: "",
|
|
||||||
name: ""
|
|
||||||
};
|
|
||||||
|
|
||||||
pwRequest.name = requestObject.name;
|
|
||||||
let requestObjectUrl = requestObject.request.url.raw.match(
|
|
||||||
/^(.+:\/\/[^\/]+|{[^\/]+})(\/[^\?]+|).*$/
|
|
||||||
);
|
|
||||||
pwRequest.url = requestObjectUrl[1];
|
|
||||||
pwRequest.path = requestObjectUrl[2] ? requestObjectUrl[2] : "";
|
|
||||||
pwRequest.method = requestObject.request.method;
|
|
||||||
let itemAuth = requestObject.request.auth
|
|
||||||
? requestObject.request.auth
|
|
||||||
: "";
|
|
||||||
let authType = itemAuth ? itemAuth.type : "";
|
|
||||||
if (authType === "basic") {
|
|
||||||
pwRequest.auth = "Basic Auth";
|
|
||||||
pwRequest.httpUser =
|
|
||||||
itemAuth.basic[0].key === "username"
|
|
||||||
? itemAuth.basic[0].value
|
|
||||||
: itemAuth.basic[1].value;
|
|
||||||
pwRequest.httpPassword =
|
|
||||||
itemAuth.basic[0].key === "password"
|
|
||||||
? itemAuth.basic[0].value
|
|
||||||
: itemAuth.basic[1].value;
|
|
||||||
} else if (authType === "oauth2") {
|
|
||||||
pwRequest.auth = "OAuth 2.0";
|
|
||||||
pwRequest.bearerToken =
|
|
||||||
itemAuth.oauth2[0].key === "accessToken"
|
|
||||||
? itemAuth.oauth2[0].value
|
|
||||||
: itemAuth.oauth2[1].value;
|
|
||||||
} else if (authType === "bearer") {
|
|
||||||
pwRequest.auth = "Bearer Token";
|
|
||||||
pwRequest.bearerToken = itemAuth.bearer[0].value;
|
|
||||||
}
|
|
||||||
let requestObjectHeaders = requestObject.request.header;
|
|
||||||
if (requestObjectHeaders) {
|
|
||||||
pwRequest.headers = requestObjectHeaders;
|
|
||||||
for (let header of pwRequest.headers) {
|
|
||||||
delete header.name;
|
|
||||||
delete header.type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let requestObjectParams = requestObject.request.url.query;
|
|
||||||
if (requestObjectParams) {
|
|
||||||
pwRequest.params = requestObjectParams;
|
|
||||||
for (let param of pwRequest.params) {
|
|
||||||
delete param.disabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (requestObject.request.body) {
|
|
||||||
if (requestObject.request.body.mode === "urlencoded") {
|
|
||||||
let params = requestObject.request.body.urlencoded;
|
|
||||||
pwRequest.bodyParams = params ? params : [];
|
|
||||||
for (let param of pwRequest.bodyParams) {
|
|
||||||
delete param.type;
|
|
||||||
}
|
|
||||||
} else if (requestObject.request.body.mode === "raw") {
|
|
||||||
pwRequest.rawInput = true;
|
|
||||||
pwRequest.rawParams = requestObject.request.body.raw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pwRequest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,234 +0,0 @@
|
|||||||
<!--
|
|
||||||
TODO:
|
|
||||||
- probably refactor and pass event arguments to modals directly without unpacking
|
|
||||||
-->
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<pw-section class="yellow" :label="$t('collections')" ref="collections">
|
|
||||||
<addCollection :show="showModalAdd" @hide-modal="displayModalAdd(false)" />
|
|
||||||
<editCollection
|
|
||||||
:show="showModalEdit"
|
|
||||||
:editingCollection="editingCollection"
|
|
||||||
:editingCollectionIndex="editingCollectionIndex"
|
|
||||||
@hide-modal="displayModalEdit(false)"
|
|
||||||
/>
|
|
||||||
<addFolder
|
|
||||||
:show="showModalAddFolder"
|
|
||||||
:collection="editingCollection"
|
|
||||||
:collectionIndex="editingCollectionIndex"
|
|
||||||
@hide-modal="displayModalAddFolder(false)"
|
|
||||||
/>
|
|
||||||
<editFolder
|
|
||||||
:show="showModalEditFolder"
|
|
||||||
:collection="editingCollection"
|
|
||||||
:collectionIndex="editingCollectionIndex"
|
|
||||||
:folder="editingFolder"
|
|
||||||
:folderIndex="editingFolderIndex"
|
|
||||||
@hide-modal="displayModalEditFolder(false)"
|
|
||||||
/>
|
|
||||||
<editRequest
|
|
||||||
:show="showModalEditRequest"
|
|
||||||
:collectionIndex="editingCollectionIndex"
|
|
||||||
:folderIndex="editingFolderIndex"
|
|
||||||
:request="editingRequest"
|
|
||||||
:requestIndex="editingRequestIndex"
|
|
||||||
@hide-modal="displayModalEditRequest(false)"
|
|
||||||
/>
|
|
||||||
<importExportCollections
|
|
||||||
:show="showModalImportExport"
|
|
||||||
@hide-modal="displayModalImportExport(false)"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="displayModalAdd(true)">
|
|
||||||
<i class="material-icons">add</i>
|
|
||||||
<span>{{ $t("new") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="displayModalImportExport(true)">
|
|
||||||
{{ $t("import_export") }}
|
|
||||||
</button>
|
|
||||||
<!-- <a
|
|
||||||
href="https://github.com/liyasthomas/postwoman/wiki/Collections"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
<button class="icon" v-tooltip="'Wiki'">
|
|
||||||
<i class="material-icons">help</i>
|
|
||||||
</button>
|
|
||||||
</a> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p v-if="collections.length === 0" class="info">
|
|
||||||
Create new collection
|
|
||||||
</p>
|
|
||||||
<virtual-list
|
|
||||||
class="virtual-list"
|
|
||||||
:class="{ filled: collections.length }"
|
|
||||||
:size="152"
|
|
||||||
:remain="Math.min(5, collections.length)"
|
|
||||||
>
|
|
||||||
<ul>
|
|
||||||
<li v-for="(collection, index) in collections" :key="collection.name">
|
|
||||||
<collection
|
|
||||||
:collection-index="index"
|
|
||||||
:collection="collection"
|
|
||||||
@edit-collection="editCollection(collection, index)"
|
|
||||||
@add-folder="addFolder(collection, index)"
|
|
||||||
@edit-folder="editFolder($event)"
|
|
||||||
@edit-request="editRequest($event)"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li v-if="collections.length === 0">
|
|
||||||
<label>Collections are empty</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</virtual-list>
|
|
||||||
<nuxt-link :to="localePath('doc')" :aria-label="$t('documentation')">
|
|
||||||
<button class="icon">
|
|
||||||
<i class="material-icons">books</i>
|
|
||||||
<span>{{ $t("generate_docs") }}</span>
|
|
||||||
</button>
|
|
||||||
</nuxt-link>
|
|
||||||
</pw-section>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.virtual-list {
|
|
||||||
max-height: calc(100vh - 276px);
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import collection from "./collection";
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
collection,
|
|
||||||
"pw-section": () => import("../section"),
|
|
||||||
addCollection: () => import("./addCollection"),
|
|
||||||
addFolder: () => import("./addFolder"),
|
|
||||||
editCollection: () => import("./editCollection"),
|
|
||||||
editFolder: () => import("./editFolder"),
|
|
||||||
editRequest: () => import("./editRequest"),
|
|
||||||
importExportCollections: () => import("./importExportCollections"),
|
|
||||||
VirtualList: () => import("vue-virtual-scroll-list")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
showModalAdd: false,
|
|
||||||
showModalEdit: false,
|
|
||||||
showModalImportExport: false,
|
|
||||||
showModalAddFolder: false,
|
|
||||||
showModalEditFolder: false,
|
|
||||||
showModalEditRequest: false,
|
|
||||||
editingCollection: undefined,
|
|
||||||
editingCollectionIndex: undefined,
|
|
||||||
editingFolder: undefined,
|
|
||||||
editingFolderIndex: undefined,
|
|
||||||
editingRequest: undefined,
|
|
||||||
editingRequestIndex: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
collections() {
|
|
||||||
return this.$store.state.postwoman.collections;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async mounted() {
|
|
||||||
this._keyListener = function(e) {
|
|
||||||
if (e.key === "Escape") {
|
|
||||||
e.preventDefault();
|
|
||||||
this.showModalAdd = this.showModalEdit = this.showModalImportExport = this.showModalAddFolder = this.showModalEditFolder = this.showModalEditRequest = false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
document.addEventListener("keydown", this._keyListener.bind(this));
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
displayModalAdd(shouldDisplay) {
|
|
||||||
this.showModalAdd = shouldDisplay;
|
|
||||||
},
|
|
||||||
displayModalEdit(shouldDisplay) {
|
|
||||||
this.showModalEdit = shouldDisplay;
|
|
||||||
|
|
||||||
if (!shouldDisplay) this.resetSelectedData();
|
|
||||||
},
|
|
||||||
displayModalImportExport(shouldDisplay) {
|
|
||||||
this.showModalImportExport = shouldDisplay;
|
|
||||||
},
|
|
||||||
displayModalAddFolder(shouldDisplay) {
|
|
||||||
this.showModalAddFolder = shouldDisplay;
|
|
||||||
|
|
||||||
if (!shouldDisplay) this.resetSelectedData();
|
|
||||||
},
|
|
||||||
displayModalEditFolder(shouldDisplay) {
|
|
||||||
this.showModalEditFolder = shouldDisplay;
|
|
||||||
|
|
||||||
if (!shouldDisplay) this.resetSelectedData();
|
|
||||||
},
|
|
||||||
displayModalEditRequest(shouldDisplay) {
|
|
||||||
this.showModalEditRequest = shouldDisplay;
|
|
||||||
|
|
||||||
if (!shouldDisplay) this.resetSelectedData();
|
|
||||||
},
|
|
||||||
editCollection(collection, collectionIndex) {
|
|
||||||
this.$data.editingCollection = collection;
|
|
||||||
this.$data.editingCollectionIndex = collectionIndex;
|
|
||||||
this.displayModalEdit(true);
|
|
||||||
this.syncCollections();
|
|
||||||
},
|
|
||||||
addFolder(collection, collectionIndex) {
|
|
||||||
this.$data.editingCollection = collection;
|
|
||||||
this.$data.editingCollectionIndex = collectionIndex;
|
|
||||||
this.displayModalAddFolder(true);
|
|
||||||
this.syncCollections();
|
|
||||||
},
|
|
||||||
editFolder(payload) {
|
|
||||||
const { collectionIndex, folder, folderIndex } = payload;
|
|
||||||
this.$data.editingCollection = collection;
|
|
||||||
this.$data.editingCollectionIndex = collectionIndex;
|
|
||||||
this.$data.editingFolder = folder;
|
|
||||||
this.$data.editingFolderIndex = folderIndex;
|
|
||||||
this.displayModalEditFolder(true);
|
|
||||||
this.syncCollections();
|
|
||||||
},
|
|
||||||
editRequest(payload) {
|
|
||||||
const { request, collectionIndex, folderIndex, requestIndex } = payload;
|
|
||||||
this.$data.editingCollectionIndex = collectionIndex;
|
|
||||||
this.$data.editingFolderIndex = folderIndex;
|
|
||||||
this.$data.editingRequest = request;
|
|
||||||
this.$data.editingRequestIndex = requestIndex;
|
|
||||||
this.displayModalEditRequest(true);
|
|
||||||
this.syncCollections();
|
|
||||||
},
|
|
||||||
resetSelectedData() {
|
|
||||||
this.$data.editingCollection = undefined;
|
|
||||||
this.$data.editingCollectionIndex = undefined;
|
|
||||||
this.$data.editingFolder = undefined;
|
|
||||||
this.$data.editingFolderIndex = undefined;
|
|
||||||
this.$data.editingRequest = undefined;
|
|
||||||
this.$data.editingRequestIndex = undefined;
|
|
||||||
},
|
|
||||||
syncCollections() {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
if (fb.currentSettings[0].value) {
|
|
||||||
fb.writeCollections(
|
|
||||||
JSON.parse(JSON.stringify(this.$store.state.postwoman.collections))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
document.removeEventListener("keydown", this._keyListener);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="selectRequest()"
|
|
||||||
v-tooltip="$t('use_request')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">insert_drive_file</i>
|
|
||||||
<span>{{ request.name }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<v-popover>
|
|
||||||
<button class="tooltip-target icon" v-tooltip="$t('more')">
|
|
||||||
<i class="material-icons">more_vert</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="$emit('edit-request')" v-close-popover>
|
|
||||||
<i class="material-icons">edit</i>
|
|
||||||
<span>{{ $t("edit") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="removeRequest" v-close-popover>
|
|
||||||
<i class="material-icons">delete</i>
|
|
||||||
<span>{{ $t("delete") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
ul {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
display: flex;
|
|
||||||
padding-left: 16px;
|
|
||||||
border-left: 1px solid var(--brd-color);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
request: Object,
|
|
||||||
collectionIndex: Number,
|
|
||||||
folderIndex: Number,
|
|
||||||
requestIndex: Number
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
selectRequest() {
|
|
||||||
this.$store.commit("postwoman/selectRequest", { request: this.request });
|
|
||||||
},
|
|
||||||
removeRequest() {
|
|
||||||
if (!confirm("Are you sure you want to remove this request?")) return;
|
|
||||||
this.$store.commit("postwoman/removeRequest", {
|
|
||||||
collectionIndex: this.collectionIndex,
|
|
||||||
folderIndex: this.folderIndex,
|
|
||||||
requestIndex: this.requestIndex
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("save_request_as") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<label for="selectLabel">{{ $t("label") }}</label>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="selectLabel"
|
|
||||||
v-model="requestData.name"
|
|
||||||
:placeholder="defaultRequestName"
|
|
||||||
@keyup.enter="saveRequestAs"
|
|
||||||
/>
|
|
||||||
<label for="selectCollection">{{ $t("collection") }}</label>
|
|
||||||
<span class="select-wrapper">
|
|
||||||
<select
|
|
||||||
type="text"
|
|
||||||
id="selectCollection"
|
|
||||||
v-model="requestData.collectionIndex"
|
|
||||||
>
|
|
||||||
<option
|
|
||||||
:key="undefined"
|
|
||||||
:value="undefined"
|
|
||||||
hidden
|
|
||||||
disabled
|
|
||||||
selected
|
|
||||||
>{{ $t("select_collection") }}</option
|
|
||||||
>
|
|
||||||
<option
|
|
||||||
v-for="(collection, index) in $store.state.postwoman
|
|
||||||
.collections"
|
|
||||||
:key="index"
|
|
||||||
:value="index"
|
|
||||||
>
|
|
||||||
{{ collection.name }}
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</span>
|
|
||||||
<label for="selectFolder">{{ $t("folder") }}</label>
|
|
||||||
<span class="select-wrapper">
|
|
||||||
<select
|
|
||||||
type="text"
|
|
||||||
id="selectFolder"
|
|
||||||
v-model="requestData.folderIndex"
|
|
||||||
>
|
|
||||||
<option :key="undefined" :value="undefined">/</option>
|
|
||||||
<option
|
|
||||||
v-for="(folder, index) in folders"
|
|
||||||
:key="index"
|
|
||||||
:value="index"
|
|
||||||
>
|
|
||||||
{{ folder.name }}
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</span>
|
|
||||||
<label for="selectRequest">{{ $t("request") }}</label>
|
|
||||||
<span class="select-wrapper">
|
|
||||||
<select
|
|
||||||
type="text"
|
|
||||||
id="selectRequest"
|
|
||||||
v-model="requestData.requestIndex"
|
|
||||||
>
|
|
||||||
<option :key="undefined" :value="undefined">/</option>
|
|
||||||
<option
|
|
||||||
v-for="(folder, index) in requests"
|
|
||||||
:key="index"
|
|
||||||
:value="index"
|
|
||||||
>
|
|
||||||
{{ folder.name }}
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="saveRequestAs">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
show: Boolean,
|
|
||||||
editingRequest: Object
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
defaultRequestName: "My Request",
|
|
||||||
requestData: {
|
|
||||||
name: undefined,
|
|
||||||
collectionIndex: undefined,
|
|
||||||
folderIndex: undefined,
|
|
||||||
requestIndex: undefined
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
"requestData.collectionIndex": function resetFolderAndRequestIndex() {
|
|
||||||
// if user choosen some folder, than selected other collection, which doesn't have any folders
|
|
||||||
// than `requestUpdateData.folderIndex` won't be reseted
|
|
||||||
this.$data.requestData.folderIndex = undefined;
|
|
||||||
this.$data.requestData.requestIndex = undefined;
|
|
||||||
},
|
|
||||||
"requestData.folderIndex": function resetRequestIndex() {
|
|
||||||
this.$data.requestData.requestIndex = undefined;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
folders() {
|
|
||||||
const userSelectedAnyCollection =
|
|
||||||
this.$data.requestData.collectionIndex !== undefined;
|
|
||||||
if (!userSelectedAnyCollection) return [];
|
|
||||||
|
|
||||||
const noCollectionAvailable =
|
|
||||||
this.$store.state.postwoman.collections[
|
|
||||||
this.$data.requestData.collectionIndex
|
|
||||||
] !== undefined;
|
|
||||||
if (!noCollectionAvailable) return [];
|
|
||||||
|
|
||||||
return this.$store.state.postwoman.collections[
|
|
||||||
this.$data.requestData.collectionIndex
|
|
||||||
].folders;
|
|
||||||
},
|
|
||||||
requests() {
|
|
||||||
const userSelectedAnyCollection =
|
|
||||||
this.$data.requestData.collectionIndex !== undefined;
|
|
||||||
if (!userSelectedAnyCollection) return [];
|
|
||||||
|
|
||||||
const userSelectedAnyFolder =
|
|
||||||
this.$data.requestData.folderIndex !== undefined;
|
|
||||||
if (userSelectedAnyFolder) {
|
|
||||||
const collection = this.$store.state.postwoman.collections[
|
|
||||||
this.$data.requestData.collectionIndex
|
|
||||||
];
|
|
||||||
const folder = collection.folders[this.$data.requestData.folderIndex];
|
|
||||||
const requests = folder.requests;
|
|
||||||
return requests;
|
|
||||||
} else {
|
|
||||||
const collection = this.$store.state.postwoman.collections[
|
|
||||||
this.$data.requestData.collectionIndex
|
|
||||||
];
|
|
||||||
const noCollectionAvailable =
|
|
||||||
this.$store.state.postwoman.collections[
|
|
||||||
this.$data.requestData.collectionIndex
|
|
||||||
] !== undefined;
|
|
||||||
if (!noCollectionAvailable) return [];
|
|
||||||
|
|
||||||
const requests = collection.requests;
|
|
||||||
return requests;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
syncCollections() {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
if (fb.currentSettings[0].value) {
|
|
||||||
fb.writeCollections(
|
|
||||||
JSON.parse(JSON.stringify(this.$store.state.postwoman.collections))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
saveRequestAs() {
|
|
||||||
const userDidntSpecifyCollection =
|
|
||||||
this.$data.requestData.collectionIndex === undefined;
|
|
||||||
if (userDidntSpecifyCollection) {
|
|
||||||
this.$toast.error(this.$t("select_collection"), {
|
|
||||||
icon: "error"
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const requestUpdated = {
|
|
||||||
...this.$props.editingRequest,
|
|
||||||
name: this.$data.requestData.name || this.$data.defaultRequestName,
|
|
||||||
collection: this.$data.requestData.collectionIndex
|
|
||||||
};
|
|
||||||
|
|
||||||
this.$store.commit("postwoman/saveRequestAs", {
|
|
||||||
request: requestUpdated,
|
|
||||||
collectionIndex: this.$data.requestData.collectionIndex,
|
|
||||||
folderIndex: this.$data.requestData.folderIndex,
|
|
||||||
requestIndex: this.$data.requestData.requestIndex
|
|
||||||
});
|
|
||||||
|
|
||||||
this.hideModal();
|
|
||||||
this.syncCollections();
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
this.$emit("hide-model"); // for backward compatibility // TODO: use fixed event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("new_environment") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
v-model="name"
|
|
||||||
:placeholder="$t('my_new_environment')"
|
|
||||||
@keyup.enter="addNewEnvironment"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="addNewEnvironment">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
show: Boolean
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
name: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
syncEnvironments() {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
if (fb.currentSettings[1].value) {
|
|
||||||
fb.writeEnvironments(
|
|
||||||
JSON.parse(JSON.stringify(this.$store.state.postwoman.environments))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
addNewEnvironment() {
|
|
||||||
if (!this.$data.name) {
|
|
||||||
this.$toast.info(this.$t("invalid_environment_name"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let newEnvironment = [
|
|
||||||
{
|
|
||||||
name: this.$data.name,
|
|
||||||
variables: []
|
|
||||||
}
|
|
||||||
];
|
|
||||||
this.$store.commit("postwoman/importAddEnvironments", {
|
|
||||||
environments: newEnvironment,
|
|
||||||
confirmation: "Environment added"
|
|
||||||
});
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
this.syncEnvironments();
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$data.name = undefined;
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,221 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("edit_environment") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
v-model="name"
|
|
||||||
:placeholder="editingEnvironment.name"
|
|
||||||
@keyup.enter="saveEnvironment"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<label for="variableList">{{ $t("env_variable_list") }}</label>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="clearContent($event)"
|
|
||||||
v-tooltip.bottom="$t('clear')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">clear_all</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<textarea
|
|
||||||
id="variableList"
|
|
||||||
readonly
|
|
||||||
v-textarea-auto-height="variableString"
|
|
||||||
v-model="variableString"
|
|
||||||
:placeholder="$t('add_one_variable')"
|
|
||||||
rows="1"
|
|
||||||
></textarea>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul
|
|
||||||
v-for="(variable, index) in this.editingEnvCopy.variables"
|
|
||||||
:key="index"
|
|
||||||
>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:placeholder="$t('parameter_count', { count: index + 1 })"
|
|
||||||
:name="'param' + index"
|
|
||||||
:value="variable.key"
|
|
||||||
@change="
|
|
||||||
$store.commit('postwoman/setVariableKey', {
|
|
||||||
index,
|
|
||||||
value: $event.target.value
|
|
||||||
})
|
|
||||||
"
|
|
||||||
autofocus
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:placeholder="$t('value_count', { count: index + 1 })"
|
|
||||||
:name="'value' + index"
|
|
||||||
:value="
|
|
||||||
typeof variable.value === 'string'
|
|
||||||
? variable.value
|
|
||||||
: JSON.stringify(variable.value)
|
|
||||||
"
|
|
||||||
@change="
|
|
||||||
$store.commit('postwoman/setVariableValue', {
|
|
||||||
index,
|
|
||||||
value: $event.target.value
|
|
||||||
})
|
|
||||||
"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<div>
|
|
||||||
<li>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="removeEnvironmentVariable(index)"
|
|
||||||
v-tooltip.bottom="$t('delete')"
|
|
||||||
id="variable"
|
|
||||||
>
|
|
||||||
<i class="material-icons">delete</i>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
</ul>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<button class="icon" @click="addEnvironmentVariable">
|
|
||||||
<i class="material-icons">add</i>
|
|
||||||
<span>{{ $t("add_new") }}</span>
|
|
||||||
</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button class="icon primary" @click="saveEnvironment">
|
|
||||||
{{ $t("save") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import textareaAutoHeight from "../../directives/textareaAutoHeight";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
directives: {
|
|
||||||
textareaAutoHeight
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
show: Boolean,
|
|
||||||
editingEnvironment: Object,
|
|
||||||
editingEnvironmentIndex: Number
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
name: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
editingEnvironment: function(update) {
|
|
||||||
this.name = this.$props.editingEnvironment && this.$props.editingEnvironment.name
|
|
||||||
? this.$props.editingEnvironment.name
|
|
||||||
: undefined
|
|
||||||
this.$store.commit(
|
|
||||||
"postwoman/setEditingEnvironment",
|
|
||||||
this.$props.editingEnvironment
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
editingEnvCopy() {
|
|
||||||
return this.$store.state.postwoman.editingEnvironment;
|
|
||||||
},
|
|
||||||
variableString() {
|
|
||||||
const result = this.editingEnvCopy.variables;
|
|
||||||
return result === "" ? "" : JSON.stringify(result);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
clearContent(e) {
|
|
||||||
this.$store.commit("postwoman/removeVariables", []);
|
|
||||||
e.target.innerHTML = this.doneButton;
|
|
||||||
this.$toast.info(this.$t("cleared"), {
|
|
||||||
icon: "clear_all"
|
|
||||||
});
|
|
||||||
setTimeout(
|
|
||||||
() => (e.target.innerHTML = '<i class="material-icons">clear_all</i>'),
|
|
||||||
1000
|
|
||||||
);
|
|
||||||
},
|
|
||||||
addEnvironmentVariable() {
|
|
||||||
let value = { key: "", value: "" };
|
|
||||||
this.$store.commit("postwoman/addVariable", value);
|
|
||||||
},
|
|
||||||
removeEnvironmentVariable(index) {
|
|
||||||
let variableIndex = index;
|
|
||||||
const oldVariables = this.editingEnvCopy.variables.slice();
|
|
||||||
const newVariables = this.editingEnvCopy.variables.filter(
|
|
||||||
(variable, index) => variableIndex !== index
|
|
||||||
);
|
|
||||||
|
|
||||||
this.$store.commit("postwoman/removeVariable", newVariables);
|
|
||||||
this.$toast.error(this.$t("deleted"), {
|
|
||||||
icon: "delete",
|
|
||||||
action: {
|
|
||||||
text: this.$t("undo"),
|
|
||||||
onClick: (e, toastObject) => {
|
|
||||||
this.$store.commit("postwoman/removeVariable", oldVariables);
|
|
||||||
toastObject.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
saveEnvironment() {
|
|
||||||
if (!this.$data.name) {
|
|
||||||
this.$toast.info(this.$t("invalid_environment_name"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const environmentUpdated = {
|
|
||||||
...this.editingEnvCopy,
|
|
||||||
name: this.$data.name
|
|
||||||
};
|
|
||||||
this.$store.commit("postwoman/saveEnvironment", {
|
|
||||||
environment: environmentUpdated,
|
|
||||||
environmentIndex: this.$props.editingEnvironmentIndex
|
|
||||||
});
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
},
|
|
||||||
hideModal() {
|
|
||||||
this.$data.name = undefined;
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="$emit('select-environment')"
|
|
||||||
v-tooltip="$t('use_environment')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">insert_drive_file</i>
|
|
||||||
<span>{{ environment.name }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<v-popover>
|
|
||||||
<button class="tooltip-target icon" v-tooltip="$t('more')">
|
|
||||||
<i class="material-icons">more_vert</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="$emit('edit-environment')"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">create</i>
|
|
||||||
<span>{{ $t("edit") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="removeEnvironment" v-close-popover>
|
|
||||||
<i class="material-icons">delete</i>
|
|
||||||
<span>{{ $t("delete") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
ul {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li {
|
|
||||||
display: flex;
|
|
||||||
padding-left: 16px;
|
|
||||||
border-left: 1px solid var(--brd-color);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
environment: Object,
|
|
||||||
environmentIndex: Number
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
removeEnvironment() {
|
|
||||||
if (!confirm("Are you sure you want to remove this environment?")) return;
|
|
||||||
this.$store.commit("postwoman/removeEnvironment", this.environmentIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
<template>
|
|
||||||
<modal v-if="show" @close="hideModal">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">Import / Export Environment</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span
|
|
||||||
v-tooltip="{
|
|
||||||
content: !fb.currentUser
|
|
||||||
? $t('login_first')
|
|
||||||
: $t('replace_current')
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
:disabled="!fb.currentUser"
|
|
||||||
class="icon"
|
|
||||||
@click="syncEnvironments"
|
|
||||||
>
|
|
||||||
<i class="material-icons">folder_shared</i>
|
|
||||||
<span>{{ $t("import_from_sync") }}</span>
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="openDialogChooseFileToReplaceWith"
|
|
||||||
v-tooltip="$t('replace_current')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">create_new_folder</i>
|
|
||||||
<span>{{ $t("replace_json") }}</span>
|
|
||||||
<input
|
|
||||||
type="file"
|
|
||||||
@change="replaceWithJSON"
|
|
||||||
style="display: none;"
|
|
||||||
ref="inputChooseFileToReplaceWith"
|
|
||||||
accept="application/json"
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="openDialogChooseFileToImportFrom"
|
|
||||||
v-tooltip="$t('preserve_current')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">folder_special</i>
|
|
||||||
<span>{{ $t("import_json") }}</span>
|
|
||||||
<input
|
|
||||||
type="file"
|
|
||||||
@change="importFromJSON"
|
|
||||||
style="display: none;"
|
|
||||||
ref="inputChooseFileToImportFrom"
|
|
||||||
accept="application/json"
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<textarea v-model="environmentJson" rows="8"></textarea>
|
|
||||||
</div>
|
|
||||||
<div slot="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span></span>
|
|
||||||
<span>
|
|
||||||
<button class="icon" @click="hideModal">
|
|
||||||
{{ $t("cancel") }}
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="icon primary"
|
|
||||||
@click="exportJSON"
|
|
||||||
v-tooltip="$t('download_file')"
|
|
||||||
>
|
|
||||||
{{ $t("export") }}
|
|
||||||
</button>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
fb
|
|
||||||
};
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
show: Boolean
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
modal: () => import("../../components/modal")
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
environmentJson() {
|
|
||||||
return JSON.stringify(this.$store.state.postwoman.environments, null, 2);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
hideModal() {
|
|
||||||
this.$emit("hide-modal");
|
|
||||||
},
|
|
||||||
openDialogChooseFileToReplaceWith() {
|
|
||||||
this.$refs.inputChooseFileToReplaceWith.click();
|
|
||||||
},
|
|
||||||
openDialogChooseFileToImportFrom() {
|
|
||||||
this.$refs.inputChooseFileToImportFrom.click();
|
|
||||||
},
|
|
||||||
replaceWithJSON() {
|
|
||||||
let reader = new FileReader();
|
|
||||||
reader.onload = event => {
|
|
||||||
let content = event.target.result;
|
|
||||||
let environments = JSON.parse(content);
|
|
||||||
this.$store.commit("postwoman/replaceEnvironments", environments);
|
|
||||||
};
|
|
||||||
reader.readAsText(this.$refs.inputChooseFileToReplaceWith.files[0]);
|
|
||||||
this.fileImported();
|
|
||||||
},
|
|
||||||
importFromJSON() {
|
|
||||||
let reader = new FileReader();
|
|
||||||
reader.onload = event => {
|
|
||||||
let content = event.target.result;
|
|
||||||
let environments = JSON.parse(content);
|
|
||||||
let confirmation = this.$t("file_imported")
|
|
||||||
this.$store.commit("postwoman/importAddEnvironments", {
|
|
||||||
environments,
|
|
||||||
confirmation
|
|
||||||
});
|
|
||||||
};
|
|
||||||
reader.readAsText(this.$refs.inputChooseFileToImportFrom.files[0]);
|
|
||||||
},
|
|
||||||
exportJSON() {
|
|
||||||
let text = this.environmentJson;
|
|
||||||
text = text.replace(/\n/g, "\r\n");
|
|
||||||
let blob = new Blob([text], {
|
|
||||||
type: "text/json"
|
|
||||||
});
|
|
||||||
let anchor = document.createElement("a");
|
|
||||||
anchor.download = "postwoman-environment.json";
|
|
||||||
anchor.href = window.URL.createObjectURL(blob);
|
|
||||||
anchor.target = "_blank";
|
|
||||||
anchor.style.display = "none";
|
|
||||||
document.body.appendChild(anchor);
|
|
||||||
anchor.click();
|
|
||||||
document.body.removeChild(anchor);
|
|
||||||
this.$toast.success(this.$t("download_started"), {
|
|
||||||
icon: "done"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
syncEnvironments() {
|
|
||||||
this.$store.commit(
|
|
||||||
"postwoman/replaceEnvironments",
|
|
||||||
fb.currentEnvironments
|
|
||||||
);
|
|
||||||
this.fileImported();
|
|
||||||
},
|
|
||||||
fileImported() {
|
|
||||||
this.$toast.info(this.$t("file_imported"), {
|
|
||||||
icon: "folder_shared"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,147 +0,0 @@
|
|||||||
<template>
|
|
||||||
<pw-section
|
|
||||||
class="green"
|
|
||||||
icon="history"
|
|
||||||
:label="$t('environment')"
|
|
||||||
ref="environment"
|
|
||||||
>
|
|
||||||
<addEnvironment :show="showModalAdd" @hide-modal="displayModalAdd(false)" />
|
|
||||||
<editEnvironment
|
|
||||||
:show="showModalEdit"
|
|
||||||
:editingEnvironment="editingEnvironment"
|
|
||||||
:editingEnvironmentIndex="editingEnvironmentIndex"
|
|
||||||
@hide-modal="displayModalEdit(false)"
|
|
||||||
/>
|
|
||||||
<importExportEnvironment
|
|
||||||
:show="showModalImportExport"
|
|
||||||
@hide-modal="displayModalImportExport(false)"
|
|
||||||
/>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="displayModalAdd(true)">
|
|
||||||
<i class="material-icons">add</i>
|
|
||||||
<span>{{ $t("new") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="displayModalImportExport(true)">
|
|
||||||
{{ $t("import_export") }}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<p v-if="environments.length === 0" class="info">
|
|
||||||
Create new environment
|
|
||||||
</p>
|
|
||||||
<virtual-list
|
|
||||||
class="virtual-list"
|
|
||||||
:class="{ filled: environments.length }"
|
|
||||||
:size="152"
|
|
||||||
:remain="Math.min(5, environments.length)"
|
|
||||||
>
|
|
||||||
<ul>
|
|
||||||
<li
|
|
||||||
v-for="(environment, index) in environments"
|
|
||||||
:key="environment.name"
|
|
||||||
>
|
|
||||||
<environment
|
|
||||||
:environmentIndex="index"
|
|
||||||
:environment="environment"
|
|
||||||
@edit-environment="editEnvironment(environment, index)"
|
|
||||||
@select-environment="$emit('use-environment', environment)"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li v-if="environments.length === 0">
|
|
||||||
<label>Environments are empty</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</virtual-list>
|
|
||||||
</pw-section>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.virtual-list {
|
|
||||||
max-height: calc(100vh - 276px);
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import environment from "./environment";
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
const updateOnLocalStorage = (propertyName, property) =>
|
|
||||||
window.localStorage.setItem(propertyName, JSON.stringify(property));
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
environment,
|
|
||||||
"pw-section": () => import("../section"),
|
|
||||||
addEnvironment: () => import("./addEnvironment"),
|
|
||||||
editEnvironment: () => import("./editEnvironment"),
|
|
||||||
importExportEnvironment: () => import("./importExportEnvironment"),
|
|
||||||
VirtualList: () => import("vue-virtual-scroll-list")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
showModalImportExport: false,
|
|
||||||
showModalAdd: false,
|
|
||||||
showModalEdit: false,
|
|
||||||
editingEnvironment: undefined,
|
|
||||||
editingEnvironmentIndex: undefined
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
environments() {
|
|
||||||
return this.$store.state.postwoman.environments;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async mounted() {
|
|
||||||
this._keyListener = function(e) {
|
|
||||||
if (e.key === "Escape") {
|
|
||||||
e.preventDefault();
|
|
||||||
this.showModalImportExport = false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
document.addEventListener("keydown", this._keyListener.bind(this));
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
displayModalAdd(shouldDisplay) {
|
|
||||||
this.showModalAdd = shouldDisplay;
|
|
||||||
},
|
|
||||||
displayModalEdit(shouldDisplay) {
|
|
||||||
this.showModalEdit = shouldDisplay;
|
|
||||||
|
|
||||||
if (!shouldDisplay) this.resetSelectedData();
|
|
||||||
},
|
|
||||||
displayModalImportExport(shouldDisplay) {
|
|
||||||
this.showModalImportExport = shouldDisplay;
|
|
||||||
},
|
|
||||||
editEnvironment(environment, environmentIndex) {
|
|
||||||
this.$data.editingEnvironment = environment;
|
|
||||||
this.$data.editingEnvironmentIndex = environmentIndex;
|
|
||||||
this.displayModalEdit(true);
|
|
||||||
this.syncEnvironments;
|
|
||||||
},
|
|
||||||
resetSelectedData() {
|
|
||||||
this.$data.editingEnvironment = undefined;
|
|
||||||
this.$data.editingEnvironmentIndex = undefined;
|
|
||||||
},
|
|
||||||
syncEnvironments() {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
if (fb.currentSettings[1].value) {
|
|
||||||
fb.writeEnvironments(
|
|
||||||
JSON.parse(JSON.stringify(this.$store.state.postwoman.environments))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
beforeDestroy() {
|
|
||||||
document.removeEventListener("keydown", this._keyListener);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
<template>
|
|
||||||
<virtual-list
|
|
||||||
v-if="fb.currentFeeds.length !== 0"
|
|
||||||
class="virtual-list"
|
|
||||||
:class="{ filled: fb.currentFeeds.length }"
|
|
||||||
:size="90"
|
|
||||||
:remain="Math.min(5, fb.currentFeeds.length)"
|
|
||||||
>
|
|
||||||
<ul v-for="feed in fb.currentFeeds" :key="feed.id" class="entry">
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<li class="info">
|
|
||||||
<label>
|
|
||||||
{{ feed.label || $t("no_label") }}
|
|
||||||
</label>
|
|
||||||
</li>
|
|
||||||
<button class="icon" @click="deleteFeed(feed)">
|
|
||||||
<i class="material-icons">delete</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<li class="info clamb-3">
|
|
||||||
<label>{{ feed.message || $t("empty") }}</label>
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
</ul>
|
|
||||||
</virtual-list>
|
|
||||||
<ul v-else>
|
|
||||||
<li>
|
|
||||||
<label class="info">{{ $t("empty") }}</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.virtual-list {
|
|
||||||
max-height: calc(100vh - 288px);
|
|
||||||
}
|
|
||||||
|
|
||||||
ul,
|
|
||||||
ol {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.entry {
|
|
||||||
border-bottom: 1px dashed var(--brd-color);
|
|
||||||
padding: 0 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clamb-3 {
|
|
||||||
display: -webkit-box;
|
|
||||||
-webkit-line-clamp: 3;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
VirtualList: () => import("vue-virtual-scroll-list")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
fb
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
deleteFeed(feed) {
|
|
||||||
fb.deleteFeed(feed.id);
|
|
||||||
this.$toast.error(this.$t("deleted"), {
|
|
||||||
icon: "delete"
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<ul>
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('label')"
|
|
||||||
type="text"
|
|
||||||
autofocus
|
|
||||||
v-model="message"
|
|
||||||
:placeholder="$t('paste_a_note')"
|
|
||||||
@keyup.enter="formPost"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('label')"
|
|
||||||
type="text"
|
|
||||||
autofocus
|
|
||||||
v-model="label"
|
|
||||||
:placeholder="$t('label')"
|
|
||||||
@keyup.enter="formPost"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
:disabled="!(this.message || this.label)"
|
|
||||||
value="Save"
|
|
||||||
@click="formPost"
|
|
||||||
>
|
|
||||||
<i class="material-icons">add</i>
|
|
||||||
<span>Add</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
ul,
|
|
||||||
ol {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
message: null,
|
|
||||||
label: null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
formPost() {
|
|
||||||
if (!(this.message || this.label)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
fb.writeFeeds(this.message, this.label);
|
|
||||||
this.message = null;
|
|
||||||
this.label = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-popover>
|
|
||||||
<button class="icon" v-tooltip="$t('login_with')">
|
|
||||||
<i class="material-icons">vpn_key</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="signInWithGoogle" v-close-popover>
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
class="material-icons"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M12.24 10.285V14.4h6.806c-.275 1.765-2.056 5.174-6.806 5.174-4.095 0-7.439-3.389-7.439-7.574s3.345-7.574 7.439-7.574c2.33 0 3.891.989 4.785 1.849l3.254-3.138C18.189 1.186 15.479 0 12.24 0c-6.635 0-12 5.365-12 12s5.365 12 12 12c6.926 0 11.52-4.869 11.52-11.726 0-.788-.085-1.39-.189-1.989H12.24z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
<span>Google</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="signInWithGithub" v-close-popover>
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
class="material-icons"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
<span>GitHub</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import firebase from "firebase/app";
|
|
||||||
import { fb } from "../../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
fb
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
signInWithGoogle() {
|
|
||||||
const provider = new firebase.auth.GoogleAuthProvider();
|
|
||||||
firebase
|
|
||||||
.auth()
|
|
||||||
.signInWithPopup(provider)
|
|
||||||
.then(({ additionalUserInfo }) => {
|
|
||||||
if (additionalUserInfo.isNewUser) {
|
|
||||||
this.$toast.info(`${this.$t("turn_on")} ${this.$t("sync")}`, {
|
|
||||||
icon: "sync",
|
|
||||||
duration: null,
|
|
||||||
closeOnSwipe: false,
|
|
||||||
action: {
|
|
||||||
text: this.$t("yes"),
|
|
||||||
onClick: (e, toastObject) => {
|
|
||||||
fb.writeSettings("syncHistory", false);
|
|
||||||
fb.writeSettings("syncCollections", true);
|
|
||||||
this.$router.push({ path: "/settings" });
|
|
||||||
toastObject.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
this.$toast.show(err.message || err, {
|
|
||||||
icon: "error"
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
signInWithGithub() {
|
|
||||||
const provider = new firebase.auth.GithubAuthProvider();
|
|
||||||
firebase
|
|
||||||
.auth()
|
|
||||||
.signInWithPopup(provider)
|
|
||||||
.then(({ additionalUserInfo }) => {
|
|
||||||
if (additionalUserInfo.isNewUser) {
|
|
||||||
this.$toast.info(`${this.$t("turn_on")} ${this.$t("sync")}`, {
|
|
||||||
icon: "sync",
|
|
||||||
duration: null,
|
|
||||||
closeOnSwipe: false,
|
|
||||||
action: {
|
|
||||||
text: this.$t("yes"),
|
|
||||||
onClick: (e, toastObject) => {
|
|
||||||
fb.writeSettings("syncHistory", false);
|
|
||||||
fb.writeSettings("syncCollections", true);
|
|
||||||
this.$router.push({ path: "/settings" });
|
|
||||||
toastObject.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
this.$toast.show(err.message || err, {
|
|
||||||
icon: "error"
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
<template>
|
|
||||||
<span>
|
|
||||||
<span class="argumentName">
|
|
||||||
{{ argName }}
|
|
||||||
</span>
|
|
||||||
:
|
|
||||||
<typelink :type="argType" :jumpTypeCallback="jumpCallback" />
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import typelink from "./typelink";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
typelink: typelink
|
|
||||||
},
|
|
||||||
|
|
||||||
props: {
|
|
||||||
gqlArg: Object
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
|
||||||
argName() {
|
|
||||||
return this.gqlArg.name;
|
|
||||||
},
|
|
||||||
argType() {
|
|
||||||
return this.gqlArg.type;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
jumpCallback(typeName) {}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="field-box">
|
|
||||||
<div class="field-title">
|
|
||||||
{{ fieldName }}
|
|
||||||
<span v-if="fieldArgs.length > 0">
|
|
||||||
(
|
|
||||||
<span v-for="(field, index) in fieldArgs" :key="index">
|
|
||||||
{{ field.name }}:
|
|
||||||
<typelink
|
|
||||||
:gqlType="field.type"
|
|
||||||
:jumpTypeCallback="jumpTypeCallback"
|
|
||||||
/>
|
|
||||||
<span v-if="index !== fieldArgs.length - 1">
|
|
||||||
,
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
) </span
|
|
||||||
>:
|
|
||||||
<typelink :gqlType="gqlField.type" :jumpTypeCallback="jumpTypeCallback" />
|
|
||||||
</div>
|
|
||||||
<div class="field-desc" v-if="gqlField.description">
|
|
||||||
{{ gqlField.description }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="field-deprecated" v-if="gqlField.isDeprecated">
|
|
||||||
{{ $t("deprecated") }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.field-box {
|
|
||||||
padding: 16px;
|
|
||||||
margin: 4px;
|
|
||||||
border-bottom: 1px dashed var(--brd-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.field-deprecated {
|
|
||||||
background-color: yellow;
|
|
||||||
color: black;
|
|
||||||
display: inline-block;
|
|
||||||
padding: 4px 8px;
|
|
||||||
margin: 4px 0;
|
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.field-desc {
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
margin-top: 4px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import typelink from "./typelink";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
typelink: typelink
|
|
||||||
},
|
|
||||||
|
|
||||||
props: {
|
|
||||||
gqlField: Object,
|
|
||||||
jumpTypeCallback: Function
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
|
||||||
fieldString() {
|
|
||||||
const args = (this.gqlField.args || []).reduce((acc, arg, index) => {
|
|
||||||
return (
|
|
||||||
acc +
|
|
||||||
`${arg.name}: ${arg.type.toString()}${
|
|
||||||
index !== this.gqlField.args.length - 1 ? ", " : ""
|
|
||||||
}`
|
|
||||||
);
|
|
||||||
}, "");
|
|
||||||
const argsString = args.length > 0 ? `(${args})` : "";
|
|
||||||
return `${
|
|
||||||
this.gqlField.name
|
|
||||||
}${argsString}: ${this.gqlField.type.toString()}`;
|
|
||||||
},
|
|
||||||
|
|
||||||
fieldName() {
|
|
||||||
return this.gqlField.name;
|
|
||||||
},
|
|
||||||
|
|
||||||
fieldArgs() {
|
|
||||||
return this.gqlField.args || [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
<template>
|
|
||||||
<pre ref="editor"></pre>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const DEFAULT_THEME = "twilight";
|
|
||||||
|
|
||||||
import ace from "ace-builds";
|
|
||||||
import * as gql from "graphql";
|
|
||||||
import { getAutocompleteSuggestions } from "graphql-language-service-interface";
|
|
||||||
import "ace-builds/webpack-resolver";
|
|
||||||
import "ace-builds/src-noconflict/ext-language_tools";
|
|
||||||
import debounce from "../../functions/utils/debounce";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
value: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
theme: {
|
|
||||||
type: String,
|
|
||||||
required: false
|
|
||||||
},
|
|
||||||
lang: {
|
|
||||||
type: String,
|
|
||||||
default: "json"
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
type: Object,
|
|
||||||
default: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
editor: null,
|
|
||||||
cacheValue: "",
|
|
||||||
validationSchema: null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
|
||||||
value(value) {
|
|
||||||
if (value !== this.cacheValue) {
|
|
||||||
this.editor.session.setValue(value, 1);
|
|
||||||
this.cacheValue = value;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
theme() {
|
|
||||||
this.editor.setTheme(`ace/theme/${this.defineTheme()}`);
|
|
||||||
},
|
|
||||||
lang(value) {
|
|
||||||
this.editor.getSession().setMode(`ace/mode/${value}`);
|
|
||||||
},
|
|
||||||
options(value) {
|
|
||||||
this.editor.setOptions(value);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
let langTools = ace.require("ace/ext/language_tools");
|
|
||||||
|
|
||||||
const editor = ace.edit(this.$refs.editor, {
|
|
||||||
theme: `ace/theme/${this.defineTheme()}`,
|
|
||||||
mode: `ace/mode/${this.lang}`,
|
|
||||||
enableBasicAutocompletion: true,
|
|
||||||
enableLiveAutocompletion: true,
|
|
||||||
...this.options
|
|
||||||
});
|
|
||||||
|
|
||||||
const completer = {
|
|
||||||
getCompletions: (
|
|
||||||
editor,
|
|
||||||
_session,
|
|
||||||
{ row, column },
|
|
||||||
_prefix,
|
|
||||||
callback
|
|
||||||
) => {
|
|
||||||
if (this.validationSchema) {
|
|
||||||
const completions = getAutocompleteSuggestions(
|
|
||||||
this.validationSchema,
|
|
||||||
editor.getValue(),
|
|
||||||
{ line: row, character: column }
|
|
||||||
);
|
|
||||||
|
|
||||||
callback(
|
|
||||||
null,
|
|
||||||
completions.map(({ label, detail }) => ({
|
|
||||||
name: label,
|
|
||||||
value: label,
|
|
||||||
score: 1.0,
|
|
||||||
meta: detail
|
|
||||||
}))
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
callback(null, []);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
langTools.setCompleters([completer]);
|
|
||||||
|
|
||||||
if (this.value) editor.setValue(this.value, 1);
|
|
||||||
|
|
||||||
this.editor = editor;
|
|
||||||
this.cacheValue = this.value;
|
|
||||||
|
|
||||||
editor.on("change", () => {
|
|
||||||
const content = editor.getValue();
|
|
||||||
this.$emit("input", content);
|
|
||||||
this.parseContents(content);
|
|
||||||
this.cacheValue = content;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.parseContents(this.value);
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
defineTheme() {
|
|
||||||
if (this.theme) {
|
|
||||||
return this.theme;
|
|
||||||
} else {
|
|
||||||
return (
|
|
||||||
this.$store.state.postwoman.settings.THEME_ACE_EDITOR || DEFAULT_THEME
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
setValidationSchema(schema) {
|
|
||||||
this.validationSchema = schema;
|
|
||||||
this.parseContents(this.cacheValue);
|
|
||||||
},
|
|
||||||
|
|
||||||
parseContents: debounce(function(content) {
|
|
||||||
if (content !== "") {
|
|
||||||
try {
|
|
||||||
const doc = gql.parse(content);
|
|
||||||
|
|
||||||
if (this.validationSchema) {
|
|
||||||
this.editor.session.setAnnotations(
|
|
||||||
gql
|
|
||||||
.validate(this.validationSchema, doc)
|
|
||||||
.map(({ locations, message }) => ({
|
|
||||||
row: locations[0].line - 1,
|
|
||||||
column: locations[0].column - 1,
|
|
||||||
text: message,
|
|
||||||
type: "error"
|
|
||||||
}))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
this.editor.session.setAnnotations([
|
|
||||||
{
|
|
||||||
row: e.locations[0].line - 1,
|
|
||||||
column: e.locations[0].column - 1,
|
|
||||||
text: e.message,
|
|
||||||
type: "error"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.editor.session.setAnnotations([]);
|
|
||||||
}
|
|
||||||
}, 2000)
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeDestroy() {
|
|
||||||
this.editor.destroy();
|
|
||||||
this.editor.container.remove();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="type-box">
|
|
||||||
<div class="type-title">{{ gqlType.name }}</div>
|
|
||||||
<div class="type-desc" v-if="gqlType.description">
|
|
||||||
{{ gqlType.description }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-if="gqlType.getFields">
|
|
||||||
<h5>{{ $t("fields") }}</h5>
|
|
||||||
<div v-for="field in gqlType.getFields()" :key="field.name">
|
|
||||||
<gql-field :gqlField="field" :jumpTypeCallback="jumpTypeCallback" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.type-box {
|
|
||||||
padding: 16px;
|
|
||||||
margin: 4px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.type-desc {
|
|
||||||
color: var(--fg-light-color);
|
|
||||||
margin-top: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.type-title {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
"gql-field": () => import("./field")
|
|
||||||
},
|
|
||||||
|
|
||||||
props: {
|
|
||||||
gqlType: {},
|
|
||||||
jumpTypeCallback: Function
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<template>
|
|
||||||
<span class="typelink" @click="jumpToType">{{ typeString }}</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.typelink {
|
|
||||||
color: var(--ac-color);
|
|
||||||
font-family: "Roboto Mono", monospace;
|
|
||||||
font-weight: 400;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
gqlType: null,
|
|
||||||
// (typeName: string) => void
|
|
||||||
jumpTypeCallback: Function
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
|
||||||
typeString() {
|
|
||||||
return this.gqlType.toString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
jumpToType() {
|
|
||||||
this.jumpTypeCallback(this.gqlType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,516 +0,0 @@
|
|||||||
<template>
|
|
||||||
<pw-section class="green" icon="history" :label="$t('history')" ref="history">
|
|
||||||
<ul>
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<li id="filter-history">
|
|
||||||
<input
|
|
||||||
aria-label="Search"
|
|
||||||
type="search"
|
|
||||||
:placeholder="$t('search')"
|
|
||||||
v-model="filterText"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<button class="icon">
|
|
||||||
<i class="material-icons">search</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</ul>
|
|
||||||
<virtual-list
|
|
||||||
class="virtual-list"
|
|
||||||
:class="{ filled: filteredHistory.length }"
|
|
||||||
:size="185"
|
|
||||||
:remain="Math.min(5, filteredHistory.length)"
|
|
||||||
>
|
|
||||||
<ul v-for="(entry, index) in filteredHistory" :key="index" class="entry">
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
:class="{ stared: entry.star }"
|
|
||||||
@click="toggleStar(entry)"
|
|
||||||
v-tooltip="{
|
|
||||||
content: !entry.star ? $t('add_star') : $t('remove_star')
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<i class="material-icons">
|
|
||||||
{{ entry.star ? "star" : "star_border" }}
|
|
||||||
</i>
|
|
||||||
</button>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('label')"
|
|
||||||
type="text"
|
|
||||||
readonly
|
|
||||||
:value="entry.label"
|
|
||||||
:placeholder="$t('no_label')"
|
|
||||||
class="bg-color"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<!-- <li>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
v-tooltip="{
|
|
||||||
content: !entry.usesScripts
|
|
||||||
? 'No pre-request script'
|
|
||||||
: 'Used pre-request script'
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<i class="material-icons">
|
|
||||||
{{ !entry.usesScripts ? "http" : "code" }}
|
|
||||||
</i>
|
|
||||||
</button>
|
|
||||||
</li> -->
|
|
||||||
<v-popover>
|
|
||||||
<button class="tooltip-target icon" v-tooltip="$t('options')">
|
|
||||||
<i class="material-icons">more_vert</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
:id="'use-button#' + index"
|
|
||||||
@click="useHistory(entry)"
|
|
||||||
:aria-label="$t('edit')"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">restore</i>
|
|
||||||
<span>{{ $t("restore") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
:id="'delete-button#' + index"
|
|
||||||
@click="deleteHistory(entry)"
|
|
||||||
:aria-label="$t('delete')"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">delete</i>
|
|
||||||
<span>{{ $t("delete") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</div>
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<li class="method-list-item">
|
|
||||||
<input
|
|
||||||
:aria-label="$t('method')"
|
|
||||||
type="text"
|
|
||||||
readonly
|
|
||||||
:value="entry.method"
|
|
||||||
:class="findEntryStatus(entry).className"
|
|
||||||
:style="{ '--status-code': entry.status }"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
class="entry-status-code"
|
|
||||||
:class="findEntryStatus(entry).className"
|
|
||||||
:style="{ '--status-code': entry.status }"
|
|
||||||
>{{ entry.status }}</span
|
|
||||||
>
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
<div class="show-on-large-screen">
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('url')"
|
|
||||||
type="text"
|
|
||||||
readonly
|
|
||||||
:value="entry.url"
|
|
||||||
:placeholder="$t('no_url')"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('path')"
|
|
||||||
type="text"
|
|
||||||
readonly
|
|
||||||
:value="entry.path"
|
|
||||||
:placeholder="$t('no_path')"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
<transition name="fade">
|
|
||||||
<div v-if="showMore" class="show-on-large-screen">
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('time')"
|
|
||||||
type="text"
|
|
||||||
readonly
|
|
||||||
:value="entry.time"
|
|
||||||
v-tooltip="entry.date"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('duration')"
|
|
||||||
type="text"
|
|
||||||
readonly
|
|
||||||
:value="entry.duration"
|
|
||||||
:placeholder="$t('no_duration')"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<input
|
|
||||||
:aria-label="$t('prerequest_script')"
|
|
||||||
type="text"
|
|
||||||
readonly
|
|
||||||
:value="entry.preRequestScript"
|
|
||||||
:placeholder="$t('no_prerequest_script')"
|
|
||||||
/>
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
</ul>
|
|
||||||
</virtual-list>
|
|
||||||
<ul
|
|
||||||
:class="{ hidden: filteredHistory.length != 0 || history.length === 0 }"
|
|
||||||
>
|
|
||||||
<li>
|
|
||||||
<label>{{ $t("nothing_found") }} "{{ filterText }}"</label>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<p v-if="history.length === 0" class="info">
|
|
||||||
{{ $t("history_empty") }}
|
|
||||||
</p>
|
|
||||||
<div v-if="history.length !== 0">
|
|
||||||
<div class="flex-wrap" v-if="!isClearingHistory">
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
id="clear-history-button"
|
|
||||||
:disabled="history.length === 0"
|
|
||||||
@click="enableHistoryClearing"
|
|
||||||
>
|
|
||||||
<i class="material-icons">clear_all</i>
|
|
||||||
<span>{{ $t("clear_all") }}</span>
|
|
||||||
</button>
|
|
||||||
<v-popover>
|
|
||||||
<button class="tooltip-target icon" v-tooltip="$t('sort')">
|
|
||||||
<i class="material-icons">sort</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="sort_by_label()" v-close-popover>
|
|
||||||
<i class="material-icons">sort_by_alpha</i>
|
|
||||||
<span>{{ $t("label") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="sort_by_time()" v-close-popover>
|
|
||||||
<i class="material-icons">access_time</i>
|
|
||||||
<span>{{ $t("time") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="sort_by_status_code()"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">assistant</i>
|
|
||||||
<span>{{ $t("status") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="sort_by_url()" v-close-popover>
|
|
||||||
<i class="material-icons">language</i>
|
|
||||||
<span>{{ $t("url") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="sort_by_path()" v-close-popover>
|
|
||||||
<i class="material-icons">timeline</i>
|
|
||||||
<span>{{ $t("path") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div v-if="showMore">
|
|
||||||
<button class="icon" @click="sort_by_duration()" v-close-popover>
|
|
||||||
<i class="material-icons">timer</i>
|
|
||||||
<span>{{ $t("duration") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="toggleCollapse()">
|
|
||||||
<i class="material-icons">
|
|
||||||
{{ !showMore ? "first_page" : "last_page" }}
|
|
||||||
</i>
|
|
||||||
<span>{{ !showMore ? $t("show_more") : $t("hide_more") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</div>
|
|
||||||
<div class="flex-wrap" v-else>
|
|
||||||
<label for="clear-history-button" class="info">
|
|
||||||
{{ $t("are_you_sure") }}
|
|
||||||
</label>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
id="confirm-clear-history-button"
|
|
||||||
@click="clearHistory"
|
|
||||||
v-tooltip="$t('yes')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">done</i>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
id="reject-clear-history-button"
|
|
||||||
@click="disableHistoryClearing"
|
|
||||||
v-tooltip="$t('no')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</pw-section>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.virtual-list {
|
|
||||||
max-height: calc(100vh - 284px);
|
|
||||||
|
|
||||||
[readonly] {
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-enter-active,
|
|
||||||
.fade-leave-active {
|
|
||||||
transition: all 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fade-enter,
|
|
||||||
.fade-leave-to {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stared {
|
|
||||||
color: #f8e81c !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul,
|
|
||||||
ol {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.method-list-item {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
span {
|
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
font-family: "Roboto Mono", monospace;
|
|
||||||
font-weight: 400;
|
|
||||||
background-color: transparent;
|
|
||||||
padding: 2px 6px;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.entry {
|
|
||||||
border-bottom: 1px dashed var(--brd-color);
|
|
||||||
padding: 0 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 720px) {
|
|
||||||
.virtual-list.filled {
|
|
||||||
min-height: 320px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.labels {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { findStatusGroup } from "../pages/index";
|
|
||||||
import { fb } from "../functions/fb";
|
|
||||||
|
|
||||||
const updateOnLocalStorage = (propertyName, property) =>
|
|
||||||
window.localStorage.setItem(propertyName, JSON.stringify(property));
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
"pw-section": () => import("./section"),
|
|
||||||
VirtualList: () => import("vue-virtual-scroll-list")
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
history:
|
|
||||||
fb.currentUser !== null
|
|
||||||
? fb.currentHistory
|
|
||||||
: JSON.parse(window.localStorage.getItem("history")) || [],
|
|
||||||
filterText: "",
|
|
||||||
showFilter: false,
|
|
||||||
isClearingHistory: false,
|
|
||||||
reverse_sort_label: false,
|
|
||||||
reverse_sort_time: false,
|
|
||||||
reverse_sort_status_code: false,
|
|
||||||
reverse_sort_url: false,
|
|
||||||
reverse_sort_path: false,
|
|
||||||
showMore: false
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
filteredHistory() {
|
|
||||||
this.history =
|
|
||||||
fb.currentUser !== null
|
|
||||||
? fb.currentHistory
|
|
||||||
: JSON.parse(window.localStorage.getItem("history")) || [];
|
|
||||||
return this.history.filter(entry => {
|
|
||||||
const filterText = this.filterText.toLowerCase();
|
|
||||||
return Object.keys(entry).some(key => {
|
|
||||||
let value = entry[key];
|
|
||||||
value = typeof value !== "string" ? value.toString() : value;
|
|
||||||
return value.toLowerCase().includes(filterText);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
clearHistory() {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
fb.clearHistory();
|
|
||||||
}
|
|
||||||
this.history = [];
|
|
||||||
this.filterText = "";
|
|
||||||
this.disableHistoryClearing();
|
|
||||||
updateOnLocalStorage("history", this.history);
|
|
||||||
this.$toast.error(this.$t("history_deleted"), {
|
|
||||||
icon: "delete"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
useHistory(entry) {
|
|
||||||
this.$emit("useHistory", entry);
|
|
||||||
},
|
|
||||||
findEntryStatus(entry) {
|
|
||||||
const foundStatusGroup = findStatusGroup(entry.status);
|
|
||||||
return (
|
|
||||||
foundStatusGroup || {
|
|
||||||
className: ""
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
deleteHistory(entry) {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
fb.deleteHistory(entry);
|
|
||||||
}
|
|
||||||
this.history.splice(this.history.indexOf(entry), 1);
|
|
||||||
if (this.history.length === 0) {
|
|
||||||
this.filterText = "";
|
|
||||||
}
|
|
||||||
updateOnLocalStorage("history", this.history);
|
|
||||||
this.$toast.error(this.$t("deleted"), {
|
|
||||||
icon: "delete"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
addEntry(entry) {
|
|
||||||
this.history.push(entry);
|
|
||||||
updateOnLocalStorage("history", this.history);
|
|
||||||
},
|
|
||||||
enableHistoryClearing() {
|
|
||||||
if (!this.history || !this.history.length) return;
|
|
||||||
this.isClearingHistory = true;
|
|
||||||
},
|
|
||||||
disableHistoryClearing() {
|
|
||||||
this.isClearingHistory = false;
|
|
||||||
},
|
|
||||||
sort_by_time() {
|
|
||||||
let byDate = this.history.slice(0);
|
|
||||||
byDate.sort((a, b) => {
|
|
||||||
let date_a = a.date.split("/");
|
|
||||||
let date_b = b.date.split("/");
|
|
||||||
let time_a = a.time.split(":");
|
|
||||||
let time_b = b.time.split(":");
|
|
||||||
let final_a = new Date(
|
|
||||||
date_a[2],
|
|
||||||
date_a[1],
|
|
||||||
date_a[0],
|
|
||||||
time_a[0],
|
|
||||||
time_a[1],
|
|
||||||
time_a[2]
|
|
||||||
);
|
|
||||||
let final_b = new Date(
|
|
||||||
date_b[2],
|
|
||||||
date_b[1],
|
|
||||||
date_b[0],
|
|
||||||
time_b[0],
|
|
||||||
time_b[1],
|
|
||||||
time_b[2]
|
|
||||||
);
|
|
||||||
if (this.reverse_sort_time) return final_b - final_a;
|
|
||||||
else return final_a - final_b;
|
|
||||||
});
|
|
||||||
this.history = byDate;
|
|
||||||
this.reverse_sort_time = !this.reverse_sort_time;
|
|
||||||
},
|
|
||||||
sort_by_status_code() {
|
|
||||||
let byCode = this.history.slice(0);
|
|
||||||
byCode.sort((a, b) => {
|
|
||||||
if (this.reverse_sort_status_code) return b.status - a.status;
|
|
||||||
else return a.status - b.status;
|
|
||||||
});
|
|
||||||
this.history = byCode;
|
|
||||||
this.reverse_sort_status_code = !this.reverse_sort_status_code;
|
|
||||||
},
|
|
||||||
sort_by_url() {
|
|
||||||
let byUrl = this.history.slice(0);
|
|
||||||
byUrl.sort((a, b) => {
|
|
||||||
if (this.reverse_sort_url)
|
|
||||||
return a.url === b.url ? 0 : +(a.url < b.url) || -1;
|
|
||||||
else return a.url === b.url ? 0 : +(a.url > b.url) || -1;
|
|
||||||
});
|
|
||||||
this.history = byUrl;
|
|
||||||
this.reverse_sort_url = !this.reverse_sort_url;
|
|
||||||
},
|
|
||||||
sort_by_label() {
|
|
||||||
let byLabel = this.history.slice(0);
|
|
||||||
byLabel.sort((a, b) => {
|
|
||||||
if (this.reverse_sort_label)
|
|
||||||
return a.label === b.label ? 0 : +(a.label < b.label) || -1;
|
|
||||||
else return a.label === b.label ? 0 : +(a.label > b.label) || -1;
|
|
||||||
});
|
|
||||||
this.history = byLabel;
|
|
||||||
this.reverse_sort_label = !this.reverse_sort_label;
|
|
||||||
},
|
|
||||||
sort_by_path() {
|
|
||||||
let byPath = this.history.slice(0);
|
|
||||||
byPath.sort((a, b) => {
|
|
||||||
if (this.reverse_sort_path)
|
|
||||||
return a.path === b.path ? 0 : +(a.path < b.path) || -1;
|
|
||||||
else return a.path === b.path ? 0 : +(a.path > b.path) || -1;
|
|
||||||
});
|
|
||||||
this.history = byPath;
|
|
||||||
this.reverse_sort_path = !this.reverse_sort_path;
|
|
||||||
},
|
|
||||||
sort_by_duration() {
|
|
||||||
let byDuration = this.history.slice(0);
|
|
||||||
byDuration.sort((a, b) => {
|
|
||||||
if (this.reverse_sort_duration)
|
|
||||||
return a.duration === b.duration
|
|
||||||
? 0
|
|
||||||
: +(a.duration < b.duration) || -1;
|
|
||||||
else
|
|
||||||
return a.duration === b.duration
|
|
||||||
? 0
|
|
||||||
: +(a.duration > b.duration) || -1;
|
|
||||||
});
|
|
||||||
this.history = byDuration;
|
|
||||||
this.reverse_sort_duration = !this.reverse_sort_duration;
|
|
||||||
},
|
|
||||||
toggleCollapse() {
|
|
||||||
this.showMore = !this.showMore;
|
|
||||||
},
|
|
||||||
toggleStar(entry) {
|
|
||||||
if (fb.currentUser !== null) {
|
|
||||||
fb.toggleStar(entry, !entry.star);
|
|
||||||
}
|
|
||||||
entry.star = !entry.star;
|
|
||||||
updateOnLocalStorage("history", this.history);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
<template>
|
|
||||||
<svg
|
|
||||||
version="1.1"
|
|
||||||
id="Capa_1"
|
|
||||||
x="0px"
|
|
||||||
y="0px"
|
|
||||||
viewBox="0 0 612.001 612.001"
|
|
||||||
style="enable-background:new 0 0 612.001 612.001;"
|
|
||||||
xml:space="preserve"
|
|
||||||
>
|
|
||||||
<defs id="defs11" />
|
|
||||||
<g id="g3826" transform="translate(-516.40798,-163.88978)">
|
|
||||||
<circle
|
|
||||||
:fill="color"
|
|
||||||
transform="scale(1,-1)"
|
|
||||||
style="stroke-width:1.19531453"
|
|
||||||
r="178.70923"
|
|
||||||
cy="-501.55591"
|
|
||||||
cx="822.40845"
|
|
||||||
id="circle3814"
|
|
||||||
/>
|
|
||||||
<g id="g3820" transform="translate(516.40798,163.89028)">
|
|
||||||
<g id="g3818">
|
|
||||||
<path
|
|
||||||
:fill="color"
|
|
||||||
id="path3816"
|
|
||||||
data-old_color="#202124"
|
|
||||||
class="active-path"
|
|
||||||
data-original="#202124"
|
|
||||||
d="M 64.601,236.822 C 64.601,394.256 192.786,612 306.001,612 412.582,612 547.4,394.256 547.4,236.822 547.4,79.388 439.322,0 306,0 172.678,0 64.601,79.388 64.601,236.822 Z m 304.12,116.415 c 29.475,-29.475 70.598,-40.195 108.552,-32.173 8.021,37.954 -2.698,79.077 -32.173,108.552 -29.475,29.475 -70.598,40.195 -108.552,32.173 -8.022,-37.955 2.698,-79.078 32.173,-108.552 z M 134.727,321.063 c 37.954,-8.021 79.077,2.698 108.552,32.173 29.475,29.475 40.195,70.598 32.173,108.552 -37.954,8.021 -79.077,-2.698 -108.552,-32.173 -29.475,-29.476 -40.194,-70.598 -32.173,-108.552 z"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
#circle3814 {
|
|
||||||
/* fill: var(--fg-color); */
|
|
||||||
fill: transparent;
|
|
||||||
}
|
|
||||||
/* #path3816 {
|
|
||||||
fill: var(--bg-color);
|
|
||||||
} */
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
color: {
|
|
||||||
type: String
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
<template>
|
|
||||||
<transition name="modal" appear>
|
|
||||||
<div class="modal-backdrop">
|
|
||||||
<div class="modal-wrapper">
|
|
||||||
<div class="modal-container">
|
|
||||||
<div class="modal-header">
|
|
||||||
<slot name="header"></slot>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<slot name="body"></slot>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<slot name="footer"></slot>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</transition>
|
|
||||||
</template>
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.modal-backdrop {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 998;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgba(0, 0, 0, 0.32);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-wrapper {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex-grow: 1;
|
|
||||||
max-width: 720px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-container {
|
|
||||||
display: flex;
|
|
||||||
flex-grow: 1;
|
|
||||||
flex-direction: column;
|
|
||||||
margin: 16px;
|
|
||||||
padding: 16px;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
background-color: var(--bg-color);
|
|
||||||
border-radius: 16px;
|
|
||||||
box-shadow: 0px 16px 70px rgba(0, 0, 0, 0.5);
|
|
||||||
max-height: calc(100vh - 32px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-body {
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The following styles are auto-applied to elements with
|
|
||||||
* transition="modal" when their visibility is toggled
|
|
||||||
* by Vue.js.
|
|
||||||
*
|
|
||||||
* You can easily play with the modal transition by editing
|
|
||||||
* these styles.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.modal-enter,
|
|
||||||
.modal-leave-active {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-enter .modal-container,
|
|
||||||
.modal-leave-active .modal-container {
|
|
||||||
transform: scale(0.8);
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
<template>
|
|
||||||
<fieldset
|
|
||||||
:id="label.toLowerCase()"
|
|
||||||
:class="{ 'no-colored-frames': !frameColorsEnabled }"
|
|
||||||
>
|
|
||||||
<legend @click.prevent="collapse">
|
|
||||||
<span>{{ label }}</span>
|
|
||||||
<i class="material-icons">
|
|
||||||
{{ isCollapsed ? "expand_more" : "expand_less" }}
|
|
||||||
</i>
|
|
||||||
</legend>
|
|
||||||
<div class="collapsible" :class="{ hidden: collapsed }">
|
|
||||||
<slot />
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
fieldset.no-colored-frames legend {
|
|
||||||
color: var(--fg-color);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
computed: {
|
|
||||||
frameColorsEnabled() {
|
|
||||||
return this.$store.state.postwoman.settings.FRAME_COLORS_ENABLED || false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
isCollapsed: false
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
props: {
|
|
||||||
label: {
|
|
||||||
type: String,
|
|
||||||
default: "Section"
|
|
||||||
},
|
|
||||||
collapsed: {
|
|
||||||
type: Boolean
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
collapse({ target }) {
|
|
||||||
const parent = target.parentNode.parentNode;
|
|
||||||
parent.querySelector(".collapsible").classList.toggle("hidden");
|
|
||||||
this.isCollapsed = !this.isCollapsed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div
|
|
||||||
class="color"
|
|
||||||
:data-color="color"
|
|
||||||
:class="{ active: active }"
|
|
||||||
v-tooltip="{ content: name || color }"
|
|
||||||
:style="{ backgroundColor: color }"
|
|
||||||
>
|
|
||||||
<i v-if="active" class="material-icons activeTick">done</i>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.color {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin: 8px;
|
|
||||||
padding: 16px;
|
|
||||||
border-radius: 100%;
|
|
||||||
border: 3px solid var(--bg-dark-color);
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.2s ease-in-out;
|
|
||||||
|
|
||||||
&.fg {
|
|
||||||
color: var(--act-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
border: 3px solid var(--ac-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.fg.active {
|
|
||||||
border: 3px solid var(--fg-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.activeTick {
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
color: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
active: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div @click="toggle()">
|
|
||||||
<label class="toggle" :class="{ on: on }" ref="toggle">
|
|
||||||
<span class="handle"></span>
|
|
||||||
</label>
|
|
||||||
<label class="caption">
|
|
||||||
<slot />
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
$useBorder: false;
|
|
||||||
$borderColor: var(--fg-light-color);
|
|
||||||
$activeColor: var(--ac-color);
|
|
||||||
$inactiveColor: var(--fg-light-color);
|
|
||||||
|
|
||||||
$inactiveHandleColor: var(--bg-color);
|
|
||||||
$activeHandleColor: var(--act-color);
|
|
||||||
|
|
||||||
$width: 32px;
|
|
||||||
$height: 16px;
|
|
||||||
$handleSpacing: 4px;
|
|
||||||
|
|
||||||
$transition: all 0.2s ease-in-out;
|
|
||||||
|
|
||||||
div {
|
|
||||||
display: inline-block;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
label.caption {
|
|
||||||
vertical-align: middle;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
label.toggle {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
width: $width;
|
|
||||||
height: $height;
|
|
||||||
border: if($useBorder, 2px solid $borderColor, none);
|
|
||||||
background-color: if($useBorder, transparent, $inactiveColor);
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
border-radius: 32px;
|
|
||||||
transition: $transition;
|
|
||||||
box-sizing: initial;
|
|
||||||
padding: 0;
|
|
||||||
margin: 8px 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
.handle {
|
|
||||||
position: absolute;
|
|
||||||
display: inline-block;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
margin: $handleSpacing;
|
|
||||||
background-color: $inactiveHandleColor;
|
|
||||||
|
|
||||||
width: #{$height - ($handleSpacing * 2)};
|
|
||||||
height: #{$height - ($handleSpacing * 2)};
|
|
||||||
border-radius: 100px;
|
|
||||||
|
|
||||||
pointer-events: none;
|
|
||||||
transition: $transition;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.on {
|
|
||||||
background-color: $activeColor;
|
|
||||||
border-color: $activeColor;
|
|
||||||
|
|
||||||
.handle {
|
|
||||||
background-color: $activeHandleColor;
|
|
||||||
left: #{$width - $height};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
on: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
toggle() {
|
|
||||||
const containsOnClass = this.$refs.toggle.classList.toggle("on");
|
|
||||||
this.$emit("change", containsOnClass);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"baseUrl": "http://localhost:3000",
|
|
||||||
"integrationFolder": "tests/e2e/integration",
|
|
||||||
"screenshotsFolder": "tests/e2e/screenshots",
|
|
||||||
"fixturesFolder": "tests/e2e/fixtures",
|
|
||||||
"supportFile": "tests/e2e/support",
|
|
||||||
"pluginsFile": false,
|
|
||||||
"video": false
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"rules": {
|
|
||||||
".read": false,
|
|
||||||
".write": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
export default {
|
|
||||||
name: "textareaAutoHeight",
|
|
||||||
update({ scrollHeight, clientHeight, style }) {
|
|
||||||
if (scrollHeight !== clientHeight) {
|
|
||||||
style.minHeight = `${scrollHeight}px`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -5,7 +5,7 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
volumes:
|
volumes:
|
||||||
- "./.postwoman:/app/.postwoman"
|
- "./.hoppscotch:/app/.hoppscotch"
|
||||||
- "./assets:/app/assets"
|
- "./assets:/app/assets"
|
||||||
- "./directives:/app/directives"
|
- "./directives:/app/directives"
|
||||||
- "./layouts:/app/layouts"
|
- "./layouts:/app/layouts"
|
||||||
@@ -15,6 +15,9 @@ services:
|
|||||||
- "./static:/app/static"
|
- "./static:/app/static"
|
||||||
- "./store:/app/store"
|
- "./store:/app/store"
|
||||||
- "./components:/app/components"
|
- "./components:/app/components"
|
||||||
|
- "./helpers:/app/helpers"
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
|
environment:
|
||||||
|
HOST: 0.0.0.0
|
||||||
command: "npm run dev"
|
command: "npm run dev"
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
|
||||||
<title>Postwoman</title>
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://postwoman.io" />
|
|
||||||
<link rel="canonical" href="https://postwoman.io" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
Redirecting to postwoman.io
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,22 +1,19 @@
|
|||||||
{
|
{
|
||||||
"database": {
|
|
||||||
"rules": "database.rules.json"
|
|
||||||
},
|
|
||||||
"firestore": {
|
"firestore": {
|
||||||
"rules": "firestore.rules",
|
"rules": "firestore.rules",
|
||||||
"indexes": "firestore.indexes.json"
|
"indexes": "firestore.indexes.json"
|
||||||
},
|
},
|
||||||
"hosting": {
|
"hosting": {
|
||||||
"target": "postwoman",
|
"predeploy": [
|
||||||
"public": "dist",
|
"cd packages/hoppscotch-app && mv .env.example .env && cd ../.. && npm install -g pnpm && pnpm i && pnpm run generate"
|
||||||
"cleanUrls": true,
|
],
|
||||||
"ignore": [
|
"public": "packages/hoppscotch-app/dist",
|
||||||
"firebase.json",
|
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
|
||||||
"**/.*",
|
"rewrites": [
|
||||||
"**/node_modules/**"
|
{
|
||||||
|
"source": "**",
|
||||||
|
"destination": "/index.html"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
"storage": {
|
|
||||||
"rules": "storage.rules"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +1,4 @@
|
|||||||
{
|
{
|
||||||
// Example:
|
|
||||||
//
|
|
||||||
// "indexes": [
|
|
||||||
// {
|
|
||||||
// "collectionGroup": "widgets",
|
|
||||||
// "queryScope": "COLLECTION",
|
|
||||||
// "fields": [
|
|
||||||
// { "fieldPath": "foo", "arrayConfig": "CONTAINS" },
|
|
||||||
// { "fieldPath": "bar", "mode": "DESCENDING" }
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
//
|
|
||||||
// "fieldOverrides": [
|
|
||||||
// {
|
|
||||||
// "collectionGroup": "widgets",
|
|
||||||
// "fieldPath": "baz",
|
|
||||||
// "indexes": [
|
|
||||||
// { "order": "ASCENDING", "queryScope": "COLLECTION" }
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// ]
|
|
||||||
// ]
|
|
||||||
"indexes": [],
|
"indexes": [],
|
||||||
"fieldOverrides": []
|
"fieldOverrides": []
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@ service cloud.firestore {
|
|||||||
match /{document=**} {
|
match /{document=**} {
|
||||||
allow read, write: if request.auth.uid != null;
|
allow read, write: if request.auth.uid != null;
|
||||||
}
|
}
|
||||||
// Make sure the uid of the requesting user matches name of the user
|
// Make sure the uid of the requesting user matches the name of the user
|
||||||
// document. The wildcard expression {userId} makes the userId variable
|
// document. The wildcard expression {userId} makes the userId variable
|
||||||
// available in rules.
|
// available in rules.
|
||||||
match /users/{userId} {
|
match /users/{userId} {
|
||||||
|
|||||||
1
functions/.gitignore
vendored
1
functions/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
node_modules/
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
const mimeToMode = {
|
|
||||||
"text/plain": "plain_text",
|
|
||||||
"text/html": "html",
|
|
||||||
"application/xml": "xml",
|
|
||||||
"application/hal+json": "json",
|
|
||||||
"application/json": "json"
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getEditorLangForMimeType(mimeType) {
|
|
||||||
return mimeToMode[mimeType] || "plain_text";
|
|
||||||
}
|
|
||||||
221
functions/fb.js
221
functions/fb.js
@@ -1,221 +0,0 @@
|
|||||||
import firebase from "firebase/app";
|
|
||||||
import "firebase/firestore";
|
|
||||||
import "firebase/auth";
|
|
||||||
|
|
||||||
// Initialize Firebase, copied from cloud console
|
|
||||||
const firebaseConfig = {
|
|
||||||
apiKey: "AIzaSyCMsFreESs58-hRxTtiqQrIcimh4i1wbsM",
|
|
||||||
authDomain: "postwoman-api.firebaseapp.com",
|
|
||||||
databaseURL: "https://postwoman-api.firebaseio.com",
|
|
||||||
projectId: "postwoman-api",
|
|
||||||
storageBucket: "postwoman-api.appspot.com",
|
|
||||||
messagingSenderId: "421993993223",
|
|
||||||
appId: "1:421993993223:web:ec0baa8ee8c02ffa1fc6a2",
|
|
||||||
measurementId: "G-ERJ6025CEB"
|
|
||||||
};
|
|
||||||
firebase.initializeApp(firebaseConfig);
|
|
||||||
|
|
||||||
// a reference to the users collection
|
|
||||||
const usersCollection = firebase.firestore().collection("users");
|
|
||||||
|
|
||||||
// the shared state object that any vue component
|
|
||||||
// can get access to
|
|
||||||
export const fb = {
|
|
||||||
currentUser: {},
|
|
||||||
currentFeeds: [],
|
|
||||||
currentSettings: [],
|
|
||||||
currentHistory: [],
|
|
||||||
currentCollections: [],
|
|
||||||
currentEnvironments: [],
|
|
||||||
writeFeeds: async (message, label) => {
|
|
||||||
const dt = {
|
|
||||||
createdOn: new Date(),
|
|
||||||
author: fb.currentUser.uid,
|
|
||||||
author_name: fb.currentUser.displayName,
|
|
||||||
author_image: fb.currentUser.photoURL,
|
|
||||||
message,
|
|
||||||
label
|
|
||||||
};
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("feeds")
|
|
||||||
.add(dt)
|
|
||||||
.catch(e => console.error("error inserting", dt, e));
|
|
||||||
},
|
|
||||||
deleteFeed: id => {
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("feeds")
|
|
||||||
.doc(id)
|
|
||||||
.delete()
|
|
||||||
.catch(e => console.error("error deleting", id, e));
|
|
||||||
},
|
|
||||||
writeSettings: async (setting, value) => {
|
|
||||||
const st = {
|
|
||||||
updatedOn: new Date(),
|
|
||||||
author: fb.currentUser.uid,
|
|
||||||
author_name: fb.currentUser.displayName,
|
|
||||||
author_image: fb.currentUser.photoURL,
|
|
||||||
name: setting,
|
|
||||||
value
|
|
||||||
};
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("settings")
|
|
||||||
.doc(setting)
|
|
||||||
.set(st)
|
|
||||||
.catch(e => console.error("error updating", st, e));
|
|
||||||
},
|
|
||||||
writeHistory: async entry => {
|
|
||||||
const hs = entry;
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("history")
|
|
||||||
.add(hs)
|
|
||||||
.catch(e => console.error("error inserting", hs, e));
|
|
||||||
},
|
|
||||||
deleteHistory: entry => {
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("history")
|
|
||||||
.doc(entry.id)
|
|
||||||
.delete()
|
|
||||||
.catch(e => console.error("error deleting", entry, e));
|
|
||||||
},
|
|
||||||
clearHistory: () => {
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("history")
|
|
||||||
.get()
|
|
||||||
.then(({ docs }) => {
|
|
||||||
docs.forEach(e => fb.deleteHistory(e));
|
|
||||||
});
|
|
||||||
},
|
|
||||||
toggleStar: (entry, value) => {
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("history")
|
|
||||||
.doc(entry.id)
|
|
||||||
.update({ star: value })
|
|
||||||
.catch(e => console.error("error deleting", entry, e));
|
|
||||||
},
|
|
||||||
writeCollections: async collection => {
|
|
||||||
const cl = {
|
|
||||||
updatedOn: new Date(),
|
|
||||||
author: fb.currentUser.uid,
|
|
||||||
author_name: fb.currentUser.displayName,
|
|
||||||
author_image: fb.currentUser.photoURL,
|
|
||||||
collection: collection
|
|
||||||
};
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("collections")
|
|
||||||
.doc("sync")
|
|
||||||
.set(cl)
|
|
||||||
.catch(e => console.error("error updating", cl, e));
|
|
||||||
},
|
|
||||||
writeEnvironments: async environment => {
|
|
||||||
const ev = {
|
|
||||||
updatedOn: new Date(),
|
|
||||||
author: fb.currentUser.uid,
|
|
||||||
author_name: fb.currentUser.displayName,
|
|
||||||
author_image: fb.currentUser.photoURL,
|
|
||||||
environment: environment
|
|
||||||
};
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("environments")
|
|
||||||
.doc("sync")
|
|
||||||
.set(ev)
|
|
||||||
.catch(e => console.error("error updating", ev, e));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// When a user logs in or out, save that in the store
|
|
||||||
firebase.auth().onAuthStateChanged(user => {
|
|
||||||
if (user) {
|
|
||||||
fb.currentUser = user;
|
|
||||||
fb.currentUser.providerData.forEach(profile => {
|
|
||||||
let us = {
|
|
||||||
updatedOn: new Date(),
|
|
||||||
provider: profile.providerId,
|
|
||||||
name: profile.displayName,
|
|
||||||
email: profile.email,
|
|
||||||
photoUrl: profile.photoURL,
|
|
||||||
uid: profile.uid
|
|
||||||
};
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.set(us)
|
|
||||||
.catch(e => console.error("error updating", us, e));
|
|
||||||
});
|
|
||||||
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("feeds")
|
|
||||||
.orderBy("createdOn", "desc")
|
|
||||||
.onSnapshot(feedsRef => {
|
|
||||||
const feeds = [];
|
|
||||||
feedsRef.forEach(doc => {
|
|
||||||
const feed = doc.data();
|
|
||||||
feed.id = doc.id;
|
|
||||||
feeds.push(feed);
|
|
||||||
});
|
|
||||||
fb.currentFeeds = feeds;
|
|
||||||
});
|
|
||||||
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("settings")
|
|
||||||
.onSnapshot(settingsRef => {
|
|
||||||
const settings = [];
|
|
||||||
settingsRef.forEach(doc => {
|
|
||||||
const setting = doc.data();
|
|
||||||
setting.id = doc.id;
|
|
||||||
settings.push(setting);
|
|
||||||
});
|
|
||||||
fb.currentSettings = settings;
|
|
||||||
});
|
|
||||||
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("history")
|
|
||||||
.onSnapshot(historyRef => {
|
|
||||||
const history = [];
|
|
||||||
historyRef.forEach(doc => {
|
|
||||||
const entry = doc.data();
|
|
||||||
entry.id = doc.id;
|
|
||||||
history.push(entry);
|
|
||||||
});
|
|
||||||
fb.currentHistory = history;
|
|
||||||
});
|
|
||||||
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("collections")
|
|
||||||
.onSnapshot(collectionsRef => {
|
|
||||||
const collections = [];
|
|
||||||
collectionsRef.forEach(doc => {
|
|
||||||
const collection = doc.data();
|
|
||||||
collection.id = doc.id;
|
|
||||||
collections.push(collection);
|
|
||||||
});
|
|
||||||
fb.currentCollections = collections[0].collection;
|
|
||||||
});
|
|
||||||
|
|
||||||
usersCollection
|
|
||||||
.doc(fb.currentUser.uid)
|
|
||||||
.collection("environments")
|
|
||||||
.onSnapshot(environmentsRef => {
|
|
||||||
const environments = [];
|
|
||||||
environmentsRef.forEach(doc => {
|
|
||||||
const environment = doc.data();
|
|
||||||
environment.id = doc.id;
|
|
||||||
environments.push(environment);
|
|
||||||
});
|
|
||||||
fb.currentEnvironments = environments[0].environment;
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
fb.currentUser = null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
// const functions = require('firebase-functions');
|
|
||||||
|
|
||||||
// // Create and Deploy Your First Cloud Functions
|
|
||||||
// // https://firebase.google.com/docs/functions/write-firebase-functions
|
|
||||||
//
|
|
||||||
// exports.helloWorld = functions.https.onRequest((request, response) => {
|
|
||||||
// response.send("Hello from Firebase!");
|
|
||||||
// });
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
import AxiosStrategy from "./strategies/AxiosStrategy";
|
|
||||||
import ExtensionStrategy, {
|
|
||||||
hasExtensionInstalled
|
|
||||||
} from "./strategies/ExtensionStrategy";
|
|
||||||
import FirefoxStrategy from "./strategies/FirefoxStrategy";
|
|
||||||
import ChromeStrategy, {
|
|
||||||
hasChromeExtensionInstalled
|
|
||||||
} from "./strategies/ChromeStrategy";
|
|
||||||
|
|
||||||
const isExtensionsAllowed = ({ state }) =>
|
|
||||||
typeof state.postwoman.settings.EXTENSIONS_ENABLED === "undefined" ||
|
|
||||||
state.postwoman.settings.EXTENSIONS_ENABLED;
|
|
||||||
|
|
||||||
const runAppropriateStrategy = (req, store) => {
|
|
||||||
if (isExtensionsAllowed(store)) {
|
|
||||||
if (hasExtensionInstalled()) {
|
|
||||||
return ExtensionStrategy(req, store);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The following strategies are deprecated and kept to support older version of the extensions
|
|
||||||
|
|
||||||
// Chrome Provides a chrome object for scripts to access
|
|
||||||
// Check its availability to say whether you are in Google Chrome
|
|
||||||
if (window.chrome && hasChromeExtensionInstalled()) {
|
|
||||||
return ChromeStrategy(req, store);
|
|
||||||
}
|
|
||||||
// The firefox plugin injects a function to send requests through it
|
|
||||||
// If that is available, then we can use the FirefoxStrategy
|
|
||||||
if (window.firefoxExtSendRequest) {
|
|
||||||
return FirefoxStrategy(req, store);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return AxiosStrategy(req, store);
|
|
||||||
};
|
|
||||||
|
|
||||||
const sendNetworkRequest = (req, store) =>
|
|
||||||
runAppropriateStrategy(req, store).finally(() =>
|
|
||||||
window.$nuxt.$loading.finish()
|
|
||||||
);
|
|
||||||
|
|
||||||
export { sendNetworkRequest };
|
|
||||||
1915
functions/package-lock.json
generated
1915
functions/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "functions",
|
|
||||||
"description": "Cloud Functions for Firebase",
|
|
||||||
"scripts": {
|
|
||||||
"serve": "firebase serve --only functions",
|
|
||||||
"shell": "firebase functions:shell",
|
|
||||||
"start": "npm run shell",
|
|
||||||
"deploy": "firebase deploy --only functions",
|
|
||||||
"logs": "firebase functions:log"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "8"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"firebase-admin": "^8.0.0",
|
|
||||||
"firebase-functions": "^3.1.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"firebase-functions-test": "^0.1.6"
|
|
||||||
},
|
|
||||||
"private": true
|
|
||||||
}
|
|
||||||
@@ -1,175 +0,0 @@
|
|||||||
const PASS = "PASS";
|
|
||||||
const FAIL = "FAIL";
|
|
||||||
const ERROR = "ERROR";
|
|
||||||
|
|
||||||
const styles = {
|
|
||||||
[PASS]: { icon: "check", class: "success-response" },
|
|
||||||
[FAIL]: { icon: "close", class: "cl-error-response" },
|
|
||||||
[ERROR]: { icon: "close", class: "cl-error-response" },
|
|
||||||
none: { icon: "", class: "" }
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO: probably have to use a more global state for `test`
|
|
||||||
|
|
||||||
export default function runTestScriptWithVariables(script, variables) {
|
|
||||||
let pw = {
|
|
||||||
_errors: [],
|
|
||||||
_testReports: [],
|
|
||||||
_report: "",
|
|
||||||
expect(value) {
|
|
||||||
try {
|
|
||||||
return expect(value, this._testReports);
|
|
||||||
} catch (e) {
|
|
||||||
pw._testReports.push({ result: ERROR, message: e });
|
|
||||||
}
|
|
||||||
},
|
|
||||||
test: (descriptor, func) => test(descriptor, func, pw._testReports)
|
|
||||||
// globals that the script is allowed to have access to.
|
|
||||||
};
|
|
||||||
Object.assign(pw, variables);
|
|
||||||
|
|
||||||
// run pre-request script within this function so that it has access to the pw object.
|
|
||||||
new Function("pw", script)(pw);
|
|
||||||
//
|
|
||||||
const testReports = pw._testReports.map(item => {
|
|
||||||
if (item.result) {
|
|
||||||
item.styles = styles[item.result];
|
|
||||||
} else {
|
|
||||||
item.styles = styles.none;
|
|
||||||
}
|
|
||||||
return item;
|
|
||||||
});
|
|
||||||
return { report: pw._report, errors: pw._errors, testResults: testReports };
|
|
||||||
}
|
|
||||||
|
|
||||||
function test(descriptor, func, _testReports) {
|
|
||||||
_testReports.push({ startBlock: descriptor });
|
|
||||||
try {
|
|
||||||
func();
|
|
||||||
} catch (e) {
|
|
||||||
_testReports.push({ result: ERROR, message: e });
|
|
||||||
}
|
|
||||||
_testReports.push({ endBlock: true });
|
|
||||||
|
|
||||||
// TODO: Organize and generate text report of each {descriptor: true} section in testReports.
|
|
||||||
// add checkmark or x depending on if each testReport is pass=true or pass=false
|
|
||||||
}
|
|
||||||
|
|
||||||
function expect(expectValue, _testReports) {
|
|
||||||
return new Expectation(expectValue, null, _testReports);
|
|
||||||
}
|
|
||||||
|
|
||||||
class Expectation {
|
|
||||||
constructor(expectValue, _not, _testReports) {
|
|
||||||
this.expectValue = expectValue;
|
|
||||||
this.not = _not || new Expectation(this.expectValue, true, _testReports);
|
|
||||||
this._testReports = _testReports; // this values is used within Test.it, which wraps Expectation and passes _testReports value.
|
|
||||||
this._satisfies = function(expectValue, targetValue) {
|
|
||||||
// Used for testing if two values match the expectation, which could be === OR !==, depending on if not
|
|
||||||
// was used. Expectation#_satisfies prevents the need to have an if(this.not) branch in every test method.
|
|
||||||
// Signature is _satisfies([expectValue,] targetValue): if only one argument is given, it is assumed the targetValue, and expectValue is set to this.expectValue
|
|
||||||
if (!targetValue) {
|
|
||||||
targetValue = expectValue;
|
|
||||||
expectValue = this.expectValue;
|
|
||||||
}
|
|
||||||
if (this.not === true) {
|
|
||||||
// test the inverse. this.not is always truthly, but an Expectation that is inverted will always be strictly `true`
|
|
||||||
return expectValue !== targetValue;
|
|
||||||
} else {
|
|
||||||
return expectValue === targetValue;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
_fmtNot(message) {
|
|
||||||
// given a string with "(not)" in it, replaces with "not" or "", depending if the expectation is expecting the positive or inverse (this._not)
|
|
||||||
if (this.not === true) {
|
|
||||||
return message.replace("(not)", "not ");
|
|
||||||
} else {
|
|
||||||
return message.replace("(not)", "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_fail(message) {
|
|
||||||
this._testReports.push({ result: FAIL, message });
|
|
||||||
}
|
|
||||||
_pass(message) {
|
|
||||||
this._testReports.push({ result: PASS });
|
|
||||||
}
|
|
||||||
// TEST METHODS DEFINED BELOW
|
|
||||||
// these are the usual methods that would follow expect(...)
|
|
||||||
toBe(value) {
|
|
||||||
return this._satisfies(value)
|
|
||||||
? this._pass()
|
|
||||||
: this._fail(
|
|
||||||
this._fmtNot(`Expected ${this.expectValue} (not)to be ${value}`)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
toHaveProperty(value) {
|
|
||||||
return this._satisfies(this.expectValue.hasOwnProperty(value), true)
|
|
||||||
? this._pass()
|
|
||||||
: this._fail(
|
|
||||||
this._fmtNot(
|
|
||||||
`Expected object ${this.expectValue} to (not)have property ${value}`
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
toBeLevel2xx() {
|
|
||||||
const code = parseInt(this.expectValue);
|
|
||||||
if (Number.isNaN(code)) {
|
|
||||||
return this._fail(
|
|
||||||
`Expected 200-level status but could not parse value ${this.expectValue}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return this._satisfies(code >= 200 && code < 300)
|
|
||||||
? this._pass()
|
|
||||||
: this._fail(
|
|
||||||
this._fmtNot(
|
|
||||||
`Expected ${this.expectValue} to (not)be 200-level status`
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
toBeLevel3xx() {
|
|
||||||
const code = parseInt(this.expectValue);
|
|
||||||
if (Number.isNaN(code)) {
|
|
||||||
return this._fail(
|
|
||||||
`Expected 300-level status but could not parse value ${this.expectValue}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return this._satisfies(code >= 300 && code < 400)
|
|
||||||
? this._pass()
|
|
||||||
: this._fail(
|
|
||||||
this._fmtNot(
|
|
||||||
`Expected ${this.expectValue} to (not)be 300-level status`
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
toBeLevel4xx() {
|
|
||||||
const code = parseInt(this.expectValue);
|
|
||||||
if (Number.isNaN(code)) {
|
|
||||||
return this._fail(
|
|
||||||
`Expected 400-level status but could not parse value ${this.expectValue}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return this._satisfies(code >= 400 && code < 500)
|
|
||||||
? this._pass()
|
|
||||||
: this._fail(
|
|
||||||
this._fmtNot(
|
|
||||||
`Expected ${this.expectValue} to (not)be 400-level status`
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
toBeLevel5xx() {
|
|
||||||
const code = parseInt(this.expectValue);
|
|
||||||
if (Number.isNaN(code)) {
|
|
||||||
return this._fail(
|
|
||||||
`Expected 500-level status but could not parse value ${this.expectValue}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return this._satisfies(code >= 500 && code < 600)
|
|
||||||
? this._pass()
|
|
||||||
: this._fail(
|
|
||||||
this._fmtNot(
|
|
||||||
`Expected ${this.expectValue} to (not)be 500-level status`
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
export default function getEnvironmentVariablesFromScript(script) {
|
|
||||||
let _variables = {};
|
|
||||||
|
|
||||||
// the pw object is the proxy by which pre-request scripts can pass variables to the request.
|
|
||||||
// for security and control purposes, this is the only way a pre-request script should modify variables.
|
|
||||||
let pw = {
|
|
||||||
environment: {
|
|
||||||
set: (key, value) => (_variables[key] = value)
|
|
||||||
},
|
|
||||||
env: {
|
|
||||||
set: (key, value) => (_variables[key] = value)
|
|
||||||
}
|
|
||||||
// globals that the script is allowed to have access to.
|
|
||||||
};
|
|
||||||
|
|
||||||
// run pre-request script within this function so that it has access to the pw object.
|
|
||||||
new Function("pw", script)(pw);
|
|
||||||
|
|
||||||
return _variables;
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
import axios from "axios";
|
|
||||||
|
|
||||||
const axiosWithProxy = async (req, { state }) => {
|
|
||||||
const { data } = await axios.post(
|
|
||||||
state.postwoman.settings.PROXY_URL || "https://postwoman.apollotv.xyz/",
|
|
||||||
req
|
|
||||||
);
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
|
|
||||||
const axiosWithoutProxy = async (req, _store) => {
|
|
||||||
const res = await axios(req);
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
|
|
||||||
const axiosStrategy = (req, store) => {
|
|
||||||
if (store.state.postwoman.settings.PROXY_ENABLED) {
|
|
||||||
return axiosWithProxy(req, store);
|
|
||||||
}
|
|
||||||
return axiosWithoutProxy(req, store);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default axiosStrategy;
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
const EXTENSION_ID = "amknoiejhlmhancpahfcfcfhllgkpbld";
|
|
||||||
|
|
||||||
// Check if the Chrome Extension is present
|
|
||||||
// The Chrome extension injects an empty span to help detection.
|
|
||||||
// Also check for the presence of window.chrome object to confirm smooth operations
|
|
||||||
export const hasChromeExtensionInstalled = () =>
|
|
||||||
document.getElementById("chromePWExtensionDetect") !== null;
|
|
||||||
|
|
||||||
const chromeWithoutProxy = (req, _store) =>
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
chrome.runtime.sendMessage(
|
|
||||||
EXTENSION_ID,
|
|
||||||
{
|
|
||||||
messageType: "send-req",
|
|
||||||
data: {
|
|
||||||
config: req
|
|
||||||
}
|
|
||||||
},
|
|
||||||
({ data }) => {
|
|
||||||
if (data.error) {
|
|
||||||
reject(data.error);
|
|
||||||
} else {
|
|
||||||
resolve(data.response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
const chromeWithProxy = (req, { state }) =>
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
chrome.runtime.sendMessage(
|
|
||||||
EXTENSION_ID,
|
|
||||||
{
|
|
||||||
messageType: "send-req",
|
|
||||||
data: {
|
|
||||||
config: {
|
|
||||||
method: "post",
|
|
||||||
url:
|
|
||||||
state.postwoman.settings.PROXY_URL ||
|
|
||||||
"https://postwoman.apollotv.xyz/",
|
|
||||||
data: req
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
({ data }) => {
|
|
||||||
if (data.error) {
|
|
||||||
reject(error);
|
|
||||||
} else {
|
|
||||||
resolve(data.response.data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
const chromeStrategy = (req, store) => {
|
|
||||||
if (store.state.postwoman.settings.PROXY_ENABLED) {
|
|
||||||
return chromeWithProxy(req, store);
|
|
||||||
} else {
|
|
||||||
return chromeWithoutProxy(req, store);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default chromeStrategy;
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
export const hasExtensionInstalled = () =>
|
|
||||||
typeof window.__POSTWOMAN_EXTENSION_HOOK__ !== "undefined";
|
|
||||||
|
|
||||||
const extensionWithProxy = async (req, { state }) => {
|
|
||||||
const { data } = await window.__POSTWOMAN_EXTENSION_HOOK__.sendRequest({
|
|
||||||
method: "post",
|
|
||||||
url:
|
|
||||||
state.postwoman.settings.PROXY_URL || "https://postwoman.apollotv.xyz/",
|
|
||||||
data: req
|
|
||||||
});
|
|
||||||
return data;
|
|
||||||
};
|
|
||||||
|
|
||||||
const extensionWithoutProxy = async (req, _store) => {
|
|
||||||
const res = await window.__POSTWOMAN_EXTENSION_HOOK__.sendRequest(req);
|
|
||||||
return res;
|
|
||||||
};
|
|
||||||
|
|
||||||
const extensionStrategy = (req, store) => {
|
|
||||||
if (store.state.postwoman.settings.PROXY_ENABLED) {
|
|
||||||
return extensionWithProxy(req, store);
|
|
||||||
}
|
|
||||||
return extensionWithoutProxy(req, store);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default extensionStrategy;
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
const firefoxWithProxy = (req, { state }) =>
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
const eventListener = event => {
|
|
||||||
window.removeEventListener("firefoxExtSendRequestComplete", event);
|
|
||||||
|
|
||||||
if (event.detail.error) {
|
|
||||||
reject(JSON.parse(event.detail.error));
|
|
||||||
} else {
|
|
||||||
resolve(JSON.parse(event.detail.response).data);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
window.addEventListener("firefoxExtSendRequestComplete", eventListener);
|
|
||||||
|
|
||||||
window.firefoxExtSendRequest({
|
|
||||||
method: "post",
|
|
||||||
url:
|
|
||||||
state.postwoman.settings.PROXY_URL || "https://postwoman.apollotv.xyz/",
|
|
||||||
data: req
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const firefoxWithoutProxy = (req, _store) =>
|
|
||||||
new Promise((resolve, reject) => {
|
|
||||||
const eventListener = ({ detail }) => {
|
|
||||||
window.removeEventListener(
|
|
||||||
"firefoxExtSendRequestComplete",
|
|
||||||
eventListener
|
|
||||||
);
|
|
||||||
|
|
||||||
if (detail.error) {
|
|
||||||
reject(JSON.parse(detail.error));
|
|
||||||
} else {
|
|
||||||
resolve(JSON.parse(detail.response));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
window.addEventListener("firefoxExtSendRequestComplete", eventListener);
|
|
||||||
|
|
||||||
window.firefoxExtSendRequest(req);
|
|
||||||
});
|
|
||||||
|
|
||||||
const firefoxStrategy = (req, store) => {
|
|
||||||
if (store.state.postwoman.settings.PROXY_ENABLED) {
|
|
||||||
return firefoxWithProxy(req, store);
|
|
||||||
}
|
|
||||||
return firefoxWithoutProxy(req, store);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default firefoxStrategy;
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
export default function parseTemplateString(string, variables) {
|
|
||||||
if (!variables || !string) {
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
const searchTerm = /<<([^>]*)>>/g; // "<<myVariable>>"
|
|
||||||
return string.replace(searchTerm, (match, p1) => variables[p1] || "");
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "Startseite",
|
|
||||||
realtime: "Echtzeit",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "Einstellungen",
|
|
||||||
request: "Anfrage",
|
|
||||||
install_pwa: "PWA installieren",
|
|
||||||
support_us: "Unterstütze uns",
|
|
||||||
tweet: "Twittern",
|
|
||||||
options: "Optionen",
|
|
||||||
communication: "Kommunikation",
|
|
||||||
endpoint: "Endpunkt",
|
|
||||||
schema: "Schema",
|
|
||||||
theme: "Design",
|
|
||||||
subscribe: "Abonnieren",
|
|
||||||
choose_language: "Sprache auswählen",
|
|
||||||
shortcuts: "Tastenkombinationen",
|
|
||||||
send_request: "Anfrage senden",
|
|
||||||
save_to_collections: "In Sammlungen speichern",
|
|
||||||
copy_request_link: "Anfragelink kopieren",
|
|
||||||
reset_request: "Anfrage zurücksetzen",
|
|
||||||
support_us_on: "Unterstütze uns auf",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "PayPal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "JavaScript-Code",
|
|
||||||
method: "Methode",
|
|
||||||
path: "Pfad",
|
|
||||||
label: "Beschriftung",
|
|
||||||
again: "Wiederholen",
|
|
||||||
content_type: "Content-Typ",
|
|
||||||
raw_input: "Rohdaten-Eingabe",
|
|
||||||
parameter_list: "Parameterliste",
|
|
||||||
raw_request_body: "Rohdaten der Anfrage",
|
|
||||||
show_code: "Code zeigen",
|
|
||||||
hide_code: "Code ausblenden",
|
|
||||||
show_prerequest_script: "Preanfrageskript anzeigen",
|
|
||||||
hide_prerequest_script: "Preanfrageskript ausblenden",
|
|
||||||
authentication: "Authentifizierung",
|
|
||||||
authentication_type: "Authentifizierungs-Typ",
|
|
||||||
include_in_url: "In URL einfügen",
|
|
||||||
parameters: "Parameter",
|
|
||||||
expand_response: "Antwort ausklappen",
|
|
||||||
collapse_response: "Antwort einklappen",
|
|
||||||
hide_preview: "Vorschau verstecken",
|
|
||||||
preview_html: "HTML-Vorschau",
|
|
||||||
history: "Verlauf",
|
|
||||||
collections: "Kollektionen",
|
|
||||||
import_curl: "cURL importieren",
|
|
||||||
import: "Importieren",
|
|
||||||
generate_code: "Code generieren",
|
|
||||||
request_type: "Anfrage-Typ",
|
|
||||||
generated_code: "Generierter Code",
|
|
||||||
status: "Status",
|
|
||||||
headers: "Headers",
|
|
||||||
websocket: "WebSocket",
|
|
||||||
waiting_for_connection: "(warte auf Verbindung)",
|
|
||||||
message: "Nachricht",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Server",
|
|
||||||
events: "Ereignisse",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "Schema abrufen",
|
|
||||||
header_list: "Headerliste",
|
|
||||||
add_new: "Neu hinzufügen",
|
|
||||||
response: "Antwort",
|
|
||||||
query: "Abfrage",
|
|
||||||
queries: "Abfragen",
|
|
||||||
query_variables: "Variablen",
|
|
||||||
mutations: "Mutationen",
|
|
||||||
subscriptions: "Abonnements",
|
|
||||||
types: "Typen",
|
|
||||||
send: "Senden",
|
|
||||||
background: "Hintergrund",
|
|
||||||
color: "Farbe",
|
|
||||||
labels: "Bezeichner",
|
|
||||||
multi_color: "Mehrfarbig",
|
|
||||||
enabled: "Aktiviert",
|
|
||||||
disabled: "Deaktiviert",
|
|
||||||
proxy: "Proxy",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"Postwomans offizieller Proxy wird durch ApolloTV bereitgestellt.",
|
|
||||||
read_the: "Lies die",
|
|
||||||
apollotv_privacy_policy: "ApolloTV Datenschutzerklärung",
|
|
||||||
contact_us: "Kontaktiere uns",
|
|
||||||
connect: "Verbinden",
|
|
||||||
disconnect: "Trennen",
|
|
||||||
start: "Start",
|
|
||||||
stop: "Stopp"
|
|
||||||
};
|
|
||||||
277
lang/en-US.js
277
lang/en-US.js
@@ -1,277 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "Home",
|
|
||||||
realtime: "Realtime",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "Settings",
|
|
||||||
request: "Request",
|
|
||||||
install_pwa: "Install PWA",
|
|
||||||
support_us: "Support us",
|
|
||||||
tweet: "Tweet",
|
|
||||||
options: "Options",
|
|
||||||
communication: "Communication",
|
|
||||||
endpoint: "Endpoint",
|
|
||||||
schema: "Schema",
|
|
||||||
theme: "Theme",
|
|
||||||
subscribe: "Subscribe",
|
|
||||||
choose_language: "Choose Language",
|
|
||||||
shortcuts: "Shortcuts",
|
|
||||||
send_request: "Send Request",
|
|
||||||
save_to_collections: "Save to Collections",
|
|
||||||
copy_request_link: "Copy Request Link",
|
|
||||||
reset_request: "Reset Request",
|
|
||||||
support_us_on: "Support us on",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "PayPal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "JavaScript Code",
|
|
||||||
method: "Method",
|
|
||||||
path: "Path",
|
|
||||||
label: "Label",
|
|
||||||
content_type: "Content Type",
|
|
||||||
raw_input: "Raw input",
|
|
||||||
parameter_list: "Parameter List",
|
|
||||||
raw_request_body: "Raw Request Body",
|
|
||||||
show_code: "Show Code",
|
|
||||||
hide_code: "Hide Code",
|
|
||||||
show_prerequest_script: "Show Pre-Request Script",
|
|
||||||
hide_prerequest_script: "Hide Pre-Request Script",
|
|
||||||
authentication: "Authentication",
|
|
||||||
authentication_type: "Authentication type",
|
|
||||||
include_in_url: "Include in URL",
|
|
||||||
parameters: "Parameters",
|
|
||||||
expand_response: "Expand response",
|
|
||||||
collapse_response: "Collapse response",
|
|
||||||
hide_preview: "Hide Preview",
|
|
||||||
preview_html: "Preview HTML",
|
|
||||||
history: "History",
|
|
||||||
collections: "Collections",
|
|
||||||
environment: "Environment",
|
|
||||||
new_environment: "New Environment",
|
|
||||||
my_new_environment: "My New Environment",
|
|
||||||
edit_environment: "Edit Environment",
|
|
||||||
env_variable_list: "Variable List",
|
|
||||||
invalid_environment_name: "Please provide a valid name for the environment",
|
|
||||||
use_environment: "Use Environment",
|
|
||||||
add_one_variable: "(add at least one variable)",
|
|
||||||
import_curl: "Import cURL",
|
|
||||||
import: "Import",
|
|
||||||
generate_code: "Generate code",
|
|
||||||
request_type: "Request type",
|
|
||||||
generated_code: "Generated code",
|
|
||||||
status: "Status",
|
|
||||||
headers: "Headers",
|
|
||||||
websocket: "WebSocket",
|
|
||||||
waiting_for_connection: "(waiting for connection)",
|
|
||||||
message: "Message",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Server",
|
|
||||||
events: "Events",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "Get schema",
|
|
||||||
header_list: "Header list",
|
|
||||||
add_new: "Add new",
|
|
||||||
response: "Response",
|
|
||||||
query: "Query",
|
|
||||||
queries: "Queries",
|
|
||||||
query_variables: "Variables",
|
|
||||||
mutations: "Mutations",
|
|
||||||
subscriptions: "Subscriptions",
|
|
||||||
types: "Types",
|
|
||||||
send: "Send",
|
|
||||||
background: "Background",
|
|
||||||
color: "Color",
|
|
||||||
labels: "Labels",
|
|
||||||
multi_color: "Multi-color",
|
|
||||||
enabled: "Enabled",
|
|
||||||
disabled: "Disabled",
|
|
||||||
proxy: "Proxy",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"Postwoman's Official Proxy is hosted by ApolloTV.",
|
|
||||||
read_the: "Read the",
|
|
||||||
apollotv_privacy_policy: "ApolloTV privacy policy",
|
|
||||||
contact_us: "Contact us",
|
|
||||||
connect: "Connect",
|
|
||||||
disconnect: "Disconnect",
|
|
||||||
start: "Start",
|
|
||||||
stop: "Stop",
|
|
||||||
access_token: "Access Token",
|
|
||||||
token_list: "Token List",
|
|
||||||
get_token: "Get New Token",
|
|
||||||
manage_token: "Manage Access Token",
|
|
||||||
save_token: "Save Access Token",
|
|
||||||
use_token: "Use Saved Token",
|
|
||||||
request_token: "Request Token",
|
|
||||||
save_token_req: "Save Token Request",
|
|
||||||
manage_token_req: "Manage Token Request",
|
|
||||||
use_token_req: "Use Token Request",
|
|
||||||
token_req_name: "Request Name",
|
|
||||||
token_req_details: "Request Details",
|
|
||||||
token_name: "Token Name",
|
|
||||||
oidc_discovery_url: "OIDC Discovery URL",
|
|
||||||
auth_url: "Auth URL",
|
|
||||||
access_token_url: "Access Token URL",
|
|
||||||
client_id: "Client ID",
|
|
||||||
scope: "Scope",
|
|
||||||
state: "State",
|
|
||||||
token_req_list: "Token Request List",
|
|
||||||
no_path: "No path",
|
|
||||||
no_label: "No label",
|
|
||||||
prerequest_script: "Pre-Request Script",
|
|
||||||
no_prerequest_script: "No pre-request script",
|
|
||||||
search: "Search",
|
|
||||||
history_empty: "History is empty",
|
|
||||||
history_deleted: "History Deleted",
|
|
||||||
clear: "Clear",
|
|
||||||
clear_all: "Clear All",
|
|
||||||
cleared: "Cleared",
|
|
||||||
close: "Close",
|
|
||||||
sort: "Sort",
|
|
||||||
time: "Time",
|
|
||||||
duration: "Duration",
|
|
||||||
no_duration: "No duration",
|
|
||||||
show_more: "Show more",
|
|
||||||
hide_more: "Hide more",
|
|
||||||
collection: "Collection",
|
|
||||||
current_collection: "Current Collection",
|
|
||||||
select_collection: "Select a Collection",
|
|
||||||
create_collection: "Create a Collection",
|
|
||||||
new: "New",
|
|
||||||
import_export: "Import / Export",
|
|
||||||
more: "More",
|
|
||||||
folder: "Folder",
|
|
||||||
new_folder: "New Folder",
|
|
||||||
my_new_folder: "My New Folder",
|
|
||||||
folder_empty: "Folder is empty",
|
|
||||||
edit_folder: "Edit Folder",
|
|
||||||
edit: "Edit",
|
|
||||||
delete: "Delete",
|
|
||||||
deleted: "Deleted",
|
|
||||||
undo: "Undo",
|
|
||||||
collection_empty: "Collection is empty",
|
|
||||||
invalid_collection_name: "Please provide a valid name for the collection",
|
|
||||||
new_collection: "New Collection",
|
|
||||||
my_new_collection: "My New Collection",
|
|
||||||
edit_collection: "Edit Collection",
|
|
||||||
edit_request: "Edit Request",
|
|
||||||
save_request_as: "Save Request As",
|
|
||||||
export: "Export",
|
|
||||||
connecting_to: "Connecting to {name}...",
|
|
||||||
connected: "Connected",
|
|
||||||
connected_to: "Connected to {name}",
|
|
||||||
disconnected: "Disconnected",
|
|
||||||
disconnected_from: "Disconnected from {name}",
|
|
||||||
something_went_wrong: "Something went wrong!",
|
|
||||||
error_occurred: "An error has occurred.",
|
|
||||||
browser_support_sse:
|
|
||||||
"This browser doesn't seems to have Server Sent Events support.",
|
|
||||||
log: "Log",
|
|
||||||
no_url: "No URL",
|
|
||||||
run_query: "Run Query",
|
|
||||||
copy_query: "Copy Query",
|
|
||||||
kinda_dark: "Kinda Dark",
|
|
||||||
clearly_white: "Clearly White",
|
|
||||||
just_black: "Just Black",
|
|
||||||
auto_system: "Auto (system)",
|
|
||||||
green: "Green",
|
|
||||||
yellow: "Yellow",
|
|
||||||
pink: "Pink",
|
|
||||||
red: "Red",
|
|
||||||
purple: "Purple",
|
|
||||||
orange: "Orange",
|
|
||||||
cyan: "Cyan",
|
|
||||||
blue: "Blue",
|
|
||||||
loading: "Loading...",
|
|
||||||
fetching: "Fetching...",
|
|
||||||
waiting_send_req: "(waiting to send request)",
|
|
||||||
cancel: "Cancel",
|
|
||||||
save: "Save",
|
|
||||||
dismiss: "Dismiss",
|
|
||||||
are_you_sure: "Are you sure?",
|
|
||||||
yes: "Yes",
|
|
||||||
no: "No",
|
|
||||||
restore: "Restore",
|
|
||||||
add_star: "Add star",
|
|
||||||
remove_star: "Remove star",
|
|
||||||
nothing_found: "Nothing found",
|
|
||||||
replace_current: "Replace current",
|
|
||||||
replace_json: "Replace with JSON",
|
|
||||||
preserve_current: "Preserve current",
|
|
||||||
import_json: "Import from JSON",
|
|
||||||
download_file: "Download file",
|
|
||||||
upload_file: "Upload file",
|
|
||||||
copy_response: "Copy response",
|
|
||||||
copy_code: "Copy code",
|
|
||||||
copy_schema: "Copy Schema",
|
|
||||||
use_request: "Use request",
|
|
||||||
documentation: "Documentation",
|
|
||||||
docs: "Docs",
|
|
||||||
reset_default: "Reset to default",
|
|
||||||
fields: "FIELDS",
|
|
||||||
deprecated: "DEPRECATED",
|
|
||||||
add_one_header: "(add at least one header)",
|
|
||||||
add_one_parameter: "(add at least one parameter)",
|
|
||||||
header_count: "header {count}",
|
|
||||||
parameter_count: "parameter {count}",
|
|
||||||
variable_count: "variable {count}",
|
|
||||||
value_count: "value {count}",
|
|
||||||
send_request_first: "Send a request first",
|
|
||||||
generate_docs: "Generate Documentation",
|
|
||||||
generate_docs_message:
|
|
||||||
"Import any Postwoman Collection to Generate Documentation on-the-go.",
|
|
||||||
generate_docs_first: "Generate documentation first",
|
|
||||||
docs_generated: "Documentation generated",
|
|
||||||
import_collections: "Import collections",
|
|
||||||
optional: "(optional)",
|
|
||||||
json: "JSON",
|
|
||||||
none: "None",
|
|
||||||
username: "Username",
|
|
||||||
password: "Password",
|
|
||||||
token: "Token",
|
|
||||||
payload: "Payload",
|
|
||||||
choose_file: "Choose a file",
|
|
||||||
file_imported: "File imported",
|
|
||||||
import_failed: "Import failed",
|
|
||||||
f12_details: "(F12 for details)",
|
|
||||||
we_use_cookies: "We use cookies",
|
|
||||||
copied_to_clipboard: "Copied to clipboard",
|
|
||||||
finished_in: "Finished in {duration}ms",
|
|
||||||
check_console_details: "Check console for details.",
|
|
||||||
download_started: "Download started",
|
|
||||||
url_invalid_format: "URL is not formatted properly",
|
|
||||||
curl_invalid_format: "cURL is not formatted properly",
|
|
||||||
enable_proxy: "Try enabling Proxy",
|
|
||||||
complete_config_urls: "Please complete configuration urls.",
|
|
||||||
token_request_saved: "Token request saved",
|
|
||||||
donate_info1:
|
|
||||||
"If you have enjoyed the productivity of using Postwoman, consider donating as a sign of appreciation.",
|
|
||||||
donate_info2:
|
|
||||||
"You can support Postwoman development via the following methods:",
|
|
||||||
one_time_recurring: "One-time or recurring",
|
|
||||||
one_time: "One-time",
|
|
||||||
recurring: "Recurring",
|
|
||||||
wiki: "Wiki",
|
|
||||||
error: "Error",
|
|
||||||
go_home: "Go Home",
|
|
||||||
reload: "Reload",
|
|
||||||
enter_curl: "Enter cURL",
|
|
||||||
empty: "Empty",
|
|
||||||
extensions: "Extensions",
|
|
||||||
extensions_use_toggle:
|
|
||||||
"Use the browser extension to send requests (if present)",
|
|
||||||
extensions_info1: "Browser extension that simplifies access to Postwoman",
|
|
||||||
extensions_info2: "Get Postwoman browser extension!",
|
|
||||||
installed: "Installed",
|
|
||||||
login_with: "Login with",
|
|
||||||
logged_out: "Logged out",
|
|
||||||
logout: "Logout",
|
|
||||||
account: "Account",
|
|
||||||
sync: "Sync",
|
|
||||||
syncHistory: "History",
|
|
||||||
syncCollections: "Collections",
|
|
||||||
syncEnvironments: "Environments",
|
|
||||||
turn_on: "Turn on",
|
|
||||||
login_first: "Login first",
|
|
||||||
paste_a_note: "Paste a note",
|
|
||||||
import_from_sync: "Import from Sync",
|
|
||||||
notes: "Notes"
|
|
||||||
};
|
|
||||||
264
lang/es-ES.js
264
lang/es-ES.js
@@ -1,264 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "Inicio",
|
|
||||||
realtime: "Tiempo real",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "Ajustes",
|
|
||||||
request: "Petición",
|
|
||||||
install_pwa: "Instalar PWA",
|
|
||||||
support_us: "Ayúdanos",
|
|
||||||
tweet: "Tweet",
|
|
||||||
options: "Opciones",
|
|
||||||
communication: "Comunicación",
|
|
||||||
endpoint: "Endpoint",
|
|
||||||
schema: "Esquema",
|
|
||||||
theme: "Tema",
|
|
||||||
subscribe: "Subscribirse",
|
|
||||||
choose_language: "Seleccione un idioma",
|
|
||||||
shortcuts: "Atajos",
|
|
||||||
send_request: "Enviar petición",
|
|
||||||
save_to_collections: "Guardar en las Colecciones",
|
|
||||||
copy_request_link: "Copiar enlace de la petición",
|
|
||||||
reset_request: "Reiniciar Petición",
|
|
||||||
support_us_on: "Ayúdanos en",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "PayPal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "Código JavaScript",
|
|
||||||
method: "Método",
|
|
||||||
path: "Ruta",
|
|
||||||
label: "Etiqueta",
|
|
||||||
again: "De nuevo",
|
|
||||||
content_type: "Tipo de Contenido",
|
|
||||||
raw_input: "Datos sin Procesar",
|
|
||||||
parameter_list: "Lista de Parámetros",
|
|
||||||
raw_request_body: "Cuerpo de la Solicitud sin Procesar",
|
|
||||||
show_code: "Mostrar el código",
|
|
||||||
hide_code: "Ocultar el código",
|
|
||||||
show_prerequest_script: "Mostrar Script pre solicitud",
|
|
||||||
hide_prerequest_script: "Ocultar Script pre solicitud",
|
|
||||||
authentication: "Autenticación",
|
|
||||||
authentication_type: "Tipo de autenticación",
|
|
||||||
include_in_url: "Incluir en el URL",
|
|
||||||
parameters: "Parámetros",
|
|
||||||
expand_response: "Ampliar Respuesta",
|
|
||||||
collapse_response: "Contraer Respuesta",
|
|
||||||
hide_preview: "Ocultar la vista previa",
|
|
||||||
preview_html: "Vista Previa del HTML",
|
|
||||||
history: "Historial",
|
|
||||||
collections: "Colecciones",
|
|
||||||
import_curl: "Importar cURL",
|
|
||||||
import: "Importar",
|
|
||||||
generate_code: "Generar código",
|
|
||||||
request_type: "Tipo de Petición",
|
|
||||||
generated_code: "Código Generado",
|
|
||||||
status: "Estado",
|
|
||||||
headers: "Cabeceras",
|
|
||||||
websocket: "WebSocket",
|
|
||||||
waiting_for_connection: "(esperando por conexión)",
|
|
||||||
message: "Mensaje",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Servidor",
|
|
||||||
events: "Eventos",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "Obtener esquema",
|
|
||||||
header_list: "Lista de Cabeceras",
|
|
||||||
add_new: "Agregar nuevo",
|
|
||||||
response: "Respuesta",
|
|
||||||
query: "Consulta",
|
|
||||||
queries: "Consultas",
|
|
||||||
query_variables: "Variables",
|
|
||||||
mutations: "Mutaciones",
|
|
||||||
subscriptions: "Subscripciones",
|
|
||||||
types: "Tipos",
|
|
||||||
send: "Enviar",
|
|
||||||
background: "Fondo",
|
|
||||||
color: "Color",
|
|
||||||
labels: "Etiquetas",
|
|
||||||
multi_color: "Multicolor",
|
|
||||||
enabled: "Habilitado",
|
|
||||||
disabled: "Deshabilitado",
|
|
||||||
proxy: "Proxy",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"Proxy Oficial de Postwoman está hospedado en ApolloTV.",
|
|
||||||
read_the: "Leer la",
|
|
||||||
apollotv_privacy_policy: "Política de Privacidad de ApolloTV",
|
|
||||||
contact_us: "Contáctenos",
|
|
||||||
connect: "Conectar",
|
|
||||||
disconnect: "Desconectar",
|
|
||||||
start: "Comienzo",
|
|
||||||
stop: "Detener",
|
|
||||||
access_token: "Token de acceso",
|
|
||||||
token_list: "Lista de token",
|
|
||||||
get_token: "Obtener un nuevo token",
|
|
||||||
manage_token: "Gestionar el token de acceso",
|
|
||||||
save_token: "Guardar el token de acceso",
|
|
||||||
use_token: "Usar token guardado",
|
|
||||||
request_token: "Petición del token",
|
|
||||||
save_token_req: "Guardar la petición del token",
|
|
||||||
manage_token_req: "Gestionar la petición del token",
|
|
||||||
use_token_req: "Usar el token de la petición",
|
|
||||||
token_req_name: "Nombre de la petición",
|
|
||||||
token_req_details: "Petición de detalles",
|
|
||||||
token_name: "Nombre del token",
|
|
||||||
oidc_discovery_url: "URL de descubrimiento de OIDC",
|
|
||||||
auth_url: "URL de autenticación",
|
|
||||||
access_token_url: "URL de token de acceso",
|
|
||||||
client_id: "ID del cliente",
|
|
||||||
scope: "Alcance",
|
|
||||||
state: "Estado",
|
|
||||||
token_req_list: "Lista de solicitud de token",
|
|
||||||
no_path: "Sin ruta",
|
|
||||||
no_label: "Sin etiqueta",
|
|
||||||
prerequest_script: "Pre-Request Script",
|
|
||||||
no_prerequest_script: "Script sin pre-requisito",
|
|
||||||
search: "buscar historial",
|
|
||||||
history_empty: "Historial vacío",
|
|
||||||
history_deleted: "Historial borrado",
|
|
||||||
clear: "Limpiar",
|
|
||||||
clear_all: "Limpiar todo",
|
|
||||||
cleared: "Limpiado",
|
|
||||||
close: "Cerrar",
|
|
||||||
sort: "Ordenar",
|
|
||||||
time: "Tiempo",
|
|
||||||
duration: "Duración",
|
|
||||||
no_duration: "Sin duración",
|
|
||||||
show_more: "Mostrar más",
|
|
||||||
hide_more: "Ocultar más",
|
|
||||||
collection: "Colección",
|
|
||||||
current_collection: "Actual colección",
|
|
||||||
select_collection: "Seleccionar una colección",
|
|
||||||
create_collection: "Crear una colección",
|
|
||||||
new: "Nuevo",
|
|
||||||
import_export: "Importar / Exportar",
|
|
||||||
more: "Más",
|
|
||||||
folder: "Directorio",
|
|
||||||
new_folder: "Nuevo directorio",
|
|
||||||
my_new_folder: "Mi nuevo directorio",
|
|
||||||
folder_empty: "Directorio vacío",
|
|
||||||
edit_folder: "Editar directorio",
|
|
||||||
edit: "Editar",
|
|
||||||
delete: "Borrar",
|
|
||||||
deleted: "Borrado",
|
|
||||||
undo: "Deshacer",
|
|
||||||
collection_empty: "Colección vacía",
|
|
||||||
new_collection: "Nueva colección",
|
|
||||||
my_new_collection: "Mi nueva colección",
|
|
||||||
edit_collection: "Editar colección",
|
|
||||||
edit_request: "Editar petición",
|
|
||||||
save_request_as: "Guardar petición como",
|
|
||||||
export: "Exportar",
|
|
||||||
connecting_to: "Conectando a {name}...",
|
|
||||||
connected: "Conectado",
|
|
||||||
connected_to: "Conectado a {name}",
|
|
||||||
disconnected: "Desconectado",
|
|
||||||
disconnected_from: "Desconectado desde {name}",
|
|
||||||
something_went_wrong: "Algo ha salido mal!",
|
|
||||||
error_occurred: "Ha ocurrido un error.",
|
|
||||||
browser_support_sse:
|
|
||||||
"Este navegador parace no tener soporte a los eventos enviados desde el servidor.",
|
|
||||||
log: "Bitácora",
|
|
||||||
no_url: "Sin URL",
|
|
||||||
run_query: "Ejecutar consulta",
|
|
||||||
copy_query: "Copiar consulta",
|
|
||||||
kinda_dark: "Un poco oscúro",
|
|
||||||
clearly_white: "Claramento blanco",
|
|
||||||
just_black: "Solo Negro",
|
|
||||||
auto_system: "Autenticación (sistema)",
|
|
||||||
green: "Verde",
|
|
||||||
yellow: "Amarillo",
|
|
||||||
pink: "Rosado",
|
|
||||||
red: "Rojo",
|
|
||||||
purple: "Púrpura",
|
|
||||||
orange: "Anaranjado",
|
|
||||||
cyan: "Cian",
|
|
||||||
blue: "Azul",
|
|
||||||
loading: "Cargando...",
|
|
||||||
fetching: "Recuperando...",
|
|
||||||
waiting_send_req: "(esperando para enviar la petición)",
|
|
||||||
cancel: "Cancelar",
|
|
||||||
save: "Guardar",
|
|
||||||
dismiss: "Descartar",
|
|
||||||
are_you_sure: "Está seguro?",
|
|
||||||
yes: "Sí",
|
|
||||||
no: "No",
|
|
||||||
restore: "Restaurar",
|
|
||||||
add_star: "Agregar estrella",
|
|
||||||
remove_star: "Eliminar estrella",
|
|
||||||
nothing_found: "No se encontró nada",
|
|
||||||
replace_current: "Reemplaza el actual",
|
|
||||||
replace_json: "Reemplazar con JSON",
|
|
||||||
preserve_current: "Preservar el actual",
|
|
||||||
import_json: "Importar desde JSON",
|
|
||||||
download_file: "Descargar archivo",
|
|
||||||
upload_file: "Cargar archivo",
|
|
||||||
copy_response: "Copiar respuesta",
|
|
||||||
copy_code: "Copiar codigo",
|
|
||||||
copy_schema: "Copiar Esquema",
|
|
||||||
use_request: "Usar la petición",
|
|
||||||
documentation: "Documentación",
|
|
||||||
docs: "Documentos",
|
|
||||||
reset_default: "Reiniciar valores por defecto",
|
|
||||||
fields: "CAMPOS",
|
|
||||||
deprecated: "OBSOLETO",
|
|
||||||
add_one_header: "(agregar al menos una cabecera)",
|
|
||||||
add_one_parameter: "(agregar al menos un parámetro)",
|
|
||||||
header_count: "cabecera {count}",
|
|
||||||
parameter_count: "parámetro {count}",
|
|
||||||
variable_count: "variable {count}",
|
|
||||||
value_count: "valor {count}",
|
|
||||||
send_request_first: "Enviar primero la petición",
|
|
||||||
generate_docs: "Generar la Documentación",
|
|
||||||
generate_docs_message:
|
|
||||||
"Importar cualquier Colección de Postwoman para Generar la Documentación sobre la marcha.",
|
|
||||||
generate_docs_first: "Generar primero la documentación",
|
|
||||||
docs_generated: "Documentación generada",
|
|
||||||
import_collections: "Importar colecciones",
|
|
||||||
optional: "(opcional)",
|
|
||||||
json: "JSON",
|
|
||||||
none: "Nada",
|
|
||||||
username: "Nombre de usuario",
|
|
||||||
password: "Contrasaeña",
|
|
||||||
token: "Token",
|
|
||||||
payload: "Carga",
|
|
||||||
choose_file: "Seleccione un archivo",
|
|
||||||
file_imported: "Archivo imporado",
|
|
||||||
f12_details: "(F12 para ver detalles)",
|
|
||||||
we_use_cookies: "Usamos las cookies",
|
|
||||||
copied_to_clipboard: "Copiado al portapapeles",
|
|
||||||
finished_in: "Terminado en {duration}ms",
|
|
||||||
check_console_details: "Verifique la consola para más detalles.",
|
|
||||||
download_started: "Inició la descarga",
|
|
||||||
url_invalid_format: "La URL no está formateado apropiadamente",
|
|
||||||
curl_invalid_format: "El cURL no está formateado apropiadamente",
|
|
||||||
enable_proxy: "Pruebe habilitando el Proxy",
|
|
||||||
complete_config_urls: "Por favor, termine la configuración de las urls.",
|
|
||||||
token_request_saved: "La petición de tToken ha sido guardada",
|
|
||||||
donate_info1:
|
|
||||||
"Si le ha gustado su productividad usando Postwoman, considere hacer una donación como un signo de su apreciación.",
|
|
||||||
donate_info2:
|
|
||||||
"Puede ayudar al desarrollo de Postwoman mediante los siguientes métodos:",
|
|
||||||
one_time_recurring: "Una vez o recurrente",
|
|
||||||
one_time: "Una vez",
|
|
||||||
recurring: "Recurrente",
|
|
||||||
wiki: "Wiki",
|
|
||||||
error: "Error",
|
|
||||||
go_home: "Ir al inicio",
|
|
||||||
reload: "Recargar",
|
|
||||||
enter_curl: "Intruduzca cURL",
|
|
||||||
empty: "Vacío",
|
|
||||||
extensions: "Extensiones",
|
|
||||||
extensions_info1: "Extensión del navegador que simplifica el acceso a Postwoman",
|
|
||||||
extensions_info2: "Obtener la extensión del navegador de Postwoman!",
|
|
||||||
installed: "Instalado",
|
|
||||||
login_with: "Iniciar sesión con",
|
|
||||||
logged_out: "Sesión cerreda",
|
|
||||||
logout: "Cerrar sesión",
|
|
||||||
account: "Cuenta",
|
|
||||||
sync: "Sync",
|
|
||||||
syncHistory: "Historial",
|
|
||||||
syncCollections: "Colecciones",
|
|
||||||
turn_on: "Encender",
|
|
||||||
login_first: "Inicie sesión primero",
|
|
||||||
paste_a_collection: "Pegar una Colección",
|
|
||||||
import_from_sync: "Importar desde Sync"
|
|
||||||
};
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "خانه",
|
|
||||||
realtime: "بلادرنگ",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "تنظیمات",
|
|
||||||
request: "درخواست",
|
|
||||||
install_pwa: "نصب PWA",
|
|
||||||
support_us: "از ما حمایت کنید",
|
|
||||||
tweet: "Tweet",
|
|
||||||
options: "گزینهها",
|
|
||||||
communication: "ارتباط",
|
|
||||||
endpoint: "Endpoint",
|
|
||||||
schema: "Schema",
|
|
||||||
theme: "پوسته",
|
|
||||||
subscribe: "اشتراک",
|
|
||||||
choose_language: "تغییر زبان",
|
|
||||||
shortcuts: "میانبرها",
|
|
||||||
send_request: "ارسال درخواست",
|
|
||||||
save_to_collections: "ذخیره در کلکسیون",
|
|
||||||
copy_request_link: "کپی لینک درخواست",
|
|
||||||
reset_request: "بازنشانی درخواست",
|
|
||||||
support_us_on: "حمایت از ما از طریق",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "PayPal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "کد JavaScript",
|
|
||||||
method: "متد",
|
|
||||||
path: "مسیر",
|
|
||||||
label: "برچسب",
|
|
||||||
again: "دوباره",
|
|
||||||
content_type: "Content Type",
|
|
||||||
raw_input: "ورودی raw",
|
|
||||||
parameter_list: "لیست پارامترها",
|
|
||||||
raw_request_body: "Raw Request Body",
|
|
||||||
show_code: "نمایش کد",
|
|
||||||
hide_code: "عدم نمایش کد",
|
|
||||||
show_prerequest_script: "Show Pre-Request Script",
|
|
||||||
hide_prerequest_script: "Hide Pre-Request Script",
|
|
||||||
authentication: "Authentication",
|
|
||||||
authentication_type: "Authentication type",
|
|
||||||
include_in_url: "در URL گنجانده شود",
|
|
||||||
parameters: "پارامترها",
|
|
||||||
expand_response: "نمایش کامل پاسخ",
|
|
||||||
collapse_response: "نمایش مختصر پاسخ",
|
|
||||||
hide_preview: "مخفی کردن نمایش",
|
|
||||||
preview_html: "نمایش HTML",
|
|
||||||
history: "تاریخچه",
|
|
||||||
collections: "کلکسیون",
|
|
||||||
import_curl: "وارد کردن cURL",
|
|
||||||
import: "وارد کردن",
|
|
||||||
generate_code: "تولید کد",
|
|
||||||
request_type: "Request type",
|
|
||||||
generated_code: "کد تولید شده",
|
|
||||||
status: "Status",
|
|
||||||
headers: "Headers",
|
|
||||||
websocket: "WebSocket",
|
|
||||||
waiting_for_connection: "(منتظر برقراری اتصال)",
|
|
||||||
message: "پیام",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "سرور",
|
|
||||||
events: "رویداد",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "دریافت Schema",
|
|
||||||
header_list: "لیست Header",
|
|
||||||
add_new: "افزودن",
|
|
||||||
response: "Response",
|
|
||||||
query: "Query",
|
|
||||||
queries: "Queries",
|
|
||||||
query_variables: "Variables",
|
|
||||||
mutations: "Mutations",
|
|
||||||
subscriptions: "Subscriptions",
|
|
||||||
types: "Types",
|
|
||||||
send: "ارسال",
|
|
||||||
background: "پس زمینه",
|
|
||||||
color: "رنگ",
|
|
||||||
labels: "برچسبها",
|
|
||||||
multi_color: "چند رنگی",
|
|
||||||
enabled: "فعال",
|
|
||||||
disabled: "غیر فعال",
|
|
||||||
proxy: "پراکسی",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"پراکسی Postwoman برروی هاست ApolloTV قرار دارد.",
|
|
||||||
read_the: "بخوانید",
|
|
||||||
apollotv_privacy_policy: "خط مشی رازداری ApolloTV",
|
|
||||||
contact_us: "Contact us",
|
|
||||||
connect: "Connect",
|
|
||||||
disconnect: "Disconnect",
|
|
||||||
start: "Start",
|
|
||||||
stop: "Stop"
|
|
||||||
};
|
|
||||||
264
lang/fr-FR.js
264
lang/fr-FR.js
@@ -1,264 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "Accueil",
|
|
||||||
realtime: "Temps réel",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "Paramètres",
|
|
||||||
request: "Request",
|
|
||||||
install_pwa: "Installer la PWA",
|
|
||||||
support_us: "Nous supporter",
|
|
||||||
tweet: "Tweeter",
|
|
||||||
options: "Options",
|
|
||||||
communication: "Communication",
|
|
||||||
endpoint: "Endpoint",
|
|
||||||
schema: "Schéma",
|
|
||||||
theme: "Thème",
|
|
||||||
subscribe: "S'inscrire",
|
|
||||||
choose_language: "Sélectionner une langue",
|
|
||||||
shortcuts: "Raccourcis",
|
|
||||||
send_request: "Envoyer la requête",
|
|
||||||
save_to_collections: "Sauvegarder dans les collections",
|
|
||||||
copy_request_link: "Copier le lien de la requête",
|
|
||||||
reset_request: "Réinitialiser la requête",
|
|
||||||
support_us_on: "Supportez-nous sur",
|
|
||||||
open_collective: "Ouvrir Collective",
|
|
||||||
paypal: "PayPal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "Code JavaScript",
|
|
||||||
method: "Méthode",
|
|
||||||
path: "Chemin d'accès",
|
|
||||||
label: "Libellé",
|
|
||||||
again: "Réessayer",
|
|
||||||
content_type: "Type de contenu",
|
|
||||||
raw_input: "Texte brut",
|
|
||||||
parameter_list: "Liste des paramètres",
|
|
||||||
raw_request_body: "Corps de la requête en texte brut",
|
|
||||||
show_code: "Afficher le code",
|
|
||||||
hide_code: "Masquer le code",
|
|
||||||
show_prerequest_script: "Afficher le script de pré-requête",
|
|
||||||
hide_prerequest_script: "Masquer le script de pré-requête",
|
|
||||||
authentication: "Authentification",
|
|
||||||
authentication_type: "Type d'authentification",
|
|
||||||
include_in_url: "Inclure dans l'URL",
|
|
||||||
parameters: "Paramètres",
|
|
||||||
expand_response: "Agrandir la réponse",
|
|
||||||
collapse_response: "Réduire la réponse",
|
|
||||||
hide_preview: "Masquer la prévisualisation",
|
|
||||||
preview_html: "Prévisualiser le HTML",
|
|
||||||
history: "Historique",
|
|
||||||
collections: "Collections",
|
|
||||||
import_curl: "Importer en cURL",
|
|
||||||
importer: "Importer",
|
|
||||||
generate_code: "Générer le code",
|
|
||||||
request_type: "Type de requête",
|
|
||||||
generated_code: "Code généré",
|
|
||||||
status: "Statut",
|
|
||||||
headers: "En-têtes",
|
|
||||||
websocket: "WebSocket",
|
|
||||||
waiting_for_connection: "(en attente de connexion)",
|
|
||||||
message: "Message",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Serveur",
|
|
||||||
events: "Évènements",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "Récuperer le schéma",
|
|
||||||
header_list: "Liste d'en-têtes",
|
|
||||||
add_new: "Ajouter",
|
|
||||||
response: "Réponse",
|
|
||||||
query: "Requête",
|
|
||||||
queries: "Requêtes",
|
|
||||||
query_variables: "Variables",
|
|
||||||
mutations: "Mutations",
|
|
||||||
subscriptions: "Abonnements",
|
|
||||||
types: "Types",
|
|
||||||
send: "Envoyer",
|
|
||||||
background: "Arrière-plan",
|
|
||||||
color: "Couleur",
|
|
||||||
labels: "Libellés",
|
|
||||||
multi_color: "Multi-couleurs",
|
|
||||||
enabled: "Activé",
|
|
||||||
disabled: "Désactivé",
|
|
||||||
proxy: "Proxy",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"Le proxy officiel de Postwoman est hébergé par ApolloTV.",
|
|
||||||
read_the: "Lire la",
|
|
||||||
apollotv_privacy_policy: "politique de confidentialité ApolloTV",
|
|
||||||
contact_us: "Contactez nous",
|
|
||||||
connect: "Relier",
|
|
||||||
disconnect: "Déconnecter",
|
|
||||||
start: "Début",
|
|
||||||
stop: "Arrêtez",
|
|
||||||
access_token: "Token d'accès",
|
|
||||||
token_list: "Liste des Tokens",
|
|
||||||
get_token: "Obtenir un nouveau Token",
|
|
||||||
manage_token: "Gérer le Token",
|
|
||||||
save_token: "Sauvegarder le Token",
|
|
||||||
use_token: "Utiliser un Token",
|
|
||||||
request_token: "Demander un Token",
|
|
||||||
save_token_req: "Sauvegarder la requête ",
|
|
||||||
manage_token_req: "Gérer la requête avec Token",
|
|
||||||
use_token_req: "Utiliser la requête avec Token",
|
|
||||||
token_req_name: "Nom de la requête",
|
|
||||||
token_req_details: "Détails de la requête",
|
|
||||||
token_name: "Nom du Token",
|
|
||||||
oidc_discovery_url: "OIDC Discovery URL",
|
|
||||||
auth_url: "Auth URL",
|
|
||||||
access_token_url: "URL du Token d'accès",
|
|
||||||
client_id: "Client ID",
|
|
||||||
scope: "Scope",
|
|
||||||
state: "État",
|
|
||||||
token_req_list: "Liste des requêtes avec Token",
|
|
||||||
no_path: "Aucun chemin",
|
|
||||||
no_label: "Aucun label",
|
|
||||||
prerequest_script: "Pre-Request Script",
|
|
||||||
no_prerequest_script: "No pre-request script",
|
|
||||||
search: "Historique de la recherche",
|
|
||||||
history_empty: "L'historique est vide",
|
|
||||||
history_deleted: "Historique supprimé",
|
|
||||||
clear: "Nettoyer",
|
|
||||||
clear_all: "Tout nettoyer",
|
|
||||||
cleared: "Nettoyé",
|
|
||||||
close: "Fermer",
|
|
||||||
sort: "Trier",
|
|
||||||
time: "Temps",
|
|
||||||
duration: "Durée",
|
|
||||||
no_duration: "Aucune durée",
|
|
||||||
show_more: "Plus d'informations",
|
|
||||||
hide_more: "Moins d'informations",
|
|
||||||
collection: "Collection",
|
|
||||||
current_collection: "Collection Actuelle",
|
|
||||||
select_collection: "Selectionner une Collection",
|
|
||||||
create_collection: "Créer une Collection",
|
|
||||||
new: "Nouveau",
|
|
||||||
import_export: "Importer / Exporter",
|
|
||||||
more: "Plus",
|
|
||||||
folder: "Dossier",
|
|
||||||
new_folder: "Nouveau Dossier",
|
|
||||||
my_new_folder: "Mon Nouveau Dossier",
|
|
||||||
folder_empty: "Ce Dossier est vide",
|
|
||||||
edit_folder: "Éditer le Dossier",
|
|
||||||
edit: "Éditer",
|
|
||||||
delete: "Supprimer",
|
|
||||||
deleted: "Supprimé",
|
|
||||||
undo: "Annuler",
|
|
||||||
collection_empty: "Cette Collection est vide",
|
|
||||||
new_collection: "Nouvelle Collection",
|
|
||||||
my_new_collection: "Ma Nouvelle Collection",
|
|
||||||
edit_collection: "Éditer la Collection",
|
|
||||||
edit_request: "Éditer ma requête",
|
|
||||||
save_request_as: "Sauvegarder ma requête sous",
|
|
||||||
export: "Exporter",
|
|
||||||
connecting_to: "Connexion à {name}...",
|
|
||||||
connected: "Connecté",
|
|
||||||
connected_to: "Connecté à {name}",
|
|
||||||
disconnected: "Déconnecté",
|
|
||||||
disconnected_from: "Déconnecté sur {name}",
|
|
||||||
something_went_wrong: "Quelque chose n'a pas marché!",
|
|
||||||
error_occurred: "Une erreur s'est produite.",
|
|
||||||
browser_support_sse:
|
|
||||||
"Ce navigateur ne semble pas prendre en charge les événements envoyés par le serveur.",
|
|
||||||
log: "Log",
|
|
||||||
no_url: "Aucune URL",
|
|
||||||
run_query: "Lancer une recherche",
|
|
||||||
copy_query: "Copier la recherche",
|
|
||||||
kinda_dark: "Plutôt Sombre",
|
|
||||||
clearly_white: "Clairement Blanc",
|
|
||||||
just_black: "Seulement Noir",
|
|
||||||
auto_system: "Auth (système)",
|
|
||||||
green: "Vert",
|
|
||||||
yellow: "Jaune",
|
|
||||||
pink: "Rose",
|
|
||||||
red: "Rouge",
|
|
||||||
purple: "Violet",
|
|
||||||
orange: "Orange",
|
|
||||||
cyan: "Cyan",
|
|
||||||
blue: "Bleue",
|
|
||||||
loading: "Chargement...",
|
|
||||||
fetching: "Récupération...",
|
|
||||||
waiting_send_req: "(en attente de l'envoi de la demande)",
|
|
||||||
cancel: "Annuler",
|
|
||||||
save: "Sauvarder",
|
|
||||||
dismiss: "Dismiss",
|
|
||||||
are_you_sure: "Êtes-vous sûr?",
|
|
||||||
yes: "Oui",
|
|
||||||
no: "Non",
|
|
||||||
restore: "Restaurer",
|
|
||||||
add_star: "Ajouter une étoile",
|
|
||||||
remove_star: "Supprimer une étoile",
|
|
||||||
nothing_found: "Rien n'a été trouvé",
|
|
||||||
replace_current: "Remplacer l'actuel",
|
|
||||||
replace_json: "Replacer avec du JSON",
|
|
||||||
preserve_current: "Conserver l'actuel",
|
|
||||||
import_json: "Importer depuis un JSON",
|
|
||||||
download_file: "Télécharger un fichier",
|
|
||||||
upload_file: "Charger un fichier",
|
|
||||||
copy_response: "Copier la réponse",
|
|
||||||
copy_code: "Copier le code",
|
|
||||||
copy_schema: "Copier le Schéma",
|
|
||||||
use_request: "Utiliser cette requête",
|
|
||||||
documentation: "Documentation",
|
|
||||||
docs: "Docs",
|
|
||||||
reset_default: "Rétablir la valeur par défaut",
|
|
||||||
fields: "CHAMPS",
|
|
||||||
deprecated: "DÉPRÉCIÉ",
|
|
||||||
add_one_header: "(ajouter au moins un en-tête)",
|
|
||||||
add_one_parameter: "(ajouter au moins un paramètre)",
|
|
||||||
header_count: "{count} en-tête",
|
|
||||||
parameter_count: "{count} paramètre",
|
|
||||||
variable_count: "{count} variable",
|
|
||||||
value_count: "{count} valeur",
|
|
||||||
send_request_first: "Envoyez d'abord une requête",
|
|
||||||
generate_docs: "Genérer une Documentation",
|
|
||||||
generate_docs_message:
|
|
||||||
"Importer n'importe quelle collection de Postwoman pour générer de la documentation en déplacement.",
|
|
||||||
generate_docs_first: "Générer la documentation d'abord",
|
|
||||||
docs_generated: "Documentation générée",
|
|
||||||
import_collections: "Importer les collections",
|
|
||||||
optional: "(optionnel)",
|
|
||||||
json: "JSON",
|
|
||||||
none: "Aucun",
|
|
||||||
username: "Username",
|
|
||||||
password: "Password",
|
|
||||||
token: "Token",
|
|
||||||
payload: "Payload",
|
|
||||||
choose_file: "Choisir un fichier",
|
|
||||||
file_imported: "Fichier importé",
|
|
||||||
f12_details: "(F12 pour voir les détails)",
|
|
||||||
we_use_cookies: "Nous utilisons des cookies",
|
|
||||||
copied_to_clipboard: "Copié dans le presse-papier",
|
|
||||||
finished_in: "Fini en {duration}ms",
|
|
||||||
check_console_details: "Consultez la console pour plus de détails.",
|
|
||||||
download_started: "Téléchargement démarré",
|
|
||||||
url_invalid_format: "L'URL n'est pas formatée correctement",
|
|
||||||
curl_invalid_format: "cURL n'est pas formaté correctement",
|
|
||||||
enable_proxy: "Essayez en activant le Proxy",
|
|
||||||
complete_config_urls: "Veuillez compléter les urls de configuration.",
|
|
||||||
token_request_saved: "Requête de Token sauvegardé",
|
|
||||||
donate_info1:
|
|
||||||
"Si vous avez apprécié la productivité de l'utilisation de Postwoman, considérez le don comme un signe d'appréciation.",
|
|
||||||
donate_info2:
|
|
||||||
"Vous pouvez soutenir le développement de Postwoman par les méthodes suivantes :",
|
|
||||||
one_time_recurring: "Ponctuel ou récurrent",
|
|
||||||
one_time: "Une fois",
|
|
||||||
recurring: "Récurrent",
|
|
||||||
wiki: "Wiki",
|
|
||||||
error: "Erreur",
|
|
||||||
go_home: "Aller à l'accueil",
|
|
||||||
reload: "Recharger",
|
|
||||||
enter_curl: "Entrer cURL",
|
|
||||||
empty: "Vide",
|
|
||||||
extensions: "Extensions",
|
|
||||||
extensions_info1: "Extension pour navigateur qui simplifie l'accès à Postwoman",
|
|
||||||
extensions_info2: "Obtenez l'extension Postwoman pour navigateur !",
|
|
||||||
installed: "Installé",
|
|
||||||
login_with: "Se connecter avec",
|
|
||||||
logged_out: "Se déconnecter",
|
|
||||||
logout: "Déconnexion",
|
|
||||||
account: "Compte",
|
|
||||||
sync: "Synchroniser",
|
|
||||||
syncHistory: "Historique",
|
|
||||||
syncCollections: "Collections",
|
|
||||||
turn_on: "Activer",
|
|
||||||
login_first: "Se connecter d'abord",
|
|
||||||
paste_a_collection: "Coller une collection",
|
|
||||||
import_from_sync: "Importer depuis la synchronisation"
|
|
||||||
};
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "Beranda",
|
|
||||||
realtime: "Waktu Nyata",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "Pengaturan",
|
|
||||||
request: "Permintaan",
|
|
||||||
install_pwa: "Pasang PWA",
|
|
||||||
support_us: "Dukung kami",
|
|
||||||
tweet: "Cuitkan",
|
|
||||||
options: "Opsi",
|
|
||||||
communication: "Komunikasi",
|
|
||||||
endpoint: "Titik Akhir",
|
|
||||||
schema: "Skema",
|
|
||||||
theme: "Tema",
|
|
||||||
subscribe: "Berlangganan",
|
|
||||||
choose_language: "Pilih Bahasa",
|
|
||||||
shortcuts: "Pintasan",
|
|
||||||
send_request: "Kirim Permintaan",
|
|
||||||
save_to_collections: "Simpan ke Koleksi",
|
|
||||||
copy_request_link: "Salin Tautan Permintaan",
|
|
||||||
reset_request: "Atur Ulang Permintaan",
|
|
||||||
support_us_on: "Dukung kami di",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "Paypal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "Kode Javascript",
|
|
||||||
method: "Metode",
|
|
||||||
path: "Lintasan",
|
|
||||||
label: "Label",
|
|
||||||
again: "Lagi",
|
|
||||||
content_type: "Jenis Konten",
|
|
||||||
raw_input: "Masukan mentah",
|
|
||||||
parameter_list: "Daftar parameter",
|
|
||||||
raw_request_body: "Badan Permintaan Mentah",
|
|
||||||
show_code: "Tampilkan Kode",
|
|
||||||
hide_code: "Sembunyikan Kode",
|
|
||||||
show_prerequest_script: "Tampilkan Skrip Pra-Permintaan",
|
|
||||||
hide_prerequest_script: "Sembunyikan Skrip Pra-Permintaan",
|
|
||||||
authentication: "Autentikasi",
|
|
||||||
authentication_type: "Jenis Autentikasi",
|
|
||||||
include_in_url: "Sertakan di URL",
|
|
||||||
parameters: "Parameter",
|
|
||||||
expand_response: "Bentangkan Balasan",
|
|
||||||
collapse_response: "Ciutkan Balasan",
|
|
||||||
hide_preview: "Sembunyikan Pratinjau",
|
|
||||||
preview_html: "Pratinjau HTML",
|
|
||||||
history: "Riwayat",
|
|
||||||
collections: "Koleksi",
|
|
||||||
import_curl: "Impor cURL",
|
|
||||||
import: "Impor",
|
|
||||||
generate_code: "Hasilkan kode",
|
|
||||||
request_type: "Jenis permintaan",
|
|
||||||
generated_code: "Kode yang dihasilkan",
|
|
||||||
status: "Status",
|
|
||||||
headers: "Header",
|
|
||||||
websocket: "WebSocket",
|
|
||||||
waiting_for_connection: "(Menunggu sambungan)",
|
|
||||||
message: "Pesan",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Peladen",
|
|
||||||
events: "Kejadian",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "Ambil skema",
|
|
||||||
header_list: "Daftar header",
|
|
||||||
add_new: "Tambah baru",
|
|
||||||
response: "Balasan",
|
|
||||||
query: "Kueri",
|
|
||||||
queries: "Kueri",
|
|
||||||
query_variables: "Variables",
|
|
||||||
mutations: "Mutasi",
|
|
||||||
subscriptions: "Langganan",
|
|
||||||
types: "Jenis",
|
|
||||||
send: "Kirim",
|
|
||||||
background: "Latar belakang",
|
|
||||||
color: "Warna",
|
|
||||||
labels: "Label",
|
|
||||||
multi_color: "Warna beragam",
|
|
||||||
enabled: "diaktifkan",
|
|
||||||
disabled: "dinonaktifkan",
|
|
||||||
proxy: "Proksi",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"Proksi Resmi Postwoman dalam penginangan ApolloTV.",
|
|
||||||
read_the: "Bacalah",
|
|
||||||
apollotv_privacy_policy: "kebijakan privasi ApolloTV",
|
|
||||||
contact_us: "Hubungi kami",
|
|
||||||
connect: "Menghubungkan",
|
|
||||||
disconnect: "Memutuskan",
|
|
||||||
start: "Mulai",
|
|
||||||
stop: "Berhenti"
|
|
||||||
};
|
|
||||||
245
lang/ja-JP.js
245
lang/ja-JP.js
@@ -1,245 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "ホーム",
|
|
||||||
realtime: "リアルタイム",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "設定",
|
|
||||||
request: "リクエスト",
|
|
||||||
install_pwa: "PWAをインストール",
|
|
||||||
support_us: "寄付",
|
|
||||||
tweet: "ツイート",
|
|
||||||
options: "オプション",
|
|
||||||
communication: "通信",
|
|
||||||
endpoint: "エンドポイント",
|
|
||||||
schema: "スキーマ",
|
|
||||||
theme: "テーマ",
|
|
||||||
subscribe: "登録",
|
|
||||||
choose_language: "言語の選択",
|
|
||||||
shortcuts: "ショートカット",
|
|
||||||
send_request: "リクエストを送信",
|
|
||||||
save_to_collections: "コレクションに保存",
|
|
||||||
copy_request_link: "リクエストURLをコピー",
|
|
||||||
reset_request: "リクエストをリセット",
|
|
||||||
support_us_on: "以下より寄付",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "PayPal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "JavaScriptコード",
|
|
||||||
method: "メソッド",
|
|
||||||
path: "パス",
|
|
||||||
label: "ラベル",
|
|
||||||
again: "",
|
|
||||||
content_type: "Content Type",
|
|
||||||
raw_input: "Raw入力",
|
|
||||||
parameter_list: "パラメータリスト",
|
|
||||||
raw_request_body: "Rawリクエストボディー",
|
|
||||||
show_code: "コードを表示",
|
|
||||||
hide_code: "コードを非表示",
|
|
||||||
show_prerequest_script: "プレリクエストスクリプトを表示",
|
|
||||||
hide_prerequest_script: "プレリクエストスクリプトを非表示",
|
|
||||||
authentication: "認証",
|
|
||||||
authentication_type: "認証タイプ",
|
|
||||||
include_in_url: "URLに含む",
|
|
||||||
parameters: "パラメータ",
|
|
||||||
expand_response: "レスポンスを広げる",
|
|
||||||
collapse_response: "レスポンスを狭める",
|
|
||||||
hide_preview: "プレビューしない",
|
|
||||||
preview_html: "HTMLプレビュー表示",
|
|
||||||
history: "履歴",
|
|
||||||
collections: "コレクション",
|
|
||||||
import_curl: "cURLをインポート",
|
|
||||||
import: "インポート",
|
|
||||||
generate_code: "コード生成",
|
|
||||||
request_type: "リクエストタイプ",
|
|
||||||
generated_code: "生成されたコード",
|
|
||||||
status: "ステータス",
|
|
||||||
headers: "ヘッダー",
|
|
||||||
websocket: "ウェブソケット",
|
|
||||||
waiting_for_connection: "(接続待ち)",
|
|
||||||
message: "メッセージ",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "サーバ",
|
|
||||||
events: "イベント",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "スキーマを取得",
|
|
||||||
header_list: "ヘッダーリスト",
|
|
||||||
add_new: "追加",
|
|
||||||
response: "レスポンス",
|
|
||||||
query: "クエリ",
|
|
||||||
queries: "クエリ",
|
|
||||||
query_variables: "変数",
|
|
||||||
mutations: "ミューテーション",
|
|
||||||
subscriptions: "サブスクリプション",
|
|
||||||
types: "タイプ",
|
|
||||||
send: "送信",
|
|
||||||
background: "背景",
|
|
||||||
color: "色",
|
|
||||||
labels: "ラベル",
|
|
||||||
multi_color: "マルチカラー",
|
|
||||||
enabled: "有効",
|
|
||||||
disabled: "無効",
|
|
||||||
proxy: "プロキシ",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"Postwomanの公式プロキシは、Apollo TVがホストしています。",
|
|
||||||
read_the: "プライバシーポリシー",
|
|
||||||
apollotv_privacy_policy: "を読む",
|
|
||||||
contact_us: "お問い合わせ",
|
|
||||||
connect: "接続",
|
|
||||||
disconnect: "切断",
|
|
||||||
start: "開始",
|
|
||||||
stop: "停止",
|
|
||||||
access_token: "アクセストークン",
|
|
||||||
token_list: "トークンリスト",
|
|
||||||
get_token: "新しいトークンを取得",
|
|
||||||
manage_token: "アクセストークンを管理",
|
|
||||||
save_token: "アクセストークンを保存",
|
|
||||||
use_token: "アクセストークンを使用",
|
|
||||||
request_token: "トークンをリクエスト",
|
|
||||||
save_token_req: "トークンリクエストを保存",
|
|
||||||
manage_token_req: "トークンリクエストを管理",
|
|
||||||
use_token_req: "トークンリクエストを使用",
|
|
||||||
token_req_name: "リクエスト名",
|
|
||||||
token_req_details: "リクエスト詳細",
|
|
||||||
token_name: "トークン名",
|
|
||||||
oidc_discovery_url: "OIDC Discovery URL",
|
|
||||||
auth_url: "認証URL",
|
|
||||||
access_token_url: "アクセストークンURL",
|
|
||||||
client_id: "クライアントID",
|
|
||||||
scope: "スコープ",
|
|
||||||
state: "ステート",
|
|
||||||
token_req_list: "トークンリクエストリスト",
|
|
||||||
no_path: "パス無し",
|
|
||||||
no_label: "ラベル無し",
|
|
||||||
prerequest_script: "プレリクエストスクリプト",
|
|
||||||
no_prerequest_script: "プレリクエストスクリプト無し",
|
|
||||||
search: "検索履歴",
|
|
||||||
history_empty: "履歴が空です",
|
|
||||||
history_deleted: "履歴が削除された",
|
|
||||||
clear: "クリア",
|
|
||||||
clear_all: "全てクリア",
|
|
||||||
cleared: "クリアされた",
|
|
||||||
close: "閉じる",
|
|
||||||
sort: "ソート",
|
|
||||||
time: "時間",
|
|
||||||
duration: "期間",
|
|
||||||
no_duration: "期間なし",
|
|
||||||
show_more: "もっと表示する",
|
|
||||||
hide_more: "隠す",
|
|
||||||
collection: "コレクション",
|
|
||||||
current_collection: "現在のコレクション",
|
|
||||||
select_collection: "コレクションを選択",
|
|
||||||
create_collection: "コレクションを作成",
|
|
||||||
new: "新規",
|
|
||||||
import_export: "インポート・エクスポート",
|
|
||||||
more: "More",
|
|
||||||
folder: "フォルダ",
|
|
||||||
new_folder: "新しいフォルダー",
|
|
||||||
my_new_folder: "私の新しいフォルダー",
|
|
||||||
folder_empty: "フォルダーが空です",
|
|
||||||
edit_folder: "フォルダーを編集",
|
|
||||||
edit: "編集",
|
|
||||||
delete: "削除",
|
|
||||||
deleted: "削除された",
|
|
||||||
undo: "元に戻す",
|
|
||||||
collection_empty: "コレクションが空です",
|
|
||||||
new_collection: "新しいコレクション",
|
|
||||||
my_new_collection: "私の新しいコレクション",
|
|
||||||
edit_collection: "コレクションを編集",
|
|
||||||
edit_request: "リクエストを編集",
|
|
||||||
save_request_as: "名前を付けてリクエストを保存",
|
|
||||||
export: "エクスポート",
|
|
||||||
connecting_to: "{name}に接続中...",
|
|
||||||
connected: "接続した",
|
|
||||||
connected_to: "{name}に接続した",
|
|
||||||
disconnected: "切断された",
|
|
||||||
disconnected_from: "{name}から切断された",
|
|
||||||
something_went_wrong: "何かの問題が起きた",
|
|
||||||
error_occurred: "エラーが発生した",
|
|
||||||
browser_support_sse: "このブラウザはサーバー送信イベントのサポートがないようです。",
|
|
||||||
log: "ログ",
|
|
||||||
no_url: "URL無し",
|
|
||||||
run_query: "クエリを実行",
|
|
||||||
copy_query: "クエリをコピー",
|
|
||||||
kinda_dark: "ちょっと暗い",
|
|
||||||
clearly_white: "明らかに白",
|
|
||||||
just_black: "ただの黒",
|
|
||||||
auto_system: "オート(システム)",
|
|
||||||
green: "緑",
|
|
||||||
yellow: "黄",
|
|
||||||
pink: "ピンク",
|
|
||||||
red: "赤",
|
|
||||||
purple: "紫",
|
|
||||||
orange: "オレンジ",
|
|
||||||
cyan: "シヤン",
|
|
||||||
blue: "青",
|
|
||||||
loading: "ロード中...",
|
|
||||||
fetching: "フェッチ中...",
|
|
||||||
waiting_send_req: "(リクエスト送信待ち)",
|
|
||||||
cancel: "キャンセル",
|
|
||||||
save: "保存",
|
|
||||||
dismiss: "Dismiss",
|
|
||||||
are_you_sure: "よろしいですか?",
|
|
||||||
yes: "はい",
|
|
||||||
no: "いいえ",
|
|
||||||
restore: "リストア",
|
|
||||||
add_star: "星を付ける",
|
|
||||||
remove_star: "星を外す",
|
|
||||||
nothing_found: "何も見つからない",
|
|
||||||
replace_current: "置換",
|
|
||||||
replace_json: "JSONに置換",
|
|
||||||
preserve_current: "保持",
|
|
||||||
import_json: "JSONをインポート",
|
|
||||||
download_file: "ファイルをダウンロード",
|
|
||||||
upload_file: "ファイルをアップロード",
|
|
||||||
copy_response: "レスポンスをコピー",
|
|
||||||
copy_code: "コードをコピー",
|
|
||||||
copy_schema: "スキーマをコピー",
|
|
||||||
use_request: "リクエストを使用",
|
|
||||||
documentation: "ドキュメンテーション",
|
|
||||||
docs: "ドキュメント",
|
|
||||||
reset_default: "デフォルトにリセット",
|
|
||||||
fields: "FIELDS",
|
|
||||||
deprecated: "DEPRECATED",
|
|
||||||
add_one_header: "(ヘッダーを少なくとも1つ追加してください)",
|
|
||||||
add_one_parameter: "(パラメータを少なくとも1つ追加してください)",
|
|
||||||
header_count: "ヘッダー {count}",
|
|
||||||
parameter_count: "パラメータ {count}",
|
|
||||||
variable_count: "変数 {count}",
|
|
||||||
value_count: "値 {count}",
|
|
||||||
send_request_first: "リクエストを先に送信してください",
|
|
||||||
generate_docs: "ドキュメンテーションを生成",
|
|
||||||
generate_docs_message: "Postwomanのコレクションをインポートし、直ちにドキュメンテーションを生成",
|
|
||||||
generate_docs_first: "ドキュメントを先に生成してください",
|
|
||||||
docs_generated: "ドキュメンテーションを生成した",
|
|
||||||
import_collections: "コレクションをインポート",
|
|
||||||
optional: "(オプション)",
|
|
||||||
json: "JSON",
|
|
||||||
none: "なし",
|
|
||||||
username: "ユーザー名",
|
|
||||||
password: "パスワード",
|
|
||||||
token: "トークン",
|
|
||||||
payload: "ペイロード",
|
|
||||||
choose_file: "ファイルを選択",
|
|
||||||
file_imported: "ファイルをインポートした",
|
|
||||||
f12_details: "(F12を押して詳細を確認してください)",
|
|
||||||
we_use_cookies: "クッキーを使用します。",
|
|
||||||
copied_to_clipboard: "クリップボードにコピーした",
|
|
||||||
finished_in: "{duration}msで終了した",
|
|
||||||
check_console_details: "コンソールより詳細を確認してください",
|
|
||||||
download_started: "ダウンロードを開始した",
|
|
||||||
url_invalid_format: "URLが正しくフォーマットされていない",
|
|
||||||
curl_invalid_format: "cURLが正しくフォーマットされていない",
|
|
||||||
enable_proxy: "プロキシを有効にしてみてください",
|
|
||||||
complete_config_urls: "設定URLsを入力してください",
|
|
||||||
token_request_saved: "トークンリクエストを保存した",
|
|
||||||
donate_info1: "Postwomanを非常に役に立つと思われる場合、感謝の印として寄付のご検討をお願いします。",
|
|
||||||
donate_info2: "以下の方法でPostwomanの開発をサポートできます:",
|
|
||||||
one_time_recurring: "一度又は定期的",
|
|
||||||
one_time: "一度",
|
|
||||||
recurring: "定期的",
|
|
||||||
wiki: "Wiki",
|
|
||||||
error: "エラー",
|
|
||||||
go_home: "ホームに戻る",
|
|
||||||
reload: "リロード",
|
|
||||||
enter_curl: "cURLを入力",
|
|
||||||
empty: "空"
|
|
||||||
};
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "Home",
|
|
||||||
realtime: "Tempo real",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "Configurações",
|
|
||||||
request: "Request",
|
|
||||||
install_pwa: "Instalar PWA",
|
|
||||||
support_us: "Nos ajude",
|
|
||||||
tweet: "Tweet",
|
|
||||||
options: "Opções",
|
|
||||||
communication: "Comunicação",
|
|
||||||
endpoint: "Endpoint",
|
|
||||||
schema: "Schema",
|
|
||||||
theme: "Tema",
|
|
||||||
subscribe: "Subscribe",
|
|
||||||
choose_language: "Escolher idioma",
|
|
||||||
shortcuts: "Atalhos",
|
|
||||||
send_request: "Enviar request",
|
|
||||||
save_to_collections: "Salvar nas coleções",
|
|
||||||
copy_request_link: "Copiar link da request",
|
|
||||||
reset_request: "Reiniciar request",
|
|
||||||
support_us_on: "Nos ajude no",
|
|
||||||
open_collective: "Abrir coletivamente",
|
|
||||||
paypal: "Paypal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "Codigo JavaScript",
|
|
||||||
method: "Método",
|
|
||||||
path: "Caminho",
|
|
||||||
label: "Label",
|
|
||||||
again: "Novamente",
|
|
||||||
content_type: "Content Type",
|
|
||||||
raw_input: "Raw input",
|
|
||||||
parameter_list: "Lista de parâmetros",
|
|
||||||
raw_request_body: "Raw request body",
|
|
||||||
show_code: "Mostrar código",
|
|
||||||
hide_code: "Esconder código",
|
|
||||||
show_prerequest_script: "Mostrar script de pré-request",
|
|
||||||
hide_prerequest_script: "Esconder script de pré-request",
|
|
||||||
authentication: "Autenticação",
|
|
||||||
authentication_type: "Tipo de autenticação",
|
|
||||||
include_in_url: "Incluir na url",
|
|
||||||
parameters: "Parâmetros",
|
|
||||||
expand_response: "Expandir response",
|
|
||||||
collapse_response: "Esconder response",
|
|
||||||
hide_preview: "Esconder preview",
|
|
||||||
preview_html: "Preview html",
|
|
||||||
history: "Histórico",
|
|
||||||
collections: "Coleções",
|
|
||||||
import_curl: "Importar curl",
|
|
||||||
import: "Importar",
|
|
||||||
generate_code: "Gerar código",
|
|
||||||
request_type: "Tipo de request",
|
|
||||||
generated_code: "Código gerado",
|
|
||||||
status: "Status",
|
|
||||||
headers: "Headers",
|
|
||||||
websocket: "Websocket",
|
|
||||||
waiting_for_connection: "(aguardando conexão)",
|
|
||||||
message: "Mensagem",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Servidor",
|
|
||||||
events: "Eventos",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "Get schema",
|
|
||||||
header_list: "Lista de headers",
|
|
||||||
add_new: "Adicionar novo",
|
|
||||||
response: "Response",
|
|
||||||
query: "Query",
|
|
||||||
queries: "Queries",
|
|
||||||
query_variables: "Variáveis",
|
|
||||||
mutations: "Mutações",
|
|
||||||
subscriptions: "Assinaturas",
|
|
||||||
types: "Tipos",
|
|
||||||
send: "Enviar",
|
|
||||||
background: "Fundo",
|
|
||||||
color: "Cor",
|
|
||||||
labels: "Labels",
|
|
||||||
multi_color: "Multi cor",
|
|
||||||
enabled: "Ativado",
|
|
||||||
disabled: "Desativado",
|
|
||||||
proxy: "Proxy",
|
|
||||||
postwoman_official_proxy_hosting: "Postwoman's alojamento proxy oficial",
|
|
||||||
read_the: "Leia o",
|
|
||||||
apollotv_privacy_policy: "ApolloTV Política de Privacidade",
|
|
||||||
contact_us: "Contate-Nos",
|
|
||||||
connect: "Conectar",
|
|
||||||
disconnect: "Desconectar",
|
|
||||||
start: "Começar",
|
|
||||||
stop: "Pare"
|
|
||||||
};
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "Ana Sayfa",
|
|
||||||
realtime: "Realtime",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "Ayarlar",
|
|
||||||
request: "İstek",
|
|
||||||
install_pwa: "PWA yükle",
|
|
||||||
support_us: "Bize destek ol",
|
|
||||||
tweet: "Tweet",
|
|
||||||
options: "Options",
|
|
||||||
communication: "İletişim",
|
|
||||||
endpoint: "Endpoint",
|
|
||||||
schema: "Taslak",
|
|
||||||
theme: "Tema",
|
|
||||||
subscribe: "Abonelik",
|
|
||||||
choose_language: "Dil seç",
|
|
||||||
shortcuts: "Kısayollar",
|
|
||||||
send_request: "İstek gönder",
|
|
||||||
save_to_collections: "Koleksiyonları kaydet",
|
|
||||||
copy_request_link: "İstek adresini kopyala",
|
|
||||||
reset_request: "İstekleri resetle",
|
|
||||||
support_us_on: "Bizi destekle",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "PayPal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "JavaScript code",
|
|
||||||
method: "Metot",
|
|
||||||
path: "Yol",
|
|
||||||
label: "Etiket",
|
|
||||||
again: "Yeniden",
|
|
||||||
content_type: "İçerik tipi",
|
|
||||||
raw_input: "Raw giriş",
|
|
||||||
parameter_list: "Parametre listesi",
|
|
||||||
raw_request_body: "Raw istek içeriği",
|
|
||||||
show_code: "Kodu göster",
|
|
||||||
hide_code: "Kodu gizle",
|
|
||||||
show_prerequest_script: "Pre-Request scriptini göster",
|
|
||||||
hide_prerequest_script: "Pre-Request scriptini gizle",
|
|
||||||
authentication: "Authentication",
|
|
||||||
authentication_type: "Authentication tipi",
|
|
||||||
include_in_url: "URL'den içeri aktar",
|
|
||||||
parameters: "Parametre",
|
|
||||||
expand_response: "Cevabı genişlet",
|
|
||||||
collapse_response: "Cevap daralt",
|
|
||||||
hide_preview: "Görüntülemeyi gizle",
|
|
||||||
preview_html: "HTML formatında görüntüle",
|
|
||||||
history: "Geçmiş",
|
|
||||||
collections: "Koleksiyonlar",
|
|
||||||
import_curl: "cURL içeri aktar",
|
|
||||||
import: "İçeri Aktar",
|
|
||||||
generate_code: "Kod Üret",
|
|
||||||
request_type: "Request tipi",
|
|
||||||
generated_code: "Üretilen Kod",
|
|
||||||
status: "Durum",
|
|
||||||
headers: "Headers",
|
|
||||||
websocket: "WebSocket",
|
|
||||||
waiting_for_connection: "(esperando por conexión)",
|
|
||||||
message: "Mesaj",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Server",
|
|
||||||
events: "Events",
|
|
||||||
url: "URL",
|
|
||||||
get_schema: "Taslak",
|
|
||||||
header_list: "Header listesi",
|
|
||||||
add_new: "Yeni Ekle",
|
|
||||||
response: "Cevap",
|
|
||||||
query: "Sorgu",
|
|
||||||
queries: "Sorgular",
|
|
||||||
query_variables: "Değişkenler",
|
|
||||||
mutations: "Değişimler",
|
|
||||||
subscriptions: "Aboneler",
|
|
||||||
types: "Tipler",
|
|
||||||
send: "Gönder",
|
|
||||||
background: "Arka Plan",
|
|
||||||
color: "Renk",
|
|
||||||
labels: "Etiketler",
|
|
||||||
multi_color: "Çoklu renk",
|
|
||||||
enabled: "Aktif",
|
|
||||||
disabled: "Aktif değil",
|
|
||||||
proxy: "Proxy",
|
|
||||||
postwoman_official_proxy_hosting:
|
|
||||||
"Proxy Oficial de Postwoman está hospedado en ApolloTV.",
|
|
||||||
read_the: "Leer la",
|
|
||||||
apollotv_privacy_policy: "ApolloTV gizlilik politikaları",
|
|
||||||
contact_us: "Bizimle iletişime geçin",
|
|
||||||
connect: "Bağlan",
|
|
||||||
disconnect: "Kesmek",
|
|
||||||
start: "Başla",
|
|
||||||
stop: "Durdurmak"
|
|
||||||
};
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
export default {
|
|
||||||
home: "主页",
|
|
||||||
realtime: "长连接",
|
|
||||||
graphql: "GraphQL",
|
|
||||||
settings: "设置",
|
|
||||||
request: "请求",
|
|
||||||
install_pwa: "安装PWA应用",
|
|
||||||
support_us: "支持我们",
|
|
||||||
tweet: "推特",
|
|
||||||
options: "选项",
|
|
||||||
communication: "联系我们",
|
|
||||||
endpoint: "服务端点",
|
|
||||||
schema: "模式",
|
|
||||||
theme: "主题",
|
|
||||||
subscribe: "订阅",
|
|
||||||
choose_language: "选择语言",
|
|
||||||
shortcuts: "快捷键",
|
|
||||||
send_request: "发送请求",
|
|
||||||
save_to_collections: "保存到收藏夹",
|
|
||||||
copy_request_link: "复制请求链接",
|
|
||||||
reset_request: "重置请求",
|
|
||||||
support_us_on: "支持我们",
|
|
||||||
open_collective: "Open Collective",
|
|
||||||
paypal: "Paypal",
|
|
||||||
patreon: "Patreon",
|
|
||||||
javascript_code: "JavaScript代码",
|
|
||||||
method: "方法",
|
|
||||||
path: "路径",
|
|
||||||
label: "标签",
|
|
||||||
again: "重试",
|
|
||||||
content_type: "内容类型",
|
|
||||||
raw_input: "raw数据",
|
|
||||||
parameter_list: "参数列表",
|
|
||||||
raw_request_body: "raw请求主体",
|
|
||||||
show_code: "显示代码",
|
|
||||||
hide_code: "隐藏代码",
|
|
||||||
show_prerequest_script: "显示预请求脚本",
|
|
||||||
hide_prerequest_script: "隐藏预请求脚本",
|
|
||||||
authentication: "认证方式",
|
|
||||||
authentication_type: "认证类型",
|
|
||||||
include_in_url: "包含在URL中",
|
|
||||||
parameters: "参数",
|
|
||||||
expand_response: "展开显示响应内容",
|
|
||||||
collapse_response: "折叠显示响应内容",
|
|
||||||
hide_preview: "隐藏预览",
|
|
||||||
preview_html: "预览HTML",
|
|
||||||
history: "历史记录",
|
|
||||||
collections: "收藏夹",
|
|
||||||
import_curl: "批量导入",
|
|
||||||
import: "导入",
|
|
||||||
generate_code: "生成代码",
|
|
||||||
request_type: "请求类型",
|
|
||||||
generated_code: "生成的代码",
|
|
||||||
status: "状态码",
|
|
||||||
headers: "请求头",
|
|
||||||
websocket: "Websocket",
|
|
||||||
waiting_for_connection: "(等待连接)",
|
|
||||||
message: "消息内容",
|
|
||||||
sse: "SSE",
|
|
||||||
server: "Server",
|
|
||||||
events: "事件",
|
|
||||||
url: "地址",
|
|
||||||
get_schema: "获取模式",
|
|
||||||
header_list: "请求头列表",
|
|
||||||
add_new: "添加",
|
|
||||||
response: "响应",
|
|
||||||
query: "查询",
|
|
||||||
queries: "查询",
|
|
||||||
query_variables: "变数",
|
|
||||||
mutations: "Mutations",
|
|
||||||
subscriptions: "订阅",
|
|
||||||
types: "种类",
|
|
||||||
send: "发送",
|
|
||||||
background: "背景",
|
|
||||||
color: "颜色",
|
|
||||||
labels: "标签",
|
|
||||||
multi_color: "彩色",
|
|
||||||
enabled: "已启用",
|
|
||||||
disabled: "已禁用",
|
|
||||||
proxy: "代理",
|
|
||||||
postwoman_official_proxy_hosting: "Postwoman的官方代理由ApolloTV托管",
|
|
||||||
read_the: "阅读",
|
|
||||||
apollotv_privacy_policy: "ApolloTV隐私政策",
|
|
||||||
contact_us: "联系我们",
|
|
||||||
connect: "连接",
|
|
||||||
disconnect: "断开",
|
|
||||||
start: "开始",
|
|
||||||
stop: "停止"
|
|
||||||
};
|
|
||||||
@@ -1,882 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="content">
|
|
||||||
<div class="columns">
|
|
||||||
<aside class="nav-first">
|
|
||||||
<nav class="primary-nav">
|
|
||||||
<!--
|
|
||||||
We're using manual checks for linkActive because the query string
|
|
||||||
seems to mess up the nuxt-link active class.
|
|
||||||
-->
|
|
||||||
<nuxt-link
|
|
||||||
:to="localePath('index')"
|
|
||||||
:class="linkActive('/')"
|
|
||||||
v-tooltip.right="$t('home')"
|
|
||||||
:aria-label="$t('home')"
|
|
||||||
>
|
|
||||||
<logo alt class="material-icons" style="height: 24px;"></logo>
|
|
||||||
</nuxt-link>
|
|
||||||
<nuxt-link
|
|
||||||
:to="localePath('realtime')"
|
|
||||||
:class="linkActive('/realtime')"
|
|
||||||
v-tooltip.right="$t('realtime')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">settings_input_hdmi</i>
|
|
||||||
</nuxt-link>
|
|
||||||
<nuxt-link
|
|
||||||
:to="localePath('graphql')"
|
|
||||||
:class="linkActive('/graphql')"
|
|
||||||
v-tooltip.right="$t('graphql')"
|
|
||||||
:aria-label="$t('graphql')"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="material-icons"
|
|
||||||
version="1.1"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
x="0px"
|
|
||||||
y="0px"
|
|
||||||
viewBox="0 0 400 400"
|
|
||||||
>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect
|
|
||||||
x="122"
|
|
||||||
y="-0.4"
|
|
||||||
transform="matrix(-0.866 -0.5 0.5 -0.866 163.3196 363.3136)"
|
|
||||||
width="16.6"
|
|
||||||
height="320.3"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect x="39.8" y="272.2" width="320.3" height="16.6" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect
|
|
||||||
x="37.9"
|
|
||||||
y="312.2"
|
|
||||||
transform="matrix(-0.866 -0.5 0.5 -0.866 83.0693 663.3409)"
|
|
||||||
width="185"
|
|
||||||
height="16.6"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect
|
|
||||||
x="177.1"
|
|
||||||
y="71.1"
|
|
||||||
transform="matrix(-0.866 -0.5 0.5 -0.866 463.3409 283.0693)"
|
|
||||||
width="185"
|
|
||||||
height="16.6"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect
|
|
||||||
x="122.1"
|
|
||||||
y="-13"
|
|
||||||
transform="matrix(-0.5 -0.866 0.866 -0.5 126.7903 232.1221)"
|
|
||||||
width="16.6"
|
|
||||||
height="185"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect
|
|
||||||
x="109.6"
|
|
||||||
y="151.6"
|
|
||||||
transform="matrix(-0.5 -0.866 0.866 -0.5 266.0828 473.3766)"
|
|
||||||
width="320.3"
|
|
||||||
height="16.6"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g><rect x="52.5" y="107.5" width="16.6" height="185" /></g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect x="330.9" y="107.5" width="16.6" height="185" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<rect
|
|
||||||
x="262.4"
|
|
||||||
y="240.1"
|
|
||||||
transform="matrix(-0.5 -0.866 0.866 -0.5 126.7953 714.2875)"
|
|
||||||
width="14.5"
|
|
||||||
height="160.9"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<path
|
|
||||||
d="M369.5,297.9c-9.6,16.7-31,22.4-47.7,12.8c-16.7-9.6-22.4-31-12.8-47.7c9.6-16.7,31-22.4,47.7-12.8C373.5,259.9,379.2,281.2,369.5,297.9"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M90.9,137c-9.6,16.7-31,22.4-47.7,12.8c-16.7-9.6-22.4-31-12.8-47.7c9.6-16.7,31-22.4,47.7-12.8C94.8,99,100.5,120.3,90.9,137"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M30.5,297.9c-9.6-16.7-3.9-38,12.8-47.7c16.7-9.6,38-3.9,47.7,12.8c9.6,16.7,3.9,38-12.8,47.7C61.4,320.3,40.1,314.6,30.5,297.9"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M309.1,137c-9.6-16.7-3.9-38,12.8-47.7c16.7-9.6,38-3.9,47.7,12.8c9.6,16.7,3.9,38-12.8,47.7C340.1,159.4,318.7,153.7,309.1,137"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M200,395.8c-19.3,0-34.9-15.6-34.9-34.9c0-19.3,15.6-34.9,34.9-34.9c19.3,0,34.9,15.6,34.9,34.9C234.9,380.1,219.3,395.8,200,395.8"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M200,74c-19.3,0-34.9-15.6-34.9-34.9c0-19.3,15.6-34.9,34.9-34.9c19.3,0,34.9,15.6,34.9,34.9C234.9,58.4,219.3,74,200,74"
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
</nuxt-link>
|
|
||||||
<nuxt-link
|
|
||||||
:to="localePath('doc')"
|
|
||||||
:class="linkActive('/doc')"
|
|
||||||
v-tooltip.right="$t('documentation')"
|
|
||||||
:aria-label="$t('documentation')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">books</i>
|
|
||||||
</nuxt-link>
|
|
||||||
<nuxt-link
|
|
||||||
:to="localePath('settings')"
|
|
||||||
:class="linkActive('/settings')"
|
|
||||||
v-tooltip.right="$t('settings')"
|
|
||||||
:aria-label="$t('settings')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">settings</i>
|
|
||||||
</nuxt-link>
|
|
||||||
</nav>
|
|
||||||
<div v-if="$route.path === '/'">
|
|
||||||
<nav class="secondary-nav">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#request" v-tooltip.right="$t('request')">
|
|
||||||
<i class="material-icons">cloud_upload</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#options" v-tooltip.right="$t('options')">
|
|
||||||
<i class="material-icons">toc</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#response" v-tooltip.right="$t('response')">
|
|
||||||
<i class="material-icons">cloud_download</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div v-else-if="$route.path === '/realtime'">
|
|
||||||
<nav class="secondary-nav">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#request" v-tooltip.right="$t('request')">
|
|
||||||
<i class="material-icons">cloud_upload</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#response" v-tooltip.right="$t('communication')">
|
|
||||||
<i class="material-icons">cloud_download</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div v-else-if="$route.path === '/graphql'">
|
|
||||||
<nav class="secondary-nav">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#endpoint" v-tooltip.right="$t('endpoint')">
|
|
||||||
<i class="material-icons">cloud</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#schema" v-tooltip.right="$t('schema')">
|
|
||||||
<i class="material-icons">assignment_returned</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#query" v-tooltip.right="$t('query')">
|
|
||||||
<i class="material-icons">cloud_upload</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#response" v-tooltip.right="$t('response')">
|
|
||||||
<i class="material-icons">cloud_download</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div v-else-if="$route.path === '/doc'">
|
|
||||||
<nav class="secondary-nav">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#collections" v-tooltip.right="$t('collections')">
|
|
||||||
<i class="material-icons">folder</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#documentation" v-tooltip.right="'Documentation'">
|
|
||||||
<i class="material-icons">insert_drive_file</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div v-else-if="$route.path === '/settings'">
|
|
||||||
<nav class="secondary-nav">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#account" v-tooltip.right="$t('account')">
|
|
||||||
<i class="material-icons">person</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#theme" v-tooltip.right="$t('theme')">
|
|
||||||
<i class="material-icons">brush</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#extensions" v-tooltip.right="$t('extensions')">
|
|
||||||
<i class="material-icons">extensions</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#proxy" v-tooltip.right="$t('proxy')">
|
|
||||||
<i class="material-icons">public</i>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</aside>
|
|
||||||
<div class="main" id="main">
|
|
||||||
<header class="header">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span class="slide-in">
|
|
||||||
<nuxt-link :to="localePath('index')">
|
|
||||||
<h1 class="logo">Postwoman</h1>
|
|
||||||
</nuxt-link>
|
|
||||||
</span>
|
|
||||||
<span>
|
|
||||||
<a
|
|
||||||
href="https://github.com/liyasthomas/postwoman"
|
|
||||||
target="_blank"
|
|
||||||
aria-label="GitHub"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
<button class="icon" aria-label="GitHub" v-tooltip="'GitHub'">
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
class="material-icons"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
id="installPWA"
|
|
||||||
@click.prevent="showInstallPrompt()"
|
|
||||||
v-tooltip="$t('install_pwa')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">offline_bolt</i>
|
|
||||||
</button>
|
|
||||||
<login v-if="!fb.currentUser" />
|
|
||||||
<span v-if="fb.currentUser">
|
|
||||||
<v-popover>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
v-tooltip="
|
|
||||||
(fb.currentUser.displayName ||
|
|
||||||
'<label><i>Name not found</i></label>') +
|
|
||||||
'<br>' +
|
|
||||||
(fb.currentUser.email ||
|
|
||||||
'<label><i>Email not found</i></label>')
|
|
||||||
"
|
|
||||||
aria-label="Account"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
v-if="fb.currentUser.photoURL"
|
|
||||||
:src="fb.currentUser.photoURL"
|
|
||||||
class="material-icons"
|
|
||||||
alt="Profile image"
|
|
||||||
/>
|
|
||||||
<i v-else class="material-icons">account_circle</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<nuxt-link :to="localePath('settings')" v-close-popover>
|
|
||||||
<button class="icon">
|
|
||||||
<i class="material-icons">settings</i>
|
|
||||||
<span>
|
|
||||||
{{ $t("settings") }}
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</nuxt-link>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="logout" v-close-popover>
|
|
||||||
<i class="material-icons">exit_to_app</i>
|
|
||||||
<span>{{ $t("logout") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</span>
|
|
||||||
<v-popover>
|
|
||||||
<button class="icon" v-tooltip="$t('more')">
|
|
||||||
<i class="material-icons">more_vert</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="showExtensions = true"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">extension</i>
|
|
||||||
<span>{{ $t("extensions") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="showShortcuts = true"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">keyboard</i>
|
|
||||||
<span>{{ $t("shortcuts") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
@click="showSupport = true"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<i class="material-icons">favorite</i>
|
|
||||||
<span>{{ $t("support_us") }}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
class="icon"
|
|
||||||
onClick="window.open('https://twitter.com/share?text=👽 Postwoman • A free, fast and beautiful API request builder - Web alternative to Postman - Helps you create requests faster, saving precious time on development.&url=https://postwoman.io&hashtags=postwoman&via=liyasthomas');"
|
|
||||||
v-close-popover
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
<span>{{ $t("tweet") }}</span>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
v-if="navigatorShare"
|
|
||||||
class="icon"
|
|
||||||
@click="nativeShare"
|
|
||||||
v-close-popover
|
|
||||||
v-tooltip="$t('more')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">share</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<nuxt />
|
|
||||||
<footer class="footer">
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<span v-if="version.name" class="mono">
|
|
||||||
<a
|
|
||||||
class="footer-link"
|
|
||||||
:href="
|
|
||||||
'https://github.com/liyasthomas/postwoman/releases/tag/' +
|
|
||||||
version.name
|
|
||||||
"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
v-tooltip="'GitHub'"
|
|
||||||
>
|
|
||||||
{{ version.name }}
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
class="footer-link hide-on-small-screen"
|
|
||||||
href="https://www.netlify.com"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
Powered by Netlify
|
|
||||||
</a>
|
|
||||||
<!-- <span v-if="version.hash">
|
|
||||||
-
|
|
||||||
<a
|
|
||||||
:href="'https://github.com/liyasthomas/postwoman/commit/' + version.hash"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>{{version.hash}}</a>
|
|
||||||
</span> -->
|
|
||||||
<!-- <span v-if="version.variant">({{version.variant}})</span> -->
|
|
||||||
</span>
|
|
||||||
<span>
|
|
||||||
<a
|
|
||||||
href="https://liyasthomas.web.app"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
<button class="icon" v-tooltip="'Liyas Thomas'">
|
|
||||||
🦄
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
href="mailto:liyascthomas@gmail.com"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
<button class="icon" v-tooltip="$t('contact_us')">
|
|
||||||
<i class="material-icons">email</i>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
<v-popover>
|
|
||||||
<button class="icon" v-tooltip="$t('choose_language')">
|
|
||||||
<i class="material-icons">translate</i>
|
|
||||||
</button>
|
|
||||||
<template slot="popover">
|
|
||||||
<div v-for="locale in availableLocales" :key="locale.code">
|
|
||||||
<nuxt-link :to="switchLocalePath(locale.code)">
|
|
||||||
<button class="icon" v-close-popover>
|
|
||||||
{{ locale.name }}
|
|
||||||
</button>
|
|
||||||
</nuxt-link>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-popover>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
<aside class="nav-second"></aside>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<modal v-if="showExtensions" @close="showExtensions = false">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("extensions") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="showExtensions = false">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<p class="info">
|
|
||||||
{{ $t("extensions_info1") }}
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://addons.mozilla.org/en-US/firefox/addon/postwoman"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
<button class="icon">
|
|
||||||
<svg
|
|
||||||
class="material-icons"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm8.003 8.657c-1.276-3.321-4.46-4.605-5.534-4.537 3.529 1.376 4.373 6.059 4.06 7.441-.307-1.621-1.286-3.017-1.872-3.385 3.417 8.005-4.835 10.465-7.353 7.687.649.168 1.931.085 2.891-.557.898-.602.983-.638 1.56-.683.686-.053-.041-1.406-1.539-1.177-.616.094-1.632.819-2.88.341-1.508-.576-1.46-2.634.096-2.015.337-.437.088-1.263.088-1.263.452-.414 1.022-.706 1.37-.911.228-.135.829-.507.795-1.23-.123-.096-.32-.219-.766-.193-1.736.11-1.852-.518-1.967-.808.078-.668.524-1.534 1.361-1.931-1.257-.193-2.28.397-2.789 1.154-.809-.174-1.305-.183-2.118-.031-.316-.24-.666-.67-.878-1.181 1.832-2.066 4.499-3.378 7.472-3.378 5.912 0 8.263 4.283 8.003 6.657z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
<span>Firefox</span>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
v-if="firefoxExtInstalled"
|
|
||||||
v-tooltip="$t('installed')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">done</i>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://chrome.google.com/webstore/detail/postwoman-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
>
|
|
||||||
<button class="icon">
|
|
||||||
<svg
|
|
||||||
class="material-icons"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M2.897 4.181c2.43-2.828 5.763-4.181 9.072-4.181 4.288 0 8.535 2.273 10.717 6.554-2.722.001-6.984 0-9.293 0-1.674.001-2.755-.037-3.926.579-1.376.724-2.415 2.067-2.777 3.644l-3.793-6.596zm5.11 7.819c0 2.2 1.789 3.99 3.988 3.99s3.988-1.79 3.988-3.99-1.789-3.991-3.988-3.991-3.988 1.791-3.988 3.991zm5.536 5.223c-2.238.666-4.858-.073-6.293-2.549-1.095-1.891-3.989-6.933-5.305-9.225-1.33 2.04-1.945 4.294-1.945 6.507 0 5.448 3.726 10.65 9.673 11.818l3.87-6.551zm2.158-9.214c1.864 1.734 2.271 4.542 1.007 6.719-.951 1.641-3.988 6.766-5.46 9.248 7.189.443 12.752-5.36 12.752-11.972 0-1.313-.22-2.66-.69-3.995h-7.609z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
<span>Chrome</span>
|
|
||||||
<span
|
|
||||||
class="icon"
|
|
||||||
v-if="chromeExtInstalled"
|
|
||||||
v-tooltip="$t('installed')"
|
|
||||||
>
|
|
||||||
<i class="material-icons">done</i>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div slot="footer"></div>
|
|
||||||
</modal>
|
|
||||||
<modal v-if="showShortcuts" @close="showShortcuts = false">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("shortcuts") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="showShortcuts = false">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<div>
|
|
||||||
<label>{{ $t("send_request") }}</label>
|
|
||||||
<kbd>{{ getSpecialKey() }} G</kbd>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>{{ $t("save_to_collections") }}</label>
|
|
||||||
<kbd>{{ getSpecialKey() }} S</kbd>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>{{ $t("copy_request_link") }}</label>
|
|
||||||
<kbd>{{ getSpecialKey() }} K</kbd>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label>{{ $t("reset_request") }}</label>
|
|
||||||
<kbd>{{ getSpecialKey() }} L</kbd>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div slot="footer"></div>
|
|
||||||
</modal>
|
|
||||||
<modal v-if="showSupport" @close="showSupport = false">
|
|
||||||
<div slot="header">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<div class="flex-wrap">
|
|
||||||
<h3 class="title">{{ $t("support_us_on") }}</h3>
|
|
||||||
<div>
|
|
||||||
<button class="icon" @click="showSupport = false">
|
|
||||||
<i class="material-icons">close</i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div slot="body">
|
|
||||||
<p class="info">
|
|
||||||
{{ $t("donate_info1") }}
|
|
||||||
</p>
|
|
||||||
<p class="info">
|
|
||||||
{{ $t("donate_info2") }}
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://opencollective.com/postwoman"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
v-tooltip.right="$t('one_time_recurring')"
|
|
||||||
>
|
|
||||||
<button class="icon">
|
|
||||||
<i class="material-icons">donut_large</i>
|
|
||||||
<span>{{ $t("open_collective") }}</span>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.paypal.me/liyascthomas"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
v-tooltip.right="$t('one_time')"
|
|
||||||
>
|
|
||||||
<button class="icon">
|
|
||||||
<i class="material-icons">payment</i>
|
|
||||||
<span>{{ $t("paypal") }}</span>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.patreon.com/liyasthomas"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener"
|
|
||||||
v-tooltip.right="$t('recurring')"
|
|
||||||
>
|
|
||||||
<button class="icon">
|
|
||||||
<i class="material-icons">local_parking</i>
|
|
||||||
<span>{{ $t("patreon") }}</span>
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div slot="footer"></div>
|
|
||||||
</modal>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.footer-link {
|
|
||||||
margin: 8px 16px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import intializePwa from "../assets/js/pwa";
|
|
||||||
import * as version from "../.postwoman/version.json";
|
|
||||||
import { hasExtensionInstalled } from "../functions/strategies/ExtensionStrategy";
|
|
||||||
import firebase from "firebase/app";
|
|
||||||
import { fb } from "../functions/fb";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
logo: () => import("../components/logo"),
|
|
||||||
modal: () => import("../components/modal"),
|
|
||||||
login: () => import("../components/firebase/login")
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
getSpecialKey() {
|
|
||||||
return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? "⌘" : "Ctrl";
|
|
||||||
},
|
|
||||||
linkActive(path) {
|
|
||||||
return {
|
|
||||||
"nuxt-link-exact-active": this.$route.path === path,
|
|
||||||
"nuxt-link-active": this.$route.path === path
|
|
||||||
};
|
|
||||||
},
|
|
||||||
logout() {
|
|
||||||
fb.currentUser = null;
|
|
||||||
firebase
|
|
||||||
.auth()
|
|
||||||
.signOut()
|
|
||||||
.catch(err => {
|
|
||||||
this.$toast.show(err.message || err, {
|
|
||||||
icon: "error"
|
|
||||||
});
|
|
||||||
});
|
|
||||||
this.$toast.info(this.$t("logged_out"), {
|
|
||||||
icon: "vpn_key"
|
|
||||||
});
|
|
||||||
},
|
|
||||||
nativeShare() {
|
|
||||||
if (navigator.share) {
|
|
||||||
navigator
|
|
||||||
.share({
|
|
||||||
title: "Postwoman",
|
|
||||||
text:
|
|
||||||
"Postwoman • A free, fast and beautiful API request builder - Web alternative to Postman - Helps you create requests faster, saving precious time on development.",
|
|
||||||
url: "https://postwoman.io/"
|
|
||||||
})
|
|
||||||
.then(() => {})
|
|
||||||
.catch(console.error);
|
|
||||||
} else {
|
|
||||||
// fallback
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// Once the PWA code is initialized, this holds a method
|
|
||||||
// that can be called to show the user the installation
|
|
||||||
// prompt.
|
|
||||||
showInstallPrompt: null,
|
|
||||||
version: {},
|
|
||||||
showExtensions: false,
|
|
||||||
showShortcuts: false,
|
|
||||||
showSupport: false,
|
|
||||||
extensionInstalled: hasExtensionInstalled(),
|
|
||||||
fb,
|
|
||||||
navigatorShare: navigator.share
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeMount() {
|
|
||||||
// Set version data
|
|
||||||
this.version = version.default;
|
|
||||||
|
|
||||||
// Load theme settings
|
|
||||||
(() => {
|
|
||||||
// Apply theme from settings.
|
|
||||||
document.documentElement.className =
|
|
||||||
this.$store.state.postwoman.settings.THEME_CLASS || "";
|
|
||||||
// Load theme color data from settings, or use default color.
|
|
||||||
let color = this.$store.state.postwoman.settings.THEME_COLOR || "#50fa7b";
|
|
||||||
let vibrant =
|
|
||||||
this.$store.state.postwoman.settings.THEME_COLOR_VIBRANT || true;
|
|
||||||
document.documentElement.style.setProperty("--ac-color", color);
|
|
||||||
document.documentElement.style.setProperty(
|
|
||||||
"--act-color",
|
|
||||||
vibrant ? "rgba(32, 33, 36, 1)" : "rgba(255, 255, 255, 1)"
|
|
||||||
);
|
|
||||||
})();
|
|
||||||
},
|
|
||||||
|
|
||||||
mounted() {
|
|
||||||
if (process.client) {
|
|
||||||
document.body.classList.add("afterLoad");
|
|
||||||
}
|
|
||||||
|
|
||||||
document
|
|
||||||
.querySelector("meta[name=theme-color]")
|
|
||||||
.setAttribute(
|
|
||||||
"content",
|
|
||||||
this.$store.state.postwoman.settings.THEME_TAB_COLOR || "#202124"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Initializes the PWA code - checks if the app is installed,
|
|
||||||
// etc.
|
|
||||||
(async () => {
|
|
||||||
this.showInstallPrompt = await intializePwa();
|
|
||||||
let cookiesAllowed = localStorage.getItem("cookiesAllowed") === "yes";
|
|
||||||
if (!cookiesAllowed) {
|
|
||||||
this.$toast.show(this.$t("we_use_cookies"), {
|
|
||||||
icon: "info",
|
|
||||||
duration: 5000,
|
|
||||||
theme: "toasted-primary",
|
|
||||||
action: [
|
|
||||||
{
|
|
||||||
text: this.$t("dismiss"),
|
|
||||||
onClick: (e, toastObject) => {
|
|
||||||
localStorage.setItem("cookiesAllowed", "yes");
|
|
||||||
toastObject.goAway(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
let showExtensionsToast =
|
|
||||||
localStorage.getItem("showExtensionsToast") === "yes";
|
|
||||||
if (
|
|
||||||
!this.extensionInstalled &&
|
|
||||||
!showExtensionsToast
|
|
||||||
) {
|
|
||||||
setTimeout(() => {
|
|
||||||
this.$toast.show(this.$t("extensions_info2"), {
|
|
||||||
icon: "extension",
|
|
||||||
duration: 5000,
|
|
||||||
theme: "toasted-primary",
|
|
||||||
action: [
|
|
||||||
{
|
|
||||||
text: this.$t("yes"),
|
|
||||||
onClick: (e, toastObject) => {
|
|
||||||
this.showExtensions = true;
|
|
||||||
localStorage.setItem("showExtensionsToast", "yes");
|
|
||||||
toastObject.goAway(0);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: this.$t("no"),
|
|
||||||
onClick: (e, toastObject) => {
|
|
||||||
toastObject.goAway(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
}, 15000);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._keyListener = function(e) {
|
|
||||||
if (e.key === "Escape") {
|
|
||||||
e.preventDefault();
|
|
||||||
this.showExtensions = this.showShortcuts = this.showSupport = false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
document.addEventListener("keydown", this._keyListener.bind(this));
|
|
||||||
})();
|
|
||||||
|
|
||||||
window.addEventListener("scroll", event => {
|
|
||||||
let mainNavLinks = document.querySelectorAll("nav ul li a");
|
|
||||||
let fromTop = window.scrollY;
|
|
||||||
mainNavLinks.forEach(link => {
|
|
||||||
let section = document.querySelector(link.hash);
|
|
||||||
|
|
||||||
if (
|
|
||||||
section &&
|
|
||||||
section.offsetTop <= fromTop &&
|
|
||||||
section.offsetTop + section.offsetHeight > fromTop
|
|
||||||
) {
|
|
||||||
link.classList.add("current");
|
|
||||||
} else {
|
|
||||||
link.classList.remove("current");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(
|
|
||||||
"%cWe ❤︎ open source!",
|
|
||||||
"background-color:white;padding:8px 16px;border-radius:8px;font-size:32px;color:red;"
|
|
||||||
);
|
|
||||||
console.log(
|
|
||||||
"%cContribute: https://github.com/liyasthomas/postwoman",
|
|
||||||
"background-color:black;padding:4px 8px;border-radius:8px;font-size:16px;color:white;"
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
|
||||||
$route() {
|
|
||||||
// this.$toast.clear();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
|
||||||
availableLocales() {
|
|
||||||
return this.$i18n.locales.filter(i => i.code !== this.$i18n.locale);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeDestroy() {
|
|
||||||
document.removeEventListener("keydown", this._keyListener);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="page page-error">
|
|
||||||
<img
|
|
||||||
src="~static/icons/error.svg"
|
|
||||||
:alt="$t('error')"
|
|
||||||
class="error_banner"
|
|
||||||
/>
|
|
||||||
<h2>{{ error.statusCode }}</h2>
|
|
||||||
<h3>{{ error.message }}</h3>
|
|
||||||
<p>
|
|
||||||
<nuxt-link to="/">
|
|
||||||
<button>{{ $t("go_home") }}</button>
|
|
||||||
</nuxt-link>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<a href @click.prevent="reloadApplication">{{ $t("reload") }}</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
// Center the error page in the viewport.
|
|
||||||
.page-error {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.error_banner {
|
|
||||||
width: 256px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: ["error"],
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
reloadApplication() {
|
|
||||||
this.$router.push("/", () => window.location.reload());
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
head() {
|
|
||||||
return {
|
|
||||||
bodyAttrs: {
|
|
||||||
class: "sticky-footer"
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user