Compare commits

..

1392 Commits

Author SHA1 Message Date
Andrew Bastin
8231157cdb feat: bump version to 2.0.0 2021-08-28 02:21:37 +05:30
liyasthomas
e397e3fb6f feat: add newsletter link 2021-08-27 22:13:15 +05:30
liyasthomas
8f1cafc80d chore: i18n 2021-08-27 15:22:21 +05:30
liyasthomas
71619cf84b feat: test report pie chart 2021-08-27 14:32:07 +05:30
liyasthomas
a3551c6719 fix: broken test results 2021-08-27 12:38:03 +05:30
Andrew Bastin
e9043e6762 refactor: update test components to use setup scripts 2021-08-27 11:45:08 +05:30
liyasthomas
6b7d30a701 fix: restore v1 test API 2021-08-27 09:42:53 +05:30
liyasthomas
76eab2632e fix: failed tests 2021-08-27 09:38:29 +05:30
liyasthomas
bba4d7fcd9 chore: cleanup 2021-08-27 09:37:29 +05:30
Andrew Bastin
46eb7d6786 fix: test scripts response respects the old api and the new structure 2021-08-26 13:08:06 +05:30
Andrew Bastin
f5c84b57b2 fix: improved codegen compat 2021-08-26 13:08:06 +05:30
liyasthomas
0b12901344 feat: sample pre-request and test snippets 2021-08-26 12:18:28 +05:30
liyasthomas
5e3c303aaf fix: tippy on request + lint 2021-08-26 11:04:52 +05:30
liyasthomas
f02b1639c3 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-08-26 11:03:30 +05:30
Andrew Bastin
94e0c3ef64 refactor: update codegen code 2021-08-26 11:02:05 +05:30
liyasthomas
17366f5e6e fix: sync modal 2021-08-26 10:44:01 +05:30
liyasthomas
f7a6f899d4 Merge branch 'refactor/oauth' of https://github.com/hoppscotch/hoppscotch into refactor/oauth 2021-08-26 10:03:05 +05:30
liyasthomas
62205919a3 feat: env variable support in authorization
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-08-26 10:00:21 +05:30
liyasthomas
ee44a48994 feat: ui for oauth 2021-08-26 09:21:37 +05:30
liyasthomas
fedc230c9f feat: add OAuth 2.0 support 2021-08-26 09:21:37 +05:30
Andrew Bastin
8796cec493 fix: tippy not disappearing on request component modals 2021-08-26 09:19:18 +05:30
Andrew Bastin
b3b76adec4 feat: antfu's setup script transform + request component in setup sugar 2021-08-26 08:56:22 +05:30
liyasthomas
4362760461 feat: ui for oauth 2021-08-25 22:20:35 +05:30
liyasthomas
bc9236c9a7 feat: add OAuth 2.0 support 2021-08-25 21:30:13 +05:30
liyasthomas
9e16cff62a chore: minor fixes and improvements 2021-08-25 21:26:53 +05:30
Andrew Bastin
b04d8dde2b feat: request local persistence 2021-08-25 18:29:04 +05:30
liyasthomas
2a23c95f34 fix: empty github auth provider info 2021-08-25 16:15:31 +05:30
Andrew Bastin
cb9aa33ad0 fix: req.id undefined issues 2021-08-25 09:43:16 +05:30
Andrew Bastin
31258b1108 refactor: improved teams migrations 2021-08-25 08:41:09 +05:30
Andrew Bastin
6e9f16d8f1 refactor: collections versioning, migration and types 2021-08-24 23:12:53 +05:30
Andrew Bastin
d1b2539d67 refactor: gql request object and history typing updates 2021-08-24 21:58:04 +05:30
liyasthomas
c5f8ab3394 chore: minor fixes and improvements 2021-08-24 13:45:11 +05:30
liyasthomas
12c28f4efc fix: broken component import in prod 2021-08-24 09:14:46 +05:30
Andrew Bastin
f20fed444a fix: history entries becoming undefined over reloads 2021-08-23 12:57:36 +05:30
Andrew Bastin
97b92ba35b feat: history migration from legacy request object 2021-08-23 11:49:43 +05:30
liyasthomas
91df36ccca fix: ctrl+c shortcut, minor ui issues 2021-08-23 10:22:07 +05:30
liyasthomas
294b1a5a7c fix: cors when content-type is set for simple requests 2021-08-22 22:44:07 +05:30
liyasthomas
5f27b59dc0 fix: typo 2021-08-22 17:02:18 +05:30
Andrew Bastin
af0efc1e7f fix: migration of request url from old to new format 2021-08-22 16:31:09 +05:30
Andrew Bastin
db25346505 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-08-22 13:06:58 +05:30
Andrew Bastin
1a4fc1f539 feat: remove authName from HoppRESTAuth type definitions 2021-08-22 13:06:19 +05:30
liyasthomas
1bea0a42d7 refactor(ui): better button, tab caomponents 2021-08-22 12:58:43 +05:30
liyasthomas
22e73a4d83 Merge branch 'main' into refactor/ui 2021-08-22 00:55:02 +05:30
liyasthomas
3ab3c09982 chore(deps): bump 2021-08-22 00:43:58 +05:30
liyasthomas
0fb0ae1826 refactor(ui): better tabs 2021-08-22 00:39:05 +05:30
Andrew Bastin
08fe4ae71f feat: shift based keyboard shortcuts and save as action 2021-08-21 21:59:55 +05:30
Andrew Bastin
883c787c0b fix: global variables not applying on codegen 2021-08-21 20:08:32 +05:30
Andrew Bastin
732dc07ec5 fix: history sync issues and crashes 2021-08-21 12:37:26 +05:30
Andrew Bastin
c00c8f249e fix: environments being cringe :) 2021-08-21 10:38:35 +05:30
Andrew Bastin
77d876d443 fix: error on empty environment sync 2021-08-21 08:08:39 +05:30
liyasthomas
822e7b4630 refactor: improve lighthouse score 2021-08-20 21:35:54 +05:30
liyasthomas
275a7fc113 fix: save context indicatior + added unplug save on double click 2021-08-20 20:21:22 +05:30
Andrew Bastin
b08b06c4d4 fix: save request context set on teams 2021-08-20 18:27:52 +05:30
liyasthomas
7082eb27db refactor(ui): minor ui improvements 2021-08-20 15:08:54 +05:30
liyasthomas
a121445b1e feat: active request indication in collections 2021-08-19 23:15:10 +05:30
liyasthomas
95547108bf docs: updated wiki links 2021-08-19 22:38:50 +05:30
Andrew Bastin
fc4e945a7e refactor: reactive stream of save context 2021-08-19 19:38:32 +05:30
Andrew Bastin
1fdb6488fd feat: save request context 2021-08-19 12:06:56 +05:30
liyasthomas
51142e5c77 feat: added docs links 2021-08-19 11:46:22 +05:30
liyasthomas
57ce7ccfdf chore: i18n 2021-08-19 01:38:30 +05:30
liyasthomas
c1ce90dad0 feat: finish new i18n translation format 2021-08-19 00:10:57 +05:30
liyasthomas
ceb8bdf0fd refactor: more i18n translation strings 2021-08-18 22:17:31 +05:30
liyasthomas
b9c233cdf9 refactor(ui): better remove, delete icons, and select components 2021-08-18 13:30:01 +05:30
liyasthomas
4f5de51104 refactor: change default env name from 'global' to 'Global' 2021-08-18 10:44:58 +05:30
liyasthomas
c949783698 feat: show global envs on hover 2021-08-18 10:34:20 +05:30
Andrew Bastin
6af42e5e08 fix: issues with global environment writes 2021-08-18 09:52:13 +05:30
liyasthomas
f312ed32be refactor(ui): global environment 2021-08-18 02:29:05 +05:30
Andrew Bastin
91fee8d2d0 refactor: remove legacy global env preRequest reference 2021-08-17 14:51:10 +05:30
Andrew Bastin
c23a4bf75d feat: aggregated environment variable stream 2021-08-17 14:51:10 +05:30
Andrew Bastin
e38af0bebe feat: firestore sync for global environment 2021-08-17 14:51:10 +05:30
Andrew Bastin
b968756be2 feat: global env variable migration and local persistence 2021-08-17 14:51:10 +05:30
Andrew Bastin
ed5b4b6dc5 refactor: custom space for global variables 2021-08-17 14:51:10 +05:30
liyasthomas
956ca44ef0 refactor: remove absolute classes 2021-08-17 12:56:36 +05:30
Andrew Bastin
3534e133af fix: eslint being dumb 2021-08-17 10:25:27 +05:30
Andrew Bastin
7744e2eb03 feat: add success test descriptions 2021-08-17 10:05:19 +05:30
Andrew Bastin
078c5e8d8a refactor: update postwomanTesting to typescript 2021-08-17 09:06:04 +05:30
liyasthomas
6c3607d7e7 refactor: i18n 2021-08-16 23:15:06 +05:30
liyasthomas
c04435108b refactor: i18n SEO 2021-08-16 22:02:18 +05:30
liyasthomas
e5c8d05850 feat: added remaining i18n translations 2021-08-16 17:06:43 +05:30
liyasthomas
bf0278aa00 feat: init i18n with gitlocalize 2021-08-16 14:18:45 +05:30
Liyas Thomas
33d05eaa77 Merge pull request #1779 from hoppscotch/gitlocalize-16541 2021-08-16 14:11:19 +05:30
mt-gitlocalize
5b074409fc Translate zh.json via GitLocalize 2021-08-16 08:41:02 +00:00
Liyas Thomas
bdc3cf2150 Merge pull request #1778 from hoppscotch/gitlocalize-16540 2021-08-16 14:03:57 +05:30
mt-gitlocalize
c3b7d45502 Translate pt.json via GitLocalize 2021-08-16 08:33:36 +00:00
Liyas Thomas
2ef4bc1b36 Merge pull request #1777 from hoppscotch/gitlocalize-16539 2021-08-16 14:02:58 +05:30
mt-gitlocalize
2f87549dac Translate ru.json via GitLocalize 2021-08-16 08:32:35 +00:00
Liyas Thomas
c596012bb5 Merge pull request #1776 from hoppscotch/gitlocalize-16538 2021-08-16 13:57:43 +05:30
mt-gitlocalize
04c6faf5da Translate de.json via GitLocalize 2021-08-16 08:27:25 +00:00
Liyas Thomas
b2f50547a9 Merge pull request #1775 from hoppscotch/gitlocalize-16537 2021-08-16 13:48:39 +05:30
mt-gitlocalize
e221741a6a Translate fr.json via GitLocalize 2021-08-16 08:17:15 +00:00
Liyas Thomas
fe43ae9e81 Merge pull request #1774 from hoppscotch/gitlocalize-16536 2021-08-16 13:37:02 +05:30
mt-gitlocalize
c5d4b9f0ae Translate es.json via GitLocalize 2021-08-16 08:05:48 +00:00
liyasthomas
b9156cdf7f refactor: init english glossary for i18n 2021-08-16 13:11:50 +05:30
liyasthomas
c6a3b784b5 fix: proper state indicatior in teams collections 2021-08-16 08:18:48 +05:30
Andrew Bastin
33e2afab7b feat: send formdata over network 2021-08-16 07:12:33 +05:30
Andrew Bastin
5eb6fb38e0 fix: crash on switch from formdata to non-formdata 2021-08-16 01:00:44 +05:30
liyasthomas
c2ae333a12 refactor(ui): better CTAs, expanded app bar 2021-08-16 00:38:57 +05:30
liyasthomas
d462242927 chore(deps): bump 2021-08-15 19:16:31 +05:30
liyasthomas
c1d2f12e48 Merge branch 'main' into refactor/ui 2021-08-15 19:11:00 +05:30
liyasthomas
74d472e76e chore(deps): bump 2021-08-15 19:06:20 +05:30
liyasthomas
bfc0282e49 refactor: minor ui improvements 2021-08-15 15:18:04 +05:30
liyasthomas
8c70f83297 fix: broken contenteditable support in macOS 2021-08-15 13:11:12 +05:30
liyasthomas
1e6e826426 fix: broken expand / collapse graphql history card 2021-08-15 12:16:33 +05:30
liyasthomas
872ba2d48e fix: catch network failed error and show prompt in response section 2021-08-15 11:57:20 +05:30
Andrew Bastin
7acde1c174 feat: rest request sync with firestore 2021-08-15 10:45:26 +05:30
liyasthomas
bb6d9a88ec refactor: minoe fixes and improvements 2021-08-14 23:46:03 +05:30
liyasthomas
29305a8e1e Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-08-14 21:41:38 +05:30
liyasthomas
9f639378ec feat: reactive font size for ace editor + i18n support for font size settings strings 2021-08-14 21:40:56 +05:30
Andrew Bastin
92a42269e7 refactor: remove vuex dependency 2021-08-14 21:27:22 +05:30
liyasthomas
691629890f fix: form data request as body
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-08-14 19:11:05 +05:30
liyasthomas
2051b8788a refactor: minor ui improvements 2021-08-14 16:14:08 +05:30
liyasthomas
a129d7eb13 refactor: init newstore for request body
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-08-14 14:31:16 +05:30
liyasthomas
e9eee0703d refactor: set placement as top by edfault for modals, better response header layout 2021-08-13 22:39:47 +05:30
liyasthomas
11816111ea refactor(ui): better font weight, icon hover states, etc 2021-08-13 16:44:02 +05:30
Andrew Bastin
08e3cffff8 refactor: decouple REST params and URL params 2021-08-13 12:12:05 +05:30
Andrew Bastin
ab63735a89 fix: bump deps 2021-08-13 12:00:22 +05:30
Andrew Bastin
560c6e0d6a refactor: add prettier-ignore to Key type def 2021-08-13 10:23:40 +05:30
Andrew Bastin
f688099f2c fix: improper theme application on initial load 2021-08-13 08:11:06 +05:30
liyasthomas
877f1e343a Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-08-12 18:42:11 +05:30
liyasthomas
32660c5251 refactor: move test results to request response section 2021-08-12 18:41:55 +05:30
Andrew Bastin
a1dc224007 feat: graphql request history and collection restore 2021-08-12 16:15:17 +05:30
liyasthomas
55bcb34fd5 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-08-12 13:56:51 +05:30
liyasthomas
b18f7af28f feat: enable / disable authorization 2021-08-12 13:56:11 +05:30
Andrew Bastin
c273ded97d refactor: remove vue-rx dependency 2021-08-12 13:44:10 +05:30
liyasthomas
971b35a252 refactor: auth
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-08-12 09:56:05 +05:30
Andrew Bastin
dad18aabcb feat: expose actively bound actions via activeActions$ 2021-08-11 22:07:47 +05:30
liyasthomas
0738ad1c15 refactor: better toast messages + minor ui improvements 2021-08-11 16:57:40 +05:30
liyasthomas
829e116e04 feat: more actions & shortcuts 2021-08-11 14:16:43 +05:30
liyasthomas
384e4ce43e chore: lint 2021-08-11 10:27:36 +05:30
Andrew Bastin
da3f55c910 feat: graphql rewrite to new state system 2021-08-11 08:23:49 +05:30
liyasthomas
87833f1e9f fix: broken team's add / edit member action 2021-08-10 20:45:57 +05:30
liyasthomas
ba5d1666d6 feat: placement option (center, top) in modals 2021-08-10 20:45:45 +05:30
liyasthomas
b612feea41 feat: search 2021-08-10 13:46:42 +05:30
Andrew Bastin
da74fb5241 refactor: remove nuxt eslint module 2021-08-10 05:27:34 +05:30
liyasthomas
aa8b4231e2 feat: share and support modals 2021-08-09 17:55:30 +05:30
Andrew Bastin
6b4bd44807 Merge pull request #1769 from s-r-x/fix/settings-persistence
fix: broken settings persistence on the home page
2021-08-09 13:34:20 +05:30
Andrew Bastin
058c1090e3 fix: remove settings entries from postwoman.js 2021-08-09 12:56:20 +05:30
s-r-x
6aa6fb5c0a fix: broken settings persistence 2021-08-09 09:07:17 +05:00
liyasthomas
cbf99d2daf feat: auto focus directive, auto focus primary action by default 2021-08-08 22:44:05 +05:30
liyasthomas
a71f70644f chore(deps): bump 2021-08-08 20:47:50 +05:30
liyasthomas
b41d08007a Merge branch 'main' into refactor/ui 2021-08-08 19:52:39 +05:30
liyasthomas
0e1900b36a chore(deps): bump 2021-08-08 19:49:06 +05:30
Andrew Bastin
e6c503253b fix: firebase imports to allow tree shaking 2021-08-08 13:25:54 +05:30
Andrew Bastin
846c1426cf fix: proper implementation of isCustomMethod 2021-08-08 13:16:14 +05:30
Andrew Bastin
c97f8aa148 fix: cancel request 2021-08-08 13:08:10 +05:30
liyasthomas
b99c4fe5c1 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-08-08 12:42:44 +05:30
liyasthomas
42d2dd284f refactor(ui): title and actions slot on modals 2021-08-08 12:42:29 +05:30
Andrew Bastin
b7e3f2a4ee feat: reimplement request time loading bar 2021-08-08 12:41:52 +05:30
Andrew Bastin
6599c5f5bf feat: introduce useNuxt composable 2021-08-08 12:39:02 +05:30
Andrew Bastin
13f6e5ff43 fix: remove keydown log 2021-08-08 12:13:59 +05:30
liyasthomas
4d76c83328 refactor: improved input validations 2021-08-08 12:01:36 +05:30
liyasthomas
fee19f3d7a Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-08-07 19:19:49 +05:30
Andrew Bastin
200fc738e8 fix: remove unused focus listeners in keybindings 2021-08-07 19:18:55 +05:30
Andrew Bastin
05294ac556 fix: remove unused focus listeners in keybindings 2021-08-07 18:51:14 +05:30
Andrew Bastin
93dfed74f8 feat: singlecharacter shortcuts 2021-08-07 18:43:38 +05:30
liyasthomas
3d963a7719 feat: floating input label 2021-08-07 14:51:13 +05:30
liyasthomas
92abbc4ce6 Merge branch 'main' into refactor/ui 2021-08-07 11:28:39 +05:30
Liyas Thomas
d111893302 Merge pull request #1766 from hughobrien/fix-well-known
fix: bad var names from oauth well.known config
2021-08-07 11:23:49 +05:30
Hugh O'Brien
967ad773eb Update oauth.js 2021-08-07 06:29:49 +01:00
Liyas Thomas
b036863dda Merge pull request #1765 from hughobrien/fix-oauth-param-names 2021-08-07 10:31:59 +05:30
Hugh O'Brien
ead9c23d9e fix: oauth token exchange param naming convention
https://developer.okta.com/docs/guides/implement-auth-code-pkce/exchange-code-token/
2021-08-07 05:48:44 +01:00
liyasthomas
8c60a4c032 refactor(ui): sort classes 2021-08-07 09:07:26 +05:30
liyasthomas
d08f15430c Merge branch 'main' into refactor/ui 2021-08-06 23:39:03 +05:30
Liyas Thomas
f71d93a684 Merge pull request #1762 from hughobrien/oauth-pkce-paramname-fix
fix: pkce params match rfc naming convention
2021-08-06 23:23:10 +05:30
Hugh O'Brien
44d1ad7422 fix: pkce params match okta naming convension 2021-08-06 18:45:09 +01:00
liyasthomas
346ece94b7 refactor(ui): a11y improvements 2021-08-06 21:40:26 +05:30
liyasthomas
3a96eb003b refactor(ui): group windi classes 2021-08-05 22:52:02 +05:30
liyasthomas
3bd78869a0 fix: responsiveness 2021-08-05 21:29:05 +05:30
liyasthomas
4b416586b7 fix: build 2021-08-05 19:43:46 +05:30
liyasthomas
20ffbe906f fix: sse, refactor(ui): tabs, feat: help button 2021-08-05 11:06:37 +05:30
liyasthomas
b2baeb0a5d fix(ui): realtime pages 2021-08-04 22:07:12 +05:30
Andrew Bastin
b524af174a feat: disable keybindings when a modal is open 2021-08-04 10:48:41 -04:00
liyasthomas
a4caeac584 refactor(ui): better select popovers 2021-08-04 11:20:23 +05:30
liyasthomas
b03565a816 fix: broken sticky sections on font size 2021-08-04 01:00:06 +05:30
liyasthomas
d0c0a543cf feat: font size picker 2021-08-03 21:35:01 +05:30
liyasthomas
17192c898b refactor(ui): teams 2021-08-03 16:50:28 +05:30
liyasthomas
7d913b0ee7 fix: build - lock deps 2021-08-03 10:45:11 +05:30
liyasthomas
db4521db5a fix: build - retire storybook 2021-08-03 10:24:32 +05:30
Andrew Bastin
10b7da0558 feat: live request url under the new system 2021-08-02 17:57:13 -04:00
Andrew Bastin
05f19cbb60 fix: remove legacy code in index.vue 2021-08-02 17:57:13 -04:00
liyasthomas
6d9ac84859 fix: use build commands mentioned in Netlify UI 2021-08-03 00:29:42 +05:30
liyasthomas
d9834d0fd1 feat: more storybook stories 2021-08-03 00:23:04 +05:30
liyasthomas
d84e2a8e9b feat: storybook 2021-08-02 21:38:04 +05:30
liyasthomas
13dbeaba35 Merge branch 'refactor/ui' into feat/storybook 2021-08-02 21:00:09 +05:30
liyasthomas
b615fe7529 feat: init new i18n format 2021-08-02 20:57:18 +05:30
liyasthomas
8a268ee6de refactor(ui): improved empty state for env variables and response sections 2021-08-02 10:00:50 +05:30
liyasthomas
2ae2acc003 fix: prevent enter key on content editable 2021-08-02 09:08:37 +05:30
Andrew Bastin
13d89b323e fix: tippy not appearing on envinput when typing and then hover 2021-08-01 23:15:15 -04:00
Andrew Bastin
6acb9be48c feat: envinput revalidates with environment changes 2021-08-01 23:05:15 -04:00
liyasthomas
d9d61b5b1d feat: tooltip on hovering environment variables 2021-08-02 08:08:41 +05:30
liyasthomas
2ee65e69dc fix: color contrast 2021-08-01 23:03:54 +05:30
liyasthomas
fd3b5ecf08 feat: actions in empty state 2021-08-01 20:04:25 +05:30
liyasthomas
6d67b1e51f chore(deps): bump 2021-08-01 20:03:27 +05:30
liyasthomas
79cea34fac Merge branch 'main' into refactor/ui 2021-08-01 18:19:40 +05:30
liyasthomas
b0b758a9c6 chore(deps): bump 2021-08-01 18:18:30 +05:30
liyasthomas
462d17de17 feat: auto increment headers and parameters list on input 2021-08-01 15:01:31 +05:30
liyasthomas
9afe415c2d feat: indicated valid and invalid environment variables with its value on hover 2021-08-01 14:42:32 +05:30
liyasthomas
1e4bb65db2 feat: environment aware smart input in parameters and headers 2021-08-01 13:07:07 +05:30
Andrew Bastin
fcb194d08a feat: effective url environment templates work with headers, url and params 2021-07-31 22:21:14 -04:00
Andrew Bastin
7354951d5a refactor: move Request.vue to composition api fully 2021-07-31 21:21:09 -04:00
Andrew Bastin
369bca90fc feat: use navigator clipboard to copy text is possible 2021-07-31 20:43:17 -04:00
liyasthomas
5275d365cb feat: selectable response headers entry 2021-08-01 00:11:45 +05:30
liyasthomas
e2fc056488 feat: make smart url feild the default input 2021-07-31 23:58:34 +05:30
liyasthomas
98d2b2ee9c feat: supported copy to clipboard utlity 2021-07-31 22:50:08 +05:30
Andrew Bastin
9441c76a12 fix: fix copy request link 2021-07-31 11:42:01 -04:00
liyasthomas
1ef7b52425 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-07-31 21:04:16 +05:30
liyasthomas
d88725b998 fix: inconsistent icon size 2021-07-31 21:04:03 +05:30
Andrew Bastin
a48ca25fa2 fix: and redeclaration 2021-07-31 11:32:50 -04:00
Andrew Bastin
28d636fa0d fix: update Netlify build Node version to 14 2021-07-30 23:39:50 -04:00
liyasthomas
2904084853 refactor: tests and results section 2021-07-31 00:51:41 +05:30
liyasthomas
a1eac2f348 refactor: cleanup documentation page 2021-07-30 21:06:25 +05:30
liyasthomas
203b45f4d5 refactor: cleanup 2021-07-30 13:52:43 +05:30
liyasthomas
2891da3c74 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-07-30 13:15:10 +05:30
Andrew Bastin
09d552b17a fix: fix cancel request issues and stream setup issues 2021-07-29 22:44:43 -04:00
Andrew Bastin
b524fa7248 feat: revamped keybinding implementation 2021-07-29 22:13:06 -04:00
Andrew Bastin
e138a5f846 fix: typescript error on clipboard 2021-07-29 18:13:17 -04:00
liyasthomas
82a5f56522 Merge branch 'main' into refactor/ui 2021-07-29 09:46:06 +05:30
liyasthomas
4f71e801d5 refactor(ui): minor improvements on buttons and actions 2021-07-28 22:23:43 +05:30
Andrew Bastin
d5cb9f135f fix: null reference when parsing error responses (fixes #1749) 2021-07-28 00:47:52 -04:00
liyasthomas
1a4d3dc91a feat: refactor modal component 2021-07-28 01:08:11 +05:30
liyasthomas
78fccc8583 feat: migrate all copy to clipboard actions to v-clipboard 2021-07-27 18:17:41 +05:30
liyasthomas
37ad8e08fc fix: build 2021-07-26 21:53:59 +05:30
liyasthomas
e60e8545a1 refactor(ui): better color schemes and empty states 2021-07-26 21:39:39 +05:30
liyasthomas
5258db345e refactor(ui): remaining realtime pages 2021-07-26 12:40:02 +05:30
liyasthomas
c3921bebf2 fix: proper padding and margins 2021-07-26 09:08:06 +05:30
liyasthomas
08d1f01e8e Merge branch 'main' into refactor/ui 2021-07-26 07:54:53 +05:30
liyasthomas
8bf9a1e821 chore(deps): bump 2021-07-26 07:52:15 +05:30
liyasthomas
8debb65d89 refactor(ui): better rendering with Inter font 2021-07-26 01:33:32 +05:30
liyasthomas
397cab9032 Merge branch 'main' into refactor/ui 2021-07-25 21:35:29 +05:30
liyasthomas
449c87802f chore(deps): bump 2021-07-25 18:41:26 +05:30
liyasthomas
3862a926ab fix: minor color scheme inconsistencies 2021-07-25 16:23:29 +05:30
liyasthomas
56c2e1094d refactor: wire remaining request actions 2021-07-25 11:15:53 +05:30
Andrew Bastin
4508e309c2 fix: fix typescript issues 2021-07-24 17:45:48 -04:00
liyasthomas
f0aaca2639 feat: slideover menus, minor ui fixes 2021-07-24 22:16:48 +05:30
liyasthomas
4c2a9c1229 refactor: types 2021-07-24 16:28:32 +05:30
liyasthomas
4de55c39dd refactor: graphql page to new ui 2021-07-24 14:10:28 +05:30
liyasthomas
84b94f3091 fix: minor input stylings 2021-07-24 11:23:10 +05:30
Liyas Thomas
2e94969a41 fix: uniform inputs 2021-07-23 19:12:31 +00:00
Liyas Thomas
09eabbdcea Merge branch 'main' into refactor/ui 2021-07-23 18:28:37 +00:00
Liyas Thomas
233214cb30 refactor: move actions from app header to app footer 2021-07-23 18:28:07 +00:00
liyasthomas
f694f1ad36 refactor: init new state for body 2021-07-23 00:07:39 +05:30
Andrew Bastin
dd004c921e fix: fix test script lint errors 2021-07-22 01:24:08 -04:00
Andrew Bastin
8597c04ff1 feat: test script and pre-request script wiring 2021-07-21 23:56:39 -04:00
Andrew Bastin
5f5f086dfc feat: fix loading state disappearing 2021-07-21 17:43:15 -04:00
liyasthomas
04cd5b0981 feat: zenmode + toggle left, right & header panes 2021-07-21 15:25:46 +05:30
liyasthomas
22772ac10f feat: migrate pre-request script, test script, settings to nuxt composition 2021-07-21 10:50:20 +05:30
liyasthomas
d4234f0837 fix: nullable analytic events 2021-07-21 10:15:29 +05:30
liyasthomas
982f467572 fix: remove unused deps 2021-07-21 09:02:37 +05:30
Andrew Bastin
f4ffb8e357 feat: move pre request script to new state system 2021-07-20 23:27:06 -04:00
Andrew Bastin
cd908ae1b2 feat: parse and run REST request params
* package-lock.json:
2021-07-20 19:12:04 -04:00
Andrew Bastin
1573ddad1b feat: initial attempt at restoring codegen 2021-07-20 19:12:04 -04:00
liyasthomas
2ace83bcaf fix: minor UI styling 2021-07-20 15:59:30 +05:30
liyasthomas
88ccda8fd1 feat: shortcuts indicator toggle 2021-07-19 22:12:56 +05:30
liyasthomas
ae8cf656a3 Merge branch 'refactor/codegen' into refactor/ui 2021-07-19 19:23:17 +05:30
liyasthomas
68c00433f5 refactor(ui): introduce landing page + minor fixes 2021-07-19 18:42:33 +05:30
liyasthomas
f1ad7b9ef5 chore(deps): bump 2021-07-18 20:41:51 +05:30
liyasthomas
27cf8660d8 Merge remote-tracking branch 'origin/main' into refactor/ui 2021-07-18 20:40:41 +05:30
liyasthomas
7105e7a86f chore(deps): bump 2021-07-18 20:37:06 +05:30
liyasthomas
e52ed7a5ce refactor(ui): minor inconsistency fixes 2021-07-18 18:53:51 +05:30
liyasthomas
393e6896ec refactor(ui): more pages 2021-07-18 13:17:58 +05:30
liyasthomas
6ebfb1f109 feat: init codegen state 2021-07-18 10:03:52 +05:30
liyasthomas
590c21209c refactor(ui): sort windicss classes 2021-07-17 23:10:28 +05:30
liyasthomas
e7b58b27e8 feat: init storybook 2021-07-16 20:35:15 +05:30
liyasthomas
a2a9bae0e3 refactor(ui): minor stylings 2021-07-16 20:34:35 +05:30
liyasthomas
3ef8e677c7 fix: wire response + init error handling 2021-07-15 09:40:45 +05:30
Andrew Bastin
86c9e09782 fix: theme flicker 2021-07-14 22:29:11 -04:00
liyasthomas
fa8662f17d Merge remote-tracking branch 'origin/main' into refactor/ui 2021-07-15 06:33:31 +05:30
Andrew Bastin
dcf34ea92c feat: pass headers to the ran request 2021-07-14 15:36:15 -04:00
Andrew Bastin
9ece8adda8 feat: response size and duration metrics 2021-07-14 14:54:53 -04:00
Liyas Thomas
c302f7e1a9 Merge pull request #1742 from s-r-x/fix/nil-response-time
fix: undefined duration
2021-07-14 12:51:09 +05:30
s-r-x
2907d69dfc fix: undefined duration 2021-07-14 10:55:57 +05:00
liyasthomas
eeddb6a97e fix: proper key for v-for loops 2021-07-14 05:19:08 +05:30
liyasthomas
7ec8539540 feat: new components and UI improvements 2021-07-13 22:07:01 +05:30
liyasthomas
5e740a6ed6 refactor(ui): minor stylings 2021-07-13 12:48:57 +05:30
liyasthomas
a4032836c3 feat: init new response state system 2021-07-13 11:07:29 +05:30
Andrew Bastin
ffc891f38e feat: add header session store fields and dispatchers 2021-07-12 20:17:13 -04:00
liyasthomas
93ea80a3e3 feat: init request state management 2021-07-12 09:11:55 +05:30
liyasthomas
68ff422a5f Merge remote-tracking branch 'origin/main' into refactor/ui 2021-07-12 07:05:29 +05:30
Andrew Bastin
54d21c4950 feat: url and params rewrite index.vue 2021-07-11 21:33:11 -04:00
Liyas Thomas
bfd9327e74 fix: raw <=> key-value toggle button 2021-07-12 01:21:40 +00:00
liyasthomas
498d0e18b9 Merge remote-tracking branch 'origin/main' into refactor/ui 2021-07-12 04:22:21 +05:30
liyasthomas
b5e524e513 refactor: remaining sections stylings 2021-07-12 04:20:00 +05:30
Liyas Thomas
c512c8d297 chore(deps): bump 2021-07-11 14:39:52 +00:00
liyasthomas
2e092d34a6 refactor: minor input stylings 2021-07-10 23:38:35 +05:30
liyasthomas
d94c8aec51 refactor: request section 2021-07-10 18:45:39 +05:30
liyasthomas
c7062ad613 refactor: modals 2021-07-09 22:49:45 +05:30
liyasthomas
08d0765cfb Merge remote-tracking branch 'origin/main' into refactor/ui 2021-07-09 13:11:12 +05:30
liyasthomas
1f0a3e97ae refactor: gql docs 2021-07-09 13:09:52 +05:30
Andrew Bastin
36745d79db feat: add page view to telemetry 2021-07-08 23:39:07 -04:00
liyasthomas
c6490818d0 feat: revamp graphql sidebar ui 2021-07-08 23:42:15 +05:30
liyasthomas
f1ef403c83 Merge remote-tracking branch 'origin/main' into refactor/ui 2021-07-08 14:03:41 +05:30
liyasthomas
cad7ecf760 feat: ask confirmation for telmetry 2021-07-08 14:00:18 +05:30
liyasthomas
8f7fcfa147 perf: even 2021-07-08 13:46:43 +05:30
liyasthomas
a3bde5797a Merge remote-tracking branch 'origin/main' into refactor/ui 2021-07-08 13:44:00 +05:30
liyasthomas
a070bed7c9 feat: revamp environments ui 2021-07-08 13:36:37 +05:30
liyasthomas
207dc2b6a6 feat: revamp collections ui 2021-07-08 13:00:41 +05:30
liyasthomas
fee0a8cec1 feat: ask confirmation for telmetry 2021-07-08 09:20:41 +05:30
Liyas Thomas
6635d449a5 feat: history section 2021-07-07 23:28:42 +00:00
Andrew Bastin
99b1699ade feat: disable telemetry calls if disabled 2021-07-07 16:40:31 -04:00
liyasthomas
20d38e247b feat: enable telemetry toggle button 2021-07-07 06:30:49 +05:30
Liyas Thomas
7c8ab6fd4a perf: even 2021-07-06 18:18:07 +00:00
Liyas Thomas
7bb570cdc7 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-07-06 18:13:49 +00:00
Liyas Thomas
fc5a5aad8d feat: init split layouts 2021-07-06 18:00:39 +00:00
Liyas Thomas
93d373c032 refactor(ui): popovers 2021-07-06 18:00:39 +00:00
Liyas Thomas
fde5b0717d fix: button icons 2021-07-06 18:00:39 +00:00
Liyas Thomas
069b26bdc4 feat: settings page 2021-07-06 18:00:39 +00:00
Liyas Thomas
8f3e4cfdba feat: refactor buttons 2021-07-06 18:00:39 +00:00
Liyas Thomas
ba7f5d3dc3 feat: tooltip and popover components 2021-07-06 18:00:39 +00:00
Liyas Thomas
42ce183510 feat: landing page + smart components 2021-07-06 18:00:39 +00:00
liyasthomas
977bad2156 refactor: init packages 2021-07-06 18:00:39 +00:00
Liyas Thomas
fd4f49cf8e refactor: settings page + ui components 2021-07-06 18:00:39 +00:00
Liyas Thomas
1b540c0e57 feat: refactor buttons 2021-07-06 18:00:39 +00:00
Liyas Thomas
0e443b3a43 feat: tooltip and popover components 2021-07-06 18:00:38 +00:00
Liyas Thomas
eaf0da3d00 feat: users section 2021-07-06 18:00:38 +00:00
Liyas Thomas
dd41ac3888 feat: landing page + smart components 2021-07-06 18:00:38 +00:00
liyasthomas
a0e26c6c4f refactor: init packages 2021-07-06 18:00:38 +00:00
liyasthomas
6ac7ce2c73 chore(deps): bump 2021-07-06 18:00:38 +00:00
Andrew Bastin
7b3dd697bb feat: pass theme data to analytics 2021-07-06 08:30:48 -04:00
Andrew Bastin
48e562dcee feat: theme syncing 2021-07-06 08:20:37 -04:00
Andrew Bastin
86bd4aa568 feat: add analytics logging while hoppscotch requests are fired 2021-07-05 21:47:48 -04:00
Liyas Thomas
ed91486d53 refactor(ui): popovers 2021-07-05 16:52:15 +00:00
Andrew Bastin
913b073ba4 feat: add initial analytics implementation 2021-07-05 12:45:10 -04:00
Andrew Bastin
b1418c081c feat: auth event subject 2021-07-05 12:44:43 -04:00
Andrew Bastin
6b373bee47 feat: update env with FB_MEASUREMENT_ID 2021-07-05 12:42:44 -04:00
Liyas Thomas
256d4b3e07 fix: button icons 2021-07-05 12:56:00 +00:00
Liyas Thomas
dc5a09bebc feat: settings page 2021-07-05 05:08:03 +00:00
Liyas Thomas
ababd79da2 Merge branch 'refactor/ui' of https://github.com/hoppscotch/hoppscotch into refactor/ui 2021-07-04 17:12:15 +00:00
Liyas Thomas
5e21210962 refactor: settings page + ui components 2021-07-04 17:00:30 +00:00
Liyas Thomas
3e3da2f27b feat: refactor buttons 2021-07-04 17:00:30 +00:00
Liyas Thomas
b55439ce44 feat: tooltip and popover components 2021-07-04 17:00:30 +00:00
Liyas Thomas
ff791098d8 feat: users section 2021-07-04 17:00:29 +00:00
Liyas Thomas
5abf837e95 feat: landing page + smart components 2021-07-04 17:00:29 +00:00
liyasthomas
6bcf1a3522 refactor: init packages 2021-07-04 17:00:29 +00:00
liyasthomas
b0f055567d chore(deps): bump 2021-07-04 22:27:18 +05:30
Liyas Thomas
1ee2fecbc2 feat: refactor buttons 2021-07-03 13:14:58 +00:00
Liyas Thomas
04b0cd2d3b feat: tooltip and popover components 2021-07-02 16:30:08 +00:00
Liyas Thomas
0439e6811b feat: users section 2021-07-02 08:55:03 +00:00
Liyas Thomas
a130cfcadb feat: landing page + smart components 2021-07-02 05:01:29 +00:00
Liyas Thomas
77fcc14043 Merge pull request #1737 from s-r-x/fix/duplicate-input-id
fix: duplicated input ids
2021-07-02 04:58:22 +05:30
liyasthomas
fb93db6ad4 refactor: init packages 2021-07-01 22:09:11 +05:30
s-r-x
47cf321eba fix: duplicated input ids 2021-07-01 15:10:51 +05:00
Liyas Thomas
b0ab1b048d refactor(ui): better GitHub buttons 2021-06-30 17:23:48 +00:00
liyasthomas
aaec87d7be docs: updated readme 2021-06-30 20:26:11 +05:30
liyasthomas
3198bc6b2c chore(deps): bump 2021-06-30 14:53:15 +05:30
liyasthomas
60be228c33 Merge branch 'refactor/sponsors' of https://github.com/hoppscotch/hoppscotch into refactor/sponsors 2021-06-30 14:27:38 +05:30
liyasthomas
22c3ffcc02 chore: removed sponsorship prompts 2021-06-30 14:21:16 +05:30
liyasthomas
b750ccd46f refactor: better implimentation for slots 2021-06-30 14:16:02 +05:30
liyasthomas
0dd0d262d6 Merge branch 'refactor/code' 2021-06-29 17:07:46 +05:30
liyasthomas
9a83938c75 refactor: better icon button states 2021-06-29 17:04:02 +05:30
liyasthomas
9b5b3cc202 ci: enforce commitlint + skip build on tests 2021-06-29 06:50:38 +05:30
liyasthomas
729f341164 fix: remove stale state file 2021-06-29 06:37:42 +05:30
liyasthomas
d5c5fb7435 refactor: better error prompts 2021-06-28 17:28:22 +05:30
liyasthomas
01b8001d4c chore: removed sponsorship prompts 2021-06-28 17:27:03 +05:30
liyasthomas
3992650fd6 fix: remove stale default environments state - fixed #1735 2021-06-28 08:48:07 +05:30
liyasthomas
a2354b5e9e feat: added commitlint, semantic pr 2021-06-28 00:24:16 +05:30
liyasthomas
43b7e94974 feat: setup firebase hosting for prod 2021-06-27 12:06:57 +05:30
Liyas Thomas
cdfce9e2b8 refactor: class names 2021-06-26 10:41:19 +00:00
Liyas Thomas
9bd86f0564 fix: minor stylings fixes 2021-06-26 00:19:42 +00:00
Liyas Thomas
1c0b5b25ed Merge pull request #1734 from hoppscotch/feat/windicss
feat: remove tailwindcss + introduce windicss
2021-06-26 05:21:13 +05:30
Liyas Thomas
6d33132705 feat: remove tailwindcss + introduce windicss 2021-06-25 23:44:27 +00:00
liyasthomas
3e5629e738 fix: typo 2021-06-21 16:39:51 +05:30
liyasthomas
41eb4f8395 refactor(ui): minor font tweaks 2021-06-21 16:31:40 +05:30
liyasthomas
6ddff58ba5 feat: better route determination - fixed #1732 2021-06-21 15:33:51 +05:30
liyasthomas
5bb9b1b675 chore: bump deps 2021-06-21 15:32:23 +05:30
Andrew Bastin
f4f29b8520 Fix localStorage usage 2021-06-21 00:27:45 -04:00
Andrew Bastin
257e2db651 Add no localstorage rule 2021-06-20 23:27:05 -04:00
liyasthomas
a853c13bcd Merge branch 'newstate/firebase' 2021-06-20 19:09:59 +05:30
liyasthomas
96c23200f7 chore: bump deps 2021-06-20 18:06:20 +05:30
Andrew Bastin
7c2becd3a4 Merge remote-tracking branch 'upstream/main' into newstate/firebase 2021-06-19 20:41:25 -04:00
Andrew Bastin
a85729b4cf Fix firebase reinitialization crash 2021-06-19 20:36:23 -04:00
Liyas Thomas
bd3cec18d8 Merge pull request #1727 from d4v3y0rk/patch-1 2021-06-20 05:47:23 +05:30
Dave York
7dcd96350a Cleaner Docker run command
added two flags to the docker run command to clean up the container after it has been run and also assign it a name to help manage it while it is running.
2021-06-19 12:09:03 -04:00
Ilya
2e1c0ae77a fix: janky sidebar animation (#1726) 2021-06-18 11:56:27 +05:30
liyasthomas
6a6754c7da feat: active toggle for web socket protocols 2021-06-18 10:45:48 +05:30
Andrew Bastin
1fb2c35984 Handle error.vue initializeFirebase 2021-06-17 08:22:59 -04:00
Andrew Bastin
02d3b45efc Added settings observable 2021-06-16 22:35:53 -04:00
Andrew Bastin
4ce7f0b487 Remove redudant applySettingFB 2021-06-16 22:33:17 -04:00
liyasthomas
3559d98df1 chore: lint 2021-06-16 19:13:07 +05:30
Liyas Thomas
0a4251825b feat: Sec-WebSocket-Protocol header on WebSocket connections - resolved #1620 2021-06-15 14:44:23 +00:00
Liyas Thomas
499cd9d81b Merge pull request #1723 from s-r-x/fix/broken-gql-col-req-edit 2021-06-15 18:24:52 +05:30
Liyas Thomas
10a6b96f13 Merge branch 'main' into fix/broken-gql-col-req-edit 2021-06-15 18:15:40 +05:30
Liyas Thomas
4e3d9187f7 Merge pull request #1721 from s-r-x/fix/modal-overlay-mouseup
fix: modal backdrop click
2021-06-15 18:13:02 +05:30
Andrew Bastin
0921cccb4c Reset save req selection when selected item is deleted 2021-06-15 08:26:01 -04:00
s-r-x
07a505c365 fix: broken gql collection request editor 2021-06-15 15:25:19 +05:00
s-r-x
c3411ba0cf fix: do not close modal if mousedown event was on the content but mouseup on the backdrop 2021-06-15 14:28:10 +05:00
Liyas Thomas
5246284e32 refactor(ci): minor optimizations 2021-06-15 08:40:03 +00:00
Ilya
5fe8fce89d refactor: modals (#1720)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-06-15 13:48:38 +05:30
liyasthomas
0cedc9ed51 chore: remove unused code 2021-06-15 06:34:21 +05:30
Liyas Thomas
7cbb61bdf8 chore(deps): bump 2021-06-14 15:43:21 +00:00
Andrew Bastin
b357dc8e2f Fix history sync issues 2021-06-14 09:24:46 -04:00
Andrew Bastin
f745fef6c2 Fix enter.vue firebase not loaded 2021-06-14 08:40:39 -04:00
Andrew Bastin
dfe810fff4 Fix Sign In With Github 2021-06-14 08:35:53 -04:00
liyasthomas
111a947413 feat: minor ui tweaks 2021-06-14 09:55:27 +05:30
Andrew Bastin
85c6932f8f Initial Firebase refactor pass 2021-06-14 00:11:57 -04:00
liyasthomas
ced2f1b911 feat: introduce animations 2021-06-13 20:31:42 +05:30
liyasthomas
685f9d506d chore(deps): bump 2021-06-13 16:25:22 +05:30
liyasthomas
34cd604a91 refactor(ui): minor ux improvements 2021-06-13 16:24:29 +05:30
liyasthomas
2ffd0be03f refactor(ui): better color names 2021-06-12 22:16:17 +05:30
liyasthomas
58296505a8 feat: show and hide sidebar - fixed #1716 2021-06-12 16:40:12 +05:30
Andrew Bastin
779f5e9af4 Merge pull request #1710 from hoppscotch/feat/email-auth
Passwordless sign in with email address
2021-06-11 01:14:06 -04:00
Andrew Bastin
2351f64e6f Merge branch 'main' into feat/email-auth 2021-06-11 01:10:19 -04:00
liyasthomas
03987da05b refactor: better ui + ux for email sign in 2021-06-11 10:29:52 +05:30
Andrew Bastin
07e2cb5cd9 Email login toast improvements 2021-06-11 00:25:58 -04:00
Andrew Bastin
9b43f9a40c Close email modal on login complete 2021-06-10 23:57:29 -04:00
liyasthomas
43b0225fba fix: broken create github gist for collections 2021-06-11 09:05:00 +05:30
Liyas Thomas
da491a2967 Merge branch 'main' into feat/email-auth 2021-06-11 05:33:16 +05:30
liyasthomas
be67986123 feat: sign in with email 2021-06-11 05:31:29 +05:30
liyasthomas
af9c7e0aff feat: add FundOSS toast 2021-06-10 19:26:03 +05:30
liyasthomas
27e061c355 setup: GitHub actions for tests and remove Travis CI 2021-06-10 11:02:24 +05:30
Liyas Thomas
da94a94d71 Merge pull request #1709 from JoelJacobStephen/main
Made changes to Black Mode to make UI elements more visible.
2021-06-09 08:52:58 +05:30
Joel Jacob Stephen
970c2e56d8 Made changes to Black Mode to make UI elements more visible. 2021-06-08 18:28:34 +05:30
liyasthomas
766c31fa56 chore: bump deps + refactor: consistent import / export modal 2021-06-07 15:22:34 +05:30
Andrew Bastin
50fa1c8f0a Fix import export for environments 2021-06-07 00:13:28 -04:00
Andrew Bastin
e361d66c88 Merge branch 'newstate/environments' into main 2021-06-06 23:12:41 -04:00
Andrew Bastin
f1203efa62 Fix firebase sync issue 2021-06-06 20:35:28 -04:00
liyasthomas
45b9f2e1bf fix: replace auto complete with drop down for content-types - fixed #1704 2021-06-06 20:56:56 +05:30
liyasthomas
538600354d chore(deps): bump 2021-06-06 16:36:02 +05:30
liyasthomas
5c9093823b chore: lint + minor ui tweaks 2021-06-06 16:35:30 +05:30
liyasthomas
7b6c4f71a2 patch: set application/json as default content-type 2021-06-06 15:52:54 +05:30
nelsontky
7e9ae69f38 fix: prevent overwrite of content type (#1703)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-06-06 03:12:50 -07:00
Andrew Bastin
ddbc9ca61b Inject globals env into pre-request scripts 2021-06-05 21:07:06 -04:00
Andrew Bastin
d9aa965069 Fix import of replaceEnvironments in fb.js 2021-06-05 20:55:51 -04:00
Andrew Bastin
6ea9d16f87 Add firebase sync code for new environment state system 2021-06-04 22:52:06 -04:00
Andrew Bastin
5bfeb541fc Initial environment state system refactor 2021-06-04 22:41:07 -04:00
liyasthomas
c3f713c0bd fix: break words on long texts - fixed #1699 2021-06-02 08:20:39 +05:30
Liyas Thomas
97979a6ab5 Merge pull request #1696 from JoelJacobStephen/main
Changing Hoppscotch Title from Hs to Hoppscotch for all sizes
2021-06-02 00:08:30 +05:30
Joel Jacob Stephen
055adf9fe0 Changing Hoppscotch Title from Hs to Hoppscotch for all sizes 2021-06-01 23:49:04 +05:30
Andrew Bastin
e94adc835d Merge pull request #1695 from JoelJacobStephen/main
Simplified the capitalization of Accent Color Names by using a function.
2021-06-01 13:24:32 -04:00
Joel Jacob Stephen
50bb8c4fdd Simplified the capitalization of Accent Color Names by using a function. 2021-06-01 22:44:22 +05:30
Andrew Bastin
aa0a340b95 Merge branch 'newstate/collections' into main 2021-06-01 00:12:40 -04:00
Andrew Bastin
41d21bc0ff Remove unwanted logs 2021-06-01 00:09:35 -04:00
liyasthomas
2de4b75b89 docs: add join beta form link 2021-06-01 07:11:05 +05:30
Andrew Bastin
b52cc9e2b4 Reimplement Body Param File input filtering for saving requests 2021-05-31 14:00:48 -04:00
liyasthomas
fea3843714 Merge branch 'newstate/collections' of https://github.com/AndrewBastin/hoppscotch into newstate/collections 2021-05-31 10:37:44 +05:30
Andrew Bastin
5df5d59f50 Drag and Drop for GraphQL requests in Collections pane 2021-05-30 23:30:28 -04:00
Andrew Bastin
062dd4f889 Linting 2021-05-30 23:30:28 -04:00
Andrew Bastin
948b027059 Remove GraphQL SaveRequest component 2021-05-30 23:30:28 -04:00
Andrew Bastin
4d057a39ed Migrate GraphQL to use SaveRequest modal instead of GQL one 2021-05-30 23:30:28 -04:00
Andrew Bastin
68c4efb1d3 fix: drag and drop on collections 2021-05-30 23:30:28 -04:00
Andrew Bastin
eda8c7da41 Initial Collection State System implementation
Co-authored-by: Liyas Thomas <hi@liyasthomas.com>
2021-05-30 23:30:28 -04:00
Liyas Thomas
ac1937f9be chore(deps): bump 2021-05-30 13:40:20 +00:00
liyasthomas
5f0f7693bb fix: import collections from file - removed store commit 2021-05-30 09:21:55 +05:30
Andrew Bastin
9ad22e2600 Linting 2021-05-29 22:43:05 -04:00
Andrew Bastin
fe8bbc6cc8 Remove GraphQL SaveRequest component 2021-05-29 22:38:18 -04:00
Andrew Bastin
795c5f8263 Migrate GraphQL to use SaveRequest modal instead of GQL one 2021-05-29 22:36:58 -04:00
Andrew Bastin
66bb9dc42b fix: drag and drop on collections 2021-05-28 00:23:11 -04:00
Andrew Bastin
70a350fdac Initial Collection State System implementation
Co-authored-by: Liyas Thomas <hi@liyasthomas.com>
2021-05-27 23:22:17 -04:00
Liyas Thomas
a795fc4310 release: v1.12.0 2021-05-27 15:11:01 +00:00
Liyas Thomas
790b743e42 fix: copy .env to root - fixed #1671 2021-05-27 14:08:21 +00:00
Andrew Bastin
21aeded2ea Update DispatchingStore to provide better typing for dispatch function parameters 2021-05-25 18:27:50 -04:00
liyasthomas
baf6d6bd29 refactor: lint options 2021-05-25 21:43:13 +05:30
Andrew Bastin
2e213a8692 Remove History test spec 2021-05-24 23:37:48 -04:00
Andrew Bastin
455cccebb5 Fix issue with clear history confirmation persisting after clearing 2021-05-24 23:37:48 -04:00
Andrew Bastin
9e602394cf Remove dependency on history component to add history entry 2021-05-24 23:37:48 -04:00
Andrew Bastin
46ebd49936 Refactor history entry limits 2021-05-24 23:37:48 -04:00
Andrew Bastin
fcac750ad7 Migrate code to new history store 2021-05-24 23:37:48 -04:00
Andrew Bastin
8cd3acd205 Introduce History store 2021-05-24 23:37:48 -04:00
liyasthomas
bc95a028ce chore(deps): bump 2021-05-23 18:48:48 +05:30
Andrew Bastin
5fb457d331 Fix Settings Sync issues 2021-05-22 21:48:15 -04:00
liyasthomas
454c11a12c chore: lint 2021-05-22 20:50:23 +05:30
Andrew Bastin
3ac9a418e6 Defer ChooseType teams list query until component visible 2021-05-20 22:21:12 -04:00
liyasthomas
c98de5988e fix: clean input value in modals - fixed #1662 2021-05-20 14:24:14 +05:30
Andrew Bastin
ca5df588b7 Fix UrlField tests 2021-05-19 22:41:16 -04:00
Andrew Bastin
08a41691af Revamp URLField 2021-05-19 22:25:00 -04:00
Andrew Bastin
665f272a0e Stylelint updates 2021-05-19 22:24:31 -04:00
Andrew Bastin
2591e3ab67 Add node-interval-tree as dep 2021-05-19 22:23:47 -04:00
liyasthomas
44df9b3be8 refactor: lint 2021-05-19 10:24:57 +05:30
liyasthomas
40ddfa8def refactor: lint 2021-05-18 21:39:55 +05:30
liyasthomas
cc27c552af refactor: lint 2021-05-18 14:57:29 +05:30
liyasthomas
7f248da0b3 refactor: lint 2021-05-18 11:56:59 +05:30
Andrew Bastin
79a0002594 Load through server side pagination for team members list 2021-05-17 12:27:36 -04:00
Andrew Bastin
a6c015bcc5 Make ESLint happy with fb.js 2021-05-17 12:26:57 -04:00
Andrew Bastin
692d98cb55 Make ESLint a bit more forgiving 2021-05-17 12:26:25 -04:00
liyasthomas
d9ddc184cb refactor: lint 2021-05-17 19:17:57 +05:30
liyasthomas
e424d06026 refactor: lint 2021-05-17 17:11:58 +05:30
liyasthomas
f9821e5f80 feat: eslint for typescript 2021-05-17 15:17:23 +05:30
Liyas Thomas
5bd53dc093 feat: eslint + stylelint 2021-05-17 05:55:50 +00:00
Liyas Thomas
204834872e refector: remove unused components 2021-05-17 03:19:53 +00:00
liyasthomas
a24049aa17 fix: dotenv 2021-05-16 14:10:39 +05:30
liyasthomas
9cb9e9e7b6 fix: dotenv 2021-05-16 12:53:40 +05:30
liyasthomas
3e7a766d12 Merge branch 'main' of https://github.com/hoppscotch/hoppscotch 2021-05-16 12:23:45 +05:30
liyasthomas
02debdc28b fix: use .env values - fixed #1639 2021-05-16 12:23:29 +05:30
liyasthomas
e104fe3021 chore(deps): bump 2021-05-16 12:21:28 +05:30
Andrew Bastin
dda40537cc Don't update BackendUserInfo if not authenticated 2021-05-15 21:52:31 -04:00
liyasthomas
217269467c docs: updated sponsors list 2021-05-16 04:08:56 +05:30
Liyas Thomas
5f193680c9 fix: minor UI stylings 2021-05-15 21:19:23 +00:00
Liyas Thomas
c0ef713c0b i18n: add Hindi and Norwegian (Bokmål) language (#1642)
Co-authored-by: Sindre van der Linden <sindre@allvis.io>
Co-authored-by: Deven Rathod <devenrathod2001@gmail.com>
2021-05-15 06:23:12 -07:00
Liyas Thomas
3533aa391a chore: lint 2021-05-15 12:43:31 +00:00
Liyas Thomas
ec90365427 Merge pull request #1641 from hoppscotch/teams 2021-05-15 14:08:03 +05:30
Liyas Thomas
78f7a9ba06 chore(deps): lock file 2021-05-15 08:26:22 +00:00
Liyas Thomas
7793dd8b3e Merge branch 'main' into teams 2021-05-15 08:11:03 +00:00
Liyas Thomas
76866f78f0 cleanup: remove logs 2021-05-15 06:47:13 +00:00
Liyas Thomas
8e3ecb4c25 fix: save location picker indicator 2021-05-15 05:45:05 +00:00
Andrew Bastin
1b9b2ac4c9 Fix SaveRequest modal selection 2021-05-15 00:02:55 -04:00
Andrew Bastin
489f14b88f Fixed issue in TeamCollectionAdapter with request updates 2021-05-14 01:59:08 -04:00
Liyas Thomas
8f09c82763 fixes and refactor 2021-05-14 05:50:17 +00:00
Andrew Bastin
2b8cda40a2 Introduce TeamMemberAdapter 2021-05-14 00:08:52 -04:00
Liyas Thomas
4656d67fcf fix: teams edit modal + race conditions on currentUser 2021-05-14 03:40:53 +00:00
Andrew Bastin
e7dd67deaa Update race condition with Apollo getting ID Token and BackendUserInfo 2021-05-13 22:42:04 -04:00
Andrew Bastin
b9c3219094 Hide "Team Collections" tab if user has no access 2021-05-13 20:16:41 -04:00
Andrew Bastin
f55a995c0a Introducing BackendUserInfo 2021-05-13 20:16:29 -04:00
Andrew Bastin
ee378a128c Introduce observable function for team member list 2021-05-13 02:28:35 -04:00
Liyas Thomas
c1f083d19f fix: indicate selected location on save request 2021-05-13 04:26:33 +00:00
Liyas Thomas
2ff0f97295 refactor: request actions + fix: timeout bug 2021-05-12 05:33:15 +00:00
Andrew Bastin
dd3b51d0b7 Use Intersection component to fetch team list on visibility 2021-05-11 23:39:23 -04:00
Andrew Bastin
853acfda2c Introduce Intersection component 2021-05-11 23:38:47 -04:00
Liyas Thomas
c756be54a1 refactor: separate request components for team & my collections 2021-05-11 13:10:36 +00:00
Liyas Thomas
3bbf334f99 refactor: separate folders for team and personal collections 2021-05-11 05:49:36 +00:00
Liyas Thomas
c6c8b7da6a chore(deps): bump 2021-05-09 14:59:24 +00:00
Liyas Thomas
8a30d3ed42 refactor: separated my collections and tam collections 2021-05-09 07:48:52 +00:00
Andrew Bastin
a5a6b864a5 Fix issue with child collection not rerendering 2021-05-09 02:08:48 -04:00
Liyas Thomas
97b7320939 move collections actions to parent 2021-05-09 05:30:31 +00:00
Andrew Bastin
5c11bcb2c6 Update TeamCollectionAdapter with more docs 2021-05-06 21:22:17 -04:00
Andrew Bastin
3888584b58 Initial refactor of the collections list and friends 2021-05-06 20:46:29 -04:00
Andrew Bastin
531a9c0bc8 Update team_utils imports 2021-05-06 12:21:53 -04:00
Andrew Bastin
84f8048e0a Initial introduction of TeamCollectionAdapter based collection render 2021-05-06 12:06:19 -04:00
Andrew Bastin
fdf96b0b63 Fixed build time issue with TeamCollectionAdapter 2021-05-06 12:05:45 -04:00
Andrew Bastin
86ddfe2c9f Introduce TeamCollectionAdapter 2021-05-05 10:44:17 -04:00
Andrew Bastin
115ae93073 Merge pull request #1625 from iamtabrezkhan/issue-1507
FEAT: add syntax highlighting in Code Generator Modal
2021-05-04 22:57:45 -04:00
Andrew Bastin
aa65cada6f Merge branch 'main' into issue-1507 2021-05-04 22:44:11 -04:00
Andrew Bastin
ad9cdf3fa8 Update team/utils code style 2021-05-04 22:18:46 -04:00
Liyas Thomas
5c0035f4c3 chore(deps): bump 2021-05-04 19:36:50 +00:00
Liyas Thomas
37b4c67ead docs: updated sponsors list 2021-05-04 19:36:23 +00:00
Liyas Thomas
63998f4a23 minor UI styling 2021-05-04 14:02:19 +05:30
Liyas Thomas
efeec13794 set default export language as cURL 2021-05-03 19:14:26 -07:00
Liyas Thomas
6c49e5c86a fix: race condition where no language is selected 2021-05-03 19:12:13 -07:00
Andrew Bastin
ec57392424 Fixed subscriptions authorization 2021-05-03 09:57:58 -04:00
Andrew Bastin
8713aa7fd3 Remove @nuxtjs/apollo and added vue-apollo as dep 2021-05-03 09:22:39 -04:00
Andrew Bastin
627811f28d Refactor Apollo Client handling 2021-05-03 09:18:24 -04:00
Tabrez Khan
3f743b4f61 FEAT: add syntax highlighting in Code Generator Modal
USE: SmartAceEditor componenent
2021-05-03 14:46:41 +05:30
Liyas Thomas
d676b5a68d chore(deps): bump rxjs 2021-05-03 05:08:39 +00:00
Liyas Thomas
a6dfab5fbf chore(deps): bump 2021-05-02 15:21:27 +00:00
Liyas Thomas
b8bc110d33 check existance of teamCollectionAdded.parent
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-05-02 03:49:00 +00:00
Andrew Bastin
597fd2c6d1 Fix duplication on teams folder creation 2021-04-29 23:50:50 -04:00
Liyas Thomas
ab0bc3e927 fix: permissions for collections and folders 2021-04-30 01:04:41 +00:00
liyasthomas
e28373dae1 fixes
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-04-29 14:03:39 +05:30
Liyas Thomas
1bc57f159c merge feat/teams-new-ui
Co-authored-by: Isha Gupta <40794215+IshaGupta18@users.noreply.github.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Osheen Sachdev <45964755+oshhh@users.noreply.github.com>
Co-authored-by: Rohan Rajpal <rohan46000@gmail.com>
Co-authored-by: Raghav Gupta <raghav.gupta0307@gmail.com>
2021-04-26 09:37:18 +00:00
Liyas Thomas
6a8019c7a0 chore(deps): bump 2021-04-25 16:38:09 +00:00
Liyas Thomas
9b0dc5a849 Merge pull request #1615 from hoppscotch/feat/links 2021-04-23 04:46:54 -07:00
Liyas Thomas
283e1b0790 chore(deps): bump 2021-04-23 11:39:20 +00:00
Liyas Thomas
fc05a4bb78 docs: better copy 2021-04-23 11:38:56 +00:00
Liyas Thomas
88b32e317a docs: update links 2021-04-23 11:38:17 +00:00
Liyas Thomas
6c61a70d58 docs: updated built with stack, ideas for externship 2021-04-22 01:01:39 +00:00
Osheen Sachdev
5df3ebae22 Documentation generation (#1610)
Co-authored-by: Isha Gupta <40794215+IshaGupta18@users.noreply.github.com>
Co-authored-by: IshaGupta18 <ishagupta1828@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-04-21 10:17:31 -07:00
Liyas Thomas
ad252476ce docs: update GitHub Externship guidelines 2021-04-20 11:20:01 +00:00
Liyas Thomas
8e5f6a3a96 GitHub Externship @ Hoppscotch 2021-04-20 10:37:46 +00:00
Liyas Thomas
9ff209bd32 Merge pull request #1608 from hoppscotch/dependabot/npm_and_yarn/ssri-6.0.2
chore(deps): bump ssri from 6.0.1 to 6.0.2
2021-04-19 09:27:15 -07:00
dependabot[bot]
505e61475d chore(deps): bump ssri from 6.0.1 to 6.0.2
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-19 16:22:02 +00:00
Liyas Thomas
2c137a0eec chore(deps): bump 2021-04-18 15:09:32 +00:00
Liyas Thomas
b65ae89be6 fix: respect environment variable in inline query parameters - fixed #1603 2021-04-15 10:04:23 +00:00
Liyas Thomas
432884a2af Select multiple collections (#1604) (#1605) 2021-04-15 01:01:15 -07:00
Osheen Sachdev
6878498b2e Fix folder nesting in document generation (#1602) 2021-04-14 17:54:55 -07:00
Jainal Gosaliya
4d5332fef7 fixes empty url bug during importing postman json (#1593)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-04-13 21:44:50 -07:00
Andrew Bastin
50a149b662 Bump graphql-language-service-interface and fix build issues 2021-04-12 11:50:25 -04:00
Liyas Thomas
930838d676 chore(deps): bump 2021-04-12 08:14:19 +00:00
Liyas Thomas
f6c952ffb0 v1.10.0 2021-04-10 14:49:43 +00:00
Joel D Souza
f6db530de2 Sync bodyParams and rawBodyParams (#1562)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Joel DSouza <joel.dsouza@kapturecrm.com>
2021-04-10 01:03:37 -07:00
Liyas Thomas
db45f08905 fix: add query from cURL import - fixed #1582 2021-04-08 11:31:24 +00:00
Liyas Thomas
516d53f9bf chore(deps): bump + docs: add docker pulls badge 2021-04-02 06:46:50 +00:00
Liyas Thomas
c7e1adf638 chore(deps): bump + ui: full width container 2021-03-31 15:44:26 +00:00
Liyas Thomas
31147975c7 i18n translations (#1572)
* Suppletments some tranlations on zh-CN

* Update de-DE.json

Co-authored-by: mrhanson <chihanghanson@gmail.com>
Co-authored-by: 0xflotus <0xflotus@gmail.com>
2021-03-30 13:29:57 -07:00
Liyas Thomas
b9deec1487 chore(deps): bump + docs: remove absolute instructions from readme 2021-03-30 05:00:24 +00:00
Liyas Thomas
de57208bab Merge pull request #1566 from AndrewBastin/main
Bump minor dep updates and update Tab test spec
2021-03-28 17:25:23 +05:30
Andrew Bastin
07e966c640 Bump minor dep updates and update Tab test spec 2021-03-27 23:47:35 -04:00
Liyas Thomas
56982effcd feat: support custom router base property - fixed #1561 2021-03-24 13:18:33 +00:00
Liyas Thomas
8a52b0fbd6 fix: broken grapgql query fetch 2021-03-24 05:20:01 +00:00
Liyas Thomas
2190a1b6fd chore(deps): bump + fix: only allow one from extension and proxy 2021-03-23 19:48:00 +00:00
Andrew Bastin
c18c2ea9d4 Fix settings data migration issues 2021-03-23 11:34:19 -04:00
Andrew Bastin
5fce1118f6 Revamp of the Settings State System along with TypeScript support (#1560)
* Add vue-rx, rxjs and lodash as dependencies

* Added vue-rx plugin integration to nuxt config

* Initial settings store implementation

* Add babel plugin for private class properties to for Jest

* Add DispatchingStore test spec

* Initial settings code

* Reactive Streams for fb current user and id token

* Fix typo

* Migrate index and graphql pages to the new store

* Migrate network strategy to the new store

* Fixed Section.vue errors

* Fix getSettingSubject issue

* Migrate fb settings reference in components to the new state system

* Add typings for lodash as dev dependency

* Load setting

* Load initial sync setting values

* Update proxy url

* Add typescript support

* Rewrite Settings store to TypeScript

* Port Settings page to TypeScript as reference

* Move all store migrations to a separate file

* Delete test file for fb.js

* Add ts-jest as dev dependency

* Remove firebase-mock as dependency

* Remove FRAME_COLORS_ENABLED settings value
2021-03-23 11:18:14 -04:00
Liyas Thomas
64f64b9e31 fix: disable resize on ace editor - fixed #1110 2021-03-23 09:39:14 +00:00
Liyas Thomas
b4ac527638 fix: restore previous theme colors - fixed #1559 2021-03-22 16:36:57 +00:00
Liyas Thomas
352f3af737 refactor: show sub-folders before requests inside folders 2021-03-22 11:53:36 +00:00
Liyas Thomas
c7c221ad5e Merge pull request #1554 from farhan-tariq/show-sub-folders-first
Show sub-folders first instead of requests
2021-03-22 08:31:55 +05:30
Liyas Thomas
74adbae7ed chore(deps): bump 2021-03-22 02:55:47 +00:00
Farhan Tariq
8a5402932c Show sub-folders first instead of requests 2021-03-21 19:49:03 +05:00
Isha Gupta
e565f9bf72 GraphQL collections (#1536) 2021-03-18 20:25:12 +05:30
Liyas Thomas
942b86c647 refactor: upgrade tailwindcss 2021-03-17 18:00:58 +00:00
Liyas Thomas
1042310038 Merge pull request #1542 from JDevx97/fix/1541/query-parameters-url-encoding 2021-03-16 21:18:58 -07:00
Liyas Thomas
d0c261b9cd Merge branch 'main' into fix/1541/query-parameters-url-encoding 2021-03-16 21:12:52 -07:00
liyasthomas
61396cbb15 download fonts to same site origin 2021-03-17 09:23:16 +05:30
Jayce Dugan
87c6230ef2 Fix: Whitespace & URL encoding applied to query parameters.
fix: String.trim() applied to query parameter keys and values to remove additional whitespace.

fix: encodeURI() applied to query string before being applied to request url path.
2021-03-16 22:45:07 +00:00
Liyas Thomas
347ad94a43 fix: minor UI spacing issues 2021-03-16 09:11:19 +00:00
Liyas Thomas
f1389cdba0 TailwindCSS v2.x (#1540) 2021-03-16 01:49:21 -07:00
Liyas Thomas
5399ddf6ac docs: updated description 2021-03-14 15:15:57 +00:00
Liyas Thomas
a724dc1207 proxy.hoppscotch.io (#1532)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-03-14 08:54:15 +05:30
Liyas Thomas
c6af38f7dc docs: updated sponsors list 2021-03-12 15:41:44 +00:00
Liyas Thomas
4d0008186b fix: only show recent 50 synced history entries - fixed #1530 2021-03-12 17:35:16 +05:30
Liyas Thomas
df3df6697e chore(deps): bump + docs: update sponsor list 2021-03-12 08:39:21 +00:00
Liyas Thomas
13ff7b9088 docs: updated screenshots + feature list 2021-03-11 14:59:16 +00:00
Liyas Thomas
196d252fec Merge pull request #1533 from jamesgeorge007/docs/add-ons
docs: add reference to hopp-doc-gen add-on
2021-03-11 16:51:32 +05:30
jamesgeorge007
53dfdc440d docs: add reference to hopp-doc-gen 2021-03-11 15:25:18 +05:30
Liyas Thomas
988a99efb7 fix: history order on cloud sync 2021-03-11 13:51:22 +05:30
Liyas Thomas
17da230d72 fix: remove sort history entries + fix history entries order - fixed #1455 2021-03-11 06:53:49 +00:00
Liyas Thomas
c8cdfc8885 Merge pull request #1531 from hoppscotch/audit/pwa
Added source=pwa on PWA start URL
2021-03-11 08:52:45 +05:30
Osheen Sachdev
0b00842c50 [Feat: GraphQL sidebar] GraphQL History (#1528)
* Create REQUIREMENTS.md

* graphql history UI

* rest history emit

* removed requirements file

* add, delete, clear, star history and sync with firstore

* use history

* empty schema

* remove other tabs

* computed query, setting headers

* binding props

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>

* remove print

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>

* remove dummy data

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>

* add docs tab

* date, time attribute --> updatedOn

* Removed margin from sidebar Tab

* removed v-bind

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>

* use shortcut for v-bind

* use shortcut for v-bind

* use unfold icons

* use template literals in :key

* history clear bug

* delete history bug

* minor translation

* remove console logs

* remove unused css

* add stared style

* remove absolute styles

* tests for graphql card

* tests for rest card

* tests for clear history added

* mount, clear, use, delete history tests added

* Rename card.vue to Card.vue

* Rename card.vue to Card.vue

* use computed

Co-authored-by: Isha Gupta <40794215+IshaGupta18@users.noreply.github.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-03-10 22:12:09 -05:00
Liyas Thomas
17e405a39e feat: added source=pwa on PWA start URL 2021-03-10 23:51:58 +00:00
Liyas Thomas
51bd3455cc chore(deps): bump 2021-03-09 15:28:41 +00:00
Liyas Thomas
e292af75ad meta: updated sponsors link 2021-03-09 15:28:15 +00:00
Liyas Thomas
ef4566eb95 refactor: show interaction while dragging request in collections 2021-03-08 04:02:08 +00:00
Liyas Thomas
e7d1ffb7ae chore: deps bump 2021-03-06 17:36:56 +00:00
Liyas Thomas
4fded3ada3 i18n translations (#1527)
Co-authored-by: Yohann Fabri <11197007+YoranSys@users.noreply.github.com>
Co-authored-by: Muhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com>
Co-authored-by: UioSun <uio.sun@soundws.com>
2021-03-04 09:13:31 +05:30
Liyas Thomas
dc5ca76d05 rename all components to new namespace (#1515)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-03-01 09:28:14 +05:30
Liyas Thomas
37bdd525ea refactor: replace fonts with Google fonts module 2021-02-25 16:08:12 +00:00
Liyas Thomas
3f03806455 Set schedule interval to weekly 2021-02-23 17:14:33 +00:00
harshlele
ff7bb1f303 response outline for JSON responses (#1484)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-02-23 08:09:16 +05:30
Liyas Thomas
5fe1de170d chore(deps): bump 2021-02-23 01:49:23 +00:00
Liyas Thomas
72913ccece chore(deps): bump + sort tailwind classes 2021-02-20 15:39:37 +00:00
Liyas Thomas
a6207e7edf chore(deps): bump + docs: updated readme 2021-02-19 17:33:37 +00:00
Liyas Thomas
2972ac6328 Support multipart/form-data content-type (#1485)
* Initial UI refactor - move raw and key-value body to components and tabs

* Delete package-lock.json

* deps

* Add multipart/form-data as a content type

* fix: add default contentType value

* Allow http body param request body with multipart/form-data

* Add form data to vuex

* move raw body components to 'Raw Request Body' tab

* Add files addition logic

* Set Dockerfile to run nuxt in dev mode

* Set Dockerfile to run nuxt in dev mode

* Draft version of file upload

* refactor: clean up

* Add file chip to denote file input

* Remove console.log

* refactor(ui): matching styles

* refactor(ui): matching styles

* fix(ui): mobile responsiveness

* fix(ui): mobile responsiveness

* refactor: minor cleanup

* Remove file from any form of persistence

* Add warning that form data files will not be saved to local storage

* Add remove file functionality

* Prevent file from being saved to collections

* Remove console.log

* fix active toggle on multipart/form-data + cleanup

* auto import components

Co-authored-by: nelsontky <nelson@ccb.wtf>
2021-02-19 22:31:31 +05:30
Liyas Thomas
d90550438f chore(deps): bump 2021-02-15 18:13:40 +00:00
Liyas Thomas
aa0f08cba3 chore(deps): bump 2021-02-14 21:27:47 +05:30
Liyas Thomas
a1b39d4fbc docs: updated sponsorship assets 2021-02-13 07:22:27 +05:30
Liyas Thomas
091a160db3 docs: updated sponsors list 2021-02-13 00:52:44 +05:30
Liyas Thomas
03f6336ac5 chore(deps): bump 2021-02-12 23:57:14 +05:30
Liyas Thomas
24c4cfe586 chore(deps): bump 2021-02-10 20:19:09 +05:30
Liyas Thomas
ca0c858e0f fix: broken mobile responsiveness - fixed #1472 2021-02-10 19:53:47 +05:30
Andrew Bastin
2be9a0bdba Merge pull request #1471 from KoHcoJlb/interface_and_enum_types
graphql: show enums and interfaces
2021-02-08 21:18:24 -05:00
Andrew Bastin
d333a44e11 Minor cleanup of type.vue 2021-02-08 21:11:18 -05:00
Andrew Bastin
e8e855a36c Added tests for the added functionality in type.vue and typelink.vue 2021-02-08 21:08:30 -05:00
Igor Stuzhuk (KoHcoJlb)
09719a4ad3 fix type tests 2021-02-08 14:02:01 +02:00
Igor Stuzhuk (KoHcoJlb)
c9e542d6d5 graphql: show enums and interfaces
make scalars not clickable
2021-02-07 22:18:20 +02:00
Liyas Thomas
a32ce56295 i18n (#1470) 2021-02-07 06:52:21 +05:30
Andrew Bastin
279c8c14cc Disabling GQL schema polling if there was an error 2021-02-06 19:37:45 -05:00
Liyas Thomas
49bc2c2204 Merge branch 'main' of https://github.com/hoppscotch/hoppscotch 2021-02-05 06:07:55 +05:30
Liyas Thomas
c036c945bd chore(deps): bump 2021-02-05 06:02:09 +05:30
Andrew Bastin
2e2cce9fcb Merge pull request #1457 from KoHcoJlb/fix-graphql-types-view
Fix "jump to graphql type" and show graphql input types
2021-02-02 12:52:27 -05:00
Igor Stuzhuk (KoHcoJlb)
7f33798789 graphql: fix "jump to type" and show input types 2021-02-02 16:10:51 +02:00
Liyas Thomas
e299433e6e Merge branch 'main' of https://github.com/hoppscotch/hoppscotch 2021-02-02 10:23:11 +05:30
Liyas Thomas
c82cb67bb6 chore(deps): bump 2021-02-02 10:22:31 +05:30
Andrew Bastin
075e11a7e1 Fix extension tick mark not appearing 2021-02-01 10:03:18 -05:00
Liyas Thomas
2b2c968a97 fix: revert axios interceptor and use normal time data - fixed #1449 2021-01-31 08:18:25 +05:30
Liyas Thomas
bffdb39c02 fix: decode url and path before saving to collection - fixed #1451 2021-01-30 22:19:19 +05:30
Liyas Thomas
3dabd73e95 chore(deps): bump 2021-01-30 22:17:50 +05:30
Liyas Thomas
8ed30e7eda chore(deps): bump 2021-01-28 21:28:36 +05:30
Liyas Thomas
7e4297d9bf Accurate response time and size (#1441)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2021-01-28 13:09:31 +05:30
Liyas Thomas
99e634711e chore(deps): bump 2021-01-26 20:09:19 +05:30
Kévin Dunglas
07f370d6d2 feat: better media types detection for JSON, XML and HTML lenses (#1438)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-01-26 09:57:11 +05:30
Kévin Dunglas
d2dfb4c8df fix: status code detection (#1440) 2021-01-25 06:50:50 +05:30
Liyas Thomas
64ee01d9fe Merge pull request #1439 from dunglas/feat/jsonld
feat: add JSON-LD to the list of known content types
2021-01-25 06:38:34 +05:30
Kévin Dunglas
a8d5ab035d feat: add JSON-LD to the list of known content types 2021-01-24 18:25:39 +01:00
Liyas Thomas
f58c6807d0 fix: encoding parameters twice effecting codegen - fixed #1437 2021-01-24 07:42:07 +05:30
Liyas Thomas
ca66b47014 refactor: better copy 2021-01-23 19:43:11 +05:30
Liyas Thomas
290781e734 feat: 'New version found. Refresh to update' toast 2021-01-23 17:22:54 +05:30
Liyas Thomas
d403e10018 docs: added contributors welcome badge + updated sponsors list 2021-01-23 12:40:40 +05:30
Liyas Thomas
161a0e07f9 refactor(codeql): removed unused variables 2021-01-23 11:40:29 +05:30
Liyas Thomas
eb9b0c85a9 chore(deps): bump 2021-01-23 11:38:37 +05:30
John Harker
c7f7b96405 Update Proxy URL (#1436)
* Update proxy URLs

* Update URLs in Vue file

Had to edit with web editor to avoid vs code changing indentation.

* Delete settings.json

Co-authored-by: Sam Jakob Mearns <me@samjakob.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-01-22 10:43:44 +05:30
Andrew Bastin
c5dff96f57 Better JS language integration for Pre-Request scripts and Test scripts (#1422)
* Add tern as dependency

* Add build rule to transpile mjs

* Initial implementation of the auto complete engine

* Separate out the tern server code to separate file

* Added extra type defs for tern server

* Boost the pw completion result to the top of the list

* Added acorn and acorn-walk as dependency

* Semantic linting powered by tern

* Fix DeepCode warnings for js-editor

* Remove unused registerLint tern extension

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2021-01-22 07:04:02 +05:30
Liyas Thomas
ff418ad55f chore(deps): bump 2021-01-20 21:23:13 +05:30
Liyas Thomas
6b0da0a568 fix: delete request from collection modal not closing 2021-01-18 22:08:48 +05:30
Liyas Thomas
56151982a7 chore(deps): bump 2021-01-17 22:44:58 +05:30
Liyas Thomas
c8185050f6 feat: GitHub buttons 2021-01-16 18:40:18 +05:30
Liyas Thomas
ed20b009a5 refactor: removed sponsorship prompt 2021-01-16 17:00:03 +05:30
Liyas Thomas
bf0bcf2f72 chore(deps): bump 2021-01-15 23:27:07 +05:30
Liyas Thomas
d81e80f273 chore(deps): bump 2021-01-13 20:23:14 +05:30
Liyas Thomas
6afed0e035 chore(deps): bump + fix(typo): extension repo link 2021-01-12 13:21:48 +05:30
Liyas Thomas
0a39e7b02f feat: Active toggle for GraphQL headers 2021-01-08 21:55:31 +05:30
Liyas Thomas
01a45f3085 chore(deps): bump 2021-01-08 21:53:21 +05:30
Liyas Thomas
c61764cd8d chore(deps): bump 2021-01-06 08:47:37 +05:30
Liyas Thomas
ce20f5d0a2 chore(deps): bump 2021-01-05 05:48:25 +05:30
Liyas Thomas
ffa9210286 fix: broken file name extension while downloading response 2021-01-04 07:25:03 +05:30
Liyas Thomas
025ead4fa3 chore(deps): bump 2021-01-04 06:37:59 +05:30
Liyas Thomas
82de03101b fix: throwing error when settings key being empty - fixed #1409 2021-01-04 06:25:02 +05:30
Liyas Thomas
eae071f9b8 doc: updated screenshots 2021-01-02 23:09:46 +05:30
Liyas Thomas
aadad482c4 chore(deps): bump + updated sponsors list 2021-01-02 20:57:28 +05:30
Gerardyang
cb8b98f707 Fix a missing close parenthesis before '.then' (#1407) 2021-01-02 20:49:42 +05:30
Liyas Thomas
603a888e2e chore(deps): bump + fix: typo in docker commands 2020-12-31 17:22:58 +05:30
Liyas Thomas
9e3083cc5d Merge pull request #1404 from hoppscotch/dependabot/npm_and_yarn/v-tooltip-2.1.0
chore(deps): bump v-tooltip from 2.0.3 to 2.1.0
2020-12-31 05:42:48 +05:30
dependabot[bot]
ab9f2c0a66 chore(deps): bump v-tooltip from 2.0.3 to 2.1.0
Bumps [v-tooltip](https://github.com/Akryum/vue-tooltip) from 2.0.3 to 2.1.0.
- [Release notes](https://github.com/Akryum/vue-tooltip/releases)
- [Commits](https://github.com/Akryum/vue-tooltip/compare/v2.0.3...v2.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-31 00:05:42 +00:00
Liyas Thomas
e84888c27e fix: broken import cURL #1159 2020-12-30 18:43:56 +05:30
Liyas Thomas
4dfc91db0a chore(dev-deps): bump 2020-12-30 11:12:56 +05:30
Liyas Thomas
5705df96f3 Merge branch 'main' of https://github.com/hoppscotch/hoppscotch 2020-12-29 07:16:45 +05:30
Liyas Thomas
9ac0cf1406 fix: decodeURI() failing on malformated URI + chore(deps): bump 2020-12-29 07:13:46 +05:30
Liyas Thomas
71170a1c5d feat: input toggle for parameters and headers (#1388)
* feat: toggler for parameters and headers

* refactor: move bodyParams to separate component + feat: input toggle

* fix: backward copaitability

* Fixed issue with imported active prop mutations

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2020-12-28 06:02:41 +05:30
Liyas Thomas
353978f115 Merge branch 'main' of https://github.com/hoppscotch/hoppscotch into main 2020-12-27 18:38:14 +05:30
Liyas Thomas
e89065aafc chore(deps): bump 2020-12-27 18:37:45 +05:30
Andrew Bastin
ff35ccbaec Merge pull request #1398 from carlos-ds/unit-tests
Unit tests for the remaining test methods
2020-12-23 21:02:48 -05:00
Liyas Thomas
529d5b0535 Merge branch 'main' into unit-tests 2020-12-23 06:00:16 +05:30
Karel De Smet
15ecb19c65 Added extra test for error handling 2020-12-22 21:15:20 +01:00
Karel De Smet
a64b32d12c Test for toBeType() 2020-12-22 21:12:53 +01:00
Karel De Smet
f53ac25d90 Test for toHaveLength() 2020-12-22 20:05:56 +01:00
Karel De Smet
de1d06528e Test for toBeLevel5xx() 2020-12-22 19:33:27 +01:00
Karel De Smet
ea227e09fa Explicitly pass radix 10 to parseInt functions in toBeLevelxxx() to avoid unexpected results 2020-12-22 19:19:21 +01:00
Liyas Thomas
46cbd6dfd2 chore(deps): bump 2020-12-22 20:31:13 +05:30
Karel De Smet
a61e6efdd4 Test for toBeLevel4xx() 2020-12-22 08:10:54 +01:00
Karel De Smet
6536d71566 Merge https://github.com/hoppscotch/hoppscotch into unit-tests 2020-12-22 08:02:03 +01:00
Karel De Smet
d92412175c Test for toBeLevel3xx() 2020-12-22 08:01:55 +01:00
Liyas Thomas
a3b7f9a739 Updated collaborators list 2020-12-21 23:56:35 +05:30
Karel De Smet
5367a23112 #1396: Fixed assertions for toBeLevelxxx() functions (#1397)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-12-21 22:42:53 +05:30
Karel De Smet
3614f5b620 Test for toBeLevel2xx() 2020-12-21 17:35:40 +01:00
Liyas Thomas
eac7954570 chore(deps): bump 2020-12-21 21:39:28 +05:30
Liyas Thomas
7d08da22b2 Merge branch 'main' of https://github.com/hoppscotch/hoppscotch into main 2020-12-20 12:26:04 +05:30
Liyas Thomas
756acf1395 chore(deps): bump 2020-12-20 12:20:37 +05:30
Karel De Smet
a2a03c6b52 Unit tests for test functions toBe, toHaveProperty (#1392)
* Added unit tests for the post-request tests

* Added 2 top level functions to avoid duplication of code

* Simplified tests for toBe and error handling

* Added a test for asserting string values with toBe

* Added a test for negative assertion with toBe

* Added tests for toHaveProperty

* Imported PASS, FAIL and ERROR constants

* Use getTestResult and getErrors to avoid duplication of code

* Removed .vscode/settings.json

* Minor cleanup to postwomanTesting.spec.js

* Revert change of runTestScriptWithVariables back to default export

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2020-12-19 07:45:36 +05:30
Liyas Thomas
8e63a84152 Merge pull request #1393 from farhan-tariq/fix-for-collections
Fix when folder is having no request property
2020-12-18 17:21:28 +05:30
Farhan Tariq
38b3197912 Fix when folder is having no request property 2020-12-18 10:53:29 +00:00
Liyas Thomas
1d4576c7fd chore(refactor): removed absolute codes 2020-12-17 15:30:02 +05:30
Liyas Thomas
29a4dee91b chore(deps): bump + refactor: removed absolute code 2020-12-16 23:53:08 +05:30
Liyas Thomas
9e166774ef refactor(ui): faster animations + chore(deps): bump 2020-12-16 06:05:58 +05:30
Liyas Thomas
dd40df4b37 fix: minor UI transitions 2020-12-15 07:58:12 +05:30
Liyas Thomas
afd07562b4 chore(deps): bump 2020-12-15 03:44:20 +05:30
Liyas Thomas
81a6d821c0 feat: confirm modal + chore(deps): bump 2020-12-14 10:35:14 +05:30
Liyas Thomas
858ab252a6 fix: input borders 2020-12-12 19:16:37 +05:30
Liyas Thomas
a56e2bb577 chore(refactor): better inputs 2020-12-12 08:33:29 +05:30
Liyas Thomas
27980cf7c7 fix: tests 2020-12-11 22:39:50 +05:30
Liyas Thomas
5a7bcf32ea chore(refactor): modern UI 2020-12-11 22:24:34 +05:30
Liyas Thomas
773423069b Refactor UI 2020-12-11 15:59:03 +05:30
Liyas Thomas
1e6773deb5 Refactor: Modularize home page (#1372)
* Move HTTP headers section to component

* Move import cURL modal to component

* Move Notes, OAuth token modal to seperate components

* Fix deepcode analysis

* Move parameters section to seperate component

* Move codegen modal to component

* ES6
2020-12-11 05:59:29 +05:30
Liyas Thomas
a95d37d610 Updated screenshots 2020-12-10 16:45:39 +05:30
Liyas Thomas
bdf72eca70 fix: turn off permission of GitHub OAuth app fixed #1377 2020-12-10 16:12:38 +05:30
Liyas Thomas
3acb2a56a2 chore(deps): bump 2020-12-10 08:48:59 +05:30
Liyas Thomas
2f0e9d0681 chore(deps): bump 2020-12-10 01:02:49 +05:30
Hari Narayanan
bfa7eb0c19 export markdown from docs (#1358)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-12-09 10:41:05 +05:30
Andrew Bastin
27d71fb10f Merge pull request #1367 from hoppscotch/feat/gist
Collections and environments + GitHub gist
2020-12-08 23:08:24 -05:00
Andrew Bastin
eeb1ecd2df Added test case for signInUserWithGithub to check if adding 'repo gist' 2020-12-08 23:01:17 -05:00
Andrew Bastin
f21b5768a5 Fixed tests for fb.spec.js 2020-12-08 22:55:41 -05:00
Liyas Thomas
ba08883623 Final gist integration + clean up 2020-12-08 17:50:32 +05:30
Liyas Thomas
b1587950c6 Merge branch 'main' into feat/gist 2020-12-08 14:59:03 +05:30
Liyas Thomas
b473ed7cb7 Allow importing and exporting environments to gist 2020-12-08 12:18:28 +05:30
Liyas Thomas
2978c8adfe Allow importing collections from gist 2020-12-08 12:05:10 +05:30
Liyas Thomas
1f0111256b chore(fonts): bump 2020-12-08 11:07:25 +05:30
Liyas Thomas
346b980a1d Merge pull request #1366 from hoppscotch/main 2020-12-08 09:03:00 +05:30
Liyas Thomas
8000791e17 chore(deps): bump 2020-12-07 20:53:49 +05:30
Liyas Thomas
66077ea6d7 Replaced svg with icon font 2020-12-07 20:37:13 +05:30
Liyas Thomas
3d10a8f86a Initial MVP of GitHub gist support 2020-12-07 14:14:02 +05:30
Liyas Thomas
ebae9880dc Updated license copyright (c) 2020, migrated docker container to organization, chores 2020-12-06 12:04:55 +05:30
Liyas Thomas
2e72c16964 chore(deps): bump husky to v5 2020-12-06 11:00:00 +05:30
Liyas Thomas
6ebaea395d chore(deps): bump 2020-12-05 23:47:26 +05:30
Liyas Thomas
257ee9928f chpore(deps): bump 2020-12-04 23:37:13 +05:30
Liyas Thomas
2ac9f5918a chore(deps): bump + updated sponsor list 2020-12-04 09:59:19 +05:30
Liyas Thomas
9c4767bb68 Merge pull request #1365 from hoppscotch/dependabot/npm_and_yarn/nuxtjs/tailwindcss-3.3.1
Bump @nuxtjs/tailwindcss from 3.3.0 to 3.3.1
2020-12-04 07:09:49 +05:30
dependabot[bot]
cbd82988a8 Bump @nuxtjs/tailwindcss from 3.3.0 to 3.3.1
Bumps [@nuxtjs/tailwindcss](https://github.com/nuxt-community/tailwindcss-module) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/nuxt-community/tailwindcss-module/releases)
- [Changelog](https://github.com/nuxt-community/tailwindcss-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/tailwindcss-module/compare/v3.3.0...v3.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-04 00:05:30 +00:00
Liyas Thomas
d0a9445dfc Environment select box - cherry picked from #1359 2020-12-03 11:12:47 +05:30
Liyas Thomas
cd6a9bf9a8 chore(deps): bump 2020-12-03 05:46:26 +05:30
Liyas Thomas
8afead4e39 Set 'Ctrl + I' to reset request - fixed #1356 2020-12-02 10:23:11 +05:30
Karel De Smet
f279471858 Added assertion methods toHaveLength & toBeType (#1357)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-12-02 06:55:37 +05:30
Liyas Thomas
61fe518710 chore(deps): bump + better History UI 2020-12-01 22:26:13 +05:30
Hari Narayanan
b774a59db2 Web Worker regex test (#1354)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-12-01 21:21:13 +05:30
Liyas Thomas
63a1f52482 Set a max-width container wrapper 2020-12-01 05:46:25 +05:30
Liyas Thomas
ab5ea5948b Minor refactoring and code splitting 2020-12-01 05:21:14 +05:30
Liyas Thomas
a8fd0fcd19 Minor refactoring and code splitting 2020-12-01 05:09:16 +05:30
Liyas Thomas
6098d55b57 chore(deps): bump + fixed: #1352 2020-11-30 23:44:39 +05:30
Liyas Thomas
9ba2f80e3a Updated sponsors list 2020-11-30 19:12:03 +05:30
Liyas Thomas
3acf71f253 Updated sponsor list 2020-11-30 18:51:46 +05:30
Liyas Thomas
ad51597bf5 Malayalam + Dutch (#1351)
Co-authored-by: vachan-maker <65799568+vachan-maker@users.noreply.github.com>
Co-authored-by: Karel De Smet <karel.de.smet@outlook.com>
2020-11-30 08:16:16 +05:30
Liyas Thomas
60057eee6a Temporarily removed test case number in tab label. Fixed #1349 2020-11-30 08:14:22 +05:30
Liyas Thomas
3cfd0ba1f8 chore(deps): bump 2020-11-29 20:00:32 +05:30
Liyas Thomas
dec386840a Fixed missing 'Done' button 2020-11-29 13:10:14 +05:30
Liyas Thomas
355b9be3ff chores(deps): bump + fixed og:image 2020-11-28 17:23:10 +05:30
Hari Narayanan
57627367f5 duplicate identifier for requests fixed (#1346)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-11-27 17:12:33 +05:30
Liyas Thomas
a5a812d3f4 Merge pull request #1343 from hariaakash/main
Request method labels & custom method width fix
2020-11-26 06:51:31 +05:30
Hari Narayanan
5426273cf8 custom method width 2020-11-26 00:38:03 +05:30
Hari Narayanan
d9bab319e3 added request method label in collections 2020-11-25 23:54:20 +05:30
Liyas Thomas
77862cdf9b lgtm code review suggestions 2020-11-23 12:32:13 +05:30
Liyas Thomas
b8d68ee359 Modern build, fixed WebSocket freezing on invalid URLs 2020-11-22 07:05:04 +05:30
Liyas Thomas
307e434f91 chore(deps): bump 2020-11-21 23:28:09 +05:30
Liyas Thomas
f60b2eb8af chore(deps): bump 2020-11-20 10:24:30 +05:30
Liyas Thomas
9da1aa1421 Merge pull request #1332 from hoppscotch/dependabot/npm_and_yarn/socket.io-client-3.0.2
Bump socket.io-client from 3.0.1 to 3.0.2
2020-11-18 06:17:21 +05:30
dependabot[bot]
4d3964daeb Bump socket.io-client from 3.0.1 to 3.0.2
Bumps [socket.io-client](https://github.com/socketio/socket.io-client) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/socketio/socket.io-client/releases)
- [Changelog](https://github.com/socketio/socket.io-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io-client/compare/3.0.1...3.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-18 00:07:32 +00:00
Liyas Thomas
b80f9d3517 chore(deps): bump 2020-11-14 06:17:37 +05:30
Liyas Thomas
46981f73a9 Updated sponsors list 2020-11-12 07:31:15 +05:30
Liyas Thomas
9b6394627b fixed #1323 + chore(deps) bump 2020-11-12 06:48:40 +05:30
Liyas Thomas
3a34331cc2 Replacing master branch with main branch 2020-11-11 08:55:44 +05:30
Liyas Thomas
95fe10b312 chore(deps): bump @nuxtjs/gtm 2020-11-11 08:34:00 +05:30
Liyas Thomas
f8d4303531 chore(deps): bump 2020-11-10 06:56:15 +05:30
Andrew Bastin
7d49f75682 Query arguments in GraphQL are shown separately with description (#1319)
* Query arguments in GraphQL are shown separately with description

* Update field.vue

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-11-09 07:16:47 +05:30
Liyas Thomas
a84a8e1a6e chore(deps): bump 2020-11-06 09:17:06 +05:30
Liyas Thomas
1fc2181937 chore(deps): bump 2020-11-05 13:32:27 +05:30
Liyas Thomas
7411f01fb5 Updated test snapshot 2020-11-03 14:06:24 +05:30
Liyas Thomas
2c9c598dd7 Merge branch 'master' of https://github.com/hoppscotch/hoppscotch 2020-11-03 13:48:18 +05:30
Liyas Thomas
3c00a3b1d0 Fixed Axios codegen missing raw post body 2020-11-03 13:47:17 +05:30
Liyas Thomas
660cdb575a Removed absolute Firebase files 2020-11-03 08:01:55 +05:30
Liyas Thomas
f20876a028 chore(deps): bump 2020-11-03 07:17:17 +05:30
Liyas Thomas
b31866cf32 Updated codegen list + removed hacktoberfest prompt 2020-11-02 18:05:29 +05:30
Liyas Thomas
bde27c3880 chore(deps): bump Firebase to v8.0 2020-11-02 14:59:08 +05:30
Liyas Thomas
80cb613888 Removed absolute PWA attributes 2020-11-02 10:33:01 +05:30
Liyas Thomas
23966b1103 Merge pull request #1312 from hoppscotch/sass
Replace node-sass with sass
2020-11-02 07:51:18 +05:30
Liyas Thomas
2fd897064a Replace node-sass with sass 2020-11-02 07:40:26 +05:30
Jyoti Gupta
846298210a [#1190] [Jyoti] Add codegen for nodeJs Unirest support (#1308)
* [#1190] [Jyoti] Add codegen for nodeJs Unirest

* Update and rename node-unirest.js to nodejs-unirest.js

* Update codegen.js

* [Jyoti] update snapshot for node-unirest-codegen

Co-authored-by: Jyoti Gupta <jyoti.gupta@INjyotigupta.local>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-11-02 06:23:13 +05:30
Liyas Thomas
f22e98ccca Updated test snapshots - fixing CI tests 2020-10-30 18:28:09 +05:30
Liyas Thomas
5cb6d10e3d Reorder codegens in alphabetical order 2020-10-30 18:16:34 +05:30
Liyas Thomas
5b4dd74503 Merge pull request #1307 from patidar-jaishree/add-c-libcurl-codegen
[Jaishree] Add C Libcurl Codegen
2020-10-29 18:44:38 +05:30
Jaishree Patidar
cd3cec5d48 [Jaishree] Add C Libcurl Codegen 2020-10-29 17:47:25 +05:30
Liyas Thomas
621888d6d4 Merge pull request #1306 from hoppscotch/fix/1304
Enable Workbox - fix #1304
2020-10-28 17:49:30 +05:30
Liyas Thomas
3e7fcaf764 Enable Workbox 2020-10-28 17:14:55 +05:30
Liyas Thomas
8fb44df59b Merge branch 'master' of https://github.com/hoppscotch/hoppscotch 2020-10-28 06:42:29 +05:30
Liyas Thomas
5b205d6e4a chore(deps): bump 2020-10-28 06:41:42 +05:30
Andrew Bastin
dc98ef8b57 Fix add folder to collections being broken when logged in (#1299)
* Moved add folder modal logic out

* Pass around folder paths for collections to fix folder not applying on
logged in users

* Remove unwanted use of folder value for addFolder store mutation

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-26 06:44:59 +05:30
Kunal Kumar
f9ae242792 Kunal - java-unirest 25 oct 2020 codegen added (#1301) 2020-10-26 00:00:36 +05:30
Shalika Singhal
438640d5b8 added codegen for java OK Http Client (#1300)
* added codegen for  java OK Http Client

* shalika- added snapshot test for -codegen- java -ok http client

* shalika- moving JavaOkHttpClientCodegen in alphabetical order in codegen
2020-10-25 23:07:28 +05:30
Liyas Thomas
078b755fb6 chore(deps-dev): bump 2020-10-24 22:57:37 +05:30
Liyas Thomas
501e01fe23 Update sponsor message 2020-10-24 17:36:33 +05:30
Liyas Thomas
ce992fc205 Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-10-23 10:21:28 +05:30
Liyas Thomas
8609dedafd chore(deps-dev): bump 2020-10-23 10:20:57 +05:30
Liyas Thomas
66f124b397 Use correct build command - #1295 2020-10-21 18:59:13 +05:30
Andrew Bastin
21cf439210 Added polling schema (#1288)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-21 14:03:03 +05:30
Liyas Thomas
91a7d20923 Lint + ES6 2020-10-21 13:49:02 +05:30
Liyas Thomas
f49c2138de Lint + ES6 2020-10-21 12:20:32 +05:30
Liyas Thomas
774853af7a Remove teams section from Firebase 2020-10-21 10:11:56 +05:30
Farhan Tariq
7e30a4a3d4 Subfolder functionality (#1194)
* Added functionality for sub-folders

* Edit Request name only. Drag and drop to move requests

* Refactor

* Move requests between folder or collections

* Functionality to save request in multiple folders

* Unnecessary Lang

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-21 06:41:45 +05:30
Liyas Thomas
b179731359 sponsor ad 2020-10-20 16:59:54 +05:30
Liyas Thomas
d6409d7152 Fixed selected codegen name, updated deps 2020-10-20 00:24:57 +05:30
Liyas Thomas
eaeefafe39 Lint, ES6, popover for codegen 2020-10-19 18:02:42 +05:30
Ben
59974edf80 feat:add code generator for Shell with HTTPie (#1290)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-19 07:54:07 +05:30
Scott Dutton
37f914d1cc Possible solution for Global variables (#1289)
fix for #1164

This takes enviroments called "Global" or "global" and appends them
after the current scripts.

Seems to work, but proabbly a cleaner way to acheive

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-19 07:41:01 +05:30
Scott Dutton
da92fd705b Replace headers in view (#1287)
fixs #1257

Cant add this in the same place as the URL as you end in an infinate
loop

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-19 07:21:40 +05:30
Liyas Thomas
00505b8af8 chore(deps): bump 2020-10-19 06:43:08 +05:30
Liyas Thomas
22a3bba6ab Cherry picking refactored fb.js from #879 by @AndrewBastin (#1286)
* Cherry picking refactored fb.js from #879 by @AndrewBastin

* Fixed a minor UI glitch in History section

* Removed logout success toast testcase

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2020-10-17 14:53:19 +05:30
Matthew Crumley
b6b3cbcb9a Add Salesforce Apex codegen (#1285) 2020-10-17 12:39:23 +05:30
Ben
de97048424 feat:add code generator for Ruby Net::HTTP (#1284) 2020-10-17 10:47:26 +05:30
Liyas Thomas
02471e6d60 Lint 2020-10-16 07:10:07 +05:30
Liyas Thomas
edf58ee897 Updated dependencies 2020-10-16 06:31:44 +05:30
Liyas Thomas
5ecfd278d4 i18n (#1277)
* improve pt-br translations

* Update french language

* Added i18n vi-VN translations (#1274)

Co-authored-by: Gustavo Cavalieri Fernandes <gugacavalieri@gmail.com>
Co-authored-by: Thomas Bnt <thomasbnt@protonmail.com>
Co-authored-by: Flyznex <thuanpt.dev@gmail.com>
2020-10-15 11:37:33 +05:30
Liyas Thomas
3327179270 Updated dependencies 2020-10-15 05:57:02 +05:30
Liyas Thomas
98462e8dca Updated deps 2020-10-14 08:51:33 +05:30
Liyas Thomas
2f515164b3 chore: updated deps 2020-10-13 19:08:20 +05:30
Liyas Thomas
3c8ceebedc Merge pull request #1262 from hoppscotch/dependabot/npm_and_yarn/jest-26.5.3
Bump jest from 26.5.2 to 26.5.3
2020-10-12 06:43:19 +05:30
dependabot[bot]
26fe93dfc0 Bump jest from 26.5.2 to 26.5.3
Bumps [jest](https://github.com/facebook/jest) from 26.5.2 to 26.5.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v26.5.2...v26.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-12 00:10:38 +00:00
Andrew Bastin
9113a826ce Added temporary hack to fix GQL trailing space errors 2020-10-11 13:17:49 -04:00
Liyas Thomas
eca1baf53e chore: updated deps 2020-10-11 12:37:32 +05:30
Jeff Sieu
6b3b8e6204 Remove extra console log (#1261)
* Add search bar for collections

* Remove console log

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-11 10:32:28 +05:30
Jeff Sieu
194a4f3adb Add search bar for collections (#1260)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-11 10:22:18 +05:30
Liyas Thomas
054f27083b Merge pull request #1259 from Ldoppea/feature/codegen-csharp-restsharp
feat:add code generator for C# RestSharp
2020-10-11 06:13:22 +05:30
Yannick Chiron
168d1dc678 feat:add code generator for C# RestSharp 2020-10-11 00:58:02 +02:00
Ldoppea
8cc5c62665 fix:add 'helpers' folder to docker compose volumes (#1258) 2020-10-10 16:52:02 +05:30
Raul Piraces Alastuey
82c874afb5 Add: Shell wget codegen (#1256)
* Add: Shell wget codegen

* Add missing snapshot for tests
2020-10-09 19:44:49 +05:30
YE Qing
1afd0381c1 Run tests against all codegen instead of individual ones (#1255)
* run tests against all codegens instead of individual ones

* table testing

* fixture is no longer needed

Co-authored-by: Qing Ye <ye.qing@go-jek.com>
2020-10-09 14:04:12 +05:30
Liyas Thomas
5f5589f1f1 Merge pull request #1254 from hoppscotch/dependabot/npm_and_yarn/firebase-7.23.0
Bump firebase from 7.22.1 to 7.23.0
2020-10-09 06:27:07 +05:30
dependabot[bot]
1cee408113 Bump firebase from 7.22.1 to 7.23.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.22.1 to 7.23.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.22.1...firebase@7.23.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-09 00:04:55 +00:00
luthrap
92854b9e84 Python http client codegen (#1252)
* add codegen for python http client

* update print header function
2020-10-08 23:29:00 +05:30
Liyas Thomas
a4c5817b54 Use function as default value for array prop 2020-10-08 20:00:20 +05:30
Liyas Thomas
6c82680066 Merge pull request #1249 from yq314/add-nodejs-native-codegen 2020-10-08 19:58:06 +05:30
Liyas Thomas
6135bc716e Merge branch 'master' into add-nodejs-native-codegen 2020-10-08 14:41:42 +05:30
Liyas Thomas
1639ea7552 Merge pull request #1250 from hoppscotch/dependabot/npm_and_yarn/nuxtjs/pwa-3.1.2
Bump @nuxtjs/pwa from 3.1.0 to 3.1.2
2020-10-08 09:31:06 +05:30
dependabot[bot]
bea8c89d9f Bump @nuxtjs/pwa from 3.1.0 to 3.1.2
Bumps [@nuxtjs/pwa](https://github.com/nuxt-community/pwa-module) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/nuxt-community/pwa-module/releases)
- [Changelog](https://github.com/nuxt-community/pwa-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/pwa-module/compare/v3.1.0...v3.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-08 00:06:41 +00:00
Qing Ye
fe1618d1d8 move test data to __fixtures__ 2020-10-08 00:17:58 +08:00
Qing Ye
30250e1afa add codegen for nodejs native and instrument snapshot tests 2020-10-08 00:10:02 +08:00
Liyas Thomas
16f02e2544 Updated contributors and sponsors list 2020-10-07 14:21:39 +05:30
Liyas Thomas
123f4a3931 Updated contributors and sponsors list 2020-10-07 14:10:45 +05:30
YE Qing
ce5fb78bcd Fix form post data parsing (#1248)
Co-authored-by: Qing Ye <ye.qing@go-jek.com>
2020-10-07 08:51:03 +05:30
Liyas Thomas
2ccd053b0a Disable workbox 2020-10-07 07:22:44 +05:30
Liyas Thomas
3422ccef15 Downgrade pwa dep 2020-10-07 06:47:21 +05:30
Liyas Thomas
630663ec83 Merge branch 'master' of https://github.com/hoppscotch/hoppscotch 2020-10-07 05:54:13 +05:30
Liyas Thomas
37c6bf3a3f Updated dependencies 2020-10-07 05:47:09 +05:30
YE Qing
1c2963a1e0 add codegen for python-requests (#1244)
Co-authored-by: Qing Ye <ye.qing@go-jek.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-06 22:56:10 +05:30
Liyas Thomas
50a5b0f7db Updated all dependencies 2020-10-06 06:20:06 +05:30
Yasio
df933bb928 Add PHP CURL codegenerator (#1238)
* add php-curl codegen

* fix codegen name casing
2020-10-05 23:03:44 +05:30
Léo Martin
aa85108f1a Use socket.io echo server (#1237) 2020-10-05 22:07:03 +05:30
Andrew Bastin
c778a28f2b Fixed improper page title definition 2020-10-04 22:29:07 -04:00
Liyas Thomas
48142721ac I18n (#1235)
Co-authored-by: CHALOPIN Clément <clement.chalopin@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Fiki Maulana <fikimaul@gmail.com>
Co-authored-by: Shunjid Rahman Showrov <shunjid.rahman@gmail.com>
Co-authored-by: Adrian Skar <adrian@adrianskar.com>
Co-authored-by: Lucas Queiroz <me@lucasqueiroz.dev>
Co-authored-by: piraces <raul.piraces@gmail.com>
Co-authored-by: vachan-maker <65799568+vachan-maker@users.noreply.github.com>
2020-10-05 07:07:02 +05:30
Liyas Thomas
826e3ebc5e Added default Socket.io URL - fixed #1231 2020-10-05 05:31:48 +05:30
Léo Martin
0f31259c97 Allow multiple arguments with socket.io (#1234)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-05 05:11:56 +05:30
Raul Piraces Alastuey
881d7fa5ee Add: Powershell RestMethod codegen (#1233) 2020-10-05 04:50:50 +05:30
Raul Piraces Alastuey
d479425333 Add: JS jQuery codegen (#1232)
* Add: JS jQuery codegen

* Remove console.log
2020-10-04 20:49:07 +05:30
Yasio
cb944bcfb2 Add nodejs request codegenerator (#1227)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-10-04 18:11:07 +05:30
Yasio
745683f2a8 Fix: passing auth into codegen (#1226) 2020-10-04 18:04:21 +05:30
Liyas Thomas
e019935545 Merge pull request #1220 from LeoMartinDev/feat/filter-graphql-fields 2020-10-04 16:17:53 +05:30
Liyas Thomas
9601477bba Merge branch 'master' into feat/filter-graphql-fields 2020-10-04 16:04:40 +05:30
Liyas Thomas
0702ca3fc9 Highlight filtered field and type 2020-10-04 16:01:19 +05:30
leoGeorges
d9a9ae7e72 Merge branch 'feat/filter-graphql-fields' of https://github.com/LeoMartinDev/hoppscotch into feat/filter-graphql-fields 2020-10-04 11:46:35 +02:00
leoGeorges
76eba3d638 Graphql: highlight fields on search 2020-10-04 11:46:16 +02:00
Liyas Thomas
69a448b4c1 Merge pull request #1223 from tonybatty/bug/http-page-headers-suggestions-are-overlapped
Fix: http page headers suggestions overlapped issue
2020-10-04 05:41:19 +05:30
tonybatty
a8d9a64f79 http page headers suggestions overlapped issue fixes #1222 2020-10-03 19:42:07 +01:00
Andrew Bastin
1546727612 Merge branch 'master' into feat/filter-graphql-fields 2020-10-03 13:10:22 -04:00
Liyas Thomas
dfdcc05d3e Merge pull request #1221 from tonybatty/bug/ios-home-bar-covers-content 2020-10-03 21:37:11 +05:30
leoGeorges
12941a107d Use normalized text 2020-10-03 17:36:26 +02:00
tonybatty
a94d46e005 fixes #1003 ios home bar covers content 2020-10-03 16:34:40 +01:00
leoGeorges
acb777c236 Remove debug code 2020-10-03 17:33:03 +02:00
leoGeorges
7e87cc1923 Add search input & capability to graphql types and fields 2020-10-03 17:24:26 +02:00
Saswata Mukherjee
1ad23f4ed8 Fix: GET requests for Go codegen (#1216) 2020-10-03 12:36:55 +05:30
Saswata Mukherjee
1bcba17f76 Add native Golang codegen (#1215) 2020-10-03 12:20:20 +05:30
Liyas Thomas
cb871f6a88 Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-10-02 05:59:35 +05:30
Liyas Thomas
6d2c296a7d chore: updated dependencies 2020-10-02 05:59:16 +05:30
Liyas Thomas
3434a1f5a6 Create codeql-analysis.yml 2020-10-01 08:05:55 +05:30
CHALOPIN Clément
f9c45d95e1 Add: js axios codegen (#1199) 2020-10-01 06:32:22 +05:30
Liyas Thomas
0bd051a7a9 chore: updated dependencies 2020-10-01 06:26:13 +05:30
Liyas Thomas
d4789463ad Improving code quality as per LGTM review 2020-09-30 21:02:19 +05:30
Liyas Thomas
7190a25550 Added Hacktoberfest announcement 2020-09-30 14:21:22 +05:30
Liyas Thomas
04bc8308ac Fixed #1195 2020-09-29 23:46:31 +05:30
Liyas Thomas
68c67fbd32 Turn off GitHub Pages 2020-09-29 23:42:09 +05:30
Liyas Thomas
50fd8926d6 Fixed #1197 2020-09-29 23:40:33 +05:30
Liyas Thomas
7e1e61f8af chores: Lint + dependency update 2020-09-27 23:34:15 +05:30
Andrew Bastin
ee066d7859 Use the new separated codegen for code generation 2020-09-25 23:45:36 -04:00
Andrew Bastin
54a48f9493 Added codegen registrar 2020-09-25 23:45:18 -04:00
Andrew Bastin
70fc0789d6 Added separated code generator code for cURL, JS Fetch and JS XHR 2020-09-25 23:38:33 -04:00
Liyas Thomas
66cd75dce8 Moved utility functions from assets to helpers 2020-09-26 07:57:45 +05:30
Liyas Thomas
8b3b6a471b chore: dependency updates, minor UI fixes 2020-09-26 07:09:26 +05:30
Liyas Thomas
e707fcda05 chore: dependency updates, minor UI updates, better color schemes 2020-09-25 06:39:21 +05:30
Liyas Thomas
a3574acabd Fixed hidden overflow on inputs 2020-09-24 23:31:43 +05:30
Liyas Thomas
f36db182f1 Better color schemes, minor UI fixes 2020-09-24 22:52:17 +05:30
Liyas Thomas
59e492b2a6 Merge branch 'refactor' 2020-09-24 21:39:14 +05:30
Liyas Thomas
6380063978 Upstream 2020-09-24 21:37:27 +05:30
Liyas Thomas
2686873163 Cleanup stale files/codes 2020-09-24 21:31:56 +05:30
Moulik Aggarwal
b2ef26600c Fix Quality Issues using DeepSource (#1183)
Co-authored-by: DeepSource Bot <bot@deepsource.io>
2020-09-24 20:46:20 +05:30
Liyas Thomas
e94fdcad32 Color modes (#1181) 2020-09-24 08:22:54 +05:30
Liyas Thomas
2e423b101b Refactoring based on LGTM analysis 2020-09-23 17:54:52 +05:30
Liyas Thomas
91677a41d4 Update README.md 2020-09-23 13:34:02 +05:30
Liyas Thomas
b747d0273c Feat/tailwind (#1179) 2020-09-22 22:36:37 +05:30
Matthew Jarman
45fb612793 Add check for active suggestion (#1180) 2020-09-21 22:14:16 +05:30
Liyas Thomas
db081d3197 Updated all major dependencies 2020-09-21 21:04:55 +05:30
Liyas Thomas
423eaa5462 Fixed broken GraphQL mock query 2020-09-21 11:20:42 +05:30
Liyas Thomas
f38dde160e Updated all non-major dependencies to latest 2020-09-21 06:03:40 +05:30
Andrew Bastin
782eb29aac Fixed url-field bug with caret reset due to v-model update 2020-09-20 00:57:09 -04:00
Andrew Bastin
5810c5544a Fixed bug with restore from history not working in new URL field 2020-09-19 01:30:22 +00:00
Liyas Thomas
b6eb581192 Revert last commit 2020-09-18 16:05:50 +05:30
Liyas Thomas
54171e566a FIxed broken restore history on new URL bar 2020-09-18 16:01:58 +05:30
Liyas Thomas
b7a44ab11f Experiments (#1174)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2020-09-18 08:58:11 +05:30
Andrew Bastin
4ea60d3431 Added temporary fix for the trailing null character from extension
requests
2020-09-17 21:36:36 -04:00
Liyas Thomas
9840ebfe33 Updated all non-major dependencies 2020-09-18 06:18:54 +05:30
Liyas Thomas
af2b726a38 chore: dependency updates + fixed a minor bug with edit folder 2020-09-17 06:08:26 +05:30
Liyas Thomas
d425a1b2c0 Merge pull request #1169 from hoppscotch/snyk-fix-3786512203b7ce5e8de4cfb302b63900
[Snyk] Security upgrade firebase-admin from 9.1.1 to 9.2.0
2020-09-16 16:04:39 +05:30
snyk-bot
687b0ac3bd fix: functions/package.json & functions/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-NODEFORGE-598677
2020-09-16 08:47:23 +00:00
Liyas Thomas
3978dd9b07 Updated all non-major dependencies to latest 2020-09-15 06:49:03 +05:30
Liyas Thomas
d9f78b9d5c Fixed #1161 2020-09-14 15:09:44 +05:30
Liyas Thomas
81e638a7e0 chore: updated all non-major dependencies 2020-09-14 07:35:58 +05:30
Liyas Thomas
6dc906a604 🐛 Fixed #1160 2020-09-11 14:12:10 +05:30
Liyas Thomas
005db4d0e8 Fixed #1159 2020-09-11 15:07:57 +05:30
dependabot[bot]
41127da7d9 Bump node-fetch from 2.6.0 to 2.6.1 in /functions (#1158)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-09-11 05:52:51 +05:30
Liyas Thomas
3111b8d395 📦 Updated all non-major dependencies 2020-09-11 05:38:12 +05:30
Liyas Thomas
89f2647ead 📦 Updated all major dependencies 2020-09-10 19:07:49 +05:30
Liyas Thomas
084a432741 Merge branch 'master' of https://github.com/hoppscotch/hoppscotch into master 2020-09-10 05:46:13 +05:30
Liyas Thomas
1f071d1608 Updated all non-major dependencies 2020-09-10 05:45:56 +05:30
Liyas Thomas
3f75d0df56 Make use of GitHub sponsor API 2020-09-09 12:05:22 +05:30
Liyas Thomas
ba108fe23a Updated all non-major dependencies 2020-09-09 05:47:43 +05:30
Florin Mirosnicencu
ab736cf975 Handle postman subfolders when importing json (#1150) 2020-09-08 20:44:40 +05:30
Liyas Thomas
c36239772e Updated all non-major dependencies 2020-09-07 14:32:30 +05:30
Liyas Thomas
286090d58a Fixed #1146 2020-09-06 19:05:15 +05:30
Liyas Thomas
69fda864db Merge branch 'master' of https://github.com/hoppscotch/hoppscotch into master 2020-09-06 14:27:20 +05:30
Liyas Thomas
2709c5d332 Fixed typo, updated sponsors list 2020-09-06 14:26:54 +05:30
Scott Dutton
da5fdd54bd Import postman variables correctly (#1142)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2020-09-05 12:07:37 +05:30
Tiago Filipe Silva
92e7453c31 Lossless optimized images (#1141) 2020-09-05 12:01:42 +05:30
Liyas Thomas
a59e1a2015 Updated Sponsors list with GitHub sponsors 2020-09-04 16:51:27 +05:30
Liyas Thomas
838eb845d4 Merge branch 'master' of https://github.com/postwoman-io/postwoman into master 2020-09-04 06:35:50 +05:30
Liyas Thomas
f69fdc634a 📦 Updated all non-major dependencies 2020-09-04 06:35:22 +05:30
Liyas Thomas
9c0e7272ff I18n (#1138)
Co-authored-by: Gustavo Cavalieri <gugacavalieri@gmail.com>
Co-authored-by: Antonio Almeida <promatik@gmail.com>
Co-authored-by: Burak Sakallı <buraksakalli06@gmail.com>
Co-authored-by: Nisgrak <eneko.rodriguez99@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Junseo Park <wonderbotsupport@naver.com>
Co-authored-by: Jinseok Jeong <checkitup@hotmail.com>
2020-09-03 14:27:40 +05:30
Liyas Thomas
515afdc5ae Updated all non-major dependencies 2020-09-02 05:54:05 +05:30
Liyas Thomas
f32fa485e0 Merge branch 'master' of https://github.com/postwoman-io/postwoman into master 2020-09-01 06:05:09 +05:30
Liyas Thomas
a5187801b4 Updated all non-major dependencies 2020-09-01 06:04:43 +05:30
Liyas Thomas
6cb11d6a61 Added email address for contact 2020-08-31 13:23:39 +05:30
Liyas Thomas
1e91ca5eda Added default BASE_URL env variable 2020-08-30 11:21:42 +05:30
Liyas Thomas
210727ea0e Added default BASE_URL env variable 2020-08-30 11:10:19 +05:30
Liyas Thomas
f429585447 Removed @nuxtjs/dotenv (#1128)
* Removed `@nuxtjs/dotenv`

* Removed `@nuxtjs/dotenv`

* Fix broken tests

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2020-08-29 23:10:06 +05:30
Andrew Bastin
759a3f17cc Merge pull request #1126 from hoppscotch/tests
tests: improve test suite
2020-08-29 12:41:08 -04:00
jamesgeorge007
de7d1c2baa refactor: helper to compute suggestions 2020-08-29 22:09:12 +05:30
James George
8223011c3d chore: rename exported files (#1127)
* chore: rename to hoppscotch-collection.json

* chore: rename to hoppscotch-environment.json
2020-08-29 13:11:49 +05:30
Andrew Bastin
53684d6fbb Add test spec for components/ui/autocomplete.vue 2020-08-29 00:25:46 -04:00
Andrew Bastin
31cefd7dd0 Remove use of keyboardevent.which as its deprecated in autocomplete 2020-08-29 00:24:54 -04:00
Liyas Thomas
993a8f83ff 📦 Updated all non-major dependencies 2020-08-28 00:12:27 +05:30
Liyas Thomas
fd1e00986c 📦 Updated all non-major dependencies 2020-08-27 23:28:31 +05:30
Liyas Thomas
62028d1273 Reset file input value after operations - fixed #1124 2020-08-27 13:56:55 +05:30
Liyas Thomas
240ae25a90 📦 Updated all minor dependencies 2020-08-27 05:38:38 +05:30
Andrew Bastin
2bd242a164 jsonParse now validates for array as root JSONs
fixes #1097
2020-08-26 18:21:37 -04:00
Andrew Bastin
4b87684611 Updated debounce test spec to use jest timers 2020-08-26 12:14:47 -04:00
Andrew Bastin
3cd2a2a0f9 Added test spec for components/ui/pw-toggle.vue 2020-08-25 22:59:46 -04:00
Liyas Thomas
dc129eeb7d Fixed word wrap on 'Send' button - resolves #1116 2020-08-26 07:30:40 +05:30
Liyas Thomas
fb3f426688 📦 Updated all minor dependencies 2020-08-26 06:02:03 +05:30
Andrew Bastin
f33ebbcce0 Add test spec for components/ui/tabs.vue 2020-08-25 15:44:16 -04:00
Liyas Thomas
86922df61a Detect browser language and always redirect to locale - fixed #1108 2020-08-25 21:55:23 +05:30
Liyas Thomas
2916ab502e Announcement banner 2020-08-25 13:27:59 +05:30
Liyas Thomas
9c24fcec0d Merge pull request #1115 from HerbertChu/socket-io-path
support user to customize the path to socket-io server
2020-08-25 12:55:57 +05:30
herbertc
8258997f3e support user to customize the path to socket-io server 2020-08-25 15:16:38 +08:00
Liyas Thomas
ef714c3903 Updated Shortcuts wiki 2020-08-25 08:11:58 +05:30
Liyas Thomas
76c0874f0e 📦 Updated all non-major dependencies 2020-08-25 06:51:47 +05:30
Andrew Bastin
9166f734c9 Add test spec for components/ui/tab.vue 2020-08-24 15:42:48 -04:00
Andrew Bastin
368421a498 added jest-dom as dev dependency and added jest setup script 2020-08-24 15:41:59 -04:00
Andrew Bastin
c8d8c68b95 corrected typo for gql component test spec folder name 2020-08-24 14:23:15 -04:00
Khaleel Gibran
e68cd3c47f replace postwoman with hoppscotch values (#1111)
Replace Postwoman with Hoppscotch
2020-08-24 19:50:09 +05:30
Liyas Thomas
1732d7e707 Merge pull request #1109 from sebastianwd/patch-1 2020-08-24 10:53:27 +05:30
Sebastian Luque
da0d778b25 Typos in spanish translation 2020-08-23 23:52:45 -05:00
Andrew Bastin
b8bd0cc63a Add test spec for components/graphql/field.vue 2020-08-23 21:39:21 -04:00
Andrew Bastin
5150e13121 Removed unused fieldString computed property in gql/field.vue 2020-08-23 21:39:21 -04:00
Liyas Thomas
b2f784eeff Update README.md 2020-08-24 05:49:59 +05:30
Liyas Thomas
ad98284caf Add HOST 0.0.0.0 2020-08-24 05:45:35 +05:30
Liyas Thomas
6915ea70ca Add host 0.0.0.0 2020-08-24 05:18:02 +05:30
Liyas Thomas
26eb99d4a7 Redirect 2020-08-24 04:52:57 +05:30
Andrew Bastin
e1eb1be781 Add test spec for components/graphql/type.vue 2020-08-23 17:40:32 -04:00
Andrew Bastin
b536e191b1 Remove unused graphql/argument component 2020-08-23 15:48:05 -04:00
Andrew Bastin
f1b475b966 Add test spec for components/graphql/typelink.vue 2020-08-23 14:46:36 -04:00
Liyas Thomas
23a61d400d Add host: 0.0.0.0 to server property. #1099 2020-08-23 18:47:57 +05:30
Liyas Thomas
4ae8308663 Updated icon locations 2020-08-23 17:03:49 +05:30
Liyas Thomas
c3d6343edb Updated social share images 2020-08-23 16:47:48 +05:30
Liyas Thomas
1059d2ddbd Updated screenshots 2020-08-23 16:43:35 +05:30
Liyas Thomas
10ecc27bb5 Updated screenshots 2020-08-23 16:40:53 +05:30
Liyas Thomas
0c3c540051 Updated image assets 2020-08-23 16:21:49 +05:30
Liyas Thomas
c44dba5e92 Merge pull request #1107 from hoppscotch/a11y
♥ a11y
2020-08-23 13:38:22 +05:30
Liyas Thomas
82da7d0b24 Map DELETE method Alt + X 2020-08-23 11:16:25 +05:30
Liyas Thomas
4dd522eda4 Merge branch 'a11y' of https://github.com/postwoman-io/postwoman into a11y 2020-08-23 09:25:49 +05:30
Liyas Thomas
bbe300e847 Updated keyboard shortcuts 2020-08-23 09:23:34 +05:30
Andrew Bastin
dd667e5b4a Merge branch 'master' into a11y 2020-08-22 23:27:45 -04:00
Andrew Bastin
6f013de8e4 Added test spec for helpers/strategies/ExtensionStrategy.js 2020-08-22 23:25:35 -04:00
Andrew Bastin
96a6289911 Fixed a typo in decodeB64StringToArrayBuffer line for proxy-extension
request
2020-08-22 23:25:35 -04:00
Andrew Bastin
e0970fc69d Remove No-Proxy test stubs from AxiosStrategy-Proxy.spec.js 2020-08-22 23:25:35 -04:00
Liyas Thomas
5cafc7bb37 ❤️ ally 2020-08-23 08:41:04 +05:30
Liyas Thomas
2b755c0497 Updated all minor dependencies 2020-08-23 05:48:18 +05:30
Andrew Bastin
e3beae244d Add test spec for helpers/strategies/AxiosStrategy.js 2020-08-21 23:12:28 -04:00
Andrew Bastin
c2ec7be719 Modify AxiosStrategy to allow for some testing 2020-08-21 23:12:27 -04:00
Liyas Thomas
ed5d9132d3 📦 Updated all non-major dependencies 2020-08-21 06:05:50 +05:30
Liyas Thomas
8654db534b 📦 Updated all non-major dependencies 2020-08-21 06:00:11 +05:30
Andrew Bastin
e20299eb94 Added test spec for helpers/lenses/lenses.js 2020-08-20 20:08:45 -04:00
Andrew Bastin
1f65907f70 Export lenses array for helping testing 2020-08-20 20:07:59 -04:00
Liyas Thomas
6a55c09328 Fixed #1098 2020-08-20 19:54:12 +05:30
Andrew Bastin
9734e4d859 Add test spec for helpers/network.js 2020-08-19 16:16:49 -04:00
Andrew Bastin
4f93bc5721 Added test spec for helpers/platformutils.js 2020-08-19 01:37:38 -04:00
Andrew Bastin
73dc0b1cfa Added test spec for helpers/jsonParse.js 2020-08-19 01:08:02 -04:00
Andrew Bastin
e31979002f Add test spec for helpers/editorutils.js 2020-08-19 00:43:47 -04:00
Andrew Bastin
4be1e527fc Add application/vnd.api+json as a valid JSON mime to editorutils 2020-08-19 00:41:06 -04:00
Andrew Bastin
45332b3202 Added test spec for helpers/util/uri.js 2020-08-18 23:15:42 -04:00
Liyas Thomas
cb0258cb58 Merge pull request #1096 from hoppscotch/dependabot/npm_and_yarn/nuxt-i18n-6.13.10 2020-08-19 08:17:20 +05:30
dependabot[bot]
f3d80f28fd Bump nuxt-i18n from 6.13.9 to 6.13.10
Bumps [nuxt-i18n](https://github.com/nuxt-community/i18n-module) from 6.13.9 to 6.13.10.
- [Release notes](https://github.com/nuxt-community/i18n-module/releases)
- [Changelog](https://github.com/nuxt-community/i18n-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/i18n-module/compare/v6.13.9...v6.13.10)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-19 00:03:03 +00:00
Andrew Bastin
4b73ee3d41 Added test spec for helpers/utils/debounce.js 2020-08-18 14:34:46 -04:00
Andrew Bastin
e0e2e0c2fb Added test spec for helpers/util/contenttypes.js 2020-08-18 14:13:52 -04:00
Andrew Bastin
f2b977c941 isJSONContentType returns false for null/undefined 2020-08-18 14:13:20 -04:00
Andrew Bastin
9fe10fd9a2 Added test spec for helpers/utils/b64.js 2020-08-18 14:01:04 -04:00
Liyas Thomas
6b444d280a Merge pull request #1095 from thierrydev/patch-1 2020-08-18 13:01:54 +05:30
Thierry Meliot
10c2acf410 Update README.md
Updated the second Telegram URL
2020-08-18 08:53:21 +02:00
Liyas Thomas
6bb5908aba Merge pull request #1088 from hoppscotch/tests 2020-08-18 08:22:15 +05:30
Liyas Thomas
f54b24b4da Merge pull request #1093 from hoppscotch/dependabot/npm_and_yarn/nuxtjs/pwa-3.0.1 2020-08-18 06:41:51 +05:30
dependabot[bot]
ef3c548c98 Bump @nuxtjs/pwa from 3.0.0 to 3.0.1
Bumps [@nuxtjs/pwa](https://github.com/nuxt-community/pwa-module) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/nuxt-community/pwa-module/releases)
- [Changelog](https://github.com/nuxt-community/pwa-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/pwa-module/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-18 00:02:15 +00:00
Liyas Thomas
820690a073 Lock package 2020-08-18 02:45:44 +05:30
Liyas Thomas
63cf4f0045 Merge branch 'master' into tests 2020-08-18 08:14:28 +05:30
Liyas Thomas
deecbdd124 Update dependencies 2020-08-18 02:41:45 +05:30
Andrew Bastin
07f790dda0 Added test spec for helper/utils/valid.js 2020-08-17 22:10:47 -04:00
Andrew Bastin
a91b1ecf1f Added babel-core dev dependency 2020-08-17 19:38:17 -04:00
Liyas Thomas
4f75dd30fe Fix broken mobile responsiveness and URL input type 2020-08-17 17:04:13 +05:30
Liyas Thomas
629ee3e33f Merge pull request #1091 from hoppscotch/svgicons 2020-08-17 21:56:34 +05:30
Liyas Thomas
54e06d26bc Merge pull request #1090 from hoppscotch/autoimport 2020-08-17 18:41:43 +05:30
Liyas Thomas
dda26b7a3f Auto import components 2020-08-17 18:37:54 +05:30
Liyas Thomas
e86a17980b Auto import components 2020-08-17 18:29:14 +05:30
Liyas Thomas
23068450ed Remove stale file 2020-08-17 16:15:37 +05:30
Liyas Thomas
3924370b3e Introduce component wrapper for svg icons 2020-08-17 16:07:36 +05:30
Liyas Thomas
f57ac978ae Tests 2020-08-17 09:22:02 +05:30
Liyas Thomas
e68ad7331f Added default value to BASE_URL 2020-08-17 08:19:23 +05:30
Liyas Thomas
9b5fb4bde1 Add BASE_URL to environment variables 2020-08-17 07:49:11 +05:30
Liyas Thomas
a8f1fb5148 Merge pull request #1087 from hoppscotch/v2 2020-08-17 07:43:43 +05:30
Liyas Thomas
65185ecb77 Merge branch 'master' into v2 2020-08-17 07:26:19 +05:30
Liyas Thomas
14a68f24e4 Updated instances of Postwoman 2020-08-17 07:24:25 +05:30
Liyas Thomas
16a93c2b7e Merge pull request #1086 from hoppscotch/v2 2020-08-17 06:57:21 +05:30
Liyas Thomas
925690fb00 Fix conflicts 2020-08-17 06:52:38 +05:30
Liyas Thomas
dc279bc335 Updated dependencies 2020-08-17 06:49:33 +05:30
Liyas Thomas
d1d759e86f Merge branch 'master' into v2 2020-08-17 06:45:10 +05:30
Liyas Thomas
82a30fbd25 Updated dependencies 2020-08-17 06:41:25 +05:30
Liyas Thomas
12fea29f48 Merge pull request #1085 from hoppscotch/dependabot/npm_and_yarn/eslint-7.7.0 2020-08-17 06:38:59 +05:30
dependabot[bot]
b602f7c03f Bump eslint from 7.6.0 to 7.7.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.6.0 to 7.7.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.6.0...v7.7.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-17 00:10:14 +00:00
Liyas Thomas
a20ab981a7 Merge pull request #1071 from hoppscotch/v2 2020-08-16 22:21:41 +05:30
Liyas Thomas
9ae08cecf2 Merge branch 'master' into v2 2020-08-16 22:17:35 +05:30
Joel Camus Bueno
c9cd7b4344 Issue/1080 (#1081) 2020-08-16 17:26:33 +05:30
Liyas Thomas
24b587762a Lint 2020-08-16 05:48:00 +05:30
Joel Camus Bueno
18a2fb38d1 Issue/1078 (#1079)
* Externalize property of deletion messages (Collection) #1078

* Externalize property of deletion messages (folder) #1078

* Externalize property of deletion messages (request) #1078

* Externalize property of deletion messages (environment) #1078

* Externalize property (fr-FR.json) of deletion messages (collection, folder, request, environment) #1078

* Externalize property (pt-PT.json) of deletion messages (collection, folder, request, environment) #1078

* Externalize property (pt-BR.json) of deletion messages (collection, folder, request, environment) #1078

* Updating the Spanish file  (es-ES)
2020-08-15 20:30:00 +05:30
Joel Camus Bueno
5f47cdb763 Issue/1076 (#1077) 2020-08-15 16:57:14 +05:30
Liyas Thomas
e5a18b6e4c Fixed typo 2020-08-14 18:16:46 +05:30
Liyas Thomas
519976eb0b Merge pull request #1072 from postwoman-io/dependabot/npm_and_yarn/firebase-7.18.0
Bump firebase from 7.17.2 to 7.18.0
2020-08-14 06:54:21 +05:30
dependabot[bot]
b630fbc641 Bump firebase from 7.17.2 to 7.18.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.17.2 to 7.18.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.17.2...firebase@7.18.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-14 00:05:57 +00:00
Liyas Thomas
2369a22d23 Typos 2020-08-13 16:54:27 +05:30
Liyas Thomas
124d9ff269 v2 2020-08-13 16:50:02 +05:30
Liyas Thomas
1c95ac7f07 Merge pull request #1066 from Reflex-Gravity/master
Fixed broken tick icons placement in Settings
2020-08-11 08:39:16 +05:30
Joel DSouza
54169fe22b Fixed broken tick icons placement in Settings 2020-08-11 06:34:36 +05:30
Liyas Thomas
4707b78c1f Merge pull request #1064 from postwoman-io/dependabot/npm_and_yarn/yargs-parser-19.0.1
Bump yargs-parser from 18.1.3 to 19.0.1
2020-08-10 06:15:02 +05:30
dependabot[bot]
95d91efe52 Bump yargs-parser from 18.1.3 to 19.0.1
Bumps [yargs-parser](https://github.com/yargs/yargs-parser) from 18.1.3 to 19.0.1.
- [Release notes](https://github.com/yargs/yargs-parser/releases)
- [Changelog](https://github.com/yargs/yargs-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs-parser/compare/v18.1.3...v19.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 00:37:36 +00:00
Liyas Thomas
fc0c7f536b Merge pull request #1063 from postwoman-io/dependabot/npm_and_yarn/start-server-and-test-1.11.3 2020-08-10 06:05:52 +05:30
dependabot[bot]
80f1cfc72d Bump start-server-and-test from 1.11.2 to 1.11.3
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.11.2 to 1.11.3.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.11.2...v1.11.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-10 00:04:52 +00:00
Liyas Thomas
628012fb49 Merge pull request #1054 from postwoman-io/dependabot/npm_and_yarn/graphql-language-service-interface-2.4.1
Bump graphql-language-service-interface from 2.4.0 to 2.4.1
2020-08-07 07:42:54 +05:30
dependabot[bot]
a29498e911 Bump graphql-language-service-interface from 2.4.0 to 2.4.1
Bumps [graphql-language-service-interface](https://github.com/graphql/graphiql) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/graphql/graphiql/releases)
- [Changelog](https://github.com/graphql/graphiql/blob/main/CHANGELOG.md)
- [Commits](https://github.com/graphql/graphiql/compare/graphql-language-service-interface@2.4.0...graphql-language-service-interface@2.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-07 02:09:28 +00:00
Liyas Thomas
3d460b5862 Merge pull request #1055 from postwoman-io/dependabot/npm_and_yarn/firebase-7.17.2
Bump firebase from 7.17.1 to 7.17.2
2020-08-07 07:37:03 +05:30
Liyas Thomas
4acb2a5d92 Merge branch 'master' into dependabot/npm_and_yarn/firebase-7.17.2 2020-08-07 07:32:07 +05:30
Liyas Thomas
47c800b78b Merge pull request #1053 from AndrewBastin/feat/extension-setting 2020-08-07 06:45:24 +05:30
dependabot[bot]
a20da8036f Bump firebase from 7.17.1 to 7.17.2
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.17.1 to 7.17.2.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.17.1...firebase@7.17.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-07 00:07:29 +00:00
Andrew Bastin
7897118fbd i10n for extension version display 2020-08-06 14:46:55 -04:00
Andrew Bastin
0246e09595 Extension Version is reported on the settings page 2020-08-06 14:40:41 -04:00
Liyas Thomas
72ad37456a Removed all instances of the term 'Postman' 2020-08-06 11:03:50 +05:30
Liyas Thomas
83ec0a6c76 Merge pull request #1050 from postwoman-io/dependabot/npm_and_yarn/sass-loader-9.0.3
Bump sass-loader from 9.0.2 to 9.0.3
2020-08-06 08:16:58 +05:30
dependabot[bot]
63f77b0dc5 Bump sass-loader from 9.0.2 to 9.0.3
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 9.0.2 to 9.0.3.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v9.0.2...v9.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-06 02:40:28 +00:00
Liyas Thomas
798d2e0e6b Merge pull request #1051 from postwoman-io/dependabot/npm_and_yarn/nuxtjs/axios-5.12.1
Bump @nuxtjs/axios from 5.12.0 to 5.12.1
2020-08-06 08:08:15 +05:30
dependabot[bot]
fd098b5440 Bump @nuxtjs/axios from 5.12.0 to 5.12.1
Bumps [@nuxtjs/axios](https://github.com/nuxt-community/axios-module) from 5.12.0 to 5.12.1.
- [Release notes](https://github.com/nuxt-community/axios-module/releases)
- [Changelog](https://github.com/nuxt-community/axios-module/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/axios-module/compare/v5.12.0...v5.12.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-06 00:08:12 +00:00
Liyas Thomas
11d30e409c 💄 Updated fonts to latest version 2020-08-04 09:39:52 +05:30
Andrew Bastin
6cb5ae246d Merge pull request #1044 from postwoman-io/dependabot/npm_and_yarn/cypress-4.12.0
Bump cypress from 4.10.0 to 4.12.0
2020-08-03 21:03:57 -04:00
Andrew Bastin
60c76ba854 Merge branch 'master' into dependabot/npm_and_yarn/cypress-4.12.0 2020-08-03 21:00:21 -04:00
Andrew Bastin
ebf7b32408 Fix Proxy error issue #1027 2020-08-03 20:47:44 -04:00
dependabot[bot]
f343459236 Bump cypress from 4.10.0 to 4.12.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.10.0 to 4.12.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.10.0...v4.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-04 00:04:52 +00:00
Andrew Bastin
d2a57864f0 Merge pull request #1043 from AndrewBastin/bug/1036
Test scripts get properly parsed JSON body
2020-08-03 14:29:47 -04:00
Andrew Bastin
8a07f281ff Test scripts get parsed JSON body 2020-08-03 13:42:33 -04:00
Andrew Bastin
b7b721abd5 Merge pull request #1040 from AndrewBastin/feat/js-linting
Basic linting for JS code
2020-08-02 13:20:40 -04:00
Andrew Bastin
45f1e386cc PreReq scripts and Test scripts now use JSEditor 2020-08-02 13:14:14 -04:00
Andrew Bastin
3c3e8a6c31 Move JS linting code to separate component 2020-08-02 11:47:16 -04:00
Andrew Bastin
ec99b48605 Added JS linting to Ace Editor 2020-08-02 00:26:16 -04:00
Andrew Bastin
da9e599e8f Added esprima as dependency 2020-08-02 00:26:16 -04:00
Andrew Bastin
b1d3fa3f42 Handled error handling to pre-request script execution 2020-08-02 00:26:16 -04:00
Andrew Bastin
7954672ef8 Updated README browser extension links 2020-07-31 23:50:49 -04:00
Liyas Thomas
20a6039bd0 Update README.md 2020-08-01 09:04:46 +05:30
Liyas Thomas
d7fe61bc3d Update README.md 2020-08-01 08:58:29 +05:30
Liyas Thomas
b10406896a Merge pull request #1039 from postwoman-io/dependabot/npm_and_yarn/eslint-7.6.0
Bump eslint from 7.5.0 to 7.6.0
2020-08-01 08:52:00 +05:30
dependabot[bot]
1f135e0721 Bump eslint from 7.5.0 to 7.6.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.5.0 to 7.6.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.5.0...v7.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-01 03:18:02 +00:00
Liyas Thomas
e1bdc9ce33 Merge pull request #1038 from postwoman-io/dependabot/npm_and_yarn/nuxt-i18n-6.13.2 2020-08-01 08:38:19 +05:30
dependabot[bot]
e3654bb472 Bump nuxt-i18n from 6.13.1 to 6.13.2
Bumps [nuxt-i18n](https://github.com/nuxt-community/i18n-module) from 6.13.1 to 6.13.2.
- [Release notes](https://github.com/nuxt-community/i18n-module/releases)
- [Changelog](https://github.com/nuxt-community/i18n-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/i18n-module/compare/v6.13.1...v6.13.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-01 02:32:25 +00:00
Liyas Thomas
6418d6bcff Delete codeql-analysis.yml
codeql-analysis isn't available for this org. will be added once it is out of beta.
2020-08-01 07:53:50 +05:30
Liyas Thomas
9bf7c5013e Merge pull request #1037 from liyasthomas/dependabot/npm_and_yarn/elliptic-6.5.3
Bump elliptic from 6.5.2 to 6.5.3
2020-07-31 21:14:36 +05:30
dependabot[bot]
1797e78ebd Bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-31 15:38:22 +00:00
Liyas Thomas
7196299d31 Merge pull request #1035 from liyasthomas/dependabot/npm_and_yarn/functions/dot-prop-5.2.0
Bump dot-prop from 5.1.0 to 5.2.0 in /functions
2020-07-30 16:23:33 +05:30
dependabot[bot]
4d7d9fdfaa Bump dot-prop from 5.1.0 to 5.2.0 in /functions
Bumps [dot-prop](https://github.com/sindresorhus/dot-prop) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/sindresorhus/dot-prop/releases)
- [Commits](https://github.com/sindresorhus/dot-prop/compare/v5.1.0...v5.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-30 10:47:00 +00:00
Liyas Thomas
0afd6ac749 🔖 v1.9.9 2020-07-30 16:15:19 +05:30
Liyas Thomas
79222179fd Merge pull request #1033 from ushuz/patch-1 2020-07-30 11:16:24 +05:30
Liyas Thomas
89f552872c Update pages/index.vue 2020-07-30 11:11:03 +05:30
Liyas Thomas
cf88034230 Update pages/index.vue 2020-07-30 11:00:24 +05:30
John Hu
1c9e9cabcd Add trailing backslash to generated cURL code
And stop generating Content-Length header so it's easier to modify the generated code. Corresponding HTTP client should handle Content-Type pretty well anyway.
2020-07-30 12:50:16 +08:00
Liyas Thomas
2bc7f5ad22 Merge pull request #1031 from hantianwei/master
Update zh-CN.json
2020-07-28 15:30:06 +05:30
hantianwei
7a3108aca6 Update zh-CN.json
Modify the wrong word
登陆 ->  登录
2020-07-28 17:19:57 +08:00
Liyas Thomas
fa28aaee44 Fixed #1028 2020-07-28 05:35:37 +05:30
Liyas Thomas
4ab7650c51 Merge pull request #1026 from liyasthomas/dependabot/npm_and_yarn/firebase-7.17.1
Bump firebase from 7.17.0 to 7.17.1
2020-07-27 06:44:46 +05:30
dependabot[bot]
a493d996bd Bump firebase from 7.17.0 to 7.17.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.17.0 to 7.17.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.17.0...firebase@7.17.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-27 00:06:33 +00:00
Liyas Thomas
a049ffae2b Merge pull request #1024 from hantianwei/master
Update zh-CN.json
2020-07-26 08:29:18 +05:30
hantianwei
57ca6af27d Update zh-CN.json
Add Chinese translation
2020-07-26 10:00:26 +08:00
Liyas Thomas
e52bc12dbe Merge pull request #1019 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/gtm-2.3.2
Bump @nuxtjs/gtm from 2.3.0 to 2.3.2
2020-07-24 07:24:38 +05:30
dependabot[bot]
fe144384aa Bump @nuxtjs/gtm from 2.3.0 to 2.3.2
Bumps [@nuxtjs/gtm](https://github.com/nuxt-community/gtm-module) from 2.3.0 to 2.3.2.
- [Release notes](https://github.com/nuxt-community/gtm-module/releases)
- [Changelog](https://github.com/nuxt-community/gtm-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/gtm-module/compare/v2.3.0...v2.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-24 01:48:58 +00:00
Liyas Thomas
e3226b734d Merge pull request #1018 from liyasthomas/dependabot/npm_and_yarn/firebase-7.17.0
Bump firebase from 7.16.1 to 7.17.0
2020-07-24 07:17:02 +05:30
dependabot[bot]
6578eea2ff Bump firebase from 7.16.1 to 7.17.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.16.1 to 7.17.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.16.1...firebase@7.17.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-24 00:04:48 +00:00
Liyas Thomas
42e283feb3 Merge pull request #1008 from AndrewBastin/bug/994 2020-07-21 16:06:47 +05:30
Andrew Bastin
4a1988dd23 Fixed crash on proxy error 2020-07-21 04:26:57 -04:00
Andrew Bastin
cbae718d25 Fixed Unexpected Token errors for GraphQL queries 2020-07-20 23:48:16 -04:00
Andrew Bastin
53c880832d Added proxy error handling code 2020-07-20 23:48:16 -04:00
Liyas Thomas
df9e172ecc Merge pull request #1005 from liyasthomas/dependabot/npm_and_yarn/eslint-7.5.0
Bump eslint from 7.4.0 to 7.5.0
2020-07-20 05:48:30 +05:30
dependabot[bot]
e5145c9bbf Bump eslint from 7.4.0 to 7.5.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.4.0 to 7.5.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.4.0...v7.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-20 00:05:08 +00:00
Liyas Thomas
1fbfa23908 Merge pull request #1004 from liyasthomas/feat/doc 2020-07-18 17:56:12 +05:30
Liyas Thomas
193b7ae0e6 Merge branch 'master' into feat/doc 2020-07-18 17:48:42 +05:30
Liyas Thomas
ebe351ff0f Import Collections directly from Docs page 2020-07-18 17:46:29 +05:30
Liyas Thomas
f653901e8b Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-07-18 08:39:10 +05:30
Liyas Thomas
4ab512fa93 Translation guidelines 2020-07-18 08:37:13 +05:30
Liyas Thomas
1827a98284 Add Collections section in Docs page 2020-07-18 06:39:45 +05:30
Liyas Thomas
25c0759932 Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-07-17 11:15:24 +05:30
Liyas Thomas
b686298a5f Install PWA button 2020-07-17 11:14:25 +05:30
Liyas Thomas
abf8860c8a Merge pull request #998 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/google-analytics-2.4.0
Bump @nuxtjs/google-analytics from 2.3.0 to 2.4.0
2020-07-17 06:15:22 +05:30
dependabot[bot]
115b3da62c Bump @nuxtjs/google-analytics from 2.3.0 to 2.4.0
Bumps [@nuxtjs/google-analytics](https://github.com/nuxt-community/analytics-module) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/nuxt-community/analytics-module/releases)
- [Changelog](https://github.com/nuxt-community/analytics-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/analytics-module/compare/v2.3.0...v2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-17 00:40:17 +00:00
Liyas Thomas
d9734a8fd9 Merge pull request #999 from liyasthomas/dependabot/npm_and_yarn/functions/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19 in /functions
2020-07-17 06:05:24 +05:30
dependabot[bot]
9ccf9e9def Bump lodash from 4.17.15 to 4.17.19 in /functions
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-17 00:28:05 +00:00
Liyas Thomas
9f4b2e2a95 Merge pull request #997 from liyasthomas/dependabot/npm_and_yarn/firebase-7.16.1
Bump firebase from 7.16.0 to 7.16.1
2020-07-17 05:56:38 +05:30
dependabot[bot]
892d877cfb Bump firebase from 7.16.0 to 7.16.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.16.0 to 7.16.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.16.0...firebase@7.16.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-17 00:03:49 +00:00
Liyas Thomas
4dc76b864f Updated copy 2020-07-16 13:49:26 +05:30
Liyas Thomas
d8e9c05319 Updated copy 2020-07-16 09:08:31 +05:30
Liyas Thomas
c532019647 Merge pull request #995 from AndrewBastin/master
Fixed broken network requests in GraphQL
2020-07-16 02:47:40 +05:30
Andrew Bastin
82409f3ccc Fixed broken network requests in GraphQL 2020-07-15 14:09:05 -04:00
Liyas Thomas
1389c7f4be Merge pull request #993 from perseveringman/patch-zyb 2020-07-15 22:59:29 +05:30
Liyas Thomas
787844b199 Merge branch 'master' into patch-zyb 2020-07-15 22:22:02 +05:30
Liyas Thomas
eb9588fbea Create codeql-analysis.yml 2020-07-15 22:20:14 +05:30
Liyas Thomas
4574c11d0d Merge branch 'master' into patch-zyb 2020-07-15 22:15:48 +05:30
Liyas Thomas
8ec08a5ef6 Merge pull request #992 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/toast-3.3.1
⬆️ Bump @nuxtjs/toast from 3.3.0 to 3.3.1
2020-07-15 22:13:11 +05:30
Liyas Thomas
51b7c3b7ed Merge branch 'master' into dependabot/npm_and_yarn/nuxtjs/toast-3.3.1 2020-07-15 21:58:50 +05:30
Liyas Thomas
b8f6ad68a1 Merge branch 'master' into patch-zyb 2020-07-15 21:50:59 +05:30
Andrew Bastin
02c1f2ee53 Merge pull request #955 from AndrewBastin/feat/binary-response
Binary Responses & Response Lenses
2020-07-15 11:35:22 -04:00
周延博
b9fdaf2845 fix: replaceWithJSON used wrong commit name 2020-07-15 20:57:14 +08:00
dependabot[bot]
269c82ded0 ⬆️ Bump @nuxtjs/toast from 3.3.0 to 3.3.1
Bumps [@nuxtjs/toast](https://github.com/nuxt/modules) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/nuxt/modules/releases)
- [Commits](https://github.com/nuxt/modules/compare/@nuxtjs/toast@3.3.0...@nuxtjs/toast@3.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-15 00:05:03 +00:00
Andrew Bastin
ddb0d6540e Fixed typo in decodeB64StringToArrayBuffer 2020-07-14 14:12:00 -04:00
Andrew Bastin
3731da5df5 Removed unwanted Ace Editor logs 2020-07-14 14:11:18 -04:00
Andrew Bastin
54f2e8d3e3 Merge remote-tracking branch 'upstream/master' into feat/binary-response 2020-07-14 13:56:54 -04:00
Andrew Bastin
3b930259f5 Merge branch 'feat/binary-response' of https://github.com/AndrewBastin/postwoman into feat/binary-response 2020-07-14 13:51:33 -04:00
Liyas Thomas
4fe166660f Merge pull request #991 from liyasthomas/dependabot/npm_and_yarn/start-server-and-test-1.11.2
⬆️ Bump start-server-and-test from 1.11.1 to 1.11.2
2020-07-13 06:23:11 +05:30
dependabot[bot]
8dcdadfd41 ⬆️ Bump start-server-and-test from 1.11.1 to 1.11.2
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.11.1 to 1.11.2.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.11.1...v1.11.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-13 00:44:42 +00:00
Liyas Thomas
ceba63af09 Merge pull request #990 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/axios-5.12.0
⬆️ Bump @nuxtjs/axios from 5.11.0 to 5.12.0
2020-07-13 06:12:38 +05:30
dependabot[bot]
12c44665b3 ⬆️ Bump @nuxtjs/axios from 5.11.0 to 5.12.0
Bumps [@nuxtjs/axios](https://github.com/nuxt-community/axios-module) from 5.11.0 to 5.12.0.
- [Release notes](https://github.com/nuxt-community/axios-module/releases)
- [Changelog](https://github.com/nuxt-community/axios-module/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/axios-module/compare/v5.11.0...v5.12.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-13 00:05:43 +00:00
Liyas Thomas
4cef3e1e14 Merge pull request #989 from liyasthomas/dependabot/npm_and_yarn/firebase-7.16.0
⬆️ Bump firebase from 7.15.5 to 7.16.0
2020-07-10 08:59:19 +05:30
dependabot[bot]
116caee113 ⬆️ Bump firebase from 7.15.5 to 7.16.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.15.5 to 7.16.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.15.5...firebase@7.16.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-10 03:24:37 +00:00
Liyas Thomas
ff2f865d1a Merge pull request #988 from liyasthomas/dependabot/npm_and_yarn/start-server-and-test-1.11.1
⬆️ Bump start-server-and-test from 1.11.0 to 1.11.1
2020-07-10 08:52:45 +05:30
dependabot[bot]
1f4292310e ⬆️ Bump start-server-and-test from 1.11.0 to 1.11.1
Bumps [start-server-and-test](https://github.com/bahmutov/start-server-and-test) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/bahmutov/start-server-and-test/releases)
- [Commits](https://github.com/bahmutov/start-server-and-test/compare/v1.11.0...v1.11.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-10 00:02:10 +00:00
Liyas Thomas
f44a38d843 Merge pull request #986 from liyasthomas/dependabot/npm_and_yarn/sass-loader-9.0.2
⬆️ Bump sass-loader from 9.0.1 to 9.0.2
2020-07-08 08:21:24 +05:30
dependabot[bot]
e85f78432a ⬆️ Bump sass-loader from 9.0.1 to 9.0.2
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 9.0.1 to 9.0.2.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v9.0.1...v9.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-08 01:31:57 +00:00
Liyas Thomas
290cbd6498 Merge pull request #985 from liyasthomas/dependabot/npm_and_yarn/cypress-4.10.0
⬆️ Bump cypress from 4.9.0 to 4.10.0
2020-07-08 06:59:59 +05:30
dependabot[bot]
72dab618eb ⬆️ Bump cypress from 4.9.0 to 4.10.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.9.0 to 4.10.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.9.0...v4.10.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-08 00:02:22 +00:00
Liyas Thomas
e728911038 Merge branch 'master' into feat/binary-response 2020-07-07 07:08:25 +05:30
Liyas Thomas
bf280c0cf9 Removing vuefire dependency 2020-07-07 07:05:42 +05:30
Liyas Thomas
1fd0248605 Merge pull request #982 from liyasthomas/dependabot/npm_and_yarn/ace-builds-1.4.12
⬆️ Bump ace-builds from 1.4.11 to 1.4.12
2020-07-07 06:08:36 +05:30
dependabot[bot]
c8de99eae4 ⬆️ Bump ace-builds from 1.4.11 to 1.4.12
Bumps [ace-builds](https://github.com/ajaxorg/ace-builds) from 1.4.11 to 1.4.12.
- [Release notes](https://github.com/ajaxorg/ace-builds/releases)
- [Changelog](https://github.com/ajaxorg/ace-builds/blob/master/ChangeLog.txt)
- [Commits](https://github.com/ajaxorg/ace-builds/compare/v1.4.11...v1.4.12)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-07 00:23:39 +00:00
Liyas Thomas
0a148f79a6 Merge pull request #981 from liyasthomas/dependabot/npm_and_yarn/vuefire-2.2.3
⬆️ Bump vuefire from 2.2.2 to 2.2.3
2020-07-07 05:49:38 +05:30
dependabot[bot]
a70ac89646 ⬆️ Bump vuefire from 2.2.2 to 2.2.3
Bumps [vuefire](https://github.com/vuejs/vuefire) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/vuejs/vuefire/releases)
- [Changelog](https://github.com/vuejs/vuefire/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vuefire/compare/vuefire@2.2.2...vuefire@2.2.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-07 00:05:11 +00:00
Liyas Thomas
fd4ed4affa Improved spanish translation 2020-07-06 10:19:32 +05:30
Liyas Thomas
ab0aee388e Merge pull request #978 from liyasthomas/dependabot/npm_and_yarn/eslint-7.4.0
⬆️ Bump eslint from 7.3.1 to 7.4.0
2020-07-06 06:10:06 +05:30
dependabot[bot]
f6cf8455e7 ⬆️ Bump eslint from 7.3.1 to 7.4.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.3.1 to 7.4.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.3.1...v7.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-06 00:31:19 +00:00
Liyas Thomas
adc56aef84 Merge pull request #977 from liyasthomas/dependabot/npm_and_yarn/sass-loader-9.0.1
⬆️ Bump sass-loader from 9.0.0 to 9.0.1
2020-07-06 05:59:24 +05:30
dependabot[bot]
2d0dc58bc1 ⬆️ Bump sass-loader from 9.0.0 to 9.0.1
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 9.0.0 to 9.0.1.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v9.0.0...v9.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-06 00:20:59 +00:00
Liyas Thomas
6058fc0718 Merge pull request #976 from liyasthomas/dependabot/npm_and_yarn/graphql-15.3.0
⬆️ Bump graphql from 15.2.0 to 15.3.0
2020-07-06 05:49:15 +05:30
dependabot[bot]
ef484be008 ⬆️ Bump graphql from 15.2.0 to 15.3.0
Bumps [graphql](https://github.com/graphql/graphql-js) from 15.2.0 to 15.3.0.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v15.2.0...v15.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-06 00:13:49 +00:00
Liyas Thomas
a19a527b16 Merge pull request #975 from liyasthomas/dependabot/npm_and_yarn/nuxt-i18n-6.13.1
⬆️ Bump nuxt-i18n from 6.13.0 to 6.13.1
2020-07-06 05:41:58 +05:30
dependabot[bot]
64414ce7b8 ⬆️ Bump nuxt-i18n from 6.13.0 to 6.13.1
Bumps [nuxt-i18n](https://github.com/nuxt-community/nuxt-i18n) from 6.13.0 to 6.13.1.
- [Release notes](https://github.com/nuxt-community/nuxt-i18n/releases)
- [Changelog](https://github.com/nuxt-community/nuxt-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/nuxt-i18n/compare/v6.13.0...v6.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-06 00:04:50 +00:00
Andrew Bastin
6f40284e67 Merge branch 'master' into feat/binary-response 2020-07-05 19:07:27 -04:00
Andrew Bastin
bc3510ac58 Merge remote-tracking branch 'upstream/master' into feat/binary-response 2020-07-05 12:42:45 -04:00
Liyas Thomas
84eb935cec Add keyboard accessibility to tabs 2020-07-05 05:02:17 +05:30
Liyas Thomas
1950949504 Merge branch 'feat/binary-response' of https://github.com/AndrewBastin/postwoman into feat/binary-response 2020-07-03 11:35:05 +05:30
Liyas Thomas
f3e6a377a9 Removed textareaAutoHeight directive 2020-07-03 11:32:22 +05:30
Andrew Bastin
1441278bdb Merge branch 'master' into feat/binary-response 2020-07-03 01:46:33 -04:00
Liyas Thomas
1e5081dccd Merge pull request #973 from liyasthomas/dependabot/npm_and_yarn/sass-loader-9.0.0
⬆️ Bump sass-loader from 8.0.2 to 9.0.0
2020-07-03 04:19:38 +05:30
dependabot[bot]
a412095707 ⬆️ Bump sass-loader from 8.0.2 to 9.0.0
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 8.0.2 to 9.0.0.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v8.0.2...v9.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-02 22:41:05 +00:00
Liyas Thomas
27514c03e7 Merge pull request #972 from liyasthomas/dependabot/npm_and_yarn/nuxt-i18n-6.13.0
⬆️ Bump nuxt-i18n from 6.12.2 to 6.13.0
2020-07-03 04:09:13 +05:30
dependabot[bot]
57ab256230 ⬆️ Bump nuxt-i18n from 6.12.2 to 6.13.0
Bumps [nuxt-i18n](https://github.com/nuxt-community/nuxt-i18n) from 6.12.2 to 6.13.0.
- [Release notes](https://github.com/nuxt-community/nuxt-i18n/releases)
- [Changelog](https://github.com/nuxt-community/nuxt-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/nuxt-i18n/compare/v6.12.2...v6.13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-02 22:11:44 +00:00
Andrew Bastin
3766564785 Merge branch 'master' into feat/binary-response 2020-07-01 12:27:14 -04:00
Liyas Thomas
199cae09c7 🎨 svgomg 2020-07-01 10:51:22 +05:30
Liyas Thomas
4490adc36c Restore headers component import deleted from previous commit 2020-07-01 07:31:32 +05:30
Andrew Bastin
fe1353b5c7 Dynamically import lens renderers 2020-06-30 16:11:21 -04:00
Liyas Thomas
94b61e9f7c Merge branch 'master' into feat/binary-response 2020-06-30 14:52:41 +05:30
Liyas Thomas
1abc0b8c9a 🐛 Fixed #967 2020-06-30 14:47:07 +05:30
Liyas Thomas
69c9f59479 Merge branch 'master' into feat/binary-response 2020-06-30 14:32:15 +05:30
Liyas Thomas
b15ca6cdb7 Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-06-30 14:15:15 +05:30
Liyas Thomas
b2b9bd744e 🐛 Fixed #967 2020-06-30 14:14:05 +05:30
Liyas Thomas
c223b251d6 UI improvements 2020-06-30 07:39:28 +05:30
Liyas Thomas
9cc475efb3 Merge pull request #966 from liyasthomas/dependabot/npm_and_yarn/graphql-15.2.0
⬆️ Bump graphql from 15.1.0 to 15.2.0
2020-06-30 06:16:49 +05:30
dependabot[bot]
6dbd179baf ⬆️ Bump graphql from 15.1.0 to 15.2.0
Bumps [graphql](https://github.com/graphql/graphql-js) from 15.1.0 to 15.2.0.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v15.1.0...v15.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-30 00:04:32 +00:00
Andrew Bastin
2dce318a17 Added warning for invalid JSON 2020-06-29 14:43:50 -04:00
Andrew Bastin
791fe70fd3 Fixed bug in invalid JSON fallback 2020-06-29 13:41:42 -04:00
Andrew Bastin
7778202439 Added proposed binary proxy response code 2020-06-28 02:50:14 -04:00
Andrew Bastin
8ea64e2224 Remove redudant content type prop for HTML Lens 2020-06-26 15:13:17 -04:00
Andrew Bastin
28ddce1bc4 Moved text based content lenses to use the mixin 2020-06-26 14:57:55 -04:00
Andrew Bastin
d8b5fc5d3f Added mixin for common text rendering code 2020-06-26 14:45:58 -04:00
Andrew Bastin
0fbf24b836 Merge master into feat/binary-response 2020-06-26 14:34:13 -04:00
Liyas Thomas
58bdcadf6f Merge pull request #963 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/sitemap-2.4.0
⬆️ Bump @nuxtjs/sitemap from 2.3.2 to 2.4.0
2020-06-26 06:46:44 +05:30
dependabot[bot]
35f6252c3d ⬆️ Bump @nuxtjs/sitemap from 2.3.2 to 2.4.0
Bumps [@nuxtjs/sitemap](https://github.com/nuxt-community/sitemap-module) from 2.3.2 to 2.4.0.
- [Release notes](https://github.com/nuxt-community/sitemap-module/releases)
- [Changelog](https://github.com/nuxt-community/sitemap-module/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/sitemap-module/compare/v2.3.2...v2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-26 01:08:44 +00:00
Liyas Thomas
37c2918bdd Merge pull request #962 from liyasthomas/dependabot/npm_and_yarn/firebase-7.15.5
⬆️ Bump firebase from 7.15.4 to 7.15.5
2020-06-26 06:36:53 +05:30
dependabot[bot]
0fcea6d203 ⬆️ Bump firebase from 7.15.4 to 7.15.5
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.15.4 to 7.15.5.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.15.4...firebase@7.15.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-26 00:04:50 +00:00
Liyas Thomas
7d7d58fa45 Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-06-25 07:51:09 +05:30
Liyas Thomas
c2d3918341 #959 2020-06-25 07:50:23 +05:30
Andrew Bastin
8ca3df4f63 Merge master into feat/binary-response 2020-06-24 14:37:55 -04:00
Liyas Thomas
535cd75836 Merge pull request #958 from liyasthomas/dependabot/npm_and_yarn/eslint-7.3.1
⬆️ Bump eslint from 7.3.0 to 7.3.1
2020-06-24 07:10:17 +05:30
dependabot[bot]
165595e5fb ⬆️ Bump eslint from 7.3.0 to 7.3.1
Bumps [eslint](https://github.com/eslint/eslint) from 7.3.0 to 7.3.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.3.0...v7.3.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-24 01:30:06 +00:00
Liyas Thomas
52ebfe5b6b Merge pull request #957 from liyasthomas/dependabot/npm_and_yarn/cypress-4.9.0
⬆️ Bump cypress from 4.8.0 to 4.9.0
2020-06-24 06:58:06 +05:30
dependabot[bot]
0615256069 ⬆️ Bump cypress from 4.8.0 to 4.9.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.8.0 to 4.9.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.8.0...v4.9.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-24 00:05:39 +00:00
Andrew Bastin
bcbcd42b83 Added new response system support for Extension Strategy 2020-06-23 16:11:19 -04:00
Liyas Thomas
50be731d06 Fixing CI 2020-06-23 23:58:48 +05:30
Liyas Thomas
3cecfe4939 Count on tab 2020-06-23 23:40:34 +05:30
Liyas Thomas
ac50bbddca Moved pre-request script and tests to options tabs 2020-06-23 22:16:06 +05:30
Liyas Thomas
efb1296ff2 Initial Headers component 2020-06-23 15:29:01 +05:30
Andrew Bastin
cfe2ce758b Removed redundant code from pages/index.vue 2020-06-23 03:35:35 -04:00
Andrew Bastin
4da44131eb Added XML lens 2020-06-23 03:20:51 -04:00
Andrew Bastin
0fc901bd24 Added support for more types in image lens 2020-06-23 02:57:58 -04:00
Liyas Thomas
0b38514e41 Revert 'Prettify button for RAW responses' 2020-06-23 12:17:51 +05:30
Liyas Thomas
a885e774fc Prettify for RAW responses 2020-06-23 12:00:39 +05:30
Liyas Thomas
d9ac947fe1 Actions for image lens 2020-06-23 08:27:41 +05:30
Liyas Thomas
d12c09aca0 select default lens instead of raw 2020-06-23 07:58:04 +05:30
Liyas Thomas
6496a1b2b9 Merge branch 'feat/binary-response' of https://github.com/AndrewBastin/postwoman into feat/binary-response 2020-06-23 07:54:33 +05:30
Andrew Bastin
f824045fdd Merge master into feat/binary-response 2020-06-22 22:18:29 -04:00
Liyas Thomas
ddf81a3ae9 📄 Updating README 2020-06-23 07:11:51 +05:30
Liyas Thomas
e8a5a2eae9 Merge pull request #956 from liyasthomas/dependabot/npm_and_yarn/firebase-7.15.4
⬆️ Bump firebase from 7.15.3 to 7.15.4
2020-06-23 06:05:46 +05:30
dependabot[bot]
06a61f45ff ⬆️ Bump firebase from 7.15.3 to 7.15.4
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.15.3 to 7.15.4.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.15.3...firebase@7.15.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-23 00:04:57 +00:00
Liyas Thomas
994aadec7c Merge branch 'feat/binary-response' of https://github.com/AndrewBastin/postwoman into feat/binary-response 2020-06-22 14:27:53 +05:30
Andrew Bastin
cb059a141f Removed debug logs 2020-06-22 04:41:21 -04:00
Andrew Bastin
a41b6be185 Don't run the response lenses if the body is the loading text 2020-06-22 04:31:55 -04:00
Andrew Bastin
d31da4a0ec Removed redundant HTML response type check for preview code 2020-06-22 03:36:34 -04:00
Liyas Thomas
bfcb0727d7 Merge branch 'feat/binary-response' of https://github.com/AndrewBastin/postwoman into feat/binary-response 2020-06-22 13:01:18 +05:30
Liyas Thomas
d81306ac1a Actions for HTML responses 2020-06-22 03:26:31 -04:00
Liyas Thomas
b227943fe7 Actions for HTML responses 2020-06-22 12:49:17 +05:30
Liyas Thomas
e04e82e81d Actions for JSON responses 2020-06-22 12:25:43 +05:30
Liyas Thomas
b44ba30873 Actions for RAW responses 2020-06-22 11:22:01 +05:30
Liyas Thomas
0acb5c643c Fixing CI Build 2020-06-22 08:30:18 +05:30
Liyas Thomas
923102a8bf Fixing CI Build 2020-06-22 08:16:09 +05:30
Liyas Thomas
ac323c99d5 Fixed activating multiple tabs on initial load 2020-06-22 08:00:46 +05:30
Andrew Bastin
7911d17b2f Initial lens implementation 2020-06-21 17:15:34 -04:00
Liyas Thomas
307e44a7b9 Merge pull request #954 from liyasthomas/refactor/imports
Improving SEO
2020-06-21 11:37:03 +05:30
Liyas Thomas
6ad2da163c Merge branch 'master' into refactor/imports 2020-06-21 11:29:57 +05:30
Liyas Thomas
a38ef9e29e 🔍 Improving SEO 2020-06-21 11:26:19 +05:30
Liyas Thomas
379d4f1887 Merge pull request #950 from liyasthomas/dependabot/npm_and_yarn/firebase-7.15.3
⬆️ Bump firebase from 7.15.1 to 7.15.3
2020-06-21 10:01:39 +05:30
Liyas Thomas
ce61872822 Merge branch 'master' into dependabot/npm_and_yarn/firebase-7.15.3 2020-06-21 09:56:37 +05:30
Liyas Thomas
8e37a8f1bb Merge pull request #953 from liyasthomas/refactor/imports
Isolate Netlify, Firebase and Helper functions + Import from absolute…
2020-06-21 09:55:42 +05:30
Liyas Thomas
fe9c08e92a 🔥 Removed unused variable 2020-06-21 09:50:20 +05:30
Liyas Thomas
87f6ae8135 Merge branch 'refactor/imports' of https://github.com/liyasthomas/postwoman into refactor/imports 2020-06-21 09:39:56 +05:30
Liyas Thomas
4d780ea2ca 💚 Fixing CI Build 2020-06-21 09:38:57 +05:30
Liyas Thomas
6643f1e4c8 Merge branch 'master' into refactor/imports 2020-06-21 09:28:51 +05:30
Liyas Thomas
5d94ac361e Isolate Netlify, Firebase and Helper functions + Import from absolute paths 2020-06-21 09:24:45 +05:30
Liyas Thomas
5d1cb8558b Merge pull request #952 from AndrewBastin/feat/select-realtime-log
Added ability to select text in realtime log
2020-06-21 08:51:51 +05:30
Andrew Bastin
361ddc5591 Added ability to select text in realtime log 2020-06-20 23:00:48 -04:00
dependabot[bot]
fc978076d7 ⬆️ Bump firebase from 7.15.1 to 7.15.3
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.15.1 to 7.15.3.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.15.1...firebase@7.15.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-21 02:47:26 +00:00
Liyas Thomas
20cd119c89 Merge pull request #949 from liyasthomas/dependabot/npm_and_yarn/eslint-7.3.0
⬆️ Bump eslint from 7.2.0 to 7.3.0
2020-06-21 08:15:31 +05:30
dependabot[bot]
7c5b8e4305 ⬆️ Bump eslint from 7.2.0 to 7.3.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.2.0 to 7.3.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.2.0...v7.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-21 02:40:53 +00:00
Liyas Thomas
24315ab0e6 Better History restore 2020-06-20 07:54:14 +05:30
Liyas Thomas
4cae0c9652 💄 Updating the UI and style files 2020-06-20 00:24:53 +05:30
Liyas Thomas
18875d46b5 🚑 Critical hotfix 2020-06-19 23:07:40 +05:30
Liyas Thomas
e45a185c40 🎨 Updated flex UI 2020-06-19 15:29:14 +05:30
Liyas Thomas
62dfb582f4 Better iconography 2020-06-19 13:25:41 +05:30
Liyas Thomas
1587a44cd7 Lint 2020-06-19 12:26:04 +05:30
Liyas Thomas
fcbc738088 Merge pull request #946 from liyasthomas/revert-942-dependabot/npm_and_yarn/nuxt-2.13.0
Revert "⬆️ Bump nuxt from 2.12.2 to 2.13.0"
2020-06-19 12:22:39 +05:30
Liyas Thomas
f845e197b5 Revert "⬆️ Bump nuxt from 2.12.2 to 2.13.0" 2020-06-19 12:16:58 +05:30
Liyas Thomas
8ff0fa7707 Merge pull request #942 from liyasthomas/dependabot/npm_and_yarn/nuxt-2.13.0
⬆️ Bump nuxt from 2.12.2 to 2.13.0
2020-06-19 08:18:59 +05:30
dependabot[bot]
bb59de5f5e ⬆️ Bump nuxt from 2.12.2 to 2.13.0
Bumps [nuxt](https://github.com/nuxt/nuxt.js) from 2.12.2 to 2.13.0.
- [Release notes](https://github.com/nuxt/nuxt.js/releases)
- [Changelog](https://github.com/nuxt/nuxt.js/blob/dev/RELEASE_PLAN.md)
- [Commits](https://github.com/nuxt/nuxt.js/compare/v2.12.2...v2.13.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-19 00:03:14 +00:00
Liyas Thomas
b8b15b9394 🍻 hello@postwoman.io 2020-06-18 12:38:16 +05:30
Liyas Thomas
9676b1d110 💄 Better TOC and popover buttons 2020-06-17 07:50:01 +05:30
Liyas Thomas
f5e217bd81 Merge pull request #939 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/sitemap-2.3.2
⬆️ Bump @nuxtjs/sitemap from 2.3.1 to 2.3.2
2020-06-16 06:08:04 +05:30
dependabot[bot]
97501e63c5 ⬆️ Bump @nuxtjs/sitemap from 2.3.1 to 2.3.2
Bumps [@nuxtjs/sitemap](https://github.com/nuxt-community/sitemap-module) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/nuxt-community/sitemap-module/releases)
- [Changelog](https://github.com/nuxt-community/sitemap-module/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/sitemap-module/compare/v2.3.1...v2.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-16 00:05:21 +00:00
Liyas Thomas
5b220d5c5c 🐛 Fixed a wrong toast notification 2020-06-15 16:10:23 +05:30
Liyas Thomas
5cdc30b822 🐛 Fixed issues with sync, squashed a bug introduced in last transpile 2020-06-15 15:03:31 +05:30
Liyas Thomas
5249e4730d Merge pull request #938 from liyasthomas/dependabot/npm_and_yarn/graphql-15.1.0 2020-06-14 12:24:26 +05:30
dependabot[bot]
870324bb56 ⬆️ Bump graphql from 14.6.0 to 15.1.0
Bumps [graphql](https://github.com/graphql/graphql-js) from 14.6.0 to 15.1.0.
- [Release notes](https://github.com/graphql/graphql-js/releases)
- [Commits](https://github.com/graphql/graphql-js/compare/v14.6.0...v15.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-14 06:45:26 +00:00
Liyas Thomas
588bdcc2dd Merge pull request #937 from liyasthomas/refactor/lint 2020-06-12 13:32:16 +05:30
Liyas Thomas
bd0208040e ✏️ Updated readme 2020-06-12 13:09:58 +05:30
Liyas Thomas
b6c16c83c1 🚑 Critical hotfix 2020-06-12 08:55:17 +05:30
Liyas Thomas
6331c4715f Merge pull request #934 from liyasthomas/refactor/es6 2020-06-12 08:45:01 +05:30
Liyas Thomas
1eb0e387ea Merge branch 'master' into refactor/es6 2020-06-12 08:39:26 +05:30
Liyas Thomas
e4e2a444a0 Merge pull request #936 from liyasthomas/dependabot/npm_and_yarn/graphql-language-service-interface-2.4.0
⬆️ Bump graphql-language-service-interface from 2.3.3 to 2.4.0
2020-06-12 06:41:01 +05:30
dependabot[bot]
979aac2fca ⬆️ Bump graphql-language-service-interface from 2.3.3 to 2.4.0
Bumps [graphql-language-service-interface](https://github.com/graphql/graphiql) from 2.3.3 to 2.4.0.
- [Release notes](https://github.com/graphql/graphiql/releases)
- [Changelog](https://github.com/graphql/graphiql/blob/master/CHANGELOG.md)
- [Commits](https://github.com/graphql/graphiql/compare/graphql-language-service-interface@2.3.3...graphql-language-service-interface@2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-12 01:04:04 +00:00
Liyas Thomas
4308a0bebd Merge pull request #935 from liyasthomas/dependabot/npm_and_yarn/firebase-7.15.1
⬆️ Bump firebase from 7.15.0 to 7.15.1
2020-06-12 06:32:07 +05:30
dependabot[bot]
eb60b869d4 ⬆️ Bump firebase from 7.15.0 to 7.15.1
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.15.0 to 7.15.1.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.15.0...firebase@7.15.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-12 00:02:38 +00:00
Liyas Thomas
948bd41cd8 Merge branch 'refactor/es6' of https://github.com/liyasthomas/postwoman into refactor/es6 2020-06-11 20:48:58 +05:30
Liyas Thomas
eb760b37e6 Make use of single argument Object 2020-06-11 20:47:49 +05:30
Liyas Thomas
9dcafff26f Merge branch 'master' into refactor/es6 2020-06-11 20:04:21 +05:30
Liyas Thomas
0644a8c9fb Transpiled ES5 code to ES6/ES7 2020-06-11 19:55:40 +05:30
Liyas Thomas
a984580e4c Merge pull request #932 from liyasthomas/dependabot/add-v2-config-file
Create Dependabot config file
2020-06-11 16:44:59 +05:30
dependabot-preview[bot]
b501cc1f93 Create Dependabot config file 2020-06-11 11:10:05 +00:00
Liyas Thomas
9bc0ae975a Merge pull request #931 from AndrewBastin/feat/disable-non-json-download 2020-06-11 09:15:46 +05:30
Andrew Bastin
d111e219c2 Hide download response button for non-JSON responses 2020-06-10 20:17:41 -04:00
Andrew Bastin
6ebcecae80 Added support for full content-type headers in isJSONContentType 2020-06-10 20:17:41 -04:00
Liyas Thomas
cd91d53ead 💄 Increase border-top for secondary nav 2020-06-11 04:07:55 +05:30
Liyas Thomas
5d1f54005f Reverting banner ad 2020-06-10 15:41:25 +05:30
Liyas Thomas
df115bd7db 🌱 Updated funding info 2020-06-09 14:32:08 +05:30
Liyas Thomas
bd81d77cfa Merge pull request #928 from liyasthomas/dependabot/npm_and_yarn/cypress-4.8.0
chore(deps-dev): bump cypress from 4.7.0 to 4.8.0
2020-06-09 06:14:04 +05:30
dependabot-preview[bot]
59365642fc chore(deps-dev): bump cypress from 4.7.0 to 4.8.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.7.0 to 4.8.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.7.0...v4.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-09 00:34:40 +00:00
Liyas Thomas
7387acdd2c Merge pull request #926 from myussufz/hotfix/sync-collections-and-environment 2020-06-08 10:49:13 +05:30
Mohamed Yussuf
f477998b2f fix: add sync firebase for all the commit 2020-06-08 01:56:13 +08:00
Mohamed Yussuf
0bf2ba5416 fix: not login issue 2020-06-08 01:32:14 +08:00
Mohamed Yussuf
10c568098c fix: environment and collection sync issue with firebase 2020-06-08 00:44:22 +08:00
Liyas Thomas
d9285915ef :octocat: Added GitHub sponsor link 2020-06-07 15:32:26 +05:30
Liyas Thomas
ae0dcd0333 Merge pull request #925 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/axios-5.11.0
chore(deps): bump @nuxtjs/axios from 5.10.3 to 5.11.0
2020-06-07 06:55:12 +05:30
dependabot-preview[bot]
228b3f2660 chore(deps): bump @nuxtjs/axios from 5.10.3 to 5.11.0
Bumps [@nuxtjs/axios](https://github.com/nuxt-community/axios-module) from 5.10.3 to 5.11.0.
- [Release notes](https://github.com/nuxt-community/axios-module/releases)
- [Changelog](https://github.com/nuxt-community/axios-module/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/axios-module/compare/v5.10.3...v5.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-07 01:13:38 +00:00
Liyas Thomas
90c3b1bf6d Merge pull request #924 from liyasthomas/dependabot/npm_and_yarn/eslint-7.2.0
chore(deps-dev): bump eslint from 7.1.0 to 7.2.0
2020-06-07 06:41:08 +05:30
dependabot-preview[bot]
e805e8d054 chore(deps-dev): bump eslint from 7.1.0 to 7.2.0
Bumps [eslint](https://github.com/eslint/eslint) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.1.0...v7.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-07 01:07:10 +00:00
Liyas Thomas
89e975aa0e Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-06-05 14:40:13 +05:30
Liyas Thomas
acd7abefe9 n✏️ Fixing typos 2020-06-05 14:34:58 +05:30
Liyas Thomas
1be4490126 Merge pull request #923 from AndrewBastin/feat/gql-response-opt-visibility
GraphQL response options only visible when a response is shown
2020-06-05 10:22:59 +05:30
Andrew Bastin
24d1dbadb7 GQL Response options only visible on response 2020-06-04 22:33:18 -04:00
Liyas Thomas
0a7ff36bb5 Merge pull request #921 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/sitemap-2.3.1
chore(deps): bump @nuxtjs/sitemap from 2.3.0 to 2.3.1
2020-06-05 07:19:49 +05:30
dependabot-preview[bot]
f788dc5595 chore(deps): bump @nuxtjs/sitemap from 2.3.0 to 2.3.1
Bumps [@nuxtjs/sitemap](https://github.com/nuxt-community/sitemap-module) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/nuxt-community/sitemap-module/releases)
- [Changelog](https://github.com/nuxt-community/sitemap-module/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/sitemap-module/compare/v2.3.0...v2.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-05 01:44:06 +00:00
Liyas Thomas
b347af10fe Merge pull request #922 from liyasthomas/dependabot/npm_and_yarn/firebase-7.15.0
chore(deps): bump firebase from 7.14.6 to 7.15.0
2020-06-05 07:11:36 +05:30
dependabot-preview[bot]
d0411f7d96 chore(deps): bump firebase from 7.14.6 to 7.15.0
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.14.6 to 7.15.0.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.14.6...firebase@7.15.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-05 00:28:36 +00:00
Liyas Thomas
5806870b1c Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-06-03 11:07:20 +05:30
Liyas Thomas
8d8322152b 🌱 Won Tyk side project fund 2020-06-03 11:06:25 +05:30
Liyas Thomas
8b5f7655cf Merge pull request #919 from liyasthomas/dependabot/npm_and_yarn/nuxt-i18n-6.12.2 2020-06-03 10:11:49 +05:30
Liyas Thomas
a29068ee46 Merge branch 'master' into dependabot/npm_and_yarn/nuxt-i18n-6.12.2 2020-06-03 10:07:54 +05:30
Liyas Thomas
ac45c57215 Merge pull request #920 from AndrewBastin/feat/gql-result-download 2020-06-03 10:07:19 +05:30
Andrew Bastin
19dbf7fe13 Added ability to download GraphQL responses 2020-06-02 23:42:47 -04:00
Andrew Bastin
8dc662d27e Renamed downloadResponse to proper downloadSchema 2020-06-02 23:42:47 -04:00
dependabot-preview[bot]
d52e998111 chore(deps): bump nuxt-i18n from 6.12.1 to 6.12.2
Bumps [nuxt-i18n](https://github.com/nuxt-community/nuxt-i18n) from 6.12.1 to 6.12.2.
- [Release notes](https://github.com/nuxt-community/nuxt-i18n/releases)
- [Changelog](https://github.com/nuxt-community/nuxt-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/nuxt-i18n/compare/v6.12.1...v6.12.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-03 00:31:12 +00:00
Liyas Thomas
1f9222ad04 DELETE now supports request body 2020-06-02 17:10:47 +05:30
Andrew Bastin
179fe8b1b9 Merge pull request #916 from AndrewBastin/feat/keyboard-cancel-request
Cancel Request from the Keyboard
2020-06-02 02:57:51 -04:00
Liyas Thomas
888bffba1d Merge branch 'master' into feat/keyboard-cancel-request 2020-06-02 12:24:32 +05:30
Liyas Thomas
e5e4f6508c Merge pull request #917 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/gtm-2.3.0
chore(deps): bump @nuxtjs/gtm from 2.2.3 to 2.3.0
2020-06-02 10:45:17 +05:30
dependabot-preview[bot]
898b74a478 chore(deps): bump @nuxtjs/gtm from 2.2.3 to 2.3.0
Bumps [@nuxtjs/gtm](https://github.com/nuxt-community/gtm-module) from 2.2.3 to 2.3.0.
- [Release notes](https://github.com/nuxt-community/gtm-module/releases)
- [Changelog](https://github.com/nuxt-community/gtm-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/gtm-module/compare/v2.2.3...v2.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-02 03:52:49 +00:00
Andrew Bastin
3189f46ccb Updated language entry send_request 2020-05-31 14:30:50 -04:00
Andrew Bastin
42a566d923 Ctrl+G cancels running requests as well 2020-05-31 14:30:24 -04:00
Andrew Bastin
0897bb24fd Merge pull request #915 from AndrewBastin/feat/cancel-button
Cancellable Requests
2020-05-30 22:09:59 -04:00
Andrew Bastin
4a2f698ff8 Added ability to cancel requests 2020-05-30 18:28:46 -04:00
Andrew Bastin
0fccd3d5cb Added cancel request function for network requests 2020-05-30 18:28:13 -04:00
Andrew Bastin
62c3b341bb Added cancellable requests support for ExtensionStrategy 2020-05-30 18:26:51 -04:00
Andrew Bastin
b2600d3ffd Added cancellable requests for AxiosStrategy 2020-05-30 18:26:26 -04:00
Liyas Thomas
e2e1432069 Merge pull request #914 from liyasthomas/dependabot/npm_and_yarn/nuxt-i18n-6.12.1
chore(deps): bump nuxt-i18n from 6.12.0 to 6.12.1
2020-05-30 10:55:51 +05:30
dependabot-preview[bot]
d1394d311e chore(deps): bump nuxt-i18n from 6.12.0 to 6.12.1
Bumps [nuxt-i18n](https://github.com/nuxt-community/nuxt-i18n) from 6.12.0 to 6.12.1.
- [Release notes](https://github.com/nuxt-community/nuxt-i18n/releases)
- [Changelog](https://github.com/nuxt-community/nuxt-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/nuxt-i18n/compare/v6.12.0...v6.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-30 05:16:26 +00:00
Liyas Thomas
28726fd153 Merge pull request #913 from liyasthomas/dependabot/npm_and_yarn/firebase-7.14.6 2020-05-30 10:43:55 +05:30
dependabot-preview[bot]
2de33a87cc chore(deps): bump firebase from 7.14.5 to 7.14.6
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.14.5 to 7.14.6.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.14.5...firebase@7.14.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-30 05:08:53 +00:00
Liyas Thomas
a04bcd196b 🔥 Removed stale dependency: vue-virtual-scroll-list 2020-05-30 06:14:02 +05:30
Liyas Thomas
44261b2ceb 📦 Bumped eslint 2020-05-29 22:28:14 +05:30
Liyas Thomas
0db291047b 🐛 Fixed #912 2020-05-29 22:17:56 +05:30
Liyas Thomas
17dcb1826c ⚗️ Experimenting ad 2020-05-28 15:32:11 +05:30
Liyas Thomas
f1ddf4de56 ⚗️ Experimenting ad 2020-05-28 07:35:19 +05:30
Liyas Thomas
d6e06098d0 🐛 Added support for importing Postman global environments. Fixes #907 2020-05-27 22:16:24 +05:30
Liyas Thomas
cd232d7221 Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-05-27 07:09:37 +05:30
Liyas Thomas
d986d2e462 🐛 Populate label to Collection - Fixed #897 2020-05-27 07:07:41 +05:30
Liyas Thomas
7003bab28f Merge pull request #904 from liyasthomas/dependabot/npm_and_yarn/cypress-4.7.0
chore(deps-dev): bump cypress from 4.6.0 to 4.7.0
2020-05-27 06:03:59 +05:30
dependabot-preview[bot]
9f6c0cf104 chore(deps-dev): bump cypress from 4.6.0 to 4.7.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.6.0 to 4.7.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.6.0...v4.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-27 00:28:44 +00:00
Liyas Thomas
43d3fa92ba 🐛 Fixed #891 2020-05-26 08:39:52 +05:30
Liyas Thomas
d80238d93b Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-05-26 07:51:05 +05:30
Liyas Thomas
a6160be3ad 🐛 Fixed #896 2020-05-26 07:49:55 +05:30
Liyas Thomas
4c1abdf0d2 Merge pull request #899 from liyasthomas/dependabot/npm_and_yarn/nuxt-i18n-6.12.0 2020-05-26 06:41:17 +05:30
dependabot-preview[bot]
07ba60ab67 chore(deps): bump nuxt-i18n from 6.11.1 to 6.12.0
Bumps [nuxt-i18n](https://github.com/nuxt-community/nuxt-i18n) from 6.11.1 to 6.12.0.
- [Release notes](https://github.com/nuxt-community/nuxt-i18n/releases)
- [Changelog](https://github.com/nuxt-community/nuxt-i18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/nuxt-i18n/compare/v6.11.1...v6.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-26 00:29:45 +00:00
Liyas Thomas
b4d37b2101 Merge pull request #895 from AndrewBastin/bugfix/894 2020-05-24 19:04:04 +05:30
Andrew Bastin
05f573d181 Added check if content-type header is present for transformResponse 2020-05-24 07:38:03 -04:00
Andrew Bastin
0b40e1c3fe Merge pull request #893 from AndrewBastin/refactor/893
Some small refactoring
2020-05-22 04:56:20 -04:00
Andrew Bastin
b0da562472 Refactor content type based code to separate file 2020-05-22 02:53:36 -04:00
Andrew Bastin
a0d8b9029e Updated main page url validation to use httpValid 2020-05-22 02:33:04 -04:00
Andrew Bastin
76d7a3f6d4 Rename sseValid to httpValid 2020-05-22 02:28:14 -04:00
Liyas Thomas
f4093d04d9 Merge pull request #892 from liyasthomas/dependabot/npm_and_yarn/firebase-7.14.5 2020-05-22 06:03:44 +05:30
dependabot-preview[bot]
427d38df44 chore(deps): bump firebase from 7.14.4 to 7.14.5
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.14.4 to 7.14.5.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.14.4...firebase@7.14.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-22 00:27:37 +00:00
Andrew Bastin
1d9931a58a Merge pull request #890 from AndrewBastin/bugfix/880
Fixed regex not validating for Realtime page for localhost URLs
2020-05-20 22:55:49 -04:00
Andrew Bastin
4737a5fe69 Merge branch 'master' into bugfix/880 2020-05-20 22:42:29 -04:00
Liyas Thomas
27d496d602 Merge pull request #889 from liyasthomas/dependabot/npm_and_yarn/cypress-4.6.0
chore(deps-dev): bump cypress from 4.5.0 to 4.6.0
2020-05-21 08:09:04 +05:30
Andrew Bastin
df37a00bfc Fixed regex not validating for Realtime page for localhost URLs 2020-05-20 22:38:34 -04:00
dependabot-preview[bot]
7c7ff40776 chore(deps-dev): bump cypress from 4.5.0 to 4.6.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Commits](https://github.com/cypress-io/cypress/compare/v4.5.0...v4.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-21 00:36:46 +00:00
Liyas Thomas
2607d14c82 Merge pull request #888 from liyasthomas/dependabot/npm_and_yarn/nuxtjs/google-analytics-2.3.0
chore(deps-dev): bump @nuxtjs/google-analytics from 2.2.3 to 2.3.0
2020-05-21 06:04:11 +05:30
dependabot-preview[bot]
1e80fea530 chore(deps-dev): bump @nuxtjs/google-analytics from 2.2.3 to 2.3.0
Bumps [@nuxtjs/google-analytics](https://github.com/nuxt-community/analytics-module) from 2.2.3 to 2.3.0.
- [Release notes](https://github.com/nuxt-community/analytics-module/releases)
- [Changelog](https://github.com/nuxt-community/analytics-module/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nuxt-community/analytics-module/compare/v2.2.3...v2.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-21 00:27:22 +00:00
Liyas Thomas
59fc695190 Merge pull request #887 from guchongxi/bugfix/886 2020-05-20 17:36:45 +05:30
顾重
c8b5620cc5 Fixed header delete 2020-05-20 19:54:42 +08:00
Liyas Thomas
67ad59b80e 🐛 Fixed #883 2020-05-19 19:50:27 +05:30
Liyas Thomas
9c0c80033f Merge pull request #881 from AndrewBastin/bugfix/869 2020-05-19 13:06:42 +05:30
Andrew Bastin
c2a919e178 Fixed axios parsing JSON for non-JSON content types 2020-05-19 03:04:03 -04:00
Liyas Thomas
a0da79165d Merge branch 'master' of https://github.com/liyasthomas/postwoman 2020-05-15 21:36:02 +05:30
Samir Boulema
40ea43b738 Merge pull request #878 from sboulema/feature/environments-not-synced-after-edit
Fix syncing environments
2020-05-15 17:57:20 +02:00
Liyas Thomas
0183a8eff8 Merge branch 'master' into feature/environments-not-synced-after-edit 2020-05-15 20:56:39 +05:30
Liyas Thomas
700643019f Merge pull request #876 from AndrewBastin/bugfix/873 2020-05-15 20:55:04 +05:30
Samir L. Boulema
240351ea23 Fix syncing environments 2020-05-15 16:43:25 +02:00
Andrew Bastin
b49e215617 Refactor Realtime URL validation functions 2020-05-15 02:14:24 -04:00
Andrew Bastin
b1ffeb1f24 Updated URL validation regex to be more lenient 2020-05-15 02:10:26 -04:00
Liyas Thomas
ae9a9cf8cf Merge pull request #875 from liyasthomas/dependabot/npm_and_yarn/firebase-7.14.4
chore(deps): bump firebase from 7.14.3 to 7.14.4
2020-05-15 06:53:44 +05:30
dependabot-preview[bot]
64b76bdc6e chore(deps): bump firebase from 7.14.3 to 7.14.4
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 7.14.3 to 7.14.4.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@7.14.3...firebase@7.14.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-15 00:27:07 +00:00
Liyas Thomas
9744de507e 🔖 v1.9.7 2020-05-14 08:53:50 +05:30
511 changed files with 115823 additions and 33773 deletions

View File

@@ -1,143 +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"
]
},
{
"login": "dmitryyankowski",
"name": "Dmitry Yankowski",
"avatar_url": "https://avatars0.githubusercontent.com/u/20114263?v=4",
"profile": "https://dmitryyankowski.com",
"contributions": [
"code"
]
},
{
"login": "sboulema",
"name": "Samir Boulema",
"avatar_url": "https://avatars2.githubusercontent.com/u/1820661?v=4",
"profile": "http://www.sboulema.nl",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,
"projectName": "postwoman",
"projectOwner": "liyasthomas",
"repoType": "github",
"repoHost": "https://github.com",
"skipCi": true
}

View File

@@ -30,7 +30,7 @@ coverage
# nyc test coverage
.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
# Bower dependency directory (https://bower.io/)
@@ -97,8 +97,8 @@ sw.*
# Vim swap files
*.swp
# Postwoman build data
.postwoman
# Build data
.hoppscotch
# File explorer
.directory

View File

@@ -1,11 +1,11 @@
# https://editorconfig.org
# EditorConfig is awesome: https://EditorConfig.org
root = true
[*]
indent_size = 2
indent_style = space
charset = utf-8
indent_size = 2
end_of_line = lf
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

View File

@@ -1,15 +1,18 @@
# Google Analytics
GA_ID=UA-XXXXXXXX-X
# Google Analytics ID
GA_ID=UA-61422507-4
# Google Tag Manager
GTM_ID=GTM-XXXXXXX
# Google Tag Manager ID
GTM_ID=GTM-NMKVBMV
# Firebase
API_KEY=api-key
AUTH_DOMAIN=project-id.firebaseapp.com
DATABASE_URL=https://project-id.firebaseio.com
PROJECT_ID=project-id
STORAGE_BUCKET=project-id.appspot.com
MESSAGING_SENDER_ID=sender-id
APP_ID=app-id
MEASUREMENT_ID=G-measurement-id
# Firebase config
API_KEY=AIzaSyCMsFreESs58-hRxTtiqQrIcimh4i1wbsM
AUTH_DOMAIN=postwoman-api.firebaseapp.com
DATABASE_URL=https://postwoman-api.firebaseio.com
PROJECT_ID=postwoman-api
STORAGE_BUCKET=postwoman-api.appspot.com
MESSAGING_SENDER_ID=421993993223
APP_ID=1:421993993223:web:ec0baa8ee8c02ffa1fc6a2
MEASUREMENT_ID=G-BBJ3R80PJT
# Base URL
BASE_URL=https://hoppscotch.io

67
.eslintrc.js Normal file
View File

@@ -0,0 +1,67 @@
module.exports = {
root: true,
env: {
browser: true,
node: true,
jest: true,
},
parserOptions: {
sourceType: "module",
requireConfigFile: false,
},
extends: [
"@nuxtjs",
"@nuxtjs/eslint-config-typescript",
"prettier/prettier",
"eslint:recommended",
"plugin:vue/recommended",
"plugin:prettier/recommended",
"plugin:nuxt/recommended",
],
plugins: ["vue", "prettier"],
// add your custom rules here
rules: {
semi: [2, "never"],
"no-console": process.env.NODE_ENV === "production" ? "error" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
"vue/max-attributes-per-line": "off",
"vue/component-name-in-template-casing": ["error", "PascalCase"],
"vue/html-self-closing": [
"error",
{
html: {
normal: "never",
void: "always",
},
},
],
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline": "off",
"vue/require-default-prop": "warn",
"vue/require-prop-types": "warn",
"prettier/prettier": ["warn", { semi: false }],
"import/no-named-as-default": "off",
"no-undef": "off",
// localStorage block
"no-restricted-globals": [
"error",
{
name: "localStorage",
message:
"Do not use 'localStorage' directly. Please use localpersistence.ts functions or stores",
},
],
// window.localStorage block
"no-restricted-syntax": [
"error",
{
selector: "CallExpression[callee.object.property.name='localStorage']",
message:
"Do not use 'localStorage' directly. Please use localpersistence.ts functions or stores",
},
],
},
globals: {
$nuxt: true,
},
}

View File

@@ -1,14 +1,5 @@
{
"projects": {
"default": "postwoman-api"
},
"targets": {
"postwoman-api": {
"hosting": {
"postwoman": [
"postwoman"
]
}
}
}
}

4
.github/FUNDING.yml vendored
View File

@@ -1,4 +1,4 @@
github: postwoman-io
open_collective: postwoman
github: hoppscotch
open_collective: hoppscotch
patreon: liyasthomas
custom: https://www.paypal.me/liyascthomas

View File

@@ -6,5 +6,3 @@ labels: ''
assignees: ''
---

10
.github/dependabot.yml vendored Normal file
View 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
View 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

62
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,62 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL"
on:
push:
branches: [main]
pull_request:
# The branches below must be a subset of the branches above
branches: [main]
schedule:
- cron: '0 0 * * 6'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Override automatic language detection by changing the below list
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
language: ['javascript']
# Learn more...
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# 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

View File

@@ -0,0 +1,19 @@
# This file was auto-generated by the Firebase CLI
# https://github.com/firebase/firebase-tools
name: Deploy to Firebase Hosting on merge
'on':
push:
branches:
- main
jobs:
build_and_deploy:
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

25
.github/workflows/tests.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
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
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm test

6
.gitignore vendored
View File

@@ -26,7 +26,7 @@ coverage
# nyc test coverage
.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
# Bower dependency directory (https://bower.io/)
@@ -93,8 +93,8 @@ sw.*
# Vim swap files
*.swp
# Postwoman build data
.postwoman
# Build data
.hoppscotch
# File explorer
.directory

1
.husky/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
_

4
.husky/commit-msg Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit ""

4
.husky/pre-commit Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run pre-commit

View File

@@ -1,7 +1,8 @@
.dependabot
.github
.nuxt
.postwoman
.hoppscotch
.vscode
package-lock.json
node_modules
node_modules
dist

3
.prettierrc.js Normal file
View File

@@ -0,0 +1,3 @@
module.exports = {
semi: false
}

23
.stylelintrc.js Normal file
View File

@@ -0,0 +1,23 @@
module.exports = {
extends: ["stylelint-config-standard", "stylelint-config-prettier"],
// add your custom config here
// https://stylelint.io/user-guide/configuration
rules: {
"at-rule-no-unknown": [
true,
{
ignoreAtRules: [
"extends",
"apply",
"variants",
"responsive",
"screen",
"mixin",
"include",
],
},
],
"declaration-block-trailing-semicolon": null,
"no-descending-specificity": null,
},
}

View File

@@ -1,39 +0,0 @@
# == INSTRUCTIONS FOR SETTING UP TRAVIS ==
#
# 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.
language: node_js
node_js:
- lts/*
os: linux
addons:
apt:
packages:
- libgconf-2-4 # cypress binary dependency
cache: npm
branches:
only:
- master
install:
- npm ci
before_script:
- npm run build # use nuxt build and start to run tests
script:
- npm test
notifications:
webhooks: https://www.travisbuddy.com

View File

@@ -1,41 +1,157 @@
# 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)
**Implemented enhancements:**
- Unable to use postwoman with latest docker image from docker hub [\#866](https://github.com/liyasthomas/postwoman/issues/866)
- support response json array [\#805](https://github.com/liyasthomas/postwoman/issues/805)
- Add Format Body option [\#767](https://github.com/liyasthomas/postwoman/issues/767)
- Allow importing environment variables via Postman environment json files [\#759](https://github.com/liyasthomas/postwoman/issues/759)
- Request headers kept same after changing request type [\#752](https://github.com/liyasthomas/postwoman/issues/752)
- Add compatibility for postman collections & environments [\#746](https://github.com/liyasthomas/postwoman/issues/746)
- Add GraphQL syntax highlighting [\#741](https://github.com/liyasthomas/postwoman/issues/741)
- 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)
- 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)
- Allow importing environment variables via Postman environment json files [\#862](https://github.com/liyasthomas/postwoman/pull/862) ([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))
- GraphQL Query Editor Syntax Highlighting [\#838](https://github.com/liyasthomas/postwoman/pull/838) ([AndrewBastin](https://github.com/AndrewBastin))
**Fixed bugs:**
- Empty header in headers list results in SyntaxError: Failed to execute 'setRequestHeader' [\#765](https://github.com/liyasthomas/postwoman/issues/765)
- 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)
@@ -48,42 +164,62 @@
- 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)
- 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)
- I used it to post test,but response network error [\#750](https://github.com/liyasthomas/postwoman/issues/750)
- 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))
@@ -149,31 +285,13 @@
- 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)
**Implemented enhancements:**
- Support preview of JSON:API's "application/vnd.api+json" Content-Type [\#694](https://github.com/liyasthomas/postwoman/issues/694)
- Support SocketIO connections on Realtime page [\#611](https://github.com/liyasthomas/postwoman/issues/611)
- 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)
- \[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)
- Added the ability to prettify GraphQL queries [\#650](https://github.com/liyasthomas/postwoman/pull/650) ([AndrewBastin](https://github.com/AndrewBastin))
- Updated messages for when GraphQL Get Schema fails [\#633](https://github.com/liyasthomas/postwoman/pull/633) ([AndrewBastin](https://github.com/AndrewBastin))
- Ignore empty GQL Variable Strings [\#629](https://github.com/liyasthomas/postwoman/pull/629) ([AndrewBastin](https://github.com/AndrewBastin))
- 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))
- JSON linting in the code editor [\#605](https://github.com/liyasthomas/postwoman/pull/605) ([AndrewBastin](https://github.com/AndrewBastin))
- GraphQL page improvements, and more [\#602](https://github.com/liyasthomas/postwoman/pull/602) ([dmitryyankowski](https://github.com/dmitryyankowski))
**Fixed bugs:**
- Test script is not run after failing request [\#644](https://github.com/liyasthomas/postwoman/issues/644)
@@ -183,10 +301,11 @@
**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)
- 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)
@@ -194,11 +313,20 @@
- 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)
- 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:**
@@ -229,6 +357,7 @@
- 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))
@@ -237,11 +366,15 @@
- 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))
@@ -249,34 +382,23 @@
- 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)
[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)
- 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))
- 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:**
- Auto Theme Selection is kinda difficult to see [\#563](https://github.com/liyasthomas/postwoman/issues/563)
- Can't send request to localhost via Chrome extention [\#560](https://github.com/liyasthomas/postwoman/issues/560)
- Validation for duplicate collection ignores letter case [\#547](https://github.com/liyasthomas/postwoman/issues/547)
- Multiple collections with the same name shouldn't exist [\#509](https://github.com/liyasthomas/postwoman/issues/509)
- Build failed [\#327](https://github.com/liyasthomas/postwoman/issues/327)
- Fixed typo in translation file for Auto theme [\#556](https://github.com/liyasthomas/postwoman/pull/556) ([AndrewBastin](https://github.com/AndrewBastin))
@@ -284,17 +406,25 @@
- 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)
- 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)
- 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)
- 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)
- ⏬ 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:**
- Feature: Add prettier/pretty-quick formatting w/ Husky pre-commit [\#596](https://github.com/liyasthomas/postwoman/pull/596) ([dmitryyankowski](https://github.com/dmitryyankowski))
- 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))
- 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))
- 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))
@@ -306,6 +436,7 @@
- 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))
- 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))
- 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))
@@ -321,14 +452,18 @@
- 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/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))
- 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))
- Refactor [\#543](https://github.com/liyasthomas/postwoman/pull/543) ([liyasthomas](https://github.com/liyasthomas))
- chore\(deps\): bump firebase from 7.7.0 to 7.8.0 [\#542](https://github.com/liyasthomas/postwoman/pull/542) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
- chore\(deps\): bump graphql from 14.5.8 to 14.6.0 [\#541](https://github.com/liyasthomas/postwoman/pull/541) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
- 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))
- 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))
- even merge [\#528](https://github.com/liyasthomas/postwoman/pull/528) ([liyasthomas](https://github.com/liyasthomas))
@@ -336,49 +471,36 @@
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v1.5.0...v1.8.0)
**Implemented enhancements:**
**Fixed bugs:**
- Warn the user if name field was left blank while creating a new collection [\#515](https://github.com/liyasthomas/postwoman/issues/515)
- Multiple collections with the same name shouldn't exist [\#509](https://github.com/liyasthomas/postwoman/issues/509)
- GraphQL String variables are null [\#497](https://github.com/liyasthomas/postwoman/issues/497)
- Post request body is empty [\#473](https://github.com/liyasthomas/postwoman/issues/473)
**Closed issues:**
- Allow importing Postman collections [\#524](https://github.com/liyasthomas/postwoman/issues/524)
- 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)
- 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)
- 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)
- 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)
- 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:**
- Warn the user if name field was left blank while creating a new collection [\#515](https://github.com/liyasthomas/postwoman/issues/515)
- GraphQL String variables are null [\#497](https://github.com/liyasthomas/postwoman/issues/497)
- Post request body is empty [\#473](https://github.com/liyasthomas/postwoman/issues/473)
- WebSocket page freezes when pasting long URL [\#471](https://github.com/liyasthomas/postwoman/issues/471)
**Closed issues:**
- Allow importing Postman collections [\#524](https://github.com/liyasthomas/postwoman/issues/524)
- Request descriptions [\#511](https://github.com/liyasthomas/postwoman/issues/511)
- 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)
- import cURL error [\#477](https://github.com/liyasthomas/postwoman/issues/477)
- 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)
- 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)
- Add DB cache [\#26](https://github.com/liyasthomas/postwoman/issues/26)
**Merged pull requests:**
- Refactor [\#543](https://github.com/liyasthomas/postwoman/pull/543) ([liyasthomas](https://github.com/liyasthomas))
- 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))
- Refactor [\#523](https://github.com/liyasthomas/postwoman/pull/523) ([liyasthomas](https://github.com/liyasthomas))
@@ -387,69 +509,39 @@
- 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))
- 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))
- 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))
- 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-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))
- 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))
- 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))
- 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))
- 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))
- 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 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))
- 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))
## [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)
**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)
- multipart/form-data support [\#434](https://github.com/liyasthomas/postwoman/issues/434)
- 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)
- Ability to connect to a MQTT broker [\#342](https://github.com/liyasthomas/postwoman/issues/342)
- 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))
- Added ability to run GraphQL queries [\#346](https://github.com/liyasthomas/postwoman/pull/346) ([AndrewBastin](https://github.com/AndrewBastin))
**Fixed bugs:**
- WebSocket page freezes when pasting long URL [\#471](https://github.com/liyasthomas/postwoman/issues/471)
- API Documentation won't be generated [\#456](https://github.com/liyasthomas/postwoman/issues/456)
- Sharing Requests via link is not working [\#435](https://github.com/liyasthomas/postwoman/issues/435)
- URL input text is so stutters [\#412](https://github.com/liyasthomas/postwoman/issues/412)
@@ -466,44 +558,71 @@
**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)
- \* ../.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)
- 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)
- 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)
- 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)
- 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)
- 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)
- \[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)
- 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)
- \[UX\] Setting to make sidebar buttons small [\#389](https://github.com/liyasthomas/postwoman/issues/389)
- \[UX\] Improve responsive breaking points [\#388](https://github.com/liyasthomas/postwoman/issues/388)
- \[UX\] Hide history/collections [\#387](https://github.com/liyasthomas/postwoman/issues/387)
- \[UX\] Hide history/collections [\#387](https://github.com/liyasthomas/postwoman/issues/387)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- Query parameters are duplicated [\#271](https://github.com/liyasthomas/postwoman/issues/271)
- 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)
- 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)
- 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)
**Merged pull requests:**
- ⬆️ 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 @nuxtjs/axios from 5.9.0 to 5.9.2 [\#472](https://github.com/liyasthomas/postwoman/pull/472) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
- Added variables to graphql page. [\#464](https://github.com/liyasthomas/postwoman/pull/464) ([pushrbx](https://github.com/pushrbx))
- i18n [\#463](https://github.com/liyasthomas/postwoman/pull/463) ([liyasthomas](https://github.com/liyasthomas))
@@ -516,6 +635,7 @@
- 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))
- 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))
- 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))
@@ -524,6 +644,7 @@
- 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 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))
- 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))
@@ -531,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 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))
- 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))
- 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))
- 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))
- 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))
@@ -551,63 +674,17 @@
- 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))
- 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))
- ♻️ 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)
[Full Changelog](https://github.com/liyasthomas/postwoman/compare/v0.1.0...v1.0.0)
**Implemented enhancements:**
- Implement pre-request and post-request scripts \(and request chaining\) [\#218](https://github.com/liyasthomas/postwoman/issues/218)
- 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:**
- Bearer Token value still left even after being cleared [\#212](https://github.com/liyasthomas/postwoman/issues/212)
@@ -630,24 +707,58 @@
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- Add Tests [\#65](https://github.com/liyasthomas/postwoman/issues/65)
- HTTP request with different library [\#61](https://github.com/liyasthomas/postwoman/issues/61)
- 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)
- 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)
- 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)
- Simple Misspelling [\#8](https://github.com/liyasthomas/postwoman/issues/8)
- Send request on Enter Key press [\#17](https://github.com/liyasthomas/postwoman/issues/17)
- 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:**
@@ -669,12 +780,14 @@
- 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))
- 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 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 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))
- 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))
- 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))
@@ -683,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 @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))
- 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))
- 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))
- 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))
- 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 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))
- 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 @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 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))
- 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))
- 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))
- 🐛 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))
- Added Black Theme [\#172](https://github.com/liyasthomas/postwoman/pull/172) ([AndrewBastin](https://github.com/AndrewBastin))
@@ -707,6 +830,4 @@
[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)_

View File

@@ -2,75 +2,131 @@
## 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, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
Examples of behavior that contributes to a positive environment for our
community 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
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
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
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
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
## Enforcement 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.
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
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.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## 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.
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at liyascthomas@gmail.com. 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.
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
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.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## 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
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][mozilla coc].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][faq]. Translations are available
at [https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[mozilla coc]: https://github.com/mozilla/diversity
[faq]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View File

@@ -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
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
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
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/

View File

@@ -1,21 +1,25 @@
FROM node:12.10.0-alpine
FROM node:12-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
RUN apk add --update --no-cache \
git
# Create app directory
WORKDIR /app
COPY package*.json ./
RUN npm install
ADD . /app/
COPY . .
RUN npm run build
ENV HOST 0.0.0.0
EXPOSE 3000
CMD ["npm", "run", "start"]
RUN mv .env.example .env
CMD ["npm", "run", "dev"]

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2019 Liyas Thomas
Copyright (c) 2020
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

573
README.md
View File

@@ -1,461 +1,350 @@
<div align="center">
<a href="https://postwoman.io"><img src="static/logo.png" alt="Postwoman.io logo" height="160"></a>
<br>
<br>
<a href="https://hoppscotch.io">
<img
src="https://raw.githubusercontent.com/hoppscotch/hoppscotch/main/static/logo.png"
alt="Hoppscotch Logo"
height="64"
/>
</a>
<br />
<p>
<b>A free, fast and beautiful API request builder</b>
<h3>
<b>
Hoppscotch
</b>
</h3>
</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>
[![Travis Build Status](https://img.shields.io/travis/com/liyasthomas/postwoman?logo=Travis)](https://travis-ci.com/liyasthomas/postwoman) [![GitHub release](https://img.shields.io/github/release/liyasthomas/postwoman/all?logo=GitHub)](https://github.com/liyasthomas/postwoman/releases/latest) [![Website](https://img.shields.io/website?url=https%3A%2F%2Fpostwoman.io&logo=Postwoman)](https://postwoman.io) [![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen)](CONTRIBUTING.md) [![Financial Contributors on Open Collective](https://img.shields.io/opencollective/all/postwoman?logo=Open-Collective&label=financial+contributors)](https://opencollective.com/postwoman) [![Donate on PayPal](https://img.shields.io/badge/support-PayPal-blue?logo=PayPal)](https://www.paypal.me/liyascthomas) [![Chat on Telegram](https://img.shields.io/badge/chat-Telegram-blueviolet?logo=Telegram)](https://t.me/postwoman_app) [![Chat on Discord](https://img.shields.io/badge/chat-Discord-violet?logo=discord)](https://discord.gg/GAMWxmR) [![Tweet](https://img.shields.io/twitter/url?url=https%3A%2F%2Fpostwoman.io%2F)](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)
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen?logo=github)](CODE_OF_CONDUCT.md) [![Website](https://img.shields.io/website?url=https%3A%2F%2Fhoppscotch.io&logo=hoppscotch)](https://hoppscotch.io) [![Tests](https://github.com/hoppscotch/hoppscotch/actions/workflows/tests.yml/badge.svg)](https://github.com/hoppscotch/hoppscotch/actions) [![Tweet](https://img.shields.io/twitter/url?url=https%3A%2F%2Fhoppscotch.io%2F)](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>
<sub>Built with ❤︎ by
<a href="https://github.com/liyasthomas">liyasthomas</a> and
<a href="https://github.com/liyasthomas/postwoman/graphs/contributors">contributors</a>
<sub>
Built with ❤︎ by
<a href="https://github.com/hoppscotch/hoppscotch/graphs/contributors">
contributors
</a>
</sub>
</p>
<br />
<p>
<a href="https://hoppscotch.io">
<img
src="https://raw.githubusercontent.com/hoppscotch/hoppscotch/main/static/images/screenshots/light_rest.png"
alt="Screenshot"
width="100%"
/>
</a>
</p>
</div>
#### **Support**
[![Chat on Discord](https://img.shields.io/badge/chat-Discord-7289DA?logo=discord)](https://hoppscotch.io/discord) [![Chat on Telegram](https://img.shields.io/badge/chat-Telegram-2CA5E0?logo=Telegram)](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">
<br>
<img src="static/images/screenshot1.png" alt="Screenshot1" width="100%">
<br>
</div>
### **Features**
### 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` - Retrieve information about the REST API resource
- `HEAD` - Retrieve response headers identical to those of a GET request, but without the response body.
- `POST` - Create a REST API resource
- `PUT` - Update a REST API resource
- `DELETE` - Delete a REST API resource or related component
- `CONNECT` - Establishes a tunnel to the server identified by 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
- `PATCH` - Apply partial modifications to a REST API resource
- `<custom>` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
- `GET` - Requests retrieve resource information
- `POST` - The server creates a new entry in a database
- `PUT` - Updates an existing resource
- `PATCH` - Very similar to `PUT` but makes a partial update on a resource
- `DELETE` - Deletes 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
- `OPTIONS` - Describe the communication options for the target resource
- `TRACE` - Performs a message loop-back test along the path to the target resource
- `<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:**
- 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
**Theming**
_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:**
- 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))
🔥 **PWA:** Install as a [PWA](https://developers.google.com/web/progressive-web-apps) on your device.
🚀 **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`
- Enter `URL` and `Path`
- Send
🚀 **Request:** Retrieve response from endpoint instantly.
**Features:**
- Copy/share public "Share URL"
- Generate request code for `JavaScript XHR`, `Fetch` and `cURL`
- Copy generated request code to clipboard
- Import `cURL`
- Label requests
1. Choose `method`
2. Enter `URL`
3. Send
🔌 **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
- Basic and Bearer Token authentication
🔌 **WebSocket:** Establish full-duplex communication channels over a single TCP connection.
📡 **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.
🌩 **Socket.IO**: Send and Receive data with socketio server. SocketIO is popular websocket solution.
🌩 **Socket.IO:** Send and Receive data with SocketIO server.
🦟 **MQTT**: Subscribe and Publish to topics of a MQTT Broker.
🦟 **MQTT:** Subscribe and Publish to topics of a MQTT Broker.
🔮 **GraphQL**: GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.
🔮 **GraphQL:** GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.
- Set endpoint and get schemas
- Multi-column docs
- Set custom request headers
- Query schema
- Get query response
- Set endpoint and get schema
- Multi-column docs
- Set custom request headers
- Query schema
- Get query response
🔐 **Authentication**: Allows to identify the end user.
🔐 **Authorization:** Allows to identify the end user.
**Types:**
- None
- Basic
- Bearer Token
- OAuth 2.0
- OIDC Access Token/PKCE (Proof Key for Code Exchange)
- None
- Basic
- Bearer Token
- OAuth 2.0
- OIDC Access Token/PKCE
📢 **Headers**: Describes the format the body of your request is being sent as.
📢 **Headers:** Describes the format the body of your request is being sent as.
- Add or remove Header list
📫 **Parameters:** Use request parameters to set varying parts in simulated requests.
📫 **Parameters**: Use request parameters to set varying parts in simulated requests.
📃 **Request Body:** Used to send and receive data via the REST API.
📃 **Request Body**: Used to send and receive data via the REST API.
- Set `Content Type`
- FormData, JSON and many more
- Toggle between key-value and RAW input parameter list
**Options:**
- Set `Content Type`
- Add or remove Parameter list
- Toggle between key-value and RAW input Parameter list
👋 **Response:** Contains the status line, headers and the message/response body.
👋 **Responses**: Contains the status line, headers and the message/response body.
- Copy response to clipboard
- Download response as a file
- View response headers
- View raw and preview of HTML, image, JSON, XML responses
- Copy response to clipboard
- Download response to as a file
- View preview of HTML responses
**History:** Request entries are synced with cloud / local session storage to restore with a single click.
**History**: Request entries are synced with local session storage to reuse with a single click.
📁 **Collections:** Keep your API requests organized with collections and folders. Reuse them with a single click.
**Fields:**
- Star
- Label
- Method
- Status code
- URL
- Path
- Timestamp
- Duration
- Pre-request script
- Unlimited collections, folders and requests
- Nested folders
- Export and import as file or GitHub gist
_History entries can be sorted by any fields_
_Collections are synced with cloud / local session storage_
_Histories can be deleted one-by-one or all together_
🌐 **Proxy:** Enable Proxy Mode from Settings to access blocked APIs.
📁 **Collections**: Keep your API requests organized with collections and folders. Reuse them with a single click.
- 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
**Options:**
- Create infinite collections, folders and requests
- Edit, delete, move, export, import and replace
_Official proxy server is hosted by Hoppscotch - **[GitHub](https://github.com/hoppscotch/proxyscotch)** - **[Privacy Policy](https://docs.hoppscotch.io/privacy)**_
_Collections are synced with local session storage_
📜 **Pre-Request Scripts β:** Snippets of code associated with a request that are executed before the request is sent.
🌐 **Proxy**: Enable Proxy Mode from Settings to access blocked APIs.
- Set environment variables
- Include timestamp in the request headers
- Send a random alphanumeric string in the URL parameters
- Any JavaScript functions
**Features:**
- 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
📄 **API Documentation:** Create and share dynamic API documentation easily, quickly.
_Official Postwoman Proxy is hosted by Apollo Software - **[Privacy Policy](https://apollosoftware.xyz/legal/postwoman)**_
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
📜 **Pre-Request Scripts β**: Snippets of code associated with a request that are executed before the request is sent.
⌨️ **Keyboard Shortcuts:** Optimized for efficiency.
**Use-cases:**
- Include timestamp in the request headers
- Send a random alphanumeric string in the URL parameters
> **[Read our documentation on Keyboard Shortcuts](https://docs.hoppscotch.io/features/shortcuts)**
_Requests with Pre-Request Scripts are indicated in History entries_
🌎 **i18n:** Experience the app in your own language.
📄 **API Documentation**: Create and share dynamic API documentation easily, quickly.
📦 **Add-ons:** Official add-ons for hoppscotch.
**Usage:**
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
- **[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
⌨️ **Keyboard Shortcuts**: Optimized for efficiency.
[![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_16x16.png) **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/hoppscotch) &nbsp;|&nbsp; [![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_16x16.png) **Chrome**](https://chrome.google.com/webstore/detail/hoppscotch-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld)
**Shortcuts:**
- 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>
> **Extensions fixes `CORS` issues.**
🌎 **i18n β**: Experience the app in your own language.
- **[Hopp-Doc-Gen](https://github.com/hoppscotch/hopp-doc-gen)** - An API doc generator CLI for Hoppscotch
1. Scroll down to the footer
2. Click "Choose Language" icon button
3. Select your language from the menu
_Add-ons are developed and maintained under **[Hoppscotch Organization](https://github.com/hoppscotch)**._
_Keep in mind: Translations aren't available for all source and target language combinations_
☁️ **Auth + Sync:** Sign in and sync your data in real-time.
**To provide a localized experience for users around the world, you can add you own translations.**
**Sign in with**
_**All `i18n` contributions are welcome to `i18n` [branch](https://github.com/liyasthomas/postwoman/tree/i18n) only!**_
- GitHub
- Google
- Email
📦 **Add-ons**: Official add-ons for Postwoman.
**Synchronize your data**
- **[Proxy β](https://github.com/postwoman-io/postwoman-proxy)** - A simple proxy server created for Postwoman
- **[CLI β](https://github.com/postwoman-io/postwoman-cli)** - A CLI solution for Postwoman
- **Browser Extensions** - Browser extensions that simplifies access to Postwoman
- History
- Collections
- Environments
- Settings
[![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_16x16.png) **Firefox**](https://addons.mozilla.org/en-US/firefox/addon/postwoman) &nbsp;|&nbsp; [![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_16x16.png) **Chrome**](https://chrome.google.com/webstore/detail/postwoman-extension-for-c/amknoiejhlmhancpahfcfcfhllgkpbld) ([GitHub](https://github.com/AndrewBastin/postwoman-extension))
**Post-Request Tests β:** Write tests associated with a request that are executed after the request response.
>**Extensions fixes `CORS` issues.**
_Add-ons are developed and maintained under **[Official Postwoman Organization](https://github.com/postwoman-io)**._
☁️ **Auth + Sync**: Sign in and sync in real-time.
**Sign in with:**
- Google
- GitHub
**Sync:**
- History
- Collections
- Environments
- Notes
**Post-Request Tests β**: Write tests associated with a request that are executed after the request response.
**Use-cases:**
- Check the status code as an integer
- Filter response headers
- Parse the response data
📝 **Notes** : Instantly jot down notes, tasks or whatever you feel like as they come to your mind.
_Notes are only available for signed-in users_
- Check the status code as an integer
- Filter response headers
- Parse the response data
- Any JavaScript functions
🌱 **Environments** : Environment variables allow you to store and reuse values in your requests and scripts.
**Use-cases:**
- 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
- Unlimited environments and variables
- Initialize through pre-request script
- Export as / import from GitHub gist
**To find out more, please check out [Postwoman Wiki](https://github.com/liyasthomas/postwoman/wiki).**
<details>
<summary><i>Use-cases</i></summary>
## Demo 🚀 [![Website](https://img.shields.io/website?url=https%3A%2F%2Fpostwoman.io&logo=Postwoman)](https://postwoman.io)
---
[postwoman.io](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
<a href="https://www.netlify.com">
<img src="https://www.netlify.com/img/global/badges/netlify-light.svg"/>
</a>
---
## Usage 💡
</details>
1. Specify your request `method`
2. Type in your API `URL` and `path`
👨‍👩‍👧‍👦 **Teams β:** Helps you collaborate across your team to design, develop, and test APIs faster.
- Unlimited team collections and shared requests
- Unlimited team members
- User roles
**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
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!
* 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**
## Developing 👷
0. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/.env.example) file found in repository's root directory with your own keys and rename it to `.env`.
0. Update [`.env.example`](https://github.com/liyasthomas/postwoman/blob/master/.env.example) file found in repository's root directory with your own keys and rename it to `.env`.
_Sample keys only works with the [production build](https://hoppscotch.io)._
_Sample keys only works with the [production build](https://postwoman.io)._
### Browser based development environment
#### Use a browser based 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)
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/liyasthomas/postwoman)
#### Or, with local development environment:
### Local development environment
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 dependencies by running `npm install` within the directory that you cloned (probably `hoppscotch`).
3. Start the development server with `npm run dev`.
4. Open development site by going to [http://localhost:3000](http://localhost:3000) in your browser.
4. 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.
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 🐳 [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/liyasthomas/postwoman?logo=Docker)](https://hub.docker.com/r/liyasthomas/postwoman)
## **Docker**
**Official container** &nbsp; [![hoppscotch/hoppscotch](https://img.shields.io/docker/pulls/hoppscotch/hoppscotch?style=social)](https://hub.docker.com/r/hoppscotch/hoppscotch)
```bash
#pull
docker pull liyasthomas/postwoman
#run
docker run -p 3000:3000 liyasthomas/postwoman:latest
#build
docker build -t postwoman:latest
docker run --rm --name hoppscotch -p 3000:3000 hoppscotch/hoppscotch:latest
```
## Releasing 🏷️
## **Releasing**
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`).
3. Build the release files with `npm run build`.
2. Install dependencies by running `npm install` within the directory that you cloned (probably `hoppscotch`).
3. Build the release files with `npm run generate`.
4. Find the built project in `./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 💚 [![Travis Build Status](https://img.shields.io/travis/com/liyasthomas/postwoman?logo=Travis)](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 🔖 [![GitHub release](https://img.shields.io/github/release/liyasthomas/postwoman/all?logo=GitHub)](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 🔮
### 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](https://img.shields.io/badge/all_contributors-14-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://liyasthomas.web.app"><img src="https://avatars1.githubusercontent.com/u/10395817?v=4" width="100px;" alt=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><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=""/><br /><sub><b>James George</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=jamesgeorge007" title="Code">💻</a></td>
<td align="center"><a href="https://dmitryyankowski.com"><img src="https://avatars0.githubusercontent.com/u/20114263?v=4" width="100px;" alt=""/><br /><sub><b>Dmitry Yankowski</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=dmitryyankowski" title="Code">💻</a></td>
<td align="center"><a href="http://www.sboulema.nl"><img src="https://avatars2.githubusercontent.com/u/1820661?v=4" width="100px;" alt=""/><br /><sub><b>Samir Boulema</b></sub></a><br /><a href="https://github.com/liyasthomas/postwoman/commits?author=sboulema" title="Code">💻</a></td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
<!-- 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)
### Financial Contributors
Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/postwoman/contribute)]
#### 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>
#### Individuals
<a href="https://opencollective.com/postwoman"><img src="https://opencollective.com/postwoman/individuals.svg"></a>
### 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>
## 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>[![Postwoman](https://img.shields.io/badge/Tested_on-Postwoman-202124?logo=Postwoman)](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>[![Postwoman](https://img.shields.io/badge/Tested_on-Postwoman-success?logo=Postwoman)](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>[![Postwoman](https://img.shields.io/badge/Tested_on-Postwoman-critical?logo=Postwoman)](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>[![Postwoman](https://img.shields.io/badge/Tested_on-Postwoman-blueviolet?logo=Postwoman)](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>[![Postwoman](https://img.shields.io/badge/your_text-Postwoman-hex_color_code?logo=Postwoman)](https://postwoman.io)</code></td>
</tr>
</tbody>
</table>
This project exists thanks to all the people who contribute — [make a contribution](CONTRIBUTING.md).
<div align="center">
<br>
<a href="https://postwoman.io"><img src="https://raw.githubusercontent.com/liyasthomas/templates/master/assets/logo.gif" alt="Postwoman.io" width="200"></a>
<br>
<h3>Happy Coding ❤︎</h3>
<a href="https://github.com/hoppscotch/hoppscotch/graphs/contributors">
<img src="https://opencollective.com/hoppscotch/contributors.svg?width=840&button=false"
alt="Contributors"
width="100%" />
</a>
</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
View 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/locales) directory.**
4. **Copy the contents of the source file [`locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/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/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.

View File

@@ -1,7 +1,5 @@
# ASSETS
**This directory is not required, you can delete it if you don't want to use it.**
This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked).

View File

@@ -1,72 +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;
// Do not use font-display: swap for the icon font - it looks really bad when the page
// loads.
font-display: block;
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+ */
}

View File

@@ -1,933 +0,0 @@
$responsiveWidth: 768px;
::selection {
background-color: var(--ac-color);
color: var(--act-color);
}
::-webkit-scrollbar {
width: 4px;
height: 4px;
border-radius: 4px;
background-color: var(--bg-dark-color);
}
::-webkit-scrollbar-thumb {
border-radius: 4px;
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;
}
}
.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;
}
.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;
}
.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;
}
.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;
height: 52px;
&: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);
}
}
}
}
}
h1,
h2,
h3,
h4 {
display: flex;
align-items: center;
margin: 0;
font-weight: 700;
}
hr {
border-bottom: 1px dashed var(--brd-color);
margin: 16px 0;
}
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:not(.toasted) {
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;
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;
}
}
&.blue legend {
color: #57b5f9;
}
&.gray legend {
color: #bcc2cd;
}
&.green legend {
color: #50fa7b;
}
&.cyan legend {
color: #8be9fd;
}
&.purple legend {
color: #bd93f9;
}
&.orange legend {
color: #ffb86c;
}
&.pink legend {
color: #ff79c6;
}
&.red legend {
color: #ff5555;
}
&.yellow legend {
color: #f1fa8c;
}
}
fieldset:target,
section:target {
animation: highlight 2s ease;
}
@keyframes highlight {
50% {
box-shadow: 0 0 0 2px var(--ac-color);
}
}
input[type="file"],
input[type="radio"],
.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;
min-width: 128px;
}
.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;
&.response-headers {
display: inline-flex;
width: 50%;
}
ul,
ol {
margin: 0;
}
}
ul li,
ol li {
display: inline-flex;
flex-flow: column nowrap;
flex: 1;
justify-content: center;
&.shrink {
flex-grow: 0;
}
}
.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: 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;
bottom: 86px;
left: 50%;
z-index: 10001;
transform: translateX(-50%);
box-shadow: 0 4px 24px rgba(black, 0.2);
transition: all 0.2s ease-in-out;
}
}
section {
display: flex;
flex-wrap: wrap;
border-radius: 16px;
}
.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;
}
}

View File

@@ -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.04);
// Dark Background color
--bg-dark-color: rgba(0, 0, 0, 0.2);
// 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.05);
// 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.04);
// 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
assets/icons/chrome.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient x1="49.998%" y1=".706%" x2="49.998%" y2="96.99%" id="IconifyId-17b2bfeca9d-d6badc-3320"><stop stop-color="#86BBE5" offset="0%"></stop><stop stop-color="#1072BA" offset="100%"></stop></linearGradient></defs><path d="M127.789.035s75.32-3.38 115.253 72.328H121.38s-22.96-.74-42.573 27.114c-5.634 11.691-11.69 23.734-4.894 47.468c-9.79-16.586-51.975-90.04-51.975-90.04S51.693 3.028 127.788.035z" fill="#EF3F36"></path><path d="M239.133 192.229s-34.756 66.94-120.253 63.63c10.564-18.276 60.848-105.358 60.848-105.358s12.149-19.508-2.183-50.425c-7.29-10.74-14.72-21.973-38.664-27.96c19.262-.175 103.95 0 103.95 0s31.726 52.715-3.698 120.113z" fill="#FCD900"></path><path d="M16.973 192.757s-40.601-63.56 5.035-135.958c10.529 18.276 60.813 105.358 60.813 105.358s10.846 20.283 44.756 23.31c12.924-.95 26.375-1.76 43.56-19.472C161.663 182.757 119.16 256 119.16 256s-61.552 1.127-102.188-63.243z" fill="#61BC5B"></path><path d="M118.845 256.493l17.113-71.412s18.804-1.48 34.58-18.769c-9.79 17.22-51.693 90.181-51.693 90.181z" fill="#5AB055"></path><path d="M70.462 129.056c0-31.48 25.53-57.01 57.01-57.01c31.48 0 57.01 25.53 57.01 57.01c0 31.481-25.53 57.01-57.01 57.01c-31.48-.035-57.01-25.529-57.01-57.01z" fill="#FFF"></path><path d="M80.004 129.056c0-26.198 21.234-47.467 47.468-47.467c26.198 0 47.467 21.234 47.467 47.467c0 26.199-21.233 47.468-47.467 47.468c-26.199 0-47.468-21.269-47.468-47.468z" fill="url(#IconifyId-17b2bfeca9d-d6badc-3320)"></path><path d="M242.795 72.152l-70.462 20.67s-10.634-15.6-33.487-20.67c19.825-.106 103.949 0 103.949 0z" fill="#EACA05"></path><path d="M72.54 144.339c-9.896-17.149-50.602-87.434-50.602-87.434l52.186 51.622s-5.353 11.022-3.345 26.797l1.76 9.015z" fill="#DF3A32"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

1
assets/icons/discord.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="41.17" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 199"><path d="M216.856 16.597A208.502 208.502 0 0 0 164.042 0c-2.275 4.113-4.933 9.645-6.766 14.046c-19.692-2.961-39.203-2.961-58.533 0c-1.832-4.4-4.55-9.933-6.846-14.046a207.809 207.809 0 0 0-52.855 16.638C5.618 67.147-3.443 116.4 1.087 164.956c22.169 16.555 43.653 26.612 64.775 33.193A161.094 161.094 0 0 0 79.735 175.3a136.413 136.413 0 0 1-21.846-10.632a108.636 108.636 0 0 0 5.356-4.237c42.122 19.702 87.89 19.702 129.51 0a131.66 131.66 0 0 0 5.355 4.237a136.07 136.07 0 0 1-21.886 10.653c4.006 8.02 8.638 15.67 13.873 22.848c21.142-6.58 42.646-16.637 64.815-33.213c5.316-56.288-9.08-105.09-38.056-148.36zM85.474 135.095c-12.645 0-23.015-11.805-23.015-26.18s10.149-26.2 23.015-26.2c12.867 0 23.236 11.804 23.015 26.2c.02 14.375-10.148 26.18-23.015 26.18zm85.051 0c-12.645 0-23.014-11.805-23.014-26.18s10.148-26.2 23.014-26.2c12.867 0 23.236 11.804 23.015 26.2c0 14.375-10.148 26.18-23.015 26.18z" fill="#5865F2"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

1
assets/icons/email.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--simple-icons" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M15.61 12c0 1.99-1.62 3.61-3.61 3.61c-1.99 0-3.61-1.62-3.61-3.61c0-1.99 1.62-3.61 3.61-3.61c1.99 0 3.61 1.62 3.61 3.61M12 0C5.383 0 0 5.383 0 12s5.383 12 12 12c2.424 0 4.761-.722 6.76-2.087l.034-.024l-1.617-1.879l-.027.017A9.494 9.494 0 0 1 12 21.54c-5.26 0-9.54-4.28-9.54-9.54c0-5.26 4.28-9.54 9.54-9.54c5.26 0 9.54 4.28 9.54 9.54a9.63 9.63 0 0 1-.225 2.05c-.301 1.239-1.169 1.618-1.82 1.568c-.654-.053-1.42-.52-1.426-1.661V12A6.076 6.076 0 0 0 12 5.93A6.076 6.076 0 0 0 5.93 12A6.076 6.076 0 0 0 12 18.07a6.02 6.02 0 0 0 4.3-1.792a3.9 3.9 0 0 0 3.32 1.805c.874 0 1.74-.292 2.437-.821c.719-.547 1.256-1.336 1.553-2.285c.047-.154.135-.504.135-.507l.002-.013c.175-.76.253-1.52.253-2.457c0-6.617-5.383-12-12-12" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 982 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M241.871 256.001c7.802 0 14.129-6.326 14.129-14.129V14.129C256 6.325 249.673 0 241.871 0H14.129C6.324 0 0 6.325 0 14.129v227.743c0 7.803 6.324 14.129 14.129 14.129h227.742" fill="#395185"></path><path d="M176.635 256.001v-99.137h33.277l4.982-38.635h-38.259V93.561c0-11.186 3.107-18.809 19.148-18.809l20.459-.009V40.188c-3.54-.471-15.684-1.523-29.812-1.523c-29.498 0-49.692 18.005-49.692 51.071v28.493h-33.362v38.635h33.362v99.137h39.897" fill="#FFF"></path></svg>

After

Width:  |  Height:  |  Size: 697 B

1
assets/icons/firefox.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

1
assets/icons/github.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="2500" height="2432" viewBox="0 0 256 249" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><g fill="currentColor"><path d="M127.505 0C57.095 0 0 57.085 0 127.505c0 56.336 36.534 104.13 87.196 120.99 6.372 1.18 8.712-2.766 8.712-6.134 0-3.04-.119-13.085-.173-23.739-35.473 7.713-42.958-15.044-42.958-15.044-5.8-14.738-14.157-18.656-14.157-18.656-11.568-7.914.872-7.752.872-7.752 12.804.9 19.546 13.14 19.546 13.14 11.372 19.493 29.828 13.857 37.104 10.6 1.144-8.242 4.449-13.866 8.095-17.05-28.32-3.225-58.092-14.158-58.092-63.014 0-13.92 4.981-25.295 13.138-34.224-1.324-3.212-5.688-16.18 1.235-33.743 0 0 10.707-3.427 35.073 13.07 10.17-2.826 21.078-4.242 31.914-4.29 10.836.048 21.752 1.464 31.942 4.29 24.337-16.497 35.029-13.07 35.029-13.07 6.94 17.563 2.574 30.531 1.25 33.743 8.175 8.929 13.122 20.303 13.122 34.224 0 48.972-29.828 59.756-58.22 62.912 4.573 3.957 8.648 11.717 8.648 23.612 0 17.06-.148 30.791-.148 34.991 0 3.393 2.295 7.369 8.759 6.117 50.634-16.879 87.122-64.656 87.122-120.973C255.009 57.085 197.922 0 127.505 0"/><path d="M47.755 181.634c-.28.633-1.278.823-2.185.389-.925-.416-1.445-1.28-1.145-1.916.275-.652 1.273-.834 2.196-.396.927.415 1.455 1.287 1.134 1.923M54.027 187.23c-.608.564-1.797.302-2.604-.589-.834-.889-.99-2.077-.373-2.65.627-.563 1.78-.3 2.616.59.834.899.996 2.08.36 2.65M58.33 194.39c-.782.543-2.06.034-2.849-1.1-.781-1.133-.781-2.493.017-3.038.792-.545 2.05-.055 2.85 1.07.78 1.153.78 2.513-.019 3.069M65.606 202.683c-.699.77-2.187.564-3.277-.488-1.114-1.028-1.425-2.487-.724-3.258.707-.772 2.204-.555 3.302.488 1.107 1.026 1.445 2.496.7 3.258M75.01 205.483c-.307.998-1.741 1.452-3.185 1.028-1.442-.437-2.386-1.607-2.095-2.616.3-1.005 1.74-1.478 3.195-1.024 1.44.435 2.386 1.596 2.086 2.612M85.714 206.67c.036 1.052-1.189 1.924-2.705 1.943-1.525.033-2.758-.818-2.774-1.852 0-1.062 1.197-1.926 2.721-1.951 1.516-.03 2.758.815 2.758 1.86M96.228 206.267c.182 1.026-.872 2.08-2.377 2.36-1.48.27-2.85-.363-3.039-1.38-.184-1.052.89-2.105 2.367-2.378 1.508-.262 2.857.355 3.049 1.398"/></g></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

1
assets/icons/google.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M118.2 208.3c19.9-60.3 76.5-103.6 143.7-103.6 36.1 0 68.6 12.8 94.3 33.7L430.5 64C385.2 24.4 327 0 261.8 0 160.9 0 74 57.6 32.3 141.9l85.9 66.4z" fill="currentColor"/><path d="M348 384.3c-23.3 15-52.8 23-86.2 23-66.9 0-123.3-43-143.4-102.9l-86.2 65.4C73.9 454.3 160.8 512 261.8 512c62.6 0 122.4-22.2 167.1-64L348 384.3z" fill="currentColor"/><path d="M428.9 448c46.8-43.7 77.2-108.7 77.2-192 0-15.1-2.3-31.4-5.8-46.5H261.8v98.9h137.3c-6.8 33.3-25 59-51.1 75.9l80.9 63.7z" fill="currentColor"/><path d="M118.4 304.4c-5.1-15.2-7.9-31.4-7.9-48.4 0-16.7 2.7-32.7 7.6-47.7l-85.9-66.4C15.1 176.2 5.8 214.9 5.8 256c0 40.9 9.5 79.6 26.4 113.8l86.2-65.4z" fill="currentColor"/></svg>

After

Width:  |  Height:  |  Size: 746 B

1
assets/icons/graphql.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--fontisto" width="28" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 21 24"><path d="M12.731 2.751L17.666 5.6a2.138 2.138 0 1 1 2.07 3.548l-.015.003v5.7a2.14 2.14 0 1 1-2.098 3.502l-.002-.002l-4.905 2.832a2.14 2.14 0 1 1-4.079.054l-.004.015l-4.941-2.844a2.14 2.14 0 1 1-2.067-3.556l.015-.003V9.15a2.14 2.14 0 1 1 1.58-3.926l-.01-.005c.184.106.342.231.479.376l.001.001l4.938-2.85a2.14 2.14 0 1 1 4.096.021l.004-.015zm-.515.877a.766.766 0 0 1-.057.057l-.001.001l6.461 11.19c.026-.009.056-.016.082-.023V9.146a2.14 2.14 0 0 1-1.555-2.603l-.003.015l.019-.072zm-3.015.059l-.06-.06l-4.946 2.852A2.137 2.137 0 0 1 2.749 9.12l-.015.004l-.076.021v5.708l.084.023l6.461-11.19zm2.076.507a2.164 2.164 0 0 1-1.207-.004l.015.004l-6.46 11.189c.286.276.496.629.597 1.026l.003.015h12.911c.102-.413.313-.768.599-1.043l.001-.001L11.28 4.194zm.986 16.227l4.917-2.838a1.748 1.748 0 0 1-.038-.142H4.222l-.021.083l4.939 2.852c.39-.403.936-.653 1.54-.653c.626 0 1.189.268 1.581.696l.001.002z" fill="currentColor"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M218.123 218.127h-37.931v-59.403c0-14.165-.253-32.4-19.728-32.4c-19.756 0-22.779 15.434-22.779 31.369v60.43h-37.93V95.967h36.413v16.694h.51a39.907 39.907 0 0 1 35.928-19.733c38.445 0 45.533 25.288 45.533 58.186l-.016 67.013zM56.955 79.27c-12.157.002-22.014-9.852-22.016-22.009c-.002-12.157 9.851-22.014 22.008-22.016c12.157-.003 22.014 9.851 22.016 22.008A22.013 22.013 0 0 1 56.955 79.27m18.966 138.858H37.95V95.967h37.97v122.16zM237.033.018H18.89C8.58-.098.125 8.161-.001 18.471v219.053c.122 10.315 8.576 18.582 18.89 18.474h218.144c10.336.128 18.823-8.139 18.966-18.474V18.454c-.147-10.33-8.635-18.588-18.966-18.453" fill="#0A66C2"></path></svg>

After

Width:  |  Height:  |  Size: 882 B

1
assets/icons/reddit.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><circle fill="#FF4500" cx="128" cy="128" r="128"></circle><path d="M213.15 129.22c0-10.376-8.391-18.617-18.617-18.617a18.74 18.74 0 0 0-12.97 5.189c-12.818-9.157-30.368-15.107-49.9-15.87l8.544-39.981l27.773 5.95c.307 7.02 6.104 12.667 13.278 12.667c7.324 0 13.275-5.95 13.275-13.278c0-7.324-5.95-13.275-13.275-13.275c-5.188 0-9.768 3.052-11.904 7.478l-30.976-6.562c-.916-.154-1.832 0-2.443.458c-.763.458-1.22 1.22-1.371 2.136l-9.464 44.558c-19.837.612-37.692 6.562-50.662 15.872a18.74 18.74 0 0 0-12.971-5.188c-10.377 0-18.617 8.391-18.617 18.617c0 7.629 4.577 14.037 10.988 16.939a33.598 33.598 0 0 0-.458 5.646c0 28.686 33.42 52.036 74.621 52.036c41.202 0 74.622-23.196 74.622-52.036a35.29 35.29 0 0 0-.458-5.646c6.408-2.902 10.985-9.464 10.985-17.093zM85.272 142.495c0-7.324 5.95-13.275 13.278-13.275c7.324 0 13.275 5.95 13.275 13.275s-5.95 13.278-13.275 13.278c-7.327.15-13.278-5.953-13.278-13.278zm74.317 35.251c-9.156 9.157-26.553 9.768-31.588 9.768c-5.188 0-22.584-.765-31.59-9.768c-1.371-1.373-1.371-3.51 0-4.883c1.374-1.371 3.51-1.371 4.884 0c5.8 5.8 18.008 7.782 26.706 7.782c8.699 0 21.058-1.983 26.704-7.782c1.374-1.371 3.51-1.371 4.884 0c1.22 1.373 1.22 3.51 0 4.883zm-2.443-21.822c-7.325 0-13.275-5.95-13.275-13.275s5.95-13.275 13.275-13.275c7.327 0 13.277 5.95 13.277 13.275c0 7.17-5.95 13.275-13.277 13.275z" fill="#FFF"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
assets/icons/twitter.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="39.2" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 209"><path d="M256 25.45c-9.42 4.177-19.542 7-30.166 8.27c10.845-6.5 19.172-16.793 23.093-29.057a105.183 105.183 0 0 1-33.351 12.745C205.995 7.201 192.346.822 177.239.822c-29.006 0-52.523 23.516-52.523 52.52c0 4.117.465 8.125 1.36 11.97c-43.65-2.191-82.35-23.1-108.255-54.876c-4.52 7.757-7.11 16.78-7.11 26.404c0 18.222 9.273 34.297 23.365 43.716a52.312 52.312 0 0 1-23.79-6.57c-.003.22-.003.44-.003.661c0 25.447 18.104 46.675 42.13 51.5a52.592 52.592 0 0 1-23.718.9c6.683 20.866 26.08 36.05 49.062 36.475c-17.975 14.086-40.622 22.483-65.228 22.483c-4.24 0-8.42-.249-12.529-.734c23.243 14.902 50.85 23.597 80.51 23.597c96.607 0 149.434-80.031 149.434-149.435c0-2.278-.05-4.543-.152-6.795A106.748 106.748 0 0 0 256 25.45" fill="#55acee"></path></svg>

After

Width:  |  Height:  |  Size: 971 B

18
assets/js/getLinkTag.js Normal file
View File

@@ -0,0 +1,18 @@
const DEFAULT_TAG = "button"
const ANCHOR_TAG = "a"
const FRAMEWORK_LINK = "NuxtLink" // or "router-link", "g-link"...
const getLinkTag = ({ to, blank }) => {
if (!to) {
return DEFAULT_TAG
} else if (blank) {
return ANCHOR_TAG
} else if (/^\/(?!\/).*$/.test(to)) {
// regex101.com/r/LU1iFL/1
return FRAMEWORK_LINK
} else {
return ANCHOR_TAG
}
}
export { getLinkTag as default, ANCHOR_TAG, FRAMEWORK_LINK }

32
assets/js/regex.worker.js Normal file
View File

@@ -0,0 +1,32 @@
function generateREForProtocol(protocol) {
return [
new RegExp(
`${protocol}(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$`
),
new RegExp(
`${protocol}(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$`
),
]
}
const ws = generateREForProtocol("^(wss?:\\/\\/)?")
const sse = generateREForProtocol("^(https?:\\/\\/)?")
const socketio = generateREForProtocol("^((wss?:\\/\\/)|(https?:\\/\\/))?")
const regex = { ws, sse, socketio }
// type = ws/sse/socketio
async function validator(type, url) {
console.time(`validator ${url}`)
const [res1, res2] = await Promise.all([
regex[type][0].test(url),
regex[type][1].test(url),
])
console.timeEnd(`validator ${url}`)
return res1 || res2
}
onmessage = async ({ data }) => {
const { type, url } = data
const result = await validator(type, url)
postMessage({ type, url, result })
}

15
assets/md/docs.md Normal file
View File

@@ -0,0 +1,15 @@
**Table of Contents**
{{#collections}}
{{>folderContents}}
{{/collections}}
{{#collections}}
{{>folderBody}}
{{/collections}}
---
Made with [Hoppscotch](https://github.com/hoppscotch/hoppscotch)

113
assets/md/folderBody.md Normal file
View File

@@ -0,0 +1,113 @@
{{nestingLevel}} {{name}}
{{#requests}}
{{nestingLevel}} Request: {{name}}
**Method**: {{method}}
**Request URL**:
```
{{{url}}}{{{path}}}
```
{{#isHeaders}}
**Headers**:
<table>
<tr>
<th>Key</th>
<th>Value</th>
</tr>
{{#headers}}
<tr>
<td>{{{key}}}</td>
<td>`{{{value}}}`</td>
</tr>
{{/headers}}
</table>
{{/isHeaders}}
{{#isParams}}
**Parameters**:
<table>
<tr>
<th>type</th>
<th>Key</th>
<th>Value</th>
</tr>
{{#params}}
<tr>
<td>{{type}}</td>
<td>{{{key}}}</td>
<td>{{{value}}}</td>
</tr>
{{/params}}
</table>
{{/isParams}}
{{#isAuth}}
**Authentication Type**: {{{auth}}}
{{/isAuth}}
{{#bearerToken}}
**Bearer Token**: `{{{.}}}`
{{/bearerToken}}
{{#isAuthBasic}}
Username: `{{{httpUser}}}`
Password: `{{{httpPassword}}}`
{{/isAuthBasic}}
{{#isRawParams}}
**Raw Parameters**:
```json
{{{rawParams}}}
```
{{/isRawParams}}
{{#contentType}}
**Content Type**: `{{{contentType}}}`
{{/contentType}}
{{#isPreRequestScript}}
**Pre Request Script**:
```js
{
{
{
preRequestScript
}
}
}
```
{{/isPreRequestScript}}
{{#isTestScript}}
**Test Script**:
```js
{
{
{
testScript
}
}
}
```
{{/isTestScript}}
{{/requests}}
{{#folders}}
{{> folderBody }}
{{/folders}}

View File

@@ -0,0 +1,4 @@
{{{id}}} <a href="#{{ref}}"> {{name}} </a> <br>
{{#folders}}
{{> folderContents}}
{{/folders}}

485
assets/scss/styles.scss Normal file
View File

@@ -0,0 +1,485 @@
*,
*::before,
*::after {
@apply backface-hidden;
}
:root {
@apply antialiased;
font-variant-ligatures: common-ligatures;
}
::-webkit-scrollbar-track {
@apply bg-transparent;
}
::-webkit-scrollbar-thumb {
@apply bg-divider bg-clip-content;
@apply rounded-full;
@apply border-solid border-4 border-transparent;
@apply hover:(bg-dividerDark bg-clip-content);
}
::-webkit-scrollbar {
@apply w-4;
@apply h-4;
}
.hide-scrollbar::-webkit-scrollbar {
@apply hidden;
}
::selection {
@apply bg-accent;
@apply text-accentContrast;
}
input::placeholder {
@apply text-secondaryDark;
@apply opacity-25;
}
input {
@apply text-secondaryDark;
@apply font-medium;
}
html {
scroll-behavior: smooth;
}
body {
@apply bg-primary;
@apply text-secondary;
@apply font-medium;
@apply select-none;
@apply overflow-x-hidden;
animation: fade 300ms forwards;
font-size: var(--body-font-size);
line-height: var(--body-line-height);
overflow: overlay;
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none;
}
@keyframes fade {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.fade-enter-active,
.fade-leave-active,
.page-enter-active,
.page-leave-active,
.layout-enter-active,
.layout-leave-active {
@apply transition-opacity;
}
.fade-enter,
.fade-leave-to,
.page-enter,
.page-leave-to,
.layout-enter,
.layout-leave-to {
@apply opacity-0;
}
.material-icons {
font-size: var(--body-line-height) !important;
width: var(--body-line-height);
overflow: hidden;
}
.svg-icons {
height: var(--body-line-height);
width: var(--body-line-height);
}
a {
@apply inline-flex;
@apply text-current;
@apply no-underline;
@apply outline-none;
@apply transition;
font-size: var(--body-font-size);
line-height: var(--body-line-height);
&.link {
@apply items-center;
@apply px-1 py-0.5;
@apply -mx-1 -my-0.5;
@apply text-accent;
@apply rounded;
@apply hover:text-accentDark;
@apply focus-visible:(ring ring-accent);
}
}
.tippy-popper {
.tooltip-theme {
@apply bg-tooltip;
@apply text-primary;
@apply font-semibold;
@apply py-1 px-2;
@apply truncate;
@apply shadow;
font-size: 88%;
line-height: var(--body-line-height);
kbd {
@apply inline-flex;
@apply font-sans;
@apply bg-gray-500;
@apply bg-opacity-45;
@apply text-primaryLight;
@apply rounded-sm;
@apply px-1;
@apply ml-1;
@apply truncate;
}
}
.popover-theme {
@apply bg-popover;
@apply text-secondary;
@apply p-2;
@apply shadow-lg;
@apply focus:outline-none;
font-size: var(--body-font-size);
line-height: var(--body-line-height);
.tippy-roundarrow svg {
@apply fill-popover;
}
}
}
[interactive] > div {
@apply flex;
@apply flex-1;
@apply h-full;
}
.tippy-content > div {
@apply flex flex-col;
@apply max-h-46;
@apply items-stretch;
@apply overflow-y-auto;
&::-webkit-scrollbar {
@apply hidden;
}
}
hr {
@apply border-b border-dividerLight;
@apply my-2;
}
.heading {
@apply font-bold;
@apply text-secondaryDark text-lg;
}
.input,
.select,
.textarea {
@apply flex flex-1;
@apply w-full;
@apply px-4 py-2;
@apply bg-transparent;
@apply rounded;
@apply text-secondaryDark;
@apply border border-divider;
@apply focus-visible:border-dividerDark;
}
input,
select,
textarea,
button {
@apply focus:outline-none;
@apply truncate;
@apply transition;
@apply disabled:cursor-not-allowed;
font-size: var(--body-font-size);
line-height: var(--body-line-height);
}
.input[type="file"],
.input[type="radio"],
#installPWA {
@apply hidden;
}
.floating-input ~ label {
@apply font-medium;
@apply py-0.5;
@apply px-2;
@apply m-2;
@apply rounded;
@apply transition;
@apply absolute;
@apply origin-top-left;
}
.floating-input:focus-within ~ label,
.floating-input:not(:placeholder-shown) ~ label {
@apply bg-transparent;
@apply transform;
@apply origin-top-left;
@apply scale-75;
@apply -translate-y-5;
@apply translate-x-1;
}
.floating-input:focus-within ~ label {
@apply text-secondaryDark;
}
pre.ace_editor {
@apply font-mono;
@apply resize-none;
@apply z-0;
}
.select {
@apply appearance-none;
@apply cursor-pointer;
&::-ms-expand {
@apply hidden;
}
}
.select-wrapper {
@apply flex flex-1;
@apply relative;
&::after {
@apply absolute;
@apply flex;
@apply inset-y-0;
@apply items-center;
@apply justify-center;
@apply pointer-events-none;
@apply font-icon;
@apply text-secondaryLight;
@apply right-3;
content: "\e313";
}
}
.search-wrapper {
@apply flex flex-1;
@apply relative;
&::after {
@apply absolute;
@apply flex;
@apply inset-y-0;
@apply items-center;
@apply justify-center;
@apply pointer-events-none;
@apply font-icon;
@apply text-secondaryLight;
@apply left-4;
content: "\e8b6";
}
}
input[type="checkbox"] {
@apply hidden;
&,
& + label {
@apply align-middle;
@apply cursor-pointer;
&::before {
@apply border-2 border-divider;
@apply rounded;
@apply inline-flex;
@apply items-center;
@apply justify-center;
@apply text-transparent;
@apply h-4;
@apply w-4;
@apply font-icon;
content: "\e876";
margin: 8px 8px 8px 0;
}
}
&:checked + label::before {
@apply bg-accent;
@apply border-accent;
@apply text-primary;
}
}
.info-response {
@apply text-pink-500;
}
.success-response {
@apply text-green-500;
}
.redir-response {
@apply text-yellow-500;
}
.cl-error-response {
@apply text-red-500;
}
.sv-error-response {
@apply text-red-600;
}
.missing-data-response {
@apply text-secondaryLight;
}
.toasted-container {
.toasted {
&.toasted-primary {
@apply bg-tooltip;
@apply text-primary;
@apply justify-start;
@apply shadow;
@apply font-medium;
font-size: var(--body-font-size);
line-height: var(--body-line-height);
.action {
@apply bg-gray-500;
@apply px-4;
@apply bg-opacity-10;
@apply ml-auto;
@apply last:ml-4;
@apply sm:ml-8;
@apply transition;
@apply rounded;
@apply text-current;
@apply normal-case;
@apply hover:(bg-opacity-20 no-underline);
@apply font-medium;
font-size: var(--body-font-size);
line-height: var(--body-line-height);
}
}
&.info {
@apply !bg-accent;
}
&.error {
@apply !bg-red-200;
@apply !text-red-800;
}
&.success {
@apply !bg-green-200;
@apply !text-green-800;
}
}
}
.smart-splitter .splitpanes__splitter {
@apply relative;
@apply bg-primaryLight;
}
.no-splitter .splitpanes__splitter {
@apply relative;
@apply bg-primaryLight;
}
.smart-splitter.splitpanes--vertical > .splitpanes__splitter {
@apply w-1;
}
.smart-splitter.splitpanes--horizontal > .splitpanes__splitter {
@apply h-1;
}
.no-splitter.splitpanes--vertical > .splitpanes__splitter {
@apply w-0.5;
@apply pointer-events-none;
}
.no-splitter.splitpanes--horizontal > .splitpanes__splitter {
@apply h-0.5;
@apply pointer-events-none;
}
.smart-splitter .splitpanes__splitter::before {
@apply absolute;
@apply inset-0;
@apply bg-dividerLight;
@apply opacity-0;
@apply z-30;
@apply transition;
content: "";
}
.smart-splitter .splitpanes__splitter::after {
@apply absolute;
@apply inset-0;
@apply z-30;
@apply transition;
@apply flex;
@apply items-center;
@apply justify-center;
@apply text-dividerDark;
@apply font-icon;
}
.smart-splitter.splitpanes--vertical > .splitpanes__splitter::after {
content: "\e5d4";
}
.smart-splitter.splitpanes--horizontal > .splitpanes__splitter::after {
content: "\e5d3";
}
.smart-splitter .splitpanes__splitter:hover::before {
@apply opacity-100;
}
.smart-splitter.splitpanes--vertical > .splitpanes__splitter::before {
@apply -left-0.5;
@apply -right-0.5;
@apply h-full;
}
.smart-splitter.splitpanes--horizontal > .splitpanes__splitter::before {
@apply -top-0.5;
@apply -bottom-0.5;
@apply w-full;
}
@media (max-width: 767px) {
main {
margin-bottom: env(safe-area-inset-bottom);
}
}

374
assets/scss/themes.scss Normal file
View File

@@ -0,0 +1,374 @@
@mixin baseTheme {
--font-sans: "Inter", sans-serif;
--font-mono: "Roboto Mono", monospace;
--font-icon: "Material Icons";
}
@mixin darkTheme {
// Background color
--primary-color: theme("colors.true-gray.900");
// Light Background color
--primary-light-color: theme("colors.dark.600");
// Dark Background color
--primary-dark-color: theme("colors.true-gray.800");
// Text color
--secondary-color: theme("colors.true-gray.400");
// Light Text color
--secondary-light-color: theme("colors.true-gray.500");
// Dark Text color
--secondary-dark-color: theme("colors.true-gray.100");
// Border color
--divider-color: theme("colors.true-gray.800");
// Light Border color
--divider-light-color: theme("colors.dark.500");
// Dark Border color
--divider-dark-color: theme("colors.dark.300");
// Error color
--error-color: theme("colors.warm-gray.800");
// Tooltip color
--tooltip-color: theme("colors.true-gray.100");
// Popover color
--popover-color: theme("colors.dark.700");
// Editor theme
--editor-theme: "merbivore_soft";
}
@mixin lightTheme {
// Background color
--primary-color: theme("colors.white");
// Light Background color
--primary-light-color: theme("colors.true-gray.50");
// Dark Background color
--primary-dark-color: theme("colors.true-gray.100");
// Text color
--secondary-color: theme("colors.true-gray.500");
// Light Text color
--secondary-light-color: theme("colors.true-gray.400");
// Dark Text color
--secondary-dark-color: theme("colors.true-gray.900");
// Border color
--divider-color: theme("colors.true-gray.200");
// Light Border color
--divider-light-color: theme("colors.true-gray.100");
// Dark Border color
--divider-dark-color: theme("colors.true-gray.300");
// Error color
--error-color: theme("colors.yellow.100");
// Tooltip color
--tooltip-color: theme("colors.true-gray.800");
// Popover color
--popover-color: theme("colors.white");
// Editor theme
--editor-theme: "textmate";
}
@mixin blackTheme {
// Background color
--primary-color: theme("colors.dark.900");
// Light Background color
--primary-light-color: theme("colors.true-gray.900");
// Dark Background color
--primary-dark-color: theme("colors.dark.800");
// Text color
--secondary-color: theme("colors.true-gray.400");
// Light Text color
--secondary-light-color: theme("colors.true-gray.500");
// Dark Text color
--secondary-dark-color: theme("colors.true-gray.100");
// Border color
--divider-color: theme("colors.true-gray.800");
// Light Border color
--divider-light-color: theme("colors.dark.700");
// Dark Border color
--divider-dark-color: theme("colors.dark.300");
// Error color
--error-color: theme("colors.warm-gray.900");
// Tooltip color
--tooltip-color: theme("colors.true-gray.100");
// Popover color
--popover-color: theme("colors.dark.700");
// Editor theme
--editor-theme: "twilight";
}
@mixin greenTheme {
// Accent color
--accent-color: theme("colors.green.500");
// Light Accent color
--accent-light-color: theme("colors.green.400");
// Dark Accent color
--accent-dark-color: theme("colors.green.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.green.200");
// Gradient via
--gradient-via-color: theme("colors.green.400");
// Gradient to
--gradient-to-color: theme("colors.green.600");
}
@mixin tealTheme {
// Accent color
--accent-color: theme("colors.teal.500");
// Light Accent color
--accent-light-color: theme("colors.teal.400");
// Dark Accent color
--accent-dark-color: theme("colors.teal.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.teal.200");
// Gradient via
--gradient-via-color: theme("colors.teal.400");
// Gradient to
--gradient-to-color: theme("colors.teal.600");
}
@mixin blueTheme {
// Accent color
--accent-color: theme("colors.blue.500");
// Light Accent color
--accent-light-color: theme("colors.blue.400");
// Dark Accent color
--accent-dark-color: theme("colors.blue.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.blue.200");
// Gradient via
--gradient-via-color: theme("colors.blue.400");
// Gradient to
--gradient-to-color: theme("colors.blue.600");
}
@mixin indigoTheme {
// Accent color
--accent-color: theme("colors.indigo.500");
// Light Accent color
--accent-light-color: theme("colors.indigo.400");
// Dark Accent color
--accent-dark-color: theme("colors.indigo.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.indigo.200");
// Gradient via
--gradient-via-color: theme("colors.indigo.400");
// Gradient to
--gradient-to-color: theme("colors.indigo.600");
}
@mixin purpleTheme {
// Accent color
--accent-color: theme("colors.purple.500");
// Light Accent color
--accent-light-color: theme("colors.purple.400");
// Dark Accent color
--accent-dark-color: theme("colors.purple.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.purple.200");
// Gradient via
--gradient-via-color: theme("colors.purple.400");
// Gradient to
--gradient-to-color: theme("colors.purple.600");
}
@mixin yellowTheme {
// Accent color
--accent-color: theme("colors.yellow.500");
// Light Accent color
--accent-light-color: theme("colors.yellow.400");
// Dark Accent color
--accent-dark-color: theme("colors.yellow.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.yellow.200");
// Gradient via
--gradient-via-color: theme("colors.yellow.400");
// Gradient to
--gradient-to-color: theme("colors.yellow.600");
}
@mixin orangeTheme {
// Accent color
--accent-color: theme("colors.orange.500");
// Light Accent color
--accent-light-color: theme("colors.orange.400");
// Dark Accent color
--accent-dark-color: theme("colors.orange.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.orange.200");
// Gradient via
--gradient-via-color: theme("colors.orange.400");
// Gradient to
--gradient-to-color: theme("colors.orange.600");
}
@mixin redTheme {
// Accent color
--accent-color: theme("colors.red.500");
// Light Accent color
--accent-light-color: theme("colors.red.400");
// Dark Accent color
--accent-dark-color: theme("colors.red.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.red.200");
// Gradient via
--gradient-via-color: theme("colors.red.400");
// Gradient to
--gradient-to-color: theme("colors.red.600");
}
@mixin pinkTheme {
// Accent color
--accent-color: theme("colors.pink.500");
// Light Accent color
--accent-light-color: theme("colors.pink.400");
// Dark Accent color
--accent-dark-color: theme("colors.pink.600");
// Light Contrast color
--accent-contrast-color: theme("colors.white");
// Gradient from
--gradient-from-color: theme("colors.pink.200");
// Gradient via
--gradient-via-color: theme("colors.pink.400");
// Gradient to
--gradient-to-color: theme("colors.pink.600");
}
:root {
@include baseTheme;
@include darkTheme;
@include greenTheme;
}
:root.light {
@include lightTheme;
}
:root.dark {
@include darkTheme;
}
:root.black {
@include blackTheme;
}
:root[data-accent="blue"] {
@include blueTheme;
}
:root[data-accent="green"] {
@include greenTheme;
}
:root[data-accent="teal"] {
@include tealTheme;
}
:root[data-accent="indigo"] {
@include indigoTheme;
}
:root[data-accent="purple"] {
@include purpleTheme;
}
:root[data-accent="orange"] {
@include orangeTheme;
}
:root[data-accent="pink"] {
@include pinkTheme;
}
:root[data-accent="red"] {
@include redTheme;
}
:root[data-accent="yellow"] {
@include yellowTheme;
}
@mixin fontSmall {
// Font size
--body-font-size: 0.75rem;
// Line height
--body-line-height: 1rem;
// Upper primary sticky fold
--upper-primary-sticky-fold: 4.125rem;
// Upper secondary sticky fold
--upper-secondary-sticky-fold: 6.125rem;
// Upper tertiary sticky fold
--upper-tertiary-sticky-fold: 8.188rem;
// Lower primary sticky fold
--lower-primary-sticky-fold: 3rem;
// Lower secondary sticky fold
--lower-secondary-sticky-fold: 5rem;
// Sidebar primary sticky fold
--sidebar-primary-sticky-fold: 2rem;
// Sidebar secondary sticky fold
--sidebar-secondary-sticky-fold: 4rem;
}
@mixin fontMedium {
// Font size
--body-font-size: 0.875rem;
// Line height
--body-line-height: 1.25rem;
// Upper primary sticky fold
--upper-primary-sticky-fold: 4.375rem;
// Upper secondary sticky fold
--upper-secondary-sticky-fold: 6.625rem;
// Upper tertiary sticky fold
--upper-tertiary-sticky-fold: 8.813rem;
// Lower primary sticky fold
--lower-primary-sticky-fold: 3.25rem;
// Lower secondary sticky fold
--lower-secondary-sticky-fold: 5.5rem;
// Sidebar primary sticky fold
--sidebar-primary-sticky-fold: 2.25rem;
// Sidebar secondary sticky fold
--sidebar-secondary-sticky-fold: 4.5rem;
}
@mixin fontLarge {
// Font size
--body-font-size: 1rem;
// Line height
--body-line-height: 1.5rem;
// Upper primary sticky fold
--upper-primary-sticky-fold: 4.625rem;
// Upper secondary sticky fold
--upper-secondary-sticky-fold: 7.125rem;
// Upper tertiary sticky fold
--upper-tertiary-sticky-fold: 9.5rem;
// Lower primary sticky fold
--lower-primary-sticky-fold: 3.5rem;
// Lower secondary sticky fold
--lower-secondary-sticky-fold: 6rem;
// Sidebar primary sticky fold
--sidebar-primary-sticky-fold: 2.5rem;
// Sidebar secondary sticky fold
--sidebar-secondary-sticky-fold: 5rem;
}
:root[data-font-size="small"] {
@include fontSmall;
}
:root[data-font-size="medium"] {
@include fontMedium;
}
:root[data-font-size="large"] {
@include fontLarge;
}

26
babel.config.js Normal file
View File

@@ -0,0 +1,26 @@
function isBabelLoader(caller) {
return caller && caller.name === "babel-loader"
}
module.exports = function (api) {
if (api.env("test") && !api.caller(isBabelLoader)) {
return {
plugins: [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-nullish-coalescing-operator",
"@babel/plugin-proposal-optional-chaining",
],
presets: [
[
"@babel/preset-env",
{
targets: {
node: "current",
},
},
],
],
}
}
return {}
}

View File

@@ -1,59 +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
View File

@@ -0,0 +1,3 @@
module.exports = {
extends: ["@commitlint/config-conventional"],
}

View File

@@ -1,7 +1,5 @@
# COMPONENTS
**This directory is not required, you can delete it if you don't want to use it.**
The components directory contains your Vue.js Components.
_Nuxt.js doesn't supercharge these components._

View File

@@ -0,0 +1,26 @@
<template>
<div class="bg-error flex justify-between">
<span
class="
flex
py-2
px-4
transition
relative
items-center
justify-center
group
"
>
<i class="mr-2 material-icons">info_outline</i>
<span class="text-secondaryDark">
<span class="md:hidden">
{{ $t("helpers.offline_short") }}
</span>
<span class="hidden md:inline">
{{ $t("helpers.offline") }}
</span>
</span>
</span>
</div>
</template>

164
components/app/Footer.vue Normal file
View File

@@ -0,0 +1,164 @@
<template>
<div>
<div class="flex justify-between">
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="LEFT_SIDEBAR ? $t('hide.sidebar') : $t('show.sidebar')"
icon="menu_open"
:class="{ 'transform -rotate-180': !LEFT_SIDEBAR }"
@click.native="LEFT_SIDEBAR = !LEFT_SIDEBAR"
/>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="`${
ZEN_MODE ? $t('action.turn_off') : $t('action.turn_on')
} ${$t('layout.zen_mode')}`"
:icon="ZEN_MODE ? 'fullscreen_exit' : 'fullscreen'"
:class="{
'!text-accent !focus-visible:text-accentDark !hover:text-accentDark':
ZEN_MODE,
}"
@click.native="ZEN_MODE = !ZEN_MODE"
/>
</div>
<div class="flex">
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
icon="help_center"
class="rounded-none"
:label="$t('app.help')"
/>
</template>
<div class="flex flex-col">
<SmartItem
:label="$t('app.documentation')"
to="https://docs.hoppscotch.io"
blank
@click.native="$refs.options.tippy().hide()"
/>
<SmartItem
:label="$t('app.keyboard_shortcuts')"
@click.native="
showShortcuts = true
$refs.options.tippy().hide()
"
/>
<SmartItem
:label="$t('app.whats_new')"
to="https://docs.hoppscotch.io/changelog"
blank
@click.native="$refs.options.tippy().hide()"
/>
<SmartItem
:label="$t('app.chat_with_us')"
@click.native="
chatWithUs()
$refs.options.tippy().hide()
"
/>
<hr />
<SmartItem
:label="$t('app.twitter')"
to="https://twitter.com/hoppscotch_io"
blank
@click.native="$refs.options.tippy().hide()"
/>
<SmartItem
:label="$t('app.terms_and_privacy')"
to="https://docs.hoppscotch.io/privacy"
blank
@click.native="$refs.options.tippy().hide()"
/>
<!-- <SmartItem :label="$t('app.status')" /> -->
<div class="flex opacity-50 py-2 px-4">
{{ `${$t("app.name")} ${$t("app.version")}` }}
</div>
</div>
</tippy>
</span>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
icon="keyboard"
:title="$t('app.shortcuts')"
@click.native="showShortcuts = true"
/>
<ButtonSecondary
v-if="navigatorShare"
v-tippy="{ theme: 'tooltip' }"
icon="share"
:title="$t('request.share')"
@click.native="nativeShare()"
/>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="RIGHT_SIDEBAR ? $t('hide.sidebar') : $t('show.sidebar')"
icon="menu_open"
class="transform rotate-180"
:class="{ 'rotate-360': !RIGHT_SIDEBAR }"
@click.native="RIGHT_SIDEBAR = !RIGHT_SIDEBAR"
/>
</div>
</div>
<AppShortcuts :show="showShortcuts" @close="showShortcuts = false" />
</div>
</template>
<script lang="ts">
import { defineComponent, ref } from "@nuxtjs/composition-api"
import { defineActionHandler } from "~/helpers/actions"
import { showChat } from "~/helpers/support"
import { useSetting } from "~/newstore/settings"
export default defineComponent({
setup() {
const showShortcuts = ref(false)
defineActionHandler("flyouts.keybinds.toggle", () => {
showShortcuts.value = !showShortcuts.value
})
return {
LEFT_SIDEBAR: useSetting("LEFT_SIDEBAR"),
RIGHT_SIDEBAR: useSetting("RIGHT_SIDEBAR"),
ZEN_MODE: useSetting("ZEN_MODE"),
navigatorShare: !!navigator.share,
showShortcuts,
}
},
watch: {
ZEN_MODE() {
this.LEFT_SIDEBAR = !this.ZEN_MODE
},
},
methods: {
nativeShare() {
if (navigator.share) {
navigator
.share({
title: "Hoppscotch",
text: "Hoppscotch • Open source API development ecosystem - Helps you create requests faster, saving precious time on development.",
url: "https://hoppscotch.io",
})
.then(() => {})
.catch(console.error)
} else {
// fallback
}
},
chatWithUs() {
showChat()
},
},
})
</script>

View File

@@ -0,0 +1,36 @@
<template>
<transition name="fade" appear>
<GithubButton
title="Star Hoppscotch"
href="https://github.com/hoppscotch/hoppscotch"
:data-color-scheme="
$colorMode.value != 'light'
? $colorMode.value == 'black'
? 'dark'
: 'dark_dimmed'
: 'light'
"
:data-show-count="true"
data-text="Star"
aria-label="Star Hoppscotch on GitHub"
:data-size="size"
/>
</transition>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import GithubButton from "vue-github-button"
export default defineComponent({
components: {
GithubButton,
},
props: {
size: {
type: String,
default: undefined,
},
},
})
</script>

137
components/app/Header.vue Normal file
View File

@@ -0,0 +1,137 @@
<template>
<div>
<header
class="flex space-x-2 flex-1 py-2 px-2 items-center justify-between"
>
<div class="space-x-2 inline-flex items-center">
<ButtonSecondary
class="tracking-wide !font-bold !text-secondaryDark"
label="HOPPSCOTCH"
to="/"
/>
<AppGitHubStarButton class="mt-1.5 transition" />
</div>
<div class="space-x-2 inline-flex items-center">
<ButtonSecondary
id="installPWA"
v-tippy="{ theme: 'tooltip' }"
:title="$t('header.install_pwa')"
icon="download_for_offline"
class="rounded"
@click.native="showInstallPrompt()"
/>
<ButtonSecondary
v-if="currentUser === null"
icon="filter_drama"
:label="$t('header.save_workspace')"
filled
class="hidden !font-semibold md:flex"
@click.native="showLogin = true"
/>
<ButtonPrimary
v-if="currentUser === null"
:label="$t('header.login')"
@click.native="showLogin = true"
/>
<span v-else class="pr-2">
<tippy ref="user" interactive trigger="click" theme="popover" arrow>
<template #trigger>
<ProfilePicture
v-if="currentUser.photoURL"
v-tippy="{
theme: 'tooltip',
}"
:url="currentUser.photoURL"
:alt="currentUser.displayName"
:title="currentUser.displayName"
indicator
:indicator-styles="isOnLine ? 'bg-green-500' : 'bg-red-500'"
/>
<ButtonSecondary
v-else
v-tippy="{ theme: 'tooltip' }"
:title="$t('header.account')"
class="rounded"
icon="account_circle"
/>
</template>
<SmartItem
to="/settings"
icon="settings"
:label="$t('navigation.settings')"
@click.native="$refs.user.tippy().hide()"
/>
<FirebaseLogout @confirm-logout="$refs.user.tippy().hide()" />
</tippy>
</span>
</div>
</header>
<AppAnnouncement v-if="!isOnLine" />
<FirebaseLogin :show="showLogin" @hide-modal="showLogin = false" />
</div>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import intializePwa from "~/helpers/pwa"
import { currentUser$ } from "~/helpers/fb/auth"
import { getLocalConfig, setLocalConfig } from "~/newstore/localpersistence"
import { useReadonlyStream } from "~/helpers/utils/composables"
export default defineComponent({
setup() {
return {
currentUser: useReadonlyStream(currentUser$, null),
}
},
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,
showLogin: false,
isOnLine: navigator.onLine,
}
},
async mounted() {
window.addEventListener("online", () => {
this.isOnLine = true
})
window.addEventListener("offline", () => {
this.isOnLine = false
})
// Initializes the PWA code - checks if the app is installed,
// etc.
this.showInstallPrompt = await intializePwa()
const cookiesAllowed = getLocalConfig("cookiesAllowed") === "yes"
if (!cookiesAllowed) {
this.$toast.show(this.$t("app.we_use_cookies").toString(), {
icon: "cookie",
duration: 0,
action: [
{
text: this.$t("action.learn_more").toString(),
onClick: (_, toastObject) => {
setLocalConfig("cookiesAllowed", "yes")
toastObject.goAway(0)
window
.open("https://docs.hoppscotch.io/privacy", "_blank")
.focus()
},
},
{
text: this.$t("action.dismiss").toString(),
onClick: (_, toastObject) => {
setLocalConfig("cookiesAllowed", "yes")
toastObject.goAway(0)
},
},
],
})
}
},
})
</script>

33
components/app/Logo.vue Normal file
View File

@@ -0,0 +1,33 @@
<template>
<svg
class="logo"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
aria-hidden="true"
role="img"
width="24"
height="24"
preserveAspectRatio="xMidYMid meet"
viewBox="0 0 24 24"
>
<path
d="M17 10.54C16.78 7.44 14.63 5 12 5s-4.78 2.44-5 5.54C4 11.23 2 12.5 2 14c0 2.21 4.5 4 10 4s10-1.79 10-4c0-1.5-2-2.77-5-3.46m-2.07 1.3c-1.9.21-3.96.21-5.86 0c-.04-.28-.07-.56-.07-.84c0-2.2 1.35-4 3-4s3 1.8 3 4c0 .28 0 .56-.07.84z"
fill="currentColor"
/>
</svg>
</template>
<style scoped lang="scss">
.logo {
animation: 200ms appear;
}
@keyframes appear {
0% {
@apply opacity-0;
}
100% {
@apply opacity-100;
}
}
</style>

123
components/app/Search.vue Normal file
View File

@@ -0,0 +1,123 @@
<template>
<SmartModal v-if="show" @close="$emit('hide-modal')">
<template #body>
<input
id="command"
v-model="search"
v-focus
type="text"
name="command"
:placeholder="$t('app.type_a_command_search')"
class="
bg-transparent
border-b border-dividerLight
text-secondaryDark text-base
leading-normal
px-4
pt-2
pb-6
"
/>
<div
class="
divide-y divide-dividerLight
flex flex-col
space-y-4
flex-1
overflow-auto
hide-scrollbar
"
>
<div
v-for="(map, mapIndex) in filteredMappings"
:key="`map-${mapIndex}`"
>
<h5 class="my-2 text-secondaryLight py-2 px-4">
{{ $t(map.section) }}
</h5>
<div
v-for="(shortcut, shortcutIndex) in map.shortcuts"
:key="`map-${mapIndex}-shortcut-${shortcutIndex}`"
class="
rounded
cursor-pointer
flex
py-2
px-4
transition
items-center
group
hover:bg-primaryLight
"
@click="
runAction(shortcut.action)
hideModal()
"
>
<i class="mr-4 opacity-75 material-icons group-hover:opacity-100">
{{ shortcut.icon }}
</i>
<span class="flex flex-1 mr-4 group-hover:text-secondaryDark">
{{ $t(shortcut.label) }}
</span>
<span
v-for="(key, keyIndex) in shortcut.keys"
:key="`map-${mapIndex}-shortcut-${shortcutIndex}-key-${keyIndex}`"
class="shortcut-key"
>
{{ key }}
</span>
</div>
</div>
</div>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import { invokeAction } from "~/helpers/actions"
import { spotlight } from "~/helpers/shortcuts"
export default defineComponent({
props: {
show: Boolean,
},
data() {
return {
search: "",
mappings: spotlight,
}
},
computed: {
filteredMappings() {
return this.mappings.filter((mapping) =>
mapping.shortcuts.some((shortcut) =>
shortcut.keywords.some((keyword) =>
keyword.toLowerCase().includes(this.search.toLowerCase())
)
)
)
},
},
methods: {
hideModal() {
this.$emit("hide-modal")
},
runAction(command) {
invokeAction(command, "path_from_invokeAction")
},
},
})
</script>
<style lang="scss" scoped>
.shortcut-key {
@apply bg-dividerLight;
@apply rounded;
@apply ml-2;
@apply py-1;
@apply px-2;
@apply inline-flex;
}
</style>

View File

@@ -0,0 +1,18 @@
<template>
<section :id="label.toLowerCase()" class="flex flex-col flex-1 relative">
<slot></slot>
</section>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
label: {
type: String,
default: "Section",
},
},
})
</script>

125
components/app/Share.vue Normal file
View File

@@ -0,0 +1,125 @@
<template>
<SmartModal
v-if="show"
:title="$t('app.invite_your_friends')"
@close="$emit('hide-modal')"
>
<template #body>
<p class="text-secondaryLight mb-8 px-2">
{{ $t("app.invite_description") }}
</p>
<div class="flex flex-col space-y-2 px-2">
<div class="grid gap-4 grid-cols-3">
<a
v-for="(platform, index) in platforms"
:key="`platform-${index}`"
:href="platform.link"
target="_blank"
class="share-link"
>
<SmartIcon :name="platform.icon" class="h-6 w-6" />
<span class="mt-3">
{{ platform.name }}
</span>
</a>
<button class="share-link" @click="copyAppLink">
<span class="font-icon h-6 text-xl w-6">{{ copyIcon }}</span>
<span class="mt-3">
{{ $t("app.copy") }}
</span>
</button>
</div>
</div>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import { copyToClipboard } from "~/helpers/utils/clipboard"
export default defineComponent({
props: {
show: Boolean,
},
data() {
const url = "https://hoppscotch.io"
const text = "Hoppscotch - Open source API development ecosystem."
const description =
"Helps you create requests faster, saving precious time on development."
const subject =
"Checkout Hoppscotch - an open source API development ecosystem"
const summary = `Hi there!%0D%0A%0D%0AI thought youll like this new platform that I joined called Hoppscotch - https://hoppscotch.io.%0D%0AIt is a simple and intuitive interface for creating and managing your APIs. You can build, test, document, and share your APIs.%0D%0A%0D%0AThe best part about Hoppscotch is that it is open source and free to get started.%0D%0A%0D%0A`
const twitter = "hoppscotch_io"
return {
url: "https://hoppscotch.io",
copyIcon: "content_copy",
platforms: [
{
name: "Email",
icon: "email",
link: `mailto:?subject=${subject}&body=${summary}`,
},
{
name: "Twitter",
icon: "twitter",
link: `https://twitter.com/intent/tweet?text=${text} ${description}&url=${url}&via=${twitter}`,
},
{
name: "Facebook",
icon: "facebook",
link: `https://www.facebook.com/sharer/sharer.php?u=${url}`,
},
{
name: "Reddit",
icon: "reddit",
link: `https://www.reddit.com/submit?url=${url}&title=${text}`,
},
{
name: "LinkedIn",
icon: "linkedin",
link: `https://www.linkedin.com/sharing/share-offsite/?url=${url}`,
},
],
}
},
methods: {
copyAppLink() {
copyToClipboard(this.url)
this.copyIcon = "done"
this.$toast.success(this.$t("state.copied_to_clipboard").toString(), {
icon: "content_paste",
})
setTimeout(() => (this.copyIcon = "content_copy"), 1000)
},
hideModal() {
this.$emit("hide-modal")
},
},
})
</script>
<style lang="scss" scoped>
.share-link {
@apply border border-dividerLight;
@apply rounded;
@apply flex-col flex;
@apply p-4;
@apply items-center;
@apply justify-center;
@apply hover:(bg-primaryLight text-secondaryDark);
@apply focus:outline-none;
@apply focus-visible:border-divider;
svg {
@apply opacity-80;
}
&:hover {
svg {
@apply opacity-100;
}
}
}
</style>

View File

@@ -0,0 +1,120 @@
<template>
<AppSlideOver :show="show" @close="close()">
<template #content>
<div
class="
bg-primary
border-b border-dividerLight
flex
p-2
top-0
z-10
items-center
sticky
justify-between
"
>
<h3 class="ml-4 heading">{{ $t("app.shortcuts") }}</h3>
<div class="flex">
<ButtonSecondary
icon="close"
class="rounded"
@click.native="close()"
/>
</div>
</div>
<div class="bg-primary border-b border-dividerLight">
<div class="flex flex-col my-4 mx-6 search-wrapper">
<input
v-model="filterText"
type="search"
class="
bg-primaryLight
border border-dividerLight
rounded
flex
w-full
py-2
pr-2
pl-8
focus-visible:border-divider
"
:placeholder="$t('action.search')"
/>
</div>
</div>
<div
class="
divide-y divide-dividerLight
flex flex-col flex-1
overflow-auto
hide-scrollbar
"
>
<div
v-for="(map, mapIndex) in mappings"
:key="`map-${mapIndex}`"
class="space-y-4 py-4 px-6"
>
<h1 class="font-semibold text-secondaryDark">
{{ $t(map.section) }}
</h1>
<div
v-for="(shortcut, shortcutIndex) in map.shortcuts"
:key="`map-${mapIndex}-shortcut-${shortcutIndex}`"
class="flex items-center"
>
<span class="flex flex-1 mr-4">
{{ $t(shortcut.label) }}
</span>
<span
v-for="(key, keyIndex) in shortcut.keys"
:key="`map-${mapIndex}-shortcut-${shortcutIndex}-key-${keyIndex}`"
class="shortcut-key"
>
{{ key }}
</span>
</div>
</div>
</div>
</template>
</AppSlideOver>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import shortcuts from "~/helpers/shortcuts"
export default defineComponent({
props: {
show: Boolean,
},
data() {
return {
filterText: "",
mappings: shortcuts,
}
},
watch: {
$route() {
this.$emit("close")
},
},
methods: {
close() {
this.$emit("close")
},
},
})
</script>
<style lang="scss" scoped>
.shortcut-key {
@apply bg-dividerLight;
@apply rounded;
@apply ml-2;
@apply py-1;
@apply px-2;
@apply inline-flex;
}
</style>

178
components/app/Sidenav.vue Normal file
View File

@@ -0,0 +1,178 @@
<template>
<aside class="flex h-full justify-between md:flex-col">
<nav class="flex flex-nowrap md:flex-col">
<NuxtLink
v-for="(navigation, index) in primaryNavigation"
:key="`navigation-${index}`"
:to="localePath(navigation.target)"
class="nav-link"
tabindex="0"
>
<i v-if="navigation.icon" class="material-icons">
{{ navigation.icon }}
</i>
<div v-if="navigation.svg" class="h-4 w-4">
<SmartIcon :name="navigation.svg" class="svg-icons" />
</div>
<span v-if="LEFT_SIDEBAR">{{ navigation.title }}</span>
</NuxtLink>
</nav>
<!-- <nav
class="
flex flex-nowrap
p-4
items-center
justify-center
md:(flex-col
space-x-0 space-y-2)
"
>
<ButtonSecondary
v-tippy="{ theme: 'tooltip', placement: 'top' }"
:title="`${$t('app.search')} <kbd>/</kbd>`"
icon="search"
class="rounded"
@click.native="showSearch = true"
/>
<ButtonSecondary
v-tippy="{ theme: 'tooltip', placement: 'top' }"
:title="$t('app.invite')"
icon="person_add_alt"
class="rounded"
@click.native="showShare = true"
/>
<ButtonSecondary
v-tippy="{ theme: 'tooltip', placement: 'top' }"
:title="`${$t('support.title')} <kbd>?</kbd>`"
icon="support"
class="rounded"
@click.native="showSupport = true"
/>
</nav> -->
<!-- <AppSearch :show="showSearch" @hide-modal="showSearch = false" />
<AppSupport :show="showSupport" @hide-modal="showSupport = false" />
<AppShare :show="showShare" @hide-modal="showShare = false" /> -->
</aside>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { useSetting } from "~/newstore/settings"
// import { defineActionHandler } from "~/helpers/actions"
export default defineComponent({
setup() {
// const showSearch = ref(false)
// const showSupport = ref(false)
// const showShare = ref(false)
// defineActionHandler("modals.search.toggle", () => {
// showSearch.value = !showSearch.value
// })
// defineActionHandler("modals.support.toggle", () => {
// showSupport.value = !showSupport.value
// })
// defineActionHandler("modals.share.toggle", () => {
// showShare.value = !showShare.value
// })
return {
// showSearch,
// showSupport,
// showShare,
LEFT_SIDEBAR: useSetting("LEFT_SIDEBAR"),
}
},
data() {
return {
primaryNavigation: [
{
target: "index",
icon: "settings_ethernet",
title: this.$t("navigation.rest"),
},
{
target: "graphql",
svg: "graphql",
title: this.$t("navigation.graphql"),
},
{
target: "realtime",
icon: "language",
title: this.$t("navigation.realtime"),
},
{
target: "documentation",
icon: "book",
title: this.$t("navigation.doc"),
},
{
target: "settings",
icon: "settings",
title: this.$t("navigation.settings"),
},
],
}
},
})
</script>
<style scoped lang="scss">
.nav-link {
@apply relative;
@apply p-4;
@apply flex flex-col flex-1;
@apply items-center;
@apply justify-center;
@apply hover:(bg-primaryDark text-secondaryDark);
@apply focus-visible:text-secondaryDark;
&::after {
@apply absolute;
@apply inset-x-0;
@apply md:inset-x-auto;
@apply md:inset-y-0;
@apply bottom-0;
@apply md:bottom-auto;
@apply md:left-0;
@apply z-2;
@apply h-0.5;
@apply md:h-full;
@apply w-full;
@apply md:w-0.5;
content: "";
}
&:focus::after {
@apply bg-divider;
}
.material-icons,
.svg-icons {
@apply opacity-75;
}
span {
@apply mt-2;
@apply font-font-medium;
}
&.exact-active-link {
@apply text-secondaryDark;
@apply bg-primaryLight;
@apply hover:text-secondaryDark;
.material-icons,
.svg-icons {
@apply opacity-100;
}
&::after {
@apply bg-accent;
}
}
}
</style>

View File

@@ -0,0 +1,69 @@
<template>
<div>
<transition v-if="show" name="fade" appear>
<div class="inset-0 transition-opacity z-20 fixed" @keydown.esc="close()">
<div
class="bg-primaryDark opacity-90 inset-0 absolute"
tabindex="0"
@click="close()"
></div>
</div>
</transition>
<aside
class="
bg-primary
flex flex-col
h-full
max-w-full
transform
transition
top-0
ease-in-out
right-0
w-96
z-30
duration-300
fixed
overflow-auto
"
:class="show ? 'shadow-xl translate-x-0' : 'translate-x-full'"
>
<slot name="content"></slot>
</aside>
</div>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
show: {
type: Boolean,
required: true,
default: false,
},
},
watch: {
show: {
immediate: true,
handler(show) {
if (process.client) {
if (show) document.body.style.setProperty("overflow", "hidden")
else document.body.style.removeProperty("overflow")
}
},
},
},
mounted() {
document.addEventListener("keydown", (e) => {
if (e.keyCode === 27 && this.show) this.close()
})
},
methods: {
close() {
this.$emit("close")
},
},
})
</script>

View File

@@ -0,0 +1,97 @@
<template>
<SmartModal
v-if="show"
:title="$t('support.title')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col space-y-2">
<SmartItem
icon="menu_book"
:label="$t('app.documentation')"
to="https://docs.hoppscotch.io"
:description="$t('support.documentation')"
info-icon="chevron_right"
active
blank
@click.native="hideModal()"
/>
<SmartItem
icon="keyboard"
:label="$t('app.keyboard_shortcuts')"
:description="$t('support.shortcuts')"
info-icon="chevron_right"
active
@click.native="
showShortcuts()
hideModal()
"
/>
<SmartItem
icon="auto_awesome"
:label="$t('app.whats_new')"
to="https://docs.hoppscotch.io/changelog"
:description="$t('support.changelog')"
info-icon="chevron_right"
active
blank
@click.native="hideModal()"
/>
<SmartItem
icon="contact_support"
:label="$t('app.chat_with_us')"
:description="$t('support.chat')"
info-icon="chevron_right"
active
@click.native="
chatWithUs()
hideModal()
"
/>
<SmartItem
svg="discord"
:label="$t('app.join_discord_community')"
to="https://hoppscotch.io/discord"
blank
:description="$t('support.community')"
info-icon="chevron_right"
active
@click.native="hideModal()"
/>
<SmartItem
svg="twitter"
:label="$t('app.twitter')"
to="https://twitter.com/hoppscotch_io"
blank
:description="$t('support.twitter')"
info-icon="chevron_right"
active
@click.native="hideModal()"
/>
</div>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import { invokeAction } from "~/helpers/actions"
import { showChat } from "~/helpers/support"
export default defineComponent({
props: {
show: Boolean,
},
methods: {
chatWithUs() {
showChat()
},
showShortcuts() {
invokeAction("flyouts.keybinds.toggle")
},
hideModal() {
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,147 @@
<template>
<SmartLink
:to="`${/^\/(?!\/).*$/.test(to) ? localePath(to) : to}`"
:exact="exact"
:blank="blank"
class="
font-bold
py-2
inline-flex
items-center
justify-center
focus:outline-none
focus-visible:bg-accentDark
"
:class="[
color
? `text-${color}-800 bg-${color}-200 hover:(text-${color}-900 bg-${color}-300) focus-visible:(text-${color}-900 bg-${color}-300)`
: `text-accentContrast bg-accent hover:bg-accentDark focus-visible:bg-accentDark`,
label ? 'px-4' : 'px-2',
rounded ? 'rounded-full' : 'rounded',
{ 'opacity-75 cursor-not-allowed': disabled },
{ 'pointer-events-none': loading },
{ 'px-6 py-4 text-lg': large },
{ 'shadow-lg hover:shadow-xl': shadow },
{
'text-white bg-gradient-to-tr from-gradientFrom via-gradientVia to-gradientTo':
gradient,
},
{
'border border-accent hover:border-accentDark focus-visible:border-accentDark':
outline,
},
]"
:disabled="disabled"
:tabindex="loading ? '-1' : '0'"
>
<span
v-if="!loading"
class="inline-flex items-center justify-center whitespace-nowrap"
:class="{ 'flex-row-reverse': reverse }"
>
<i
v-if="icon"
class="material-icons"
:class="[
{ '!text-2xl': large },
label ? (reverse ? 'ml-2' : 'mr-2') : '',
]"
>
{{ icon }}
</i>
<SmartIcon
v-if="svg"
:name="svg"
class="svg-icons"
:class="[
{ '!h-6 !w-6': large },
label ? (reverse ? 'ml-2' : 'mr-2') : '',
]"
/>
{{ label }}
<div v-if="shortcut.length" class="ml-2">
<kbd
v-for="(key, index) in shortcut"
:key="`key-${index}`"
class="bg-accentLight rounded ml-1 px-1 inline-flex"
>
{{ key }}
</kbd>
</div>
</span>
<SmartSpinner v-else />
</SmartLink>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
to: {
type: String,
default: "",
},
exact: {
type: Boolean,
default: true,
},
blank: {
type: Boolean,
default: false,
},
label: {
type: String,
default: "",
},
icon: {
type: String,
default: "",
},
svg: {
type: String,
default: "",
},
color: {
type: String,
default: "",
},
disabled: {
type: Boolean,
default: false,
},
loading: {
type: Boolean,
default: false,
},
large: {
type: Boolean,
default: false,
},
shadow: {
type: Boolean,
default: false,
},
reverse: {
type: Boolean,
default: false,
},
rounded: {
type: Boolean,
default: false,
},
gradient: {
type: Boolean,
default: false,
},
outline: {
type: Boolean,
default: false,
},
shortcut: {
type: Array,
default: () => [],
},
},
})
</script>

View File

@@ -0,0 +1,137 @@
<template>
<SmartLink
:to="`${/^\/(?!\/).*$/.test(to) ? localePath(to) : to}`"
:exact="exact"
:blank="blank"
class="
font-medium
py-2
inline-flex
items-center
justify-center
whitespace-nowrap
hover:bg-primaryDark
focus:outline-none
focus-visible:bg-primaryDark
"
:class="[
color
? `text-${color}-500 hover:(text-${color}-600 text-${color}-600)`
: 'text-secondary hover:text-secondaryDark focus-visible:text-secondaryDark',
label ? 'rounded px-4' : 'px-2',
{ 'rounded-full': rounded },
{ 'opacity-75 cursor-not-allowed': disabled },
{ 'flex-row-reverse': reverse },
{ 'px-6 py-4 text-lg': large },
{
'border border-divider hover:border-dividerDark focus-visible:border-dividerDark':
outline,
},
{ 'bg-primaryDark': filled },
]"
:disabled="disabled"
tabindex="0"
>
<i
v-if="icon"
class="material-icons"
:class="[
{ '!text-2xl': large },
label ? (reverse ? 'ml-2' : 'mr-2') : '',
]"
>
{{ icon }}
</i>
<SmartIcon
v-if="svg"
:name="svg"
class="svg-icons"
:class="[
{ '!h-6 !w-6': large },
label ? (reverse ? 'ml-2' : 'mr-2') : '',
]"
/>
{{ label }}
<div v-if="shortcut.length" class="ml-2">
<kbd
v-for="(key, index) in shortcut"
:key="`key-${index}`"
class="
bg-dividerLight
rounded
text-secondaryLight
ml-1
px-1
inline-flex
"
>
{{ key }}
</kbd>
</div>
</SmartLink>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
to: {
type: String,
default: "",
},
exact: {
type: Boolean,
default: true,
},
blank: {
type: Boolean,
default: false,
},
label: {
type: String,
default: "",
},
icon: {
type: String,
default: "",
},
svg: {
type: String,
default: "",
},
color: {
type: String,
default: "",
},
disabled: {
type: Boolean,
default: false,
},
reverse: {
type: Boolean,
default: false,
},
rounded: {
type: Boolean,
default: false,
},
large: {
type: Boolean,
default: false,
},
outline: {
type: Boolean,
default: false,
},
shortcut: {
type: Array,
default: () => [],
},
filled: {
type: Boolean,
default: false,
},
},
})
</script>

View File

@@ -0,0 +1,63 @@
<template>
<SmartModal v-if="show" :title="$t('collection.new')" @close="hideModal">
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelAdd"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="addNewCollection"
/>
<label for="selectLabelAdd">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary
:label="$t('action.save')"
@click.native="addNewCollection"
/>
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
show: Boolean,
},
data() {
return {
name: null,
}
},
methods: {
addNewCollection() {
if (!this.name) {
this.$toast.error(this.$t("collection.invalid_name"), {
icon: "error_outline",
})
return
}
this.$emit("submit", this.name)
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,71 @@
<template>
<SmartModal
v-if="show"
:title="$t('folder.new')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelAddFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="addFolder"
/>
<label for="selectLabelAddFolder">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary :label="$t('action.save')" @click.native="addFolder" />
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
show: Boolean,
folder: { type: Object, default: () => {} },
folderPath: { type: String, default: null },
collectionIndex: { type: Number, default: null },
},
data() {
return {
name: null,
}
},
methods: {
addFolder() {
if (!this.name) {
this.$toast.error(this.$t("folder.invalid_name"), {
icon: "error_outline",
})
return
}
this.$emit("add-folder", {
name: this.name,
folder: this.folder,
path: this.folderPath || `${this.collectionIndex}`,
})
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,110 @@
<template>
<div v-if="show">
<SmartTabs :id="'collections_tab'" @tab-changed="updateCollectionsType">
<SmartTab
:id="'my-collections'"
:label="$t('collection.my_collections')"
:selected="true"
/>
<SmartTab
v-if="currentUser && currentUser.eaInvited && !doc"
:id="'team-collections'"
:label="$t('collection.team_collections')"
>
<SmartIntersection @intersecting="onTeamSelectIntersect">
<div class="select-wrapper">
<select
id="team"
type="text"
autofocus
class="
bg-transparent
border-b border-transparent
cursor-pointer
flex
font-medium
w-full
py-2
px-4
appearance-none
hover:bg-primaryDark
"
@change="updateSelectedTeam(myTeams[$event.target.value])"
>
<option
:key="undefined"
:value="undefined"
hidden
disabled
selected
>
{{ $t("collection.select_team") }}
</option>
<option
v-for="(team, index) in myTeams"
:key="`team-${index}`"
:value="index"
>
{{ team.name }}
</option>
</select>
</div>
</SmartIntersection>
</SmartTab>
</SmartTabs>
</div>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import gql from "graphql-tag"
import { currentUserInfo$ } from "~/helpers/teams/BackendUserInfo"
import { useReadonlyStream } from "~/helpers/utils/composables"
export default defineComponent({
props: {
doc: Boolean,
show: Boolean,
},
setup() {
return {
currentUser: useReadonlyStream(currentUserInfo$, null),
}
},
data() {
return {
skipTeamsFetching: true,
}
},
apollo: {
myTeams: {
query: gql`
query GetMyTeams {
myTeams {
id
name
myRole
}
}
`,
pollInterval: 10000,
skip() {
return this.skipTeamsFetching
},
},
},
methods: {
onTeamSelectIntersect() {
// Load team data as soon as intersection
this.$apollo.queries.myTeams.refetch()
this.skipTeamsFetching = false
},
updateCollectionsType(tabID: string) {
this.$emit("update-collection-type", tabID)
},
updateSelectedTeam(team: any) {
this.$emit("update-selected-team", team)
},
},
})
</script>

View File

@@ -0,0 +1,64 @@
<template>
<SmartModal v-if="show" :title="$t('collection.edit')" @close="hideModal">
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelEdit"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="saveCollection"
/>
<label for="selectLabelEdit">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary
:label="$t('action.save')"
@click.native="saveCollection"
/>
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
show: Boolean,
placeholderCollName: { type: String, default: null },
},
data() {
return {
name: null,
}
},
methods: {
saveCollection() {
if (!this.name) {
this.$toast.error(this.$t("collection.invalid_name"), {
icon: "error_outline",
})
return
}
this.$emit("submit", this.name)
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,64 @@
<template>
<SmartModal
v-if="show"
:title="$t('folder.edit')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelEditFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="editFolder"
/>
<label for="selectLabelEditFolder">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary :label="$t('action.save')" @click.native="editFolder" />
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
show: Boolean,
},
data() {
return {
name: null,
}
},
methods: {
editFolder() {
if (!this.name) {
this.$toast.error(this.$t("folder.invalid_name"), {
icon: "error_outline",
})
return
}
this.$emit("submit", this.name)
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,63 @@
<template>
<SmartModal v-if="show" :title="$t('modal.edit_request')" @close="hideModal">
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelEditReq"
v-model="requestUpdateData.name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="saveRequest"
/>
<label for="selectLabelEditReq">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary :label="$t('action.save')" @click.native="saveRequest" />
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
show: Boolean,
placeholderReqName: { type: String, default: null },
},
data() {
return {
requestUpdateData: {
name: null,
},
}
},
methods: {
saveRequest() {
if (!this.requestUpdateData.name) {
this.$toast.error(this.$t("request.invalid_name"), {
icon: "error_outline",
})
return
}
this.$emit("submit", this.requestUpdateData)
this.hideModal()
},
hideModal() {
this.requestUpdateData = { name: null }
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,558 @@
<template>
<SmartModal
v-if="show"
:title="`${$t('modal.import_export')} ${$t('modal.collections')}`"
@close="hideModal"
>
<template #actions>
<ButtonSecondary
v-if="mode == 'import_from_my_collections'"
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.go_back')"
class="rounded"
icon="arrow_back"
@click.native="
mode = 'import_export'
mySelectedCollectionID = undefined
"
/>
<span>
<tippy
v-if="
mode == 'import_export' && collectionsType.type == 'my-collections'
"
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
class="rounded"
icon="more_vert"
/>
</template>
<SmartItem
icon="assignment_returned"
:label="$t('import.from_gist')"
@click.native="
readCollectionGist
$refs.options.tippy().hide()
"
/>
<span
v-tippy="{ theme: 'tooltip' }"
:title="
!currentUser
? $t('export.require_github')
: currentUser.provider !== 'github.com'
? $t('export.require_github')
: null
"
>
<SmartItem
:disabled="
!currentUser
? true
: currentUser.provider !== 'github.com'
? true
: false
"
icon="assignment_turned_in"
:label="$t('export.create_secret_gist')"
@click.native="
createCollectionGist()
$refs.options.tippy().hide()
"
/>
</span>
</tippy>
</span>
</template>
<template #body>
<div v-if="mode == 'import_export'" class="flex flex-col space-y-2">
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.replace_current')"
icon="folder_special"
:label="$t('action.replace_json')"
@click.native="openDialogChooseFileToReplaceWith"
/>
<input
ref="inputChooseFileToReplaceWith"
class="input"
type="file"
style="display: none"
accept="application/json"
@change="replaceWithJSON"
/>
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.preserve_current')"
icon="create_new_folder"
:label="$t('import.json')"
@click.native="openDialogChooseFileToImportFrom"
/>
<input
ref="inputChooseFileToImportFrom"
class="input"
type="file"
style="display: none"
accept="application/json"
@change="importFromJSON"
/>
<SmartItem
v-if="collectionsType.type == 'team-collections'"
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.preserve_current')"
icon="folder_shared"
:label="$t('import.from_my_collections')"
@click.native="mode = 'import_from_my_collections'"
/>
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.download_file')"
icon="drive_file_move"
:label="$t('export.as_json')"
@click.native="exportJSON"
/>
</div>
<div
v-if="mode == 'import_from_my_collections'"
class="flex flex-col px-2"
>
<div class="select-wrapper">
<select
type="text"
class="select"
autofocus
@change="
($event) => {
mySelectedCollectionID = $event.target.value
}
"
>
<option
:key="undefined"
:value="undefined"
hidden
disabled
selected
>
Select Collection
</option>
<option
v-for="(collection, index) in myCollections"
:key="`collection-${index}`"
:value="index"
>
{{ collection.name }}
</option>
</select>
</div>
</div>
</template>
<template #footer>
<div v-if="mode == 'import_from_my_collections'">
<span>
<ButtonPrimary
:disabled="mySelectedCollectionID == undefined"
icon="create_new_folder"
:label="$t('import.title')"
@click.native="importFromMyCollections"
/>
</span>
</div>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import { currentUser$ } from "~/helpers/fb/auth"
import * as teamUtils from "~/helpers/teams/utils"
import { useReadonlyStream } from "~/helpers/utils/composables"
import {
restCollections$,
setRESTCollections,
appendRESTCollections,
} from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
collectionsType: { type: Object, default: () => {} },
},
setup() {
return {
myCollections: useReadonlyStream(restCollections$, []),
currentUser: useReadonlyStream(currentUser$, null),
}
},
data() {
return {
showJsonCode: false,
mode: "import_export",
mySelectedCollectionID: undefined,
collectionJson: "",
}
},
methods: {
async createCollectionGist() {
this.getJSONCollection()
await this.$axios
.$post(
"https://api.github.com/gists",
{
files: {
"hoppscotch-collections.json": {
content: this.collectionJson,
},
},
},
{
headers: {
Authorization: `token ${this.currentUser.accessToken}`,
Accept: "application/vnd.github.v3+json",
},
}
)
.then((res) => {
this.$toast.success(this.$t("export.gist_created"), {
icon: "done",
})
window.open(res.html_url)
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
},
async readCollectionGist() {
const gist = prompt(this.$t("import.gist_url"))
if (!gist) return
await this.$axios
.$get(`https://api.github.com/gists/${gist.split("/").pop()}`, {
headers: {
Accept: "application/vnd.github.v3+json",
},
})
.then(({ files }) => {
const collections = JSON.parse(Object.values(files)[0].content)
setRESTCollections(collections)
this.fileImported()
})
.catch((e) => {
this.failedImport()
console.error(e)
})
},
hideModal() {
this.mode = "import_export"
this.mySelectedCollectionID = undefined
this.$emit("hide-modal")
},
openDialogChooseFileToReplaceWith() {
this.$refs.inputChooseFileToReplaceWith.click()
},
openDialogChooseFileToImportFrom() {
this.$refs.inputChooseFileToImportFrom.click()
},
replaceWithJSON() {
const reader = new FileReader()
reader.onload = ({ target }) => {
const content = target.result
let collections = JSON.parse(content)
if (collections[0]) {
const [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 {
this.failedImport()
}
if (this.collectionsType.type === "team-collections") {
teamUtils
.replaceWithJSON(
this.$apollo,
collections,
this.collectionsType.selectedTeam.id
)
.then((status) => {
if (status) {
this.fileImported()
} else {
this.failedImport()
}
})
.catch((e) => {
console.error(e)
this.failedImport()
})
} else {
setRESTCollections(collections)
this.fileImported()
}
}
reader.readAsText(this.$refs.inputChooseFileToReplaceWith.files[0])
this.$refs.inputChooseFileToReplaceWith.value = ""
},
importFromJSON() {
const reader = new FileReader()
reader.onload = ({ target }) => {
const content = target.result
let collections = JSON.parse(content)
if (collections[0]) {
const [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")
) {
// replace the variables, postman uses {{var}}, Hoppscotch uses <<var>>
collections = JSON.parse(
content.replaceAll(/{{([a-z]+)}}/gi, "<<$1>>")
)
collections = [this.parsePostmanCollection(collections)]
} else {
this.failedImport()
return
}
if (this.collectionsType.type === "team-collections") {
teamUtils
.importFromJSON(
this.$apollo,
collections,
this.collectionsType.selectedTeam.id
)
.then((status) => {
if (status) {
this.$emit("update-team-collections")
this.fileImported()
} else {
this.failedImport()
}
})
.catch((e) => {
console.error(e)
this.failedImport()
})
} else {
appendRESTCollections(collections)
this.fileImported()
}
}
reader.readAsText(this.$refs.inputChooseFileToImportFrom.files[0])
this.$refs.inputChooseFileToImportFrom.value = ""
},
importFromMyCollections() {
teamUtils
.importFromMyCollections(
this.$apollo,
this.mySelectedCollectionID,
this.collectionsType.selectedTeam.id
)
.then((success) => {
if (success) {
this.fileImported()
this.$emit("update-team-collections")
} else {
this.failedImport()
}
})
.catch((e) => {
console.error(e)
this.failedImport()
})
},
async getJSONCollection() {
if (this.collectionsType.type === "my-collections") {
this.collectionJson = JSON.stringify(this.myCollections, null, 2)
} else {
this.collectionJson = await teamUtils.exportAsJSON(
this.$apollo,
this.collectionsType.selectedTeam.id
)
}
return this.collectionJson
},
exportJSON() {
this.getJSONCollection()
const dataToWrite = this.collectionJson
const file = new Blob([dataToWrite], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
// TODO get uri from meta
a.download = `${url.split("/").pop().split("#")[0].split("?")[0]}`
document.body.appendChild(a)
a.click()
this.$toast.success(this.$t("state.download_started"), {
icon: "downloading",
})
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
},
fileImported() {
this.$toast.success(this.$t("state.file_imported"), {
icon: "folder_shared",
})
},
failedImport() {
this.$toast.error(this.$t("import.failed"), {
icon: "error_outline",
})
},
parsePostmanCollection({ info, name, item }) {
const hoppscotchCollection = {
name: "",
folders: [],
requests: [],
}
hoppscotchCollection.name = info ? info.name : name
if (item && item.length > 0) {
for (const collectionItem of item) {
if (collectionItem.request) {
if (
Object.prototype.hasOwnProperty.call(
hoppscotchCollection,
"folders"
)
) {
hoppscotchCollection.name = info ? info.name : name
hoppscotchCollection.requests.push(
this.parsePostmanRequest(collectionItem)
)
} else {
hoppscotchCollection.name = name || ""
hoppscotchCollection.requests.push(
this.parsePostmanRequest(collectionItem)
)
}
} else if (this.hasFolder(collectionItem)) {
hoppscotchCollection.folders.push(
this.parsePostmanCollection(collectionItem)
)
} else {
hoppscotchCollection.requests.push(
this.parsePostmanRequest(collectionItem)
)
}
}
}
return hoppscotchCollection
},
parsePostmanRequest({ name, request }) {
const pwRequest = {
url: "",
path: "",
method: "",
auth: "",
httpUser: "",
httpPassword: "",
passwordFieldType: "password",
bearerToken: "",
headers: [],
params: [],
bodyParams: [],
rawParams: "",
rawInput: false,
contentType: "",
requestType: "",
name: "",
}
pwRequest.name = name
if (request.url) {
const requestObjectUrl = request.url.raw.match(
/^(.+:\/\/[^/]+|{[^/]+})(\/[^?]+|).*$/
)
if (requestObjectUrl) {
pwRequest.url = requestObjectUrl[1]
pwRequest.path = requestObjectUrl[2] ? requestObjectUrl[2] : ""
}
}
pwRequest.method = request.method
const itemAuth = request.auth ? request.auth : ""
const 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
}
const requestObjectHeaders = request.header
if (requestObjectHeaders) {
pwRequest.headers = requestObjectHeaders
for (const header of pwRequest.headers) {
delete header.name
delete header.type
}
}
if (request.url) {
const requestObjectParams = request.url.query
if (requestObjectParams) {
pwRequest.params = requestObjectParams
for (const param of pwRequest.params) {
delete param.disabled
}
}
}
if (request.body) {
if (request.body.mode === "urlencoded") {
const params = request.body.urlencoded
pwRequest.bodyParams = params || []
for (const param of pwRequest.bodyParams) {
delete param.type
}
} else if (request.body.mode === "raw") {
pwRequest.rawInput = true
pwRequest.rawParams = request.body.raw
}
}
return pwRequest
},
hasFolder(item) {
return Object.prototype.hasOwnProperty.call(item, "item")
},
},
})
</script>

View File

@@ -0,0 +1,242 @@
<template>
<SmartModal v-if="show" :title="$t('collection.save_as')" @close="hideModal">
<template #body>
<div class="flex flex-col px-2">
<div class="flex relative">
<input
id="selectLabelSaveReq"
v-model="requestName"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="saveRequestAs"
/>
<label for="selectLabelSaveReq">
{{ $t("request.name") }}
</label>
</div>
<label class="px-4 pt-4 pb-4">
{{ $t("collection.select_location") }}
</label>
<CollectionsGraphql
v-if="mode === 'graphql'"
:doc="false"
:show-coll-actions="false"
:picked="picked"
:saving-mode="true"
@select="onSelect"
/>
<Collections
v-else
:picked="picked"
:save-request="true"
@select="onSelect"
@update-collection="collectionsType.type = $event"
@update-coll-type="onUpdateCollType"
/>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary
:label="$t('action.save')"
@click.native="saveRequestAs"
/>
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import * as teamUtils from "~/helpers/teams/utils"
import {
saveRESTRequestAs,
editRESTRequest,
editGraphqlRequest,
saveGraphqlRequestAs,
} from "~/newstore/collections"
import { getGQLSession, useGQLRequestName } from "~/newstore/GQLSession"
import {
getRESTRequest,
useRESTRequestName,
setRESTSaveContext,
} from "~/newstore/RESTSession"
export default defineComponent({
props: {
// mode can be either "graphql" or "rest"
mode: { type: String, default: "rest" },
show: Boolean,
},
setup(props) {
return {
requestName:
props.mode === "rest" ? useRESTRequestName() : useGQLRequestName(),
}
},
data() {
return {
requestData: {
name: this.requestName,
collectionIndex: undefined,
folderName: undefined,
requestIndex: undefined,
},
collectionsType: {
type: "my-collections",
selectedTeam: undefined,
},
picked: null,
}
},
watch: {
"requestData.collectionIndex": function resetFolderAndRequestIndex() {
// if user has chosen some folder, than selected other collection, which doesn't have any folders
// than `requestUpdateData.folderName` won't be reseted
this.$data.requestData.folderName = undefined
this.$data.requestData.requestIndex = undefined
},
"requestData.folderName": function resetRequestIndex() {
this.$data.requestData.requestIndex = undefined
},
editingRequest({ name }) {
this.$data.requestData.name = name || this.$data.defaultRequestName
},
},
methods: {
onUpdateCollType(newCollType) {
this.collectionsType = newCollType
},
onSelect({ picked }) {
this.picked = picked
},
async saveRequestAs() {
if (!this.requestName) {
this.$toast.error(this.$t("error.empty_req_name"), {
icon: "error_outline",
})
return
}
if (this.picked == null) {
this.$toast.error(this.$t("collection.select"), {
icon: "error_outline",
})
return
}
const requestUpdated =
this.mode === "rest" ? getRESTRequest() : getGQLSession()
// Filter out all REST file inputs
if (this.mode === "rest" && requestUpdated.bodyParams) {
requestUpdated.bodyParams = requestUpdated.bodyParams.map((param) =>
param?.value?.[0] instanceof File ? { ...param, value: "" } : param
)
}
if (this.picked.pickedType === "my-request") {
editRESTRequest(
this.picked.folderPath,
this.picked.requestIndex,
requestUpdated
)
setRESTSaveContext({
originLocation: "user-collection",
folderPath: this.picked.folderPath,
requestIndex: this.picked.requestIndex,
})
} else if (this.picked.pickedType === "my-folder") {
const insertionIndex = saveRESTRequestAs(
this.picked.folderPath,
requestUpdated
)
setRESTSaveContext({
originLocation: "user-collection",
folderPath: this.picked.folderPath,
requestIndex: insertionIndex,
})
} else if (this.picked.pickedType === "my-collection") {
const insertionIndex = saveRESTRequestAs(
`${this.picked.collectionIndex}`,
requestUpdated
)
setRESTSaveContext({
originLocation: "user-collection",
folderPath: `${this.picked.collectionIndex}`,
requestIndex: insertionIndex,
})
} else if (this.picked.pickedType === "teams-request") {
teamUtils.overwriteRequestTeams(
this.$apollo,
JSON.stringify(requestUpdated),
requestUpdated.name,
this.picked.requestID
)
setRESTSaveContext({
originLocation: "team-collection",
requestID: this.picked.requestID,
})
} else if (this.picked.pickedType === "teams-folder") {
const req = await teamUtils.saveRequestAsTeams(
this.$apollo,
JSON.stringify(requestUpdated),
requestUpdated.name,
this.collectionsType.selectedTeam.id,
this.picked.folderID
)
if (req && req.id) {
setRESTSaveContext({
originLocation: "team-collection",
requestID: req.id,
teamID: this.collectionsType.selectedTeam.id,
collectionID: this.picked.folderID,
})
}
} else if (this.picked.pickedType === "teams-collection") {
const req = await teamUtils.saveRequestAsTeams(
this.$apollo,
JSON.stringify(requestUpdated),
requestUpdated.name,
this.collectionsType.selectedTeam.id,
this.picked.collectionID
)
if (req && req.id) {
setRESTSaveContext({
originLocation: "team-collection",
requestID: req.id,
teamID: this.collectionsType.selectedTeam.id,
collectionID: this.picked.collectionID,
})
}
} else if (this.picked.pickedType === "gql-my-request") {
editGraphqlRequest(
this.picked.folderPath,
this.picked.requestIndex,
requestUpdated
)
} else if (this.picked.pickedType === "gql-my-folder") {
saveGraphqlRequestAs(this.picked.folderPath, requestUpdated)
} else if (this.picked.pickedType === "gql-my-collection") {
saveGraphqlRequestAs(`${this.picked.collectionIndex}`, requestUpdated)
}
this.$toast.success(this.$t("request.added"), {
icon: "post_add",
})
this.hideModal()
},
hideModal() {
this.picked = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -1,84 +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/ui/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(this.$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>

View File

@@ -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/ui/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>

View File

@@ -1,120 +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>

View File

@@ -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/ui/modal"),
},
data() {
return {
name: undefined,
}
},
methods: {
saveCollection() {
if (!this.$data.name) {
this.$toast.info(this.$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>

View File

@@ -1,71 +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/ui/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>

View File

@@ -1,139 +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/ui/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>

View File

@@ -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>

View File

@@ -0,0 +1,73 @@
<template>
<SmartModal v-if="show" :title="$t('collection.new')" @close="hideModal">
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelGqlAdd"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="addNewCollection"
/>
<label for="selectLabelGqlAdd">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary
:label="$t('action.save')"
@click.native="addNewCollection"
/>
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { HoppGQLRequest } from "~/helpers/types/HoppGQLRequest"
import { addGraphqlCollection, makeCollection } from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
},
data() {
return {
name: null as string | null,
}
},
methods: {
addNewCollection() {
if (!this.name) {
this.$toast.error(this.$t("collection.invalid_name").toString(), {
icon: "error_outline",
})
return
}
addGraphqlCollection(
makeCollection<HoppGQLRequest>({
name: this.name,
folders: [],
requests: [],
})
)
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,65 @@
<template>
<SmartModal
v-if="show"
:title="$t('folder.new')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelGqlAddFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="addFolder"
/>
<label for="selectLabelGqlAddFolder">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary :label="$t('action.save')" @click.native="addFolder" />
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
export default defineComponent({
props: {
show: Boolean,
folderPath: { type: String, default: null },
collectionIndex: { type: Number, default: null },
},
data() {
return {
name: null,
}
},
methods: {
addFolder() {
// TODO: Blocking when name is null ?
this.$emit("add-folder", {
name: this.name,
path: this.folderPath || `${this.collectionIndex}`,
})
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,235 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-center group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
>
<span
class="cursor-pointer flex px-4 justify-center items-center"
@click="toggleShowChildren()"
>
<i class="material-icons" :class="{ 'text-green-500': isSelected }">
{{ getCollectionIcon }}
</i>
</span>
<span
class="
cursor-pointer
flex flex-1
min-w-0
py-2
pr-2
transition
group-hover:text-secondaryDark
"
@click="toggleShowChildren()"
>
<span class="truncate"> {{ collection.name }} </span>
</span>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
icon="create_new_folder"
:title="$t('folder.new')"
class="hidden group-hover:inline-flex"
@click.native="
$emit('add-folder', {
path: `${collectionIndex}`,
})
"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
icon="more_vert"
/>
</template>
<SmartItem
icon="create_new_folder"
:label="$t('folder.new')"
@click.native="
$emit('add-folder', {
path: `${collectionIndex}`,
})
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="create"
:label="$t('action.edit')"
@click.native="
$emit('edit-collection')
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="delete"
color="red"
:label="$t('action.delete')"
@click.native="
confirmRemove = true
$refs.options.tippy().hide()
"
/>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered">
<CollectionsGraphqlFolder
v-for="(folder, index) in collection.folders"
:key="`folder-${index}`"
class="border-l border-dividerLight ml-6"
:picked="picked"
:saving-mode="savingMode"
:folder="folder"
:folder-index="index"
:folder-path="`${collectionIndex}/${index}`"
:collection-index="collectionIndex"
:doc="doc"
:is-filtered="isFiltered"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
/>
<CollectionsGraphqlRequest
v-for="(request, index) in collection.requests"
:key="`request-${index}`"
class="border-l border-dividerLight ml-6"
:picked="picked"
:saving-mode="savingMode"
:request="request"
:collection-index="collectionIndex"
:folder-index="-1"
:folder-name="collection.name"
:folder-path="`${collectionIndex}`"
:request-index="index"
:doc="doc"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
/>
<div
v-if="
collection.folders.length === 0 && collection.requests.length === 0
"
class="
border-l border-dividerLight
flex flex-col
text-secondaryLight
ml-6
p-4
items-center
justify-center
"
>
<i class="opacity-75 pb-2 material-icons">folder_open</i>
<span class="text-center">
{{ $t("empty.collection") }}
</span>
</div>
</div>
<SmartConfirmModal
:show="confirmRemove"
:title="$t('confirm.remove_collection')"
@hide-modal="confirmRemove = false"
@resolve="removeCollection"
/>
</div>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import {
removeGraphqlCollection,
moveGraphqlRequest,
} from "~/newstore/collections"
export default defineComponent({
props: {
picked: { type: Object, default: null },
// Whether the viewing context is related to picking (activates 'select' events)
savingMode: { type: Boolean, default: false },
collectionIndex: { type: Number, default: null },
collection: { type: Object, default: () => {} },
doc: Boolean,
isFiltered: Boolean,
},
data() {
return {
showChildren: false,
dragging: false,
selectedFolder: {},
confirmRemove: false,
}
},
computed: {
isSelected(): boolean {
return (
this.picked &&
this.picked.pickedType === "gql-my-collection" &&
this.picked.collectionIndex === this.collectionIndex
)
},
getCollectionIcon() {
if (this.isSelected) return "check_circle_outline"
else if (!this.showChildren && !this.isFiltered) return "folder"
else if (this.showChildren || this.isFiltered) return "folder_open"
else return "folder"
},
},
methods: {
pick() {
this.$emit("select", {
picked: {
pickedType: "gql-my-collection",
collectionIndex: this.collectionIndex,
},
})
},
toggleShowChildren() {
if (this.savingMode) {
this.pick()
}
this.showChildren = !this.showChildren
},
removeCollection() {
// Cancel pick if picked collection is deleted
if (
this.picked &&
this.picked.pickedType === "gql-my-collection" &&
this.picked.collectionIndex === this.collectionIndex
) {
this.$emit("select", { picked: null })
}
removeGraphqlCollection(this.collectionIndex)
this.$toast.success(this.$t("state.deleted").toString(), {
icon: "delete",
})
},
dropEvent({ dataTransfer }: any) {
this.dragging = !this.dragging
const folderPath = dataTransfer.getData("folderPath")
const requestIndex = dataTransfer.getData("requestIndex")
moveGraphqlRequest(folderPath, requestIndex, `${this.collectionIndex}`)
},
},
})
</script>

View File

@@ -0,0 +1,71 @@
<template>
<SmartModal v-if="show" :title="$t('collection.edit')" @close="hideModal">
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelGqlEdit"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="saveCollection"
/>
<label for="selectLabelGqlEdit">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary
:label="$t('action.save')"
@click.native="saveCollection"
/>
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { editGraphqlCollection } from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
editingCollection: { type: Object, default: () => {} },
editingCollectionIndex: { type: Number, default: null },
},
data() {
return {
name: null as string | null,
}
},
methods: {
saveCollection() {
if (!this.name) {
this.$toast.error(this.$t("collection.invalid_name").toString(), {
icon: "error_outline",
})
return
}
const collectionUpdated = {
...(this.editingCollection as any),
name: this.name,
}
editGraphqlCollection(this.editingCollectionIndex, collectionUpdated)
this.hideModal()
},
hideModal() {
this.name = null
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,70 @@
<template>
<SmartModal
v-if="show"
:title="$t('folder.edit')"
@close="$emit('hide-modal')"
>
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelGqlEditFolder"
v-model="name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="editFolder"
/>
<label for="selectLabelGqlEditFolder">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary :label="$t('action.save')" @click.native="editFolder" />
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { editGraphqlFolder } from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
folder: { type: Object, default: () => {} },
folderPath: { type: String, default: null },
},
data() {
return {
name: "",
}
},
methods: {
editFolder() {
if (!this.name) {
this.$toast.error(this.$t("collection.invalid_name").toString(), {
icon: "error_outline",
})
return
}
editGraphqlFolder(this.folderPath, {
...(this.folder as any),
name: this.name,
})
this.hideModal()
},
hideModal() {
this.name = ""
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,73 @@
<template>
<SmartModal v-if="show" :title="$t('modal.edit_request')" @close="hideModal">
<template #body>
<div class="flex flex-col px-2">
<input
id="selectLabelGqlEditReq"
v-model="requestUpdateData.name"
v-focus
class="input floating-input"
placeholder=" "
type="text"
@keyup.enter="saveRequest"
/>
<label for="selectLabelGqlEditReq">
{{ $t("action.label") }}
</label>
</div>
</template>
<template #footer>
<span>
<ButtonPrimary :label="$t('action.save')" @click.native="saveRequest" />
<ButtonSecondary
:label="$t('action.cancel')"
@click.native="hideModal"
/>
</span>
</template>
</SmartModal>
</template>
<script lang="ts">
import { defineComponent, PropType } from "@nuxtjs/composition-api"
import { HoppGQLRequest } from "~/helpers/types/HoppGQLRequest"
import { editGraphqlRequest } from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
folderPath: { type: String, default: null },
request: { type: Object as PropType<HoppGQLRequest>, default: () => {} },
requestIndex: { type: Number, default: null },
},
data() {
return {
requestUpdateData: {
name: null as any | null,
},
}
},
methods: {
saveRequest() {
if (!this.requestUpdateData.name) {
this.$toast.error(this.$t("collection.invalid_name").toString(), {
icon: "error_outline",
})
return
}
const requestUpdated = {
...this.$props.request,
name: this.$data.requestUpdateData.name || this.$props.request.name,
}
editGraphqlRequest(this.folderPath, this.requestIndex, requestUpdated)
this.hideModal()
},
hideModal() {
this.requestUpdateData = { name: null }
this.$emit("hide-modal")
},
},
})
</script>

View File

@@ -0,0 +1,233 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-center group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
>
<span
class="cursor-pointer flex px-4 justify-center items-center"
@click="toggleShowChildren()"
>
<i class="material-icons" :class="{ 'text-green-500': isSelected }">
{{ getCollectionIcon }}
</i>
</span>
<span
class="
cursor-pointer
flex flex-1
min-w-0
py-2
pr-2
transition
group-hover:text-secondaryDark
"
@click="toggleShowChildren()"
>
<span class="truncate">
{{ folder.name ? folder.name : folder.title }}
</span>
</span>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
icon="create_new_folder"
:title="$t('folder.new')"
class="hidden group-hover:inline-flex"
@click.native="$emit('add-folder', { folder, path: folderPath })"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
icon="more_vert"
/>
</template>
<SmartItem
icon="create_new_folder"
:label="$t('folder.new')"
@click.native="
$emit('add-folder', { folder, path: folderPath })
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="edit"
:label="$t('action.edit')"
@click.native="
$emit('edit-folder', { folder, folderPath })
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="delete"
color="red"
:label="$t('action.delete')"
@click.native="
confirmRemove = true
$refs.options.tippy().hide()
"
/>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered">
<CollectionsGraphqlFolder
v-for="(subFolder, subFolderIndex) in folder.folders"
:key="`subFolder-${subFolderIndex}`"
class="border-l border-dividerLight ml-6"
:picked="picked"
:saving-mode="savingMode"
:folder="subFolder"
:folder-index="subFolderIndex"
:folder-path="`${folderPath}/${subFolderIndex}`"
:collection-index="collectionIndex"
:doc="doc"
:is-filtered="isFiltered"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
/>
<CollectionsGraphqlRequest
v-for="(request, index) in folder.requests"
:key="`request-${index}`"
class="border-l border-dividerLight ml-6"
:picked="picked"
:saving-mode="savingMode"
:request="request"
:collection-index="collectionIndex"
:folder-index="folderIndex"
:folder-path="folderPath"
:folder-name="folder.name"
:request-index="index"
:doc="doc"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
/>
<div
v-if="
folder.folders &&
folder.folders.length === 0 &&
folder.requests &&
folder.requests.length === 0
"
class="
border-l border-dividerLight
flex flex-col
text-secondaryLight
ml-6
p-4
items-center
justify-center
"
>
<i class="opacity-75 pb-2 material-icons">folder_open</i>
<span class="text-center">
{{ $t("empty.folder") }}
</span>
</div>
</div>
<SmartConfirmModal
:show="confirmRemove"
:title="$t('confirm.remove_folder')"
@hide-modal="confirmRemove = false"
@resolve="removeFolder"
/>
</div>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"
import { removeGraphqlFolder, moveGraphqlRequest } from "~/newstore/collections"
export default defineComponent({
name: "Folder",
props: {
picked: { type: Object, default: null },
// Whether the request is in a selectable mode (activates 'select' event)
savingMode: { type: Boolean, default: false },
folder: { type: Object, default: () => {} },
folderIndex: { type: Number, default: null },
collectionIndex: { type: Number, default: null },
folderPath: { type: String, default: null },
doc: Boolean,
isFiltered: Boolean,
},
data() {
return {
showChildren: false,
dragging: false,
confirmRemove: false,
}
},
computed: {
isSelected(): boolean {
return (
this.picked &&
this.picked.pickedType === "gql-my-folder" &&
this.picked.folderPath === this.folderPath
)
},
getCollectionIcon() {
if (this.isSelected) return "check_circle_outline"
else if (!this.showChildren && !this.isFiltered) return "folder"
else if (this.showChildren || this.isFiltered) return "folder_open"
else return "folder"
},
},
methods: {
pick() {
this.$emit("select", {
picked: {
pickedType: "gql-my-folder",
folderPath: this.folderPath,
},
})
},
toggleShowChildren() {
if (this.savingMode) {
this.pick()
}
this.showChildren = !this.showChildren
},
removeFolder() {
// Cancel pick if the picked folder is deleted
if (
this.picked &&
this.picked.pickedType === "gql-my-folder" &&
this.picked.folderPath === this.folderPath
) {
this.$emit("select", { picked: null })
}
removeGraphqlFolder(this.folderPath)
this.$toast.success(this.$t("state.deleted").toString(), {
icon: "delete",
})
},
dropEvent({ dataTransfer }: any) {
this.dragging = !this.dragging
const folderPath = dataTransfer.getData("folderPath")
const requestIndex = dataTransfer.getData("requestIndex")
moveGraphqlRequest(folderPath, requestIndex, this.folderPath)
},
},
})
</script>

View File

@@ -0,0 +1,398 @@
<template>
<SmartModal
v-if="show"
:title="`${$t('modal.import_export')} ${$t('modal.collections')}`"
@close="hideModal"
>
<template #actions>
<span>
<tippy ref="options" interactive trigger="click" theme="popover" arrow>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
class="rounded"
icon="more_vert"
/>
</template>
<SmartItem
icon="assignment_returned"
:label="$t('import.from_gist')"
@click.native="
readCollectionGist
$refs.options.tippy().hide()
"
/>
<span
v-tippy="{ theme: 'tooltip' }"
:title="
!currentUser
? $t('export.require_github')
: currentUser.provider !== 'github.com'
? $t('export.require_github')
: null
"
>
<SmartItem
:disabled="
!currentUser
? true
: currentUser.provider !== 'github.com'
? true
: false
"
icon="assignment_turned_in"
:label="$t('export.create_secret_gist')"
@click.native="
createCollectionGist()
$refs.options.tippy().hide()
"
/>
</span>
</tippy>
</span>
</template>
<template #body>
<div class="flex flex-col space-y-2">
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.replace_current')"
icon="folder_special"
:label="$t('action.replace_json')"
@click.native="openDialogChooseFileToReplaceWith"
/>
<input
ref="inputChooseFileToReplaceWith"
class="input"
type="file"
accept="application/json"
@change="replaceWithJSON"
/>
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.preserve_current')"
icon="create_new_folder"
:label="$t('import.json')"
@click.native="openDialogChooseFileToImportFrom"
/>
<input
ref="inputChooseFileToImportFrom"
class="input"
type="file"
accept="application/json"
@change="importFromJSON"
/>
<SmartItem
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.download_file')"
icon="drive_file_move"
:label="$t('export.as_json')"
@click.native="exportJSON"
/>
</div>
</template>
</SmartModal>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import { currentUser$ } from "~/helpers/fb/auth"
import { useReadonlyStream } from "~/helpers/utils/composables"
import {
graphqlCollections$,
setGraphqlCollections,
appendGraphqlCollections,
} from "~/newstore/collections"
export default defineComponent({
props: {
show: Boolean,
},
setup() {
return {
collections: useReadonlyStream(graphqlCollections$, []),
currentUser: useReadonlyStream(currentUser$, null),
}
},
computed: {
collectionJson() {
return JSON.stringify(this.collections, null, 2)
},
},
methods: {
async createCollectionGist() {
await this.$axios
.$post(
"https://api.github.com/gists",
{
files: {
"hoppscotch-collections.json": {
content: this.collectionJson,
},
},
},
{
headers: {
Authorization: `token ${this.currentUser.accessToken}`,
Accept: "application/vnd.github.v3+json",
},
}
)
.then((res) => {
this.$toast.success(this.$t("export.gist_created"), {
icon: "done",
})
window.open(res.html_url)
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
},
async readCollectionGist() {
const gist = prompt(this.$t("import.gist_url"))
if (!gist) return
await this.$axios
.$get(`https://api.github.com/gists/${gist.split("/").pop()}`, {
headers: {
Accept: "application/vnd.github.v3+json",
},
})
.then(({ files }) => {
const collections = JSON.parse(Object.values(files)[0].content)
setGraphqlCollections(collections)
this.fileImported()
})
.catch((e) => {
this.failedImport()
console.error(e)
})
},
hideModal() {
this.$emit("hide-modal")
},
openDialogChooseFileToReplaceWith() {
this.$refs.inputChooseFileToReplaceWith.click()
},
openDialogChooseFileToImportFrom() {
this.$refs.inputChooseFileToImportFrom.click()
},
replaceWithJSON() {
const reader = new FileReader()
reader.onload = ({ target }) => {
const content = target.result
let collections = JSON.parse(content)
if (collections[0]) {
const [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 {
this.failedImport()
return
}
setGraphqlCollections(collections)
this.fileImported()
}
reader.readAsText(this.$refs.inputChooseFileToReplaceWith.files[0])
this.$refs.inputChooseFileToReplaceWith.value = ""
},
importFromJSON() {
const reader = new FileReader()
reader.onload = ({ target }) => {
const content = target.result
let collections = JSON.parse(content)
if (collections[0]) {
const [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")
) {
// replace the variables, postman uses {{var}}, Hoppscotch uses <<var>>
collections = JSON.parse(
content.replaceAll(/{{([a-z]+)}}/gi, "<<$1>>")
)
collections = [this.parsePostmanCollection(collections)]
} else {
this.failedImport()
return
}
appendGraphqlCollections(collections)
this.fileImported()
}
reader.readAsText(this.$refs.inputChooseFileToImportFrom.files[0])
this.$refs.inputChooseFileToImportFrom.value = ""
},
exportJSON() {
const dataToWrite = this.collectionJson
const file = new Blob([dataToWrite], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
// TODO get uri from meta
a.download = `${url.split("/").pop().split("#")[0].split("?")[0]}`
document.body.appendChild(a)
a.click()
this.$toast.success(this.$t("state.download_started"), {
icon: "downloading",
})
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
},
fileImported() {
this.$toast.success(this.$t("state.file_imported"), {
icon: "folder_shared",
})
},
failedImport() {
this.$toast.error(this.$t("import.failed"), {
icon: "error_outline",
})
},
parsePostmanCollection({ info, name, item }) {
const hoppscotchCollection = {
name: "",
folders: [],
requests: [],
}
hoppscotchCollection.name = info ? info.name : name
if (item && item.length > 0) {
for (const collectionItem of item) {
if (collectionItem.request) {
if (
Object.prototype.hasOwnProperty.call(
hoppscotchCollection,
"folders"
)
) {
hoppscotchCollection.name = info ? info.name : name
hoppscotchCollection.requests.push(
this.parsePostmanRequest(collectionItem)
)
} else {
hoppscotchCollection.name = name || ""
hoppscotchCollection.requests.push(
this.parsePostmanRequest(collectionItem)
)
}
} else if (this.hasFolder(collectionItem)) {
hoppscotchCollection.folders.push(
this.parsePostmanCollection(collectionItem)
)
} else {
hoppscotchCollection.requests.push(
this.parsePostmanRequest(collectionItem)
)
}
}
}
return hoppscotchCollection
},
parsePostmanRequest({ name, request }) {
const pwRequest = {
url: "",
path: "",
method: "",
auth: "",
httpUser: "",
httpPassword: "",
passwordFieldType: "password",
bearerToken: "",
headers: [],
params: [],
bodyParams: [],
rawParams: "",
rawInput: false,
contentType: "",
requestType: "",
name: "",
}
pwRequest.name = name
const requestObjectUrl = request.url.raw.match(
/^(.+:\/\/[^/]+|{[^/]+})(\/[^?]+|).*$/
)
if (requestObjectUrl) {
pwRequest.url = requestObjectUrl[1]
pwRequest.path = requestObjectUrl[2] ? requestObjectUrl[2] : ""
}
pwRequest.method = request.method
const itemAuth = request.auth ? request.auth : ""
const 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
}
const requestObjectHeaders = request.header
if (requestObjectHeaders) {
pwRequest.headers = requestObjectHeaders
for (const header of pwRequest.headers) {
delete header.name
delete header.type
}
}
const requestObjectParams = request.url.query
if (requestObjectParams) {
pwRequest.params = requestObjectParams
for (const param of pwRequest.params) {
delete param.disabled
}
}
if (request.body) {
if (request.body.mode === "urlencoded") {
const params = request.body.urlencoded
pwRequest.bodyParams = params || []
for (const param of pwRequest.bodyParams) {
delete param.type
}
} else if (request.body.mode === "raw") {
pwRequest.rawInput = true
pwRequest.rawParams = request.body.raw
}
}
return pwRequest
},
hasFolder(item) {
return Object.prototype.hasOwnProperty.call(item, "item")
},
},
})
</script>

View File

@@ -0,0 +1,183 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-center group"
draggable="true"
@dragstart="dragStart"
@dragover.stop
@dragleave="dragging = false"
@dragend="dragging = false"
>
<span
class="
cursor-pointer
flex
px-2
w-16
justify-center
items-center
truncate
"
@click="!doc ? selectRequest() : {}"
>
<i class="material-icons" :class="{ 'text-green-500': isSelected }">
{{ isSelected ? "check_circle_outline" : "description" }}
</i>
</span>
<span
class="
cursor-pointer
flex flex-1
min-w-0
py-2
pr-2
transition
group-hover:text-secondaryDark
"
@click="!doc ? selectRequest() : {}"
>
<span class="truncate"> {{ request.name }} </span>
</span>
<div class="flex">
<ButtonSecondary
v-if="!savingMode"
v-tippy="{ theme: 'tooltip' }"
icon="replay"
:title="$t('action.restore')"
class="hidden group-hover:inline-flex"
@click.native="!doc ? selectRequest() : {}"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
icon="more_vert"
/>
</template>
<SmartItem
icon="edit"
:label="$t('action.edit')"
@click.native="
$emit('edit-request', {
request,
requestIndex,
folderPath,
})
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="delete"
color="red"
:label="$t('action.delete')"
@click.native="
confirmRemove = true
$refs.options.tippy().hide()
"
/>
</tippy>
</span>
</div>
</div>
<SmartConfirmModal
:show="confirmRemove"
:title="$t('confirm.remove_request')"
@hide-modal="confirmRemove = false"
@resolve="removeRequest"
/>
</div>
</template>
<script lang="ts">
import { defineComponent, PropType } from "@nuxtjs/composition-api"
import { HoppGQLRequest, makeGQLRequest } from "~/helpers/types/HoppGQLRequest"
import { removeGraphqlRequest } from "~/newstore/collections"
import { setGQLSession } from "~/newstore/GQLSession"
export default defineComponent({
props: {
// Whether the object is selected (show the tick mark)
picked: { type: Object, default: null },
// Whether the request is being saved (activate 'select' event)
savingMode: { type: Boolean, default: false },
request: { type: Object as PropType<HoppGQLRequest>, default: () => {} },
folderPath: { type: String, default: null },
requestIndex: { type: Number, default: null },
doc: Boolean,
},
data() {
return {
dragging: false,
confirmRemove: false,
}
},
computed: {
isSelected(): boolean {
return (
this.picked &&
this.picked.pickedType === "gql-my-request" &&
this.picked.folderPath === this.folderPath &&
this.picked.requestIndex === this.requestIndex
)
},
},
methods: {
pick() {
this.$emit("select", {
picked: {
pickedType: "gql-my-request",
folderPath: this.folderPath,
requestIndex: this.requestIndex,
},
})
},
selectRequest() {
if (this.savingMode) {
this.pick()
} else {
setGQLSession({
request: makeGQLRequest({
name: this.$props.request.name,
url: this.$props.request.url,
query: this.$props.request.query,
headers: this.$props.request.headers,
variables: this.$props.request.variables,
}),
schema: "",
response: "",
})
}
},
dragStart({ dataTransfer }: any) {
this.dragging = !this.dragging
dataTransfer.setData("folderPath", this.folderPath)
dataTransfer.setData("requestIndex", this.requestIndex)
},
removeRequest() {
// Cancel pick if the picked request is deleted
if (
this.picked &&
this.picked.pickedType === "gql-my-request" &&
this.picked.folderPath === this.folderPath &&
this.picked.requestIndex === this.requestIndex
) {
this.$emit("select", { picked: null })
}
removeGraphqlRequest(this.folderPath, this.requestIndex)
this.$toast.success(this.$t("state.deleted").toString(), {
icon: "delete",
})
},
},
})
</script>

View File

@@ -0,0 +1,282 @@
<template>
<AppSection
label="collections"
:class="{ 'rounded border border-divider': savingMode }"
>
<div
class="
divide-y divide-dividerLight
border-b border-dividerLight
flex flex-col
top-sidebarPrimaryStickyFold
z-10
sticky
"
:class="{ 'bg-primary': !savingMode }"
>
<div v-if="showCollActions" class="search-wrapper">
<input
v-model="filterText"
type="search"
:placeholder="$t('action.search')"
class="bg-transparent flex w-full py-2 pr-2 pl-10"
/>
</div>
<div class="flex flex-1 justify-between">
<ButtonSecondary
icon="add"
:label="$t('action.new')"
class="rounded-none"
@click.native="displayModalAdd(true)"
/>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/collections"
blank
:title="$t('app.wiki')"
icon="help_outline"
/>
<ButtonSecondary
v-if="showCollActions"
v-tippy="{ theme: 'tooltip' }"
:title="$t('modal.import_export')"
icon="import_export"
@click.native="displayModalImportExport(true)"
/>
</div>
</div>
</div>
<div class="flex-col">
<CollectionsGraphqlCollection
v-for="(collection, index) in filteredCollections"
:key="`collection-${index}`"
:picked="picked"
:name="collection.name"
:collection-index="index"
:collection="collection"
:doc="doc"
:is-filtered="filterText.length > 0"
:saving-mode="savingMode"
@edit-collection="editCollection(collection, index)"
@add-folder="addFolder($event)"
@edit-folder="editFolder($event)"
@edit-request="editRequest($event)"
@select-collection="$emit('use-collection', collection)"
@select="$emit('select', $event)"
/>
</div>
<div
v-if="collections.length === 0"
class="flex flex-col text-secondaryLight p-4 items-center justify-center"
>
<span class="text-center pb-4">
{{ $t("empty.collections") }}
</span>
<ButtonSecondary
:label="$t('add.new')"
filled
@click.native="displayModalAdd(true)"
/>
</div>
<div
v-if="!(filteredCollections.length !== 0 || collections.length === 0)"
class="flex flex-col text-secondaryLight p-4 items-center justify-center"
>
<i class="opacity-75 pb-2 material-icons">manage_search</i>
<span class="text-center">
{{ $t("state.nothing_found") }} "{{ filterText }}"
</span>
</div>
<CollectionsGraphqlAdd
:show="showModalAdd"
@hide-modal="displayModalAdd(false)"
/>
<CollectionsGraphqlEdit
:show="showModalEdit"
:editing-collection="editingCollection"
:editing-collection-index="editingCollectionIndex"
@hide-modal="displayModalEdit(false)"
/>
<CollectionsGraphqlAddFolder
:show="showModalAddFolder"
:folder-path="editingFolderPath"
@add-folder="onAddFolder($event)"
@hide-modal="displayModalAddFolder(false)"
/>
<CollectionsGraphqlEditFolder
:show="showModalEditFolder"
:collection-index="editingCollectionIndex"
:folder="editingFolder"
:folder-index="editingFolderIndex"
:folder-path="editingFolderPath"
@hide-modal="displayModalEditFolder(false)"
/>
<CollectionsGraphqlEditRequest
:show="showModalEditRequest"
:folder-path="editingFolderPath"
:request="editingRequest"
:request-index="editingRequestIndex"
@hide-modal="displayModalEditRequest(false)"
/>
<CollectionsGraphqlImportExport
:show="showModalImportExport"
@hide-modal="displayModalImportExport(false)"
/>
</AppSection>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import clone from "lodash/clone"
import { useReadonlyStream } from "~/helpers/utils/composables"
import { graphqlCollections$, addGraphqlFolder } from "~/newstore/collections"
export default defineComponent({
props: {
// Whether to activate the ability to pick items (activates 'select' events)
savingMode: { type: Boolean, default: false },
doc: { type: Boolean, default: false },
picked: { type: Object, default: null },
// Whether to show the 'New' and 'Import/Export' actions
showCollActions: { type: Boolean, default: true },
},
setup() {
return {
collections: useReadonlyStream(graphqlCollections$, []),
}
},
data() {
return {
showModalAdd: false,
showModalEdit: false,
showModalImportExport: false,
showModalAddFolder: false,
showModalEditFolder: false,
showModalEditRequest: false,
editingCollection: undefined,
editingCollectionIndex: undefined,
editingFolder: undefined,
editingFolderName: undefined,
editingFolderIndex: undefined,
editingFolderPath: undefined,
editingRequest: undefined,
editingRequestIndex: undefined,
filterText: "",
}
},
computed: {
filteredCollections() {
const collections = clone(this.collections)
if (!this.filterText) return collections
const filterText = this.filterText.toLowerCase()
const filteredCollections = []
for (const collection of collections) {
const filteredRequests = []
const filteredFolders = []
for (const request of collection.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredRequests.push(request)
}
for (const folder of collection.folders) {
const filteredFolderRequests = []
for (const request of folder.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredFolderRequests.push(request)
}
if (filteredFolderRequests.length > 0) {
const filteredFolder = Object.assign({}, folder)
filteredFolder.requests = filteredFolderRequests
filteredFolders.push(filteredFolder)
}
}
if (filteredRequests.length + filteredFolders.length > 0) {
const filteredCollection = Object.assign({}, collection)
filteredCollection.requests = filteredRequests
filteredCollection.folders = filteredFolders
filteredCollections.push(filteredCollection)
}
}
return filteredCollections
},
},
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)
},
onAddFolder({ name, path }) {
addGraphqlFolder(name, path)
this.displayModalAddFolder(false)
},
addFolder(payload) {
const { path } = payload
this.$data.editingFolderPath = path
this.displayModalAddFolder(true)
},
editFolder(payload) {
const { folder, folderPath } = payload
this.editingFolder = folder
this.editingFolderPath = folderPath
this.displayModalEditFolder(true)
},
editRequest(payload) {
const {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
folderPath,
} = payload
this.$data.editingFolderPath = folderPath
this.$data.editingCollectionIndex = collectionIndex
this.$data.editingFolderIndex = folderIndex
this.$data.editingFolderName = folderName
this.$data.editingRequest = request
this.$data.editingRequestIndex = requestIndex
this.displayModalEditRequest(true)
},
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
},
},
})
</script>

View File

@@ -1,288 +0,0 @@
<template>
<modal v-if="show" @close="hideModal">
<div slot="header">
<ul>
<li>
<div class="flex-wrap">
<h3 class="title">{{ $t("import_export") }} {{ $t("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/ui/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(
/^(.+:\/\/[^\/]+|{[^\/]+})(\/[^\?]+|).*$/
)
if (requestObjectUrl) {
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>

View File

@@ -1,126 +1,226 @@
<!--
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>
<AppSection
label="collections"
:class="{ 'rounded border border-divider': saveRequest }"
>
<div
class="
divide-y divide-dividerLight
bg-primary
border-b border-dividerLight
rounded-t
flex flex-col
top-0
z-10
sticky
"
:class="{ '!top-sidebarPrimaryStickyFold': !saveRequest && !doc }"
>
<div v-if="!saveRequest" class="search-wrapper">
<input
v-model="filterText"
type="search"
:placeholder="$t('action.search')"
class="bg-transparent flex w-full py-2 pr-2 pl-10"
/>
</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> -->
<CollectionsChooseType
:collections-type="collectionsType"
:show="showTeamCollections"
:doc="doc"
@update-collection-type="updateCollectionType"
@update-selected-team="updateSelectedTeam"
/>
<div class="flex flex-1 justify-between">
<ButtonSecondary
v-if="
collectionsType.type == 'team-collections' &&
(collectionsType.selectedTeam == undefined ||
collectionsType.selectedTeam.myRole == 'VIEWER')
"
v-tippy="{ theme: 'tooltip' }"
disabled
class="rounded-none"
icon="add"
:title="$t('team.no_access')"
:label="$t('action.new')"
/>
<ButtonSecondary
v-else
icon="add"
:label="$t('action.new')"
class="rounded-none"
@click.native="displayModalAdd(true)"
/>
<span class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/collections"
blank
:title="$t('app.wiki')"
icon="help_outline"
/>
<ButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:disabled="
collectionsType.type == 'team-collections' &&
collectionsType.selectedTeam == undefined
"
icon="import_export"
:title="$t('modal.import_export')"
@click.native="displayModalImportExport(true)"
/>
</span>
</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)"
<div class="flex flex-col">
<component
:is="
collectionsType.type == 'my-collections'
? 'CollectionsMyCollection'
: 'CollectionsTeamsCollection'
"
v-for="(collection, index) in filteredCollections"
:key="`collection-${index}`"
:collection-index="index"
:collection="collection"
:doc="doc"
:is-filtered="filterText.length > 0"
:selected="selected.some((coll) => coll == collection)"
:save-request="saveRequest"
:collections-type="collectionsType"
:picked="picked"
@edit-collection="editCollection(collection, index)"
@add-folder="addFolder($event)"
@edit-folder="editFolder($event)"
@edit-request="editRequest($event)"
@update-team-collections="updateTeamCollections"
@select-collection="$emit('use-collection', collection)"
@unselect-collection="$emit('remove-collection', collection)"
@select="$emit('select', $event)"
@expand-collection="expandCollection"
@remove-collection="removeCollection"
@remove-request="removeRequest"
/>
</div>
<div
v-if="filteredCollections.length === 0 && filterText.length === 0"
class="flex flex-col text-secondaryLight p-4 items-center justify-center"
>
<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>
<span class="text-center pb-4">
{{ $t("empty.collections") }}
</span>
<ButtonSecondary
v-if="
collectionsType.type == 'team-collections' &&
(collectionsType.selectedTeam == undefined ||
collectionsType.selectedTeam.myRole == 'VIEWER')
"
v-tippy="{ theme: 'tooltip' }"
:title="$t('team.no_access')"
:label="$t('add.new')"
filled
/>
<ButtonSecondary
v-else
:label="$t('add.new')"
filled
@click.native="displayModalAdd(true)"
/>
</div>
<div
v-if="filterText.length !== 0 && filteredCollections.length === 0"
class="flex flex-col text-secondaryLight p-4 items-center justify-center"
>
<i class="opacity-75 pb-2 material-icons">manage_search</i>
<span class="text-center">
{{ $t("state.nothing_found") }} "{{ filterText }}"
</span>
</div>
<CollectionsAdd
:show="showModalAdd"
@submit="addNewRootCollection"
@hide-modal="displayModalAdd(false)"
/>
<CollectionsEdit
:show="showModalEdit"
:editing-coll-name="editingCollection ? editingCollection.name : ''"
:placeholder-coll-name="editingCollection ? editingCollection.name : ''"
@hide-modal="displayModalEdit(false)"
@submit="updateEditingCollection"
/>
<CollectionsAddFolder
:show="showModalAddFolder"
:folder="editingFolder"
:folder-path="editingFolderPath"
@add-folder="onAddFolder($event)"
@hide-modal="displayModalAddFolder(false)"
/>
<CollectionsEditFolder
:show="showModalEditFolder"
@submit="updateEditingFolder"
@hide-modal="displayModalEditFolder(false)"
/>
<CollectionsEditRequest
:show="showModalEditRequest"
:placeholder-req-name="editingRequest ? editingRequest.name : ''"
@submit="updateEditingRequest"
@hide-modal="displayModalEditRequest(false)"
/>
<CollectionsImportExport
:show="showModalImportExport"
:collections-type="collectionsType"
@hide-modal="displayModalImportExport(false)"
@update-team-collections="updateTeamCollections"
/>
</AppSection>
</template>
<style scoped lang="scss">
.virtual-list {
max-height: calc(100vh - 286px);
}
ul {
display: flex;
flex-direction: column;
}
</style>
<script>
import collection from "./collection"
import { fb } from "../../functions/fb"
import gql from "graphql-tag"
import cloneDeep from "lodash/cloneDeep"
import { defineComponent } from "@nuxtjs/composition-api"
import CollectionsMyCollection from "./my/Collection.vue"
import CollectionsTeamsCollection from "./teams/Collection.vue"
import { currentUser$ } from "~/helpers/fb/auth"
import TeamCollectionAdapter from "~/helpers/teams/TeamCollectionAdapter"
import * as teamUtils from "~/helpers/teams/utils"
import {
restCollections$,
addRESTCollection,
editRESTCollection,
addRESTFolder,
removeRESTCollection,
editRESTFolder,
removeRESTRequest,
editRESTRequest,
} from "~/newstore/collections"
import {
useReadonlyStream,
useStreamSubscriber,
} from "~/helpers/utils/composables"
export default {
export default defineComponent({
components: {
collection,
"pw-section": () => import("../layout/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"),
CollectionsMyCollection,
CollectionsTeamsCollection,
},
props: {
doc: Boolean,
selected: { type: Array, default: () => [] },
saveRequest: Boolean,
picked: { type: Object, default: () => {} },
},
setup() {
const { subscribeToStream } = useStreamSubscriber()
return {
subscribeTo: subscribeToStream,
collections: useReadonlyStream(restCollections$, []),
currentUser: useReadonlyStream(currentUser$, null),
}
},
data() {
return {
@@ -133,26 +233,238 @@ export default {
editingCollection: undefined,
editingCollectionIndex: undefined,
editingFolder: undefined,
editingFolderName: undefined,
editingFolderIndex: undefined,
editingFolderPath: undefined,
editingRequest: undefined,
editingRequestIndex: undefined,
filterText: "",
collectionsType: {
type: "my-collections",
selectedTeam: undefined,
},
teamCollectionAdapter: new TeamCollectionAdapter(null),
teamCollectionsNew: [],
}
},
computed: {
collections() {
return this.$store.state.postwoman.collections
showTeamCollections() {
if (this.currentUser == null) {
return false
}
return true
},
filteredCollections() {
const collections =
this.collectionsType.type === "my-collections"
? this.collections
: this.teamCollectionsNew
if (!this.filterText) {
return collections
}
if (this.collectionsType.type === "team-collections") {
return []
}
const filterText = this.filterText.toLowerCase()
const filteredCollections = []
for (const collection of collections) {
const filteredRequests = []
const filteredFolders = []
for (const request of collection.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredRequests.push(request)
}
for (const folder of this.collectionsType.type === "team-collections"
? collection.children
: collection.folders) {
const filteredFolderRequests = []
for (const request of folder.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredFolderRequests.push(request)
}
if (filteredFolderRequests.length > 0) {
const filteredFolder = Object.assign({}, folder)
filteredFolder.requests = filteredFolderRequests
filteredFolders.push(filteredFolder)
}
}
if (
filteredRequests.length + filteredFolders.length > 0 ||
collection.name.toLowerCase().includes(filterText)
) {
const filteredCollection = Object.assign({}, collection)
filteredCollection.requests = filteredRequests
filteredCollection.folders = filteredFolders
filteredCollections.push(filteredCollection)
}
}
return filteredCollections
},
},
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))
watch: {
"collectionsType.type": function emitstuff() {
this.$emit("update-collection", this.$data.collectionsType.type)
},
"collectionsType.selectedTeam"(value) {
if (value?.id) this.teamCollectionAdapter.changeTeamID(value.id)
},
},
mounted() {
this.subscribeTo(this.teamCollectionAdapter.collections$, (colls) => {
this.teamCollectionsNew = cloneDeep(colls)
})
},
methods: {
updateTeamCollections() {
// TODO: Remove this at some point
},
updateSelectedTeam(newSelectedTeam) {
this.collectionsType.selectedTeam = newSelectedTeam
this.$emit("update-coll-type", this.collectionsType)
},
updateCollectionType(newCollectionType) {
this.collectionsType.type = newCollectionType
this.$emit("update-coll-type", this.collectionsType)
},
// Intented to be called by the CollectionAdd modal submit event
addNewRootCollection(name) {
if (this.collectionsType.type === "my-collections") {
addRESTCollection({
name,
folders: [],
requests: [],
})
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
teamUtils
.createNewRootCollection(
this.$apollo,
name,
this.collectionsType.selectedTeam.id
)
.then(() => {
this.$toast.success(this.$t("collection.created"), {
icon: "done",
})
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
}
this.displayModalAdd(false)
},
// Intented to be called by CollectionEdit modal submit event
updateEditingCollection(newName) {
if (!newName) {
this.$toast.error(this.$t("collection.invalid_name"), {
icon: "error_outline",
})
return
}
if (this.collectionsType.type === "my-collections") {
const collectionUpdated = {
...this.editingCollection,
name: newName,
}
editRESTCollection(this.editingCollectionIndex, collectionUpdated)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
teamUtils
.renameCollection(this.$apollo, newName, this.editingCollection.id)
.then(() => {
this.$toast.success(this.$t("collection.renamed"), {
icon: "done",
})
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
}
this.displayModalEdit(false)
},
// Intended to be called by CollectionEditFolder modal submit event
updateEditingFolder(name) {
if (this.collectionsType.type === "my-collections") {
editRESTFolder(this.editingFolderPath, { ...this.editingFolder, name })
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
teamUtils
.renameCollection(this.$apollo, name, this.editingFolder.id)
.then(() => {
this.$toast.success(this.$t("folder.renamed"), {
icon: "done",
})
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
}
this.displayModalEditFolder(false)
},
// Intented to by called by CollectionsEditRequest modal submit event
updateEditingRequest(requestUpdateData) {
const requestUpdated = {
...this.editingRequest,
name: requestUpdateData.name || this.editingRequest.name,
}
if (this.collectionsType.type === "my-collections") {
editRESTRequest(
this.editingFolderPath,
this.editingRequestIndex,
requestUpdated
)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
const requestName = requestUpdateData.name || this.editingRequest.name
teamUtils
.updateRequest(
this.$apollo,
requestUpdated,
requestName,
this.editingRequestIndex
)
.then(() => {
this.$toast.success(this.$t("request.renamed"), {
icon: "done",
})
this.$emit("update-team-collections")
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
}
this.displayModalEditRequest(false)
},
displayModalAdd(shouldDisplay) {
this.showModalAdd = shouldDisplay
},
@@ -183,31 +495,82 @@ export default {
this.$data.editingCollection = collection
this.$data.editingCollectionIndex = collectionIndex
this.displayModalEdit(true)
this.syncCollections()
},
addFolder(collection, collectionIndex) {
this.$data.editingCollection = collection
this.$data.editingCollectionIndex = collectionIndex
onAddFolder({ name, folder, path }) {
if (this.collectionsType.type === "my-collections") {
addRESTFolder(name, path)
} else if (this.collectionsType.type === "team-collections") {
if (this.collectionsType.selectedTeam.myRole !== "VIEWER") {
this.$apollo
.mutate({
mutation: gql`
mutation CreateChildCollection(
$childTitle: String!
$collectionID: String!
) {
createChildCollection(
childTitle: $childTitle
collectionID: $collectionID
) {
id
}
}
`,
// Parameters
variables: {
childTitle: name,
collectionID: folder.id,
},
})
.then(() => {
this.$toast.success(this.$t("folder.created"), {
icon: "done",
})
this.$emit("update-team-collections")
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
}
}
this.displayModalAddFolder(false)
},
addFolder(payload) {
const { folder, path } = payload
this.$data.editingFolder = folder
this.$data.editingFolderPath = path
this.displayModalAddFolder(true)
this.syncCollections()
},
editFolder(payload) {
const { collectionIndex, folder, folderIndex } = payload
this.$data.editingCollection = collection
const { collectionIndex, folder, folderIndex, folderPath } = payload
this.$data.editingCollectionIndex = collectionIndex
this.$data.editingFolder = folder
this.$data.editingFolderIndex = folderIndex
this.$data.editingFolderPath = folderPath
this.$data.collectionsType = this.collectionsType
this.displayModalEditFolder(true)
this.syncCollections()
},
editRequest(payload) {
const { request, collectionIndex, folderIndex, requestIndex } = payload
const {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
folderPath,
} = payload
this.$data.editingCollectionIndex = collectionIndex
this.$data.editingFolderIndex = folderIndex
this.$data.editingFolderName = folderName
this.$data.editingRequest = request
this.$data.editingRequestIndex = requestIndex
this.editingFolderPath = folderPath
this.$emit("select-request", requestIndex)
this.displayModalEditRequest(true)
this.syncCollections()
},
resetSelectedData() {
this.$data.editingCollection = undefined
@@ -217,16 +580,102 @@ export default {
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)))
expandCollection(collectionID) {
this.teamCollectionAdapter.expandCollection(collectionID)
},
removeCollection({ collectionsType, collectionIndex, collectionID }) {
if (collectionsType.type === "my-collections") {
// Cancel pick if picked collection is deleted
if (
this.picked &&
this.picked.pickedType === "my-collection" &&
this.picked.collectionIndex === collectionIndex
) {
this.$emit("select", { picked: null })
}
removeRESTCollection(collectionIndex)
this.$toast.success(this.$t("state.deleted"), {
icon: "delete",
})
} else if (collectionsType.type === "team-collections") {
// Cancel pick if picked collection is deleted
if (
this.picked &&
this.picked.pickedType === "teams-collection" &&
this.picked.collectionID === collectionID
) {
this.$emit("select", { picked: null })
}
if (collectionsType.selectedTeam.myRole !== "VIEWER") {
this.$apollo
.mutate({
// Query
mutation: gql`
mutation ($collectionID: String!) {
deleteCollection(collectionID: $collectionID)
}
`,
// Parameters
variables: {
collectionID,
},
})
.then(() => {
this.$toast.success(this.$t("state.deleted"), {
icon: "delete",
})
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
}
}
},
removeRequest({ requestIndex, folderPath }) {
if (this.collectionsType.type === "my-collections") {
// Cancel pick if the picked item is being deleted
if (
this.picked &&
this.picked.pickedType === "my-request" &&
this.picked.folderPath === folderPath &&
this.picked.requestIndex === requestIndex
) {
this.$emit("select", { picked: null })
}
removeRESTRequest(folderPath, requestIndex)
this.$toast.success(this.$t("state.deleted"), {
icon: "delete",
})
} else if (this.collectionsType.type === "team-collections") {
// Cancel pick if the picked item is being deleted
if (
this.picked &&
this.picked.pickedType === "teams-request" &&
this.picked.requestID === requestIndex
) {
this.$emit("select", { picked: null })
}
teamUtils
.deleteRequest(this.$apollo, requestIndex)
.then(() => {
this.$toast.success(this.$t("state.deleted"), {
icon: "delete",
})
})
.catch((e) => {
this.$toast.error(this.$t("error.something_went_wrong"), {
icon: "error_outline",
})
console.error(e)
})
}
},
},
beforeDestroy() {
document.removeEventListener("keydown", this._keyListener)
},
}
})
</script>

View File

@@ -0,0 +1,252 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-center group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
>
<span
class="cursor-pointer flex px-4 justify-center items-center"
@click="toggleShowChildren()"
>
<i class="material-icons" :class="{ 'text-green-500': isSelected }">
{{ getCollectionIcon }}
</i>
</span>
<span
class="
cursor-pointer
flex flex-1
min-w-0
py-2
pr-2
transition
group-hover:text-secondaryDark
"
@click="toggleShowChildren()"
>
<span class="truncate"> {{ collection.name }} </span>
</span>
<div class="flex">
<ButtonSecondary
v-if="doc && !selected"
v-tippy="{ theme: 'tooltip' }"
:title="$t('import.title')"
icon="radio_button_unchecked"
color="green"
@click.native="$emit('select-collection')"
/>
<ButtonSecondary
v-if="doc && selected"
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.remove')"
icon="check_circle_outline"
color="green"
@click.native="$emit('unselect-collection')"
/>
<ButtonSecondary
v-if="!doc"
v-tippy="{ theme: 'tooltip' }"
icon="create_new_folder"
:title="$t('folder.new')"
class="hidden group-hover:inline-flex"
@click.native="
$emit('add-folder', {
folder: collection,
path: `${collectionIndex}`,
})
"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
icon="more_vert"
/>
</template>
<SmartItem
icon="create_new_folder"
:label="$t('folder.new')"
@click.native="
$emit('add-folder', {
folder: collection,
path: `${collectionIndex}`,
})
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="create"
:label="$t('action.edit')"
@click.native="
$emit('edit-collection')
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="delete"
color="red"
:label="$t('action.delete')"
@click.native="
confirmRemove = true
$refs.options.tippy().hide()
"
/>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered">
<CollectionsMyFolder
v-for="(folder, index) in collection.folders"
:key="`folder-${index}`"
class="border-l border-dividerLight ml-6"
:folder="folder"
:folder-index="index"
:folder-path="`${collectionIndex}/${index}`"
:collection-index="collectionIndex"
:doc="doc"
:save-request="saveRequest"
:collections-type="collectionsType"
:is-filtered="isFiltered"
:picked="picked"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
/>
<CollectionsMyRequest
v-for="(request, index) in collection.requests"
:key="`request-${index}`"
class="border-l border-dividerLight ml-6"
:request="request"
:collection-index="collectionIndex"
:folder-index="-1"
:folder-name="collection.name"
:folder-path="collectionIndex.toString()"
:request-index="index"
:doc="doc"
:save-request="saveRequest"
:collections-type="collectionsType"
:picked="picked"
@edit-request="editRequest($event)"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
/>
<div
v-if="
(collection.folders == undefined ||
collection.folders.length === 0) &&
(collection.requests == undefined || collection.requests.length === 0)
"
class="
border-l border-dividerLight
flex flex-col
text-secondaryLight
ml-6
p-4
items-center
justify-center
"
>
<i class="opacity-75 pb-2 material-icons">folder_open</i>
<span class="text-center">
{{ $t("empty.collection") }}
</span>
</div>
</div>
<SmartConfirmModal
:show="confirmRemove"
:title="$t('confirm.remove_collection')"
@hide-modal="confirmRemove = false"
@resolve="removeCollection"
/>
</div>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import { moveRESTRequest } from "~/newstore/collections"
export default defineComponent({
props: {
collectionIndex: { type: Number, default: null },
collection: { type: Object, default: () => {} },
doc: Boolean,
isFiltered: Boolean,
selected: Boolean,
saveRequest: Boolean,
collectionsType: { type: Object, default: () => {} },
picked: { type: Object, default: () => {} },
},
data() {
return {
showChildren: false,
dragging: false,
selectedFolder: {},
confirmRemove: false,
prevCursor: "",
cursor: "",
pageNo: 0,
}
},
computed: {
isSelected() {
return (
this.picked &&
this.picked.pickedType === "my-collection" &&
this.picked.collectionIndex === this.collectionIndex
)
},
getCollectionIcon() {
if (this.isSelected) return "check_circle_outline"
else if (!this.showChildren && !this.isFiltered) return "folder"
else if (this.showChildren || this.isFiltered) return "folder_open"
else return "folder"
},
},
methods: {
editRequest(event) {
this.$emit("edit-request", event)
},
toggleShowChildren() {
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "my-collection",
collectionIndex: this.collectionIndex,
},
})
this.$emit("expand-collection", this.collection.id)
this.showChildren = !this.showChildren
},
removeCollection() {
this.$emit("remove-collection", {
collectionsType: this.collectionsType,
collectionIndex: this.collectionIndex,
collectionID: this.collection.id,
})
},
dropEvent({ dataTransfer }) {
this.dragging = !this.dragging
const folderPath = dataTransfer.getData("folderPath")
const requestIndex = dataTransfer.getData("requestIndex")
moveRESTRequest(folderPath, requestIndex, this.collectionIndex.toString())
},
},
})
</script>

View File

@@ -0,0 +1,257 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-center group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
>
<span
class="cursor-pointer flex px-4 justify-center items-center"
@click="toggleShowChildren()"
>
<i class="material-icons" :class="{ 'text-green-500': isSelected }">
{{ getCollectionIcon }}
</i>
</span>
<span
class="
cursor-pointer
flex flex-1
min-w-0
py-2
pr-2
transition
group-hover:text-secondaryDark
"
@click="toggleShowChildren()"
>
<span class="truncate">
{{ folder.name ? folder.name : folder.title }}
</span>
</span>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
icon="create_new_folder"
:title="$t('folder.new')"
class="hidden group-hover:inline-flex"
@click.native="$emit('add-folder', { folder, path: folderPath })"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
icon="more_vert"
/>
</template>
<SmartItem
icon="create_new_folder"
:label="$t('folder.new')"
@click.native="
$emit('add-folder', { folder, path: folderPath })
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="edit"
:label="$t('action.edit')"
@click.native="
$emit('edit-folder', {
folder,
folderIndex,
collectionIndex,
folderPath,
})
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="delete"
color="red"
:label="$t('action.delete')"
@click.native="
confirmRemove = true
$refs.options.tippy().hide()
"
/>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered">
<CollectionsMyFolder
v-for="(subFolder, subFolderIndex) in folder.folders"
:key="`subFolder-${subFolderIndex}`"
class="border-l border-dividerLight ml-6"
:folder="subFolder"
:folder-index="subFolderIndex"
:collection-index="collectionIndex"
:doc="doc"
:save-request="saveRequest"
:collections-type="collectionsType"
:folder-path="`${folderPath}/${subFolderIndex}`"
:picked="picked"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@update-team-collections="$emit('update-team-collections')"
@select="$emit('select', $event)"
@remove-request="removeRequest"
/>
<CollectionsMyRequest
v-for="(request, index) in folder.requests"
:key="`request-${index}`"
class="border-l border-dividerLight ml-6"
:request="request"
:collection-index="collectionIndex"
:folder-index="folderIndex"
:folder-name="folder.name"
:folder-path="folderPath"
:request-index="index"
:doc="doc"
:picked="picked"
:save-request="saveRequest"
:collections-type="collectionsType"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
@remove-request="removeRequest"
/>
<div
v-if="
folder.folders &&
folder.folders.length === 0 &&
folder.requests &&
folder.requests.length === 0
"
class="
border-l border-dividerLight
flex flex-col
text-secondaryLight
ml-6
p-4
items-center
justify-center
"
>
<i class="opacity-75 pb-2 material-icons">folder_open</i>
<span class="text-center">
{{ $t("empty.folder") }}
</span>
</div>
</div>
<SmartConfirmModal
:show="confirmRemove"
:title="$t('confirm.remove_folder')"
@hide-modal="confirmRemove = false"
@resolve="removeFolder"
/>
</div>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import {
removeRESTFolder,
removeRESTRequest,
moveRESTRequest,
} from "~/newstore/collections"
export default defineComponent({
name: "Folder",
props: {
folder: { type: Object, default: () => {} },
folderIndex: { type: Number, default: null },
collectionIndex: { type: Number, default: null },
folderPath: { type: String, default: null },
doc: Boolean,
saveRequest: Boolean,
isFiltered: Boolean,
collectionsType: { type: Object, default: () => {} },
picked: { type: Object, default: () => {} },
},
data() {
return {
showChildren: false,
dragging: false,
confirmRemove: false,
prevCursor: "",
cursor: "",
}
},
computed: {
isSelected() {
return (
this.picked &&
this.picked.pickedType === "my-folder" &&
this.picked.folderPath === this.folderPath
)
},
getCollectionIcon() {
if (this.isSelected) return "check_circle_outline"
else if (!this.showChildren && !this.isFiltered) return "folder"
else if (this.showChildren || this.isFiltered) return "folder_open"
else return "folder"
},
},
methods: {
toggleShowChildren() {
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "my-folder",
collectionIndex: this.collectionIndex,
folderName: this.folder.name,
folderPath: this.folderPath,
},
})
this.showChildren = !this.showChildren
},
removeFolder() {
// TODO: Bubble it up ?
// Cancel pick if picked folder was deleted
if (
this.picked &&
this.picked.pickedType === "my-folder" &&
this.picked.folderPath === this.folderPath
) {
this.$emit("select", { picked: null })
}
removeRESTFolder(this.folderPath)
this.$toast.success(this.$t("state.deleted"), {
icon: "delete",
})
},
dropEvent({ dataTransfer }) {
this.dragging = !this.dragging
const folderPath = dataTransfer.getData("folderPath")
const requestIndex = dataTransfer.getData("requestIndex")
moveRESTRequest(folderPath, requestIndex, this.folderPath)
},
removeRequest({ requestIndex }) {
// TODO: Bubble it up to root ?
// Cancel pick if the picked item is being deleted
if (
this.picked &&
this.picked.pickedType === "my-request" &&
this.picked.folderPath === this.folderPath &&
this.picked.requestIndex === requestIndex
) {
this.$emit("select", { picked: null })
}
removeRESTRequest(this.folderPath, requestIndex)
},
},
})
</script>

View File

@@ -0,0 +1,223 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-center group"
draggable="true"
@dragstart="dragStart"
@dragover.stop
@dragleave="dragging = false"
@dragend="dragging = false"
>
<span
class="
cursor-pointer
flex
px-2
w-16
justify-center
items-center
truncate
"
:class="getRequestLabelColor(request.method)"
@click="!doc ? selectRequest() : {}"
>
<i
v-if="isSelected"
class="material-icons"
:class="{ 'text-green-500': isSelected }"
>
check_circle_outline
</i>
<span v-else class="truncate">
{{ request.method }}
</span>
</span>
<span
class="
cursor-pointer
flex flex-1
min-w-0
py-2
pr-2
transition
items-center
group-hover:text-secondaryDark
"
@click="!doc ? selectRequest() : {}"
>
<span class="truncate"> {{ request.name }} </span>
<span
v-if="
active &&
active.originLocation === 'user-collection' &&
active.folderPath === folderPath &&
active.requestIndex === requestIndex
"
class="rounded-full bg-green-500 flex-shrink-0 h-1.5 mx-3 w-1.5"
></span>
</span>
<div class="flex">
<ButtonSecondary
v-if="!saveRequest && !doc"
v-tippy="{ theme: 'tooltip' }"
icon="replay"
:title="$t('action.restore')"
class="hidden group-hover:inline-flex"
@click.native="!doc ? selectRequest() : {}"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
arrow
>
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('action.more')"
icon="more_vert"
/>
</template>
<SmartItem
icon="edit"
:label="$t('action.edit')"
@click.native="
$emit('edit-request', {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
folderPath,
})
$refs.options.tippy().hide()
"
/>
<SmartItem
icon="delete"
color="red"
:label="$t('action.delete')"
@click.native="
confirmRemove = true
$refs.options.tippy().hide()
"
/>
</tippy>
</span>
</div>
</div>
<SmartConfirmModal
:show="confirmRemove"
:title="$t('confirm.remove_request')"
@hide-modal="confirmRemove = false"
@resolve="removeRequest"
/>
</div>
</template>
<script>
import { defineComponent } from "@nuxtjs/composition-api"
import { translateToNewRequest } from "~/helpers/types/HoppRESTRequest"
import { useReadonlyStream } from "~/helpers/utils/composables"
import {
restSaveContext$,
setRESTRequest,
setRESTSaveContext,
} from "~/newstore/RESTSession"
export default defineComponent({
props: {
request: { type: Object, default: () => {} },
collectionIndex: { type: Number, default: null },
folderIndex: { type: Number, default: null },
folderName: { type: String, default: null },
// eslint-disable-next-line vue/require-default-prop
requestIndex: [Number, String],
doc: Boolean,
saveRequest: Boolean,
collectionsType: { type: Object, default: () => {} },
folderPath: { type: String, default: null },
picked: { type: Object, default: () => {} },
},
setup() {
const active = useReadonlyStream(restSaveContext$, null)
return {
active,
}
},
data() {
return {
dragging: false,
requestMethodLabels: {
get: "text-green-500",
post: "text-yellow-500",
put: "text-blue-500",
delete: "text-red-500",
default: "text-gray-500",
},
confirmRemove: false,
}
},
computed: {
isSelected() {
return (
this.picked &&
this.picked.pickedType === "my-request" &&
this.picked.folderPath === this.folderPath &&
this.picked.requestIndex === this.requestIndex
)
},
},
methods: {
selectRequest() {
if (
this.active &&
this.active.originLocation === "user-collection" &&
this.active.folderPath === this.folderPath &&
this.active.requestIndex === this.requestIndex
) {
setRESTSaveContext(null)
return
}
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "my-request",
collectionIndex: this.collectionIndex,
folderPath: this.folderPath,
folderName: this.folderName,
requestIndex: this.requestIndex,
},
})
else {
setRESTRequest(translateToNewRequest(this.request), {
originLocation: "user-collection",
folderPath: this.folderPath,
requestIndex: this.requestIndex,
})
}
},
dragStart({ dataTransfer }) {
this.dragging = !this.dragging
dataTransfer.setData("folderPath", this.folderPath)
dataTransfer.setData("requestIndex", this.requestIndex)
},
removeRequest() {
this.$emit("remove-request", {
collectionIndex: this.$props.collectionIndex,
folderName: this.$props.folderName,
folderPath: this.folderPath,
requestIndex: this.$props.requestIndex,
})
},
getRequestLabelColor(method) {
return (
this.requestMethodLabels[method.toLowerCase()] ||
this.requestMethodLabels.default
)
},
},
})
</script>

View File

@@ -1,66 +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>

View File

@@ -1,190 +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/ui/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>

Some files were not shown because too many files have changed in this diff Show More