Commit Graph

28 Commits

Author SHA1 Message Date
Ivan Akulov
424d2f6965
chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
## Description

This PR upgrades Prettier to v2 + enforces TypeScript’s [`import
type`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-and-export)
syntax where applicable. It’s submitted as a separate PR so we can merge
it easily.

As a part of this PR, we reformat the codebase heavily:
- add `import type` everywhere where it’s required, and
- re-format the code to account for Prettier 2’s breaking changes:
https://prettier.io/blog/2020/03/21/2.0.0.html#breaking-changes

This PR is submitted against `release` to make sure all new code by team
members will adhere to new formatting standards, and we’ll have fewer
conflicts when merging `bundle-optimizations` into `release`. (I’ll
merge `release` back into `bundle-optimizations` once this PR is
merged.)

### Why is this needed?

This PR is needed because, for the Lodash optimization from
7cbb12af88,
we need to use `import type`. Otherwise, `babel-plugin-lodash` complains
that `LoDashStatic` is not a lodash function.

However, just using `import type` in the current codebase will give you
this:

<img width="962" alt="Screenshot 2023-03-08 at 17 45 59"
src="https://user-images.githubusercontent.com/2953267/223775744-407afa0c-e8b9-44a1-90f9-b879348da57f.png">

That’s because Prettier 1 can’t parse `import type` at all. To parse it,
we need to upgrade to Prettier 2.

### Why enforce `import type`?

Apart from just enabling `import type` support, this PR enforces
specifying `import type` everywhere it’s needed. (Developers will get
immediate TypeScript and ESLint errors when they forget to do so.)

I’m doing this because I believe `import type` improves DX and makes
refactorings easier.

Let’s say you had a few imports like below. Can you tell which of these
imports will increase the bundle size? (Tip: it’s not all of them!)

```ts
// app/client/src/workers/Linting/utils.ts
import { Position } from "codemirror";
import { LintError as JSHintError, LintOptions } from "jshint";
import { get, isEmpty, isNumber, keys, last, set } from "lodash";
```

It’s pretty hard, right?

What about now?

```ts
// app/client/src/workers/Linting/utils.ts
import type { Position } from "codemirror";
import type { LintError as JSHintError, LintOptions } from "jshint";
import { get, isEmpty, isNumber, keys, last, set } from "lodash";
```

Now, it’s clear that only `lodash` will be bundled.

This helps developers to see which imports are problematic, but it
_also_ helps with refactorings. Now, if you want to see where
`codemirror` is bundled, you can just grep for `import \{.*\} from
"codemirror"` – and you won’t get any type-only imports.

This also helps (some) bundlers. Upon transpiling, TypeScript erases
type-only imports completely. In some environment (not ours), this makes
the bundle smaller, as the bundler doesn’t need to bundle type-only
imports anymore.

## Type of change

- Chore (housekeeping or task changes that don't impact user perception)


## How Has This Been Tested?

This was tested to not break the build.

### Test Plan
> Add Testsmith test cases links that relate to this PR

### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)


## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag


### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test

---------

Co-authored-by: Satish Gandham <hello@satishgandham.com>
Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2023-03-16 17:11:47 +05:30
Ayangade Adeoluwa
1e9ebb6af1
fix: Fixes deletion of rest api body for get requests (#21057)
- fix deletion of API body for GET requests
2023-03-01 14:21:57 +05:30
Ayangade Adeoluwa
342c5cc673
fix: Fix Api url path issue (#16628)
* Fix Api url path issue

* Modify test cases
2022-09-13 05:02:59 +00:00
Sumit Kumar
0cbe81dfde
feat: merge GraphQL plugin to release (#16554)
* merge GraphQL plugin to release
2022-09-09 21:29:47 +05:30
Arpit Mohan
286864eb3d
feat: Support body in GET API requests (#7127)
* WIP

* Refactoring HTTP Method & Content Type to be objects instead of arrays

TODO:
1. Set the default content-type for Get request to "None". Currently, it's raw
2. For None content-type, don't send the body field in the API request

* Almost working implementation for the None type

Currently, the body still gets sent in non-GET requests even if the None tab is selected.

* Adding object.freeze to prevent any modifications to HTTP_METHOD_ENUM

* WIP: Using enum & const for ts autocomplete

* working implementation for NONE type, apiContentType prop added to API actions

* WIP

* Refactoring HTTP Method & Content Type to be objects instead of arrays

TODO:
1. Set the default content-type for Get request to "None". Currently, it's raw
2. For None content-type, don't send the body field in the API request

* Almost working implementation for the None type

Currently, the body still gets sent in non-GET requests even if the None tab is selected.

* Adding object.freeze to prevent any modifications to HTTP_METHOD_ENUM

* WIP: Using enum & const for ts autocomplete

* working implementation for NONE type, apiContentType prop added to API actions

* adds apiContentType to actionConfiguration.formData object

* Handling apiContentType property in Rest API formData

* change apiContentType when user types content-type value and switches http method

* makes api editor as similar as possible to postman, project postman.

* Correcting the import in ApiEditorConstants

* Resolved all merge conflicts

* replay DSL functtionality

* removes unneccessary files from worker

* Fixes type declarations, naming e.t.c.

* fix server side merge conflicts

* fix client side merge conflicts

* fix failing cypress tests

Co-authored-by: Irongade <adeoluayangade@yahoo.com>
Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com>
2022-02-15 11:13:48 +00:00
Favour Ohanekwu
b703ceb69f
fix: remove duplicate query params in evaluated value (#10101)
Remove duplicate query parameters in evaluated value
2022-01-04 10:27:38 +01:00
Favour Ohanekwu
803e5e7cc6
fix: improve dropdown component (#8183)
Improved multipart form's dropdown component
2021-10-06 20:20:35 +01:00
arunvjn
3cd93e11a7
feat: snippets discoverablity (#7689) 2021-09-22 16:59:47 +00:00
arunvjn
53b389d348
fix: Filter empty key value pairs from form data, headers and query params. (#7019) 2021-09-03 11:43:11 +00:00
Hetu Nandu
0b08edf5cc
Fix further cyclical dependencies in actions (#3259) 2021-03-01 20:27:15 +05:30
Piyush Mishra
148497a1bc
Refactor datasources and actions for stronger type checking (#2167) 2021-01-12 09:47:28 +05:30
Piyush Mishra
1521f7445c
Fix eslint warnings (#2510) 2021-01-12 06:52:31 +05:30
Piyush Mishra
806a139ddb
Make prettier changes (#2337) 2020-12-24 10:02:25 +05:30
Akash N
06d330ef3a actionConfiguration.body shouldn't be reset 2020-11-10 16:42:31 +05:30
Akash N
3fbcf667b6 Do not reset the bodyFormData value 2020-11-10 14:58:14 +05:30
Hetu Nandu
133f50807e Fix api pane performance 2020-06-12 08:35:52 +00:00
Nikhil Nandagopal
563c74f1a9 fixed tests failing 2020-06-09 11:55:11 +05:30
Nikhil Nandagopal
dff9c60f9f fixed resize handles size
fixed body for url encoded form data
added defaults for dropdown and radio widget
added multipart type but hid it till we figure out logic
allowed number to be added to defaults of widgets
2020-06-08 16:39:13 +05:30
Hetu Nandu
801369faf3 Fix api content type issue 2020-05-23 05:42:23 +00:00
Sunil KS
9dda30f729 fix: content-type case check
- do a toLowerCase() before running a check for "content-type" in headers
- truncate api endpoint for provider templates
2020-05-13 18:20:53 +00:00
Hetu Nandu
ff2f32290f Fix content type switching to raw when custom 2020-05-08 12:54:27 +00:00
Hetu Nandu
d33b7e955c Revert back the draft condition
- Initialise headers and query parameters while creating an api
- Do not push fields further on
2020-05-07 10:42:17 +00:00
Hetu Nandu
8e7ba82b3f Revert back the draft condition
- Initialise headers and query parameters while creating an api
- Do not push fields further on
2020-05-07 07:56:37 +00:00
Hetu Nandu
2f5a3104f1 Fix radio widget default value and Post api save error 2020-04-21 07:54:23 +00:00
Hetu Nandu
3a53286662 cleanup fixes 2020-04-14 20:46:44 +05:30
Hetu Nandu
af3b5d212f fix: ui fixes and type defination fixes
- avoid using any or undefined types in the code
- fix ui issues for api home screen
- update naming convensions
- remove unwanted code
- use color variables
2020-04-14 12:34:14 +00:00
Hetu Nandu
b115a948af Fix url params sync issue 2020-01-08 09:19:00 +00:00
Hetu Nandu
e82f5f3988 Sync path and params in api pane 2019-12-23 12:12:58 +00:00